@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
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*
|
|
6
6
|
* The anchored overlay surface (§10.1): the `white` scope's --primary1 face,
|
|
7
7
|
* a --border-size-2 --primary12 frame in both modes [D92, D156],
|
|
8
|
-
* --
|
|
9
|
-
*
|
|
8
|
+
* --radius-2-25, 240–360 px wide, --size-px-3 padding. No motion: a hover
|
|
9
|
+
* preview appears and goes at once [D205]. Shown only with
|
|
10
10
|
* hover and a fine pointer. Colors are role variables only; local custom
|
|
11
11
|
* properties carry dimensions only.
|
|
12
12
|
*/
|
|
@@ -36,21 +36,20 @@
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
.base {
|
|
39
|
-
--preview-card-tail-inline: var(--
|
|
40
|
-
--preview-card-tail-block: calc(var(--
|
|
39
|
+
--preview-card-tail-inline: var(--size-px-2-5);
|
|
40
|
+
--preview-card-tail-block: calc(var(--size-px-2-5) / 2 + var(--border-size-2));
|
|
41
41
|
--preview-card-bleed: calc(-1 * var(--preview-card-tail-block));
|
|
42
|
-
--preview-card-clip-from: inset(var(--preview-card-bleed));
|
|
43
42
|
|
|
44
43
|
position: relative;
|
|
45
44
|
display: grid;
|
|
46
45
|
row-gap: var(--size-px-2);
|
|
47
46
|
box-sizing: border-box;
|
|
48
47
|
inline-size: max-content;
|
|
49
|
-
min-inline-size: min(var(--size-px-13), calc(100vw - 2 * var(--
|
|
50
|
-
max-inline-size: min(var(--
|
|
48
|
+
min-inline-size: min(var(--size-px-13), calc(100vw - 2 * var(--fgd-space-margin)));
|
|
49
|
+
max-inline-size: min(var(--fgd-size-overlay-max), calc(100vw - 2 * var(--fgd-space-margin)));
|
|
51
50
|
padding: var(--size-px-3);
|
|
52
51
|
border: var(--border-size-2) solid var(--primary12);
|
|
53
|
-
border-radius: var(--
|
|
52
|
+
border-radius: var(--radius-2-25);
|
|
54
53
|
background-color: var(--primary1);
|
|
55
54
|
color: var(--primary12);
|
|
56
55
|
clip-path: inset(var(--preview-card-bleed));
|
|
@@ -63,7 +62,7 @@
|
|
|
63
62
|
block-size: auto;
|
|
64
63
|
aspect-ratio: var(--ratio-widescreen);
|
|
65
64
|
object-fit: cover;
|
|
66
|
-
border-radius: max(var(--radius-1), calc(var(--
|
|
65
|
+
border-radius: max(var(--radius-1), calc(var(--radius-2-25) - var(--size-px-3)));
|
|
67
66
|
}
|
|
68
67
|
|
|
69
68
|
.title,
|
|
@@ -91,14 +90,6 @@
|
|
|
91
90
|
stroke-width: var(--border-size-2);
|
|
92
91
|
}
|
|
93
92
|
|
|
94
|
-
@media (prefers-reduced-motion: no-preference) {
|
|
95
|
-
.base {
|
|
96
|
-
transition-property: clip-path;
|
|
97
|
-
transition-duration: var(--ds-duration-disclosure);
|
|
98
|
-
transition-timing-function: var(--ease-out-3);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
93
|
/* Hover and a fine pointer only: on touch, stylus and coarse pointers the link simply navigates. */
|
|
103
94
|
@media (hover: none) and (pointer: coarse),(hover: none) and (pointer: fine),(hover) and (pointer: coarse) {
|
|
104
95
|
.positioner,
|
|
@@ -109,41 +100,6 @@
|
|
|
109
100
|
}
|
|
110
101
|
|
|
111
102
|
@layer states {
|
|
112
|
-
.base[data-side='bottom'] {
|
|
113
|
-
--preview-card-clip-from: inset(
|
|
114
|
-
var(--preview-card-bleed) var(--preview-card-bleed) 100% var(--preview-card-bleed)
|
|
115
|
-
);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
.base[data-side='top'] {
|
|
119
|
-
--preview-card-clip-from: inset(
|
|
120
|
-
100% var(--preview-card-bleed) var(--preview-card-bleed) var(--preview-card-bleed)
|
|
121
|
-
);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
.base[data-side='left'],
|
|
125
|
-
.base[data-side='inline-start'] {
|
|
126
|
-
--preview-card-clip-from: inset(
|
|
127
|
-
var(--preview-card-bleed) var(--preview-card-bleed) var(--preview-card-bleed) 100%
|
|
128
|
-
);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
.base[data-side='right'],
|
|
132
|
-
.base[data-side='inline-end'] {
|
|
133
|
-
--preview-card-clip-from: inset(
|
|
134
|
-
var(--preview-card-bleed) 100% var(--preview-card-bleed) var(--preview-card-bleed)
|
|
135
|
-
);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
.base[data-starting-style],
|
|
139
|
-
.base[data-ending-style] {
|
|
140
|
-
clip-path: var(--preview-card-clip-from);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
.base[data-instant] {
|
|
144
|
-
transition: none;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
103
|
.arrow[data-side='bottom'] {
|
|
148
104
|
inset-block-start: calc(-1 * var(--preview-card-tail-block));
|
|
149
105
|
}
|
|
@@ -153,13 +109,22 @@
|
|
|
153
109
|
rotate: 180deg;
|
|
154
110
|
}
|
|
155
111
|
|
|
156
|
-
|
|
112
|
+
/* The physical sides place the tail physically, so it faces the trigger on a right-to-left page too. */
|
|
113
|
+
.arrow[data-side='left'] {
|
|
114
|
+
right: calc(-1 * (var(--preview-card-tail-inline) + var(--preview-card-tail-block)) / 2);
|
|
115
|
+
rotate: 90deg;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.arrow[data-side='right'] {
|
|
119
|
+
left: calc(-1 * (var(--preview-card-tail-inline) + var(--preview-card-tail-block)) / 2);
|
|
120
|
+
rotate: -90deg;
|
|
121
|
+
}
|
|
122
|
+
|
|
157
123
|
.arrow[data-side='inline-start'] {
|
|
158
124
|
inset-inline-end: calc(-1 * (var(--preview-card-tail-inline) + var(--preview-card-tail-block)) / 2);
|
|
159
125
|
rotate: 90deg;
|
|
160
126
|
}
|
|
161
127
|
|
|
162
|
-
.arrow[data-side='right'],
|
|
163
128
|
.arrow[data-side='inline-end'] {
|
|
164
129
|
inset-inline-start: calc(-1 * (var(--preview-card-tail-inline) + var(--preview-card-tail-block)) / 2);
|
|
165
130
|
rotate: -90deg;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { useSearch } from '@fairgarden/docs/useSearch';
|
|
3
|
+
import type { SearchResult, Sitemap, UseSearchOptions } from '@fairgarden/docs/useSearch/types';
|
|
4
|
+
import type { SearchDialogVariants } from './variants';
|
|
5
|
+
/** The engine's per-query options: the second argument of `useSearch().search`. */
|
|
6
|
+
export type SearchDialogSearchBy = NonNullable<Parameters<ReturnType<typeof useSearch>['search']>[1]>;
|
|
7
|
+
/** `useSearch`'s options (all but `sitemap`), plus the per-query options. */
|
|
8
|
+
export type SearchDialogSearchOptions = Omit<UseSearchOptions, 'sitemap'> & {
|
|
9
|
+
/**
|
|
10
|
+
* Passed with every query, `search(value, searchBy)`. Replaces the
|
|
11
|
+
* default, `{ groupBy: { properties: ['group'], maxResult: 5 } }`.
|
|
12
|
+
*/
|
|
13
|
+
searchBy?: SearchDialogSearchBy;
|
|
14
|
+
};
|
|
15
|
+
/** Props for SearchDialog. */
|
|
16
|
+
export type SearchDialogProps = {
|
|
17
|
+
/**
|
|
18
|
+
* The sitemap loader `useSearch` indexes, e.g. `() => import('./sitemap')`.
|
|
19
|
+
* Read once, on mount, when the index builds; an inline arrow is fine.
|
|
20
|
+
*/
|
|
21
|
+
sitemap: () => Promise<{
|
|
22
|
+
sitemap?: Sitemap;
|
|
23
|
+
}>;
|
|
24
|
+
/**
|
|
25
|
+
* `useSearch` options, merged over the source's defaults:
|
|
26
|
+
* `maxDefaultResults: 10`, `tolerance: 1`, `limit: 20`,
|
|
27
|
+
* `enableStemming: true`. Keep `flattenPage` and `generateSlug` stable:
|
|
28
|
+
* `useSearch` rebuilds its index when they change.
|
|
29
|
+
*/
|
|
30
|
+
searchOptions?: SearchDialogSearchOptions;
|
|
31
|
+
/**
|
|
32
|
+
* A plain activation of a row (click, or Enter on the highlighted row)
|
|
33
|
+
* closes the dialog, `preventDefault()`s the row's link and calls this
|
|
34
|
+
* with the engine's `buildResultUrl(result)`; a Next.js site passes
|
|
35
|
+
* `(href) => router.push(href)`. Without it, the link navigates natively.
|
|
36
|
+
* A modifier click always follows the link natively and leaves the dialog
|
|
37
|
+
* open.
|
|
38
|
+
*/
|
|
39
|
+
onNavigate?: (href: string, result: SearchResult) => void;
|
|
40
|
+
/**
|
|
41
|
+
* Controlled open. SearchDialog calls `onOpenChange` inside the morph's
|
|
42
|
+
* `flushSync`, so set `open` synchronously in it.
|
|
43
|
+
*/
|
|
44
|
+
open?: boolean;
|
|
45
|
+
/** Default `false`. */
|
|
46
|
+
defaultOpen?: boolean;
|
|
47
|
+
onOpenChange?: (open: boolean) => void;
|
|
48
|
+
/** After the morph (or fallback) finishes. On close, the results are already reset to the engine's `defaultResults`. */
|
|
49
|
+
onOpenChangeComplete?: (open: boolean) => void;
|
|
50
|
+
/**
|
|
51
|
+
* ⌘K / Ctrl K: a `keydown` listener on `window` in the capture phase,
|
|
52
|
+
* `preventDefault` + `stopPropagation`, guarded while open, opening or
|
|
53
|
+
* closing. Also shows the platform-aware hint and, from `--lg-n-above`,
|
|
54
|
+
* the "esc" button in place of the "Close search" button. The hint renders
|
|
55
|
+
* nothing on the server, then "⌘K" on Apple platforms or "Ctrl K"
|
|
56
|
+
* elsewhere. One per page. Default `false`.
|
|
57
|
+
*/
|
|
58
|
+
keyboardShortcut?: boolean;
|
|
59
|
+
/** Milliseconds before empty results replace the list. Default `400`. */
|
|
60
|
+
emptyDelay?: number;
|
|
61
|
+
/** Trigger text, input placeholder and the dialog's accessible name. Default `"Search"`. */
|
|
62
|
+
label?: string;
|
|
63
|
+
/** The score badge on each row. Default: outside production builds, as in the source. */
|
|
64
|
+
showScores?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Primary Radix scale: frame, labels, highlighted row, focus ring. Never
|
|
67
|
+
* defaulted; omitted, the trigger inherits the scope and the popup takes
|
|
68
|
+
* the `white` overlay preset's default [D133, D139].
|
|
69
|
+
*/
|
|
70
|
+
primary?: SearchDialogVariants['primary'];
|
|
71
|
+
/** Secondary Radix scale. Never defaulted. */
|
|
72
|
+
secondary?: SearchDialogVariants['secondary'];
|
|
73
|
+
/** On the trigger. */
|
|
74
|
+
className?: string;
|
|
75
|
+
/**
|
|
76
|
+
* The expanding box's morph between the trigger and the dialog [D194].
|
|
77
|
+
* Default `true`; `false` opens and closes the dialog at once. It also
|
|
78
|
+
* honours the shared switch, `--fgd-outline-morph: none` on the trigger
|
|
79
|
+
* or an ancestor, and a 0 duration token (§9.14, §9.17) [D204].
|
|
80
|
+
*/
|
|
81
|
+
morph?: boolean;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* The search dialog over a `@fairgarden/docs` sitemap: the trigger, and the
|
|
85
|
+
* dialog in a portal. It owns the engine (`useSearch`), open state, the
|
|
86
|
+
* shortcut listener, the delayed results copy and the transitions.
|
|
87
|
+
*/
|
|
88
|
+
export declare function SearchDialog(props: SearchDialogProps): React.JSX.Element;
|
|
89
|
+
//# sourceMappingURL=SearchDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchDialog.d.ts","sourceRoot":"","sources":["../../src/overlays/search-dialog/SearchDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,gBAAgB,EAEjB,MAAM,kCAAkC,CAAA;AAKzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAiDtD,mFAAmF;AACnF,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAC5C,UAAU,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CACtD,CAAA;AAED,6EAA6E;AAC7E,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,GAAG;IAC1E;;;OAGG;IACH,QAAQ,CAAC,EAAE,oBAAoB,CAAA;CAChC,CAAA;AAED,8BAA8B;AAC9B,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;OAGG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IAC7C;;;;;OAKG;IACH,aAAa,CAAC,EAAE,yBAAyB,CAAA;IACzC;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;IACzD;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,uBAAuB;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,wHAAwH;IACxH,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAC9C;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4FAA4F;IAC5F,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yFAAyF;IACzF,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAA;IACzC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAA;IAC7C,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAyBD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA4QxE"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { useSearch } from '@fairgarden/docs/useSearch';
|
|
4
|
+
import { startExpandingTransition, useExpandingBoxName } from '../../foundations/expanding-box';
|
|
5
|
+
import { SearchDialogPopup } from './SearchDialogPopup';
|
|
6
|
+
import { SearchDialogTrigger } from './SearchDialogTrigger';
|
|
7
|
+
/** The source's `useSearch` options. */
|
|
8
|
+
const searchDefaults = {
|
|
9
|
+
maxDefaultResults: 10,
|
|
10
|
+
tolerance: 1,
|
|
11
|
+
limit: 20,
|
|
12
|
+
enableStemming: true,
|
|
13
|
+
};
|
|
14
|
+
/** The source's per-query options: at most five results per group. */
|
|
15
|
+
const defaultSearchBy = {
|
|
16
|
+
groupBy: { properties: ['group'], maxResult: 5 },
|
|
17
|
+
};
|
|
18
|
+
const noOptions = {};
|
|
19
|
+
/** How long a started open or close blocks the next one, as in the source. */
|
|
20
|
+
const REENTRY_GUARD_MS = 100;
|
|
21
|
+
/**
|
|
22
|
+
* The search dialog over a `@fairgarden/docs` sitemap: the trigger, and the
|
|
23
|
+
* dialog in a portal. It owns the engine (`useSearch`), open state, the
|
|
24
|
+
* shortcut listener, the delayed results copy and the transitions.
|
|
25
|
+
*/
|
|
26
|
+
export function SearchDialog(props) {
|
|
27
|
+
const { sitemap, searchOptions = noOptions, onNavigate, open: openProp, defaultOpen = false, onOpenChange, onOpenChangeComplete, keyboardShortcut = false, emptyDelay = 400, label = 'Search', showScores = process.env.NODE_ENV !== 'production', primary, secondary, className, morph = true, } = props;
|
|
28
|
+
const { searchBy = defaultSearchBy, ...engineOptions } = searchOptions;
|
|
29
|
+
// useSearch rebuilds its index whenever the loader's identity changes; an
|
|
30
|
+
// inline `() => import(…)` must not rebuild it on every render.
|
|
31
|
+
const sitemapRef = React.useRef(sitemap);
|
|
32
|
+
React.useLayoutEffect(() => {
|
|
33
|
+
sitemapRef.current = sitemap;
|
|
34
|
+
});
|
|
35
|
+
const loadSitemap = React.useCallback(() => sitemapRef.current(), []);
|
|
36
|
+
const { results, defaultResults, search, buildResultUrl, isReady } = useSearch({
|
|
37
|
+
...searchDefaults,
|
|
38
|
+
...engineOptions,
|
|
39
|
+
sitemap: loadSitemap,
|
|
40
|
+
});
|
|
41
|
+
const name = useExpandingBoxName();
|
|
42
|
+
const inputId = React.useId();
|
|
43
|
+
const triggerRef = React.useRef(null);
|
|
44
|
+
const inputRef = React.useRef(null);
|
|
45
|
+
const [innerOpen, setInnerOpen] = React.useState(defaultOpen);
|
|
46
|
+
const controlled = openProp !== undefined;
|
|
47
|
+
const open = controlled ? openProp : innerOpen;
|
|
48
|
+
const [query, setQuery] = React.useState('');
|
|
49
|
+
// The source's delayed copy: non-empty results apply at once, empty ones
|
|
50
|
+
// after the delay, so "No results" never flashes while typing. A layout
|
|
51
|
+
// effect, so a new non-empty list replaces the old one before paint.
|
|
52
|
+
const [shown, setShown] = React.useState(results);
|
|
53
|
+
React.useLayoutEffect(() => {
|
|
54
|
+
if (results.results.length === 0) {
|
|
55
|
+
const timeout = window.setTimeout(() => setShown(results), emptyDelay);
|
|
56
|
+
return () => window.clearTimeout(timeout);
|
|
57
|
+
}
|
|
58
|
+
setShown(results);
|
|
59
|
+
return undefined;
|
|
60
|
+
}, [results, emptyDelay]);
|
|
61
|
+
// The latest values, for handlers that outlive a render.
|
|
62
|
+
const openRef = React.useRef(open);
|
|
63
|
+
const latest = React.useRef({
|
|
64
|
+
controlled,
|
|
65
|
+
onOpenChange,
|
|
66
|
+
onOpenChangeComplete,
|
|
67
|
+
defaultResults,
|
|
68
|
+
query,
|
|
69
|
+
search,
|
|
70
|
+
searchBy,
|
|
71
|
+
morph,
|
|
72
|
+
});
|
|
73
|
+
React.useLayoutEffect(() => {
|
|
74
|
+
openRef.current = open;
|
|
75
|
+
latest.current = {
|
|
76
|
+
controlled,
|
|
77
|
+
onOpenChange,
|
|
78
|
+
onOpenChangeComplete,
|
|
79
|
+
defaultResults,
|
|
80
|
+
query,
|
|
81
|
+
search,
|
|
82
|
+
searchBy,
|
|
83
|
+
morph,
|
|
84
|
+
};
|
|
85
|
+
});
|
|
86
|
+
// A query typed before the index was ready runs once it is.
|
|
87
|
+
React.useEffect(() => {
|
|
88
|
+
if (!isReady)
|
|
89
|
+
return;
|
|
90
|
+
const { query: pending, search: runSearch, searchBy: by } = latest.current;
|
|
91
|
+
if (pending.trim())
|
|
92
|
+
void runSearch(pending, by);
|
|
93
|
+
}, [isReady]);
|
|
94
|
+
const openingRef = React.useRef(false);
|
|
95
|
+
const closingRef = React.useRef(false);
|
|
96
|
+
const guardTimers = React.useRef([]);
|
|
97
|
+
React.useEffect(() => {
|
|
98
|
+
const timers = guardTimers.current;
|
|
99
|
+
return () => timers.forEach((timer) => window.clearTimeout(timer));
|
|
100
|
+
}, []);
|
|
101
|
+
const releaseLater = React.useCallback((guard) => {
|
|
102
|
+
const timer = window.setTimeout(() => {
|
|
103
|
+
guard.current = false;
|
|
104
|
+
guardTimers.current = guardTimers.current.filter((pending) => pending !== timer);
|
|
105
|
+
}, REENTRY_GUARD_MS);
|
|
106
|
+
guardTimers.current.push(timer);
|
|
107
|
+
}, []);
|
|
108
|
+
const setOpen = React.useCallback((next) => {
|
|
109
|
+
if (!latest.current.controlled)
|
|
110
|
+
setInnerOpen(next);
|
|
111
|
+
latest.current.onOpenChange?.(next);
|
|
112
|
+
}, []);
|
|
113
|
+
const completion = React.useRef(null);
|
|
114
|
+
const finish = React.useCallback((next) => {
|
|
115
|
+
if (!next) {
|
|
116
|
+
setShown(latest.current.defaultResults);
|
|
117
|
+
setQuery('');
|
|
118
|
+
}
|
|
119
|
+
latest.current.onOpenChangeComplete?.(next);
|
|
120
|
+
}, []);
|
|
121
|
+
// Both the morph and the Dialog's own transition report here; the later one completes.
|
|
122
|
+
const settle = React.useCallback((next, from) => {
|
|
123
|
+
const current = completion.current;
|
|
124
|
+
if (!current) {
|
|
125
|
+
// An open state changed from outside (controlled): the Dialog's report is the only one.
|
|
126
|
+
if (from === 'dialog')
|
|
127
|
+
finish(next);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (current.open !== next)
|
|
131
|
+
return;
|
|
132
|
+
current.pending -= 1;
|
|
133
|
+
if (current.pending > 0)
|
|
134
|
+
return;
|
|
135
|
+
completion.current = null;
|
|
136
|
+
finish(next);
|
|
137
|
+
}, [finish]);
|
|
138
|
+
const requestOpen = React.useCallback(() => {
|
|
139
|
+
if (openingRef.current || openRef.current)
|
|
140
|
+
return;
|
|
141
|
+
openingRef.current = true;
|
|
142
|
+
completion.current = { open: true, pending: 2 };
|
|
143
|
+
void startExpandingTransition(() => setOpen(true), {
|
|
144
|
+
direction: 'open',
|
|
145
|
+
enabled: latest.current.morph,
|
|
146
|
+
source: triggerRef.current,
|
|
147
|
+
}).then(() => settle(true, 'morph'));
|
|
148
|
+
releaseLater(openingRef);
|
|
149
|
+
}, [releaseLater, setOpen, settle]);
|
|
150
|
+
const requestClose = React.useCallback(() => {
|
|
151
|
+
if (closingRef.current || !openRef.current)
|
|
152
|
+
return;
|
|
153
|
+
closingRef.current = true;
|
|
154
|
+
completion.current = { open: false, pending: 2 };
|
|
155
|
+
void startExpandingTransition(() => setOpen(false), {
|
|
156
|
+
direction: 'close',
|
|
157
|
+
enabled: latest.current.morph,
|
|
158
|
+
source: triggerRef.current,
|
|
159
|
+
}).then(() => settle(false, 'morph'));
|
|
160
|
+
releaseLater(closingRef);
|
|
161
|
+
}, [releaseLater, setOpen, settle]);
|
|
162
|
+
const handleDialogOpenChange = React.useCallback((next) => (next ? requestOpen() : requestClose()), [requestOpen, requestClose]);
|
|
163
|
+
const handleDialogOpenChangeComplete = React.useCallback((next) => settle(next, 'dialog'), [settle]);
|
|
164
|
+
// Focus returns to the trigger inside the morph's flushSync, so the new
|
|
165
|
+
// snapshot holds its ring; the Dialog's finalFocus covers every other close.
|
|
166
|
+
const wasOpen = React.useRef(open);
|
|
167
|
+
React.useLayoutEffect(() => {
|
|
168
|
+
if (wasOpen.current && !open)
|
|
169
|
+
triggerRef.current?.focus({ preventScroll: true });
|
|
170
|
+
wasOpen.current = open;
|
|
171
|
+
}, [open]);
|
|
172
|
+
// ⌘K / Ctrl K, in the capture phase so the page's own handlers never see it.
|
|
173
|
+
React.useEffect(() => {
|
|
174
|
+
if (!keyboardShortcut)
|
|
175
|
+
return undefined;
|
|
176
|
+
const handleKeyDown = (event) => {
|
|
177
|
+
if (!(event.metaKey || event.ctrlKey) || event.shiftKey || event.altKey)
|
|
178
|
+
return;
|
|
179
|
+
if (event.key !== 'k' && event.key !== 'K')
|
|
180
|
+
return;
|
|
181
|
+
// Another search dialog on the page took this keystroke: one dialog opens, not two.
|
|
182
|
+
if (event.defaultPrevented)
|
|
183
|
+
return;
|
|
184
|
+
event.preventDefault();
|
|
185
|
+
event.stopPropagation();
|
|
186
|
+
if (!openRef.current && !openingRef.current && !closingRef.current)
|
|
187
|
+
requestOpen();
|
|
188
|
+
};
|
|
189
|
+
window.addEventListener('keydown', handleKeyDown, { capture: true });
|
|
190
|
+
return () => window.removeEventListener('keydown', handleKeyDown, { capture: true });
|
|
191
|
+
}, [keyboardShortcut, requestOpen]);
|
|
192
|
+
const handleValueChange = React.useCallback((value) => {
|
|
193
|
+
setQuery(value);
|
|
194
|
+
if (!isReady)
|
|
195
|
+
return;
|
|
196
|
+
void search(value, searchBy);
|
|
197
|
+
}, [isReady, search, searchBy]);
|
|
198
|
+
const handleItemClick = React.useCallback((event, result) => {
|
|
199
|
+
if (event.defaultPrevented)
|
|
200
|
+
return;
|
|
201
|
+
// A modifier click opens the link its own way; the dialog stays open.
|
|
202
|
+
if (event.button !== 0 ||
|
|
203
|
+
event.metaKey ||
|
|
204
|
+
event.ctrlKey ||
|
|
205
|
+
event.shiftKey ||
|
|
206
|
+
event.altKey) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (onNavigate)
|
|
210
|
+
event.preventDefault();
|
|
211
|
+
requestClose();
|
|
212
|
+
onNavigate?.(buildResultUrl(result), result);
|
|
213
|
+
}, [buildResultUrl, onNavigate, requestClose]);
|
|
214
|
+
// Blank input: the engine's default results, even if an empty result's delay is still pending.
|
|
215
|
+
const current = query.trim() === '' ? defaultResults : shown;
|
|
216
|
+
return (React.createElement(React.Fragment, null,
|
|
217
|
+
React.createElement(SearchDialogTrigger, { ref: triggerRef, name: name, open: open, label: label, keyboardShortcut: keyboardShortcut, onClick: requestOpen, primary: primary, secondary: secondary, className: className }),
|
|
218
|
+
React.createElement(SearchDialogPopup, { name: name, open: open, onOpenChange: handleDialogOpenChange, onOpenChangeComplete: handleDialogOpenChangeComplete, onClose: requestClose, triggerRef: triggerRef, inputRef: inputRef, inputId: inputId, label: label, keyboardShortcut: keyboardShortcut, results: current, query: query, onValueChange: handleValueChange, onItemClick: handleItemClick, buildResultUrl: buildResultUrl, showScores: showScores, primary: primary, secondary: secondary })));
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=SearchDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchDialog.js","sourceRoot":"","sources":["../../src/overlays/search-dialog/SearchDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { SearchResult, UseSearchResult } from '@fairgarden/docs/useSearch/types';
|
|
3
|
+
import { type SearchDialogVariants } from './variants';
|
|
4
|
+
/** Props for SearchDialogPopup, all set by SearchDialog. */
|
|
5
|
+
export type SearchDialogPopupProps = {
|
|
6
|
+
/** The expanding-box pair's name. */
|
|
7
|
+
name: string;
|
|
8
|
+
open: boolean;
|
|
9
|
+
/** The Dialog's own requests (outside press, Escape outside the input). */
|
|
10
|
+
onOpenChange: (open: boolean) => void;
|
|
11
|
+
onOpenChangeComplete: (open: boolean) => void;
|
|
12
|
+
/** Escape in the input, the esc key cap and the "Close search" button. */
|
|
13
|
+
onClose: () => void;
|
|
14
|
+
triggerRef: React.RefObject<HTMLButtonElement | null>;
|
|
15
|
+
inputRef: React.RefObject<HTMLInputElement | null>;
|
|
16
|
+
inputId: string;
|
|
17
|
+
label: string;
|
|
18
|
+
keyboardShortcut: boolean;
|
|
19
|
+
/** The engine's results to show (the delayed copy): groups, count and elapsed time. */
|
|
20
|
+
results: UseSearchResult<unknown>['results'];
|
|
21
|
+
query: string;
|
|
22
|
+
onValueChange: (value: string) => void;
|
|
23
|
+
/** A row's activation; its link goes to `buildResultUrl(result)`. */
|
|
24
|
+
onItemClick: (event: React.MouseEvent<HTMLElement>, result: SearchResult) => void;
|
|
25
|
+
/** The engine's `buildResultUrl`. */
|
|
26
|
+
buildResultUrl: (result: SearchResult) => string;
|
|
27
|
+
showScores: boolean;
|
|
28
|
+
primary: SearchDialogVariants['primary'];
|
|
29
|
+
secondary: SearchDialogVariants['secondary'];
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Base UI Dialog (Portal, colorless Backdrop, Viewport, Popup) holding the
|
|
33
|
+
* expanded `sheet` ExpandingBox with the Autocomplete: below --md-n-above
|
|
34
|
+
* the sheet, a panel inset by the page margin and the safe areas; from it,
|
|
35
|
+
* the centered panel. Modal: the page stays
|
|
36
|
+
* visible, inert and scroll-locked, never dimmed.
|
|
37
|
+
*/
|
|
38
|
+
export declare function SearchDialogPopup(props: SearchDialogPopupProps): React.JSX.Element;
|
|
39
|
+
//# sourceMappingURL=SearchDialogPopup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchDialogPopup.d.ts","sourceRoot":"","sources":["../../src/overlays/search-dialog/SearchDialogPopup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EAChB,MAAM,kCAAkC,CAAA;AAmBzC,OAAO,EAAuC,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAS3F,4DAA4D;AAC5D,MAAM,MAAM,sBAAsB,GAAG;IACnC,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;IACb,2EAA2E;IAC3E,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,oBAAoB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAC7C,0EAA0E;IAC1E,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;IACrD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IAClD,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB,EAAE,OAAO,CAAA;IACzB,uFAAuF;IACvF,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAA;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,qEAAqE;IACrE,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;IACjF,qCAAqC;IACrC,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,CAAA;IAChD,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAA;IACxC,SAAS,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAA;CAC7C,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAgClF"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete';
|
|
4
|
+
import { Dialog as BaseDialog } from '@base-ui/react/dialog';
|
|
5
|
+
import { Button } from '../../actions/button';
|
|
6
|
+
import { ScrollArea } from '../../data/scroll-area';
|
|
7
|
+
import { ExpandingBox, ExpandingBoxExtra, ExpandingBoxMain, expandingBoxParts, } from '../../foundations/expanding-box';
|
|
8
|
+
import { Icon } from '../../foundations/icon';
|
|
9
|
+
import { cx } from '../../utils/className';
|
|
10
|
+
import { highlightMatch } from '../../utils/highlightMatch';
|
|
11
|
+
import { OverlayScope, overlayActionClassName, overlayAttributes, overlayScales, } from '../../utils/overlay';
|
|
12
|
+
import { searchDialog, searchDialogTypeIcons } from './variants';
|
|
13
|
+
import styles from './search-dialog.module.css';
|
|
14
|
+
/**
|
|
15
|
+
* Base UI Dialog (Portal, colorless Backdrop, Viewport, Popup) holding the
|
|
16
|
+
* expanded `sheet` ExpandingBox with the Autocomplete: below --md-n-above
|
|
17
|
+
* the sheet, a panel inset by the page margin and the safe areas; from it,
|
|
18
|
+
* the centered panel. Modal: the page stays
|
|
19
|
+
* visible, inert and scroll-locked, never dimmed.
|
|
20
|
+
*/
|
|
21
|
+
export function SearchDialogPopup(props) {
|
|
22
|
+
const { open, onOpenChange, onOpenChangeComplete, triggerRef, inputRef, label } = props;
|
|
23
|
+
const scales = overlayScales(props.primary, props.secondary);
|
|
24
|
+
return (React.createElement(BaseDialog.Root, { open: open, onOpenChange: onOpenChange, onOpenChangeComplete: onOpenChangeComplete },
|
|
25
|
+
React.createElement(BaseDialog.Portal, null,
|
|
26
|
+
React.createElement(BaseDialog.Backdrop, { className: styles.backdrop }),
|
|
27
|
+
React.createElement(BaseDialog.Viewport, { className: styles.viewport },
|
|
28
|
+
React.createElement(BaseDialog.Popup, { ...overlayAttributes, "aria-label": label, initialFocus: inputRef, finalFocus: triggerRef, className: searchDialog({
|
|
29
|
+
primary: scales.primary,
|
|
30
|
+
secondary: scales.secondary,
|
|
31
|
+
className: cx(expandingBoxParts.host, styles.popup, overlayActionClassName),
|
|
32
|
+
}) },
|
|
33
|
+
React.createElement(OverlayScope, null,
|
|
34
|
+
React.createElement(SearchDialogPanel, { ...props })))))));
|
|
35
|
+
}
|
|
36
|
+
/** The expanded box: the input row, the results and the stats row. */
|
|
37
|
+
function SearchDialogPanel(props) {
|
|
38
|
+
const { name, open, onClose, inputRef, inputId, label, keyboardShortcut, results, query, onValueChange, onItemClick, buildResultUrl, showScores, } = props;
|
|
39
|
+
const trimmed = query.trim();
|
|
40
|
+
// Focus lands on the input inside the morph's flushSync, so the new snapshot holds its ring.
|
|
41
|
+
React.useLayoutEffect(() => {
|
|
42
|
+
inputRef.current?.focus({ preventScroll: true });
|
|
43
|
+
}, [inputRef]);
|
|
44
|
+
return (React.createElement(ExpandingBox, { name: name, active: open, sheet: true, className: styles.box },
|
|
45
|
+
React.createElement(BaseAutocomplete.Root, { items: results.results, filter: null, open: true, inline: true, autoHighlight: true, value: query, onValueChange: onValueChange, onOpenChange: (next, details) => {
|
|
46
|
+
if (!next && details.reason === 'escape-key')
|
|
47
|
+
onClose();
|
|
48
|
+
}, itemToStringValue: (result) => result.title || result.slug },
|
|
49
|
+
React.createElement(ExpandingBoxMain, { className: styles.inputRow },
|
|
50
|
+
React.createElement(Icon, { name: "search", className: styles.magnifier }),
|
|
51
|
+
React.createElement(BaseAutocomplete.Input, { ref: inputRef, id: inputId, className: styles.input, placeholder: label, "aria-label": label }),
|
|
52
|
+
keyboardShortcut ? (React.createElement("button", { type: "button", "aria-keyshortcuts": "Escape", className: cx(expandingBoxParts.end, styles.esc), onClick: onClose },
|
|
53
|
+
React.createElement("kbd", { className: styles.escKey }, "esc"),
|
|
54
|
+
React.createElement("span", { className: styles.visuallyHidden },
|
|
55
|
+
", close ",
|
|
56
|
+
label.toLowerCase()))) : null,
|
|
57
|
+
React.createElement(Button, { iconOnly: true, icon: "close", size: "sm", className: cx(expandingBoxParts.end, styles.closeIcon), onClick: onClose }, `Close ${label.toLowerCase()}`)),
|
|
58
|
+
React.createElement(ExpandingBoxExtra, { className: styles.results },
|
|
59
|
+
React.createElement(ScrollArea, { kind: "panel", maxBlockSize: "none", className: styles.scroll },
|
|
60
|
+
React.createElement(BaseAutocomplete.Empty, { className: styles.empty }, trimmed ? `No results for '${trimmed}'` : null),
|
|
61
|
+
React.createElement(BaseAutocomplete.List, { className: styles.list }, (group) => (React.createElement(BaseAutocomplete.Group, { key: group.group, items: group.items, className: styles.group },
|
|
62
|
+
group.group !== 'Default' ? (React.createElement(BaseAutocomplete.GroupLabel, { className: styles.groupLabel }, group.group)) : null,
|
|
63
|
+
React.createElement(BaseAutocomplete.Collection, null, (result, index) => (React.createElement(SearchDialogItem, { key: result.id || index, result: result, href: buildResultUrl(result), query: query, showScores: showScores, onClick: onItemClick })))))))),
|
|
64
|
+
React.createElement(BaseAutocomplete.Status, { className: styles.stats },
|
|
65
|
+
React.createElement("span", { className: styles.statsText, "data-hidden": results.elapsed.raw > 0 ? undefined : '' }, `Found ${results.count} in ${results.elapsed.formatted}`)))));
|
|
66
|
+
}
|
|
67
|
+
/** One row: a link with the type icon, the title, and for pages the section and description. */
|
|
68
|
+
function SearchDialogItem(props) {
|
|
69
|
+
const { result, href, query, showScores, onClick } = props;
|
|
70
|
+
const icon = searchDialogTypeIcons[result.type];
|
|
71
|
+
const page = result.type === 'page';
|
|
72
|
+
return (React.createElement(BaseAutocomplete.Item, { value: result, className: styles.item, render: React.createElement("a", { href: href }), onClick: (event) => onClick(event, result) },
|
|
73
|
+
React.createElement("span", { className: styles.itemHead },
|
|
74
|
+
icon ? React.createElement(Icon, { name: icon, className: styles.itemIcon }) : null,
|
|
75
|
+
React.createElement("span", { className: styles.itemTitle }, highlightMatch(result.title || result.slug, query, styles.match)),
|
|
76
|
+
page && result.sectionTitle ? (React.createElement("span", { className: styles.sectionTitle }, result.sectionTitle)) : null,
|
|
77
|
+
showScores && result.score != null ? (React.createElement("span", { className: styles.score }, result.score.toFixed(2))) : null),
|
|
78
|
+
page && result.description ? (React.createElement("span", { className: styles.description }, result.description)) : null));
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=SearchDialogPopup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchDialogPopup.js","sourceRoot":"","sources":["../../src/overlays/search-dialog/SearchDialogPopup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type SearchDialogVariants } from './variants';
|
|
3
|
+
/** Props for SearchDialogTrigger, all set by SearchDialog. */
|
|
4
|
+
export type SearchDialogTriggerProps = {
|
|
5
|
+
ref: React.Ref<HTMLButtonElement>;
|
|
6
|
+
/** The expanding-box pair's name. */
|
|
7
|
+
name: string;
|
|
8
|
+
/** The dialog is open: the trigger's box hands its names to the dialog's and hides. */
|
|
9
|
+
open: boolean;
|
|
10
|
+
label: string;
|
|
11
|
+
keyboardShortcut: boolean;
|
|
12
|
+
onClick: () => void;
|
|
13
|
+
primary: SearchDialogVariants['primary'];
|
|
14
|
+
secondary: SearchDialogVariants['secondary'];
|
|
15
|
+
className: string | undefined;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* The field-like trigger holding the collapsed, active-while-closed
|
|
19
|
+
* ExpandingBox: the magnifier, the label in --role-muted and, with
|
|
20
|
+
* `keyboardShortcut`, the ⌘K / Ctrl K hint from --lg-n-above. Mounted
|
|
21
|
+
* always, `visibility: hidden` while open.
|
|
22
|
+
*/
|
|
23
|
+
export declare function SearchDialogTrigger(props: SearchDialogTriggerProps): React.JSX.Element;
|
|
24
|
+
//# sourceMappingURL=SearchDialogTrigger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchDialogTrigger.d.ts","sourceRoot":"","sources":["../../src/overlays/search-dialog/SearchDialogTrigger.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,OAAO,EAAgB,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAQpE,8DAA8D;AAC9D,MAAM,MAAM,wBAAwB,GAAG;IACrC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IACjC,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,uFAAuF;IACvF,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB,EAAE,OAAO,CAAA;IACzB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAA;IACxC,SAAS,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAA;IAC5C,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9B,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAgDtF"}
|