@verdify/ui 0.1.0
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/LICENSE +12 -0
- package/README.md +117 -0
- package/dist/components/accordion/accordion.d.ts +66 -0
- package/dist/components/accordion/accordion.d.ts.map +1 -0
- package/dist/components/accordion/accordion.js +97 -0
- package/dist/components/accordion/accordion.js.map +1 -0
- package/dist/components/accordion/accordion.variants.d.ts +9 -0
- package/dist/components/accordion/accordion.variants.d.ts.map +1 -0
- package/dist/components/accordion/accordion.variants.js +54 -0
- package/dist/components/accordion/accordion.variants.js.map +1 -0
- package/dist/components/accordion/index.d.ts +3 -0
- package/dist/components/accordion/index.d.ts.map +1 -0
- package/dist/components/accordion/index.js +25 -0
- package/dist/components/accordion/index.js.map +1 -0
- package/dist/components/agent-badge/agent-badge.d.ts +56 -0
- package/dist/components/agent-badge/agent-badge.d.ts.map +1 -0
- package/dist/components/agent-badge/agent-badge.js +35 -0
- package/dist/components/agent-badge/agent-badge.js.map +1 -0
- package/dist/components/agent-badge/agent-badge.variants.d.ts +7 -0
- package/dist/components/agent-badge/agent-badge.variants.d.ts.map +1 -0
- package/dist/components/agent-badge/agent-badge.variants.js +35 -0
- package/dist/components/agent-badge/agent-badge.variants.js.map +1 -0
- package/dist/components/agent-badge/index.d.ts +3 -0
- package/dist/components/agent-badge/index.d.ts.map +1 -0
- package/dist/components/agent-badge/index.js +11 -0
- package/dist/components/agent-badge/index.js.map +1 -0
- package/dist/components/alert/alert.d.ts +94 -0
- package/dist/components/alert/alert.d.ts.map +1 -0
- package/dist/components/alert/alert.js +105 -0
- package/dist/components/alert/alert.js.map +1 -0
- package/dist/components/alert/alert.variants.d.ts +15 -0
- package/dist/components/alert/alert.variants.d.ts.map +1 -0
- package/dist/components/alert/alert.variants.js +74 -0
- package/dist/components/alert/alert.variants.js.map +1 -0
- package/dist/components/alert/index.d.ts +3 -0
- package/dist/components/alert/index.d.ts.map +1 -0
- package/dist/components/alert/index.js +37 -0
- package/dist/components/alert/index.js.map +1 -0
- package/dist/components/avatar/avatar.d.ts +56 -0
- package/dist/components/avatar/avatar.d.ts.map +1 -0
- package/dist/components/avatar/avatar.js +107 -0
- package/dist/components/avatar/avatar.js.map +1 -0
- package/dist/components/avatar/avatar.variants.d.ts +11 -0
- package/dist/components/avatar/avatar.variants.d.ts.map +1 -0
- package/dist/components/avatar/avatar.variants.js +48 -0
- package/dist/components/avatar/avatar.variants.js.map +1 -0
- package/dist/components/avatar/index.d.ts +3 -0
- package/dist/components/avatar/index.d.ts.map +1 -0
- package/dist/components/avatar/index.js +15 -0
- package/dist/components/avatar/index.js.map +1 -0
- package/dist/components/badge/badge.d.ts +30 -0
- package/dist/components/badge/badge.d.ts.map +1 -0
- package/dist/components/badge/badge.js +33 -0
- package/dist/components/badge/badge.js.map +1 -0
- package/dist/components/badge/badge.variants.d.ts +7 -0
- package/dist/components/badge/badge.variants.d.ts.map +1 -0
- package/dist/components/badge/badge.variants.js +33 -0
- package/dist/components/badge/badge.variants.js.map +1 -0
- package/dist/components/badge/index.d.ts +3 -0
- package/dist/components/badge/index.d.ts.map +1 -0
- package/dist/components/badge/index.js +8 -0
- package/dist/components/badge/index.js.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts +90 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.js +143 -0
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.variants.d.ts +10 -0
- package/dist/components/breadcrumb/breadcrumb.variants.d.ts.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.variants.js +41 -0
- package/dist/components/breadcrumb/breadcrumb.variants.js.map +1 -0
- package/dist/components/breadcrumb/index.d.ts +3 -0
- package/dist/components/breadcrumb/index.d.ts.map +1 -0
- package/dist/components/breadcrumb/index.js +35 -0
- package/dist/components/breadcrumb/index.js.map +1 -0
- package/dist/components/button/button.d.ts +10 -0
- package/dist/components/button/button.d.ts.map +1 -0
- package/dist/components/button/button.js +42 -0
- package/dist/components/button/button.js.map +1 -0
- package/dist/components/button/button.variants.d.ts +6 -0
- package/dist/components/button/button.variants.d.ts.map +1 -0
- package/dist/components/button/button.variants.js +45 -0
- package/dist/components/button/button.variants.js.map +1 -0
- package/dist/components/button/index.d.ts +3 -0
- package/dist/components/button/index.d.ts.map +1 -0
- package/dist/components/button/index.js +7 -0
- package/dist/components/button/index.js.map +1 -0
- package/dist/components/card/card.d.ts +59 -0
- package/dist/components/card/card.d.ts.map +1 -0
- package/dist/components/card/card.js +101 -0
- package/dist/components/card/card.js.map +1 -0
- package/dist/components/card/card.variants.d.ts +13 -0
- package/dist/components/card/card.variants.d.ts.map +1 -0
- package/dist/components/card/card.variants.js +64 -0
- package/dist/components/card/card.variants.js.map +1 -0
- package/dist/components/card/index.d.ts +3 -0
- package/dist/components/card/index.d.ts.map +1 -0
- package/dist/components/card/index.js +35 -0
- package/dist/components/card/index.js.map +1 -0
- package/dist/components/checkbox/checkbox.d.ts +20 -0
- package/dist/components/checkbox/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox/checkbox.js +102 -0
- package/dist/components/checkbox/checkbox.js.map +1 -0
- package/dist/components/checkbox/checkbox.variants.d.ts +15 -0
- package/dist/components/checkbox/checkbox.variants.d.ts.map +1 -0
- package/dist/components/checkbox/checkbox.variants.js +70 -0
- package/dist/components/checkbox/checkbox.variants.js.map +1 -0
- package/dist/components/checkbox/index.d.ts +3 -0
- package/dist/components/checkbox/index.d.ts.map +1 -0
- package/dist/components/checkbox/index.js +11 -0
- package/dist/components/checkbox/index.js.map +1 -0
- package/dist/components/command-palette/command-palette.d.ts +76 -0
- package/dist/components/command-palette/command-palette.d.ts.map +1 -0
- package/dist/components/command-palette/command-palette.js +271 -0
- package/dist/components/command-palette/command-palette.js.map +1 -0
- package/dist/components/command-palette/command-palette.variants.d.ts +18 -0
- package/dist/components/command-palette/command-palette.variants.d.ts.map +1 -0
- package/dist/components/command-palette/command-palette.variants.js +62 -0
- package/dist/components/command-palette/command-palette.variants.js.map +1 -0
- package/dist/components/command-palette/index.d.ts +3 -0
- package/dist/components/command-palette/index.d.ts.map +1 -0
- package/dist/components/command-palette/index.js +35 -0
- package/dist/components/command-palette/index.js.map +1 -0
- package/dist/components/consent-toggle/consent-toggle.d.ts +107 -0
- package/dist/components/consent-toggle/consent-toggle.d.ts.map +1 -0
- package/dist/components/consent-toggle/consent-toggle.js +68 -0
- package/dist/components/consent-toggle/consent-toggle.js.map +1 -0
- package/dist/components/consent-toggle/consent-toggle.variants.d.ts +10 -0
- package/dist/components/consent-toggle/consent-toggle.variants.d.ts.map +1 -0
- package/dist/components/consent-toggle/consent-toggle.variants.js +29 -0
- package/dist/components/consent-toggle/consent-toggle.variants.js.map +1 -0
- package/dist/components/consent-toggle/index.d.ts +3 -0
- package/dist/components/consent-toggle/index.d.ts.map +1 -0
- package/dist/components/consent-toggle/index.js +19 -0
- package/dist/components/consent-toggle/index.js.map +1 -0
- package/dist/components/credential-card/credential-card.d.ts +144 -0
- package/dist/components/credential-card/credential-card.d.ts.map +1 -0
- package/dist/components/credential-card/credential-card.js +117 -0
- package/dist/components/credential-card/credential-card.js.map +1 -0
- package/dist/components/credential-card/credential-card.variants.d.ts +15 -0
- package/dist/components/credential-card/credential-card.variants.d.ts.map +1 -0
- package/dist/components/credential-card/credential-card.variants.js +48 -0
- package/dist/components/credential-card/credential-card.variants.js.map +1 -0
- package/dist/components/credential-card/index.d.ts +3 -0
- package/dist/components/credential-card/index.d.ts.map +1 -0
- package/dist/components/credential-card/index.js +29 -0
- package/dist/components/credential-card/index.js.map +1 -0
- package/dist/components/data-grid/data-grid.d.ts +247 -0
- package/dist/components/data-grid/data-grid.d.ts.map +1 -0
- package/dist/components/data-grid/data-grid.js +529 -0
- package/dist/components/data-grid/data-grid.js.map +1 -0
- package/dist/components/data-grid/data-grid.variants.d.ts +29 -0
- package/dist/components/data-grid/data-grid.variants.d.ts.map +1 -0
- package/dist/components/data-grid/data-grid.variants.js +110 -0
- package/dist/components/data-grid/data-grid.variants.js.map +1 -0
- package/dist/components/data-grid/index.d.ts +3 -0
- package/dist/components/data-grid/index.d.ts.map +1 -0
- package/dist/components/data-grid/index.js +59 -0
- package/dist/components/data-grid/index.js.map +1 -0
- package/dist/components/dialog/dialog.d.ts +98 -0
- package/dist/components/dialog/dialog.d.ts.map +1 -0
- package/dist/components/dialog/dialog.js +121 -0
- package/dist/components/dialog/dialog.js.map +1 -0
- package/dist/components/dialog/dialog.variants.d.ts +14 -0
- package/dist/components/dialog/dialog.variants.d.ts.map +1 -0
- package/dist/components/dialog/dialog.variants.js +71 -0
- package/dist/components/dialog/dialog.variants.js.map +1 -0
- package/dist/components/dialog/index.d.ts +3 -0
- package/dist/components/dialog/index.d.ts.map +1 -0
- package/dist/components/dialog/index.js +31 -0
- package/dist/components/dialog/index.js.map +1 -0
- package/dist/components/identity-chip/identity-chip.d.ts +121 -0
- package/dist/components/identity-chip/identity-chip.d.ts.map +1 -0
- package/dist/components/identity-chip/identity-chip.js +203 -0
- package/dist/components/identity-chip/identity-chip.js.map +1 -0
- package/dist/components/identity-chip/identity-chip.variants.d.ts +11 -0
- package/dist/components/identity-chip/identity-chip.variants.d.ts.map +1 -0
- package/dist/components/identity-chip/identity-chip.variants.js +61 -0
- package/dist/components/identity-chip/identity-chip.variants.js.map +1 -0
- package/dist/components/identity-chip/index.d.ts +3 -0
- package/dist/components/identity-chip/index.d.ts.map +1 -0
- package/dist/components/identity-chip/index.js +21 -0
- package/dist/components/identity-chip/index.js.map +1 -0
- package/dist/components/input/index.d.ts +3 -0
- package/dist/components/input/index.d.ts.map +1 -0
- package/dist/components/input/index.js +11 -0
- package/dist/components/input/index.js.map +1 -0
- package/dist/components/input/input.d.ts +17 -0
- package/dist/components/input/input.d.ts.map +1 -0
- package/dist/components/input/input.js +71 -0
- package/dist/components/input/input.js.map +1 -0
- package/dist/components/input/input.variants.d.ts +11 -0
- package/dist/components/input/input.variants.d.ts.map +1 -0
- package/dist/components/input/input.variants.js +64 -0
- package/dist/components/input/input.variants.js.map +1 -0
- package/dist/components/label/index.d.ts +3 -0
- package/dist/components/label/index.d.ts.map +1 -0
- package/dist/components/label/index.js +13 -0
- package/dist/components/label/index.js.map +1 -0
- package/dist/components/label/label.d.ts +16 -0
- package/dist/components/label/label.d.ts.map +1 -0
- package/dist/components/label/label.js +27 -0
- package/dist/components/label/label.js.map +1 -0
- package/dist/components/label/label.variants.d.ts +8 -0
- package/dist/components/label/label.variants.d.ts.map +1 -0
- package/dist/components/label/label.variants.js +27 -0
- package/dist/components/label/label.variants.js.map +1 -0
- package/dist/components/menu/index.d.ts +3 -0
- package/dist/components/menu/index.d.ts.map +1 -0
- package/dist/components/menu/index.js +43 -0
- package/dist/components/menu/index.js.map +1 -0
- package/dist/components/menu/menu.d.ts +115 -0
- package/dist/components/menu/menu.d.ts.map +1 -0
- package/dist/components/menu/menu.js +130 -0
- package/dist/components/menu/menu.js.map +1 -0
- package/dist/components/menu/menu.variants.d.ts +13 -0
- package/dist/components/menu/menu.variants.d.ts.map +1 -0
- package/dist/components/menu/menu.variants.js +56 -0
- package/dist/components/menu/menu.variants.js.map +1 -0
- package/dist/components/pagination/index.d.ts +3 -0
- package/dist/components/pagination/index.d.ts.map +1 -0
- package/dist/components/pagination/index.js +37 -0
- package/dist/components/pagination/index.js.map +1 -0
- package/dist/components/pagination/pagination.d.ts +118 -0
- package/dist/components/pagination/pagination.d.ts.map +1 -0
- package/dist/components/pagination/pagination.js +204 -0
- package/dist/components/pagination/pagination.js.map +1 -0
- package/dist/components/pagination/pagination.variants.d.ts +13 -0
- package/dist/components/pagination/pagination.variants.d.ts.map +1 -0
- package/dist/components/pagination/pagination.variants.js +63 -0
- package/dist/components/pagination/pagination.variants.js.map +1 -0
- package/dist/components/popover/index.d.ts +3 -0
- package/dist/components/popover/index.d.ts.map +1 -0
- package/dist/components/popover/index.js +39 -0
- package/dist/components/popover/index.js.map +1 -0
- package/dist/components/popover/popover.d.ts +92 -0
- package/dist/components/popover/popover.d.ts.map +1 -0
- package/dist/components/popover/popover.js +135 -0
- package/dist/components/popover/popover.js.map +1 -0
- package/dist/components/popover/popover.variants.d.ts +9 -0
- package/dist/components/popover/popover.variants.d.ts.map +1 -0
- package/dist/components/popover/popover.variants.js +19 -0
- package/dist/components/popover/popover.variants.js.map +1 -0
- package/dist/components/progress/index.d.ts +3 -0
- package/dist/components/progress/index.d.ts.map +1 -0
- package/dist/components/progress/index.js +23 -0
- package/dist/components/progress/index.js.map +1 -0
- package/dist/components/progress/progress.d.ts +71 -0
- package/dist/components/progress/progress.d.ts.map +1 -0
- package/dist/components/progress/progress.js +91 -0
- package/dist/components/progress/progress.js.map +1 -0
- package/dist/components/progress/progress.variants.d.ts +14 -0
- package/dist/components/progress/progress.variants.d.ts.map +1 -0
- package/dist/components/progress/progress.variants.js +37 -0
- package/dist/components/progress/progress.variants.js.map +1 -0
- package/dist/components/radio/index.d.ts +3 -0
- package/dist/components/radio/index.d.ts.map +1 -0
- package/dist/components/radio/index.js +22 -0
- package/dist/components/radio/index.js.map +1 -0
- package/dist/components/radio/radio.d.ts +23 -0
- package/dist/components/radio/radio.d.ts.map +1 -0
- package/dist/components/radio/radio.js +183 -0
- package/dist/components/radio/radio.js.map +1 -0
- package/dist/components/radio/radio.variants.d.ts +17 -0
- package/dist/components/radio/radio.variants.d.ts.map +1 -0
- package/dist/components/radio/radio.variants.js +60 -0
- package/dist/components/radio/radio.variants.js.map +1 -0
- package/dist/components/select/index.d.ts +3 -0
- package/dist/components/select/index.d.ts.map +1 -0
- package/dist/components/select/index.js +9 -0
- package/dist/components/select/index.js.map +1 -0
- package/dist/components/select/select.d.ts +27 -0
- package/dist/components/select/select.d.ts.map +1 -0
- package/dist/components/select/select.js +145 -0
- package/dist/components/select/select.js.map +1 -0
- package/dist/components/select/select.variants.d.ts +18 -0
- package/dist/components/select/select.variants.d.ts.map +1 -0
- package/dist/components/select/select.variants.js +102 -0
- package/dist/components/select/select.variants.js.map +1 -0
- package/dist/components/separator/index.d.ts +3 -0
- package/dist/components/separator/index.d.ts.map +1 -0
- package/dist/components/separator/index.js +15 -0
- package/dist/components/separator/index.js.map +1 -0
- package/dist/components/separator/separator.d.ts +23 -0
- package/dist/components/separator/separator.d.ts.map +1 -0
- package/dist/components/separator/separator.js +61 -0
- package/dist/components/separator/separator.js.map +1 -0
- package/dist/components/separator/separator.variants.d.ts +13 -0
- package/dist/components/separator/separator.variants.d.ts.map +1 -0
- package/dist/components/separator/separator.variants.js +46 -0
- package/dist/components/separator/separator.variants.js.map +1 -0
- package/dist/components/sheet/index.d.ts +3 -0
- package/dist/components/sheet/index.d.ts.map +1 -0
- package/dist/components/sheet/index.js +31 -0
- package/dist/components/sheet/index.js.map +1 -0
- package/dist/components/sheet/sheet.d.ts +102 -0
- package/dist/components/sheet/sheet.d.ts.map +1 -0
- package/dist/components/sheet/sheet.js +120 -0
- package/dist/components/sheet/sheet.js.map +1 -0
- package/dist/components/sheet/sheet.variants.d.ts +15 -0
- package/dist/components/sheet/sheet.variants.d.ts.map +1 -0
- package/dist/components/sheet/sheet.variants.js +97 -0
- package/dist/components/sheet/sheet.variants.js.map +1 -0
- package/dist/components/sidebar/index.d.ts +3 -0
- package/dist/components/sidebar/index.d.ts.map +1 -0
- package/dist/components/sidebar/index.js +43 -0
- package/dist/components/sidebar/index.js.map +1 -0
- package/dist/components/sidebar/sidebar.d.ts +114 -0
- package/dist/components/sidebar/sidebar.d.ts.map +1 -0
- package/dist/components/sidebar/sidebar.js +202 -0
- package/dist/components/sidebar/sidebar.js.map +1 -0
- package/dist/components/sidebar/sidebar.variants.d.ts +19 -0
- package/dist/components/sidebar/sidebar.variants.d.ts.map +1 -0
- package/dist/components/sidebar/sidebar.variants.js +93 -0
- package/dist/components/sidebar/sidebar.variants.js.map +1 -0
- package/dist/components/skeleton/index.d.ts +3 -0
- package/dist/components/skeleton/index.d.ts.map +1 -0
- package/dist/components/skeleton/index.js +15 -0
- package/dist/components/skeleton/index.js.map +1 -0
- package/dist/components/skeleton/skeleton.d.ts +42 -0
- package/dist/components/skeleton/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton/skeleton.js +54 -0
- package/dist/components/skeleton/skeleton.js.map +1 -0
- package/dist/components/skeleton/skeleton.variants.d.ts +9 -0
- package/dist/components/skeleton/skeleton.variants.d.ts.map +1 -0
- package/dist/components/skeleton/skeleton.variants.js +31 -0
- package/dist/components/skeleton/skeleton.variants.js.map +1 -0
- package/dist/components/spinner/index.d.ts +3 -0
- package/dist/components/spinner/index.d.ts.map +1 -0
- package/dist/components/spinner/index.js +13 -0
- package/dist/components/spinner/index.js.map +1 -0
- package/dist/components/spinner/spinner.d.ts +41 -0
- package/dist/components/spinner/spinner.d.ts.map +1 -0
- package/dist/components/spinner/spinner.js +48 -0
- package/dist/components/spinner/spinner.js.map +1 -0
- package/dist/components/spinner/spinner.variants.d.ts +8 -0
- package/dist/components/spinner/spinner.variants.d.ts.map +1 -0
- package/dist/components/spinner/spinner.variants.js +32 -0
- package/dist/components/spinner/spinner.variants.js.map +1 -0
- package/dist/components/switch/index.d.ts +3 -0
- package/dist/components/switch/index.d.ts.map +1 -0
- package/dist/components/switch/index.js +15 -0
- package/dist/components/switch/index.js.map +1 -0
- package/dist/components/switch/switch.d.ts +20 -0
- package/dist/components/switch/switch.d.ts.map +1 -0
- package/dist/components/switch/switch.js +107 -0
- package/dist/components/switch/switch.js.map +1 -0
- package/dist/components/switch/switch.variants.d.ts +14 -0
- package/dist/components/switch/switch.variants.d.ts.map +1 -0
- package/dist/components/switch/switch.variants.js +69 -0
- package/dist/components/switch/switch.variants.js.map +1 -0
- package/dist/components/table/index.d.ts +3 -0
- package/dist/components/table/index.d.ts.map +1 -0
- package/dist/components/table/index.js +51 -0
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/table/table.d.ts +173 -0
- package/dist/components/table/table.d.ts.map +1 -0
- package/dist/components/table/table.js +172 -0
- package/dist/components/table/table.js.map +1 -0
- package/dist/components/table/table.variants.d.ts +39 -0
- package/dist/components/table/table.variants.d.ts.map +1 -0
- package/dist/components/table/table.variants.js +124 -0
- package/dist/components/table/table.variants.js.map +1 -0
- package/dist/components/tabs/index.d.ts +3 -0
- package/dist/components/tabs/index.d.ts.map +1 -0
- package/dist/components/tabs/index.js +21 -0
- package/dist/components/tabs/index.js.map +1 -0
- package/dist/components/tabs/tabs.d.ts +66 -0
- package/dist/components/tabs/tabs.d.ts.map +1 -0
- package/dist/components/tabs/tabs.js +81 -0
- package/dist/components/tabs/tabs.js.map +1 -0
- package/dist/components/tabs/tabs.variants.d.ts +15 -0
- package/dist/components/tabs/tabs.variants.d.ts.map +1 -0
- package/dist/components/tabs/tabs.variants.js +98 -0
- package/dist/components/tabs/tabs.variants.js.map +1 -0
- package/dist/components/textarea/index.d.ts +3 -0
- package/dist/components/textarea/index.d.ts.map +1 -0
- package/dist/components/textarea/index.js +7 -0
- package/dist/components/textarea/index.js.map +1 -0
- package/dist/components/textarea/textarea.d.ts +18 -0
- package/dist/components/textarea/textarea.d.ts.map +1 -0
- package/dist/components/textarea/textarea.js +136 -0
- package/dist/components/textarea/textarea.js.map +1 -0
- package/dist/components/textarea/textarea.variants.d.ts +6 -0
- package/dist/components/textarea/textarea.variants.d.ts.map +1 -0
- package/dist/components/textarea/textarea.variants.js +53 -0
- package/dist/components/textarea/textarea.variants.js.map +1 -0
- package/dist/components/toast/index.d.ts +3 -0
- package/dist/components/toast/index.d.ts.map +1 -0
- package/dist/components/toast/index.js +43 -0
- package/dist/components/toast/index.js.map +1 -0
- package/dist/components/toast/toast.d.ts +140 -0
- package/dist/components/toast/toast.d.ts.map +1 -0
- package/dist/components/toast/toast.js +123 -0
- package/dist/components/toast/toast.js.map +1 -0
- package/dist/components/toast/toast.variants.d.ts +16 -0
- package/dist/components/toast/toast.variants.d.ts.map +1 -0
- package/dist/components/toast/toast.variants.js +77 -0
- package/dist/components/toast/toast.variants.js.map +1 -0
- package/dist/components/tooltip/index.d.ts +3 -0
- package/dist/components/tooltip/index.d.ts.map +1 -0
- package/dist/components/tooltip/index.js +16 -0
- package/dist/components/tooltip/index.js.map +1 -0
- package/dist/components/tooltip/tooltip.d.ts +81 -0
- package/dist/components/tooltip/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip/tooltip.js +44 -0
- package/dist/components/tooltip/tooltip.js.map +1 -0
- package/dist/components/tooltip/tooltip.variants.d.ts +3 -0
- package/dist/components/tooltip/tooltip.variants.d.ts.map +1 -0
- package/dist/components/tooltip/tooltip.variants.js +7 -0
- package/dist/components/tooltip/tooltip.variants.js.map +1 -0
- package/dist/components/trust-score/index.d.ts +3 -0
- package/dist/components/trust-score/index.d.ts.map +1 -0
- package/dist/components/trust-score/index.js +11 -0
- package/dist/components/trust-score/index.js.map +1 -0
- package/dist/components/trust-score/trust-score.d.ts +100 -0
- package/dist/components/trust-score/trust-score.d.ts.map +1 -0
- package/dist/components/trust-score/trust-score.js +146 -0
- package/dist/components/trust-score/trust-score.js.map +1 -0
- package/dist/components/trust-score/trust-score.variants.d.ts +16 -0
- package/dist/components/trust-score/trust-score.variants.d.ts.map +1 -0
- package/dist/components/trust-score/trust-score.variants.js +50 -0
- package/dist/components/trust-score/trust-score.variants.js.map +1 -0
- package/dist/components/verified-badge/index.d.ts +3 -0
- package/dist/components/verified-badge/index.d.ts.map +1 -0
- package/dist/components/verified-badge/index.js +15 -0
- package/dist/components/verified-badge/index.js.map +1 -0
- package/dist/components/verified-badge/verified-badge.d.ts +55 -0
- package/dist/components/verified-badge/verified-badge.d.ts.map +1 -0
- package/dist/components/verified-badge/verified-badge.js +67 -0
- package/dist/components/verified-badge/verified-badge.js.map +1 -0
- package/dist/components/verified-badge/verified-badge.variants.d.ts +11 -0
- package/dist/components/verified-badge/verified-badge.variants.d.ts.map +1 -0
- package/dist/components/verified-badge/verified-badge.variants.js +45 -0
- package/dist/components/verified-badge/verified-badge.variants.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +322 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cn.d.ts +3 -0
- package/dist/lib/cn.d.ts.map +1 -0
- package/dist/lib/cn.js +24 -0
- package/dist/lib/cn.js.map +1 -0
- package/package.json +74 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Copyright (c) 2026 Verdify.
|
|
2
|
+
|
|
3
|
+
All rights reserved.
|
|
4
|
+
|
|
5
|
+
This repository contains confidential and proprietary architecture documentation
|
|
6
|
+
for the Verdify ecosystem (Verdify, Spare, Veraq). It is shared with employees,
|
|
7
|
+
contractors, and authorized partners under the terms of their respective
|
|
8
|
+
agreements. No license — express or implied — is granted to copy, distribute,
|
|
9
|
+
or create derivative works outside those agreements.
|
|
10
|
+
|
|
11
|
+
Replace this file with the organization's chosen license before any public or
|
|
12
|
+
open-source release of any portion of the ecosystem.
|
package/README.md
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# @verdify/ui
|
|
2
|
+
|
|
3
|
+
Verdify's React component library — accessible, brand-bound primitives that consume
|
|
4
|
+
[`@verdify/tokens`][tokens]. Components ship as class strings over the Tailwind v4 token
|
|
5
|
+
preset; there is no bundled CSS to import.
|
|
6
|
+
|
|
7
|
+
This is a private GitHub Packages release. See the [BR-8 @verdify/ui design spec][spec] and
|
|
8
|
+
the [BR-7 design-system charter][br7] for source-of-truth design decisions.
|
|
9
|
+
|
|
10
|
+
[tokens]: https://github.com/mirinsim/verdify-brand/blob/main/packages/tokens/README.md
|
|
11
|
+
[spec]: https://github.com/mirinsim/verdify-docs/blob/main/specs/2026-05-31-br8-verdify-ui-design.md
|
|
12
|
+
[br7]: https://github.com/mirinsim/verdify-docs/blob/main/specs/2026-05-31-br7-design-system-charter-design.md
|
|
13
|
+
|
|
14
|
+
## Scope
|
|
15
|
+
|
|
16
|
+
Current scope is the 8 form/action **Primitives**: `Button`, `Input`, `Select`,
|
|
17
|
+
`Checkbox`, `Radio`, `Switch`, `Textarea`, `Label`. More families (layout, feedback,
|
|
18
|
+
navigation, data, and the Verdify molecules) are planned but not yet shipped — see the
|
|
19
|
+
build order in the [`build-on-brand` skill](#development).
|
|
20
|
+
|
|
21
|
+
## Install
|
|
22
|
+
|
|
23
|
+
Add an `.npmrc` to your consuming repo:
|
|
24
|
+
|
|
25
|
+
```ini
|
|
26
|
+
@verdify:registry=https://npm.pkg.github.com
|
|
27
|
+
//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Then install:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
pnpm add @verdify/ui
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`GITHUB_TOKEN` must have `read:packages` scope.
|
|
37
|
+
|
|
38
|
+
## Setup
|
|
39
|
+
|
|
40
|
+
### Peer dependencies
|
|
41
|
+
|
|
42
|
+
`@verdify/ui` declares these as peers — install them in the consumer:
|
|
43
|
+
|
|
44
|
+
| Peer | Range |
|
|
45
|
+
|---|---|
|
|
46
|
+
| `react` | `^18 \|\| ^19` |
|
|
47
|
+
| `react-dom` | `^18 \|\| ^19` |
|
|
48
|
+
| `tailwindcss` | `^4` |
|
|
49
|
+
| `@verdify/tokens` | `^0.5.0` |
|
|
50
|
+
|
|
51
|
+
### Tailwind v4
|
|
52
|
+
|
|
53
|
+
Components carry no CSS of their own — they emit Tailwind utility class strings that
|
|
54
|
+
resolve against the `@verdify/tokens` preset. Two things are required in the consumer:
|
|
55
|
+
|
|
56
|
+
1. Import the token preset in your global stylesheet:
|
|
57
|
+
|
|
58
|
+
```css
|
|
59
|
+
/* app/globals.css */
|
|
60
|
+
@import "tailwindcss";
|
|
61
|
+
@import "@verdify/tokens/preset";
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
2. Make Tailwind scan `@verdify/ui` so the utility classes it ships are detected. Add the
|
|
65
|
+
package to your `@source` (or `content`) so the classes are not tree-shaken away:
|
|
66
|
+
|
|
67
|
+
```css
|
|
68
|
+
@source "../node_modules/@verdify/ui/dist";
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Without both steps, components render unstyled (their classes are never generated).
|
|
72
|
+
|
|
73
|
+
## Usage
|
|
74
|
+
|
|
75
|
+
```tsx
|
|
76
|
+
import { Button } from "@verdify/ui";
|
|
77
|
+
|
|
78
|
+
export function SignIn() {
|
|
79
|
+
return <Button>Verify</Button>;
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Every primitive is exported by name from the package root, alongside its props type (for
|
|
84
|
+
example `import { Input, type InputProps } from "@verdify/ui"`).
|
|
85
|
+
|
|
86
|
+
## Development
|
|
87
|
+
|
|
88
|
+
This package is developed inside the `verdify-brand` monorepo with **pnpm**. The scripts:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
pnpm --filter @verdify/ui build # tsup → ESM + .d.ts (per-file, 'use client' preserved)
|
|
92
|
+
pnpm --filter @verdify/ui test # vitest run (unit + a11y + gate suites)
|
|
93
|
+
pnpm --filter @verdify/ui verify # build → lint:gates → test (the full gate)
|
|
94
|
+
pnpm --filter @verdify/ui storybook # Storybook dev server on :6006
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Components are authored via the **`build-on-brand`** skill
|
|
98
|
+
(`.claude/skills/build-on-brand/`), which generates a brand-bound component from its
|
|
99
|
+
8-section brand-book spec, test-first, so it passes the four standing library gates:
|
|
100
|
+
|
|
101
|
+
| Gate | Enforces |
|
|
102
|
+
|---|---|
|
|
103
|
+
| token-binding | Intent/semantic tier utilities only — no neutral/brand/mist/obsidian, no raw hex, no v3 bare-var brackets |
|
|
104
|
+
| brand ≠state | A `status` variant key is never bound to an `action-*` utility, and vice versa |
|
|
105
|
+
| motion-theatre | The deliberate-motion reveal is reserved for the verified badge; emphasis easing is forbidden elsewhere |
|
|
106
|
+
| axe + keyboard | Per-component `jest-axe` clean plus the full keyboard model |
|
|
107
|
+
|
|
108
|
+
## Versioning
|
|
109
|
+
|
|
110
|
+
Independent semver from `verdify-brand`, published from GitHub Packages under the
|
|
111
|
+
`@verdify` scope.
|
|
112
|
+
|
|
113
|
+
## License
|
|
114
|
+
|
|
115
|
+
UNLICENSED (proprietary). All rights reserved.
|
|
116
|
+
</content>
|
|
117
|
+
</invoke>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Accordion as AccordionPrimitive } from "radix-ui";
|
|
3
|
+
type SingleRootProps = {
|
|
4
|
+
type: "single";
|
|
5
|
+
/** In single, the open item can also be closed, leaving none open (spec §3 `collapsible`). */
|
|
6
|
+
collapsible?: boolean;
|
|
7
|
+
value?: string;
|
|
8
|
+
defaultValue?: string;
|
|
9
|
+
onValueChange?: (value: string) => void;
|
|
10
|
+
};
|
|
11
|
+
type MultipleRootProps = {
|
|
12
|
+
type: "multiple";
|
|
13
|
+
value?: string[];
|
|
14
|
+
defaultValue?: string[];
|
|
15
|
+
onValueChange?: (value: string[]) => void;
|
|
16
|
+
};
|
|
17
|
+
type AccordionBaseProps = {
|
|
18
|
+
/**
|
|
19
|
+
* The heading level for every item header, chosen to fit the page outline (spec §7: the
|
|
20
|
+
* trigger is a `<button>` inside an `<h2>`–`<h6>`). Defaults to 3 (the Radix default).
|
|
21
|
+
*/
|
|
22
|
+
headingLevel?: 2 | 3 | 4 | 5 | 6;
|
|
23
|
+
/** Layout orientation; drives the arrow-key navigation axis. Vertical by default. */
|
|
24
|
+
orientation?: "vertical" | "horizontal";
|
|
25
|
+
dir?: "ltr" | "rtl";
|
|
26
|
+
className?: string;
|
|
27
|
+
children?: React.ReactNode;
|
|
28
|
+
};
|
|
29
|
+
export type AccordionProps = AccordionBaseProps & (SingleRootProps | MultipleRootProps);
|
|
30
|
+
/**
|
|
31
|
+
* Accordion stacks several sections of content and lets you expand one at a time (or several,
|
|
32
|
+
* in the `multiple` variant) to read it, keeping the rest collapsed (spec §1). It is a neutral
|
|
33
|
+
* layout container: an expanded section is shown by the indicator and `aria-expanded`, never by
|
|
34
|
+
* a Sovereign Violet or Verified Green fill (spec §3/§8). Wraps the Radix Accordion (WAI-ARIA
|
|
35
|
+
* APG accordion pattern) — a stateful primitive, so this file is `'use client'`.
|
|
36
|
+
*/
|
|
37
|
+
export declare function Accordion({ headingLevel, className, children, ...rootProps }: AccordionProps): import("react/jsx-runtime").JSX.Element;
|
|
38
|
+
export interface AccordionItemProps extends Omit<React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>, "value"> {
|
|
39
|
+
/** Stable identity for this item; used by the root to track which sections are open. */
|
|
40
|
+
value: string;
|
|
41
|
+
/** The item is present but not currently expandable (spec §4 Disabled). */
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
}
|
|
44
|
+
/** One collapsible section: a header and its panel (spec §2 `item`). */
|
|
45
|
+
export declare const AccordionItem: React.ForwardRefExoticComponent<AccordionItemProps & React.RefAttributes<HTMLDivElement>>;
|
|
46
|
+
export interface AccordionTriggerProps extends React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> {
|
|
47
|
+
/** Hide the default chevron indicator (it is decorative; never the only open-state signal). */
|
|
48
|
+
hideIndicator?: boolean;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The focusable `<button>` inside the heading (spec §2 `trigger`, §7): it carries the section
|
|
52
|
+
* title and the expand/collapse cue, holds the focus ring, and sets `aria-expanded` /
|
|
53
|
+
* `aria-controls` (both wired by Radix). The heading element wraps it at the page-outline level
|
|
54
|
+
* chosen on the root.
|
|
55
|
+
*/
|
|
56
|
+
export declare const AccordionTrigger: React.ForwardRefExoticComponent<AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
57
|
+
export interface AccordionContentProps extends React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content> {
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The collapsible region revealed when the item expands (spec §2 `panel`, §7). Radix sets
|
|
61
|
+
* `role="region"` and `aria-labelledby` back to the trigger, so the panel's accessible name is
|
|
62
|
+
* the section title. The padding lives on an inner element so the height-collapse stays smooth.
|
|
63
|
+
*/
|
|
64
|
+
export declare const AccordionContent: React.ForwardRefExoticComponent<AccordionContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=accordion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAc3D,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,8FAA8F;IAC9F,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,qFAAqF;IACrF,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,CAAC,eAAe,GAAG,iBAAiB,CAAC,CAAC;AAKxF;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,EACxB,YAAgB,EAChB,SAAS,EACT,QAAQ,EACR,GAAG,SAAS,EACb,EAAE,cAAc,2CAahB;AAED,MAAM,WAAW,kBACf,SAAQ,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACrF,wFAAwF;IACxF,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wEAAwE;AACxE,eAAO,MAAM,aAAa,2FAUzB,CAAC;AAoBF,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC;IACzE,+FAA+F;IAC/F,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,iGAuB5B,CAAC;AAEF,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC;CAAG;AAE9E;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,8FAY5B,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Accordion as AccordionPrimitive } from "radix-ui";
|
|
5
|
+
import { cn } from "../../lib/cn";
|
|
6
|
+
import {
|
|
7
|
+
accordionItemVariants,
|
|
8
|
+
accordionTriggerVariants,
|
|
9
|
+
accordionIndicatorVariants,
|
|
10
|
+
accordionContentVariants,
|
|
11
|
+
accordionContentInnerClass
|
|
12
|
+
} from "./accordion.variants";
|
|
13
|
+
const AccordionHeadingLevelContext = React.createContext(3);
|
|
14
|
+
function Accordion({
|
|
15
|
+
headingLevel = 3,
|
|
16
|
+
className,
|
|
17
|
+
children,
|
|
18
|
+
...rootProps
|
|
19
|
+
}) {
|
|
20
|
+
return /* @__PURE__ */ jsx(AccordionHeadingLevelContext.Provider, { value: headingLevel, children: /* @__PURE__ */ jsx(
|
|
21
|
+
AccordionPrimitive.Root,
|
|
22
|
+
{
|
|
23
|
+
...rootProps,
|
|
24
|
+
className: cn("flex flex-col gap-(--space-2)", className),
|
|
25
|
+
children
|
|
26
|
+
}
|
|
27
|
+
) });
|
|
28
|
+
}
|
|
29
|
+
const AccordionItem = React.forwardRef(
|
|
30
|
+
function AccordionItem2({ className, ...props }, ref) {
|
|
31
|
+
return /* @__PURE__ */ jsx(
|
|
32
|
+
AccordionPrimitive.Item,
|
|
33
|
+
{
|
|
34
|
+
ref,
|
|
35
|
+
className: cn(accordionItemVariants(), className),
|
|
36
|
+
...props
|
|
37
|
+
}
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
function ChevronIcon({ "data-testid": testId }) {
|
|
42
|
+
return /* @__PURE__ */ jsx(
|
|
43
|
+
"svg",
|
|
44
|
+
{
|
|
45
|
+
"data-testid": testId,
|
|
46
|
+
"aria-hidden": "true",
|
|
47
|
+
viewBox: "0 0 16 16",
|
|
48
|
+
fill: "none",
|
|
49
|
+
stroke: "currentColor",
|
|
50
|
+
strokeWidth: "1.5",
|
|
51
|
+
className: accordionIndicatorVariants(),
|
|
52
|
+
children: /* @__PURE__ */ jsx("path", { d: "M4 6l4 4 4-4", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
53
|
+
}
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
const AccordionTrigger = React.forwardRef(
|
|
57
|
+
function AccordionTrigger2({ className, children, hideIndicator = false, ...props }, ref) {
|
|
58
|
+
const level = React.useContext(AccordionHeadingLevelContext);
|
|
59
|
+
return /* @__PURE__ */ jsx(AccordionPrimitive.Header, { asChild: true, children: React.createElement(
|
|
60
|
+
`h${level}`,
|
|
61
|
+
// the heading is a structural wrapper with no styling of its own (the trigger styles)
|
|
62
|
+
{ className: "m-0" },
|
|
63
|
+
/* @__PURE__ */ jsxs(
|
|
64
|
+
AccordionPrimitive.Trigger,
|
|
65
|
+
{
|
|
66
|
+
ref,
|
|
67
|
+
className: cn(accordionTriggerVariants(), className),
|
|
68
|
+
...props,
|
|
69
|
+
children: [
|
|
70
|
+
/* @__PURE__ */ jsx("span", { className: "text-start", children }),
|
|
71
|
+
hideIndicator ? null : /* @__PURE__ */ jsx(ChevronIcon, { "data-testid": "accordion-indicator" })
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
) });
|
|
76
|
+
}
|
|
77
|
+
);
|
|
78
|
+
const AccordionContent = React.forwardRef(
|
|
79
|
+
function AccordionContent2({ className, children, ...props }, ref) {
|
|
80
|
+
return /* @__PURE__ */ jsx(
|
|
81
|
+
AccordionPrimitive.Content,
|
|
82
|
+
{
|
|
83
|
+
ref,
|
|
84
|
+
className: cn(accordionContentVariants(), className),
|
|
85
|
+
...props,
|
|
86
|
+
children: /* @__PURE__ */ jsx("div", { className: accordionContentInnerClass, children })
|
|
87
|
+
}
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
);
|
|
91
|
+
export {
|
|
92
|
+
Accordion,
|
|
93
|
+
AccordionContent,
|
|
94
|
+
AccordionItem,
|
|
95
|
+
AccordionTrigger
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=accordion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/accordion/accordion.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Accordion as AccordionPrimitive } from \"radix-ui\";\nimport { cn } from \"../../lib/cn\";\nimport {\n accordionItemVariants,\n accordionTriggerVariants,\n accordionIndicatorVariants,\n accordionContentVariants,\n accordionContentInnerClass,\n} from \"./accordion.variants\";\n\n// The single-vs-multiple open behavior is a DISCRIMINATED axis on `type` (spec §3): the\n// `collapsible` option (the open item may also close, leaving none open) is only meaningful\n// in `single`. Modelling it as a union — instead of a free `collapsible` boolean — makes the\n// invalid `multiple` + `collapsible` combination unrepresentable at the type level.\ntype SingleRootProps = {\n type: \"single\";\n /** In single, the open item can also be closed, leaving none open (spec §3 `collapsible`). */\n collapsible?: boolean;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n};\n\ntype MultipleRootProps = {\n type: \"multiple\";\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n};\n\ntype AccordionBaseProps = {\n /**\n * The heading level for every item header, chosen to fit the page outline (spec §7: the\n * trigger is a `<button>` inside an `<h2>`–`<h6>`). Defaults to 3 (the Radix default).\n */\n headingLevel?: 2 | 3 | 4 | 5 | 6;\n /** Layout orientation; drives the arrow-key navigation axis. Vertical by default. */\n orientation?: \"vertical\" | \"horizontal\";\n dir?: \"ltr\" | \"rtl\";\n className?: string;\n children?: React.ReactNode;\n};\n\nexport type AccordionProps = AccordionBaseProps & (SingleRootProps | MultipleRootProps);\n\n// The heading level travels from the root to each header via context so callers set it once.\nconst AccordionHeadingLevelContext = React.createContext<2 | 3 | 4 | 5 | 6>(3);\n\n/**\n * Accordion stacks several sections of content and lets you expand one at a time (or several,\n * in the `multiple` variant) to read it, keeping the rest collapsed (spec §1). It is a neutral\n * layout container: an expanded section is shown by the indicator and `aria-expanded`, never by\n * a Sovereign Violet or Verified Green fill (spec §3/§8). Wraps the Radix Accordion (WAI-ARIA\n * APG accordion pattern) — a stateful primitive, so this file is `'use client'`.\n */\nexport function Accordion({\n headingLevel = 3,\n className,\n children,\n ...rootProps\n}: AccordionProps) {\n return (\n <AccordionHeadingLevelContext.Provider value={headingLevel}>\n <AccordionPrimitive.Root\n // `type` + the matching value/onValueChange shape flow through; the union above keeps\n // single/multiple props mutually exclusive at the type level.\n {...(rootProps as React.ComponentProps<typeof AccordionPrimitive.Root>)}\n className={cn(\"flex flex-col gap-(--space-2)\", className)}\n >\n {children}\n </AccordionPrimitive.Root>\n </AccordionHeadingLevelContext.Provider>\n );\n}\n\nexport interface AccordionItemProps\n extends Omit<React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>, \"value\"> {\n /** Stable identity for this item; used by the root to track which sections are open. */\n value: string;\n /** The item is present but not currently expandable (spec §4 Disabled). */\n disabled?: boolean;\n}\n\n/** One collapsible section: a header and its panel (spec §2 `item`). */\nexport const AccordionItem = React.forwardRef<HTMLDivElement, AccordionItemProps>(\n function AccordionItem({ className, ...props }, ref) {\n return (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(accordionItemVariants(), className)}\n {...props}\n />\n );\n },\n);\n\n// The chevron indicator — inline SVG (no icon dep), --size-icon-md, rotates on open. Decorative:\n// aria-hidden; aria-expanded carries the open state, not the glyph (spec §2 indicator, §7).\nfunction ChevronIcon({ \"data-testid\": testId }: { \"data-testid\"?: string }) {\n return (\n <svg\n data-testid={testId}\n aria-hidden=\"true\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n className={accordionIndicatorVariants()}\n >\n <path d=\"M4 6l4 4 4-4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\nexport interface AccordionTriggerProps\n extends React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> {\n /** Hide the default chevron indicator (it is decorative; never the only open-state signal). */\n hideIndicator?: boolean;\n}\n\n/**\n * The focusable `<button>` inside the heading (spec §2 `trigger`, §7): it carries the section\n * title and the expand/collapse cue, holds the focus ring, and sets `aria-expanded` /\n * `aria-controls` (both wired by Radix). The heading element wraps it at the page-outline level\n * chosen on the root.\n */\nexport const AccordionTrigger = React.forwardRef<HTMLButtonElement, AccordionTriggerProps>(\n function AccordionTrigger({ className, children, hideIndicator = false, ...props }, ref) {\n const level = React.useContext(AccordionHeadingLevelContext);\n // The Radix Header renders the heading element (h2–h6 via the `level`-derived tag); the\n // trigger is the button inside it. The heading provides structure, the button the control.\n return (\n <AccordionPrimitive.Header asChild>\n {React.createElement(\n `h${level}`,\n // the heading is a structural wrapper with no styling of its own (the trigger styles)\n { className: \"m-0\" },\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(accordionTriggerVariants(), className)}\n {...props}\n >\n <span className=\"text-start\">{children}</span>\n {hideIndicator ? null : <ChevronIcon data-testid=\"accordion-indicator\" />}\n </AccordionPrimitive.Trigger>,\n )}\n </AccordionPrimitive.Header>\n );\n },\n);\n\nexport interface AccordionContentProps\n extends React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content> {}\n\n/**\n * The collapsible region revealed when the item expands (spec §2 `panel`, §7). Radix sets\n * `role=\"region\"` and `aria-labelledby` back to the trigger, so the panel's accessible name is\n * the section title. The padding lives on an inner element so the height-collapse stays smooth.\n */\nexport const AccordionContent = React.forwardRef<HTMLDivElement, AccordionContentProps>(\n function AccordionContent({ className, children, ...props }, ref) {\n return (\n <AccordionPrimitive.Content\n ref={ref}\n className={cn(accordionContentVariants(), className)}\n {...props}\n >\n <div className={accordionContentInnerClass}>{children}</div>\n </AccordionPrimitive.Content>\n );\n },\n);\n"],"mappings":";AAkEM,cA0EI,YA1EJ;AAhEN,YAAY,WAAW;AACvB,SAAS,aAAa,0BAA0B;AAChD,SAAS,UAAU;AACnB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAsCP,MAAM,+BAA+B,MAAM,cAAiC,CAAC;AAStE,SAAS,UAAU;AAAA,EACxB,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAmB;AACjB,SACE,oBAAC,6BAA6B,UAA7B,EAAsC,OAAO,cAC5C;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MAGE,GAAI;AAAA,MACL,WAAW,GAAG,iCAAiC,SAAS;AAAA,MAEvD;AAAA;AAAA,EACH,GACF;AAEJ;AAWO,MAAM,gBAAgB,MAAM;AAAA,EACjC,SAASA,eAAc,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AACnD,WACE;AAAA,MAAC,mBAAmB;AAAA,MAAnB;AAAA,QACC;AAAA,QACA,WAAW,GAAG,sBAAsB,GAAG,SAAS;AAAA,QAC/C,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAIA,SAAS,YAAY,EAAE,eAAe,OAAO,GAA+B;AAC1E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAa;AAAA,MACb,eAAY;AAAA,MACZ,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,WAAW,2BAA2B;AAAA,MAEtC,8BAAC,UAAK,GAAE,gBAAe,eAAc,SAAQ,gBAAe,SAAQ;AAAA;AAAA,EACtE;AAEJ;AAcO,MAAM,mBAAmB,MAAM;AAAA,EACpC,SAASC,kBAAiB,EAAE,WAAW,UAAU,gBAAgB,OAAO,GAAG,MAAM,GAAG,KAAK;AACvF,UAAM,QAAQ,MAAM,WAAW,4BAA4B;AAG3D,WACE,oBAAC,mBAAmB,QAAnB,EAA0B,SAAO,MAC/B,gBAAM;AAAA,MACL,IAAI,KAAK;AAAA;AAAA,MAET,EAAE,WAAW,MAAM;AAAA,MACnB;AAAA,QAAC,mBAAmB;AAAA,QAAnB;AAAA,UACC;AAAA,UACA,WAAW,GAAG,yBAAyB,GAAG,SAAS;AAAA,UAClD,GAAG;AAAA,UAEJ;AAAA,gCAAC,UAAK,WAAU,cAAc,UAAS;AAAA,YACtC,gBAAgB,OAAO,oBAAC,eAAY,eAAY,uBAAsB;AAAA;AAAA;AAAA,MACzE;AAAA,IACF,GACF;AAAA,EAEJ;AACF;AAUO,MAAM,mBAAmB,MAAM;AAAA,EACpC,SAASC,kBAAiB,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,KAAK;AAChE,WACE;AAAA,MAAC,mBAAmB;AAAA,MAAnB;AAAA,QACC;AAAA,QACA,WAAW,GAAG,yBAAyB,GAAG,SAAS;AAAA,QAClD,GAAG;AAAA,QAEJ,8BAAC,SAAI,WAAW,4BAA6B,UAAS;AAAA;AAAA,IACxD;AAAA,EAEJ;AACF;","names":["AccordionItem","AccordionTrigger","AccordionContent"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type VariantProps } from "class-variance-authority";
|
|
2
|
+
export declare const accordionItemVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
|
|
3
|
+
export declare const accordionTriggerVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
|
|
4
|
+
export declare const accordionIndicatorVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
|
|
5
|
+
export declare const accordionContentVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
|
|
6
|
+
export declare const accordionContentInnerClass = "px-(--space-4) py-(--space-4)";
|
|
7
|
+
export type AccordionItemVariantProps = VariantProps<typeof accordionItemVariants>;
|
|
8
|
+
export type AccordionTriggerVariantProps = VariantProps<typeof accordionTriggerVariants>;
|
|
9
|
+
//# sourceMappingURL=accordion.variants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.variants.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/accordion.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAUlE,eAAO,MAAM,qBAAqB,oFAIhC,CAAC;AAOH,eAAO,MAAM,wBAAwB,oFA0BnC,CAAC;AAiBH,eAAO,MAAM,0BAA0B,oFAOrC,CAAC;AAOH,eAAO,MAAM,wBAAwB,oFAGnC,CAAC;AAIH,eAAO,MAAM,0BAA0B,kCAAkC,CAAC;AAE1E,MAAM,MAAM,yBAAyB,GAAG,YAAY,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACnF,MAAM,MAAM,4BAA4B,GAAG,YAAY,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { cva } from "class-variance-authority";
|
|
2
|
+
const accordionItemVariants = cva([
|
|
3
|
+
// overflow-hidden so the panel reveal clips to the item radius; logical text start (G-U6)
|
|
4
|
+
"overflow-hidden rounded-(--radius-md) border border-border-default",
|
|
5
|
+
"text-start"
|
|
6
|
+
]);
|
|
7
|
+
const accordionTriggerVariants = cva([
|
|
8
|
+
// layout: full-width header row, title on the inline-start, indicator on the inline-end.
|
|
9
|
+
// `group` anchors the trigger so the child indicator can react to its data-disabled state
|
|
10
|
+
// (Radix sets data-disabled + native disabled on this button) without prop plumbing.
|
|
11
|
+
"group flex w-full items-center justify-between gap-(--space-2) px-(--space-4)",
|
|
12
|
+
// rest surface: control-* tier (neutral), with the at-rest control border
|
|
13
|
+
"bg-control-bg text-control-fg border-control-border",
|
|
14
|
+
// trigger title type role + medium weight; cursor affordance
|
|
15
|
+
"text-label font-medium cursor-pointer select-none",
|
|
16
|
+
// hover AND pressed lift to the neutral secondary hover fill (spec §4) — never a brand fill
|
|
17
|
+
"hover:bg-action-secondary-bg-hover active:bg-action-secondary-bg-hover",
|
|
18
|
+
// expand/collapse is a PLAIN reveal — base duration + verdify easing, instant under reduced
|
|
19
|
+
// motion. Never the 350ms VerifiedBadge-only theatre duration (G-U3 motion-theatre gate).
|
|
20
|
+
"transition-colors duration-(--motion-duration-base) ease-(--motion-easing-verdify)",
|
|
21
|
+
"motion-reduce:duration-(--motion-duration-instant)",
|
|
22
|
+
// target-size floor: 44px touch / 40px pointer (§7 2.5.8), padding density above it; the
|
|
23
|
+
// resting height EMERGES from the floor + py, never a fixed height below the a11y floor (DEC-B)
|
|
24
|
+
"min-h-(--size-target-mobile) sm:min-h-(--size-target-desktop) py-(--space-2)",
|
|
25
|
+
// visible 2px signal-blue ring at 2px offset; persists whether the item is open or closed
|
|
26
|
+
"outline-none",
|
|
27
|
+
"focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2",
|
|
28
|
+
// focused: the trigger border emphasises to the focus color (spec §5 --color-border-focus)
|
|
29
|
+
"focus-visible:border-border-focus",
|
|
30
|
+
// disabled — DEC-C: out of the tab order (native disabled), reduced emphasis via the disabled
|
|
31
|
+
// TOKEN on the title AND the indicator (below), never a blanket opacity on the control
|
|
32
|
+
"disabled:pointer-events-none disabled:text-text-disabled"
|
|
33
|
+
]);
|
|
34
|
+
const accordionIndicatorVariants = cva([
|
|
35
|
+
"h-(--size-icon-md) w-(--size-icon-md) shrink-0 text-action-ghost-fg",
|
|
36
|
+
"group-data-[disabled]:text-text-disabled",
|
|
37
|
+
"transition-transform duration-(--motion-duration-base) ease-(--motion-easing-verdify)",
|
|
38
|
+
"motion-reduce:duration-(--motion-duration-instant)",
|
|
39
|
+
// rotate the chevron when the parent trigger is open (Radix sets data-state on the trigger)
|
|
40
|
+
"data-[state=open]:rotate-180"
|
|
41
|
+
]);
|
|
42
|
+
const accordionContentVariants = cva([
|
|
43
|
+
"overflow-hidden bg-surface-canvas text-text-primary text-body",
|
|
44
|
+
"border-t border-border-default"
|
|
45
|
+
]);
|
|
46
|
+
const accordionContentInnerClass = "px-(--space-4) py-(--space-4)";
|
|
47
|
+
export {
|
|
48
|
+
accordionContentInnerClass,
|
|
49
|
+
accordionContentVariants,
|
|
50
|
+
accordionIndicatorVariants,
|
|
51
|
+
accordionItemVariants,
|
|
52
|
+
accordionTriggerVariants
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=accordion.variants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/accordion/accordion.variants.ts"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\n\n// Accordion is a NEUTRAL layout container (spec §1/§3/§8): brand violet and Verified Green\n// are accents, neutrals carry the surface, so NOTHING here binds a --color-action-primary-*\n// or --color-status-* fill. An expanded section is not \"selected\" or \"verified\" — the open\n// item is shown by the indicator + aria-expanded, never by a brand/status fill. The only\n// token-binding site is this file (skill §5 hard rule).\n\n// The item: one collapsible section. A neutral hairline divider (border-border-default) and\n// the item radius bound the header + its panel. The root stacks items; the item draws the box.\nexport const accordionItemVariants = cva([\n // overflow-hidden so the panel reveal clips to the item radius; logical text start (G-U6)\n \"overflow-hidden rounded-(--radius-md) border border-border-default\",\n \"text-start\",\n]);\n\n// The trigger: the focusable <button> inside the heading. A control-* tier surface at rest;\n// the neutral secondary hover fill on hover AND on press (pressed is acknowledged without\n// theatre — restraint over volume, spec §4 Pressed); the trigger title in the label type\n// role; the persistent focus ring; the target-size floor; base reveal motion (NEVER the\n// deliberate verified-check theatre); DEC-C disabled via the disabled TOKEN, never opacity.\nexport const accordionTriggerVariants = cva([\n // layout: full-width header row, title on the inline-start, indicator on the inline-end.\n // `group` anchors the trigger so the child indicator can react to its data-disabled state\n // (Radix sets data-disabled + native disabled on this button) without prop plumbing.\n \"group flex w-full items-center justify-between gap-(--space-2) px-(--space-4)\",\n // rest surface: control-* tier (neutral), with the at-rest control border\n \"bg-control-bg text-control-fg border-control-border\",\n // trigger title type role + medium weight; cursor affordance\n \"text-label font-medium cursor-pointer select-none\",\n // hover AND pressed lift to the neutral secondary hover fill (spec §4) — never a brand fill\n \"hover:bg-action-secondary-bg-hover active:bg-action-secondary-bg-hover\",\n // expand/collapse is a PLAIN reveal — base duration + verdify easing, instant under reduced\n // motion. Never the 350ms VerifiedBadge-only theatre duration (G-U3 motion-theatre gate).\n \"transition-colors duration-(--motion-duration-base) ease-(--motion-easing-verdify)\",\n \"motion-reduce:duration-(--motion-duration-instant)\",\n // target-size floor: 44px touch / 40px pointer (§7 2.5.8), padding density above it; the\n // resting height EMERGES from the floor + py, never a fixed height below the a11y floor (DEC-B)\n \"min-h-(--size-target-mobile) sm:min-h-(--size-target-desktop) py-(--space-2)\",\n // visible 2px signal-blue ring at 2px offset; persists whether the item is open or closed\n \"outline-none\",\n \"focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2\",\n // focused: the trigger border emphasises to the focus color (spec §5 --color-border-focus)\n \"focus-visible:border-border-focus\",\n // disabled — DEC-C: out of the tab order (native disabled), reduced emphasis via the disabled\n // TOKEN on the title AND the indicator (below), never a blanket opacity on the control\n \"disabled:pointer-events-none disabled:text-text-disabled\",\n]);\n\n// The indicator glyph: a neutral chevron (ghost fg), --size-icon-md, rotating to mirror the\n// expanded state. Decorative (aria-hidden); aria-expanded carries the open state, not the glyph.\n// It rotates 180deg when the item is open (data-state=open on the trigger), with the same base\n// reveal motion.\n//\n// DEC-C / spec §4·§5: the glyph is drawn with stroke=\"currentColor\", so its color is whatever\n// `text-*` resolves to on the SVG. At rest that is the distinct indicator color\n// --color-action-ghost-fg (spec §5 assigns ghost-fg to the indicator, NOT the trigger title's\n// control-fg). When the item is disabled it must flip to --color-text-disabled — the SAME token\n// the title dims to (spec §4 \"reduced emphasis\", §5 \"Disabled item's title AND indicator\"). We\n// flip the glyph color via the trigger's live data-disabled state (Radix mirrors the item's\n// disabled onto the trigger button as data-disabled + native disabled). This realizes the\n// Checkbox color-flip principle (text-action-ghost-fg -> text-text-disabled) using Select's\n// data-[disabled] mechanism (select.variants.ts) — appropriate here because the disabled state\n// is Radix-context-driven, not a prop on AccordionTrigger, so a prop-fed cva boolean can't see it.\nexport const accordionIndicatorVariants = cva([\n \"h-(--size-icon-md) w-(--size-icon-md) shrink-0 text-action-ghost-fg\",\n \"group-data-[disabled]:text-text-disabled\",\n \"transition-transform duration-(--motion-duration-base) ease-(--motion-easing-verdify)\",\n \"motion-reduce:duration-(--motion-duration-instant)\",\n // rotate the chevron when the parent trigger is open (Radix sets data-state on the trigger)\n \"data-[state=open]:rotate-180\",\n]);\n\n// The panel: the collapsible region. The canvas surface, the primary body text at the body\n// type role, panel insets from --space-4. A divider above it (border-t) continues the neutral\n// hairline from the item. The reveal animates the Radix content-height var (a STRUCTURAL keyword\n// arbitrary property, not a raw value), base duration, collapsed to its endpoints under reduced\n// motion.\nexport const accordionContentVariants = cva([\n \"overflow-hidden bg-surface-canvas text-text-primary text-body\",\n \"border-t border-border-default\",\n]);\n\n// The panel inner padding wrapper — the actual content insets (Radix Content clips height, so\n// the padding lives on an inner element to avoid jumpy collapse).\nexport const accordionContentInnerClass = \"px-(--space-4) py-(--space-4)\";\n\nexport type AccordionItemVariantProps = VariantProps<typeof accordionItemVariants>;\nexport type AccordionTriggerVariantProps = VariantProps<typeof accordionTriggerVariants>;\n"],"mappings":"AAAA,SAAS,WAA8B;AAUhC,MAAM,wBAAwB,IAAI;AAAA;AAAA,EAEvC;AAAA,EACA;AACF,CAAC;AAOM,MAAM,2BAA2B,IAAI;AAAA;AAAA;AAAA;AAAA,EAI1C;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA;AAAA;AAAA,EAGA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA;AAAA;AAAA,EAGA;AACF,CAAC;AAiBM,MAAM,6BAA6B,IAAI;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AACF,CAAC;AAOM,MAAM,2BAA2B,IAAI;AAAA,EAC1C;AAAA,EACA;AACF,CAAC;AAIM,MAAM,6BAA6B;","names":[]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent, type AccordionProps, type AccordionItemProps, type AccordionTriggerProps, type AccordionContentProps, } from "./accordion";
|
|
2
|
+
export { accordionItemVariants, accordionTriggerVariants, accordionIndicatorVariants, accordionContentVariants, accordionContentInnerClass, type AccordionItemVariantProps, type AccordionTriggerVariantProps, } from "./accordion.variants";
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,GAClC,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Accordion,
|
|
3
|
+
AccordionItem,
|
|
4
|
+
AccordionTrigger,
|
|
5
|
+
AccordionContent
|
|
6
|
+
} from "./accordion";
|
|
7
|
+
import {
|
|
8
|
+
accordionItemVariants,
|
|
9
|
+
accordionTriggerVariants,
|
|
10
|
+
accordionIndicatorVariants,
|
|
11
|
+
accordionContentVariants,
|
|
12
|
+
accordionContentInnerClass
|
|
13
|
+
} from "./accordion.variants";
|
|
14
|
+
export {
|
|
15
|
+
Accordion,
|
|
16
|
+
AccordionContent,
|
|
17
|
+
AccordionItem,
|
|
18
|
+
AccordionTrigger,
|
|
19
|
+
accordionContentInnerClass,
|
|
20
|
+
accordionContentVariants,
|
|
21
|
+
accordionIndicatorVariants,
|
|
22
|
+
accordionItemVariants,
|
|
23
|
+
accordionTriggerVariants
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/accordion/index.ts"],"sourcesContent":["export {\n Accordion,\n AccordionItem,\n AccordionTrigger,\n AccordionContent,\n type AccordionProps,\n type AccordionItemProps,\n type AccordionTriggerProps,\n type AccordionContentProps,\n} from \"./accordion\";\nexport {\n accordionItemVariants,\n accordionTriggerVariants,\n accordionIndicatorVariants,\n accordionContentVariants,\n accordionContentInnerClass,\n type AccordionItemVariantProps,\n type AccordionTriggerVariantProps,\n} from \"./accordion.variants\";\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;","names":[]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type AgentBadgeVariantProps } from "./agent-badge.variants";
|
|
3
|
+
/**
|
|
4
|
+
* The state OF THE AGENT an AgentBadge reports (spec §3). Omit for the default
|
|
5
|
+
* `neutral` marker — the common case anywhere an AI agent is the actor. A status
|
|
6
|
+
* color is spent only when the agent itself needs attention (`caution`) or has
|
|
7
|
+
* failed (`critical`); it never means "agents are risky". The brand color and the
|
|
8
|
+
* verified-status green are never AgentBadge variants — the brand is not a status,
|
|
9
|
+
* and a verified result is the VerifiedBadge molecule placed beside it.
|
|
10
|
+
*/
|
|
11
|
+
export type AgentBadgeStatus = Exclude<NonNullable<AgentBadgeVariantProps["variant"]>, "neutral">;
|
|
12
|
+
export interface AgentBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
13
|
+
/**
|
|
14
|
+
* The state of the agent the badge reports (spec §3). Omit for the default
|
|
15
|
+
* `neutral` marker. `caution` only when the agent itself needs attention — for
|
|
16
|
+
* example its authority is expiring or its grant is pending review. `critical`
|
|
17
|
+
* only when the agent itself is in a failed or revoked state. The status color is
|
|
18
|
+
* always paired with label text that names the state, so the meaning never rests
|
|
19
|
+
* on color alone (spec §3/§7).
|
|
20
|
+
*/
|
|
21
|
+
status?: AgentBadgeStatus;
|
|
22
|
+
/**
|
|
23
|
+
* One small leading glyph that reinforces the label (spec §2). Restraint, not
|
|
24
|
+
* theatre: a quiet, flat mark that reads as "agent", never a robot caricature or a
|
|
25
|
+
* spinning/pulsing animation. Decorative and `aria-hidden` — the label still
|
|
26
|
+
* carries the meaning if the icon is dropped, so the human/agent distinction never
|
|
27
|
+
* rests on color or shape alone (spec §2/§7).
|
|
28
|
+
*/
|
|
29
|
+
icon?: React.ReactNode;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* An AgentBadge marks that the actor in view is an AI agent, not a human (spec §1).
|
|
33
|
+
* Its one job is to make the kind of actor explicit wherever an action, a record, or
|
|
34
|
+
* a presence could otherwise be read as a person's — so a human and an AI agent are
|
|
35
|
+
* never confused. It encodes the platform invariant that human and AI-agent actors
|
|
36
|
+
* are both first-class: an agent is a real, supported actor shown plainly, and it is
|
|
37
|
+
* never allowed to read as the human it acts for.
|
|
38
|
+
*
|
|
39
|
+
* It LABELS the kind of actor; it does not stand in for the agent's authority or its
|
|
40
|
+
* verification (spec §1/§7). What the agent is allowed to do — its scoped
|
|
41
|
+
* permissions, who it acts for, how it is revoked — lives in the surrounding context
|
|
42
|
+
* the badge is placed in, not in the badge itself. An agent identity is still an
|
|
43
|
+
* identity, not a credential: the AgentBadge says "this is an agent", never "this
|
|
44
|
+
* agent is trusted". A verified result, if there is one, is the VerifiedBadge
|
|
45
|
+
* molecule placed BESIDE the AgentBadge, with its own meaning and accessible name —
|
|
46
|
+
* so the AgentBadge binds nothing from the action (brand) tier and never the
|
|
47
|
+
* verified-status green (brand != state, spec §3/§5/§8).
|
|
48
|
+
*
|
|
49
|
+
* It is non-interactive (spec §4/§6): it takes no focus, binds no keys, is never a
|
|
50
|
+
* tab stop, and renders no focus ring or target-size floor. An AgentBadge that must
|
|
51
|
+
* be clickable — to open the agent's identity, scope, or revocation control — is not
|
|
52
|
+
* a new variant: wrap it in a Button or link that owns the interaction, its keyboard
|
|
53
|
+
* model, and its focus ring, and let the badge stay a passive marker (spec §3/§6).
|
|
54
|
+
*/
|
|
55
|
+
export declare const AgentBadge: React.ForwardRefExoticComponent<AgentBadgeProps & React.RefAttributes<HTMLSpanElement>>;
|
|
56
|
+
//# sourceMappingURL=agent-badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-badge.d.ts","sourceRoot":"","sources":["../../../src/components/agent-badge/agent-badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAElG,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;IAC5E;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,UAAU,yFA+BtB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../../lib/cn";
|
|
4
|
+
import {
|
|
5
|
+
agentBadgeVariants,
|
|
6
|
+
agentBadgeIconClass
|
|
7
|
+
} from "./agent-badge.variants";
|
|
8
|
+
const AgentBadge = React.forwardRef(
|
|
9
|
+
function AgentBadge2({ className, status, icon, children, "aria-label": ariaLabel, ...props }, ref) {
|
|
10
|
+
const variant = status ?? "neutral";
|
|
11
|
+
const iconOnly = children == null && ariaLabel != null;
|
|
12
|
+
return (
|
|
13
|
+
// native <span>: inline text in a styled container. No tabIndex, no focus ring —
|
|
14
|
+
// an AgentBadge is a marker, not a control (spec §6/§7).
|
|
15
|
+
/* @__PURE__ */ jsxs(
|
|
16
|
+
"span",
|
|
17
|
+
{
|
|
18
|
+
ref,
|
|
19
|
+
className: cn(agentBadgeVariants({ variant }), className),
|
|
20
|
+
role: iconOnly ? "img" : void 0,
|
|
21
|
+
"aria-label": ariaLabel,
|
|
22
|
+
...props,
|
|
23
|
+
children: [
|
|
24
|
+
icon ? /* @__PURE__ */ jsx("span", { "data-testid": "agent-badge-icon", className: agentBadgeIconClass, "aria-hidden": "true", children: icon }) : null,
|
|
25
|
+
children
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
)
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
);
|
|
32
|
+
export {
|
|
33
|
+
AgentBadge
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=agent-badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/agent-badge/agent-badge.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport {\n agentBadgeVariants,\n agentBadgeIconClass,\n type AgentBadgeVariantProps,\n} from \"./agent-badge.variants\";\n\n/**\n * The state OF THE AGENT an AgentBadge reports (spec §3). Omit for the default\n * `neutral` marker — the common case anywhere an AI agent is the actor. A status\n * color is spent only when the agent itself needs attention (`caution`) or has\n * failed (`critical`); it never means \"agents are risky\". The brand color and the\n * verified-status green are never AgentBadge variants — the brand is not a status,\n * and a verified result is the VerifiedBadge molecule placed beside it.\n */\nexport type AgentBadgeStatus = Exclude<NonNullable<AgentBadgeVariantProps[\"variant\"]>, \"neutral\">;\n\nexport interface AgentBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n /**\n * The state of the agent the badge reports (spec §3). Omit for the default\n * `neutral` marker. `caution` only when the agent itself needs attention — for\n * example its authority is expiring or its grant is pending review. `critical`\n * only when the agent itself is in a failed or revoked state. The status color is\n * always paired with label text that names the state, so the meaning never rests\n * on color alone (spec §3/§7).\n */\n status?: AgentBadgeStatus;\n /**\n * One small leading glyph that reinforces the label (spec §2). Restraint, not\n * theatre: a quiet, flat mark that reads as \"agent\", never a robot caricature or a\n * spinning/pulsing animation. Decorative and `aria-hidden` — the label still\n * carries the meaning if the icon is dropped, so the human/agent distinction never\n * rests on color or shape alone (spec §2/§7).\n */\n icon?: React.ReactNode;\n}\n\n/**\n * An AgentBadge marks that the actor in view is an AI agent, not a human (spec §1).\n * Its one job is to make the kind of actor explicit wherever an action, a record, or\n * a presence could otherwise be read as a person's — so a human and an AI agent are\n * never confused. It encodes the platform invariant that human and AI-agent actors\n * are both first-class: an agent is a real, supported actor shown plainly, and it is\n * never allowed to read as the human it acts for.\n *\n * It LABELS the kind of actor; it does not stand in for the agent's authority or its\n * verification (spec §1/§7). What the agent is allowed to do — its scoped\n * permissions, who it acts for, how it is revoked — lives in the surrounding context\n * the badge is placed in, not in the badge itself. An agent identity is still an\n * identity, not a credential: the AgentBadge says \"this is an agent\", never \"this\n * agent is trusted\". A verified result, if there is one, is the VerifiedBadge\n * molecule placed BESIDE the AgentBadge, with its own meaning and accessible name —\n * so the AgentBadge binds nothing from the action (brand) tier and never the\n * verified-status green (brand != state, spec §3/§5/§8).\n *\n * It is non-interactive (spec §4/§6): it takes no focus, binds no keys, is never a\n * tab stop, and renders no focus ring or target-size floor. An AgentBadge that must\n * be clickable — to open the agent's identity, scope, or revocation control — is not\n * a new variant: wrap it in a Button or link that owns the interaction, its keyboard\n * model, and its focus ring, and let the badge stay a passive marker (spec §3/§6).\n */\nexport const AgentBadge = React.forwardRef<HTMLSpanElement, AgentBadgeProps>(\n function AgentBadge({ className, status, icon, children, \"aria-label\": ariaLabel, ...props }, ref) {\n const variant = status ?? \"neutral\";\n // The actor-kind text MUST reach the accessibility tree (spec §7): when there is a\n // visible word, that text is the accessible name and no role is needed (the spec\n // default). When the marker is shown icon-and-color only — no visible word — the\n // distinction can only be carried by the caller's aria-label, but `aria-label` on a\n // roleless <span> is prohibited by ARIA (aria-prohibited-attr) and would be silently\n // dropped, which would conflate human and agent — the one failure this molecule\n // forbids. So give the icon-only marker role=\"img\" (a graphical element with a text\n // alternative, the same pattern Avatar uses) to make the name valid and announced.\n const iconOnly = children == null && ariaLabel != null;\n return (\n // native <span>: inline text in a styled container. No tabIndex, no focus ring —\n // an AgentBadge is a marker, not a control (spec §6/§7).\n <span\n ref={ref}\n className={cn(agentBadgeVariants({ variant }), className)}\n role={iconOnly ? \"img\" : undefined}\n aria-label={ariaLabel}\n {...props}\n >\n {icon ? (\n <span data-testid=\"agent-badge-icon\" className={agentBadgeIconClass} aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n {children}\n </span>\n );\n },\n);\n"],"mappings":"AA6EM,SAQI,KARJ;AA7EN,YAAY,WAAW;AACvB,SAAS,UAAU;AACnB;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AAwDA,MAAM,aAAa,MAAM;AAAA,EAC9B,SAASA,YAAW,EAAE,WAAW,QAAQ,MAAM,UAAU,cAAc,WAAW,GAAG,MAAM,GAAG,KAAK;AACjG,UAAM,UAAU,UAAU;AAS1B,UAAM,WAAW,YAAY,QAAQ,aAAa;AAClD;AAAA;AAAA;AAAA,MAGE;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,WAAW,GAAG,mBAAmB,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,UACxD,MAAM,WAAW,QAAQ;AAAA,UACzB,cAAY;AAAA,UACX,GAAG;AAAA,UAEH;AAAA,mBACC,oBAAC,UAAK,eAAY,oBAAmB,WAAW,qBAAqB,eAAY,QAC9E,gBACH,IACE;AAAA,YACH;AAAA;AAAA;AAAA,MACH;AAAA;AAAA,EAEJ;AACF;","names":["AgentBadge"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type VariantProps } from "class-variance-authority";
|
|
2
|
+
export declare const agentBadgeVariants: (props?: ({
|
|
3
|
+
variant?: "neutral" | "caution" | "critical" | null | undefined;
|
|
4
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
5
|
+
export declare const agentBadgeIconClass = "inline-flex h-(--size-icon-sm) w-(--size-icon-sm) shrink-0";
|
|
6
|
+
export type AgentBadgeVariantProps = VariantProps<typeof agentBadgeVariants>;
|
|
7
|
+
//# sourceMappingURL=agent-badge.variants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-badge.variants.d.ts","sourceRoot":"","sources":["../../../src/components/agent-badge/agent-badge.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AA+ClE,eAAO,MAAM,kBAAkB;;8EA2B9B,CAAC;AAMF,eAAO,MAAM,mBAAmB,+DAA+D,CAAC;AAEhG,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { cva } from "class-variance-authority";
|
|
2
|
+
const agentBadgeVariants = cva(
|
|
3
|
+
[
|
|
4
|
+
// shape / layout: a pill holding the optional icon + label at the small gap
|
|
5
|
+
"inline-flex items-center gap-(--space-1) rounded-(--radius-full) border px-(--space-1)",
|
|
6
|
+
// type ROLE — caption (spec §5); the label always reads on its own, so the
|
|
7
|
+
// human/agent distinction never rests on color or shape alone
|
|
8
|
+
"text-caption font-medium",
|
|
9
|
+
// global-first: never wrap (the marker stays a single self-contained chip)
|
|
10
|
+
"whitespace-nowrap"
|
|
11
|
+
],
|
|
12
|
+
{
|
|
13
|
+
variants: {
|
|
14
|
+
// STRUCTURAL axis = spec §3 (the state of the agent the badge reports)
|
|
15
|
+
variant: {
|
|
16
|
+
// neutral (default): the standard agent marker — neutral surface, text, and
|
|
17
|
+
// border roles, no status color (spec §3)
|
|
18
|
+
neutral: "bg-surface-raised border-surface-border-muted text-text-secondary",
|
|
19
|
+
// caution: the agent itself needs attention (authority expiring, grant pending)
|
|
20
|
+
// — the matching status trio; bg is the neutral surface (spec §3)
|
|
21
|
+
caution: "bg-status-caution-bg border-status-caution-border text-status-caution-fg",
|
|
22
|
+
// critical: the agent itself failed or was revoked (access revoked, invalid
|
|
23
|
+
// credentials) — the matching status trio; bg is the neutral surface (spec §3)
|
|
24
|
+
critical: "bg-status-critical-bg border-status-critical-border text-status-critical-fg"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
defaultVariants: { variant: "neutral" }
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
const agentBadgeIconClass = "inline-flex h-(--size-icon-sm) w-(--size-icon-sm) shrink-0";
|
|
31
|
+
export {
|
|
32
|
+
agentBadgeIconClass,
|
|
33
|
+
agentBadgeVariants
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=agent-badge.variants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/agent-badge/agent-badge.variants.ts"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\n\n// An AgentBadge is a small, NON-INTERACTIVE marker that the actor in view is an AI\n// agent, not a human (spec §1). It is a pill that holds a label and an optional\n// decorative icon — NOT a control: no focus ring, no target-size floor, no state\n// transition (spec §4/§5/§6).\n//\n// `variant` is the state the badge reports (spec §3). `neutral` is the default and\n// the common case: an AgentBadge has ONE meaning — \"this actor is an AI agent\" — so\n// neutrals carry the surface. It is a quiet, persistent marker, not an alarm. A\n// status color is spent ONLY when the agent ITSELF is in a state that needs\n// attention (authority expiring) or has failed (access revoked) — never to draw\n// attention to \"agent-ness\".\n//\n// The brand color (Sovereign Violet) is NEVER an AgentBadge fill — the brand is not\n// a status and not an actor-kind marker, so the family binds nothing from the action\n// tier. The verified-status green is reserved for the VerifiedBadge placed beside it,\n// never painted here, and \"agent\" is not the verified or signal status — so the only\n// status trios this badge ever reaches for are caution and critical (spec §3/§5/§8,\n// brand != state).\n//\n// Container fill: neutral AND each status paint the SAME one raised surface. The\n// status trio's `-bg` resolves to that same surface, so the agent's state is carried\n// by the fg (label + icon) and the border, never a saturated fill (spec §3/§5/§C).\n//\n// INHERITED TOKEN-TIER CONTRAST DEFECT — flag, do NOT mirror as AA-compliant.\n// The caution/critical bindings below are the spec §5 token table verbatim and an\n// exact mirror of the committed Badge template — they are CORRECT for this component\n// to bind, and the fix does NOT belong here. But on the one raised surface (where\n// every --color-status-*-bg resolves, identical to --color-surface-raised) the\n// saturated status fg/border colors, tuned for a stronger fill, fall below WCAG 2.2 AA\n// (measured against --color-surface-raised):\n// caution --color-status-caution-fg / -border -> 1.71:1\n// critical --color-status-critical-fg / -border -> 2.76:1\n// both far under the 4.5:1 text floor (1.4.3) for the 12px caption label and under\n// the 3:1 non-text bar (1.4.11) for the border. (--color-surface-border-muted on the\n// neutral variant is likewise ~2.55:1, under 3:1, but neutral is not status-bearing.)\n// This CONTRADICTS the frozen spec §7 claim that the label \"meets the AA text-contrast\n// floor and its border meets the 3:1 non-text bar\"; that claim is false for the status\n// variants and must not be treated as true. It is a SYSTEMIC token-tier problem\n// affecting every status-bearing Badge AND AgentBadge — the @verdify/tokens saturated\n// status fg/border values were designed for a stronger fill, not this near-white\n// surface — so the fix is at the token tier, not in this component. Neither lint:gates\n// nor the jest-axe sweep catches it (gates do not check contrast; jsdom resolves no\n// computed colors), so the measured ratios are pinned as a tripwire in\n// agent-badge.test.tsx. (Hex values are intentionally omitted here: the token-binding\n// gate's raw-hex matcher scans this comment.)\nexport const agentBadgeVariants = cva(\n [\n // shape / layout: a pill holding the optional icon + label at the small gap\n \"inline-flex items-center gap-(--space-1) rounded-(--radius-full) border px-(--space-1)\",\n // type ROLE — caption (spec §5); the label always reads on its own, so the\n // human/agent distinction never rests on color or shape alone\n \"text-caption font-medium\",\n // global-first: never wrap (the marker stays a single self-contained chip)\n \"whitespace-nowrap\",\n ],\n {\n variants: {\n // STRUCTURAL axis = spec §3 (the state of the agent the badge reports)\n variant: {\n // neutral (default): the standard agent marker — neutral surface, text, and\n // border roles, no status color (spec §3)\n neutral: \"bg-surface-raised border-surface-border-muted text-text-secondary\",\n // caution: the agent itself needs attention (authority expiring, grant pending)\n // — the matching status trio; bg is the neutral surface (spec §3)\n caution: \"bg-status-caution-bg border-status-caution-border text-status-caution-fg\",\n // critical: the agent itself failed or was revoked (access revoked, invalid\n // credentials) — the matching status trio; bg is the neutral surface (spec §3)\n critical: \"bg-status-critical-bg border-status-critical-border text-status-critical-fg\",\n },\n },\n defaultVariants: { variant: \"neutral\" },\n },\n);\n\n// The optional leading icon (spec §2): one small decorative glyph at the sm icon\n// role that reinforces the label. It inherits the variant fg via `currentColor`; the\n// label still carries the meaning if the icon is dropped, so meaning never rests on\n// color OR icon alone.\nexport const agentBadgeIconClass = \"inline-flex h-(--size-icon-sm) w-(--size-icon-sm) shrink-0\";\n\nexport type AgentBadgeVariantProps = VariantProps<typeof agentBadgeVariants>;\n"],"mappings":"AAAA,SAAS,WAA8B;AA+ChC,MAAM,qBAAqB;AAAA,EAChC;AAAA;AAAA,IAEE;AAAA;AAAA;AAAA,IAGA;AAAA;AAAA,IAEA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA;AAAA,MAER,SAAS;AAAA;AAAA;AAAA,QAGP,SAAS;AAAA;AAAA;AAAA,QAGT,SAAS;AAAA;AAAA;AAAA,QAGT,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,SAAS,UAAU;AAAA,EACxC;AACF;AAMO,MAAM,sBAAsB;","names":[]}
|