@brijbyte/agentic-ui 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +280 -53
- package/dist/accordion/accordion.d.ts +14 -0
- package/dist/accordion/accordion.d.ts.map +1 -1
- package/dist/accordion/accordion.js +5 -0
- package/dist/accordion/accordion.js.map +1 -1
- package/dist/accordion/index.d.ts +2 -2
- package/dist/accordion/index.js +2 -2
- package/dist/accordion/parts.d.ts +6 -14
- package/dist/accordion/parts.d.ts.map +1 -1
- package/dist/accordion/parts.js +7 -6
- package/dist/accordion/parts.js.map +1 -1
- package/dist/alert-dialog/alert-dialog.d.ts +11 -0
- package/dist/alert-dialog/alert-dialog.d.ts.map +1 -1
- package/dist/alert-dialog/alert-dialog.js +5 -0
- package/dist/alert-dialog/alert-dialog.js.map +1 -1
- package/dist/alert-dialog/parts.d.ts +4 -12
- package/dist/alert-dialog/parts.d.ts.map +1 -1
- package/dist/alert-dialog/parts.js +17 -19
- package/dist/alert-dialog/parts.js.map +1 -1
- package/dist/badge/badge.d.ts +6 -0
- package/dist/badge/badge.d.ts.map +1 -1
- package/dist/badge/badge.js +4 -0
- package/dist/badge/badge.js.map +1 -1
- package/dist/button/button.d.ts +12 -1
- package/dist/button/button.d.ts.map +1 -1
- package/dist/button/button.js +5 -0
- package/dist/button/button.js.map +1 -1
- package/dist/card/card.d.ts +10 -0
- package/dist/card/card.d.ts.map +1 -1
- package/dist/card/card.js +7 -0
- package/dist/card/card.js.map +1 -1
- package/dist/checkbox/checkbox.d.ts +13 -0
- package/dist/checkbox/checkbox.d.ts.map +1 -1
- package/dist/checkbox/checkbox.js +4 -0
- package/dist/checkbox/checkbox.js.map +1 -1
- package/dist/checkbox/parts.d.ts +2 -5
- package/dist/checkbox/parts.d.ts.map +1 -1
- package/dist/checkbox/parts.js +3 -2
- package/dist/checkbox/parts.js.map +1 -1
- package/dist/collapsible/collapsible.d.ts +11 -0
- package/dist/collapsible/collapsible.d.ts.map +1 -1
- package/dist/collapsible/collapsible.js +5 -0
- package/dist/collapsible/collapsible.js.map +1 -1
- package/dist/collapsible/parts.d.ts +3 -9
- package/dist/collapsible/parts.d.ts.map +1 -1
- package/dist/collapsible/parts.js +7 -6
- package/dist/collapsible/parts.js.map +1 -1
- package/dist/context-menu/context-menu.d.ts +5 -0
- package/dist/context-menu/context-menu.d.ts.map +1 -1
- package/dist/context-menu/context-menu.js +4 -0
- package/dist/context-menu/context-menu.js.map +1 -1
- package/dist/context-menu/parts.d.ts +6 -18
- package/dist/context-menu/parts.d.ts.map +1 -1
- package/dist/context-menu/parts.js +16 -16
- package/dist/context-menu/parts.js.map +1 -1
- package/dist/dialog/dialog.d.ts +13 -1
- package/dist/dialog/dialog.d.ts.map +1 -1
- package/dist/dialog/dialog.js +6 -0
- package/dist/dialog/dialog.js.map +1 -1
- package/dist/dialog/parts.d.ts +6 -18
- package/dist/dialog/parts.d.ts.map +1 -1
- package/dist/dialog/parts.js +8 -9
- package/dist/dialog/parts.js.map +1 -1
- package/dist/drawer/drawer.d.ts +11 -0
- package/dist/drawer/drawer.d.ts.map +1 -1
- package/dist/drawer/drawer.js +5 -0
- package/dist/drawer/drawer.js.map +1 -1
- package/dist/drawer/parts.d.ts +7 -19
- package/dist/drawer/parts.d.ts.map +1 -1
- package/dist/drawer/parts.js +14 -13
- package/dist/drawer/parts.js.map +1 -1
- package/dist/index.css +1580 -1150
- package/dist/index.d.ts +20 -11
- package/dist/index.js +15 -2
- package/dist/input/input.d.ts +8 -0
- package/dist/input/input.d.ts.map +1 -1
- package/dist/input/input.js +5 -0
- package/dist/input/input.js.map +1 -1
- package/dist/menu/menu.css +3 -8
- package/dist/menu/menu.d.ts +11 -4
- package/dist/menu/menu.d.ts.map +1 -1
- package/dist/menu/menu.js +10 -24
- package/dist/menu/menu.js.map +1 -1
- package/dist/menu/menu.module.js +1 -1
- package/dist/menu/menu.module.js.map +1 -1
- package/dist/menu/parts.d.ts +6 -18
- package/dist/menu/parts.d.ts.map +1 -1
- package/dist/menu/parts.js +7 -6
- package/dist/menu/parts.js.map +1 -1
- package/dist/meter/circular-meter.d.ts +48 -0
- package/dist/meter/circular-meter.d.ts.map +1 -0
- package/dist/meter/circular-meter.js +86 -0
- package/dist/meter/circular-meter.js.map +1 -0
- package/dist/meter/index.d.ts +4 -0
- package/dist/meter/index.js +5 -0
- package/dist/meter/meter.css +152 -0
- package/dist/meter/meter.d.ts +58 -0
- package/dist/meter/meter.d.ts.map +1 -0
- package/dist/meter/meter.js +50 -0
- package/dist/meter/meter.js.map +1 -0
- package/dist/meter/meter.module.css.d.ts +2 -0
- package/dist/meter/meter.module.js +27 -0
- package/dist/meter/meter.module.js.map +1 -0
- package/dist/meter/meterState.js +18 -0
- package/dist/meter/meterState.js.map +1 -0
- package/dist/meter/parts.d.ts +25 -0
- package/dist/meter/parts.d.ts.map +1 -0
- package/dist/meter/parts.js +57 -0
- package/dist/meter/parts.js.map +1 -0
- package/dist/number-field/number-field.d.ts +16 -0
- package/dist/number-field/number-field.d.ts.map +1 -1
- package/dist/number-field/number-field.js +4 -0
- package/dist/number-field/number-field.js.map +1 -1
- package/dist/number-field/parts.d.ts +6 -18
- package/dist/number-field/parts.d.ts.map +1 -1
- package/dist/number-field/parts.js +7 -6
- package/dist/number-field/parts.js.map +1 -1
- package/dist/popover/index.d.ts +3 -0
- package/dist/popover/index.js +4 -0
- package/dist/popover/parts.d.ts +29 -0
- package/dist/popover/parts.d.ts.map +1 -0
- package/dist/popover/parts.js +93 -0
- package/dist/popover/parts.js.map +1 -0
- package/dist/popover/popover.css +173 -0
- package/dist/popover/popover.d.ts +49 -0
- package/dist/popover/popover.d.ts.map +1 -0
- package/dist/popover/popover.js +68 -0
- package/dist/popover/popover.js.map +1 -0
- package/dist/popover/popover.module.css.d.ts +2 -0
- package/dist/popover/popover.module.js +16 -0
- package/dist/popover/popover.module.js.map +1 -0
- package/dist/progress/parts.d.ts +2 -4
- package/dist/progress/parts.d.ts.map +1 -1
- package/dist/progress/parts.js +3 -6
- package/dist/progress/parts.js.map +1 -1
- package/dist/progress/progress.d.ts +11 -0
- package/dist/progress/progress.d.ts.map +1 -1
- package/dist/progress/progress.js +5 -0
- package/dist/progress/progress.js.map +1 -1
- package/dist/radio/index.d.ts +3 -0
- package/dist/radio/index.js +4 -0
- package/dist/radio/parts.d.ts +14 -0
- package/dist/radio/parts.d.ts.map +1 -0
- package/dist/radio/parts.js +43 -0
- package/dist/radio/parts.js.map +1 -0
- package/dist/radio/radio.css +84 -0
- package/dist/radio/radio.d.ts +31 -0
- package/dist/radio/radio.d.ts.map +1 -0
- package/dist/radio/radio.js +33 -0
- package/dist/radio/radio.js.map +1 -0
- package/dist/radio/radio.module.css.d.ts +2 -0
- package/dist/radio/radio.module.js +11 -0
- package/dist/radio/radio.module.js.map +1 -0
- package/dist/radio-group/index.d.ts +3 -0
- package/dist/radio-group/index.js +4 -0
- package/dist/radio-group/parts.d.ts +11 -0
- package/dist/radio-group/parts.d.ts.map +1 -0
- package/dist/radio-group/parts.js +32 -0
- package/dist/radio-group/parts.js.map +1 -0
- package/dist/radio-group/radio-group.css +17 -0
- package/dist/radio-group/radio-group.d.ts +37 -0
- package/dist/radio-group/radio-group.d.ts.map +1 -0
- package/dist/radio-group/radio-group.js +28 -0
- package/dist/radio-group/radio-group.js.map +1 -0
- package/dist/radio-group/radio-group.module.css.d.ts +2 -0
- package/dist/radio-group/radio-group.module.js +9 -0
- package/dist/radio-group/radio-group.module.js.map +1 -0
- package/dist/reset-scoped.css +112 -0
- package/dist/select/parts.d.ts +11 -32
- package/dist/select/parts.d.ts.map +1 -1
- package/dist/select/parts.js +10 -9
- package/dist/select/parts.js.map +1 -1
- package/dist/select/select.d.ts +14 -1
- package/dist/select/select.d.ts.map +1 -1
- package/dist/select/select.js +4 -0
- package/dist/select/select.js.map +1 -1
- package/dist/separator/separator.d.ts +4 -0
- package/dist/separator/separator.d.ts.map +1 -1
- package/dist/separator/separator.js +4 -0
- package/dist/separator/separator.js.map +1 -1
- package/dist/shared/PopupArrow.js +22 -0
- package/dist/shared/PopupArrow.js.map +1 -0
- package/dist/slider/parts.d.ts +6 -18
- package/dist/slider/parts.d.ts.map +1 -1
- package/dist/slider/parts.js +7 -6
- package/dist/slider/parts.js.map +1 -1
- package/dist/slider/slider.d.ts +18 -0
- package/dist/slider/slider.d.ts.map +1 -1
- package/dist/slider/slider.js +6 -0
- package/dist/slider/slider.js.map +1 -1
- package/dist/switch/parts.d.ts +2 -6
- package/dist/switch/parts.d.ts.map +1 -1
- package/dist/switch/parts.js +3 -2
- package/dist/switch/parts.js.map +1 -1
- package/dist/switch/switch.css +11 -2
- package/dist/switch/switch.d.ts +12 -0
- package/dist/switch/switch.d.ts.map +1 -1
- package/dist/switch/switch.js +4 -0
- package/dist/switch/switch.js.map +1 -1
- package/dist/switch/switch.module.js.map +1 -1
- package/dist/tabs/parts.d.ts +3 -9
- package/dist/tabs/parts.d.ts.map +1 -1
- package/dist/tabs/parts.js +4 -3
- package/dist/tabs/parts.js.map +1 -1
- package/dist/tabs/tabs.d.ts +8 -1
- package/dist/tabs/tabs.d.ts.map +1 -1
- package/dist/tabs/tabs.js +4 -0
- package/dist/tabs/tabs.js.map +1 -1
- package/dist/toast/parts.d.ts +5 -15
- package/dist/toast/parts.d.ts.map +1 -1
- package/dist/toast/parts.js +6 -5
- package/dist/toast/parts.js.map +1 -1
- package/dist/toast/toast.d.ts +11 -0
- package/dist/toast/toast.d.ts.map +1 -1
- package/dist/toast/toast.js +8 -0
- package/dist/toast/toast.js.map +1 -1
- package/dist/tooltip/parts.d.ts +3 -9
- package/dist/tooltip/parts.d.ts.map +1 -1
- package/dist/tooltip/parts.js +4 -3
- package/dist/tooltip/parts.js.map +1 -1
- package/dist/tooltip/tooltip.d.ts +9 -0
- package/dist/tooltip/tooltip.d.ts.map +1 -1
- package/dist/tooltip/tooltip.js +4 -0
- package/dist/tooltip/tooltip.js.map +1 -1
- package/dist/utils/resolveClassName.js +25 -0
- package/dist/utils/resolveClassName.js.map +1 -0
- package/package.json +25 -4
- package/src/accordion/accordion.tsx +14 -0
- package/src/accordion/index.ts +1 -1
- package/src/accordion/parts.tsx +10 -17
- package/src/alert-dialog/alert-dialog.tsx +11 -0
- package/src/alert-dialog/parts.tsx +23 -31
- package/src/badge/badge.tsx +6 -0
- package/src/button/button.tsx +12 -1
- package/src/card/card.tsx +10 -0
- package/src/checkbox/checkbox.tsx +13 -0
- package/src/checkbox/parts.tsx +5 -7
- package/src/collapsible/collapsible.tsx +11 -0
- package/src/collapsible/parts.tsx +10 -15
- package/src/context-menu/context-menu.tsx +5 -0
- package/src/context-menu/parts.tsx +34 -34
- package/src/dialog/dialog.tsx +13 -1
- package/src/dialog/parts.tsx +14 -27
- package/src/drawer/drawer.tsx +11 -0
- package/src/drawer/parts.tsx +30 -38
- package/src/index.ts +4 -0
- package/src/input/input.tsx +8 -0
- package/src/menu/menu.module.css +3 -10
- package/src/menu/menu.tsx +13 -26
- package/src/menu/parts.tsx +13 -24
- package/src/meter/circular-meter.tsx +114 -0
- package/src/meter/index.ts +9 -0
- package/src/meter/meter.module.css +162 -0
- package/src/meter/meter.tsx +86 -0
- package/src/meter/meterState.ts +29 -0
- package/src/meter/parts.tsx +73 -0
- package/src/number-field/number-field.tsx +16 -0
- package/src/number-field/parts.tsx +33 -24
- package/src/popover/index.ts +14 -0
- package/src/popover/parts.tsx +105 -0
- package/src/popover/popover.module.css +189 -0
- package/src/popover/popover.tsx +80 -0
- package/src/progress/parts.tsx +13 -6
- package/src/progress/progress.tsx +11 -0
- package/src/radio/index.ts +6 -0
- package/src/radio/parts.tsx +42 -0
- package/src/radio/radio.module.css +96 -0
- package/src/radio/radio.tsx +37 -0
- package/src/radio-group/index.ts +5 -0
- package/src/radio-group/parts.tsx +31 -0
- package/src/radio-group/radio-group.module.css +17 -0
- package/src/radio-group/radio-group.tsx +63 -0
- package/src/select/parts.tsx +34 -41
- package/src/select/select.tsx +14 -1
- package/src/separator/separator.tsx +4 -0
- package/src/shared/PopupArrow.tsx +41 -0
- package/src/slider/parts.tsx +13 -24
- package/src/slider/slider.tsx +18 -0
- package/src/styles/reset-scoped.css +112 -0
- package/src/switch/parts.tsx +5 -8
- package/src/switch/switch.module.css +11 -2
- package/src/switch/switch.tsx +12 -0
- package/src/tabs/parts.tsx +7 -12
- package/src/tabs/tabs.tsx +8 -1
- package/src/toast/parts.tsx +11 -20
- package/src/toast/toast.tsx +11 -0
- package/src/tooltip/parts.tsx +7 -12
- package/src/tooltip/tooltip.tsx +9 -0
- package/src/utils/resolveClassName.ts +24 -0
package/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
A developer-focused React component library with an aesthetic loosely inspired by native desktop and mobile UI. Built on top of [`@base-ui/react`](https://base-ui.com) for accessible behaviour, styled with CSS modules under `@layer` rules so every component style is overridable downstream.
|
|
4
4
|
|
|
5
|
+
**Documentation:** [agentic-ui.brijbyte.com](https://agentic-ui.brijbyte.com)
|
|
6
|
+
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
## Design philosophy
|
|
@@ -135,34 +137,37 @@ All tokens live in `@layer theme` — the lowest-priority layer. `@layer base` (
|
|
|
135
137
|
|
|
136
138
|
Shadows are theme-aware — light mode uses low-opacity black shadows; dark mode uses higher-opacity values so elevation is visible against dark surfaces.
|
|
137
139
|
|
|
138
|
-
| Token | Tailwind class | Role
|
|
139
|
-
| --------------------------------------------------------- | -------------------- |
|
|
140
|
-
| `--color-canvas` | `bg-canvas` | Page background
|
|
141
|
-
| `--color-elevated` | `bg-elevated` | Cards, popovers
|
|
142
|
-
| `--color-sunken` | `bg-sunken` | Code blocks, inset areas
|
|
143
|
-
| `--color-overlay` | `bg-overlay` | Backdrop-blurred surfaces
|
|
144
|
-
| `--color-sidebar` | `bg-sidebar` | Sidebar / navigation panels
|
|
145
|
-
| `--color-surface-1/2/3` | `bg-surface-1/2/3` | Layered surface hierarchy
|
|
146
|
-
| `--color-hover` | `bg-hover` | Hovered interactive surface
|
|
147
|
-
| `--color-active` | `bg-active` | Pressed interactive surface
|
|
148
|
-
| `--color-selected` | `bg-selected` | Selected interactive surface
|
|
149
|
-
| `--color-primary` | `text-primary` | Primary text
|
|
150
|
-
| `--color-secondary` | `text-secondary` | Secondary text
|
|
151
|
-
| `--color-tertiary` | `text-tertiary` | Tertiary / hint text
|
|
152
|
-
| `--color-disabled` | `text-disabled` | Disabled text
|
|
153
|
-
| `--color-inverse` | `text-inverse` | Text on inverse (dark) backgrounds
|
|
154
|
-
| `--color-on-accent` | `text-on-accent` | Text on filled accent backgrounds
|
|
155
|
-
| `--color-code` | `text-code` | Inline code text
|
|
156
|
-
| `--color-line` | `border-line` | Base border
|
|
157
|
-
| `--color-line-strong` | `border-line-strong` | Stronger border
|
|
158
|
-
| `--color-line-subtle` | `border-line-subtle` | Subtle / decorative border
|
|
159
|
-
| `--color-accent` | `bg-accent` | macOS blue —
|
|
160
|
-
| `--color-accent-
|
|
161
|
-
| `--color-accent-
|
|
162
|
-
| `--color-accent-
|
|
163
|
-
| `--color-accent-
|
|
164
|
-
| `--color-
|
|
165
|
-
| `--color-
|
|
140
|
+
| Token | Tailwind class | Role |
|
|
141
|
+
| --------------------------------------------------------- | -------------------- | -------------------------------------------- |
|
|
142
|
+
| `--color-canvas` | `bg-canvas` | Page background |
|
|
143
|
+
| `--color-elevated` | `bg-elevated` | Cards, popovers |
|
|
144
|
+
| `--color-sunken` | `bg-sunken` | Code blocks, inset areas |
|
|
145
|
+
| `--color-overlay` | `bg-overlay` | Backdrop-blurred surfaces |
|
|
146
|
+
| `--color-sidebar` | `bg-sidebar` | Sidebar / navigation panels |
|
|
147
|
+
| `--color-surface-1/2/3` | `bg-surface-1/2/3` | Layered surface hierarchy |
|
|
148
|
+
| `--color-hover` | `bg-hover` | Hovered interactive surface |
|
|
149
|
+
| `--color-active` | `bg-active` | Pressed interactive surface |
|
|
150
|
+
| `--color-selected` | `bg-selected` | Selected interactive surface |
|
|
151
|
+
| `--color-primary` | `text-primary` | Primary text |
|
|
152
|
+
| `--color-secondary` | `text-secondary` | Secondary text |
|
|
153
|
+
| `--color-tertiary` | `text-tertiary` | Tertiary / hint text |
|
|
154
|
+
| `--color-disabled` | `text-disabled` | Disabled text |
|
|
155
|
+
| `--color-inverse` | `text-inverse` | Text on inverse (dark) backgrounds |
|
|
156
|
+
| `--color-on-accent` | `text-on-accent` | Text on filled accent backgrounds |
|
|
157
|
+
| `--color-code` | `text-code` | Inline code text |
|
|
158
|
+
| `--color-line` | `border-line` | Base border |
|
|
159
|
+
| `--color-line-strong` | `border-line-strong` | Stronger border |
|
|
160
|
+
| `--color-line-subtle` | `border-line-subtle` | Subtle / decorative border |
|
|
161
|
+
| `--color-accent` | `bg-accent` | macOS blue — links, focus rings, tints |
|
|
162
|
+
| `--color-accent-solid` | — | Filled button bg — AA contrast vs white |
|
|
163
|
+
| `--color-accent-text` | — | Accent text on tinted surfaces — AA contrast |
|
|
164
|
+
| `--color-accent-hover` | — | Accent on hover |
|
|
165
|
+
| `--color-accent-pressed` | — | Accent on press |
|
|
166
|
+
| `--color-accent-tint` | `bg-accent-tint` | Subtle accent fill (badges, soft buttons) |
|
|
167
|
+
| `--color-accent-tint-hover` | — | Tint on hover |
|
|
168
|
+
| `--color-focus-ring` | — | Focus ring colour (semi-transparent accent) |
|
|
169
|
+
| `--color-success/warning/error/info-bg/border/text/solid` | — | Status colours |
|
|
170
|
+
| `--color-success/warning/error-on-solid` | — | Text on filled status buttons (AA contrast) |
|
|
166
171
|
|
|
167
172
|
### Spacing
|
|
168
173
|
|
|
@@ -221,29 +226,35 @@ CSS bundles
|
|
|
221
226
|
|
|
222
227
|
Per-component JS (also exports <Name>Styles class-name map)
|
|
223
228
|
@brijbyte/agentic-ui/accordion @brijbyte/agentic-ui/menu
|
|
224
|
-
@brijbyte/agentic-ui/alert-dialog @brijbyte/agentic-ui/
|
|
225
|
-
@brijbyte/agentic-ui/badge @brijbyte/agentic-ui/
|
|
226
|
-
@brijbyte/agentic-ui/button @brijbyte/agentic-ui/
|
|
227
|
-
@brijbyte/agentic-ui/card @brijbyte/agentic-ui/
|
|
228
|
-
@brijbyte/agentic-ui/checkbox @brijbyte/agentic-ui/
|
|
229
|
-
@brijbyte/agentic-ui/collapsible @brijbyte/agentic-ui/
|
|
230
|
-
@brijbyte/agentic-ui/context-menu @brijbyte/agentic-ui/
|
|
231
|
-
@brijbyte/agentic-ui/dialog @brijbyte/agentic-ui/
|
|
232
|
-
@brijbyte/agentic-ui/drawer @brijbyte/agentic-ui/
|
|
233
|
-
@brijbyte/agentic-ui/input
|
|
229
|
+
@brijbyte/agentic-ui/alert-dialog @brijbyte/agentic-ui/meter
|
|
230
|
+
@brijbyte/agentic-ui/badge @brijbyte/agentic-ui/number-field
|
|
231
|
+
@brijbyte/agentic-ui/button @brijbyte/agentic-ui/popover
|
|
232
|
+
@brijbyte/agentic-ui/card @brijbyte/agentic-ui/progress
|
|
233
|
+
@brijbyte/agentic-ui/checkbox @brijbyte/agentic-ui/radio
|
|
234
|
+
@brijbyte/agentic-ui/collapsible @brijbyte/agentic-ui/radio-group
|
|
235
|
+
@brijbyte/agentic-ui/context-menu @brijbyte/agentic-ui/select
|
|
236
|
+
@brijbyte/agentic-ui/dialog @brijbyte/agentic-ui/separator
|
|
237
|
+
@brijbyte/agentic-ui/drawer @brijbyte/agentic-ui/slider
|
|
238
|
+
@brijbyte/agentic-ui/input @brijbyte/agentic-ui/switch
|
|
239
|
+
@brijbyte/agentic-ui/menu @brijbyte/agentic-ui/tabs
|
|
240
|
+
@brijbyte/agentic-ui/toast
|
|
241
|
+
@brijbyte/agentic-ui/tooltip
|
|
234
242
|
|
|
235
243
|
Per-component CSS (/<name>.css mirrors each JS subpath)
|
|
236
244
|
@brijbyte/agentic-ui/accordion.css @brijbyte/agentic-ui/menu.css
|
|
237
|
-
@brijbyte/agentic-ui/alert-dialog.css @brijbyte/agentic-ui/
|
|
238
|
-
@brijbyte/agentic-ui/badge.css @brijbyte/agentic-ui/
|
|
239
|
-
@brijbyte/agentic-ui/button.css @brijbyte/agentic-ui/
|
|
240
|
-
@brijbyte/agentic-ui/card.css @brijbyte/agentic-ui/
|
|
241
|
-
@brijbyte/agentic-ui/checkbox.css @brijbyte/agentic-ui/
|
|
242
|
-
@brijbyte/agentic-ui/collapsible.css @brijbyte/agentic-ui/
|
|
243
|
-
@brijbyte/agentic-ui/context-menu.css @brijbyte/agentic-ui/
|
|
244
|
-
@brijbyte/agentic-ui/dialog.css @brijbyte/agentic-ui/
|
|
245
|
-
@brijbyte/agentic-ui/drawer.css @brijbyte/agentic-ui/
|
|
246
|
-
@brijbyte/agentic-ui/input.css
|
|
245
|
+
@brijbyte/agentic-ui/alert-dialog.css @brijbyte/agentic-ui/meter.css
|
|
246
|
+
@brijbyte/agentic-ui/badge.css @brijbyte/agentic-ui/number-field.css
|
|
247
|
+
@brijbyte/agentic-ui/button.css @brijbyte/agentic-ui/popover.css
|
|
248
|
+
@brijbyte/agentic-ui/card.css @brijbyte/agentic-ui/progress.css
|
|
249
|
+
@brijbyte/agentic-ui/checkbox.css @brijbyte/agentic-ui/radio.css
|
|
250
|
+
@brijbyte/agentic-ui/collapsible.css @brijbyte/agentic-ui/radio-group.css
|
|
251
|
+
@brijbyte/agentic-ui/context-menu.css @brijbyte/agentic-ui/select.css
|
|
252
|
+
@brijbyte/agentic-ui/dialog.css @brijbyte/agentic-ui/separator.css
|
|
253
|
+
@brijbyte/agentic-ui/drawer.css @brijbyte/agentic-ui/slider.css
|
|
254
|
+
@brijbyte/agentic-ui/input.css @brijbyte/agentic-ui/switch.css
|
|
255
|
+
@brijbyte/agentic-ui/menu.css @brijbyte/agentic-ui/tabs.css
|
|
256
|
+
@brijbyte/agentic-ui/toast.css
|
|
257
|
+
@brijbyte/agentic-ui/tooltip.css
|
|
247
258
|
```
|
|
248
259
|
|
|
249
260
|
---
|
|
@@ -280,7 +291,11 @@ import { Button, Dialog, Input } from "@brijbyte/agentic-ui";
|
|
|
280
291
|
| `/input` | `Input` | — |
|
|
281
292
|
| `/menu` | `Menu` | `MenuPositioner`, `MenuPopup`, `MenuItem`, `MenuSeparator`, `MenuGroupLabel`, `MenuArrow`, `MenuItemShortcut` |
|
|
282
293
|
| `/number-field` | `NumberField` | `NumberFieldGroup`, `NumberFieldInput`, `NumberFieldDecrement`, `NumberFieldIncrement`, `NumberFieldScrubArea`, `NumberFieldScrubAreaCursor` |
|
|
294
|
+
| `/meter` | `Meter`, `CircularMeter` | `MeterTrack`, `MeterIndicator`, `MeterLabel`, `MeterValue` |
|
|
295
|
+
| `/popover` | `Popover` | `PopoverPositioner`, `PopoverPopup`, `PopoverTitle`, `PopoverDescription`, `PopoverClose`, `PopoverArrow`, `PopoverViewport` |
|
|
283
296
|
| `/progress` | `Progress` | `ProgressTrack`, `ProgressIndicator` |
|
|
297
|
+
| `/radio` | `Radio` | `RadioRoot`, `RadioIndicator` |
|
|
298
|
+
| `/radio-group` | `RadioGroup` | `RadioGroupRoot` |
|
|
284
299
|
| `/select` | `Select` | `SelectTrigger`, `SelectValue`, `SelectPositioner`, `SelectPopup`, `SelectList`, `SelectItem`, `SelectItemText`, `SelectItemIndicator`, `SelectGroupContainer`, `SelectGroupLabel`, `SelectSeparator` |
|
|
285
300
|
| `/separator` | `Separator` | — |
|
|
286
301
|
| `/slider` | `Slider` | `SliderControl`, `SliderTrack`, `SliderIndicator`, `SliderThumb`, `SliderLabel`, `SliderValue` |
|
|
@@ -413,6 +428,8 @@ import { Button } from "@brijbyte/agentic-ui/button";
|
|
|
413
428
|
| `success` | Confirm / complete action |
|
|
414
429
|
| `warning` | Caution required |
|
|
415
430
|
|
|
431
|
+
All tone/variant combinations meet WCAG AA contrast (4.5:1 for text, 3:1 for borders). Each tone exposes two colour roles internally — a solid fill colour (`--btn-color`) and a separate text colour (`--btn-text-color`) optimised for legibility on tinted surfaces — so `soft`, `outline`, and `ghost` variants are always readable regardless of mode.
|
|
432
|
+
|
|
416
433
|
**`loading`** disables the button and shows a centred spinner. The button width stays stable — children are hidden with `visibility: hidden` so they still contribute to layout.
|
|
417
434
|
|
|
418
435
|
**`loadingText`** overrides the stable-width behaviour. When set, children swap to this text during loading (no spinner). Use when the loading state needs to communicate progress via text.
|
|
@@ -431,6 +448,27 @@ import { Badge } from "@brijbyte/agentic-ui/badge";
|
|
|
431
448
|
|
|
432
449
|
`dot` shows a small coloured dot before the label text.
|
|
433
450
|
|
|
451
|
+
### Card
|
|
452
|
+
|
|
453
|
+
```tsx
|
|
454
|
+
import { Card, CardHeader, CardBody, CardFooter } from "@brijbyte/agentic-ui/card";
|
|
455
|
+
|
|
456
|
+
<Card>
|
|
457
|
+
<CardHeader heading="API Key" description="Used for authentication" />
|
|
458
|
+
<CardBody>sk-1234…</CardBody>
|
|
459
|
+
<CardFooter>
|
|
460
|
+
<Button variant="ghost" size="sm">Revoke</Button>
|
|
461
|
+
<Button size="sm">Copy</Button>
|
|
462
|
+
</CardFooter>
|
|
463
|
+
</Card>
|
|
464
|
+
|
|
465
|
+
<Card elevated interactive onClick={() => {}}>
|
|
466
|
+
<CardBody>Clickable elevated card</CardBody>
|
|
467
|
+
</Card>
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
**`elevated`** adds a raised shadow for layered surfaces. **`interactive`** adds hover/active states for clickable cards. `CardHeader` accepts `heading` and `description` props. All sub-components are plain `<div>` wrappers — no base-ui dependency.
|
|
471
|
+
|
|
434
472
|
### Input
|
|
435
473
|
|
|
436
474
|
```tsx
|
|
@@ -597,6 +635,97 @@ import { Collapsible } from "@brijbyte/agentic-ui/collapsible";
|
|
|
597
635
|
|
|
598
636
|
When open, the trigger's bottom corners square off and connect flush with the content panel. When closing, the corners only round back after the panel has fully collapsed — no visible seam at any point during the animation.
|
|
599
637
|
|
|
638
|
+
### Popover
|
|
639
|
+
|
|
640
|
+
```tsx
|
|
641
|
+
import { Popover } from "@brijbyte/agentic-ui/popover";
|
|
642
|
+
|
|
643
|
+
// side: top | bottom (default) | left | right
|
|
644
|
+
// align: start | center (default) | end
|
|
645
|
+
<Popover
|
|
646
|
+
trigger={<Button variant="outline" size="sm">Details</Button>}
|
|
647
|
+
title="Deployment info"
|
|
648
|
+
description="Last deployed 3 minutes ago from main."
|
|
649
|
+
side="bottom"
|
|
650
|
+
align="start"
|
|
651
|
+
/>
|
|
652
|
+
|
|
653
|
+
// With body content and a close button
|
|
654
|
+
<Popover
|
|
655
|
+
trigger={<Button>Settings</Button>}
|
|
656
|
+
title="API Settings"
|
|
657
|
+
dismissible
|
|
658
|
+
>
|
|
659
|
+
<Input placeholder="API key" style={{ marginTop: "var(--space-3)" }} />
|
|
660
|
+
</Popover>
|
|
661
|
+
```
|
|
662
|
+
|
|
663
|
+
**`trigger`** is rendered as-is and receives the open/close handler from base-ui.
|
|
664
|
+
|
|
665
|
+
**`dismissible`** renders a close (×) button in the top-right corner. Omit it for simple informational popovers that dismiss on outside click.
|
|
666
|
+
|
|
667
|
+
**`side`** / **`align`** control positioning. The popup auto-repositions to avoid viewport overflow — it will flip sides when there isn't enough space.
|
|
668
|
+
|
|
669
|
+
#### Shared trigger (one popover, many triggers)
|
|
670
|
+
|
|
671
|
+
Use `Popover.createHandle` from base-ui to connect multiple triggers to a single popup instance. Each trigger passes its own `payload`; the Root receives it via a render-function child. Switching triggers while the popup is open animates the content transition with `PopoverViewport`:
|
|
672
|
+
|
|
673
|
+
```tsx
|
|
674
|
+
import { Popover as BasePopover } from "@base-ui/react/popover";
|
|
675
|
+
import { PopoverPopup, PopoverTitle, PopoverDescription, PopoverArrow, PopoverViewport } from "@brijbyte/agentic-ui/popover";
|
|
676
|
+
|
|
677
|
+
interface Item {
|
|
678
|
+
id: string;
|
|
679
|
+
name: string;
|
|
680
|
+
detail: string;
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
// Create once outside the component — typed with the payload shape
|
|
684
|
+
const handle = BasePopover.createHandle<Item>();
|
|
685
|
+
|
|
686
|
+
function MyList({ items }: { items: Item[] }) {
|
|
687
|
+
return (
|
|
688
|
+
<>
|
|
689
|
+
{/* Single Root — content driven by whichever trigger is active */}
|
|
690
|
+
<BasePopover.Root handle={handle}>
|
|
691
|
+
{({ payload }) =>
|
|
692
|
+
payload ? (
|
|
693
|
+
<BasePopover.Portal>
|
|
694
|
+
<BasePopover.Positioner side="right" sideOffset={8}>
|
|
695
|
+
<PopoverPopup>
|
|
696
|
+
<PopoverArrow />
|
|
697
|
+
{/* Viewport animates between triggers */}
|
|
698
|
+
<PopoverViewport>
|
|
699
|
+
<PopoverTitle>{payload.name}</PopoverTitle>
|
|
700
|
+
<PopoverDescription>{payload.detail}</PopoverDescription>
|
|
701
|
+
</PopoverViewport>
|
|
702
|
+
</PopoverPopup>
|
|
703
|
+
</BasePopover.Positioner>
|
|
704
|
+
</BasePopover.Portal>
|
|
705
|
+
) : null
|
|
706
|
+
}
|
|
707
|
+
</BasePopover.Root>
|
|
708
|
+
|
|
709
|
+
{/* Each trigger passes its item as the payload */}
|
|
710
|
+
{items.map((item) => (
|
|
711
|
+
<BasePopover.Trigger
|
|
712
|
+
key={item.id}
|
|
713
|
+
handle={handle}
|
|
714
|
+
payload={item}
|
|
715
|
+
render={
|
|
716
|
+
<Button variant="ghost" size="xs">
|
|
717
|
+
Info
|
|
718
|
+
</Button>
|
|
719
|
+
}
|
|
720
|
+
/>
|
|
721
|
+
))}
|
|
722
|
+
</>
|
|
723
|
+
);
|
|
724
|
+
}
|
|
725
|
+
```
|
|
726
|
+
|
|
727
|
+
`PopoverViewport` detects the direction between the old and new trigger and slides content in/out accordingly — down when moving to a lower trigger, up when moving higher, left/right for horizontal layouts.
|
|
728
|
+
|
|
600
729
|
### Menu
|
|
601
730
|
|
|
602
731
|
```tsx
|
|
@@ -622,6 +751,83 @@ const items: MenuEntry[] = [
|
|
|
622
751
|
|
|
623
752
|
Supports `type: "group"` entries with an optional `label` for grouped sections. The popup uses backdrop blur and highlights use inset rounded corners — matching native context menu aesthetics.
|
|
624
753
|
|
|
754
|
+
### Meter
|
|
755
|
+
|
|
756
|
+
```tsx
|
|
757
|
+
import { Meter, CircularMeter } from "@brijbyte/agentic-ui/meter";
|
|
758
|
+
|
|
759
|
+
// Linear — size: sm | md (default) | lg
|
|
760
|
+
<Meter value={68} label="Memory" showValue />
|
|
761
|
+
|
|
762
|
+
// With thresholds — optimum: "high" (default) | "low" | "mid"
|
|
763
|
+
// optimum="high" → high=green, mid=amber, low=red (battery, signal strength)
|
|
764
|
+
// optimum="low" → low=green, mid=amber, high=red (CPU load, disk usage)
|
|
765
|
+
// optimum="mid" → mid=green, extremes=amber (temperature)
|
|
766
|
+
<Meter value={82} low={20} high={60} optimum="high" label="Battery" showValue showTicks />
|
|
767
|
+
|
|
768
|
+
// Intl formatting
|
|
769
|
+
<Meter value={0.72} min={0} max={1} format={{ style: "percent" }} label="Disk" showValue />
|
|
770
|
+
|
|
771
|
+
// Circular gauge
|
|
772
|
+
<CircularMeter value={68} label="CPU" showValue />
|
|
773
|
+
<CircularMeter value={12} low={20} high={60} optimum="high" label="Battery" showValue size="lg" />
|
|
774
|
+
```
|
|
775
|
+
|
|
776
|
+
**`low`** / **`high`** / **`optimum`** implement the HTML `<meter>` spec colouring algorithm — the fill turns green, amber, or red based on which zone the value is in and which zone is declared optimal.
|
|
777
|
+
|
|
778
|
+
**`showTicks`** renders 1px dividers inside the track at the `low` and `high` threshold positions (linear only).
|
|
779
|
+
|
|
780
|
+
**`format`** is passed directly to `Intl.NumberFormat` via base-ui — use it for `percent`, `currency`, or any locale-aware format.
|
|
781
|
+
|
|
782
|
+
`CircularMeter` accepts the same props as `Meter` (except `showTicks`) and renders an SVG ring gauge. Import from the same path: `@brijbyte/agentic-ui/meter`.
|
|
783
|
+
|
|
784
|
+
### Radio + RadioGroup
|
|
785
|
+
|
|
786
|
+
```tsx
|
|
787
|
+
import { Radio, RadioRoot, RadioIndicator } from "@brijbyte/agentic-ui/radio";
|
|
788
|
+
import { RadioGroup, RadioGroupRoot } from "@brijbyte/agentic-ui/radio-group";
|
|
789
|
+
|
|
790
|
+
// High-level group with options array
|
|
791
|
+
<RadioGroup
|
|
792
|
+
label="Deployment target"
|
|
793
|
+
defaultValue="production"
|
|
794
|
+
options={[
|
|
795
|
+
{ value: "production", label: "Production" },
|
|
796
|
+
{ value: "staging", label: "Staging" },
|
|
797
|
+
{ value: "local", label: "Local", disabled: true },
|
|
798
|
+
]}
|
|
799
|
+
/>
|
|
800
|
+
|
|
801
|
+
// Controlled
|
|
802
|
+
<RadioGroup
|
|
803
|
+
value={target}
|
|
804
|
+
onValueChange={(v) => setTarget(v)}
|
|
805
|
+
options={options}
|
|
806
|
+
/>
|
|
807
|
+
|
|
808
|
+
// Composed — RadioGroupRoot + individual Radio items
|
|
809
|
+
<RadioGroupRoot defaultValue="pro" name="plan">
|
|
810
|
+
<Radio value="hobby">Hobby</Radio>
|
|
811
|
+
<Radio value="pro">Pro</Radio>
|
|
812
|
+
<Radio value="enterprise">Enterprise</Radio>
|
|
813
|
+
</RadioGroupRoot>
|
|
814
|
+
|
|
815
|
+
// Fully composed — raw base-ui RadioGroup + styled parts
|
|
816
|
+
<RadioGroup defaultValue="ssd" aria-label="Storage">
|
|
817
|
+
<label>
|
|
818
|
+
<RadioRoot value="ssd"><RadioIndicator /></RadioRoot>
|
|
819
|
+
SSD
|
|
820
|
+
</label>
|
|
821
|
+
</RadioGroup>
|
|
822
|
+
```
|
|
823
|
+
|
|
824
|
+
`Radio` and `RadioGroup` follow the same import split as base-ui — `Radio` is the single item, `RadioGroup` is the group context. Both CSS files must be imported when using both:
|
|
825
|
+
|
|
826
|
+
```tsx
|
|
827
|
+
import "@brijbyte/agentic-ui/radio.css"; // item styles
|
|
828
|
+
import "@brijbyte/agentic-ui/radio-group.css"; // group layout styles
|
|
829
|
+
```
|
|
830
|
+
|
|
625
831
|
### NumberField
|
|
626
832
|
|
|
627
833
|
```tsx
|
|
@@ -642,6 +848,27 @@ import { Separator } from "@brijbyte/agentic-ui/separator";
|
|
|
642
848
|
<Separator orientation="vertical" style={{ height: "1rem" }} />
|
|
643
849
|
```
|
|
644
850
|
|
|
851
|
+
### Slider
|
|
852
|
+
|
|
853
|
+
```tsx
|
|
854
|
+
import { Slider } from "@brijbyte/agentic-ui/slider";
|
|
855
|
+
|
|
856
|
+
// Single thumb with label and value display
|
|
857
|
+
<Slider label="Volume" defaultValue={50} showValue />
|
|
858
|
+
|
|
859
|
+
// Range slider — pass an array for two thumbs
|
|
860
|
+
<Slider label="Price range" defaultValue={[20, 80]} showValue />
|
|
861
|
+
|
|
862
|
+
// Steps with Intl formatting
|
|
863
|
+
<Slider label="Opacity" defaultValue={100} min={0} max={100} step={10}
|
|
864
|
+
format={{ style: "percent", maximumFractionDigits: 0 }} showValue />
|
|
865
|
+
|
|
866
|
+
// Disabled
|
|
867
|
+
<Slider label="Locked" defaultValue={42} disabled />
|
|
868
|
+
```
|
|
869
|
+
|
|
870
|
+
**`defaultValue`** accepts a single number or an array of two numbers for a range slider. **`step`** controls the increment; **`largeStep`** (default 10) is used for Page Up/Down. **`format`** passes `Intl.NumberFormatOptions` to the value display. **`onValueChange`** fires on every drag; **`onValueCommitted`** fires once when the user releases.
|
|
871
|
+
|
|
645
872
|
### Progress
|
|
646
873
|
|
|
647
874
|
```tsx
|
|
@@ -726,15 +953,15 @@ import { ContextMenu } from "@brijbyte/agentic-ui/context-menu";
|
|
|
726
953
|
|
|
727
954
|
<ContextMenu
|
|
728
955
|
items={[
|
|
729
|
-
{ label: "Cut",
|
|
730
|
-
{ label: "Copy",
|
|
956
|
+
{ label: "Cut", shortcut: "⌘X" },
|
|
957
|
+
{ label: "Copy", shortcut: "⌘C" },
|
|
731
958
|
{ label: "Paste", shortcut: "⌘V", disabled: true },
|
|
732
959
|
{ type: "separator" },
|
|
733
960
|
{ label: "Select All", shortcut: "⌘A" },
|
|
734
961
|
]}
|
|
735
962
|
>
|
|
736
963
|
<div>Right click me</div>
|
|
737
|
-
</ContextMenu
|
|
964
|
+
</ContextMenu>;
|
|
738
965
|
```
|
|
739
966
|
|
|
740
967
|
Activated by right-click or long press on the child element. Supports `items` with `label`, `shortcut`, `icon`, `onSelect`, and `disabled`. Use `type: "separator"` for dividers and `type: "group"` with nested `items` for logical sections.
|
|
@@ -755,7 +982,7 @@ import { ContextMenuPopup, ContextMenuItem, ContextMenuSubmenuTrigger } from "@b
|
|
|
755
982
|
</ContextMenuPopup>
|
|
756
983
|
</BaseContextMenu.Positioner>
|
|
757
984
|
</BaseContextMenu.Portal>
|
|
758
|
-
</BaseContextMenu.SubmenuRoot
|
|
985
|
+
</BaseContextMenu.SubmenuRoot>;
|
|
759
986
|
```
|
|
760
987
|
|
|
761
988
|
---
|
|
@@ -783,7 +1010,7 @@ dist/
|
|
|
783
1010
|
button/index.js ← Per-component ESM (no CSS imports)
|
|
784
1011
|
button/index.d.ts
|
|
785
1012
|
button/button.css ← Per-component plain CSS
|
|
786
|
-
… ← All
|
|
1013
|
+
… ← All 23 components follow the same pattern
|
|
787
1014
|
```
|
|
788
1015
|
|
|
789
1016
|
### Why no CSS in JS?
|
|
@@ -4,19 +4,33 @@ import styles from "./accordion.module.css";
|
|
|
4
4
|
|
|
5
5
|
//#region src/accordion/accordion.d.ts
|
|
6
6
|
interface AccordionItem {
|
|
7
|
+
/** Unique identifier for this panel. */
|
|
7
8
|
value: string;
|
|
9
|
+
/** Content rendered inside the trigger button. */
|
|
8
10
|
header: ReactNode;
|
|
11
|
+
/** Content revealed when the panel is expanded. */
|
|
9
12
|
content: ReactNode;
|
|
13
|
+
/** When `true`, the item cannot be toggled. */
|
|
10
14
|
disabled?: boolean;
|
|
11
15
|
}
|
|
12
16
|
interface AccordionProps {
|
|
17
|
+
/** Array of items to render as collapsible panels. */
|
|
13
18
|
items: AccordionItem[];
|
|
19
|
+
/** Allow multiple panels open at once. @default true */
|
|
14
20
|
multiple?: boolean;
|
|
21
|
+
/** Initially expanded panel values (uncontrolled). */
|
|
15
22
|
defaultValue?: string[];
|
|
23
|
+
/** Currently expanded panel values (controlled). */
|
|
16
24
|
value?: string[];
|
|
25
|
+
/** Called when the set of open panels changes. */
|
|
17
26
|
onValueChange?: (value: string[]) => void;
|
|
18
27
|
className?: string;
|
|
19
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Collapsible content panels. Wraps `@base-ui/react` Accordion with pre-styled
|
|
31
|
+
* headers, triggers, and animated panels. Pass `multiple` to allow more than one
|
|
32
|
+
* panel open at a time.
|
|
33
|
+
*/
|
|
20
34
|
declare function Accordion({
|
|
21
35
|
items,
|
|
22
36
|
className,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.d.ts","names":[],"sources":["../../src/accordion/accordion.tsx"],"mappings":";;;;;UAIiB,aAAA
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","names":[],"sources":["../../src/accordion/accordion.tsx"],"mappings":";;;;;UAIiB,aAAA;;EAEf,KAAA;EAFe;EAIf,MAAA,EAAQ,SAAA;;EAER,OAAA,EAAS,SAAA;EAJT;EAMA,QAAA;AAAA;AAAA,UAGe,cAAA;EALN;EAOT,KAAA,EAAO,aAAA;EALC;EAOR,QAAA;EAJe;EAMf,YAAA;;EAEA,KAAA;EANA;EAQA,aAAA,IAAiB,KAAA;EACjB,SAAA;AAAA;;;;;;iBAgBc,SAAA,CAAA;EAAY,KAAA;EAAO,SAAA;EAAW,QAAA;EAAA,GAAoB;AAAA,GAAS,cAAA,GAAc,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -17,6 +17,11 @@ function ChevronIcon() {
|
|
|
17
17
|
})
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Collapsible content panels. Wraps `@base-ui/react` Accordion with pre-styled
|
|
22
|
+
* headers, triggers, and animated panels. Pass `multiple` to allow more than one
|
|
23
|
+
* panel open at a time.
|
|
24
|
+
*/
|
|
20
25
|
function Accordion$1({ items, className, multiple = true, ...props }) {
|
|
21
26
|
return /* @__PURE__ */ jsx(Accordion.Root, {
|
|
22
27
|
className: `${accordion_module_default.root} ${className ?? ""}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.js","names":["Accordion","BaseAccordion","styles"],"sources":["../../src/accordion/accordion.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Accordion as BaseAccordion } from \"@base-ui/react/accordion\";\nimport styles from \"./accordion.module.css\";\n\nexport interface AccordionItem {\n value: string;\n header: ReactNode;\n content: ReactNode;\n disabled?: boolean;\n}\n\nexport interface AccordionProps {\n items: AccordionItem[];\n multiple?: boolean;\n defaultValue?: string[];\n value?: string[];\n onValueChange?: (value: string[]) => void;\n className?: string;\n}\n\nfunction ChevronIcon() {\n return (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M2.5 4.5L6 8L9.5 4.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\nexport function Accordion({ items, className, multiple = true, ...props }: AccordionProps) {\n return (\n <BaseAccordion.Root className={`${styles.root} ${className ?? \"\"}`} multiple={multiple} {...props}>\n {items.map((item) => (\n <BaseAccordion.Item key={item.value} value={item.value} className={styles.item} disabled={item.disabled ?? false}>\n <BaseAccordion.Header className={styles.header}>\n <BaseAccordion.Trigger className={styles.trigger}>\n {item.header}\n <span className={styles[\"trigger-icon\"]}>\n <ChevronIcon />\n </span>\n </BaseAccordion.Trigger>\n </BaseAccordion.Header>\n <BaseAccordion.Panel className={styles.panel}>\n <div className={styles[\"panel-content\"]}>{item.content}</div>\n </BaseAccordion.Panel>\n </BaseAccordion.Item>\n ))}\n </BaseAccordion.Root>\n );\n}\nexport { styles as AccordionStyles };\n"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"accordion.js","names":["Accordion","BaseAccordion","styles"],"sources":["../../src/accordion/accordion.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Accordion as BaseAccordion } from \"@base-ui/react/accordion\";\nimport styles from \"./accordion.module.css\";\n\nexport interface AccordionItem {\n /** Unique identifier for this panel. */\n value: string;\n /** Content rendered inside the trigger button. */\n header: ReactNode;\n /** Content revealed when the panel is expanded. */\n content: ReactNode;\n /** When `true`, the item cannot be toggled. */\n disabled?: boolean;\n}\n\nexport interface AccordionProps {\n /** Array of items to render as collapsible panels. */\n items: AccordionItem[];\n /** Allow multiple panels open at once. @default true */\n multiple?: boolean;\n /** Initially expanded panel values (uncontrolled). */\n defaultValue?: string[];\n /** Currently expanded panel values (controlled). */\n value?: string[];\n /** Called when the set of open panels changes. */\n onValueChange?: (value: string[]) => void;\n className?: string;\n}\n\nfunction ChevronIcon() {\n return (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M2.5 4.5L6 8L9.5 4.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\n/**\n * Collapsible content panels. Wraps `@base-ui/react` Accordion with pre-styled\n * headers, triggers, and animated panels. Pass `multiple` to allow more than one\n * panel open at a time.\n */\nexport function Accordion({ items, className, multiple = true, ...props }: AccordionProps) {\n return (\n <BaseAccordion.Root className={`${styles.root} ${className ?? \"\"}`} multiple={multiple} {...props}>\n {items.map((item) => (\n <BaseAccordion.Item key={item.value} value={item.value} className={styles.item} disabled={item.disabled ?? false}>\n <BaseAccordion.Header className={styles.header}>\n <BaseAccordion.Trigger className={styles.trigger}>\n {item.header}\n <span className={styles[\"trigger-icon\"]}>\n <ChevronIcon />\n </span>\n </BaseAccordion.Trigger>\n </BaseAccordion.Header>\n <BaseAccordion.Panel className={styles.panel}>\n <div className={styles[\"panel-content\"]}>{item.content}</div>\n </BaseAccordion.Panel>\n </BaseAccordion.Item>\n ))}\n </BaseAccordion.Root>\n );\n}\nexport { styles as AccordionStyles };\n"],"mappings":";;;;AA6BA,SAAS,cAAc;AACrB,QACE,oBAAC,OAAD;EAAK,OAAM;EAAK,QAAO;EAAK,SAAQ;EAAY,MAAK;YACnD,oBAAC,QAAD;GAAM,GAAE;GAAuB,QAAO;GAAe,aAAY;GAAM,eAAc;GAAQ,gBAAe;GAAU,CAAA;EAClH,CAAA;;;;;;;AASV,SAAgBA,YAAU,EAAE,OAAO,WAAW,WAAW,MAAM,GAAG,SAAyB;AACzF,QACE,oBAACC,UAAc,MAAf;EAAoB,WAAW,GAAGC,yBAAO,KAAK,GAAG,aAAa;EAAgB;EAAU,GAAI;YACzF,MAAM,KAAK,SACV,qBAACD,UAAc,MAAf;GAAqC,OAAO,KAAK;GAAO,WAAWC,yBAAO;GAAM,UAAU,KAAK,YAAY;aAA3G,CACE,oBAACD,UAAc,QAAf;IAAsB,WAAWC,yBAAO;cACtC,qBAACD,UAAc,SAAf;KAAuB,WAAWC,yBAAO;eAAzC,CACG,KAAK,QACN,oBAAC,QAAD;MAAM,WAAWA,yBAAO;gBACtB,oBAAC,aAAD,EAAe,CAAA;MACV,CAAA,CACe;;IACH,CAAA,EACvB,oBAACD,UAAc,OAAf;IAAqB,WAAWC,yBAAO;cACrC,oBAAC,OAAD;KAAK,WAAWA,yBAAO;eAAmB,KAAK;KAAc,CAAA;IACzC,CAAA,CACH;KAZI,KAAK,MAYT,CACrB;EACiB,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Accordion, AccordionItem, AccordionProps, styles } from "./accordion.js";
|
|
2
|
-
import { AccordionHeader, AccordionHeaderProps,
|
|
3
|
-
export { Accordion, AccordionHeader, type AccordionHeaderProps, type AccordionItem,
|
|
2
|
+
import { AccordionHeader, AccordionHeaderProps, AccordionItemPart, AccordionItemProps, AccordionPanel, AccordionPanelProps, AccordionTrigger, AccordionTriggerProps } from "./parts.js";
|
|
3
|
+
export { Accordion, AccordionHeader, type AccordionHeaderProps, type AccordionItem, AccordionItemPart, type AccordionItemProps, AccordionPanel, type AccordionPanelProps, type AccordionProps, styles as AccordionStyles, AccordionTrigger, type AccordionTriggerProps };
|
package/dist/accordion/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import accordion_module_default from "./accordion.module.js";
|
|
2
2
|
import { Accordion } from "./accordion.js";
|
|
3
|
-
import { AccordionHeader,
|
|
4
|
-
export { Accordion, AccordionHeader,
|
|
3
|
+
import { AccordionHeader, AccordionItemPart, AccordionPanel, AccordionTrigger } from "./parts.js";
|
|
4
|
+
export { Accordion, AccordionHeader, AccordionItemPart, AccordionPanel, accordion_module_default as AccordionStyles, AccordionTrigger };
|
|
@@ -7,22 +7,14 @@ type BaseItemProps = ComponentPropsWithoutRef<typeof Accordion.Item>;
|
|
|
7
7
|
type BaseHeaderProps = ComponentPropsWithoutRef<typeof Accordion.Header>;
|
|
8
8
|
type BaseTriggerProps = ComponentPropsWithoutRef<typeof Accordion.Trigger>;
|
|
9
9
|
type BasePanelProps = ComponentPropsWithoutRef<typeof Accordion.Panel>;
|
|
10
|
-
interface AccordionItemProps extends
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
interface
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
interface AccordionTriggerProps extends Omit<BaseTriggerProps, "className"> {
|
|
17
|
-
className?: string;
|
|
18
|
-
}
|
|
19
|
-
interface AccordionPanelProps extends Omit<BasePanelProps, "className"> {
|
|
20
|
-
className?: string;
|
|
21
|
-
}
|
|
22
|
-
declare const AccordionItem: react.ForwardRefExoticComponent<AccordionItemProps & react.RefAttributes<HTMLDivElement>>;
|
|
10
|
+
interface AccordionItemProps extends BaseItemProps {}
|
|
11
|
+
interface AccordionHeaderProps extends BaseHeaderProps {}
|
|
12
|
+
interface AccordionTriggerProps extends BaseTriggerProps {}
|
|
13
|
+
interface AccordionPanelProps extends BasePanelProps {}
|
|
14
|
+
declare const AccordionItemPart: react.ForwardRefExoticComponent<AccordionItemProps & react.RefAttributes<HTMLDivElement>>;
|
|
23
15
|
declare const AccordionHeader: react.ForwardRefExoticComponent<AccordionHeaderProps & react.RefAttributes<HTMLHeadingElement>>;
|
|
24
16
|
declare const AccordionTrigger: react.ForwardRefExoticComponent<AccordionTriggerProps & react.RefAttributes<HTMLElement>>;
|
|
25
17
|
declare const AccordionPanel: react.ForwardRefExoticComponent<AccordionPanelProps & react.RefAttributes<HTMLDivElement>>;
|
|
26
18
|
//#endregion
|
|
27
|
-
export { AccordionHeader, AccordionHeaderProps,
|
|
19
|
+
export { AccordionHeader, AccordionHeaderProps, AccordionItemPart, AccordionItemProps, AccordionPanel, AccordionPanelProps, AccordionTrigger, AccordionTriggerProps };
|
|
28
20
|
//# sourceMappingURL=parts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parts.d.ts","names":[],"sources":["../../src/accordion/parts.tsx"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"parts.d.ts","names":[],"sources":["../../src/accordion/parts.tsx"],"mappings":";;;;;KAwBK,aAAA,GAAgB,wBAAA,QAAgC,SAAA,CAAc,IAAA;AAAA,KAC9D,eAAA,GAAkB,wBAAA,QAAgC,SAAA,CAAc,MAAA;AAAA,KAChE,gBAAA,GAAmB,wBAAA,QAAgC,SAAA,CAAc,OAAA;AAAA,KACjE,cAAA,GAAiB,wBAAA,QAAgC,SAAA,CAAc,KAAA;AAAA,UAEnD,kBAAA,SAA2B,aAAA;AAAA,UAC3B,oBAAA,SAA6B,eAAA;AAAA,UAC7B,qBAAA,SAA8B,gBAAA;AAAA,UAC9B,mBAAA,SAA4B,cAAA;AAAA,cAEhC,iBAAA,EAAiB,KAAA,CAAA,yBAAA,CAAA,kBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAOjB,eAAA,EAAe,KAAA,CAAA,yBAAA,CAAA,oBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,kBAAA;AAAA,cAOf,gBAAA,EAAgB,KAAA,CAAA,yBAAA,CAAA,qBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,WAAA;AAAA,cAOhB,cAAA,EAAc,KAAA,CAAA,yBAAA,CAAA,mBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA"}
|
package/dist/accordion/parts.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import accordion_module_default from "./accordion.module.js";
|
|
2
|
+
import { cx, resolveClassName } from "../utils/resolveClassName.js";
|
|
2
3
|
import { Accordion } from "@base-ui/react/accordion";
|
|
3
4
|
import { jsx } from "react/jsx-runtime";
|
|
4
5
|
import { forwardRef } from "react";
|
|
@@ -21,35 +22,35 @@ import { forwardRef } from "react";
|
|
|
21
22
|
* </Accordion.Root>
|
|
22
23
|
* ```
|
|
23
24
|
*/
|
|
24
|
-
const
|
|
25
|
+
const AccordionItemPart = forwardRef(function AccordionItemPart({ className, ...props }, ref) {
|
|
25
26
|
return /* @__PURE__ */ jsx(Accordion.Item, {
|
|
26
27
|
ref,
|
|
27
|
-
className:
|
|
28
|
+
className: (state) => cx(accordion_module_default.item, resolveClassName(className, state)),
|
|
28
29
|
...props
|
|
29
30
|
});
|
|
30
31
|
});
|
|
31
32
|
const AccordionHeader = forwardRef(function AccordionHeader({ className, ...props }, ref) {
|
|
32
33
|
return /* @__PURE__ */ jsx(Accordion.Header, {
|
|
33
34
|
ref,
|
|
34
|
-
className:
|
|
35
|
+
className: (state) => cx(accordion_module_default.header, resolveClassName(className, state)),
|
|
35
36
|
...props
|
|
36
37
|
});
|
|
37
38
|
});
|
|
38
39
|
const AccordionTrigger = forwardRef(function AccordionTrigger({ className, ...props }, ref) {
|
|
39
40
|
return /* @__PURE__ */ jsx(Accordion.Trigger, {
|
|
40
41
|
ref,
|
|
41
|
-
className:
|
|
42
|
+
className: (state) => cx(accordion_module_default.trigger, resolveClassName(className, state)),
|
|
42
43
|
...props
|
|
43
44
|
});
|
|
44
45
|
});
|
|
45
46
|
const AccordionPanel = forwardRef(function AccordionPanel({ className, ...props }, ref) {
|
|
46
47
|
return /* @__PURE__ */ jsx(Accordion.Panel, {
|
|
47
48
|
ref,
|
|
48
|
-
className:
|
|
49
|
+
className: (state) => cx(accordion_module_default.panel, resolveClassName(className, state)),
|
|
49
50
|
...props
|
|
50
51
|
});
|
|
51
52
|
});
|
|
52
53
|
//#endregion
|
|
53
|
-
export { AccordionHeader,
|
|
54
|
+
export { AccordionHeader, AccordionItemPart, AccordionPanel, AccordionTrigger };
|
|
54
55
|
|
|
55
56
|
//# sourceMappingURL=parts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parts.js","names":["BaseAccordion","styles"],"sources":["../../src/accordion/parts.tsx"],"sourcesContent":["/**\n * Styled primitives for Accordion.\n *\n * @example\n * ```tsx\n * import { Accordion } from '@base-ui/react/accordion';\n * import { AccordionItem, AccordionHeader, AccordionTrigger, AccordionPanel } from '@brijbyte/agentic-ui/accordion';\n *\n * <Accordion.Root defaultValue={['a']}>\n * <AccordionItem value=\"a\">\n * <AccordionHeader>\n * <AccordionTrigger>Section A</AccordionTrigger>\n * </AccordionHeader>\n * <AccordionPanel>Content A</AccordionPanel>\n * </AccordionItem>\n * </Accordion.Root>\n * ```\n */\nimport { forwardRef } from \"react\";\nimport type { ComponentRef, ComponentPropsWithoutRef } from \"react\";\nimport { Accordion as BaseAccordion } from \"@base-ui/react/accordion\";\nimport styles from \"./accordion.module.css\";\n\ntype BaseItemProps = ComponentPropsWithoutRef<typeof BaseAccordion.Item>;\ntype BaseHeaderProps = ComponentPropsWithoutRef<typeof BaseAccordion.Header>;\ntype BaseTriggerProps = ComponentPropsWithoutRef<typeof BaseAccordion.Trigger>;\ntype BasePanelProps = ComponentPropsWithoutRef<typeof BaseAccordion.Panel>;\n\nexport interface AccordionItemProps extends
|
|
1
|
+
{"version":3,"file":"parts.js","names":["BaseAccordion","styles"],"sources":["../../src/accordion/parts.tsx"],"sourcesContent":["/**\n * Styled primitives for Accordion.\n *\n * @example\n * ```tsx\n * import { Accordion } from '@base-ui/react/accordion';\n * import { AccordionItem, AccordionHeader, AccordionTrigger, AccordionPanel } from '@brijbyte/agentic-ui/accordion';\n *\n * <Accordion.Root defaultValue={['a']}>\n * <AccordionItem value=\"a\">\n * <AccordionHeader>\n * <AccordionTrigger>Section A</AccordionTrigger>\n * </AccordionHeader>\n * <AccordionPanel>Content A</AccordionPanel>\n * </AccordionItem>\n * </Accordion.Root>\n * ```\n */\nimport { forwardRef } from \"react\";\nimport type { ComponentRef, ComponentPropsWithoutRef } from \"react\";\nimport { Accordion as BaseAccordion } from \"@base-ui/react/accordion\";\nimport styles from \"./accordion.module.css\";\nimport { resolveClassName, cx } from \"../utils/resolveClassName\";\n\ntype BaseItemProps = ComponentPropsWithoutRef<typeof BaseAccordion.Item>;\ntype BaseHeaderProps = ComponentPropsWithoutRef<typeof BaseAccordion.Header>;\ntype BaseTriggerProps = ComponentPropsWithoutRef<typeof BaseAccordion.Trigger>;\ntype BasePanelProps = ComponentPropsWithoutRef<typeof BaseAccordion.Panel>;\n\nexport interface AccordionItemProps extends BaseItemProps {}\nexport interface AccordionHeaderProps extends BaseHeaderProps {}\nexport interface AccordionTriggerProps extends BaseTriggerProps {}\nexport interface AccordionPanelProps extends BasePanelProps {}\n\nexport const AccordionItemPart = forwardRef<ComponentRef<typeof BaseAccordion.Item>, AccordionItemProps>(function AccordionItemPart(\n { className, ...props },\n ref,\n) {\n return <BaseAccordion.Item ref={ref} className={(state) => cx(styles.item, resolveClassName(className, state))} {...props} />;\n});\n\nexport const AccordionHeader = forwardRef<ComponentRef<typeof BaseAccordion.Header>, AccordionHeaderProps>(function AccordionHeader(\n { className, ...props },\n ref,\n) {\n return <BaseAccordion.Header ref={ref} className={(state) => cx(styles.header, resolveClassName(className, state))} {...props} />;\n});\n\nexport const AccordionTrigger = forwardRef<ComponentRef<typeof BaseAccordion.Trigger>, AccordionTriggerProps>(function AccordionTrigger(\n { className, ...props },\n ref,\n) {\n return <BaseAccordion.Trigger ref={ref} className={(state) => cx(styles.trigger, resolveClassName(className, state))} {...props} />;\n});\n\nexport const AccordionPanel = forwardRef<ComponentRef<typeof BaseAccordion.Panel>, AccordionPanelProps>(function AccordionPanel(\n { className, ...props },\n ref,\n) {\n return <BaseAccordion.Panel ref={ref} className={(state) => cx(styles.panel, resolveClassName(className, state))} {...props} />;\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAa,oBAAoB,WAAwE,SAAS,kBAChH,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACA,UAAc,MAAf;EAAyB;EAAK,YAAY,UAAU,GAAGC,yBAAO,MAAM,iBAAiB,WAAW,MAAM,CAAC;EAAE,GAAI;EAAS,CAAA;EAC7H;AAEF,MAAa,kBAAkB,WAA4E,SAAS,gBAClH,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,UAAc,QAAf;EAA2B;EAAK,YAAY,UAAU,GAAGC,yBAAO,QAAQ,iBAAiB,WAAW,MAAM,CAAC;EAAE,GAAI;EAAS,CAAA;EACjI;AAEF,MAAa,mBAAmB,WAA8E,SAAS,iBACrH,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,UAAc,SAAf;EAA4B;EAAK,YAAY,UAAU,GAAGC,yBAAO,SAAS,iBAAiB,WAAW,MAAM,CAAC;EAAE,GAAI;EAAS,CAAA;EACnI;AAEF,MAAa,iBAAiB,WAA0E,SAAS,eAC/G,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,UAAc,OAAf;EAA0B;EAAK,YAAY,UAAU,GAAGC,yBAAO,OAAO,iBAAiB,WAAW,MAAM,CAAC;EAAE,GAAI;EAAS,CAAA;EAC/H"}
|