@usefragments/ui 1.0.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 +21 -0
- package/README.md +318 -0
- package/dist/assets/fragments-logo.cjs +32 -0
- package/dist/assets/fragments-logo.d.ts +13 -0
- package/dist/assets/fragments-logo.d.ts.map +1 -0
- package/dist/assets/fragments-logo.js +32 -0
- package/dist/assets/ui.css +12290 -0
- package/dist/blocks/AccountSettings.block.d.ts +3 -0
- package/dist/blocks/AccountSettings.block.d.ts.map +1 -0
- package/dist/blocks/ActivityFeed.block.d.ts +3 -0
- package/dist/blocks/ActivityFeed.block.d.ts.map +1 -0
- package/dist/blocks/ActivityFeedSkeleton.block.d.ts +3 -0
- package/dist/blocks/ActivityFeedSkeleton.block.d.ts.map +1 -0
- package/dist/blocks/BlogEditor.block.d.ts +3 -0
- package/dist/blocks/BlogEditor.block.d.ts.map +1 -0
- package/dist/blocks/ChatInterface.block.d.ts +3 -0
- package/dist/blocks/ChatInterface.block.d.ts.map +1 -0
- package/dist/blocks/ChatMessages.block.d.ts +3 -0
- package/dist/blocks/ChatMessages.block.d.ts.map +1 -0
- package/dist/blocks/CheckoutForm.block.d.ts +3 -0
- package/dist/blocks/CheckoutForm.block.d.ts.map +1 -0
- package/dist/blocks/CommandPalette.block.d.ts +3 -0
- package/dist/blocks/CommandPalette.block.d.ts.map +1 -0
- package/dist/blocks/ContactForm.block.d.ts +3 -0
- package/dist/blocks/ContactForm.block.d.ts.map +1 -0
- package/dist/blocks/DashboardLayout.block.d.ts +3 -0
- package/dist/blocks/DashboardLayout.block.d.ts.map +1 -0
- package/dist/blocks/DashboardPage.block.d.ts +3 -0
- package/dist/blocks/DashboardPage.block.d.ts.map +1 -0
- package/dist/blocks/DashboardSkeleton.block.d.ts +3 -0
- package/dist/blocks/DashboardSkeleton.block.d.ts.map +1 -0
- package/dist/blocks/DataTable.block.d.ts +3 -0
- package/dist/blocks/DataTable.block.d.ts.map +1 -0
- package/dist/blocks/EmptyState.block.d.ts +3 -0
- package/dist/blocks/EmptyState.block.d.ts.map +1 -0
- package/dist/blocks/FAQSection.block.d.ts +3 -0
- package/dist/blocks/FAQSection.block.d.ts.map +1 -0
- package/dist/blocks/FeatureGrid.block.d.ts +3 -0
- package/dist/blocks/FeatureGrid.block.d.ts.map +1 -0
- package/dist/blocks/HeroSection.block.d.ts +3 -0
- package/dist/blocks/HeroSection.block.d.ts.map +1 -0
- package/dist/blocks/LoginForm.block.d.ts +3 -0
- package/dist/blocks/LoginForm.block.d.ts.map +1 -0
- package/dist/blocks/NavigationHeader.block.d.ts +3 -0
- package/dist/blocks/NavigationHeader.block.d.ts.map +1 -0
- package/dist/blocks/PaginatedTable.block.d.ts +3 -0
- package/dist/blocks/PaginatedTable.block.d.ts.map +1 -0
- package/dist/blocks/PricingComparison.block.d.ts +3 -0
- package/dist/blocks/PricingComparison.block.d.ts.map +1 -0
- package/dist/blocks/ProductCard.block.d.ts +3 -0
- package/dist/blocks/ProductCard.block.d.ts.map +1 -0
- package/dist/blocks/RegistrationForm.block.d.ts +3 -0
- package/dist/blocks/RegistrationForm.block.d.ts.map +1 -0
- package/dist/blocks/SettingsDrawer.block.d.ts +3 -0
- package/dist/blocks/SettingsDrawer.block.d.ts.map +1 -0
- package/dist/blocks/SettingsPanel.block.d.ts +3 -0
- package/dist/blocks/SettingsPanel.block.d.ts.map +1 -0
- package/dist/blocks/ShoppingCart.block.d.ts +3 -0
- package/dist/blocks/ShoppingCart.block.d.ts.map +1 -0
- package/dist/blocks/StatsCard.block.d.ts +3 -0
- package/dist/blocks/StatsCard.block.d.ts.map +1 -0
- package/dist/blocks/StatsCardSkeleton.block.d.ts +3 -0
- package/dist/blocks/StatsCardSkeleton.block.d.ts.map +1 -0
- package/dist/blocks/TableSkeleton.block.d.ts +3 -0
- package/dist/blocks/TableSkeleton.block.d.ts.map +1 -0
- package/dist/blocks/ThinkingStates.block.d.ts +3 -0
- package/dist/blocks/ThinkingStates.block.d.ts.map +1 -0
- package/dist/blocks/components/ActivityFeed.d.ts +25 -0
- package/dist/blocks/components/ActivityFeed.d.ts.map +1 -0
- package/dist/blocks/components/DashboardLayout.d.ts +13 -0
- package/dist/blocks/components/DashboardLayout.d.ts.map +1 -0
- package/dist/blocks/components/LoginForm.d.ts +16 -0
- package/dist/blocks/components/LoginForm.d.ts.map +1 -0
- package/dist/blocks/components/StatsCard.d.ts +17 -0
- package/dist/blocks/components/StatsCard.d.ts.map +1 -0
- package/dist/blocks/components/index.d.ts +9 -0
- package/dist/blocks/components/index.d.ts.map +1 -0
- package/dist/chart.cjs +236 -0
- package/dist/chart.js +219 -0
- package/dist/codeblock.cjs +599 -0
- package/dist/codeblock.js +561 -0
- package/dist/colorpicker.cjs +149 -0
- package/dist/colorpicker.js +132 -0
- package/dist/components/Accordion/Accordion.module.scss.cjs +29 -0
- package/dist/components/Accordion/Accordion.module.scss.js +29 -0
- package/dist/components/Accordion/index.cjs +201 -0
- package/dist/components/Accordion/index.d.ts +62 -0
- package/dist/components/Accordion/index.d.ts.map +1 -0
- package/dist/components/Accordion/index.js +184 -0
- package/dist/components/Alert/Alert.module.scss.cjs +41 -0
- package/dist/components/Alert/Alert.module.scss.js +41 -0
- package/dist/components/Alert/index.cjs +151 -0
- package/dist/components/Alert/index.d.ts +61 -0
- package/dist/components/Alert/index.d.ts.map +1 -0
- package/dist/components/Alert/index.js +134 -0
- package/dist/components/AppShell/AppShell.module.scss.cjs +35 -0
- package/dist/components/AppShell/AppShell.module.scss.js +35 -0
- package/dist/components/AppShell/index.cjs +285 -0
- package/dist/components/AppShell/index.d.ts +133 -0
- package/dist/components/AppShell/index.d.ts.map +1 -0
- package/dist/components/AppShell/index.js +268 -0
- package/dist/components/Avatar/Avatar.module.scss.cjs +44 -0
- package/dist/components/Avatar/Avatar.module.scss.js +44 -0
- package/dist/components/Avatar/index.cjs +238 -0
- package/dist/components/Avatar/index.d.ts +42 -0
- package/dist/components/Avatar/index.d.ts.map +1 -0
- package/dist/components/Avatar/index.js +221 -0
- package/dist/components/Badge/Badge.module.scss.cjs +51 -0
- package/dist/components/Badge/Badge.module.scss.js +51 -0
- package/dist/components/Badge/index.cjs +78 -0
- package/dist/components/Badge/index.d.ts +41 -0
- package/dist/components/Badge/index.d.ts.map +1 -0
- package/dist/components/Badge/index.js +61 -0
- package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +47 -0
- package/dist/components/BentoGrid/BentoGrid.module.scss.js +47 -0
- package/dist/components/BentoGrid/index.cjs +87 -0
- package/dist/components/BentoGrid/index.d.ts +43 -0
- package/dist/components/BentoGrid/index.d.ts.map +1 -0
- package/dist/components/BentoGrid/index.js +70 -0
- package/dist/components/Box/Box.module.scss.cjs +315 -0
- package/dist/components/Box/Box.module.scss.js +315 -0
- package/dist/components/Box/index.cjs +104 -0
- package/dist/components/Box/index.d.ts +62 -0
- package/dist/components/Box/index.d.ts.map +1 -0
- package/dist/components/Box/index.js +87 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +29 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +29 -0
- package/dist/components/Breadcrumbs/index.cjs +118 -0
- package/dist/components/Breadcrumbs/index.d.ts +32 -0
- package/dist/components/Breadcrumbs/index.d.ts.map +1 -0
- package/dist/components/Breadcrumbs/index.js +101 -0
- package/dist/components/Button/Button.module.scss.cjs +44 -0
- package/dist/components/Button/Button.module.scss.js +44 -0
- package/dist/components/Button/index.cjs +140 -0
- package/dist/components/Button/index.d.ts +39 -0
- package/dist/components/Button/index.d.ts.map +1 -0
- package/dist/components/Button/index.js +123 -0
- package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +38 -0
- package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +38 -0
- package/dist/components/ButtonGroup/index.cjs +36 -0
- package/dist/components/ButtonGroup/index.d.ts +11 -0
- package/dist/components/ButtonGroup/index.d.ts.map +1 -0
- package/dist/components/ButtonGroup/index.js +19 -0
- package/dist/components/Card/Card.module.scss.cjs +54 -0
- package/dist/components/Card/Card.module.scss.js +54 -0
- package/dist/components/Card/index.cjs +123 -0
- package/dist/components/Card/index.d.ts +62 -0
- package/dist/components/Card/index.d.ts.map +1 -0
- package/dist/components/Card/index.js +106 -0
- package/dist/components/Chart/Chart.module.scss.cjs +50 -0
- package/dist/components/Chart/Chart.module.scss.js +50 -0
- package/dist/components/Chart/index.d.ts +65 -0
- package/dist/components/Chart/index.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.module.scss.cjs +38 -0
- package/dist/components/Checkbox/Checkbox.module.scss.js +38 -0
- package/dist/components/Checkbox/index.cjs +179 -0
- package/dist/components/Checkbox/index.d.ts +68 -0
- package/dist/components/Checkbox/index.d.ts.map +1 -0
- package/dist/components/Checkbox/index.js +162 -0
- package/dist/components/Chip/Chip.module.scss.cjs +50 -0
- package/dist/components/Chip/Chip.module.scss.js +50 -0
- package/dist/components/Chip/index.cjs +138 -0
- package/dist/components/Chip/index.d.ts +38 -0
- package/dist/components/Chip/index.d.ts.map +1 -0
- package/dist/components/Chip/index.js +121 -0
- package/dist/components/Cloud/DashboardLayoutPrototypes.shared.d.ts +33 -0
- package/dist/components/Cloud/DashboardLayoutPrototypes.shared.d.ts.map +1 -0
- package/dist/components/Cloud/DashboardLayoutPrototypes.shell.d.ts +11 -0
- package/dist/components/Cloud/DashboardLayoutPrototypes.shell.d.ts.map +1 -0
- package/dist/components/Cloud/PullRequestsPrototypes.content.d.ts +5 -0
- package/dist/components/Cloud/PullRequestsPrototypes.content.d.ts.map +1 -0
- package/dist/components/Cloud/PullRequestsPrototypes.detail-panels.d.ts +4 -0
- package/dist/components/Cloud/PullRequestsPrototypes.detail-panels.d.ts.map +1 -0
- package/dist/components/Cloud/PullRequestsPrototypes.detail.d.ts +3 -0
- package/dist/components/Cloud/PullRequestsPrototypes.detail.d.ts.map +1 -0
- package/dist/components/Cloud/PullRequestsPrototypes.id-data.d.ts +86 -0
- package/dist/components/Cloud/PullRequestsPrototypes.id-data.d.ts.map +1 -0
- package/dist/components/Cloud/PullRequestsPrototypes.id-page.d.ts +2 -0
- package/dist/components/Cloud/PullRequestsPrototypes.id-page.d.ts.map +1 -0
- package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +68 -0
- package/dist/components/CodeBlock/CodeBlock.module.scss.js +68 -0
- package/dist/components/CodeBlock/index.d.ts +95 -0
- package/dist/components/CodeBlock/index.d.ts.map +1 -0
- package/dist/components/Collapsible/Collapsible.module.scss.cjs +35 -0
- package/dist/components/Collapsible/Collapsible.module.scss.js +35 -0
- package/dist/components/Collapsible/index.cjs +186 -0
- package/dist/components/Collapsible/index.d.ts +45 -0
- package/dist/components/Collapsible/index.d.ts.map +1 -0
- package/dist/components/Collapsible/index.js +186 -0
- package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +47 -0
- package/dist/components/ColorPicker/ColorPicker.module.scss.js +47 -0
- package/dist/components/ColorPicker/index.d.ts +29 -0
- package/dist/components/ColorPicker/index.d.ts.map +1 -0
- package/dist/components/Combobox/Combobox.module.scss.cjs +74 -0
- package/dist/components/Combobox/Combobox.module.scss.js +74 -0
- package/dist/components/Combobox/index.cjs +402 -0
- package/dist/components/Combobox/index.d.ts +99 -0
- package/dist/components/Combobox/index.d.ts.map +1 -0
- package/dist/components/Combobox/index.js +385 -0
- package/dist/components/Command/Command.module.scss.cjs +38 -0
- package/dist/components/Command/Command.module.scss.js +38 -0
- package/dist/components/Command/index.cjs +415 -0
- package/dist/components/Command/index.d.ts +58 -0
- package/dist/components/Command/index.d.ts.map +1 -0
- package/dist/components/Command/index.js +398 -0
- package/dist/components/ComponentDefaults/index.cjs +51 -0
- package/dist/components/ComponentDefaults/index.d.ts +15 -0
- package/dist/components/ComponentDefaults/index.d.ts.map +1 -0
- package/dist/components/ComponentDefaults/index.js +34 -0
- package/dist/components/ConversationList/ConversationList.module.scss.cjs +35 -0
- package/dist/components/ConversationList/ConversationList.module.scss.js +35 -0
- package/dist/components/ConversationList/index.cjs +168 -0
- package/dist/components/ConversationList/index.d.ts +43 -0
- package/dist/components/ConversationList/index.d.ts.map +1 -0
- package/dist/components/ConversationList/index.js +151 -0
- package/dist/components/DataTable/DataTable.icons.cjs +69 -0
- package/dist/components/DataTable/DataTable.icons.d.ts +7 -0
- package/dist/components/DataTable/DataTable.icons.d.ts.map +1 -0
- package/dist/components/DataTable/DataTable.icons.js +69 -0
- package/dist/components/DataTable/DataTable.module.scss.cjs +107 -0
- package/dist/components/DataTable/DataTable.module.scss.js +107 -0
- package/dist/components/DataTable/DataTable.support.cjs +64 -0
- package/dist/components/DataTable/DataTable.support.d.ts +10 -0
- package/dist/components/DataTable/DataTable.support.d.ts.map +1 -0
- package/dist/components/DataTable/DataTable.support.js +47 -0
- package/dist/components/DataTable/DataTable.virtual.cjs +103 -0
- package/dist/components/DataTable/DataTable.virtual.d.ts +92 -0
- package/dist/components/DataTable/DataTable.virtual.d.ts.map +1 -0
- package/dist/components/DataTable/DataTable.virtual.js +86 -0
- package/dist/components/DataTable/index.d.ts +100 -0
- package/dist/components/DataTable/index.d.ts.map +1 -0
- package/dist/components/DatePicker/DatePicker.module.scss.cjs +104 -0
- package/dist/components/DatePicker/DatePicker.module.scss.js +104 -0
- package/dist/components/DatePicker/index.d.ts +86 -0
- package/dist/components/DatePicker/index.d.ts.map +1 -0
- package/dist/components/Dialog/Dialog.module.scss.cjs +47 -0
- package/dist/components/Dialog/Dialog.module.scss.js +47 -0
- package/dist/components/Dialog/index.cjs +135 -0
- package/dist/components/Dialog/index.d.ts +81 -0
- package/dist/components/Dialog/index.d.ts.map +1 -0
- package/dist/components/Dialog/index.js +135 -0
- package/dist/components/Drawer/Drawer.module.scss.cjs +71 -0
- package/dist/components/Drawer/Drawer.module.scss.js +71 -0
- package/dist/components/Drawer/index.cjs +194 -0
- package/dist/components/Drawer/index.d.ts +95 -0
- package/dist/components/Drawer/index.d.ts.map +1 -0
- package/dist/components/Drawer/index.js +177 -0
- package/dist/components/Editor/Editor.module.scss.cjs +56 -0
- package/dist/components/Editor/Editor.module.scss.js +56 -0
- package/dist/components/Editor/index.d.ts +120 -0
- package/dist/components/Editor/index.d.ts.map +1 -0
- package/dist/components/EmptyState/EmptyState.module.scss.cjs +29 -0
- package/dist/components/EmptyState/EmptyState.module.scss.js +29 -0
- package/dist/components/EmptyState/index.cjs +65 -0
- package/dist/components/EmptyState/index.d.ts +34 -0
- package/dist/components/EmptyState/index.d.ts.map +1 -0
- package/dist/components/EmptyState/index.js +48 -0
- package/dist/components/Field/Field.module.scss.cjs +17 -0
- package/dist/components/Field/Field.module.scss.js +17 -0
- package/dist/components/Field/index.cjs +71 -0
- package/dist/components/Field/index.d.ts +54 -0
- package/dist/components/Field/index.d.ts.map +1 -0
- package/dist/components/Field/index.js +71 -0
- package/dist/components/Fieldset/Fieldset.module.scss.cjs +14 -0
- package/dist/components/Fieldset/Fieldset.module.scss.js +14 -0
- package/dist/components/Fieldset/index.cjs +25 -0
- package/dist/components/Fieldset/index.d.ts +20 -0
- package/dist/components/Fieldset/index.d.ts.map +1 -0
- package/dist/components/Fieldset/index.js +25 -0
- package/dist/components/Form/Form.module.scss.cjs +8 -0
- package/dist/components/Form/Form.module.scss.js +8 -0
- package/dist/components/Form/index.cjs +33 -0
- package/dist/components/Form/index.d.ts +17 -0
- package/dist/components/Form/index.d.ts.map +1 -0
- package/dist/components/Form/index.js +33 -0
- package/dist/components/Grid/Grid.module.scss.cjs +185 -0
- package/dist/components/Grid/Grid.module.scss.js +185 -0
- package/dist/components/Grid/index.cjs +120 -0
- package/dist/components/Grid/index.d.ts +71 -0
- package/dist/components/Grid/index.d.ts.map +1 -0
- package/dist/components/Grid/index.js +103 -0
- package/dist/components/Header/Header.module.scss.cjs +89 -0
- package/dist/components/Header/Header.module.scss.js +89 -0
- package/dist/components/Header/index.cjs +378 -0
- package/dist/components/Header/index.d.ts +155 -0
- package/dist/components/Header/index.d.ts.map +1 -0
- package/dist/components/Header/index.js +361 -0
- package/dist/components/Icon/Icon.module.scss.cjs +29 -0
- package/dist/components/Icon/Icon.module.scss.js +29 -0
- package/dist/components/Icon/index.cjs +75 -0
- package/dist/components/Icon/index.d.ts +37 -0
- package/dist/components/Icon/index.d.ts.map +1 -0
- package/dist/components/Icon/index.js +58 -0
- package/dist/components/IconButton/IconButton.module.scss.cjs +29 -0
- package/dist/components/IconButton/IconButton.module.scss.js +29 -0
- package/dist/components/IconButton/index.cjs +66 -0
- package/dist/components/IconButton/index.d.ts +38 -0
- package/dist/components/IconButton/index.d.ts.map +1 -0
- package/dist/components/IconButton/index.js +49 -0
- package/dist/components/Image/Image.module.scss.cjs +62 -0
- package/dist/components/Image/Image.module.scss.js +62 -0
- package/dist/components/Image/index.cjs +92 -0
- package/dist/components/Image/index.d.ts +33 -0
- package/dist/components/Image/index.d.ts.map +1 -0
- package/dist/components/Image/index.js +75 -0
- package/dist/components/Input/Input.module.scss.cjs +62 -0
- package/dist/components/Input/Input.module.scss.js +62 -0
- package/dist/components/Input/index.cjs +209 -0
- package/dist/components/Input/index.d.ts +64 -0
- package/dist/components/Input/index.d.ts.map +1 -0
- package/dist/components/Input/index.js +192 -0
- package/dist/components/Link/Link.module.scss.cjs +27 -0
- package/dist/components/Link/Link.module.scss.js +27 -0
- package/dist/components/Link/index.cjs +80 -0
- package/dist/components/Link/index.d.ts +23 -0
- package/dist/components/Link/index.d.ts.map +1 -0
- package/dist/components/Link/index.js +63 -0
- package/dist/components/List/List.module.scss.cjs +52 -0
- package/dist/components/List/List.module.scss.js +52 -0
- package/dist/components/List/index.cjs +65 -0
- package/dist/components/List/index.d.ts +26 -0
- package/dist/components/List/index.d.ts.map +1 -0
- package/dist/components/List/index.js +48 -0
- package/dist/components/Listbox/Listbox.module.scss.cjs +29 -0
- package/dist/components/Listbox/Listbox.module.scss.js +29 -0
- package/dist/components/Listbox/index.cjs +246 -0
- package/dist/components/Listbox/index.d.ts +32 -0
- package/dist/components/Listbox/index.d.ts.map +1 -0
- package/dist/components/Listbox/index.js +229 -0
- package/dist/components/Loading/Loading.module.scss.cjs +85 -0
- package/dist/components/Loading/Loading.module.scss.js +85 -0
- package/dist/components/Loading/index.cjs +150 -0
- package/dist/components/Loading/index.d.ts +44 -0
- package/dist/components/Loading/index.d.ts.map +1 -0
- package/dist/components/Loading/index.js +133 -0
- package/dist/components/Markdown/Markdown.module.scss.cjs +8 -0
- package/dist/components/Markdown/Markdown.module.scss.js +8 -0
- package/dist/components/Markdown/index.d.ts +15 -0
- package/dist/components/Markdown/index.d.ts.map +1 -0
- package/dist/components/Menu/Menu.module.scss.cjs +47 -0
- package/dist/components/Menu/Menu.module.scss.js +47 -0
- package/dist/components/Menu/index.cjs +283 -0
- package/dist/components/Menu/index.d.ts +96 -0
- package/dist/components/Menu/index.d.ts.map +1 -0
- package/dist/components/Menu/index.js +266 -0
- package/dist/components/Message/Message.module.scss.cjs +59 -0
- package/dist/components/Message/Message.module.scss.js +59 -0
- package/dist/components/Message/index.cjs +179 -0
- package/dist/components/Message/index.d.ts +58 -0
- package/dist/components/Message/index.d.ts.map +1 -0
- package/dist/components/Message/index.js +162 -0
- package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +89 -0
- package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +89 -0
- package/dist/components/NavigationMenu/NavigationMenuContext.cjs +40 -0
- package/dist/components/NavigationMenu/NavigationMenuContext.d.ts +58 -0
- package/dist/components/NavigationMenu/NavigationMenuContext.d.ts.map +1 -0
- package/dist/components/NavigationMenu/NavigationMenuContext.js +23 -0
- package/dist/components/NavigationMenu/index.cjs +675 -0
- package/dist/components/NavigationMenu/index.d.ts +96 -0
- package/dist/components/NavigationMenu/index.d.ts.map +1 -0
- package/dist/components/NavigationMenu/index.js +658 -0
- package/dist/components/NavigationMenu/useNavigationMenu.cjs +89 -0
- package/dist/components/NavigationMenu/useNavigationMenu.d.ts +40 -0
- package/dist/components/NavigationMenu/useNavigationMenu.d.ts.map +1 -0
- package/dist/components/NavigationMenu/useNavigationMenu.js +72 -0
- package/dist/components/Pagination/Pagination.module.scss.cjs +26 -0
- package/dist/components/Pagination/Pagination.module.scss.js +26 -0
- package/dist/components/Pagination/index.cjs +268 -0
- package/dist/components/Pagination/index.d.ts +37 -0
- package/dist/components/Pagination/index.d.ts.map +1 -0
- package/dist/components/Pagination/index.js +251 -0
- package/dist/components/Popover/Popover.module.scss.cjs +35 -0
- package/dist/components/Popover/Popover.module.scss.js +35 -0
- package/dist/components/Popover/index.cjs +178 -0
- package/dist/components/Popover/index.d.ts +90 -0
- package/dist/components/Popover/index.d.ts.map +1 -0
- package/dist/components/Popover/index.js +161 -0
- package/dist/components/Progress/Progress.module.scss.cjs +80 -0
- package/dist/components/Progress/Progress.module.scss.js +80 -0
- package/dist/components/Progress/index.cjs +166 -0
- package/dist/components/Progress/index.d.ts +40 -0
- package/dist/components/Progress/index.d.ts.map +1 -0
- package/dist/components/Progress/index.js +166 -0
- package/dist/components/Prompt/Prompt.module.scss.cjs +59 -0
- package/dist/components/Prompt/Prompt.module.scss.js +59 -0
- package/dist/components/Prompt/index.cjs +322 -0
- package/dist/components/Prompt/index.d.ts +132 -0
- package/dist/components/Prompt/index.d.ts.map +1 -0
- package/dist/components/Prompt/index.js +305 -0
- package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +56 -0
- package/dist/components/RadioGroup/RadioGroup.module.scss.js +56 -0
- package/dist/components/RadioGroup/index.cjs +182 -0
- package/dist/components/RadioGroup/index.d.ts +81 -0
- package/dist/components/RadioGroup/index.d.ts.map +1 -0
- package/dist/components/RadioGroup/index.js +165 -0
- package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +35 -0
- package/dist/components/ScrollArea/ScrollArea.module.scss.js +35 -0
- package/dist/components/ScrollArea/index.cjs +84 -0
- package/dist/components/ScrollArea/index.d.ts +24 -0
- package/dist/components/ScrollArea/index.d.ts.map +1 -0
- package/dist/components/ScrollArea/index.js +67 -0
- package/dist/components/Select/Select.module.scss.cjs +56 -0
- package/dist/components/Select/Select.module.scss.js +56 -0
- package/dist/components/Select/index.cjs +276 -0
- package/dist/components/Select/index.d.ts +87 -0
- package/dist/components/Select/index.d.ts.map +1 -0
- package/dist/components/Select/index.js +259 -0
- package/dist/components/Separator/Separator.module.scss.cjs +35 -0
- package/dist/components/Separator/Separator.module.scss.js +35 -0
- package/dist/components/Separator/index.cjs +83 -0
- package/dist/components/Separator/index.d.ts +15 -0
- package/dist/components/Separator/index.d.ts.map +1 -0
- package/dist/components/Separator/index.js +66 -0
- package/dist/components/Sidebar/Sidebar.module.scss.cjs +131 -0
- package/dist/components/Sidebar/Sidebar.module.scss.js +131 -0
- package/dist/components/Sidebar/index.cjs +763 -0
- package/dist/components/Sidebar/index.d.ts +216 -0
- package/dist/components/Sidebar/index.d.ts.map +1 -0
- package/dist/components/Sidebar/index.js +746 -0
- package/dist/components/Skeleton/Skeleton.module.scss.cjs +89 -0
- package/dist/components/Skeleton/Skeleton.module.scss.js +89 -0
- package/dist/components/Skeleton/index.cjs +110 -0
- package/dist/components/Skeleton/index.d.ts +60 -0
- package/dist/components/Skeleton/index.d.ts.map +1 -0
- package/dist/components/Skeleton/index.js +93 -0
- package/dist/components/Slider/Slider.module.scss.cjs +41 -0
- package/dist/components/Slider/Slider.module.scss.js +41 -0
- package/dist/components/Slider/index.cjs +142 -0
- package/dist/components/Slider/index.d.ts +48 -0
- package/dist/components/Slider/index.d.ts.map +1 -0
- package/dist/components/Slider/index.js +125 -0
- package/dist/components/Stack/Stack.module.scss.cjs +82 -0
- package/dist/components/Stack/Stack.module.scss.js +82 -0
- package/dist/components/Stack/index.cjs +138 -0
- package/dist/components/Stack/index.d.ts +68 -0
- package/dist/components/Stack/index.d.ts.map +1 -0
- package/dist/components/Stack/index.js +121 -0
- package/dist/components/Switch/index.d.ts +2 -0
- package/dist/components/Switch/index.d.ts.map +1 -0
- package/dist/components/Table/Table.module.scss.cjs +59 -0
- package/dist/components/Table/Table.module.scss.js +59 -0
- package/dist/components/Table/index.d.ts +61 -0
- package/dist/components/Table/index.d.ts.map +1 -0
- package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +50 -0
- package/dist/components/TableOfContents/TableOfContents.module.scss.js +50 -0
- package/dist/components/TableOfContents/index.cjs +176 -0
- package/dist/components/TableOfContents/index.d.ts +53 -0
- package/dist/components/TableOfContents/index.d.ts.map +1 -0
- package/dist/components/TableOfContents/index.js +159 -0
- package/dist/components/Tabs/Tabs.module.scss.cjs +41 -0
- package/dist/components/Tabs/Tabs.module.scss.js +41 -0
- package/dist/components/Tabs/index.cjs +93 -0
- package/dist/components/Tabs/index.d.ts +58 -0
- package/dist/components/Tabs/index.d.ts.map +1 -0
- package/dist/components/Tabs/index.js +76 -0
- package/dist/components/Text/Text.module.scss.cjs +112 -0
- package/dist/components/Text/Text.module.scss.js +112 -0
- package/dist/components/Text/index.cjs +60 -0
- package/dist/components/Text/index.d.ts +41 -0
- package/dist/components/Text/index.d.ts.map +1 -0
- package/dist/components/Text/index.js +43 -0
- package/dist/components/Textarea/Textarea.module.scss.cjs +66 -0
- package/dist/components/Textarea/Textarea.module.scss.js +66 -0
- package/dist/components/Textarea/index.cjs +150 -0
- package/dist/components/Textarea/index.d.ts +62 -0
- package/dist/components/Textarea/index.d.ts.map +1 -0
- package/dist/components/Textarea/index.js +133 -0
- package/dist/components/Theme/ThemeToggle.module.scss.cjs +23 -0
- package/dist/components/Theme/ThemeToggle.module.scss.js +23 -0
- package/dist/components/Theme/index.cjs +353 -0
- package/dist/components/Theme/index.d.ts +111 -0
- package/dist/components/Theme/index.d.ts.map +1 -0
- package/dist/components/Theme/index.js +336 -0
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +44 -0
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +44 -0
- package/dist/components/ThinkingIndicator/index.cjs +171 -0
- package/dist/components/ThinkingIndicator/index.d.ts +44 -0
- package/dist/components/ThinkingIndicator/index.d.ts.map +1 -0
- package/dist/components/ThinkingIndicator/index.js +154 -0
- package/dist/components/Toast/Toast.module.scss.cjs +63 -0
- package/dist/components/Toast/Toast.module.scss.js +63 -0
- package/dist/components/Toast/index.cjs +316 -0
- package/dist/components/Toast/index.d.ts +52 -0
- package/dist/components/Toast/index.d.ts.map +1 -0
- package/dist/components/Toast/index.js +299 -0
- package/dist/components/Toggle/Toggle.module.scss.cjs +44 -0
- package/dist/components/Toggle/Toggle.module.scss.js +44 -0
- package/dist/components/Toggle/index.cjs +99 -0
- package/dist/components/Toggle/index.d.ts +43 -0
- package/dist/components/Toggle/index.d.ts.map +1 -0
- package/dist/components/Toggle/index.js +82 -0
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +44 -0
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +44 -0
- package/dist/components/ToggleGroup/index.cjs +172 -0
- package/dist/components/ToggleGroup/index.d.ts +53 -0
- package/dist/components/ToggleGroup/index.d.ts.map +1 -0
- package/dist/components/ToggleGroup/index.js +155 -0
- package/dist/components/Tooltip/Tooltip.module.scss.cjs +14 -0
- package/dist/components/Tooltip/Tooltip.module.scss.js +14 -0
- package/dist/components/Tooltip/index.cjs +133 -0
- package/dist/components/Tooltip/index.d.ts +76 -0
- package/dist/components/Tooltip/index.d.ts.map +1 -0
- package/dist/components/Tooltip/index.js +116 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +8 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +8 -0
- package/dist/components/VisuallyHidden/index.cjs +39 -0
- package/dist/components/VisuallyHidden/index.d.ts +10 -0
- package/dist/components/VisuallyHidden/index.d.ts.map +1 -0
- package/dist/components/VisuallyHidden/index.js +22 -0
- package/dist/data-table.cjs +310 -0
- package/dist/data-table.js +293 -0
- package/dist/datepicker.cjs +459 -0
- package/dist/datepicker.js +442 -0
- package/dist/editor.cjs +572 -0
- package/dist/editor.js +555 -0
- package/dist/index.cjs +288 -0
- package/dist/index.d.ts +77 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +288 -0
- package/dist/markdown.cjs +70 -0
- package/dist/markdown.js +53 -0
- package/dist/node_modules/.pnpm/@tanstack_react-virtual@3.13.18_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@tanstack/react-virtual/dist/esm/index.cjs +68 -0
- package/dist/node_modules/.pnpm/@tanstack_react-virtual@3.13.18_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@tanstack/react-virtual/dist/esm/index.js +52 -0
- package/dist/node_modules/.pnpm/@tanstack_virtual-core@3.13.18/node_modules/@tanstack/virtual-core/dist/esm/index.cjs +822 -0
- package/dist/node_modules/.pnpm/@tanstack_virtual-core@3.13.18/node_modules/@tanstack/virtual-core/dist/esm/index.js +822 -0
- package/dist/node_modules/.pnpm/@tanstack_virtual-core@3.13.18/node_modules/@tanstack/virtual-core/dist/esm/utils.cjs +72 -0
- package/dist/node_modules/.pnpm/@tanstack_virtual-core@3.13.18/node_modules/@tanstack/virtual-core/dist/esm/utils.js +72 -0
- package/dist/table.cjs +122 -0
- package/dist/table.js +105 -0
- package/dist/utils/a11y.cjs +232 -0
- package/dist/utils/a11y.d.ts +133 -0
- package/dist/utils/a11y.d.ts.map +1 -0
- package/dist/utils/a11y.js +215 -0
- package/dist/utils/aria.cjs +41 -0
- package/dist/utils/aria.d.ts +44 -0
- package/dist/utils/aria.d.ts.map +1 -0
- package/dist/utils/aria.js +24 -0
- package/dist/utils/canonical-stamp.cjs +18 -0
- package/dist/utils/canonical-stamp.d.ts +25 -0
- package/dist/utils/canonical-stamp.d.ts.map +1 -0
- package/dist/utils/canonical-stamp.js +18 -0
- package/dist/utils/css-warning.cjs +17 -0
- package/dist/utils/css-warning.d.ts +2 -0
- package/dist/utils/css-warning.d.ts.map +1 -0
- package/dist/utils/css-warning.js +17 -0
- package/dist/utils/keyboard-shortcuts.cjs +294 -0
- package/dist/utils/keyboard-shortcuts.d.ts +293 -0
- package/dist/utils/keyboard-shortcuts.d.ts.map +1 -0
- package/dist/utils/keyboard-shortcuts.js +294 -0
- package/dist/utils/seed-derivation.cjs +478 -0
- package/dist/utils/seed-derivation.d.ts +140 -0
- package/dist/utils/seed-derivation.d.ts.map +1 -0
- package/dist/utils/seed-derivation.js +478 -0
- package/dist/utils/theme-presets.cjs +229 -0
- package/dist/utils/theme-presets.d.ts +103 -0
- package/dist/utils/theme-presets.d.ts.map +1 -0
- package/dist/utils/theme-presets.js +229 -0
- package/fragments.json +1 -0
- package/package.json +258 -0
- package/src/assets/fragments-logo.tsx +38 -0
- package/src/components/Accordion/Accordion.contract.json +169 -0
- package/src/components/Accordion/Accordion.module.scss +113 -0
- package/src/components/Accordion/Accordion.stories.tsx +106 -0
- package/src/components/Accordion/index.tsx +306 -0
- package/src/components/Alert/Alert.contract.json +157 -0
- package/src/components/Alert/Alert.module.scss +130 -0
- package/src/components/Alert/Alert.stories.tsx +119 -0
- package/src/components/Alert/index.tsx +249 -0
- package/src/components/AppShell/AppShell.contract.json +155 -0
- package/src/components/AppShell/AppShell.module.scss +239 -0
- package/src/components/AppShell/AppShell.stories.tsx +156 -0
- package/src/components/AppShell/index.tsx +518 -0
- package/src/components/Avatar/Avatar.contract.json +189 -0
- package/src/components/Avatar/Avatar.module.scss +136 -0
- package/src/components/Avatar/Avatar.stories.tsx +74 -0
- package/src/components/Avatar/index.tsx +311 -0
- package/src/components/Badge/Badge.contract.json +170 -0
- package/src/components/Badge/Badge.module.scss +146 -0
- package/src/components/Badge/Badge.stories.tsx +92 -0
- package/src/components/Badge/index.tsx +115 -0
- package/src/components/BentoGrid/BentoGrid.contract.json +135 -0
- package/src/components/BentoGrid/BentoGrid.module.scss +179 -0
- package/src/components/BentoGrid/BentoGrid.stories.tsx +98 -0
- package/src/components/BentoGrid/index.tsx +164 -0
- package/src/components/Box/Box.contract.json +423 -0
- package/src/components/Box/Box.module.scss +126 -0
- package/src/components/Box/Box.stories.tsx +150 -0
- package/src/components/Box/index.tsx +154 -0
- package/src/components/Breadcrumbs/Breadcrumbs.contract.json +143 -0
- package/src/components/Breadcrumbs/Breadcrumbs.module.scss +121 -0
- package/src/components/Breadcrumbs/Breadcrumbs.stories.tsx +87 -0
- package/src/components/Breadcrumbs/index.tsx +205 -0
- package/src/components/Button/Button.contract.json +212 -0
- package/src/components/Button/Button.module.scss +296 -0
- package/src/components/Button/Button.stories.tsx +103 -0
- package/src/components/Button/index.tsx +190 -0
- package/src/components/ButtonGroup/ButtonGroup.contract.json +140 -0
- package/src/components/ButtonGroup/ButtonGroup.module.scss +61 -0
- package/src/components/ButtonGroup/ButtonGroup.stories.tsx +97 -0
- package/src/components/ButtonGroup/index.tsx +34 -0
- package/src/components/Card/Card.contract.json +170 -0
- package/src/components/Card/Card.module.scss +212 -0
- package/src/components/Card/Card.stories.tsx +144 -0
- package/src/components/Card/index.tsx +233 -0
- package/src/components/Chart/Chart.contract.json +129 -0
- package/src/components/Chart/Chart.module.scss +128 -0
- package/src/components/Chart/Chart.stories.tsx +119 -0
- package/src/components/Chart/index.tsx +365 -0
- package/src/components/Checkbox/Checkbox.contract.json +256 -0
- package/src/components/Checkbox/Checkbox.module.scss +256 -0
- package/src/components/Checkbox/Checkbox.stories.tsx +68 -0
- package/src/components/Checkbox/index.tsx +264 -0
- package/src/components/Chip/Chip.contract.json +212 -0
- package/src/components/Chip/Chip.module.scss +265 -0
- package/src/components/Chip/Chip.stories.tsx +70 -0
- package/src/components/Chip/index.tsx +194 -0
- package/src/components/Cloud/CloudGovernanceShell.module.scss +88 -0
- package/src/components/Cloud/CloudGovernanceShell.stories.tsx +446 -0
- package/src/components/Cloud/ControlSizing.module.scss +49 -0
- package/src/components/Cloud/ControlSizing.stories.tsx +238 -0
- package/src/components/Cloud/DashboardLayoutPrototypes.module.scss +462 -0
- package/src/components/Cloud/DashboardLayoutPrototypes.shared.tsx +375 -0
- package/src/components/Cloud/DashboardLayoutPrototypes.shell.tsx +147 -0
- package/src/components/Cloud/DashboardLayoutPrototypes.stories.tsx +328 -0
- package/src/components/Cloud/PullRequestsPrototypes.content.tsx +283 -0
- package/src/components/Cloud/PullRequestsPrototypes.detail-panels.tsx +381 -0
- package/src/components/Cloud/PullRequestsPrototypes.detail.tsx +204 -0
- package/src/components/Cloud/PullRequestsPrototypes.id-data.ts +395 -0
- package/src/components/Cloud/PullRequestsPrototypes.id-page.tsx +349 -0
- package/src/components/Cloud/PullRequestsPrototypes.stories.tsx +81 -0
- package/src/components/CodeBlock/CodeBlock.contract.json +388 -0
- package/src/components/CodeBlock/CodeBlock.module.scss +384 -0
- package/src/components/CodeBlock/CodeBlock.stories.tsx +147 -0
- package/src/components/CodeBlock/index.tsx +872 -0
- package/src/components/Collapsible/Collapsible.contract.json +154 -0
- package/src/components/Collapsible/Collapsible.module.scss +119 -0
- package/src/components/Collapsible/Collapsible.stories.tsx +94 -0
- package/src/components/Collapsible/index.tsx +254 -0
- package/src/components/ColorPicker/ColorPicker.contract.json +212 -0
- package/src/components/ColorPicker/ColorPicker.module.scss +142 -0
- package/src/components/ColorPicker/ColorPicker.stories.tsx +74 -0
- package/src/components/ColorPicker/index.tsx +182 -0
- package/src/components/Combobox/Combobox.contract.json +297 -0
- package/src/components/Combobox/Combobox.module.scss +334 -0
- package/src/components/Combobox/Combobox.stories.tsx +133 -0
- package/src/components/Combobox/index.tsx +619 -0
- package/src/components/Command/Command.contract.json +165 -0
- package/src/components/Command/Command.module.scss +152 -0
- package/src/components/Command/Command.stories.tsx +102 -0
- package/src/components/Command/index.tsx +548 -0
- package/src/components/ComponentDefaults/index.tsx +56 -0
- package/src/components/ConversationList/ConversationList.contract.json +151 -0
- package/src/components/ConversationList/ConversationList.module.scss +160 -0
- package/src/components/ConversationList/ConversationList.stories.tsx +93 -0
- package/src/components/ConversationList/index.tsx +257 -0
- package/src/components/DataTable/DataTable.contract.json +302 -0
- package/src/components/DataTable/DataTable.icons.tsx +67 -0
- package/src/components/DataTable/DataTable.module.scss +429 -0
- package/src/components/DataTable/DataTable.stories.tsx +129 -0
- package/src/components/DataTable/DataTable.support.tsx +75 -0
- package/src/components/DataTable/DataTable.virtual.tsx +197 -0
- package/src/components/DataTable/index.tsx +519 -0
- package/src/components/DatePicker/DatePicker.contract.json +283 -0
- package/src/components/DatePicker/DatePicker.module.scss +434 -0
- package/src/components/DatePicker/DatePicker.stories.tsx +129 -0
- package/src/components/DatePicker/index.tsx +670 -0
- package/src/components/Dialog/Dialog.contract.json +159 -0
- package/src/components/Dialog/Dialog.module.scss +177 -0
- package/src/components/Dialog/Dialog.stories.tsx +154 -0
- package/src/components/Dialog/index.tsx +264 -0
- package/src/components/Drawer/Drawer.contract.json +161 -0
- package/src/components/Drawer/Drawer.module.scss +255 -0
- package/src/components/Drawer/Drawer.stories.tsx +144 -0
- package/src/components/Drawer/index.tsx +329 -0
- package/src/components/Editor/Editor.contract.json +263 -0
- package/src/components/Editor/Editor.module.scss +352 -0
- package/src/components/Editor/Editor.stories.tsx +99 -0
- package/src/components/Editor/index.tsx +866 -0
- package/src/components/EmptyState/EmptyState.contract.json +133 -0
- package/src/components/EmptyState/EmptyState.module.scss +131 -0
- package/src/components/EmptyState/EmptyState.stories.tsx +97 -0
- package/src/components/EmptyState/index.tsx +115 -0
- package/src/components/Field/Field.contract.json +157 -0
- package/src/components/Field/Field.module.scss +31 -0
- package/src/components/Field/Field.stories.tsx +109 -0
- package/src/components/Field/index.tsx +144 -0
- package/src/components/Fieldset/Fieldset.contract.json +117 -0
- package/src/components/Fieldset/Fieldset.module.scss +28 -0
- package/src/components/Fieldset/Fieldset.stories.tsx +116 -0
- package/src/components/Fieldset/index.tsx +57 -0
- package/src/components/Form/Form.contract.json +145 -0
- package/src/components/Form/Form.module.scss +8 -0
- package/src/components/Form/Form.stories.tsx +142 -0
- package/src/components/Form/index.tsx +54 -0
- package/src/components/Grid/Grid.contract.json +195 -0
- package/src/components/Grid/Grid.module.scss +165 -0
- package/src/components/Grid/Grid.stories.tsx +125 -0
- package/src/components/Grid/index.tsx +234 -0
- package/src/components/Header/Header.contract.json +196 -0
- package/src/components/Header/Header.module.scss +432 -0
- package/src/components/Header/Header.stories.tsx +133 -0
- package/src/components/Header/index.tsx +660 -0
- package/src/components/Icon/Icon.contract.json +194 -0
- package/src/components/Icon/Icon.module.scss +38 -0
- package/src/components/Icon/Icon.stories.tsx +80 -0
- package/src/components/Icon/index.tsx +105 -0
- package/src/components/IconButton/IconButton.module.scss +102 -0
- package/src/components/IconButton/IconButton.stories.tsx +78 -0
- package/src/components/IconButton/index.tsx +93 -0
- package/src/components/Image/Image.contract.json +209 -0
- package/src/components/Image/Image.module.scss +77 -0
- package/src/components/Image/Image.stories.tsx +109 -0
- package/src/components/Image/index.tsx +128 -0
- package/src/components/Input/Input.contract.json +325 -0
- package/src/components/Input/Input.module.scss +231 -0
- package/src/components/Input/Input.stories.tsx +104 -0
- package/src/components/Input/index.tsx +301 -0
- package/src/components/Link/Link.contract.json +180 -0
- package/src/components/Link/Link.module.scss +67 -0
- package/src/components/Link/Link.stories.tsx +67 -0
- package/src/components/Link/index.tsx +102 -0
- package/src/components/List/List.contract.json +154 -0
- package/src/components/List/List.module.scss +71 -0
- package/src/components/List/List.stories.tsx +95 -0
- package/src/components/List/index.tsx +107 -0
- package/src/components/Listbox/Listbox.contract.json +158 -0
- package/src/components/Listbox/Listbox.module.scss +113 -0
- package/src/components/Listbox/Listbox.stories.tsx +81 -0
- package/src/components/Listbox/index.tsx +309 -0
- package/src/components/Loading/Loading.contract.json +167 -0
- package/src/components/Loading/Loading.module.scss +259 -0
- package/src/components/Loading/Loading.stories.tsx +69 -0
- package/src/components/Loading/index.tsx +229 -0
- package/src/components/Markdown/Markdown.contract.json +127 -0
- package/src/components/Markdown/Markdown.module.scss +233 -0
- package/src/components/Markdown/Markdown.stories.tsx +75 -0
- package/src/components/Markdown/index.tsx +112 -0
- package/src/components/Menu/Menu.contract.json +177 -0
- package/src/components/Menu/Menu.module.scss +215 -0
- package/src/components/Menu/Menu.stories.tsx +113 -0
- package/src/components/Menu/index.tsx +411 -0
- package/src/components/Message/Message.contract.json +183 -0
- package/src/components/Message/Message.module.scss +238 -0
- package/src/components/Message/Message.stories.tsx +85 -0
- package/src/components/Message/index.tsx +293 -0
- package/src/components/NavigationMenu/NavigationMenu.contract.json +203 -0
- package/src/components/NavigationMenu/NavigationMenu.module.scss +515 -0
- package/src/components/NavigationMenu/NavigationMenu.stories.tsx +161 -0
- package/src/components/NavigationMenu/NavigationMenuContext.ts +108 -0
- package/src/components/NavigationMenu/index.tsx +1001 -0
- package/src/components/NavigationMenu/useNavigationMenu.ts +101 -0
- package/src/components/Pagination/Pagination.contract.json +163 -0
- package/src/components/Pagination/Pagination.module.scss +111 -0
- package/src/components/Pagination/Pagination.stories.tsx +81 -0
- package/src/components/Pagination/index.tsx +387 -0
- package/src/components/Popover/Popover.contract.json +163 -0
- package/src/components/Popover/Popover.module.scss +189 -0
- package/src/components/Popover/Popover.stories.tsx +152 -0
- package/src/components/Popover/index.tsx +284 -0
- package/src/components/Progress/Progress.contract.json +176 -0
- package/src/components/Progress/Progress.module.scss +185 -0
- package/src/components/Progress/Progress.stories.tsx +64 -0
- package/src/components/Progress/index.tsx +238 -0
- package/src/components/Prompt/Prompt.contract.json +213 -0
- package/src/components/Prompt/Prompt.module.scss +346 -0
- package/src/components/Prompt/Prompt.stories.tsx +93 -0
- package/src/components/Prompt/index.tsx +508 -0
- package/src/components/RadioGroup/RadioGroup.contract.json +236 -0
- package/src/components/RadioGroup/RadioGroup.module.scss +272 -0
- package/src/components/RadioGroup/RadioGroup.stories.tsx +107 -0
- package/src/components/RadioGroup/index.tsx +298 -0
- package/src/components/ScrollArea/ScrollArea.contract.json +131 -0
- package/src/components/ScrollArea/ScrollArea.module.scss +149 -0
- package/src/components/ScrollArea/ScrollArea.stories.tsx +97 -0
- package/src/components/ScrollArea/index.tsx +122 -0
- package/src/components/Select/Select.contract.json +249 -0
- package/src/components/Select/Select.module.scss +226 -0
- package/src/components/Select/Select.stories.tsx +127 -0
- package/src/components/Select/index.tsx +457 -0
- package/src/components/Separator/Separator.contract.json +143 -0
- package/src/components/Separator/Separator.module.scss +92 -0
- package/src/components/Separator/Separator.stories.tsx +84 -0
- package/src/components/Separator/index.tsx +97 -0
- package/src/components/Sidebar/Sidebar.contract.json +258 -0
- package/src/components/Sidebar/Sidebar.module.scss +650 -0
- package/src/components/Sidebar/Sidebar.stories.tsx +122 -0
- package/src/components/Sidebar/index.tsx +1168 -0
- package/src/components/Skeleton/Skeleton.contract.json +166 -0
- package/src/components/Skeleton/Skeleton.module.scss +166 -0
- package/src/components/Skeleton/Skeleton.stories.tsx +80 -0
- package/src/components/Skeleton/index.tsx +182 -0
- package/src/components/Slider/Slider.contract.json +248 -0
- package/src/components/Slider/Slider.module.scss +147 -0
- package/src/components/Slider/Slider.stories.tsx +73 -0
- package/src/components/Slider/index.tsx +189 -0
- package/src/components/Stack/Stack.contract.json +220 -0
- package/src/components/Stack/Stack.module.scss +136 -0
- package/src/components/Stack/Stack.stories.tsx +73 -0
- package/src/components/Stack/index.tsx +207 -0
- package/src/components/Switch/Switch.stories.tsx +59 -0
- package/src/components/Switch/index.ts +3 -0
- package/src/components/Table/Table.contract.json +171 -0
- package/src/components/Table/Table.module.scss +206 -0
- package/src/components/Table/Table.stories.tsx +219 -0
- package/src/components/Table/index.tsx +205 -0
- package/src/components/TableOfContents/TableOfContents.contract.json +165 -0
- package/src/components/TableOfContents/TableOfContents.module.scss +324 -0
- package/src/components/TableOfContents/TableOfContents.stories.tsx +120 -0
- package/src/components/TableOfContents/index.tsx +266 -0
- package/src/components/Tabs/Tabs.contract.json +159 -0
- package/src/components/Tabs/Tabs.module.scss +179 -0
- package/src/components/Tabs/Tabs.stories.tsx +136 -0
- package/src/components/Tabs/index.tsx +168 -0
- package/src/components/Text/Text.contract.json +241 -0
- package/src/components/Text/Text.module.scss +136 -0
- package/src/components/Text/Text.stories.tsx +133 -0
- package/src/components/Text/index.tsx +91 -0
- package/src/components/Textarea/Textarea.contract.json +308 -0
- package/src/components/Textarea/Textarea.module.scss +175 -0
- package/src/components/Textarea/Textarea.stories.tsx +107 -0
- package/src/components/Textarea/index.tsx +205 -0
- package/src/components/Theme/Theme.contract.json +152 -0
- package/src/components/Theme/Theme.stories.tsx +95 -0
- package/src/components/Theme/ThemeToggle.module.scss +91 -0
- package/src/components/Theme/index.tsx +579 -0
- package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +165 -0
- package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +107 -0
- package/src/components/ThinkingIndicator/ThinkingIndicator.stories.tsx +85 -0
- package/src/components/ThinkingIndicator/index.tsx +257 -0
- package/src/components/Toast/Toast.contract.json +181 -0
- package/src/components/Toast/Toast.module.scss +286 -0
- package/src/components/Toast/Toast.stories.tsx +91 -0
- package/src/components/Toast/index.tsx +439 -0
- package/src/components/Toggle/Toggle.contract.json +231 -0
- package/src/components/Toggle/Toggle.module.scss +244 -0
- package/src/components/Toggle/index.tsx +140 -0
- package/src/components/ToggleGroup/ToggleGroup.contract.json +206 -0
- package/src/components/ToggleGroup/ToggleGroup.module.scss +160 -0
- package/src/components/ToggleGroup/ToggleGroup.stories.tsx +114 -0
- package/src/components/ToggleGroup/index.tsx +252 -0
- package/src/components/Tooltip/Tooltip.contract.json +214 -0
- package/src/components/Tooltip/Tooltip.module.scss +87 -0
- package/src/components/Tooltip/Tooltip.stories.tsx +95 -0
- package/src/components/Tooltip/index.tsx +209 -0
- package/src/components/VisuallyHidden/VisuallyHidden.contract.json +116 -0
- package/src/components/VisuallyHidden/VisuallyHidden.module.scss +13 -0
- package/src/components/VisuallyHidden/VisuallyHidden.stories.tsx +78 -0
- package/src/components/VisuallyHidden/index.tsx +37 -0
- package/src/index.ts +728 -0
- package/src/scss.d.ts +4 -0
- package/src/styles/globals.scss +207 -0
- package/src/tokens/_computed.scss +225 -0
- package/src/tokens/_density.scss +176 -0
- package/src/tokens/_derive.scss +513 -0
- package/src/tokens/_mixins.scss +471 -0
- package/src/tokens/_palettes.scss +225 -0
- package/src/tokens/_property-registrations.scss +218 -0
- package/src/tokens/_radius.scss +107 -0
- package/src/tokens/_seeds.scss +83 -0
- package/src/tokens/_variables.scss +1045 -0
- package/src/utils/a11y.tsx +431 -0
- package/src/utils/aria.ts +63 -0
- package/src/utils/canonical-stamp.ts +47 -0
- package/src/utils/css-warning.ts +29 -0
- package/src/utils/keyboard-shortcuts.ts +502 -0
- package/src/utils/seed-derivation.ts +706 -0
- package/src/utils/theme-presets.ts +360 -0
|
@@ -0,0 +1,706 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Seed Derivation System
|
|
3
|
+
*
|
|
4
|
+
* Canonical TypeScript implementation of the seed-based token derivation system.
|
|
5
|
+
* This is the single source of truth — the SCSS derivation in
|
|
6
|
+
* libs/ui/src/tokens/_derive.scss mirrors this logic.
|
|
7
|
+
*
|
|
8
|
+
* Consumers (the docs app and configureTheme) should import from here or via
|
|
9
|
+
* the @usefragments/ui barrel export.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
// ============================================
|
|
13
|
+
// Types
|
|
14
|
+
// ============================================
|
|
15
|
+
|
|
16
|
+
export type NeutralPalette = 'stone' | 'ice' | 'sand' | 'earth' | 'fire' | 'fragments';
|
|
17
|
+
export type DensityPreset = 'compact' | 'default' | 'relaxed';
|
|
18
|
+
export type RadiusStyle = 'sharp' | 'subtle' | 'default' | 'rounded' | 'pill';
|
|
19
|
+
|
|
20
|
+
export interface SeedConfig {
|
|
21
|
+
brand: string;
|
|
22
|
+
neutral: NeutralPalette;
|
|
23
|
+
density: DensityPreset;
|
|
24
|
+
radiusStyle: RadiusStyle;
|
|
25
|
+
danger?: string;
|
|
26
|
+
success?: string;
|
|
27
|
+
warning?: string;
|
|
28
|
+
info?: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
interface PaletteShades {
|
|
32
|
+
50: string;
|
|
33
|
+
100: string;
|
|
34
|
+
200: string;
|
|
35
|
+
300: string;
|
|
36
|
+
400: string;
|
|
37
|
+
500: string;
|
|
38
|
+
600: string;
|
|
39
|
+
700: string;
|
|
40
|
+
800: string;
|
|
41
|
+
900: string;
|
|
42
|
+
950: string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
interface RadiusConfig {
|
|
46
|
+
sm: string;
|
|
47
|
+
md: string;
|
|
48
|
+
lg: string;
|
|
49
|
+
xl: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// ============================================
|
|
53
|
+
// Neutral Palettes
|
|
54
|
+
// ============================================
|
|
55
|
+
|
|
56
|
+
export const PALETTES: Record<NeutralPalette, PaletteShades> = {
|
|
57
|
+
// Stone - Muted cool neutrals (default, balanced)
|
|
58
|
+
stone: {
|
|
59
|
+
50: '#fafafa',
|
|
60
|
+
100: '#f4f4f5',
|
|
61
|
+
200: '#e4e4e7',
|
|
62
|
+
300: '#d4d4d8',
|
|
63
|
+
400: '#a1a1aa',
|
|
64
|
+
500: '#71717a',
|
|
65
|
+
600: '#52525b',
|
|
66
|
+
700: '#3f3f46',
|
|
67
|
+
800: '#27272a',
|
|
68
|
+
900: '#18181b',
|
|
69
|
+
950: '#09090b',
|
|
70
|
+
},
|
|
71
|
+
// Ice - Cool blue tones (professional, tech)
|
|
72
|
+
// Dark shades are muted for comfortable dark mode backgrounds
|
|
73
|
+
ice: {
|
|
74
|
+
50: '#f0f9ff',
|
|
75
|
+
100: '#e0f2fe',
|
|
76
|
+
200: '#bae6fd',
|
|
77
|
+
300: '#7dd3fc',
|
|
78
|
+
400: '#38bdf8',
|
|
79
|
+
500: '#0ea5e9',
|
|
80
|
+
600: '#0284c7',
|
|
81
|
+
700: '#0369a1',
|
|
82
|
+
800: '#0f2d3d', // Darkened and desaturated for dark mode
|
|
83
|
+
900: '#0a1f2c', // Darkened and desaturated for dark mode
|
|
84
|
+
950: '#06141c', // Very dark blue-gray for dark mode bg
|
|
85
|
+
},
|
|
86
|
+
// Sand - Warm brown/terracotta tones (organic, earthy)
|
|
87
|
+
// Dark shades are muted for comfortable dark mode backgrounds
|
|
88
|
+
sand: {
|
|
89
|
+
50: '#fdf8f3',
|
|
90
|
+
100: '#f5ebe0',
|
|
91
|
+
200: '#e8d5c4',
|
|
92
|
+
300: '#d4b89c',
|
|
93
|
+
400: '#c19a6b',
|
|
94
|
+
500: '#a67c52',
|
|
95
|
+
600: '#8b5e34',
|
|
96
|
+
700: '#6f4518',
|
|
97
|
+
800: '#231a12', // Darkened and desaturated for dark mode
|
|
98
|
+
900: '#181210', // Darkened and desaturated for dark mode
|
|
99
|
+
950: '#0f0c09', // Very dark warm gray for dark mode bg
|
|
100
|
+
},
|
|
101
|
+
// Earth - Green/olive tones (natural, growth)
|
|
102
|
+
// Dark shades are muted for comfortable dark mode backgrounds
|
|
103
|
+
earth: {
|
|
104
|
+
50: '#f5f7f2',
|
|
105
|
+
100: '#e8ede3',
|
|
106
|
+
200: '#d1dbc6',
|
|
107
|
+
300: '#b3c4a0',
|
|
108
|
+
400: '#8fa872',
|
|
109
|
+
500: '#6b8c4e',
|
|
110
|
+
600: '#517035',
|
|
111
|
+
700: '#3d5527',
|
|
112
|
+
800: '#1a2316', // Darkened and desaturated for dark mode
|
|
113
|
+
900: '#121810', // Darkened and desaturated for dark mode
|
|
114
|
+
950: '#0a0f08', // Very dark green-gray for dark mode bg
|
|
115
|
+
},
|
|
116
|
+
// Fire - Warm red/orange tones (energy, passion)
|
|
117
|
+
// Dark shades are muted for comfortable dark mode backgrounds
|
|
118
|
+
fire: {
|
|
119
|
+
50: '#fff7ed',
|
|
120
|
+
100: '#ffedd5',
|
|
121
|
+
200: '#fed7aa',
|
|
122
|
+
300: '#fdba74',
|
|
123
|
+
400: '#fb923c',
|
|
124
|
+
500: '#f97316',
|
|
125
|
+
600: '#ea580c',
|
|
126
|
+
700: '#c2410c',
|
|
127
|
+
800: '#2d1810', // Darkened and desaturated for dark mode
|
|
128
|
+
900: '#1c100a', // Darkened and desaturated for dark mode
|
|
129
|
+
950: '#120a06', // Very dark warm gray for dark mode bg
|
|
130
|
+
},
|
|
131
|
+
// Fragments - Rich saturated green tones (the Fragments brand palette)
|
|
132
|
+
// Dark shades anchor to the Fragments marketing aesthetic
|
|
133
|
+
fragments: {
|
|
134
|
+
50: '#f0f7f3',
|
|
135
|
+
100: '#dceee3',
|
|
136
|
+
200: '#b8ddc6',
|
|
137
|
+
300: '#88c5a0',
|
|
138
|
+
400: '#5aaa7a',
|
|
139
|
+
500: '#3d8f60',
|
|
140
|
+
600: '#2d7049',
|
|
141
|
+
700: '#235536',
|
|
142
|
+
800: '#1a3025', // Dark card surface
|
|
143
|
+
900: '#142318', // Dark surface
|
|
144
|
+
950: '#0d1f17', // Darkest bg
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
// ============================================
|
|
149
|
+
// Semantic Colors (per-palette defaults)
|
|
150
|
+
// ============================================
|
|
151
|
+
|
|
152
|
+
interface SemanticColors {
|
|
153
|
+
success: string;
|
|
154
|
+
warning: string;
|
|
155
|
+
danger: string;
|
|
156
|
+
info: string;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Default semantic colors for each palette.
|
|
161
|
+
* These are carefully chosen to complement each palette's tone.
|
|
162
|
+
*/
|
|
163
|
+
export const PALETTE_SEMANTIC_COLORS: Record<NeutralPalette, SemanticColors> = {
|
|
164
|
+
// Stone - Standard semantic colors (vibrant, universal)
|
|
165
|
+
stone: {
|
|
166
|
+
success: '#22c55e', // Green 500
|
|
167
|
+
warning: '#f59e0b', // Amber 500
|
|
168
|
+
danger: '#ef4444', // Red 500
|
|
169
|
+
info: '#3b82f6', // Blue 500
|
|
170
|
+
},
|
|
171
|
+
// Ice - Cool blue-shifted semantic colors
|
|
172
|
+
ice: {
|
|
173
|
+
success: '#10b981', // Emerald 500 (cooler green)
|
|
174
|
+
warning: '#f59e0b', // Amber 500
|
|
175
|
+
danger: '#f43f5e', // Rose 500 (cooler red)
|
|
176
|
+
info: '#0ea5e9', // Sky 500 (matches palette)
|
|
177
|
+
},
|
|
178
|
+
// Earth - Natural, muted semantic colors
|
|
179
|
+
earth: {
|
|
180
|
+
success: '#22c55e', // Green 500 (natural)
|
|
181
|
+
warning: '#d97706', // Amber 600 (earthier)
|
|
182
|
+
danger: '#dc2626', // Red 600 (deeper)
|
|
183
|
+
info: '#0284c7', // Sky 600 (muted)
|
|
184
|
+
},
|
|
185
|
+
// Sand - Warm, terracotta-shifted semantic colors
|
|
186
|
+
sand: {
|
|
187
|
+
success: '#16a34a', // Green 600 (warmer)
|
|
188
|
+
warning: '#ea580c', // Orange 600 (warm)
|
|
189
|
+
danger: '#dc2626', // Red 600
|
|
190
|
+
info: '#2563eb', // Blue 600
|
|
191
|
+
},
|
|
192
|
+
// Fire - Warm, vibrant semantic colors
|
|
193
|
+
fire: {
|
|
194
|
+
success: '#16a34a', // Green 600
|
|
195
|
+
warning: '#f59e0b', // Amber 500
|
|
196
|
+
danger: '#dc2626', // Red 600 (complements orange)
|
|
197
|
+
info: '#2563eb', // Blue 600
|
|
198
|
+
},
|
|
199
|
+
// Fragments - Brand-complementary semantic colors
|
|
200
|
+
fragments: {
|
|
201
|
+
success: '#39d98a', // Vibrant green (brand signature)
|
|
202
|
+
warning: '#f59e0b', // Amber 500
|
|
203
|
+
danger: '#ef4444', // Red 500
|
|
204
|
+
info: '#3b82f6', // Blue 500
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Get semantic colors for a palette, with optional overrides
|
|
210
|
+
*/
|
|
211
|
+
export function getSemanticColors(
|
|
212
|
+
palette: NeutralPalette,
|
|
213
|
+
overrides?: Partial<SemanticColors>
|
|
214
|
+
): SemanticColors {
|
|
215
|
+
const defaults = PALETTE_SEMANTIC_COLORS[palette];
|
|
216
|
+
return {
|
|
217
|
+
success: overrides?.success || defaults.success,
|
|
218
|
+
warning: overrides?.warning || defaults.warning,
|
|
219
|
+
danger: overrides?.danger || defaults.danger,
|
|
220
|
+
info: overrides?.info || defaults.info,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// ============================================
|
|
225
|
+
// Radius Styles
|
|
226
|
+
// ============================================
|
|
227
|
+
|
|
228
|
+
export const RADIUS_STYLES: Record<RadiusStyle, RadiusConfig> = {
|
|
229
|
+
sharp: {
|
|
230
|
+
sm: '0',
|
|
231
|
+
md: '0',
|
|
232
|
+
lg: '0',
|
|
233
|
+
xl: '0',
|
|
234
|
+
},
|
|
235
|
+
subtle: {
|
|
236
|
+
sm: '0.125rem',
|
|
237
|
+
md: '0.25rem',
|
|
238
|
+
lg: '0.375rem',
|
|
239
|
+
xl: '0.5rem',
|
|
240
|
+
},
|
|
241
|
+
default: {
|
|
242
|
+
sm: '0.25rem',
|
|
243
|
+
md: '0.429rem',
|
|
244
|
+
lg: '0.571rem',
|
|
245
|
+
xl: '0.857rem',
|
|
246
|
+
},
|
|
247
|
+
rounded: {
|
|
248
|
+
sm: '0.375rem',
|
|
249
|
+
md: '0.5rem',
|
|
250
|
+
lg: '0.75rem',
|
|
251
|
+
xl: '1rem',
|
|
252
|
+
},
|
|
253
|
+
pill: {
|
|
254
|
+
sm: '0.5rem',
|
|
255
|
+
md: '0.75rem',
|
|
256
|
+
lg: '1rem',
|
|
257
|
+
xl: '1.5rem',
|
|
258
|
+
},
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
// ============================================
|
|
262
|
+
// Color Utility Functions
|
|
263
|
+
// ============================================
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Parse a hex color to RGB values
|
|
267
|
+
*/
|
|
268
|
+
function hexToRgb(hex: string): { r: number; g: number; b: number } {
|
|
269
|
+
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
270
|
+
if (!result) {
|
|
271
|
+
throw new Error(`Invalid hex color: ${hex}`);
|
|
272
|
+
}
|
|
273
|
+
return {
|
|
274
|
+
r: parseInt(result[1], 16),
|
|
275
|
+
g: parseInt(result[2], 16),
|
|
276
|
+
b: parseInt(result[3], 16),
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Convert RGB to hex
|
|
282
|
+
*/
|
|
283
|
+
function rgbToHex(r: number, g: number, b: number): string {
|
|
284
|
+
const toHex = (n: number) => {
|
|
285
|
+
const clamped = Math.max(0, Math.min(255, Math.round(n)));
|
|
286
|
+
return clamped.toString(16).padStart(2, '0');
|
|
287
|
+
};
|
|
288
|
+
return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Lighten a color by a percentage
|
|
293
|
+
*/
|
|
294
|
+
function lighten(hex: string, percent: number): string {
|
|
295
|
+
const { r, g, b } = hexToRgb(hex);
|
|
296
|
+
const factor = percent / 100;
|
|
297
|
+
return rgbToHex(
|
|
298
|
+
r + (255 - r) * factor,
|
|
299
|
+
g + (255 - g) * factor,
|
|
300
|
+
b + (255 - b) * factor
|
|
301
|
+
);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Darken a color by a percentage
|
|
306
|
+
*/
|
|
307
|
+
function darken(hex: string, percent: number): string {
|
|
308
|
+
const { r, g, b } = hexToRgb(hex);
|
|
309
|
+
const factor = 1 - percent / 100;
|
|
310
|
+
return rgbToHex(r * factor, g * factor, b * factor);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Mix two colors together
|
|
315
|
+
*/
|
|
316
|
+
function mixColors(color1: string, color2: string, weight: number): string {
|
|
317
|
+
const c1 = hexToRgb(color1);
|
|
318
|
+
const c2 = hexToRgb(color2);
|
|
319
|
+
const w = weight / 100;
|
|
320
|
+
|
|
321
|
+
return rgbToHex(
|
|
322
|
+
c1.r * w + c2.r * (1 - w),
|
|
323
|
+
c1.g * w + c2.g * (1 - w),
|
|
324
|
+
c1.b * w + c2.b * (1 - w)
|
|
325
|
+
);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
// ============================================
|
|
329
|
+
// Derivation Functions
|
|
330
|
+
// ============================================
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Get HSL lightness (0-100) from a hex color
|
|
334
|
+
*/
|
|
335
|
+
function getHslLightness(hex: string): number {
|
|
336
|
+
const { r, g, b } = hexToRgb(hex);
|
|
337
|
+
const rNorm = r / 255;
|
|
338
|
+
const gNorm = g / 255;
|
|
339
|
+
const bNorm = b / 255;
|
|
340
|
+
const max = Math.max(rNorm, gNorm, bNorm);
|
|
341
|
+
const min = Math.min(rNorm, gNorm, bNorm);
|
|
342
|
+
return ((max + min) / 2) * 100;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Derive hover state for accent color.
|
|
347
|
+
* Handles extreme lightness values (near-black/near-white) by reversing
|
|
348
|
+
* the adjustment direction to ensure a visible hover state.
|
|
349
|
+
*/
|
|
350
|
+
export function deriveAccentHover(base: string, isDark: boolean): string {
|
|
351
|
+
const l = getHslLightness(base);
|
|
352
|
+
|
|
353
|
+
if (isDark) {
|
|
354
|
+
if (l > 85) {
|
|
355
|
+
// Very light accent on dark bg: darken for visible hover
|
|
356
|
+
return darken(base, 10);
|
|
357
|
+
}
|
|
358
|
+
// Standard dark mode: lighten for hover
|
|
359
|
+
return lighten(base, 8);
|
|
360
|
+
} else {
|
|
361
|
+
if (l < 15) {
|
|
362
|
+
// Very dark accent on light bg: lighten for visible hover
|
|
363
|
+
return lighten(base, 18);
|
|
364
|
+
}
|
|
365
|
+
// Standard light mode: darken for hover
|
|
366
|
+
return darken(base, 10);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* Derive active state for accent color.
|
|
372
|
+
* Handles extreme lightness values (near-black/near-white) by reversing
|
|
373
|
+
* the adjustment direction to ensure a visible active/pressed state.
|
|
374
|
+
*/
|
|
375
|
+
export function deriveAccentActive(base: string, isDark: boolean): string {
|
|
376
|
+
const l = getHslLightness(base);
|
|
377
|
+
|
|
378
|
+
if (isDark) {
|
|
379
|
+
if (l > 85) {
|
|
380
|
+
// Very light accent on dark bg: darken more for active
|
|
381
|
+
return darken(base, 16);
|
|
382
|
+
}
|
|
383
|
+
// Standard dark mode: lighten more for active
|
|
384
|
+
return lighten(base, 14);
|
|
385
|
+
} else {
|
|
386
|
+
if (l < 15) {
|
|
387
|
+
// Very dark accent on light bg: lighten more for active
|
|
388
|
+
return lighten(base, 28);
|
|
389
|
+
}
|
|
390
|
+
// Standard light mode: darken more for active
|
|
391
|
+
return darken(base, 18);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* Derive accent color for dark mode visibility
|
|
397
|
+
* For colored brands, adjust them to be visible on dark backgrounds
|
|
398
|
+
* For very dark/grayscale brands, use light gray
|
|
399
|
+
*/
|
|
400
|
+
export function deriveDarkAccent(brand: string): string {
|
|
401
|
+
const { r, g, b } = hexToRgb(brand);
|
|
402
|
+
|
|
403
|
+
// Check if the brand is essentially grayscale (low saturation)
|
|
404
|
+
const max = Math.max(r, g, b);
|
|
405
|
+
const min = Math.min(r, g, b);
|
|
406
|
+
const saturation = max === 0 ? 0 : (max - min) / max;
|
|
407
|
+
|
|
408
|
+
// For grayscale/neutral brands (like #18181b), use light gray
|
|
409
|
+
if (saturation < 0.15) {
|
|
410
|
+
return '#f2f2f2';
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
// For bright, saturated colors (like pure red #ff0000), they're already
|
|
414
|
+
// visible on dark backgrounds - just return them as-is or with minimal adjustment
|
|
415
|
+
const brightness = max / 255;
|
|
416
|
+
if (brightness > 0.9 && saturation > 0.7) {
|
|
417
|
+
// Already bright and saturated, minimal lightening to preserve color
|
|
418
|
+
return lighten(brand, 10);
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
// For medium brightness colors, moderate lightening
|
|
422
|
+
if (brightness > 0.6) {
|
|
423
|
+
return lighten(brand, 20);
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
// For darker colors, lighten more to be visible on dark backgrounds
|
|
427
|
+
const luminance = 0.2126 * (r / 255) + 0.7152 * (g / 255) + 0.0722 * (b / 255);
|
|
428
|
+
const lightenAmount = luminance < 0.2 ? 45 : 30;
|
|
429
|
+
|
|
430
|
+
return lighten(brand, lightenAmount);
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* Interpolate between two shades for half-steps
|
|
435
|
+
*/
|
|
436
|
+
function interpolateShade(
|
|
437
|
+
palette: PaletteShades,
|
|
438
|
+
level: number
|
|
439
|
+
): string {
|
|
440
|
+
const levels = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
|
|
441
|
+
|
|
442
|
+
// If it's a standard level, return directly
|
|
443
|
+
if (level in palette) {
|
|
444
|
+
return palette[level as keyof PaletteShades];
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
// Find surrounding levels
|
|
448
|
+
let lower = levels[0];
|
|
449
|
+
let upper = levels[levels.length - 1];
|
|
450
|
+
|
|
451
|
+
for (const l of levels) {
|
|
452
|
+
if (l < level) lower = l;
|
|
453
|
+
if (l > level && upper === levels[levels.length - 1]) upper = l;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
const lowerColor = palette[lower as keyof PaletteShades];
|
|
457
|
+
const upperColor = palette[upper as keyof PaletteShades];
|
|
458
|
+
const ratio = ((level - lower) / (upper - lower)) * 100;
|
|
459
|
+
|
|
460
|
+
return mixColors(upperColor, lowerColor, ratio);
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
/**
|
|
464
|
+
* Derive surface tokens from a neutral palette
|
|
465
|
+
* For colorful palettes (ice, earth, sand, fire), use tinted backgrounds
|
|
466
|
+
* For stone palette, use neutral white/dark backgrounds
|
|
467
|
+
*/
|
|
468
|
+
export function deriveSurfaces(
|
|
469
|
+
palette: PaletteShades,
|
|
470
|
+
isDark: boolean,
|
|
471
|
+
paletteName: NeutralPalette = 'stone'
|
|
472
|
+
): {
|
|
473
|
+
primary: string;
|
|
474
|
+
secondary: string;
|
|
475
|
+
tertiary: string;
|
|
476
|
+
elevated: string;
|
|
477
|
+
subtle: string;
|
|
478
|
+
hover: string;
|
|
479
|
+
active: string;
|
|
480
|
+
} {
|
|
481
|
+
// Stone palette uses neutral backgrounds (white in light, dark grays in dark)
|
|
482
|
+
const isColorful = paletteName !== 'stone';
|
|
483
|
+
|
|
484
|
+
if (isDark) {
|
|
485
|
+
return {
|
|
486
|
+
primary: palette[950],
|
|
487
|
+
secondary: palette[900],
|
|
488
|
+
tertiary: palette[800],
|
|
489
|
+
elevated: interpolateShade(palette, 875),
|
|
490
|
+
subtle: interpolateShade(palette, 925),
|
|
491
|
+
hover: 'rgba(255, 255, 255, 0.05)',
|
|
492
|
+
active: 'rgba(255, 255, 255, 0.08)',
|
|
493
|
+
};
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
// Light mode: colorful palettes get tinted backgrounds
|
|
497
|
+
if (isColorful) {
|
|
498
|
+
return {
|
|
499
|
+
primary: palette[50],
|
|
500
|
+
secondary: palette[100],
|
|
501
|
+
tertiary: palette[200],
|
|
502
|
+
elevated: '#ffffff',
|
|
503
|
+
subtle: palette[50],
|
|
504
|
+
hover: 'rgba(0, 0, 0, 0.04)',
|
|
505
|
+
active: 'rgba(0, 0, 0, 0.06)',
|
|
506
|
+
};
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
// Stone palette: neutral white backgrounds
|
|
510
|
+
return {
|
|
511
|
+
primary: '#ffffff',
|
|
512
|
+
secondary: palette[100],
|
|
513
|
+
tertiary: palette[100],
|
|
514
|
+
elevated: '#ffffff',
|
|
515
|
+
subtle: palette[50],
|
|
516
|
+
hover: 'rgba(0, 0, 0, 0.04)',
|
|
517
|
+
active: 'rgba(0, 0, 0, 0.06)',
|
|
518
|
+
};
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
/**
|
|
522
|
+
* Derive text tokens from a neutral palette.
|
|
523
|
+
*
|
|
524
|
+
* For colorful palettes (ice, earth, sand, fire) in light mode, palette
|
|
525
|
+
* shades are saturated colors that may lack sufficient luminance contrast
|
|
526
|
+
* against their own tinted backgrounds (palette[50]). `ensureContrast`
|
|
527
|
+
* progressively darkens until WCAG AAA (7:1) is met.
|
|
528
|
+
*/
|
|
529
|
+
export function deriveText(
|
|
530
|
+
palette: PaletteShades,
|
|
531
|
+
isDark: boolean,
|
|
532
|
+
paletteName: NeutralPalette = 'stone'
|
|
533
|
+
): {
|
|
534
|
+
primary: string;
|
|
535
|
+
secondary: string;
|
|
536
|
+
tertiary: string;
|
|
537
|
+
inverse: string;
|
|
538
|
+
} {
|
|
539
|
+
if (isDark) {
|
|
540
|
+
return {
|
|
541
|
+
primary: palette[100],
|
|
542
|
+
secondary: palette[400],
|
|
543
|
+
// 90/10 mix of palette[400]/palette[500] for WCAG AAA 7:1
|
|
544
|
+
// against palette[950] backgrounds (pure palette[500] gives ~4.1:1)
|
|
545
|
+
tertiary: mixColors(palette[400], palette[500], 90),
|
|
546
|
+
inverse: palette[900],
|
|
547
|
+
};
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
// Light mode background — stone uses white, colorful palettes use palette[50]
|
|
551
|
+
const bgPrimary = paletteName === 'stone' ? '#ffffff' : palette[50];
|
|
552
|
+
const aaaTarget = 7.0;
|
|
553
|
+
|
|
554
|
+
return {
|
|
555
|
+
primary: palette[900],
|
|
556
|
+
secondary: ensureContrast(palette[600], bgPrimary, aaaTarget),
|
|
557
|
+
tertiary: ensureContrast(mixColors(palette[500], palette[600], 20), bgPrimary, aaaTarget),
|
|
558
|
+
inverse: palette[100],
|
|
559
|
+
};
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
/**
|
|
563
|
+
* Derive border tokens from a neutral palette
|
|
564
|
+
*/
|
|
565
|
+
export function deriveBorders(
|
|
566
|
+
palette: PaletteShades,
|
|
567
|
+
isDark: boolean
|
|
568
|
+
): {
|
|
569
|
+
default: string;
|
|
570
|
+
strong: string;
|
|
571
|
+
} {
|
|
572
|
+
if (isDark) {
|
|
573
|
+
return {
|
|
574
|
+
default: 'rgba(255, 255, 255, 0.08)',
|
|
575
|
+
strong: 'rgba(255, 255, 255, 0.14)',
|
|
576
|
+
};
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
return {
|
|
580
|
+
default: 'rgba(0, 0, 0, 0.08)',
|
|
581
|
+
strong: 'rgba(0, 0, 0, 0.14)',
|
|
582
|
+
};
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
/**
|
|
586
|
+
* Derive shadow tokens
|
|
587
|
+
*/
|
|
588
|
+
export function deriveShadows(isDark: boolean): {
|
|
589
|
+
sm: string;
|
|
590
|
+
md: string;
|
|
591
|
+
lg: string;
|
|
592
|
+
} {
|
|
593
|
+
if (isDark) {
|
|
594
|
+
return {
|
|
595
|
+
sm: '0 1px 2px 0 rgba(0, 0, 0, 0.2)',
|
|
596
|
+
md: '0 2px 4px -1px rgba(0, 0, 0, 0.25), 0 1px 3px -2px rgba(0, 0, 0, 0.2)',
|
|
597
|
+
lg: '0 8px 12px -3px rgba(0, 0, 0, 0.35), 0 3px 5px -4px rgba(0, 0, 0, 0.25)',
|
|
598
|
+
};
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
return {
|
|
602
|
+
sm: '0 1px 2px 0 rgba(0, 0, 0, 0.03)',
|
|
603
|
+
md: '0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 1px 3px -2px rgba(0, 0, 0, 0.04)',
|
|
604
|
+
lg: '0 8px 12px -3px rgba(0, 0, 0, 0.08), 0 3px 5px -4px rgba(0, 0, 0, 0.05)',
|
|
605
|
+
};
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
// ============================================
|
|
609
|
+
// WCAG 2.1 Contrast Utilities
|
|
610
|
+
// ============================================
|
|
611
|
+
|
|
612
|
+
/**
|
|
613
|
+
* Linearize an sRGB channel (0-255) per WCAG 2.1
|
|
614
|
+
*/
|
|
615
|
+
function srgbLinearize(channel: number): number {
|
|
616
|
+
const srgb = channel / 255;
|
|
617
|
+
return srgb <= 0.04045
|
|
618
|
+
? srgb / 12.92
|
|
619
|
+
: Math.pow((srgb + 0.055) / 1.055, 2.4);
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
/**
|
|
623
|
+
* WCAG 2.1 relative luminance
|
|
624
|
+
*/
|
|
625
|
+
function wcagLuminance(hex: string): number {
|
|
626
|
+
const { r, g, b } = hexToRgb(hex);
|
|
627
|
+
return 0.2126 * srgbLinearize(r) + 0.7152 * srgbLinearize(g) + 0.0722 * srgbLinearize(b);
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
/**
|
|
631
|
+
* WCAG 2.1 contrast ratio between two hex colors
|
|
632
|
+
*/
|
|
633
|
+
function wcagContrast(fg: string, bg: string): number {
|
|
634
|
+
const l1 = wcagLuminance(fg);
|
|
635
|
+
const l2 = wcagLuminance(bg);
|
|
636
|
+
const lighter = Math.max(l1, l2);
|
|
637
|
+
const darker = Math.min(l1, l2);
|
|
638
|
+
return (lighter + 0.05) / (darker + 0.05);
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
/**
|
|
642
|
+
* Darken a foreground color until it meets the target contrast ratio
|
|
643
|
+
* against the given background. Used to ensure palette text colors
|
|
644
|
+
* remain readable on tinted surfaces (colorful palettes in light mode).
|
|
645
|
+
*/
|
|
646
|
+
function ensureContrast(fg: string, bg: string, targetRatio: number): string {
|
|
647
|
+
let adjusted = fg;
|
|
648
|
+
for (let i = 0; i < 40; i++) {
|
|
649
|
+
if (wcagContrast(adjusted, bg) >= targetRatio) break;
|
|
650
|
+
adjusted = darken(adjusted, 4);
|
|
651
|
+
}
|
|
652
|
+
return adjusted;
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
/**
|
|
656
|
+
* Derive a WCAG AA contrast-safe text color from a semantic color.
|
|
657
|
+
* Darkens (light mode) or lightens (dark mode) until a high-contrast target
|
|
658
|
+
* is met against the approximate page background (~white or ~black).
|
|
659
|
+
*
|
|
660
|
+
* Targets are intentionally above AA 4.5:1 to provide headroom for
|
|
661
|
+
* composited semantic backgrounds (rgba overlays) on tinted surfaces.
|
|
662
|
+
*/
|
|
663
|
+
export function deriveSemanticText(color: string, isDark: boolean): string {
|
|
664
|
+
const target = isDark ? 7.5 : 7.0;
|
|
665
|
+
const bg = isDark ? '#0a0a0a' : '#ffffff';
|
|
666
|
+
let adjusted = color;
|
|
667
|
+
|
|
668
|
+
for (let i = 0; i < 40; i++) {
|
|
669
|
+
if (wcagContrast(adjusted, bg) >= target) break;
|
|
670
|
+
if (isDark) {
|
|
671
|
+
adjusted = lighten(adjusted, 3);
|
|
672
|
+
} else {
|
|
673
|
+
adjusted = darken(adjusted, 3);
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
return adjusted;
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
/**
|
|
681
|
+
* Derive semantic background colors
|
|
682
|
+
*/
|
|
683
|
+
export function deriveSemanticBg(color: string, isDark: boolean): string {
|
|
684
|
+
const { r, g, b } = hexToRgb(color);
|
|
685
|
+
const opacity = isDark ? 0.15 : 0.1;
|
|
686
|
+
return `rgba(${r}, ${g}, ${b}, ${opacity})`;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
/**
|
|
690
|
+
* Derive hover state for semantic colors
|
|
691
|
+
*/
|
|
692
|
+
export function deriveSemanticHover(color: string): string {
|
|
693
|
+
return darken(color, 10);
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
// ============================================
|
|
697
|
+
// Default Seeds
|
|
698
|
+
// ============================================
|
|
699
|
+
|
|
700
|
+
export const DEFAULT_SEEDS: SeedConfig = {
|
|
701
|
+
brand: '#18181b',
|
|
702
|
+
neutral: 'stone',
|
|
703
|
+
density: 'default',
|
|
704
|
+
radiusStyle: 'default',
|
|
705
|
+
// Semantic colors omitted - will use palette defaults from PALETTE_SEMANTIC_COLORS
|
|
706
|
+
};
|