Skip to content

add: baremetal design system#1894

Merged
kotAPI merged 2 commits intomainfrom
kotapi/brutalist-minimal-theme
Apr 16, 2026
Merged

add: baremetal design system#1894
kotAPI merged 2 commits intomainfrom
kotapi/brutalist-minimal-theme

Conversation

@kotAPI
Copy link
Copy Markdown
Collaborator

@kotAPI kotAPI commented Apr 15, 2026

Summary by CodeRabbit

  • New Features
    • Added a new "baremetal" theme and a theme selector in the editor to switch and persist design system choice.
  • UI
    • Many components now include styling for the baremetal theme for a consistent minimal look.
  • Storybook
    • Stories reorganized from WIP to Components and Storybook now applies the default design-system theme in previews.
  • Documentation
    • Added release and Storybook sync guidance.
  • Chores
    • Theme asset exported for packaging.

@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Apr 15, 2026

⚠️ No Changeset found

Latest commit: 0d458bc

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 15, 2026

📝 Walkthrough

Walkthrough

Adds a new "baremetal" design system (SCSS scope and component theme mixins), builds and exports a second theme CSS, wires Storybook to include the new theme, and adds a design-system selector/persistence in the SandboxEditor to toggle between clarity and baremetal.

Changes

Cohort / File(s) Summary
Design System: core
src/design-systems/baremetal/_scope.scss, src/design-systems/baremetal/default.scss
New baremetal theme scope, CSS variables, and many mixins; base theme stylesheet defining colors, surfaces, disabled states, and global overrides.
Design System: component styles
src/components/ui/**/*.baremetal.scss (many new files), src/components/ui/**/stories/*.stories.tsx (title changes)
Added baremetal SCSS variants for nearly all UI components; added/updated many story metadata titles from WIP/*Components/*.
Sandbox Editor
src/components/tools/SandboxEditor/SandboxEditor.tsx
Added designSystem state ('clarity'
Build & exports
rollup-css.config.js, package.json, scripts/generate-exports.cjs
Refactored rollup CSS config to generate multiple theme builds (clarity + baremetal); added ./themes/baremetal.css to package exports and to generated export mappings.
Storybook config
.storybook/preview.js, .storybook/main.cjs
Imported baremetal theme into preview, added a decorator that sets data-rad-ui-design-system="clarity" on document.body when available; configured sass-loader includePaths and resolve modules in Storybook webpack.
Documentation
agents/development/sync-storybook-releases.md, knowledge/releases/how-rad-ui-releases-are-made.md
Added guidance/docs for syncing Storybook release categories and release lifecycle definitions.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant Sandbox as SandboxEditor
  participant Storage as localStorage
  participant DOM as document/body
  participant Theme
  User->>Sandbox: select design system (clarity|baremetal)
  Sandbox->>Storage: write radUiDesignSystem = "baremetal"/"clarity"
  Sandbox->>Sandbox: set designSystem state
  Sandbox->>DOM: set data-rad-ui-design-system attribute on body/container
  DOM->>Theme: theme styles scoped by data attribute (baremetal or clarity)
  Theme-->>User: component styles update/rendered with selected design system
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • GoldGroove06

Poem

🐰 In a burrow of SCSS and light,
Two themes now share the stage tonight,
I hop between clarity and bare,
Tucking styles in with tender care,
A tiny cheer — new choices in sight! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'add: baremetal design system' accurately describes the main change—adding a complete new design system variant called 'baremetal' with corresponding stylesheets, configuration, and component support across the codebase.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch kotapi/brutalist-minimal-theme

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 Stylelint (17.7.0)
src/components/ui/Avatar/avatar.baremetal.scss

ConfigurationError: Could not find "stylelint-config-tailwindcss". Do you need to install the package or use the "configBasedir" option?
at getModulePath (file:///usr/local/lib/node_modules/stylelint/lib/utils/getModulePath.mjs:29:9)
at loadExtendedConfig (file:///usr/local/lib/node_modules/stylelint/lib/augmentConfig.mjs:241:21)
at extendConfig (file:///usr/local/lib/node_modules/stylelint/lib/augmentConfig.mjs:208:25)
at async augmentConfigBasic (file:///usr/local/lib/node_modules/stylelint/lib/augmentConfig.mjs:73:20)
at async augmentConfigFull (file:///usr/local/lib/node_modules/stylelint/lib/augmentConfig.mjs:126:24)
at async getConfigForFile (file:///usr/local/lib/node_modules/stylelint/lib/getConfigForFile.mjs:102:26)
at async resolveOptionValue (file:///usr/local/lib/node_modules/stylelint/lib/utils/resolveOptionValue.mjs:27:24)
at async standalone (file:///usr/local/lib/node_modules/stylelint/lib/standalone.mjs:204:19)

src/components/ui/Accordion/accordion.baremetal.scss

ConfigurationError: Could not find "stylelint-config-tailwindcss". Do you need to install the package or use the "configBasedir" option?
at getModulePath (file:///usr/local/lib/node_modules/stylelint/lib/utils/getModulePath.mjs:29:9)
at loadExtendedConfig (file:///usr/local/lib/node_modules/stylelint/lib/augmentConfig.mjs:241:21)
at extendConfig (file:///usr/local/lib/node_modules/stylelint/lib/augmentConfig.mjs:208:25)
at async augmentConfigBasic (file:///usr/local/lib/node_modules/stylelint/lib/augmentConfig.mjs:73:20)
at async augmentConfigFull (file:///usr/local/lib/node_modules/stylelint/lib/augmentConfig.mjs:126:24)
at async getConfigForFile (file:///usr/local/lib/node_modules/stylelint/lib/getConfigForFile.mjs:102:26)
at async resolveOptionValue (file:///usr/local/lib/node_modules/stylelint/lib/utils/resolveOptionValue.mjs:27:24)
at async standalone (file:///usr/local/lib/node_modules/stylelint/lib/standalone.mjs:204:19)

src/components/ui/Badge/badge.baremetal.scss

ConfigurationError: Could not find "stylelint-config-tailwindcss". Do you need to install the package or use the "configBasedir" option?
at getModulePath (file:///usr/local/lib/node_modules/stylelint/lib/utils/getModulePath.mjs:29:9)
at loadExtendedConfig (file:///usr/local/lib/node_modules/stylelint/lib/augmentConfig.mjs:241:21)
at extendConfig (file:///usr/local/lib/node_modules/stylelint/lib/augmentConfig.mjs:208:25)
at async augmentConfigBasic (file:///usr/local/lib/node_modules/stylelint/lib/augmentConfig.mjs:73:20)
at async augmentConfigFull (file:///usr/local/lib/node_modules/stylelint/lib/augmentConfig.mjs:126:24)
at async getConfigForFile (file:///usr/local/lib/node_modules/stylelint/lib/getConfigForFile.mjs:102:26)
at async resolveOptionValue (file:///usr/local/lib/node_modules/stylelint/lib/utils/resolveOptionValue.mjs:27:24)
at async standalone (file:///usr/local/lib/node_modules/stylelint/lib/standalone.mjs:204:19)

  • 52 others

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
src/components/tools/SandboxEditor/SandboxEditor.tsx (1)

46-47: Deduplicate design-system literals into a single source of truth.

The 'clarity' | 'baremetal' checks are repeated in multiple branches. A shared constant + type guard will reduce drift risk.

♻️ Proposed refactor
 type SandboxProps = { className?: string } & PropsWithChildren
-type DesignSystem = 'clarity' | 'baremetal'
+const DESIGN_SYSTEMS = ['clarity', 'baremetal'] as const;
+type DesignSystem = typeof DESIGN_SYSTEMS[number];
+
+const isDesignSystem = (value: string): value is DesignSystem =>
+    (DESIGN_SYSTEMS as readonly string[]).includes(value);

 const SandboxEditor = ({ children, className }: SandboxProps) => {
@@
-        if (savedDesignSystem === 'clarity' || savedDesignSystem === 'baremetal') {
+        if (savedDesignSystem && isDesignSystem(savedDesignSystem)) {
             setDesignSystem(savedDesignSystem);
         }
@@
     const updateDesignSystem = (value: string) => {
-        if (value !== 'clarity' && value !== 'baremetal') {
+        if (!isDesignSystem(value)) {
             return;
         }

Also applies to: 63-65, 84-91

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/tools/SandboxEditor/SandboxEditor.tsx` around lines 46 - 47,
The code repeats the literal union 'clarity' | 'baremetal' in multiple branches;
extract those literals into a single exported constant (e.g., DESIGN_SYSTEMS =
['clarity','baremetal'] as const) and use it to derive the DesignSystem type
(type DesignSystem = typeof DESIGN_SYSTEMS[number]), then replace all literal
checks with a reusable type guard function (e.g., isDesignSystem(value): value
is DesignSystem) and use that guard in the places referenced (where DesignSystem
is declared and the branches around lines 63-65 and 84-91) so all checks
reference the single source of truth and avoid drift.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/design-systems/baremetal/default.scss`:
- Around line 3-4: The fallback selectors in default.scss ($baremetal-theme-root
and $baremetal-portal-root) make baremetal styles global because
body:not([data-rad-ui-design-system]) is never set; update those variables to
require the explicit container attribute (e.g. use
[data-rad-ui-design-system="baremetal"] [data-rad-ui-theme] and
[data-rad-ui-design-system="baremetal"] [data-rad-ui-portal-root]) instead of
the body:not(...) fallback, and remove or conditionally scope the `@use`
"../clarity/default" import in src/design-systems/baremetal/default.scss so
clarity styles are not pulled in whenever baremetal is loaded.

---

Nitpick comments:
In `@src/components/tools/SandboxEditor/SandboxEditor.tsx`:
- Around line 46-47: The code repeats the literal union 'clarity' | 'baremetal'
in multiple branches; extract those literals into a single exported constant
(e.g., DESIGN_SYSTEMS = ['clarity','baremetal'] as const) and use it to derive
the DesignSystem type (type DesignSystem = typeof DESIGN_SYSTEMS[number]), then
replace all literal checks with a reusable type guard function (e.g.,
isDesignSystem(value): value is DesignSystem) and use that guard in the places
referenced (where DesignSystem is declared and the branches around lines 63-65
and 84-91) so all checks reference the single source of truth and avoid drift.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9d6ae7b0-1e36-4734-9556-587a068fb8f0

📥 Commits

Reviewing files that changed from the base of the PR and between 805ee48 and 353f8af.

📒 Files selected for processing (6)
  • .storybook/preview.js
  • package.json
  • rollup-css.config.js
  • scripts/generate-exports.cjs
  • src/components/tools/SandboxEditor/SandboxEditor.tsx
  • src/design-systems/baremetal/default.scss

Comment on lines +3 to +4
$baremetal-theme-root: ':where(body:not([data-rad-ui-design-system]), [data-rad-ui-design-system="baremetal"]) [data-rad-ui-theme]';
$baremetal-portal-root: ':where(body:not([data-rad-ui-design-system]), [data-rad-ui-design-system="baremetal"]) [data-rad-ui-portal-root]';
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "1) Find selectors that default to baremetal when body attribute is missing:"
rg -n --iglob '*.{scss,css}' 'body:not\(\[data-rad-ui-design-system\]\)|data-rad-ui-design-system="baremetal"'

echo
echo "2) Find runtime code that sets body-level design-system attribute:"
rg -n --iglob '*.{js,jsx,ts,tsx}' "document\.body\.setAttribute\(['\"]data-rad-ui-design-system['\"]"

echo
echo "3) Find where baremetal styles are loaded:"
rg -n --iglob '*.{js,jsx,ts,tsx,scss,css}' 'design-systems/baremetal/default\.scss|themes/baremetal\.css'

Repository: rad-ui/ui

Length of output: 557


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== 1) Check clarity design system for comparison ==="
fd -e scss -e css 'clarity' | head -20

echo
echo "=== 2) Check clarity selector patterns ==="
rg -n --iglob '*.{scss,css}' 'data-rad-ui-design-system.*clarity|clarity.*data-rad-ui-design-system' | head -20

echo
echo "=== 3) Find where stylesheets are imported ==="
rg -n --iglob '*.{js,jsx,ts,tsx}' 'import.*design-system|import.*theme|from.*\.scss|from.*\.css' | head -30

echo
echo "=== 4) Check for initialization patterns outside document.body ==="
rg -n --iglob '*.{js,jsx,ts,tsx}' 'setAttribute.*design-system|data-rad-ui-design-system' | head -20

echo
echo "=== 5) Look for theme/design-system initialization ==="
fd -e ts -e tsx -e js -e jsx -type f -exec grep -l 'theme\|design.*system' {} \; | head -20

Repository: rad-ui/ui

Length of output: 1156


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== 1) Find clarity design-systems root selector ==="
fd -e scss -e css 'design-systems.*clarity'

echo
echo "=== 2) List entire design-systems directory ==="
find src/design-systems -type f | head -30

echo
echo "=== 3) Check clarity default.scss similar to baremetal ==="
cat src/design-systems/clarity/default.scss 2>/dev/null || echo "File not found"

echo
echo "=== 4) Find style imports in main entry points ==="
fd -e ts -e tsx -e js -e jsx 'index|main|app' -type f | xargs grep -l 'design-system\|\.scss' 2>/dev/null | head -10

echo
echo "=== 5) Check root HTML/entry files ==="
find . -maxdepth 2 -name 'index.html' -o -name 'package.json' | xargs grep -l 'data-rad-ui-design-system' 2>/dev/null || echo "Not found in root files"

echo
echo "=== 6) Look for where body attribute is set ==="
rg -n --iglob '*.{js,jsx,ts,tsx,html}' '\[data-rad-ui-design-system\]|body.*data-rad' | head -20

Repository: rad-ui/ui

Length of output: 6425


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== 1) View full baremetal default.scss ==="
cat src/design-systems/baremetal/default.scss

echo
echo "=== 2) Find where design-system stylesheets are imported ==="
rg -n 'design-systems/(baremetal|clarity)' --iglob '*.{ts,tsx,js,jsx,scss,css}' | head -30

echo
echo "=== 3) Check if both stylesheets are loaded together ==="
rg -n 'baremetal.*clarity|clarity.*baremetal' --iglob '*.{ts,tsx,js,jsx,scss,css}'

echo
echo "=== 4) Find app initialization and theme setup ==="
rg -n 'data-rad-ui-design-system|data-rad-ui-theme' --iglob '*.{ts,tsx,js,jsx,html}' | head -40

Repository: rad-ui/ui

Length of output: 17024


Scope fallback forces baremetal globally since body attribute is never initialized.

Lines 3-4 include body:not([data-rad-ui-design-system]) as a fallback selector. The codebase never initializes the body-level data-rad-ui-design-system attribute (only sets it on container divs), making this fallback always active. When both stylesheets are present, baremetal rules apply globally regardless of container-level scoping, conflicting with the design-system attribute set on <div data-rad-ui-design-system="...">.

Additionally, src/design-systems/baremetal/default.scss imports clarity styles (@use "../clarity/default"), so clarity CSS rules are present whenever baremetal is loaded, compounding the issue.

Contrast this with clarity design system, which uses [data-rad-ui-theme] directly without a fallback, requiring explicit attribute presence.

💡 Safer selector option (explicit opt-in only)
-$baremetal-theme-root: ':where(body:not([data-rad-ui-design-system]), [data-rad-ui-design-system="baremetal"]) [data-rad-ui-theme]';
-$baremetal-portal-root: ':where(body:not([data-rad-ui-design-system]), [data-rad-ui-design-system="baremetal"]) [data-rad-ui-portal-root]';
+$baremetal-theme-root: ':where([data-rad-ui-design-system="baremetal"]) [data-rad-ui-theme]';
+$baremetal-portal-root: ':where([data-rad-ui-design-system="baremetal"]) [data-rad-ui-portal-root]';
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/design-systems/baremetal/default.scss` around lines 3 - 4, The fallback
selectors in default.scss ($baremetal-theme-root and $baremetal-portal-root)
make baremetal styles global because body:not([data-rad-ui-design-system]) is
never set; update those variables to require the explicit container attribute
(e.g. use [data-rad-ui-design-system="baremetal"] [data-rad-ui-theme] and
[data-rad-ui-design-system="baremetal"] [data-rad-ui-portal-root]) instead of
the body:not(...) fallback, and remove or conditionally scope the `@use`
"../clarity/default" import in src/design-systems/baremetal/default.scss so
clarity styles are not pulled in whenever baremetal is loaded.

@github-actions
Copy link
Copy Markdown
Contributor

Coverage

This report compares the PR with the base branch. "Δ" shows how the PR affects each metric.

Metric PR Δ
Statements 81.31% -0.14%
Branches 62.5% -0.17%
Functions 69.05% -0.10%
Lines 82.65% -0.15%

Coverage decreased for at least one metric. Please add or update tests to improve coverage.

Run npm run coverage locally for detailed reports and target untested areas to raise these numbers.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
src/design-systems/baremetal/_scope.scss (1)

95-97: Add a fallback for placeholder color token.

--rad-ui-baremetal-disabled should have a fallback to keep placeholder contrast stable if the token is missing/overridden.

Suggested diff
     &::placeholder {
-        color: var(--rad-ui-baremetal-disabled);
+        color: var(--rad-ui-baremetal-disabled, rgba(0, 0, 0, 0.55));
     }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/design-systems/baremetal/_scope.scss` around lines 95 - 97, Update the
&::placeholder rule to provide a fallback value for the CSS variable so
placeholder color remains stable if --rad-ui-baremetal-disabled is missing or
overridden; change the declaration in the &::placeholder block from color:
var(--rad-ui-baremetal-disabled); to use a fallback like color:
var(--rad-ui-baremetal-disabled, rgba(0,0,0,0.35))); pick a fallback (hex/rgba
or another design token) that maintains accessible contrast.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@agents/development/sync-storybook-releases.md`:
- Around line 3-5: Correct the spelling errors by changing "instuctions" to
"instructions" and "lifecyles" to "lifecycles" in the markdown text; update the
Markdown link target "knowledge/releases/how-rad-ui-releases-are-made.md" to the
correct relative path from this file (e.g., adjust to ../knowledge/... or the
proper location in the repo) and verify the target file exists so the link
resolves. Ensure the visible link text remains "Rad UI Component Lifecycle" if
intended.

In `@knowledge/releases/how-rad-ui-releases-are-made.md`:
- Around line 13-27: Update the prose in the release-stage doc: hyphenate
compound adjectives such as changing "production ready" to "production-ready"
and "non stable" to "non-stable", and split the Storybook workflow run-on
sentence into two clearer sentences (mentioning the "WIP" category and then that
once released they move to the "Components" category) so the Workflow section
reads grammatically correct and more readable.

---

Nitpick comments:
In `@src/design-systems/baremetal/_scope.scss`:
- Around line 95-97: Update the &::placeholder rule to provide a fallback value
for the CSS variable so placeholder color remains stable if
--rad-ui-baremetal-disabled is missing or overridden; change the declaration in
the &::placeholder block from color: var(--rad-ui-baremetal-disabled); to use a
fallback like color: var(--rad-ui-baremetal-disabled, rgba(0,0,0,0.35))); pick a
fallback (hex/rgba or another design token) that maintains accessible contrast.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: be29bc19-d251-4551-83ba-83cfcc52618c

📥 Commits

Reviewing files that changed from the base of the PR and between 353f8af and 0d458bc.

📒 Files selected for processing (89)
  • .storybook/main.cjs
  • agents/development/sync-storybook-releases.md
  • knowledge/releases/how-rad-ui-releases-are-made.md
  • src/components/ui/Accordion/accordion.baremetal.scss
  • src/components/ui/AlertDialog/alert-dialog.baremetal.scss
  • src/components/ui/Avatar/avatar.baremetal.scss
  • src/components/ui/AvatarGroup/avatar-group.baremetal.scss
  • src/components/ui/Badge/badge.baremetal.scss
  • src/components/ui/BlockQuote/blockquote.baremetal.scss
  • src/components/ui/Button/button.baremetal.scss
  • src/components/ui/Callout/callout.baremetal.scss
  • src/components/ui/Card/card.baremetal.scss
  • src/components/ui/Checkbox/checkbox.baremetal.scss
  • src/components/ui/CheckboxCards/checkbox-cards.baremetal.scss
  • src/components/ui/CheckboxCards/stories/CheckboxCards.stories.tsx
  • src/components/ui/CheckboxGroup/checkbox-group.baremetal.scss
  • src/components/ui/CheckboxGroup/stories/CheckboxGroup.stories.tsx
  • src/components/ui/Code/code.baremetal.scss
  • src/components/ui/Collapsible/collapsible.baremetal.scss
  • src/components/ui/Collapsible/stories/Collapsible.stories.tsx
  • src/components/ui/Combobox/combobox.baremetal.scss
  • src/components/ui/Combobox/stories/Combobox.stories.tsx
  • src/components/ui/ContextMenu/context-menu.baremetal.scss
  • src/components/ui/ContextMenu/stories/ContextMenu.stories.tsx
  • src/components/ui/DataList/data-list.baremetal.scss
  • src/components/ui/DataList/stories/DataList.stories.tsx
  • src/components/ui/Dialog/dialog.baremetal.scss
  • src/components/ui/Dialog/stories/Dialog.stories.tsx
  • src/components/ui/Disclosure/disclosure.baremetal.scss
  • src/components/ui/Disclosure/stories/Disclosure.stories.tsx
  • src/components/ui/DropdownMenu/dropdown-menu.baremetal.scss
  • src/components/ui/DropdownMenu/stories/DropdownMenu.stories.tsx
  • src/components/ui/Heading/heading.baremetal.scss
  • src/components/ui/HoverCard/hover-card.baremetal.scss
  • src/components/ui/HoverCard/stories/HoverCard.stories.tsx
  • src/components/ui/Kbd/kbd.baremetal.scss
  • src/components/ui/Link/link.baremetal.scss
  • src/components/ui/Menubar/menubar.baremetal.scss
  • src/components/ui/Menubar/stories/Menubar.stories.tsx
  • src/components/ui/Minimap/minimap.baremetal.scss
  • src/components/ui/Minimap/stories/Minimap.stories.tsx
  • src/components/ui/NavigationMenu/navigation-menu.baremetal.scss
  • src/components/ui/NavigationMenu/stories/NavigationMenu.stories.tsx
  • src/components/ui/NumberField/number-field.baremetal.scss
  • src/components/ui/NumberField/stories/NumberField.stories.tsx
  • src/components/ui/Progress/progress.baremetal.scss
  • src/components/ui/Quote/quote.baremetal.scss
  • src/components/ui/Radio/radio.baremetal.scss
  • src/components/ui/Radio/stories/Radio.stories.tsx
  • src/components/ui/RadioCards/RadioCards.stories.tsx
  • src/components/ui/RadioCards/radiocards.baremetal.scss
  • src/components/ui/RadioGroup/radio-group.baremetal.scss
  • src/components/ui/RadioGroup/stories/RadioGroup.stories.tsx
  • src/components/ui/ScrollArea/scroll-area.baremetal.scss
  • src/components/ui/ScrollArea/stories/ScrollArea.stories.tsx
  • src/components/ui/Select/select.baremetal.scss
  • src/components/ui/Select/stories/Select.stories.tsx
  • src/components/ui/Separator/separator.baremetal.scss
  • src/components/ui/Skeleton/skeleton.baremetal.scss
  • src/components/ui/Slider/slider.baremetal.scss
  • src/components/ui/Slider/stories/Slider.stories.tsx
  • src/components/ui/Spinner/spinner.baremetal.scss
  • src/components/ui/Splitter/splitter.baremetal.scss
  • src/components/ui/Steps/steps.baremetal.scss
  • src/components/ui/Steps/stories/Steps.stories.tsx
  • src/components/ui/Strong/strong.baremetal.scss
  • src/components/ui/Switch/stories/Switch.stories.tsx
  • src/components/ui/Switch/switch.baremetal.scss
  • src/components/ui/TabNav/stories/TabNav.stories.tsx
  • src/components/ui/TabNav/tab-nav.baremetal.scss
  • src/components/ui/Table/stories/Table.stories.tsx
  • src/components/ui/Table/table.baremetal.scss
  • src/components/ui/Tabs/stories/Tabs.stories.tsx
  • src/components/ui/Tabs/tabs.baremetal.scss
  • src/components/ui/Text/text.baremetal.scss
  • src/components/ui/TextArea/stories/TextArea.stories.tsx
  • src/components/ui/TextArea/textarea.baremetal.scss
  • src/components/ui/Theme/stories/Theme.stories.tsx
  • src/components/ui/Toggle/stories/Toggle.stories.tsx
  • src/components/ui/Toggle/toggle.baremetal.scss
  • src/components/ui/ToggleGroup/stories/ToggleGroup.stories.tsx
  • src/components/ui/ToggleGroup/toggle-group.baremetal.scss
  • src/components/ui/Toolbar/toolbar.baremetal.scss
  • src/components/ui/Tooltip/stories/Tooltip.stories.tsx
  • src/components/ui/Tooltip/tooltip.baremetal.scss
  • src/components/ui/Tree/stories/Tree.stories.tsx
  • src/components/ui/Tree/tree.baremetal.scss
  • src/design-systems/baremetal/_scope.scss
  • src/design-systems/baremetal/default.scss
✅ Files skipped from review due to trivial changes (84)
  • src/components/ui/Disclosure/disclosure.baremetal.scss
  • src/components/ui/Avatar/avatar.baremetal.scss
  • src/components/ui/AvatarGroup/avatar-group.baremetal.scss
  • src/components/ui/CheckboxGroup/checkbox-group.baremetal.scss
  • src/components/ui/Dialog/stories/Dialog.stories.tsx
  • src/components/ui/HoverCard/hover-card.baremetal.scss
  • src/components/ui/Menubar/stories/Menubar.stories.tsx
  • src/components/ui/Combobox/stories/Combobox.stories.tsx
  • src/components/ui/CheckboxGroup/stories/CheckboxGroup.stories.tsx
  • src/components/ui/Disclosure/stories/Disclosure.stories.tsx
  • src/components/ui/Minimap/minimap.baremetal.scss
  • src/components/ui/DataList/stories/DataList.stories.tsx
  • src/components/ui/Progress/progress.baremetal.scss
  • src/components/ui/Slider/stories/Slider.stories.tsx
  • src/components/ui/Strong/strong.baremetal.scss
  • src/components/ui/Radio/stories/Radio.stories.tsx
  • src/components/ui/Link/link.baremetal.scss
  • src/components/ui/DropdownMenu/dropdown-menu.baremetal.scss
  • src/components/ui/RadioGroup/stories/RadioGroup.stories.tsx
  • src/components/ui/RadioGroup/radio-group.baremetal.scss
  • src/components/ui/NavigationMenu/stories/NavigationMenu.stories.tsx
  • src/components/ui/Card/card.baremetal.scss
  • src/components/ui/Theme/stories/Theme.stories.tsx
  • src/components/ui/TextArea/textarea.baremetal.scss
  • src/components/ui/Kbd/kbd.baremetal.scss
  • src/components/ui/Quote/quote.baremetal.scss
  • src/components/ui/CheckboxCards/stories/CheckboxCards.stories.tsx
  • src/components/ui/Accordion/accordion.baremetal.scss
  • src/components/ui/Checkbox/checkbox.baremetal.scss
  • src/components/ui/DropdownMenu/stories/DropdownMenu.stories.tsx
  • src/components/ui/Heading/heading.baremetal.scss
  • src/components/ui/Switch/stories/Switch.stories.tsx
  • src/components/ui/TextArea/stories/TextArea.stories.tsx
  • src/components/ui/Toggle/toggle.baremetal.scss
  • src/components/ui/Separator/separator.baremetal.scss
  • src/components/ui/NumberField/stories/NumberField.stories.tsx
  • src/components/ui/Tooltip/stories/Tooltip.stories.tsx
  • src/components/ui/HoverCard/stories/HoverCard.stories.tsx
  • src/components/ui/Steps/stories/Steps.stories.tsx
  • src/components/ui/Radio/radio.baremetal.scss
  • src/components/ui/Collapsible/collapsible.baremetal.scss
  • src/components/ui/Button/button.baremetal.scss
  • src/components/ui/Tree/stories/Tree.stories.tsx
  • src/components/ui/DataList/data-list.baremetal.scss
  • src/components/ui/Text/text.baremetal.scss
  • src/components/ui/Tabs/stories/Tabs.stories.tsx
  • src/components/ui/RadioCards/RadioCards.stories.tsx
  • src/components/ui/TabNav/stories/TabNav.stories.tsx
  • src/components/ui/ToggleGroup/stories/ToggleGroup.stories.tsx
  • src/components/ui/Minimap/stories/Minimap.stories.tsx
  • src/components/ui/Skeleton/skeleton.baremetal.scss
  • src/components/ui/CheckboxCards/checkbox-cards.baremetal.scss
  • src/components/ui/NavigationMenu/navigation-menu.baremetal.scss
  • src/components/ui/Tooltip/tooltip.baremetal.scss
  • src/components/ui/Code/code.baremetal.scss
  • src/components/ui/Select/stories/Select.stories.tsx
  • src/components/ui/ToggleGroup/toggle-group.baremetal.scss
  • src/components/ui/ScrollArea/stories/ScrollArea.stories.tsx
  • src/components/ui/ContextMenu/stories/ContextMenu.stories.tsx
  • src/components/ui/BlockQuote/blockquote.baremetal.scss
  • src/components/ui/RadioCards/radiocards.baremetal.scss
  • src/components/ui/ContextMenu/context-menu.baremetal.scss
  • src/components/ui/Splitter/splitter.baremetal.scss
  • src/components/ui/ScrollArea/scroll-area.baremetal.scss
  • src/components/ui/Toolbar/toolbar.baremetal.scss
  • src/components/ui/Select/select.baremetal.scss
  • src/components/ui/Slider/slider.baremetal.scss
  • src/components/ui/Table/stories/Table.stories.tsx
  • src/components/ui/Spinner/spinner.baremetal.scss
  • src/components/ui/Tree/tree.baremetal.scss
  • src/components/ui/Tabs/tabs.baremetal.scss
  • src/components/ui/Combobox/combobox.baremetal.scss
  • src/components/ui/TabNav/tab-nav.baremetal.scss
  • src/components/ui/NumberField/number-field.baremetal.scss
  • src/components/ui/Badge/badge.baremetal.scss
  • src/components/ui/Callout/callout.baremetal.scss
  • src/components/ui/Toggle/stories/Toggle.stories.tsx
  • src/components/ui/AlertDialog/alert-dialog.baremetal.scss
  • src/components/ui/Steps/steps.baremetal.scss
  • src/components/ui/Dialog/dialog.baremetal.scss
  • src/components/ui/Collapsible/stories/Collapsible.stories.tsx
  • src/components/ui/Table/table.baremetal.scss
  • src/components/ui/Switch/switch.baremetal.scss
  • src/components/ui/Menubar/menubar.baremetal.scss
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/design-systems/baremetal/default.scss

Comment thread agents/development/sync-storybook-releases.md
Comment thread knowledge/releases/how-rad-ui-releases-are-made.md
@kotAPI kotAPI merged commit 48c33ad into main Apr 16, 2026
10 checks passed
@kotAPI kotAPI deleted the kotapi/brutalist-minimal-theme branch April 16, 2026 02:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant