@fairgarden/design 0.1.0-alpha.1 → 0.1.0-alpha.2
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 +51 -27
- package/actions/button/Button.d.ts.map +1 -1
- package/actions/button/Button.js +13 -1
- package/actions/button/Button.js.map +1 -1
- package/actions/button/button.module.css +85 -25
- package/actions/chip/Chip.d.ts +2 -2
- package/actions/chip/Chip.js +2 -2
- package/actions/chip/chip.module.css +12 -18
- package/actions/link/Link.d.ts +1 -1
- package/actions/link/link.module.css +22 -19
- package/actions/toggle/Toggle.js +1 -1
- package/actions/toggle/toggle.module.css +27 -23
- package/content/card/card.module.css +27 -27
- package/content/card-grid/CardGrid.js +1 -1
- package/content/card-grid/card-grid.module.css +3 -3
- package/content/carousel/Carousel.d.ts.map +1 -1
- package/content/carousel/Carousel.js +1 -4
- package/content/carousel/Carousel.js.map +1 -1
- package/content/carousel/carousel.module.css +19 -9
- package/content/code-block/CodeActionsMenu.d.ts +34 -0
- package/content/code-block/CodeActionsMenu.d.ts.map +1 -0
- package/content/code-block/CodeActionsMenu.js +102 -0
- package/content/code-block/CodeActionsMenu.js.map +1 -0
- package/content/code-block/CodeBlock.d.ts +37 -0
- package/content/code-block/CodeBlock.d.ts.map +1 -0
- package/content/code-block/CodeBlock.js +30 -0
- package/content/code-block/CodeBlock.js.map +1 -0
- package/content/code-block/CodeBlockFrame.d.ts +54 -0
- package/content/code-block/CodeBlockFrame.d.ts.map +1 -0
- package/content/code-block/CodeBlockFrame.js +80 -0
- package/content/code-block/CodeBlockFrame.js.map +1 -0
- package/content/code-block/CodeBlockHeader.d.ts +26 -0
- package/content/code-block/CodeBlockHeader.d.ts.map +1 -0
- package/content/code-block/CodeBlockHeader.js +16 -0
- package/content/code-block/CodeBlockHeader.js.map +1 -0
- package/content/code-block/CodeBlockLazy.d.ts +11 -0
- package/content/code-block/CodeBlockLazy.d.ts.map +1 -0
- package/content/code-block/CodeBlockLazy.js +14 -0
- package/content/code-block/CodeBlockLazy.js.map +1 -0
- package/content/code-block/CodeBlockLoading.d.ts +31 -0
- package/content/code-block/CodeBlockLoading.d.ts.map +1 -0
- package/content/code-block/CodeBlockLoading.js +90 -0
- package/content/code-block/CodeBlockLoading.js.map +1 -0
- package/content/code-block/CodeBlockSection.d.ts +40 -0
- package/content/code-block/CodeBlockSection.d.ts.map +1 -0
- package/content/code-block/CodeBlockSection.js +105 -0
- package/content/code-block/CodeBlockSection.js.map +1 -0
- package/content/code-block/CodeBlockToasts.d.ts +26 -0
- package/content/code-block/CodeBlockToasts.d.ts.map +1 -0
- package/content/code-block/CodeBlockToasts.js +88 -0
- package/content/code-block/CodeBlockToasts.js.map +1 -0
- package/content/code-block/code-block.module.css +949 -0
- package/content/code-block/index.d.ts +4 -0
- package/content/code-block/index.d.ts.map +1 -0
- package/content/code-block/index.js +4 -0
- package/content/code-block/index.js.map +1 -0
- package/content/demo/DemoContent.d.ts +32 -0
- package/content/demo/DemoContent.d.ts.map +1 -0
- package/content/demo/DemoContent.js +87 -0
- package/content/demo/DemoContent.js.map +1 -0
- package/content/demo/DemoFrame.d.ts +6 -0
- package/content/demo/DemoFrame.d.ts.map +1 -0
- package/content/demo/DemoFrame.js +17 -0
- package/content/demo/DemoFrame.js.map +1 -0
- package/content/demo/DemoLazy.d.ts +11 -0
- package/content/demo/DemoLazy.d.ts.map +1 -0
- package/content/demo/DemoLazy.js +14 -0
- package/content/demo/DemoLazy.js.map +1 -0
- package/content/demo/DemoLoading.d.ts +23 -0
- package/content/demo/DemoLoading.d.ts.map +1 -0
- package/content/demo/DemoLoading.js +26 -0
- package/content/demo/DemoLoading.js.map +1 -0
- package/content/demo/demo.module.css +163 -0
- package/content/demo/index.d.ts +4 -0
- package/content/demo/index.d.ts.map +1 -0
- package/content/demo/index.js +4 -0
- package/content/demo/index.js.map +1 -0
- package/content/empty-state/EmptyState.d.ts +1 -1
- package/content/empty-state/EmptyState.js +1 -1
- package/content/empty-state/empty-state.module.css +11 -11
- package/content/feature-grid/feature-grid.module.css +22 -22
- package/content/index-rows/IndexRows.d.ts +2 -2
- package/content/index-rows/IndexRows.d.ts.map +1 -1
- package/content/index-rows/IndexRows.js +1 -1
- package/content/index-rows/index-rows.module.css +29 -29
- package/content/pricing/Pricing.d.ts +4 -4
- package/content/pricing/Pricing.d.ts.map +1 -1
- package/content/pricing/Pricing.js +4 -4
- package/content/pricing/Pricing.js.map +1 -1
- package/content/pricing/pricing.module.css +22 -22
- package/content/profile/Profile.d.ts +1 -1
- package/content/profile/Profile.js +2 -2
- package/content/profile/profile.module.css +13 -13
- package/content/quote/Quote.d.ts +1 -1
- package/content/quote/quote.module.css +9 -9
- package/content/timeline/Timeline.d.ts +1 -1
- package/content/timeline/Timeline.d.ts.map +1 -1
- package/content/timeline/Timeline.js +5 -5
- package/content/timeline/Timeline.js.map +1 -1
- package/content/timeline/timeline.module.css +12 -12
- package/content/types-table/TypePre.d.ts +11 -0
- package/content/types-table/TypePre.d.ts.map +1 -0
- package/content/types-table/TypePre.js +13 -0
- package/content/types-table/TypePre.js.map +1 -0
- package/content/types-table/TypesTable.d.ts +22 -0
- package/content/types-table/TypesTable.d.ts.map +1 -0
- package/content/types-table/TypesTable.js +124 -0
- package/content/types-table/TypesTable.js.map +1 -0
- package/content/types-table/index.d.ts +3 -0
- package/content/types-table/index.d.ts.map +1 -0
- package/content/types-table/index.js +3 -0
- package/content/types-table/index.js.map +1 -0
- package/content/types-table/types-table.module.css +160 -0
- package/data/chart/Chart.d.ts +8 -1
- package/data/chart/Chart.d.ts.map +1 -1
- package/data/chart/Chart.js +28 -15
- package/data/chart/Chart.js.map +1 -1
- package/data/chart/chart.module.css +20 -6
- package/data/figure/Figure.d.ts +1 -1
- package/data/figure/Figure.js +1 -1
- package/data/figure/figure.module.css +7 -7
- package/data/map/Map.d.ts +3 -3
- package/data/map/Map.d.ts.map +1 -1
- package/data/map/Map.js +10 -8
- package/data/map/Map.js.map +1 -1
- package/data/map/MapCanvas.d.ts.map +1 -1
- package/data/map/MapCanvas.js +5 -9
- package/data/map/MapCanvas.js.map +1 -1
- package/data/map/map.module.css +39 -14
- package/data/map/mapStyle.d.ts +2 -2
- package/data/map/mapStyle.d.ts.map +1 -1
- package/data/map/mapStyle.js +5 -5
- package/data/map/mapStyle.js.map +1 -1
- package/data/scroll-area/ScrollArea.d.ts.map +1 -1
- package/data/scroll-area/ScrollArea.js +8 -4
- package/data/scroll-area/ScrollArea.js.map +1 -1
- package/data/scroll-area/scroll-area.module.css +28 -9
- package/data/spec-grid/spec-grid.module.css +8 -8
- package/data/spec-list/spec-list.module.css +3 -3
- package/data/spec-sheet/SpecSheet.d.ts +2 -2
- package/data/spec-sheet/SpecSheet.js +1 -1
- package/data/spec-sheet/spec-sheet.module.css +9 -9
- package/data/stat/Stat.d.ts +1 -1
- package/data/stat/Stat.d.ts.map +1 -1
- package/data/stat/stat.module.css +4 -4
- package/data/table/Table.d.ts +6 -5
- package/data/table/Table.d.ts.map +1 -1
- package/data/table/Table.js.map +1 -1
- package/data/table/table.module.css +43 -46
- package/disclosure/accordion/Accordion.d.ts +1 -1
- package/disclosure/accordion/Accordion.js +1 -1
- package/disclosure/accordion/accordion.module.css +12 -12
- package/disclosure/collapsible/Collapsible.d.ts +4 -4
- package/disclosure/collapsible/Collapsible.js +4 -4
- package/disclosure/collapsible/collapsible.module.css +10 -10
- package/disclosure/faq/FAQ.d.ts +3 -3
- package/disclosure/faq/FAQ.d.ts.map +1 -1
- package/disclosure/faq/FAQ.js +3 -3
- package/disclosure/faq/FAQ.js.map +1 -1
- package/disclosure/faq/faq.module.css +20 -20
- package/feedback/alert/alert.module.css +4 -4
- package/feedback/avatar/avatar-group.module.css +2 -2
- package/feedback/avatar/avatar.module.css +9 -9
- package/feedback/badge/Badge.d.ts +1 -1
- package/feedback/badge/badge.module.css +7 -7
- package/feedback/meter/Meter.d.ts +2 -2
- package/feedback/meter/meter.module.css +14 -14
- package/feedback/progress/Progress.d.ts +1 -1
- package/feedback/progress/progress.module.css +7 -7
- package/feedback/tag/tag.module.css +7 -7
- package/feedback/toast/Toast.d.ts +3 -3
- package/feedback/toast/Toast.d.ts.map +1 -1
- package/feedback/toast/Toast.js +17 -7
- package/feedback/toast/Toast.js.map +1 -1
- package/feedback/toast/toast.module.css +31 -20
- package/forms/autocomplete/Autocomplete.d.ts +11 -0
- package/forms/autocomplete/Autocomplete.d.ts.map +1 -1
- package/forms/autocomplete/Autocomplete.js +27 -6
- package/forms/autocomplete/Autocomplete.js.map +1 -1
- package/forms/autocomplete/autocomplete.module.css +35 -41
- package/forms/checkbox/Checkbox.js +1 -1
- package/forms/checkbox/checkbox.module.css +29 -25
- package/forms/checkbox-group/checkbox-group.module.css +4 -4
- package/forms/combobox/Combobox.d.ts +10 -0
- package/forms/combobox/Combobox.d.ts.map +1 -1
- package/forms/combobox/Combobox.js +28 -7
- package/forms/combobox/Combobox.js.map +1 -1
- package/forms/combobox/combobox.module.css +34 -41
- package/forms/field/field.module.css +1 -1
- package/forms/fieldset/Fieldset.d.ts +1 -1
- package/forms/fieldset/Fieldset.js +2 -2
- package/forms/fieldset/fieldset.module.css +14 -14
- package/forms/form/form.module.css +2 -2
- package/forms/input/Input.d.ts +10 -3
- package/forms/input/Input.d.ts.map +1 -1
- package/forms/input/Input.js +10 -4
- package/forms/input/Input.js.map +1 -1
- package/forms/input/input.module.css +38 -21
- package/forms/number-field/number-field.module.css +24 -23
- package/forms/radio/Radio.d.ts +1 -1
- package/forms/radio/Radio.d.ts.map +1 -1
- package/forms/radio/Radio.js +5 -3
- package/forms/radio/Radio.js.map +1 -1
- package/forms/radio/radio.module.css +38 -30
- package/forms/radio-group/RadioGroup.d.ts +1 -1
- package/forms/radio-group/radio-group.module.css +3 -3
- package/forms/search/Search.d.ts +10 -0
- package/forms/search/Search.d.ts.map +1 -1
- package/forms/search/Search.js +25 -6
- package/forms/search/Search.js.map +1 -1
- package/forms/search/search.module.css +25 -33
- package/forms/select/Select.d.ts +10 -2
- package/forms/select/Select.d.ts.map +1 -1
- package/forms/select/Select.js +27 -12
- package/forms/select/Select.js.map +1 -1
- package/forms/select/select.module.css +42 -48
- package/forms/slider/Slider.js +2 -2
- package/forms/slider/slider.module.css +23 -23
- package/forms/switch/Switch.js +1 -1
- package/forms/switch/switch.module.css +23 -19
- package/foundations/expanding-box/ExpandingBox.d.ts +86 -0
- package/foundations/expanding-box/ExpandingBox.d.ts.map +1 -0
- package/foundations/expanding-box/ExpandingBox.js +179 -0
- package/foundations/expanding-box/ExpandingBox.js.map +1 -0
- package/foundations/expanding-box/expanding-box.module.css +415 -0
- package/foundations/expanding-box/index.d.ts +3 -0
- package/foundations/expanding-box/index.d.ts.map +1 -0
- package/foundations/expanding-box/index.js +3 -0
- package/foundations/expanding-box/index.js.map +1 -0
- package/foundations/expanding-box/startExpandingTransition.d.ts +33 -0
- package/foundations/expanding-box/startExpandingTransition.d.ts.map +1 -0
- package/foundations/expanding-box/startExpandingTransition.js +82 -0
- package/foundations/expanding-box/startExpandingTransition.js.map +1 -0
- package/foundations/ground/Ground.d.ts +1 -1
- package/foundations/ground/ground.module.css +4 -4
- package/foundations/icon/Icon.d.ts +1 -1
- package/foundations/icon/Icon.js +1 -1
- package/foundations/icon/icon.module.css +1 -1
- package/foundations/outline-morph/OutlineMorph.d.ts +112 -0
- package/foundations/outline-morph/OutlineMorph.d.ts.map +1 -0
- package/foundations/outline-morph/OutlineMorph.js +83 -0
- package/foundations/outline-morph/OutlineMorph.js.map +1 -0
- package/foundations/outline-morph/index.d.ts +3 -0
- package/foundations/outline-morph/index.d.ts.map +1 -0
- package/foundations/outline-morph/index.js +3 -0
- package/foundations/outline-morph/index.js.map +1 -0
- package/foundations/outline-morph/morphEngine.d.ts +219 -0
- package/foundations/outline-morph/morphEngine.d.ts.map +1 -0
- package/foundations/outline-morph/morphEngine.js +1331 -0
- package/foundations/outline-morph/morphEngine.js.map +1 -0
- package/foundations/outline-morph/outline-morph.module.css +113 -0
- package/foundations/outline-morph/useOutlineMorphRoot.d.ts +50 -0
- package/foundations/outline-morph/useOutlineMorphRoot.d.ts.map +1 -0
- package/foundations/outline-morph/useOutlineMorphRoot.js +55 -0
- package/foundations/outline-morph/useOutlineMorphRoot.js.map +1 -0
- package/foundations/separator/separator.module.css +10 -10
- package/foundations/sticker/Sticker.d.ts +4 -4
- package/foundations/sticker/Sticker.d.ts.map +1 -1
- package/foundations/sticker/Sticker.js +3 -3
- package/foundations/sticker/sticker.module.css +10 -10
- package/icons/paths.d.ts +1 -1
- package/icons/paths.d.ts.map +1 -1
- package/icons/paths.js +50 -0
- package/icons/paths.js.map +1 -1
- package/navigation/breadcrumb/Breadcrumb.d.ts +7 -1
- package/navigation/breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/navigation/breadcrumb/Breadcrumb.js +8 -8
- package/navigation/breadcrumb/Breadcrumb.js.map +1 -1
- package/navigation/breadcrumb/breadcrumb.module.css +14 -14
- package/navigation/file-tabs/FileTabs.d.ts +169 -0
- package/navigation/file-tabs/FileTabs.d.ts.map +1 -0
- package/navigation/file-tabs/FileTabs.js +253 -0
- package/navigation/file-tabs/FileTabs.js.map +1 -0
- package/navigation/file-tabs/file-tabs.module.css +868 -0
- package/navigation/file-tabs/index.d.ts +2 -0
- package/navigation/file-tabs/index.d.ts.map +1 -0
- package/navigation/file-tabs/index.js +2 -0
- package/navigation/file-tabs/index.js.map +1 -0
- package/navigation/nav-drawer/NavDrawer.d.ts +32 -6
- package/navigation/nav-drawer/NavDrawer.d.ts.map +1 -1
- package/navigation/nav-drawer/NavDrawer.js +94 -28
- package/navigation/nav-drawer/NavDrawer.js.map +1 -1
- package/navigation/nav-drawer/nav-drawer.module.css +78 -55
- package/navigation/navigation-bar/NavigationBar.d.ts +31 -11
- package/navigation/navigation-bar/NavigationBar.d.ts.map +1 -1
- package/navigation/navigation-bar/NavigationBar.js +40 -17
- package/navigation/navigation-bar/NavigationBar.js.map +1 -1
- package/navigation/navigation-bar/navigation-bar.module.css +58 -27
- package/navigation/navigation-menu/NavigationMenu.d.ts +9 -9
- package/navigation/navigation-menu/NavigationMenu.d.ts.map +1 -1
- package/navigation/navigation-menu/NavigationMenu.js +15 -15
- package/navigation/navigation-menu/navigation-menu.module.css +39 -53
- package/navigation/pagination/Pagination.js +1 -1
- package/navigation/pagination/pagination.module.css +24 -24
- package/navigation/sidebar-nav/SidebarNav.d.ts +71 -0
- package/navigation/sidebar-nav/SidebarNav.d.ts.map +1 -0
- package/navigation/sidebar-nav/SidebarNav.js +169 -0
- package/navigation/sidebar-nav/SidebarNav.js.map +1 -0
- package/navigation/sidebar-nav/index.d.ts +2 -0
- package/navigation/sidebar-nav/index.d.ts.map +1 -0
- package/navigation/sidebar-nav/index.js +2 -0
- package/navigation/sidebar-nav/index.js.map +1 -0
- package/navigation/sidebar-nav/sidebar-nav.module.css +270 -0
- package/navigation/table-of-contents/TableOfContents.d.ts +92 -0
- package/navigation/table-of-contents/TableOfContents.d.ts.map +1 -0
- package/navigation/table-of-contents/TableOfContents.js +211 -0
- package/navigation/table-of-contents/TableOfContents.js.map +1 -0
- package/navigation/table-of-contents/index.d.ts +3 -0
- package/navigation/table-of-contents/index.d.ts.map +1 -0
- package/navigation/table-of-contents/index.js +3 -0
- package/navigation/table-of-contents/index.js.map +1 -0
- package/navigation/table-of-contents/table-of-contents.module.css +322 -0
- package/navigation/table-of-contents/useActiveHeading.d.ts +37 -0
- package/navigation/table-of-contents/useActiveHeading.d.ts.map +1 -0
- package/navigation/table-of-contents/useActiveHeading.js +111 -0
- package/navigation/table-of-contents/useActiveHeading.js.map +1 -0
- package/navigation/tabs/Tabs.d.ts +2 -2
- package/navigation/tabs/Tabs.js +3 -3
- package/navigation/tabs/tabs.module.css +22 -19
- package/navigation/toolbar/Toolbar.d.ts +7 -1
- package/navigation/toolbar/Toolbar.d.ts.map +1 -1
- package/navigation/toolbar/Toolbar.js +3 -3
- package/navigation/toolbar/Toolbar.js.map +1 -1
- package/navigation/toolbar/toolbar.module.css +6 -6
- package/overlays/alert-dialog/AlertDialog.d.ts +14 -4
- package/overlays/alert-dialog/AlertDialog.d.ts.map +1 -1
- package/overlays/alert-dialog/AlertDialog.js +15 -5
- package/overlays/alert-dialog/AlertDialog.js.map +1 -1
- package/overlays/alert-dialog/alert-dialog.module.css +4 -4
- package/overlays/context-menu/ContextMenu.d.ts +1 -1
- package/overlays/context-menu/ContextMenu.js +1 -1
- package/overlays/dialog/Dialog.d.ts +26 -11
- package/overlays/dialog/Dialog.d.ts.map +1 -1
- package/overlays/dialog/Dialog.js +36 -17
- package/overlays/dialog/Dialog.js.map +1 -1
- package/overlays/dialog/dialog.module.css +32 -31
- package/overlays/dialog/morph.d.ts +17 -0
- package/overlays/dialog/morph.d.ts.map +1 -0
- package/overlays/dialog/morph.js +44 -0
- package/overlays/dialog/morph.js.map +1 -0
- package/overlays/menu/Menu.d.ts +18 -7
- package/overlays/menu/Menu.d.ts.map +1 -1
- package/overlays/menu/Menu.js +35 -12
- package/overlays/menu/Menu.js.map +1 -1
- package/overlays/menu/menu.module.css +26 -50
- package/overlays/menu/morph.d.ts +16 -0
- package/overlays/menu/morph.d.ts.map +1 -0
- package/overlays/menu/morph.js +36 -0
- package/overlays/menu/morph.js.map +1 -0
- package/overlays/menu/popup.d.ts +2 -0
- package/overlays/menu/popup.d.ts.map +1 -1
- package/overlays/menu/popup.js +11 -3
- package/overlays/menu/popup.js.map +1 -1
- package/overlays/menubar/Menubar.d.ts +10 -1
- package/overlays/menubar/Menubar.d.ts.map +1 -1
- package/overlays/menubar/Menubar.js +22 -12
- package/overlays/menubar/Menubar.js.map +1 -1
- package/overlays/menubar/menubar.module.css +13 -13
- package/overlays/popover/Popover.d.ts +22 -8
- package/overlays/popover/Popover.d.ts.map +1 -1
- package/overlays/popover/Popover.js +51 -16
- package/overlays/popover/Popover.js.map +1 -1
- package/overlays/popover/popover.module.css +73 -47
- package/overlays/preview-card/PreviewCard.d.ts +3 -3
- package/overlays/preview-card/PreviewCard.d.ts.map +1 -1
- package/overlays/preview-card/PreviewCard.js +5 -6
- package/overlays/preview-card/PreviewCard.js.map +1 -1
- package/overlays/preview-card/preview-card.module.css +19 -54
- package/overlays/search-dialog/SearchDialog.d.ts +89 -0
- package/overlays/search-dialog/SearchDialog.d.ts.map +1 -0
- package/overlays/search-dialog/SearchDialog.js +220 -0
- package/overlays/search-dialog/SearchDialog.js.map +1 -0
- package/overlays/search-dialog/SearchDialogPopup.d.ts +39 -0
- package/overlays/search-dialog/SearchDialogPopup.d.ts.map +1 -0
- package/overlays/search-dialog/SearchDialogPopup.js +80 -0
- package/overlays/search-dialog/SearchDialogPopup.js.map +1 -0
- package/overlays/search-dialog/SearchDialogTrigger.d.ts +24 -0
- package/overlays/search-dialog/SearchDialogTrigger.d.ts.map +1 -0
- package/overlays/search-dialog/SearchDialogTrigger.js +32 -0
- package/overlays/search-dialog/SearchDialogTrigger.js.map +1 -0
- package/overlays/search-dialog/index.d.ts +3 -0
- package/overlays/search-dialog/index.d.ts.map +1 -0
- package/overlays/search-dialog/index.js +3 -0
- package/overlays/search-dialog/index.js.map +1 -0
- package/overlays/search-dialog/search-dialog.module.css +492 -0
- package/overlays/search-dialog/useShortcutLabel.d.ts +13 -0
- package/overlays/search-dialog/useShortcutLabel.d.ts.map +1 -0
- package/overlays/search-dialog/useShortcutLabel.js +19 -0
- package/overlays/search-dialog/useShortcutLabel.js.map +1 -0
- package/overlays/search-dialog/variants.d.ts +25 -0
- package/overlays/search-dialog/variants.d.ts.map +1 -0
- package/overlays/search-dialog/variants.js +31 -0
- package/overlays/search-dialog/variants.js.map +1 -0
- package/overlays/tooltip/Tooltip.d.ts +3 -3
- package/overlays/tooltip/Tooltip.d.ts.map +1 -1
- package/overlays/tooltip/Tooltip.js +3 -3
- package/overlays/tooltip/Tooltip.js.map +1 -1
- package/overlays/tooltip/tooltip.module.css +2 -2
- package/package.json +27 -19
- package/page/announcement-bar/AnnouncementBar.d.ts +1 -1
- package/page/announcement-bar/AnnouncementBar.js +4 -4
- package/page/announcement-bar/AnnouncementBar.js.map +1 -1
- package/page/announcement-bar/announcement-bar.module.css +11 -17
- package/page/cta-block/CTABlock.d.ts +5 -5
- package/page/cta-block/CTABlock.d.ts.map +1 -1
- package/page/cta-block/CTABlock.js +2 -2
- package/page/cta-block/cta-block.module.css +26 -26
- package/page/docs-layout/DocsLayout.d.ts +83 -0
- package/page/docs-layout/DocsLayout.d.ts.map +1 -0
- package/page/docs-layout/DocsLayout.js +108 -0
- package/page/docs-layout/DocsLayout.js.map +1 -0
- package/page/docs-layout/docs-layout.module.css +266 -0
- package/page/docs-layout/index.d.ts +2 -0
- package/page/docs-layout/index.d.ts.map +1 -0
- package/page/docs-layout/index.js +2 -0
- package/page/docs-layout/index.js.map +1 -0
- package/page/footer/Footer.d.ts +1 -1
- package/page/footer/Footer.js +1 -1
- package/page/footer/footer.module.css +31 -31
- package/page/hero/Hero.d.ts +3 -3
- package/page/hero/Hero.d.ts.map +1 -1
- package/page/hero/Hero.js +1 -1
- package/page/hero/hero.module.css +36 -36
- package/page/marquee/Marquee.d.ts +2 -2
- package/page/marquee/Marquee.js +1 -1
- package/page/marquee/marquee.module.css +11 -11
- package/page/newsletter/Newsletter.d.ts.map +1 -1
- package/page/newsletter/Newsletter.js +4 -59
- package/page/newsletter/Newsletter.js.map +1 -1
- package/page/newsletter/newsletter.module.css +44 -22
- package/page/section-bar/SectionBar.d.ts +10 -3
- package/page/section-bar/SectionBar.d.ts.map +1 -1
- package/page/section-bar/SectionBar.js +21 -11
- package/page/section-bar/SectionBar.js.map +1 -1
- package/page/section-bar/section-bar.module.css +43 -46
- package/page/section-divider/SectionDivider.d.ts +2 -2
- package/page/section-divider/SectionDivider.js +4 -4
- package/page/section-divider/SectionDivider.js.map +1 -1
- package/page/section-divider/section-divider.module.css +18 -18
- package/page/section-header/SectionHeader.d.ts +7 -7
- package/page/section-header/SectionHeader.d.ts.map +1 -1
- package/page/section-header/SectionHeader.js +3 -3
- package/page/section-header/SectionHeader.js.map +1 -1
- package/page/section-header/section-header.module.css +16 -16
- package/utils/Ornament.d.ts +1 -1
- package/utils/Ornament.js +2 -2
- package/utils/assignRef.d.ts +7 -1
- package/utils/assignRef.d.ts.map +1 -1
- package/utils/assignRef.js +18 -0
- package/utils/assignRef.js.map +1 -1
- package/utils/docs/DemoTitle.d.ts +12 -0
- package/utils/docs/DemoTitle.d.ts.map +1 -0
- package/utils/docs/DemoTitle.js +11 -0
- package/utils/docs/DemoTitle.js.map +1 -0
- package/utils/docs/Pre.d.ts +39 -0
- package/utils/docs/Pre.d.ts.map +1 -0
- package/utils/docs/Pre.js +26 -0
- package/utils/docs/Pre.js.map +1 -0
- package/utils/docs/createDemo.d.ts +89 -0
- package/utils/docs/createDemo.d.ts.map +1 -0
- package/utils/docs/createDemo.js +51 -0
- package/utils/docs/createDemo.js.map +1 -0
- package/utils/docs/createMdxComponents.d.ts +52 -0
- package/utils/docs/createMdxComponents.d.ts.map +1 -0
- package/utils/docs/createMdxComponents.js +59 -0
- package/utils/docs/createMdxComponents.js.map +1 -0
- package/utils/docs/createTypes.d.ts +23 -0
- package/utils/docs/createTypes.d.ts.map +1 -0
- package/utils/docs/createTypes.js +27 -0
- package/utils/docs/createTypes.js.map +1 -0
- package/utils/docs/index.d.ts +8 -0
- package/utils/docs/index.d.ts.map +1 -0
- package/utils/docs/index.js +16 -0
- package/utils/docs/index.js.map +1 -0
- package/utils/docs/mdx.module.css +201 -0
- package/utils/docs/serverSourceEnhancers.d.ts +26 -0
- package/utils/docs/serverSourceEnhancers.d.ts.map +1 -0
- package/utils/docs/serverSourceEnhancers.js +32 -0
- package/utils/docs/serverSourceEnhancers.js.map +1 -0
- package/utils/docs/toSidebarItems.d.ts +23 -0
- package/utils/docs/toSidebarItems.d.ts.map +1 -0
- package/utils/docs/toSidebarItems.js +36 -0
- package/utils/docs/toSidebarItems.js.map +1 -0
- package/utils/font-fallbacks.css +176 -0
- package/utils/fonts.d.ts +1 -0
- package/utils/fonts.d.ts.map +1 -1
- package/utils/fonts.js +12 -0
- package/utils/fonts.js.map +1 -1
- package/utils/frame.d.ts +4 -0
- package/utils/frame.d.ts.map +1 -0
- package/utils/frame.js +11 -0
- package/utils/frame.js.map +1 -0
- package/utils/global.css +480 -266
- package/utils/line.module.css +17 -17
- package/utils/media.css +1 -1
- package/utils/ornament.module.css +19 -19
- package/utils/overlay.d.ts +4 -4
- package/utils/overlay.js +4 -4
- package/utils/pattern.module.css +45 -45
- package/utils/print.css +48 -34
- package/utils/reset.css +9 -2
- package/utils/roles.css +29 -29
- package/utils/seriesPatterns.js +3 -3
- package/utils/syntax.module.css +92 -0
- package/utils/theme.css +6 -6
- package/utils/tokens.css +262 -192
- package/utils/tokens.d.ts +51 -8
- package/utils/tokens.d.ts.map +1 -1
- package/utils/tokens.js +46 -9
- package/utils/tokens.js.map +1 -1
- package/utils/type.module.css +87 -87
- package/utils/useReleaseMark.d.ts +13 -0
- package/utils/useReleaseMark.d.ts.map +1 -0
- package/utils/useReleaseMark.js +44 -0
- package/utils/useReleaseMark.js.map +1 -0
- package/utils/view-transitions.css +122 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Connor Davis
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/Readme.md
CHANGED
|
@@ -2,34 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- fg:version -->
|
|
4
4
|
|
|
5
|
-
Version **0.1.0-alpha.
|
|
5
|
+
Version **0.1.0-alpha.2**
|
|
6
6
|
|
|
7
7
|
<!-- /fg:version -->
|
|
8
8
|
|
|
9
|
-
<!-- fg:releasing -->
|
|
10
|
-
|
|
11
|
-
## Releasing
|
|
12
|
-
|
|
13
|
-
This module releases on its own. `0.1.0-alpha.0` is what main is working towards,
|
|
14
|
-
not what is published — the version here is always the next one.
|
|
15
|
-
|
|
16
|
-
1. **Publish it.** Run the *Publish* workflow from the Actions tab, picking the
|
|
17
|
-
dist tag. It refuses if that version is already on npm.
|
|
18
|
-
2. **Move it on.** `pnpm release` — opens a pull request bumping this branch
|
|
19
|
-
to `0.1.0-alpha.1`, or `pnpm release --id rc` to change
|
|
20
|
-
identifier. A prerelease gets no maintenance branch; there is no released
|
|
21
|
-
line behind it yet.
|
|
22
|
-
|
|
23
|
-
Every push to main publishes `@fairgarden/design@canary`. A canary is not a release and
|
|
24
|
-
carries no promise; it is there so main can be tried without a checkout.
|
|
25
|
-
|
|
26
|
-
<!-- /fg:releasing -->
|
|
27
|
-
|
|
28
9
|
## Stack
|
|
29
10
|
|
|
30
11
|
- **React 19** and **Base UI** (`@base-ui/react`, a peer dependency): unstyled, accessible primitives under every interactive component.
|
|
31
12
|
- **CSS Modules plus CVA** (`class-variance-authority`): one module per component, one class per variant value, typed variant axes, all in cascade layers (`reset, tokens, theme, roles, base, variants, compounds, scales, states, print`).
|
|
32
|
-
- **Open Props** for the non-color tokens
|
|
13
|
+
- **Open Props** for the non-color tokens. A step the system adds between two Open Props steps is named by its position (`--size-px-2-5` sits halfway between `--size-px-2` and `--size-px-3`); every other FairGarden-only token takes `--fgd-*`. Text sizes are in rem, spacing in px.
|
|
33
14
|
- **Radix Colors**: the 31 standard scales as one unified `--{scale}{step}` set (no alpha scales). Light and dark swap the values, never the names: `data-theme="light|dark"` on `html` forces a mode, otherwise the OS `prefers-color-scheme` decides. Components read only scale steps and role variables (`--primary1…12`, `--secondary1…12`, `--role-*`) and never see the mode. Every component takes `primary` and `secondary` scale props; grounds (`Ground`: 8 page grounds, the `night` band, 7 fields) set them for a region.
|
|
34
15
|
- **Material Symbols** (Rounded, FILL 0 by default) compiled to inline SVG paths by `scripts/build-icons.js`; no icon font.
|
|
35
16
|
- **Recharts** for charts (SVG, role colors, opaque fills, pattern defs, no animation unless motion is allowed).
|
|
@@ -43,6 +24,8 @@ carries no promise; it is there so main can be tried without a checkout.
|
|
|
43
24
|
pnpm add @fairgarden/design @base-ui/react
|
|
44
25
|
# only for Map:
|
|
45
26
|
pnpm add maplibre-gl pmtiles @protomaps/basemaps
|
|
27
|
+
# only for Code Block, Demo, Types Table, Search Dialog and utils/docs:
|
|
28
|
+
pnpm add @fairgarden/docs@^0.13.4-canary.18
|
|
46
29
|
```
|
|
47
30
|
|
|
48
31
|
```tsx
|
|
@@ -65,18 +48,32 @@ Each component is imported from its own path, `@fairgarden/design/<category>/<na
|
|
|
65
48
|
|
|
66
49
|
| Category | Components (import path `@fairgarden/design/<category>/…`) |
|
|
67
50
|
| --- | --- |
|
|
68
|
-
| `foundations` | Ground (`ground`), Icon (`icon`), Separator (`separator`), Sticker (`sticker`) |
|
|
51
|
+
| `foundations` | Ground (`ground`), Icon (`icon`), Separator (`separator`), Sticker (`sticker`), Expanding Box (`expanding-box`) |
|
|
69
52
|
| `actions` | Button (`button`), Link (`link`), Toggle (`toggle`), Toggle Group (`toggle-group`), Chip (`chip`) |
|
|
70
|
-
| `navigation` | Navigation Menu (`navigation-menu`), Navigation Bar (`navigation-bar`), Nav Drawer (`nav-drawer`), Breadcrumb (`breadcrumb`), Pagination (`pagination`), Tabs (`tabs`), Toolbar (`toolbar`) |
|
|
53
|
+
| `navigation` | Navigation Menu (`navigation-menu`), Navigation Bar (`navigation-bar`), Nav Drawer (`nav-drawer`), Breadcrumb (`breadcrumb`), Pagination (`pagination`), Tabs (`tabs`), File Tabs (`file-tabs`: the folder-tab header Code Block and Demo use, with optional `controls` at its end and a busy `status`; no docs engine needed), Toolbar (`toolbar`), Sidebar Nav (`sidebar-nav`: the docs page tree, from plain data, in the Docs Layout's column and drawer), Table of Contents (`table-of-contents`: "On this page" as a list, or with `kind="bar"` the compact bar that names the section in view and opens the list; with the `useActiveHeading` scrollspy hook) |
|
|
71
54
|
| `forms` | Field (`field`), Fieldset (`fieldset`), Form (`form`), Input (`input`), Number Field (`number-field`), Select (`select`), Combobox (`combobox`), Autocomplete (`autocomplete`), Search (`search`), Checkbox (`checkbox`), Checkbox Group (`checkbox-group`), Radio (`radio`), Radio Group (`radio-group`), Switch (`switch`), Slider (`slider`) |
|
|
72
55
|
| `feedback` | Alert (`alert`), Badge (`badge`), Tag (`tag`), Avatar (`avatar`), Progress (`progress`), Meter (`meter`), Toast (`toast`) |
|
|
73
|
-
| `overlays` | Dialog (`dialog`), Alert Dialog (`alert-dialog`), Popover (`popover`), Preview Card (`preview-card`), Menu (`menu`), Context Menu (`context-menu`), Menubar (`menubar`), Tooltip (`tooltip`) |
|
|
56
|
+
| `overlays` | Dialog (`dialog`), Alert Dialog (`alert-dialog`), Popover (`popover`), Preview Card (`preview-card`), Menu (`menu`), Context Menu (`context-menu`), Menubar (`menubar`), Tooltip (`tooltip`), Search Dialog (`search-dialog`) |
|
|
74
57
|
| `disclosure` | Accordion (`accordion`), Collapsible (`collapsible`), FAQ (`faq`) |
|
|
75
|
-
| `page` | Hero (`hero`), Footer (`footer`), Section Bar (`section-bar`), Section Divider (`section-divider`), Section Header (`section-header`), CTA Block (`cta-block`), Newsletter (`newsletter`), Marquee (`marquee`), Announcement Bar (`announcement-bar`) |
|
|
76
|
-
| `content` | Card (`card`), Card Grid (`card-grid`), Feature Grid (`feature-grid`), Carousel (`carousel`), Quote (`quote`), Index Rows (`index-rows`), Profile (`profile`), Pricing (`pricing`), Timeline (`timeline`), Empty State (`empty-state`) |
|
|
58
|
+
| `page` | Hero (`hero`), Footer (`footer`), Section Bar (`section-bar`), Section Divider (`section-divider`), Section Header (`section-header`), CTA Block (`cta-block`), Newsletter (`newsletter`), Marquee (`marquee`), Announcement Bar (`announcement-bar`), Docs Layout (`docs-layout`: the documentation frame, with a sidebar from 1024 px, a drawer below it, and a contents column from 1440 px, the contents bar sticky under the header below it) |
|
|
59
|
+
| `content` | Card (`card`), Card Grid (`card-grid`), Feature Grid (`feature-grid`), Carousel (`carousel`), Quote (`quote`), Index Rows (`index-rows`), Profile (`profile`), Pricing (`pricing`), Timeline (`timeline`), Empty State (`empty-state`), Code Block (`code-block`), Demo (`demo`), Types Table (`types-table`) |
|
|
77
60
|
| `data` | Table (`table`), Scroll Area (`scroll-area`), Spec Grid (`spec-grid`), Spec List (`spec-list`), Spec Sheet (`spec-sheet`), Figure (`figure`), Stat (`stat`), Chart (`chart`), Map (`map`) |
|
|
78
61
|
|
|
79
|
-
|
|
62
|
+
### With `@fairgarden/docs`
|
|
63
|
+
|
|
64
|
+
`@fairgarden/docs` is an optional peer dependency (`^0.13.4-canary.18`, the `canary` release; `latest` is still 0.13.3, outside the range). Four components and one utility are built on the docs engine and import it directly; no other module does, so install it only if you use them:
|
|
65
|
+
|
|
66
|
+
| Import path | Exports |
|
|
67
|
+
| --- | --- |
|
|
68
|
+
| `@fairgarden/design/content/code-block` | `CodeBlock`: a Content component for `CodeHighlighter`. It calls `useCode(props)` and renders the engine's highlighted files, variants, TS \| JS transform, copy, swap and window. `CodeBlockLazy` is the same in its own chunk, and `CodeBlockLoading` its light loading state (the precomputed fallback in the same frame). Copies confirm with a toast through a `ToastProvider` (`feedback/toast`) in the app shell; without one they're silent. |
|
|
69
|
+
| `@fairgarden/design/content/demo` | `DemoContent`: the demo factories' content. It calls `useDemo(props)` and renders the live component above the Code Block's code section. `DemoLazy` and `DemoLoading` as above; `renderPreview` wraps the preview (an iframe, say). |
|
|
70
|
+
| `@fairgarden/design/content/types-table` | `TypesTable` and `TypePre`: the types factories' API table (through `useTypes`) and type signatures. |
|
|
71
|
+
| `@fairgarden/design/overlays/search-dialog` | `SearchDialog`: the header search. It calls `useSearch` over your `sitemap` loader and renders the engine's results; a chosen row calls `onNavigate(href, result)` with `buildResultUrl(result)`, so pass your router: `<SearchDialog sitemap={() => import('./sitemap')} onNavigate={(href) => router.push(href)} keyboardShortcut />`. |
|
|
72
|
+
| `@fairgarden/design/utils/docs` | `createDemo`, `createDemoWithVariants`, `createTypes`, `createMultipleTypes` (the engine's factories pre-wired with the components above; `createDemoFactory`, `createDemoWithVariantsFactory`, `createTypesFactory` and `createMultipleTypesFactory` take overrides) and `createMdxComponents({ Link, Image, components, … })` (the MDX map: fenced blocks as Code Blocks, headings, links, prose). `toSidebarItems(sitemap)` maps the engine's sitemap to the Sidebar Nav's page tree. Each also has its own path: `…/utils/docs/createDemo`, `…/createTypes`, `…/createMdxComponents`, `…/toSidebarItems`. |
|
|
73
|
+
|
|
74
|
+
None of them contains framework code: pass navigation in (`onNavigate`, `Link`). Put the engine's `CodeProviderLazy` (`@fairgarden/docs/CodeProvider`) in your root layout, so code the browser produces is highlighted too.
|
|
75
|
+
|
|
76
|
+
**Utilities** (`@fairgarden/design/utils/…`): the global stylesheet (`global.css`), the fonts (`fonts`), `ClientProvider`, the pattern tiles (`pattern.module.css`), the type roles (`type.module.css`), the syntax tiers for code outside a Code Block (`syntax.module.css`), the line styles (`line.module.css`), ornaments (`Ornament`), the navigation data type (`navigation`) and the docs factories (`docs`, above).
|
|
80
77
|
|
|
81
78
|
## Development
|
|
82
79
|
|
|
@@ -86,3 +83,30 @@ Each component is imported from its own path, `@fairgarden/design/<category>/<na
|
|
|
86
83
|
- Documentation site in `docs/` (`@fairgarden/design-docs`, port 3032): `pnpm --filter @fairgarden/design-docs dev`. It compiles `src/` directly through tsconfig paths, with one section per category (`docs/app/<category>/<name>/`). After changing a component's props or adding a page, run `pnpm validate` in `docs/` to regenerate the `types.md` files and the section indexes.
|
|
87
84
|
|
|
88
85
|
Install dependencies from the monorepo root only. The full specification lives outside this repository (`DESIGN-SYSTEM.md`).
|
|
86
|
+
|
|
87
|
+
<!-- fg:releasing -->
|
|
88
|
+
|
|
89
|
+
## Releasing
|
|
90
|
+
|
|
91
|
+
This module releases on its own. `0.1.0-alpha.2` is what main is working towards,
|
|
92
|
+
not what is published — the version here is always the next one. Its release
|
|
93
|
+
notes are the top section of `CHANGELOG.md`, where every pull request adds a
|
|
94
|
+
line linking itself.
|
|
95
|
+
|
|
96
|
+
1. **Publish it.** Run the *Publish* workflow from the Actions tab, picking the
|
|
97
|
+
dist tag. It refuses if that version is already on npm. Once it is out, open
|
|
98
|
+
pull requests are held — their changelog check fails — so nothing is noted
|
|
99
|
+
under a version that has already shipped.
|
|
100
|
+
2. **Start the next version.** `pnpm next-version` opens a pull request moving
|
|
101
|
+
main to `0.1.0-alpha.3` and starting its section of the
|
|
102
|
+
changelog, or `pnpm next-version --id rc` to change identifier. Merging it
|
|
103
|
+
lifts the hold. A prerelease gets no maintenance branch; there is no
|
|
104
|
+
released line behind it yet.
|
|
105
|
+
|
|
106
|
+
A held pull request goes on once it is brought up to date with main and its
|
|
107
|
+
line is moved into the new version's section.
|
|
108
|
+
|
|
109
|
+
Every push to main publishes `@fairgarden/design@canary`. A canary is not a release and
|
|
110
|
+
carries no promise; it is there so main can be tried without a checkout.
|
|
111
|
+
|
|
112
|
+
<!-- /fg:releasing -->
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/actions/button/Button.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/actions/button/Button.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAYtE;;;;;GAKG;AACH,eAAO,MAAM,MAAM;;;;;;;;;8EA4CjB,CAAA;AAEF,KAAK,cAAc,GAAG,YAAY,CAAC,OAAO,MAAM,CAAC,CAAA;AAEjD,iFAAiF;AACjF,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAA;AAMhF,KAAK,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG;IAC1D;;;;OAIG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;IACnC;;;OAGG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;IACjC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,CAAA;IAC3C;;;OAGG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;IACnC;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAA;IACvC,oFAAoF;IACpF,YAAY,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,CAAA;AAEH,KAAK,mBAAmB,GAAG;IACzB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;IACvB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;IACtB;;;OAGG;IACH,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IAC7B,kEAAkE;IAClE,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,kEAAkE;IAClE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,CAAA;AAED,KAAK,mBAAmB,GAAG;IACzB;;;OAGG;IACH,QAAQ,EAAE,IAAI,CAAA;IACd,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACxB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;IAC5C,yBAAyB;IACzB,IAAI,EAAE,QAAQ,CAAA;IACd,4EAA4E;IAC5E,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,iBAAiB,GACzC,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,CAAA;AAE7C;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,qBAsIxC"}
|
package/actions/button/Button.js
CHANGED
|
@@ -7,6 +7,7 @@ import { assignRef } from '../../utils/assignRef';
|
|
|
7
7
|
import { cx, resolveClassName } from '../../utils/className';
|
|
8
8
|
import { primaryScaleVariants, secondaryScaleVariants, } from '../../utils/scales';
|
|
9
9
|
import { useScopeAttributes } from '../../utils/scope';
|
|
10
|
+
import { useReleaseMark } from '../../utils/useReleaseMark';
|
|
10
11
|
import styles from './button.module.css';
|
|
11
12
|
/**
|
|
12
13
|
* Button classes (§9.2, §1.11.10). `primary` and `secondary` are never
|
|
@@ -98,6 +99,17 @@ export function Button(props) {
|
|
|
98
99
|
node.style.removeProperty('--button-rest-width');
|
|
99
100
|
};
|
|
100
101
|
}, [busy]);
|
|
102
|
+
// A `solid` press swaps fill and ink as a pair; the release mark lets the
|
|
103
|
+
// module step the release too, never fading one over the other [D205].
|
|
104
|
+
const releaseMark = useReleaseMark(element);
|
|
105
|
+
const handlePointerDown = (event) => {
|
|
106
|
+
releaseMark.onPointerDown();
|
|
107
|
+
rest.onPointerDown?.(event);
|
|
108
|
+
};
|
|
109
|
+
const handleKeyUp = (event) => {
|
|
110
|
+
releaseMark.onKeyUp(event);
|
|
111
|
+
rest.onKeyUp?.(event);
|
|
112
|
+
};
|
|
101
113
|
const handleClick = (event) => {
|
|
102
114
|
if (busy) {
|
|
103
115
|
event.preventDefault();
|
|
@@ -128,7 +140,7 @@ export function Button(props) {
|
|
|
128
140
|
const label = children == null ? null : React.createElement("span", { className: styles.label }, children);
|
|
129
141
|
const edge = disabled && variant !== 'text' ? (React.createElement("svg", { className: styles.edge, "aria-hidden": "true", focusable: "false" },
|
|
130
142
|
React.createElement("rect", { className: styles.edgeLine, width: "100%", height: "100%" }))) : null;
|
|
131
|
-
return (React.createElement(BaseButton, { ...rest, ...linkSemantics, ...scope, ref: setRef, disabled: disabled, className: resolvedClassName, onClick: handleClick },
|
|
143
|
+
return (React.createElement(BaseButton, { ...rest, ...linkSemantics, ...scope, ref: setRef, disabled: disabled, className: resolvedClassName, onClick: handleClick, onPointerDown: handlePointerDown, onKeyUp: handleKeyUp },
|
|
132
144
|
iconPosition === 'end' ? label : glyph,
|
|
133
145
|
iconPosition === 'end' ? glyph : label,
|
|
134
146
|
edge));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/actions/button/Button.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAiB,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/actions/button/Button.tsx"],"names":[],"mappings":"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"}
|
|
@@ -38,21 +38,21 @@
|
|
|
38
38
|
appearance: none;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
/* Every target reaches --
|
|
41
|
+
/* Every target reaches --fgd-size-hit; a smaller control extends it invisibly (§9.1) [D43]. */
|
|
42
42
|
.base::after {
|
|
43
43
|
content: '';
|
|
44
44
|
position: absolute;
|
|
45
45
|
top: 50%;
|
|
46
46
|
left: 50%;
|
|
47
|
-
inline-size: var(--
|
|
48
|
-
block-size: var(--
|
|
47
|
+
inline-size: var(--fgd-size-hit);
|
|
48
|
+
block-size: var(--fgd-size-hit);
|
|
49
49
|
min-inline-size: 100%;
|
|
50
50
|
min-block-size: 100%;
|
|
51
51
|
translate: -50% -50%;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
.label {
|
|
55
|
-
text-decoration-thickness: var(--
|
|
55
|
+
text-decoration-thickness: var(--border-size-1-5);
|
|
56
56
|
text-underline-offset: 0.15em;
|
|
57
57
|
}
|
|
58
58
|
|
|
@@ -64,10 +64,10 @@
|
|
|
64
64
|
.edge {
|
|
65
65
|
display: none;
|
|
66
66
|
position: absolute;
|
|
67
|
-
inset-block-start: calc(var(--
|
|
68
|
-
inset-inline-start: calc(var(--
|
|
69
|
-
inline-size: calc(100% - var(--
|
|
70
|
-
block-size: calc(100% - var(--
|
|
67
|
+
inset-block-start: calc(var(--fgd-dot-fine) / 2);
|
|
68
|
+
inset-inline-start: calc(var(--fgd-dot-fine) / 2);
|
|
69
|
+
inline-size: calc(100% - var(--fgd-dot-fine));
|
|
70
|
+
block-size: calc(100% - var(--fgd-dot-fine));
|
|
71
71
|
overflow: visible;
|
|
72
72
|
pointer-events: none;
|
|
73
73
|
}
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
.edgeLine {
|
|
76
76
|
fill: none;
|
|
77
77
|
stroke: var(--role-disabled-edge);
|
|
78
|
-
rx: calc(var(--button-edge-radius) - var(--
|
|
78
|
+
rx: calc(var(--button-edge-radius) - var(--fgd-dot-fine) / 2);
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
@media (forced-colors: active) {
|
|
@@ -84,14 +84,45 @@
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
/*
|
|
87
|
+
/*
|
|
88
|
+
* Hover and press transitions [D181]: --fgd-duration-quick, --ease-out-3;
|
|
89
|
+
* instant under --motionNotOK. Only opaque-to-opaque changes fade [D205]:
|
|
90
|
+
* ink, edge and underline colors everywhere, and the fill of `solid`,
|
|
91
|
+
* which is opaque at rest, on hover and pressed. An `outline` or media
|
|
92
|
+
* Button's fill and ink change only together, as the inverse pair on
|
|
93
|
+
* press (the outline's fill from none), so both step at once.
|
|
94
|
+
*/
|
|
88
95
|
@media (prefers-reduced-motion: no-preference) {
|
|
89
96
|
.base,
|
|
90
97
|
.label {
|
|
91
|
-
transition-property: color,
|
|
92
|
-
transition-duration: var(--
|
|
98
|
+
transition-property: color, border-color, text-decoration-color;
|
|
99
|
+
transition-duration: var(--fgd-duration-quick);
|
|
93
100
|
transition-timing-function: var(--ease-out-3);
|
|
94
101
|
}
|
|
102
|
+
|
|
103
|
+
.solid {
|
|
104
|
+
transition-property: color, background-color, border-color, text-decoration-color;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/*
|
|
108
|
+
* A `solid` press swaps fill and ink as the inverse pair, so the press
|
|
109
|
+
* and its release (marked `data-released` for two frames, since both a
|
|
110
|
+
* release and a hover-in end on :hover) step both at once: no frame shows
|
|
111
|
+
* the ink over a fill of its own tone. Hover in and out still fade.
|
|
112
|
+
*/
|
|
113
|
+
.solid:active,
|
|
114
|
+
.solid:active .label,
|
|
115
|
+
.solid[data-released],
|
|
116
|
+
.solid[data-released] .label {
|
|
117
|
+
transition-property: border-color, text-decoration-color;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.outline,
|
|
121
|
+
.outline .label,
|
|
122
|
+
.onMedia,
|
|
123
|
+
.onMedia .label {
|
|
124
|
+
transition-property: border-color, text-decoration-color;
|
|
125
|
+
}
|
|
95
126
|
}
|
|
96
127
|
}
|
|
97
128
|
|
|
@@ -118,7 +149,7 @@
|
|
|
118
149
|
}
|
|
119
150
|
|
|
120
151
|
.md {
|
|
121
|
-
--button-height: var(--
|
|
152
|
+
--button-height: var(--fgd-size-control-md);
|
|
122
153
|
}
|
|
123
154
|
|
|
124
155
|
.lg {
|
|
@@ -126,7 +157,7 @@
|
|
|
126
157
|
}
|
|
127
158
|
|
|
128
159
|
.xl {
|
|
129
|
-
--button-height: var(--
|
|
160
|
+
--button-height: var(--fgd-size-control-xl);
|
|
130
161
|
}
|
|
131
162
|
|
|
132
163
|
/*
|
|
@@ -182,8 +213,12 @@
|
|
|
182
213
|
block-size: var(--button-height);
|
|
183
214
|
}
|
|
184
215
|
|
|
216
|
+
/* Visually hidden at 1 px (as Toggle's), so a long name never widens the page's scrollable area. */
|
|
185
217
|
.iconOnly .label {
|
|
186
218
|
position: absolute;
|
|
219
|
+
inline-size: var(--border-size-1);
|
|
220
|
+
block-size: var(--border-size-1);
|
|
221
|
+
margin: calc(var(--border-size-1) * -1);
|
|
187
222
|
overflow: hidden;
|
|
188
223
|
clip-path: inset(50%);
|
|
189
224
|
white-space: nowrap;
|
|
@@ -200,12 +235,12 @@
|
|
|
200
235
|
color: var(--primary12);
|
|
201
236
|
}
|
|
202
237
|
|
|
203
|
-
/* Butted to a field (§10.3): --radius-1 outside, --
|
|
238
|
+
/* Butted to a field (§10.3): --radius-1 outside, --radius-0 at the seam. */
|
|
204
239
|
.buttedStart {
|
|
205
240
|
--button-edge-radius: var(--radius-1);
|
|
206
241
|
|
|
207
|
-
border-start-start-radius: var(--
|
|
208
|
-
border-end-start-radius: var(--
|
|
242
|
+
border-start-start-radius: var(--radius-0);
|
|
243
|
+
border-end-start-radius: var(--radius-0);
|
|
209
244
|
border-start-end-radius: var(--radius-1);
|
|
210
245
|
border-end-end-radius: var(--radius-1);
|
|
211
246
|
}
|
|
@@ -215,8 +250,8 @@
|
|
|
215
250
|
|
|
216
251
|
border-start-start-radius: var(--radius-1);
|
|
217
252
|
border-end-start-radius: var(--radius-1);
|
|
218
|
-
border-start-end-radius: var(--
|
|
219
|
-
border-end-end-radius: var(--
|
|
253
|
+
border-start-end-radius: var(--radius-0);
|
|
254
|
+
border-end-end-radius: var(--radius-0);
|
|
220
255
|
}
|
|
221
256
|
}
|
|
222
257
|
|
|
@@ -273,9 +308,9 @@
|
|
|
273
308
|
* label and edge unchanged, no underline;
|
|
274
309
|
* - outline: a --primary3 fill (--role-soft-hover); where soft fills drop
|
|
275
310
|
* it stays the ground and the label takes the bare-text underline
|
|
276
|
-
* (--
|
|
311
|
+
* (--fgd-soft-hover-line);
|
|
277
312
|
* - text: the label takes --role-link-hover, underlined where that is
|
|
278
|
-
* --primary12 (--
|
|
313
|
+
* --primary12 (--fgd-link-hover-line); the glyph swaps to the next tier's
|
|
279
314
|
* weight through Icon weight="interactive" (as on icon-only buttons).
|
|
280
315
|
*/
|
|
281
316
|
.solid:not([data-disabled], [aria-busy='true']):hover {
|
|
@@ -287,7 +322,7 @@
|
|
|
287
322
|
}
|
|
288
323
|
|
|
289
324
|
.outline:not([data-disabled], [aria-busy='true']):hover .label {
|
|
290
|
-
text-decoration-line: var(--
|
|
325
|
+
text-decoration-line: var(--fgd-soft-hover-line);
|
|
291
326
|
text-decoration-color: var(--role-accent);
|
|
292
327
|
text-decoration-thickness: var(--border-size-2);
|
|
293
328
|
text-underline-offset: var(--size-px-1);
|
|
@@ -295,7 +330,7 @@
|
|
|
295
330
|
|
|
296
331
|
.text:not([data-disabled], [aria-busy='true']):hover .label {
|
|
297
332
|
color: var(--role-link-hover);
|
|
298
|
-
text-decoration-line: var(--
|
|
333
|
+
text-decoration-line: var(--fgd-link-hover-line);
|
|
299
334
|
text-decoration-color: var(--role-accent);
|
|
300
335
|
}
|
|
301
336
|
|
|
@@ -357,10 +392,33 @@
|
|
|
357
392
|
text-decoration-thickness: var(--border-size-2);
|
|
358
393
|
}
|
|
359
394
|
|
|
360
|
-
/*
|
|
395
|
+
/*
|
|
396
|
+
* Focus: 2 px --primary12 ring at the ring offset (--fgd-focus-offset,
|
|
397
|
+
* 2 px), keyboard only [D45]. A text Button has no container, so its ring
|
|
398
|
+
* stands off a padded box as tall as its size's contained Button
|
|
399
|
+
* (--button-height, centred on the words) at that 2 px offset: it sits
|
|
400
|
+
* around the words at the height of the other Buttons' rings, never on the
|
|
401
|
+
* glyphs. It is the ring only, an outline: nothing moves, the hit area and
|
|
402
|
+
* the words stay put. The offset is the local ring token, so the outline
|
|
403
|
+
* morph starts and lands on the same box [D204]. Icon-only text Buttons
|
|
404
|
+
* keep the circle's own ring.
|
|
405
|
+
*/
|
|
406
|
+
.text:not(.iconOnly) {
|
|
407
|
+
/* Whole pixels, as the browser draws an outline offset. */
|
|
408
|
+
--fgd-focus-offset: max(
|
|
409
|
+
var(--border-size-2),
|
|
410
|
+
round(down, calc((var(--button-height) - 1lh) / 2 + var(--border-size-2)), 1px)
|
|
411
|
+
);
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
/* In running text the ring keeps to the line: --size-px-1 around the words, so it barely reaches the lines above and below. */
|
|
415
|
+
:where(p, li, dd, dt, blockquote, figcaption, td, th) > .text:not(.iconOnly) {
|
|
416
|
+
--fgd-focus-offset: var(--size-px-1);
|
|
417
|
+
}
|
|
418
|
+
|
|
361
419
|
.base:focus-visible {
|
|
362
420
|
outline: var(--border-size-2) solid var(--primary12);
|
|
363
|
-
outline-offset: var(--
|
|
421
|
+
outline-offset: var(--fgd-focus-offset);
|
|
364
422
|
}
|
|
365
423
|
|
|
366
424
|
/*
|
|
@@ -373,6 +431,8 @@
|
|
|
373
431
|
border-style: none;
|
|
374
432
|
background: none;
|
|
375
433
|
color: var(--role-muted);
|
|
434
|
+
/* The fill goes to none, so it steps [D205]. */
|
|
435
|
+
transition-property: color, border-color, text-decoration-color;
|
|
376
436
|
}
|
|
377
437
|
|
|
378
438
|
.base[data-disabled] .edge {
|
package/actions/chip/Chip.d.ts
CHANGED
|
@@ -49,9 +49,9 @@ export type ChipProps = Omit<useRender.ComponentProps<'span'>, 'children'> & {
|
|
|
49
49
|
secondary?: ChipVariants['secondary'];
|
|
50
50
|
};
|
|
51
51
|
/**
|
|
52
|
-
* A removable chip: `--size-px-7` tall, a `--
|
|
52
|
+
* A removable chip: `--size-px-7` tall, a `--border-size-1-5` `--role-rule`
|
|
53
53
|
* edge, the label in `type-body-ui` and the × (`close`, inline tier) in a
|
|
54
|
-
* `--
|
|
54
|
+
* `--fgd-size-hit` target with its own focus ring. It prints as the word.
|
|
55
55
|
*/
|
|
56
56
|
export declare function Chip(props: ChipProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
57
57
|
export {};
|
package/actions/chip/Chip.js
CHANGED
|
@@ -56,9 +56,9 @@ export const chipParts = {
|
|
|
56
56
|
edgeLine: styles.edgeLine,
|
|
57
57
|
};
|
|
58
58
|
/**
|
|
59
|
-
* A removable chip: `--size-px-7` tall, a `--
|
|
59
|
+
* A removable chip: `--size-px-7` tall, a `--border-size-1-5` `--role-rule`
|
|
60
60
|
* edge, the label in `type-body-ui` and the × (`close`, inline tier) in a
|
|
61
|
-
* `--
|
|
61
|
+
* `--fgd-size-hit` target with its own focus ring. It prints as the word.
|
|
62
62
|
*/
|
|
63
63
|
export function Chip(props) {
|
|
64
64
|
const { render, ref, className, children, onRemove, removeLabel, removeRender, disabled, primary, secondary, ...rest } = props;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Chip (§10.11): the removable chip. CVA function `chip`. It matches the
|
|
3
3
|
* Combobox's chips (combobox.module.css) part for part, so the two read as
|
|
4
4
|
* one component.
|
|
5
|
-
* Color roles (§10.11): edge --role-rule at --
|
|
5
|
+
* Color roles (§10.11): edge --role-rule at --border-size-1-5; label and ×
|
|
6
6
|
* --primary12; × pressed: the inverse pair; disabled: --role-muted label
|
|
7
7
|
* and ×, `line-dotted-fine` edge in --role-disabled-edge (--role-rule, or
|
|
8
8
|
* --primary12 on one-ink grounds [D85]). Colors are role variables only;
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
max-inline-size: 100%;
|
|
33
33
|
block-size: var(--chip-height);
|
|
34
34
|
padding-inline: var(--size-px-3);
|
|
35
|
-
border: var(--
|
|
35
|
+
border: var(--border-size-1-5) solid var(--role-rule);
|
|
36
36
|
border-radius: var(--radius-round);
|
|
37
37
|
color: var(--primary12);
|
|
38
38
|
vertical-align: middle;
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
text-overflow: ellipsis;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
/* The × in its own cell, full chip height, with a --
|
|
53
|
+
/* The × in its own cell, full chip height, with a --fgd-size-hit target. */
|
|
54
54
|
.remove {
|
|
55
55
|
position: relative;
|
|
56
56
|
flex: none;
|
|
@@ -73,8 +73,8 @@
|
|
|
73
73
|
position: absolute;
|
|
74
74
|
inset-block-start: 50%;
|
|
75
75
|
inset-inline-start: 50%;
|
|
76
|
-
inline-size: var(--
|
|
77
|
-
block-size: var(--
|
|
76
|
+
inline-size: var(--fgd-size-hit);
|
|
77
|
+
block-size: var(--fgd-size-hit);
|
|
78
78
|
translate: -50% -50%;
|
|
79
79
|
}
|
|
80
80
|
|
|
@@ -82,10 +82,10 @@
|
|
|
82
82
|
.edge {
|
|
83
83
|
display: none;
|
|
84
84
|
position: absolute;
|
|
85
|
-
inset-block-start: calc(var(--
|
|
86
|
-
inset-inline-start: calc(var(--
|
|
87
|
-
inline-size: calc(100% - var(--
|
|
88
|
-
block-size: calc(100% - var(--
|
|
85
|
+
inset-block-start: calc(var(--fgd-dot-fine) / 2);
|
|
86
|
+
inset-inline-start: calc(var(--fgd-dot-fine) / 2);
|
|
87
|
+
inline-size: calc(100% - var(--fgd-dot-fine));
|
|
88
|
+
block-size: calc(100% - var(--fgd-dot-fine));
|
|
89
89
|
overflow: visible;
|
|
90
90
|
pointer-events: none;
|
|
91
91
|
}
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
.edgeLine {
|
|
94
94
|
fill: none;
|
|
95
95
|
stroke: var(--role-disabled-edge);
|
|
96
|
-
rx: calc(var(--chip-height) / 2 - var(--
|
|
96
|
+
rx: calc(var(--chip-height) / 2 - var(--fgd-dot-fine) / 2);
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
@media (forced-colors: active) {
|
|
@@ -102,13 +102,7 @@
|
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
|
|
106
|
-
.remove {
|
|
107
|
-
transition-property: color, background-color;
|
|
108
|
-
transition-duration: var(--ds-duration-quick);
|
|
109
|
-
transition-timing-function: var(--ease-out-3);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
105
|
+
/* No transition: the × cell's press is the inverse pair from none, which steps at once [D205]. */
|
|
112
106
|
}
|
|
113
107
|
|
|
114
108
|
@layer states {
|
|
@@ -134,7 +128,7 @@
|
|
|
134
128
|
|
|
135
129
|
/* Disabled: fill none, muted ink, the dotted edge; the solid edge's width moves into the padding. */
|
|
136
130
|
.base[data-disabled] {
|
|
137
|
-
padding-inline-start: calc(var(--size-px-3) + var(--
|
|
131
|
+
padding-inline-start: calc(var(--size-px-3) + var(--border-size-1-5));
|
|
138
132
|
border-style: none;
|
|
139
133
|
color: var(--role-muted);
|
|
140
134
|
}
|
package/actions/link/Link.d.ts
CHANGED
|
@@ -40,7 +40,7 @@ export interface LinkProps extends Omit<useRender.ComponentProps<'a'>, 'classNam
|
|
|
40
40
|
/**
|
|
41
41
|
* With `kind="nav"`: a list link (nav-panel, footer, drawer and breadcrumb
|
|
42
42
|
* lists), whose hover is `--role-link-hover` color only, plus the
|
|
43
|
-
* `--
|
|
43
|
+
* `--border-size-1-5` `--role-accent` underline where that ink is
|
|
44
44
|
* `--primary12`. Without it, `nav` is bare navigation text (bar and
|
|
45
45
|
* utility items, page numbers, toolbar links), whose hover is the
|
|
46
46
|
* `--border-size-2` `--role-accent` underline (§9.3) [D181]. Default
|