@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.
Files changed (517) hide show
  1. package/LICENSE +21 -0
  2. package/Readme.md +51 -27
  3. package/actions/button/Button.d.ts.map +1 -1
  4. package/actions/button/Button.js +13 -1
  5. package/actions/button/Button.js.map +1 -1
  6. package/actions/button/button.module.css +85 -25
  7. package/actions/chip/Chip.d.ts +2 -2
  8. package/actions/chip/Chip.js +2 -2
  9. package/actions/chip/chip.module.css +12 -18
  10. package/actions/link/Link.d.ts +1 -1
  11. package/actions/link/link.module.css +22 -19
  12. package/actions/toggle/Toggle.js +1 -1
  13. package/actions/toggle/toggle.module.css +27 -23
  14. package/content/card/card.module.css +27 -27
  15. package/content/card-grid/CardGrid.js +1 -1
  16. package/content/card-grid/card-grid.module.css +3 -3
  17. package/content/carousel/Carousel.d.ts.map +1 -1
  18. package/content/carousel/Carousel.js +1 -4
  19. package/content/carousel/Carousel.js.map +1 -1
  20. package/content/carousel/carousel.module.css +19 -9
  21. package/content/code-block/CodeActionsMenu.d.ts +34 -0
  22. package/content/code-block/CodeActionsMenu.d.ts.map +1 -0
  23. package/content/code-block/CodeActionsMenu.js +102 -0
  24. package/content/code-block/CodeActionsMenu.js.map +1 -0
  25. package/content/code-block/CodeBlock.d.ts +37 -0
  26. package/content/code-block/CodeBlock.d.ts.map +1 -0
  27. package/content/code-block/CodeBlock.js +30 -0
  28. package/content/code-block/CodeBlock.js.map +1 -0
  29. package/content/code-block/CodeBlockFrame.d.ts +54 -0
  30. package/content/code-block/CodeBlockFrame.d.ts.map +1 -0
  31. package/content/code-block/CodeBlockFrame.js +80 -0
  32. package/content/code-block/CodeBlockFrame.js.map +1 -0
  33. package/content/code-block/CodeBlockHeader.d.ts +26 -0
  34. package/content/code-block/CodeBlockHeader.d.ts.map +1 -0
  35. package/content/code-block/CodeBlockHeader.js +16 -0
  36. package/content/code-block/CodeBlockHeader.js.map +1 -0
  37. package/content/code-block/CodeBlockLazy.d.ts +11 -0
  38. package/content/code-block/CodeBlockLazy.d.ts.map +1 -0
  39. package/content/code-block/CodeBlockLazy.js +14 -0
  40. package/content/code-block/CodeBlockLazy.js.map +1 -0
  41. package/content/code-block/CodeBlockLoading.d.ts +31 -0
  42. package/content/code-block/CodeBlockLoading.d.ts.map +1 -0
  43. package/content/code-block/CodeBlockLoading.js +90 -0
  44. package/content/code-block/CodeBlockLoading.js.map +1 -0
  45. package/content/code-block/CodeBlockSection.d.ts +40 -0
  46. package/content/code-block/CodeBlockSection.d.ts.map +1 -0
  47. package/content/code-block/CodeBlockSection.js +105 -0
  48. package/content/code-block/CodeBlockSection.js.map +1 -0
  49. package/content/code-block/CodeBlockToasts.d.ts +26 -0
  50. package/content/code-block/CodeBlockToasts.d.ts.map +1 -0
  51. package/content/code-block/CodeBlockToasts.js +88 -0
  52. package/content/code-block/CodeBlockToasts.js.map +1 -0
  53. package/content/code-block/code-block.module.css +949 -0
  54. package/content/code-block/index.d.ts +4 -0
  55. package/content/code-block/index.d.ts.map +1 -0
  56. package/content/code-block/index.js +4 -0
  57. package/content/code-block/index.js.map +1 -0
  58. package/content/demo/DemoContent.d.ts +32 -0
  59. package/content/demo/DemoContent.d.ts.map +1 -0
  60. package/content/demo/DemoContent.js +87 -0
  61. package/content/demo/DemoContent.js.map +1 -0
  62. package/content/demo/DemoFrame.d.ts +6 -0
  63. package/content/demo/DemoFrame.d.ts.map +1 -0
  64. package/content/demo/DemoFrame.js +17 -0
  65. package/content/demo/DemoFrame.js.map +1 -0
  66. package/content/demo/DemoLazy.d.ts +11 -0
  67. package/content/demo/DemoLazy.d.ts.map +1 -0
  68. package/content/demo/DemoLazy.js +14 -0
  69. package/content/demo/DemoLazy.js.map +1 -0
  70. package/content/demo/DemoLoading.d.ts +23 -0
  71. package/content/demo/DemoLoading.d.ts.map +1 -0
  72. package/content/demo/DemoLoading.js +26 -0
  73. package/content/demo/DemoLoading.js.map +1 -0
  74. package/content/demo/demo.module.css +163 -0
  75. package/content/demo/index.d.ts +4 -0
  76. package/content/demo/index.d.ts.map +1 -0
  77. package/content/demo/index.js +4 -0
  78. package/content/demo/index.js.map +1 -0
  79. package/content/empty-state/EmptyState.d.ts +1 -1
  80. package/content/empty-state/EmptyState.js +1 -1
  81. package/content/empty-state/empty-state.module.css +11 -11
  82. package/content/feature-grid/feature-grid.module.css +22 -22
  83. package/content/index-rows/IndexRows.d.ts +2 -2
  84. package/content/index-rows/IndexRows.d.ts.map +1 -1
  85. package/content/index-rows/IndexRows.js +1 -1
  86. package/content/index-rows/index-rows.module.css +29 -29
  87. package/content/pricing/Pricing.d.ts +4 -4
  88. package/content/pricing/Pricing.d.ts.map +1 -1
  89. package/content/pricing/Pricing.js +4 -4
  90. package/content/pricing/Pricing.js.map +1 -1
  91. package/content/pricing/pricing.module.css +22 -22
  92. package/content/profile/Profile.d.ts +1 -1
  93. package/content/profile/Profile.js +2 -2
  94. package/content/profile/profile.module.css +13 -13
  95. package/content/quote/Quote.d.ts +1 -1
  96. package/content/quote/quote.module.css +9 -9
  97. package/content/timeline/Timeline.d.ts +1 -1
  98. package/content/timeline/Timeline.d.ts.map +1 -1
  99. package/content/timeline/Timeline.js +5 -5
  100. package/content/timeline/Timeline.js.map +1 -1
  101. package/content/timeline/timeline.module.css +12 -12
  102. package/content/types-table/TypePre.d.ts +11 -0
  103. package/content/types-table/TypePre.d.ts.map +1 -0
  104. package/content/types-table/TypePre.js +13 -0
  105. package/content/types-table/TypePre.js.map +1 -0
  106. package/content/types-table/TypesTable.d.ts +22 -0
  107. package/content/types-table/TypesTable.d.ts.map +1 -0
  108. package/content/types-table/TypesTable.js +124 -0
  109. package/content/types-table/TypesTable.js.map +1 -0
  110. package/content/types-table/index.d.ts +3 -0
  111. package/content/types-table/index.d.ts.map +1 -0
  112. package/content/types-table/index.js +3 -0
  113. package/content/types-table/index.js.map +1 -0
  114. package/content/types-table/types-table.module.css +160 -0
  115. package/data/chart/Chart.d.ts +8 -1
  116. package/data/chart/Chart.d.ts.map +1 -1
  117. package/data/chart/Chart.js +28 -15
  118. package/data/chart/Chart.js.map +1 -1
  119. package/data/chart/chart.module.css +20 -6
  120. package/data/figure/Figure.d.ts +1 -1
  121. package/data/figure/Figure.js +1 -1
  122. package/data/figure/figure.module.css +7 -7
  123. package/data/map/Map.d.ts +3 -3
  124. package/data/map/Map.d.ts.map +1 -1
  125. package/data/map/Map.js +10 -8
  126. package/data/map/Map.js.map +1 -1
  127. package/data/map/MapCanvas.d.ts.map +1 -1
  128. package/data/map/MapCanvas.js +5 -9
  129. package/data/map/MapCanvas.js.map +1 -1
  130. package/data/map/map.module.css +39 -14
  131. package/data/map/mapStyle.d.ts +2 -2
  132. package/data/map/mapStyle.d.ts.map +1 -1
  133. package/data/map/mapStyle.js +5 -5
  134. package/data/map/mapStyle.js.map +1 -1
  135. package/data/scroll-area/ScrollArea.d.ts.map +1 -1
  136. package/data/scroll-area/ScrollArea.js +8 -4
  137. package/data/scroll-area/ScrollArea.js.map +1 -1
  138. package/data/scroll-area/scroll-area.module.css +28 -9
  139. package/data/spec-grid/spec-grid.module.css +8 -8
  140. package/data/spec-list/spec-list.module.css +3 -3
  141. package/data/spec-sheet/SpecSheet.d.ts +2 -2
  142. package/data/spec-sheet/SpecSheet.js +1 -1
  143. package/data/spec-sheet/spec-sheet.module.css +9 -9
  144. package/data/stat/Stat.d.ts +1 -1
  145. package/data/stat/Stat.d.ts.map +1 -1
  146. package/data/stat/stat.module.css +4 -4
  147. package/data/table/Table.d.ts +6 -5
  148. package/data/table/Table.d.ts.map +1 -1
  149. package/data/table/Table.js.map +1 -1
  150. package/data/table/table.module.css +43 -46
  151. package/disclosure/accordion/Accordion.d.ts +1 -1
  152. package/disclosure/accordion/Accordion.js +1 -1
  153. package/disclosure/accordion/accordion.module.css +12 -12
  154. package/disclosure/collapsible/Collapsible.d.ts +4 -4
  155. package/disclosure/collapsible/Collapsible.js +4 -4
  156. package/disclosure/collapsible/collapsible.module.css +10 -10
  157. package/disclosure/faq/FAQ.d.ts +3 -3
  158. package/disclosure/faq/FAQ.d.ts.map +1 -1
  159. package/disclosure/faq/FAQ.js +3 -3
  160. package/disclosure/faq/FAQ.js.map +1 -1
  161. package/disclosure/faq/faq.module.css +20 -20
  162. package/feedback/alert/alert.module.css +4 -4
  163. package/feedback/avatar/avatar-group.module.css +2 -2
  164. package/feedback/avatar/avatar.module.css +9 -9
  165. package/feedback/badge/Badge.d.ts +1 -1
  166. package/feedback/badge/badge.module.css +7 -7
  167. package/feedback/meter/Meter.d.ts +2 -2
  168. package/feedback/meter/meter.module.css +14 -14
  169. package/feedback/progress/Progress.d.ts +1 -1
  170. package/feedback/progress/progress.module.css +7 -7
  171. package/feedback/tag/tag.module.css +7 -7
  172. package/feedback/toast/Toast.d.ts +3 -3
  173. package/feedback/toast/Toast.d.ts.map +1 -1
  174. package/feedback/toast/Toast.js +17 -7
  175. package/feedback/toast/Toast.js.map +1 -1
  176. package/feedback/toast/toast.module.css +31 -20
  177. package/forms/autocomplete/Autocomplete.d.ts +11 -0
  178. package/forms/autocomplete/Autocomplete.d.ts.map +1 -1
  179. package/forms/autocomplete/Autocomplete.js +27 -6
  180. package/forms/autocomplete/Autocomplete.js.map +1 -1
  181. package/forms/autocomplete/autocomplete.module.css +35 -41
  182. package/forms/checkbox/Checkbox.js +1 -1
  183. package/forms/checkbox/checkbox.module.css +29 -25
  184. package/forms/checkbox-group/checkbox-group.module.css +4 -4
  185. package/forms/combobox/Combobox.d.ts +10 -0
  186. package/forms/combobox/Combobox.d.ts.map +1 -1
  187. package/forms/combobox/Combobox.js +28 -7
  188. package/forms/combobox/Combobox.js.map +1 -1
  189. package/forms/combobox/combobox.module.css +34 -41
  190. package/forms/field/field.module.css +1 -1
  191. package/forms/fieldset/Fieldset.d.ts +1 -1
  192. package/forms/fieldset/Fieldset.js +2 -2
  193. package/forms/fieldset/fieldset.module.css +14 -14
  194. package/forms/form/form.module.css +2 -2
  195. package/forms/input/Input.d.ts +10 -3
  196. package/forms/input/Input.d.ts.map +1 -1
  197. package/forms/input/Input.js +10 -4
  198. package/forms/input/Input.js.map +1 -1
  199. package/forms/input/input.module.css +38 -21
  200. package/forms/number-field/number-field.module.css +24 -23
  201. package/forms/radio/Radio.d.ts +1 -1
  202. package/forms/radio/Radio.d.ts.map +1 -1
  203. package/forms/radio/Radio.js +5 -3
  204. package/forms/radio/Radio.js.map +1 -1
  205. package/forms/radio/radio.module.css +38 -30
  206. package/forms/radio-group/RadioGroup.d.ts +1 -1
  207. package/forms/radio-group/radio-group.module.css +3 -3
  208. package/forms/search/Search.d.ts +10 -0
  209. package/forms/search/Search.d.ts.map +1 -1
  210. package/forms/search/Search.js +25 -6
  211. package/forms/search/Search.js.map +1 -1
  212. package/forms/search/search.module.css +25 -33
  213. package/forms/select/Select.d.ts +10 -2
  214. package/forms/select/Select.d.ts.map +1 -1
  215. package/forms/select/Select.js +27 -12
  216. package/forms/select/Select.js.map +1 -1
  217. package/forms/select/select.module.css +42 -48
  218. package/forms/slider/Slider.js +2 -2
  219. package/forms/slider/slider.module.css +23 -23
  220. package/forms/switch/Switch.js +1 -1
  221. package/forms/switch/switch.module.css +23 -19
  222. package/foundations/expanding-box/ExpandingBox.d.ts +86 -0
  223. package/foundations/expanding-box/ExpandingBox.d.ts.map +1 -0
  224. package/foundations/expanding-box/ExpandingBox.js +179 -0
  225. package/foundations/expanding-box/ExpandingBox.js.map +1 -0
  226. package/foundations/expanding-box/expanding-box.module.css +415 -0
  227. package/foundations/expanding-box/index.d.ts +3 -0
  228. package/foundations/expanding-box/index.d.ts.map +1 -0
  229. package/foundations/expanding-box/index.js +3 -0
  230. package/foundations/expanding-box/index.js.map +1 -0
  231. package/foundations/expanding-box/startExpandingTransition.d.ts +33 -0
  232. package/foundations/expanding-box/startExpandingTransition.d.ts.map +1 -0
  233. package/foundations/expanding-box/startExpandingTransition.js +82 -0
  234. package/foundations/expanding-box/startExpandingTransition.js.map +1 -0
  235. package/foundations/ground/Ground.d.ts +1 -1
  236. package/foundations/ground/ground.module.css +4 -4
  237. package/foundations/icon/Icon.d.ts +1 -1
  238. package/foundations/icon/Icon.js +1 -1
  239. package/foundations/icon/icon.module.css +1 -1
  240. package/foundations/outline-morph/OutlineMorph.d.ts +112 -0
  241. package/foundations/outline-morph/OutlineMorph.d.ts.map +1 -0
  242. package/foundations/outline-morph/OutlineMorph.js +83 -0
  243. package/foundations/outline-morph/OutlineMorph.js.map +1 -0
  244. package/foundations/outline-morph/index.d.ts +3 -0
  245. package/foundations/outline-morph/index.d.ts.map +1 -0
  246. package/foundations/outline-morph/index.js +3 -0
  247. package/foundations/outline-morph/index.js.map +1 -0
  248. package/foundations/outline-morph/morphEngine.d.ts +219 -0
  249. package/foundations/outline-morph/morphEngine.d.ts.map +1 -0
  250. package/foundations/outline-morph/morphEngine.js +1331 -0
  251. package/foundations/outline-morph/morphEngine.js.map +1 -0
  252. package/foundations/outline-morph/outline-morph.module.css +113 -0
  253. package/foundations/outline-morph/useOutlineMorphRoot.d.ts +50 -0
  254. package/foundations/outline-morph/useOutlineMorphRoot.d.ts.map +1 -0
  255. package/foundations/outline-morph/useOutlineMorphRoot.js +55 -0
  256. package/foundations/outline-morph/useOutlineMorphRoot.js.map +1 -0
  257. package/foundations/separator/separator.module.css +10 -10
  258. package/foundations/sticker/Sticker.d.ts +4 -4
  259. package/foundations/sticker/Sticker.d.ts.map +1 -1
  260. package/foundations/sticker/Sticker.js +3 -3
  261. package/foundations/sticker/sticker.module.css +10 -10
  262. package/icons/paths.d.ts +1 -1
  263. package/icons/paths.d.ts.map +1 -1
  264. package/icons/paths.js +50 -0
  265. package/icons/paths.js.map +1 -1
  266. package/navigation/breadcrumb/Breadcrumb.d.ts +7 -1
  267. package/navigation/breadcrumb/Breadcrumb.d.ts.map +1 -1
  268. package/navigation/breadcrumb/Breadcrumb.js +8 -8
  269. package/navigation/breadcrumb/Breadcrumb.js.map +1 -1
  270. package/navigation/breadcrumb/breadcrumb.module.css +14 -14
  271. package/navigation/file-tabs/FileTabs.d.ts +169 -0
  272. package/navigation/file-tabs/FileTabs.d.ts.map +1 -0
  273. package/navigation/file-tabs/FileTabs.js +253 -0
  274. package/navigation/file-tabs/FileTabs.js.map +1 -0
  275. package/navigation/file-tabs/file-tabs.module.css +868 -0
  276. package/navigation/file-tabs/index.d.ts +2 -0
  277. package/navigation/file-tabs/index.d.ts.map +1 -0
  278. package/navigation/file-tabs/index.js +2 -0
  279. package/navigation/file-tabs/index.js.map +1 -0
  280. package/navigation/nav-drawer/NavDrawer.d.ts +32 -6
  281. package/navigation/nav-drawer/NavDrawer.d.ts.map +1 -1
  282. package/navigation/nav-drawer/NavDrawer.js +94 -28
  283. package/navigation/nav-drawer/NavDrawer.js.map +1 -1
  284. package/navigation/nav-drawer/nav-drawer.module.css +78 -55
  285. package/navigation/navigation-bar/NavigationBar.d.ts +31 -11
  286. package/navigation/navigation-bar/NavigationBar.d.ts.map +1 -1
  287. package/navigation/navigation-bar/NavigationBar.js +40 -17
  288. package/navigation/navigation-bar/NavigationBar.js.map +1 -1
  289. package/navigation/navigation-bar/navigation-bar.module.css +58 -27
  290. package/navigation/navigation-menu/NavigationMenu.d.ts +9 -9
  291. package/navigation/navigation-menu/NavigationMenu.d.ts.map +1 -1
  292. package/navigation/navigation-menu/NavigationMenu.js +15 -15
  293. package/navigation/navigation-menu/navigation-menu.module.css +39 -53
  294. package/navigation/pagination/Pagination.js +1 -1
  295. package/navigation/pagination/pagination.module.css +24 -24
  296. package/navigation/sidebar-nav/SidebarNav.d.ts +71 -0
  297. package/navigation/sidebar-nav/SidebarNav.d.ts.map +1 -0
  298. package/navigation/sidebar-nav/SidebarNav.js +169 -0
  299. package/navigation/sidebar-nav/SidebarNav.js.map +1 -0
  300. package/navigation/sidebar-nav/index.d.ts +2 -0
  301. package/navigation/sidebar-nav/index.d.ts.map +1 -0
  302. package/navigation/sidebar-nav/index.js +2 -0
  303. package/navigation/sidebar-nav/index.js.map +1 -0
  304. package/navigation/sidebar-nav/sidebar-nav.module.css +270 -0
  305. package/navigation/table-of-contents/TableOfContents.d.ts +92 -0
  306. package/navigation/table-of-contents/TableOfContents.d.ts.map +1 -0
  307. package/navigation/table-of-contents/TableOfContents.js +211 -0
  308. package/navigation/table-of-contents/TableOfContents.js.map +1 -0
  309. package/navigation/table-of-contents/index.d.ts +3 -0
  310. package/navigation/table-of-contents/index.d.ts.map +1 -0
  311. package/navigation/table-of-contents/index.js +3 -0
  312. package/navigation/table-of-contents/index.js.map +1 -0
  313. package/navigation/table-of-contents/table-of-contents.module.css +322 -0
  314. package/navigation/table-of-contents/useActiveHeading.d.ts +37 -0
  315. package/navigation/table-of-contents/useActiveHeading.d.ts.map +1 -0
  316. package/navigation/table-of-contents/useActiveHeading.js +111 -0
  317. package/navigation/table-of-contents/useActiveHeading.js.map +1 -0
  318. package/navigation/tabs/Tabs.d.ts +2 -2
  319. package/navigation/tabs/Tabs.js +3 -3
  320. package/navigation/tabs/tabs.module.css +22 -19
  321. package/navigation/toolbar/Toolbar.d.ts +7 -1
  322. package/navigation/toolbar/Toolbar.d.ts.map +1 -1
  323. package/navigation/toolbar/Toolbar.js +3 -3
  324. package/navigation/toolbar/Toolbar.js.map +1 -1
  325. package/navigation/toolbar/toolbar.module.css +6 -6
  326. package/overlays/alert-dialog/AlertDialog.d.ts +14 -4
  327. package/overlays/alert-dialog/AlertDialog.d.ts.map +1 -1
  328. package/overlays/alert-dialog/AlertDialog.js +15 -5
  329. package/overlays/alert-dialog/AlertDialog.js.map +1 -1
  330. package/overlays/alert-dialog/alert-dialog.module.css +4 -4
  331. package/overlays/context-menu/ContextMenu.d.ts +1 -1
  332. package/overlays/context-menu/ContextMenu.js +1 -1
  333. package/overlays/dialog/Dialog.d.ts +26 -11
  334. package/overlays/dialog/Dialog.d.ts.map +1 -1
  335. package/overlays/dialog/Dialog.js +36 -17
  336. package/overlays/dialog/Dialog.js.map +1 -1
  337. package/overlays/dialog/dialog.module.css +32 -31
  338. package/overlays/dialog/morph.d.ts +17 -0
  339. package/overlays/dialog/morph.d.ts.map +1 -0
  340. package/overlays/dialog/morph.js +44 -0
  341. package/overlays/dialog/morph.js.map +1 -0
  342. package/overlays/menu/Menu.d.ts +18 -7
  343. package/overlays/menu/Menu.d.ts.map +1 -1
  344. package/overlays/menu/Menu.js +35 -12
  345. package/overlays/menu/Menu.js.map +1 -1
  346. package/overlays/menu/menu.module.css +26 -50
  347. package/overlays/menu/morph.d.ts +16 -0
  348. package/overlays/menu/morph.d.ts.map +1 -0
  349. package/overlays/menu/morph.js +36 -0
  350. package/overlays/menu/morph.js.map +1 -0
  351. package/overlays/menu/popup.d.ts +2 -0
  352. package/overlays/menu/popup.d.ts.map +1 -1
  353. package/overlays/menu/popup.js +11 -3
  354. package/overlays/menu/popup.js.map +1 -1
  355. package/overlays/menubar/Menubar.d.ts +10 -1
  356. package/overlays/menubar/Menubar.d.ts.map +1 -1
  357. package/overlays/menubar/Menubar.js +22 -12
  358. package/overlays/menubar/Menubar.js.map +1 -1
  359. package/overlays/menubar/menubar.module.css +13 -13
  360. package/overlays/popover/Popover.d.ts +22 -8
  361. package/overlays/popover/Popover.d.ts.map +1 -1
  362. package/overlays/popover/Popover.js +51 -16
  363. package/overlays/popover/Popover.js.map +1 -1
  364. package/overlays/popover/popover.module.css +73 -47
  365. package/overlays/preview-card/PreviewCard.d.ts +3 -3
  366. package/overlays/preview-card/PreviewCard.d.ts.map +1 -1
  367. package/overlays/preview-card/PreviewCard.js +5 -6
  368. package/overlays/preview-card/PreviewCard.js.map +1 -1
  369. package/overlays/preview-card/preview-card.module.css +19 -54
  370. package/overlays/search-dialog/SearchDialog.d.ts +89 -0
  371. package/overlays/search-dialog/SearchDialog.d.ts.map +1 -0
  372. package/overlays/search-dialog/SearchDialog.js +220 -0
  373. package/overlays/search-dialog/SearchDialog.js.map +1 -0
  374. package/overlays/search-dialog/SearchDialogPopup.d.ts +39 -0
  375. package/overlays/search-dialog/SearchDialogPopup.d.ts.map +1 -0
  376. package/overlays/search-dialog/SearchDialogPopup.js +80 -0
  377. package/overlays/search-dialog/SearchDialogPopup.js.map +1 -0
  378. package/overlays/search-dialog/SearchDialogTrigger.d.ts +24 -0
  379. package/overlays/search-dialog/SearchDialogTrigger.d.ts.map +1 -0
  380. package/overlays/search-dialog/SearchDialogTrigger.js +32 -0
  381. package/overlays/search-dialog/SearchDialogTrigger.js.map +1 -0
  382. package/overlays/search-dialog/index.d.ts +3 -0
  383. package/overlays/search-dialog/index.d.ts.map +1 -0
  384. package/overlays/search-dialog/index.js +3 -0
  385. package/overlays/search-dialog/index.js.map +1 -0
  386. package/overlays/search-dialog/search-dialog.module.css +492 -0
  387. package/overlays/search-dialog/useShortcutLabel.d.ts +13 -0
  388. package/overlays/search-dialog/useShortcutLabel.d.ts.map +1 -0
  389. package/overlays/search-dialog/useShortcutLabel.js +19 -0
  390. package/overlays/search-dialog/useShortcutLabel.js.map +1 -0
  391. package/overlays/search-dialog/variants.d.ts +25 -0
  392. package/overlays/search-dialog/variants.d.ts.map +1 -0
  393. package/overlays/search-dialog/variants.js +31 -0
  394. package/overlays/search-dialog/variants.js.map +1 -0
  395. package/overlays/tooltip/Tooltip.d.ts +3 -3
  396. package/overlays/tooltip/Tooltip.d.ts.map +1 -1
  397. package/overlays/tooltip/Tooltip.js +3 -3
  398. package/overlays/tooltip/Tooltip.js.map +1 -1
  399. package/overlays/tooltip/tooltip.module.css +2 -2
  400. package/package.json +27 -19
  401. package/page/announcement-bar/AnnouncementBar.d.ts +1 -1
  402. package/page/announcement-bar/AnnouncementBar.js +4 -4
  403. package/page/announcement-bar/AnnouncementBar.js.map +1 -1
  404. package/page/announcement-bar/announcement-bar.module.css +11 -17
  405. package/page/cta-block/CTABlock.d.ts +5 -5
  406. package/page/cta-block/CTABlock.d.ts.map +1 -1
  407. package/page/cta-block/CTABlock.js +2 -2
  408. package/page/cta-block/cta-block.module.css +26 -26
  409. package/page/docs-layout/DocsLayout.d.ts +83 -0
  410. package/page/docs-layout/DocsLayout.d.ts.map +1 -0
  411. package/page/docs-layout/DocsLayout.js +108 -0
  412. package/page/docs-layout/DocsLayout.js.map +1 -0
  413. package/page/docs-layout/docs-layout.module.css +266 -0
  414. package/page/docs-layout/index.d.ts +2 -0
  415. package/page/docs-layout/index.d.ts.map +1 -0
  416. package/page/docs-layout/index.js +2 -0
  417. package/page/docs-layout/index.js.map +1 -0
  418. package/page/footer/Footer.d.ts +1 -1
  419. package/page/footer/Footer.js +1 -1
  420. package/page/footer/footer.module.css +31 -31
  421. package/page/hero/Hero.d.ts +3 -3
  422. package/page/hero/Hero.d.ts.map +1 -1
  423. package/page/hero/Hero.js +1 -1
  424. package/page/hero/hero.module.css +36 -36
  425. package/page/marquee/Marquee.d.ts +2 -2
  426. package/page/marquee/Marquee.js +1 -1
  427. package/page/marquee/marquee.module.css +11 -11
  428. package/page/newsletter/Newsletter.d.ts.map +1 -1
  429. package/page/newsletter/Newsletter.js +4 -59
  430. package/page/newsletter/Newsletter.js.map +1 -1
  431. package/page/newsletter/newsletter.module.css +44 -22
  432. package/page/section-bar/SectionBar.d.ts +10 -3
  433. package/page/section-bar/SectionBar.d.ts.map +1 -1
  434. package/page/section-bar/SectionBar.js +21 -11
  435. package/page/section-bar/SectionBar.js.map +1 -1
  436. package/page/section-bar/section-bar.module.css +43 -46
  437. package/page/section-divider/SectionDivider.d.ts +2 -2
  438. package/page/section-divider/SectionDivider.js +4 -4
  439. package/page/section-divider/SectionDivider.js.map +1 -1
  440. package/page/section-divider/section-divider.module.css +18 -18
  441. package/page/section-header/SectionHeader.d.ts +7 -7
  442. package/page/section-header/SectionHeader.d.ts.map +1 -1
  443. package/page/section-header/SectionHeader.js +3 -3
  444. package/page/section-header/SectionHeader.js.map +1 -1
  445. package/page/section-header/section-header.module.css +16 -16
  446. package/utils/Ornament.d.ts +1 -1
  447. package/utils/Ornament.js +2 -2
  448. package/utils/assignRef.d.ts +7 -1
  449. package/utils/assignRef.d.ts.map +1 -1
  450. package/utils/assignRef.js +18 -0
  451. package/utils/assignRef.js.map +1 -1
  452. package/utils/docs/DemoTitle.d.ts +12 -0
  453. package/utils/docs/DemoTitle.d.ts.map +1 -0
  454. package/utils/docs/DemoTitle.js +11 -0
  455. package/utils/docs/DemoTitle.js.map +1 -0
  456. package/utils/docs/Pre.d.ts +39 -0
  457. package/utils/docs/Pre.d.ts.map +1 -0
  458. package/utils/docs/Pre.js +26 -0
  459. package/utils/docs/Pre.js.map +1 -0
  460. package/utils/docs/createDemo.d.ts +89 -0
  461. package/utils/docs/createDemo.d.ts.map +1 -0
  462. package/utils/docs/createDemo.js +51 -0
  463. package/utils/docs/createDemo.js.map +1 -0
  464. package/utils/docs/createMdxComponents.d.ts +52 -0
  465. package/utils/docs/createMdxComponents.d.ts.map +1 -0
  466. package/utils/docs/createMdxComponents.js +59 -0
  467. package/utils/docs/createMdxComponents.js.map +1 -0
  468. package/utils/docs/createTypes.d.ts +23 -0
  469. package/utils/docs/createTypes.d.ts.map +1 -0
  470. package/utils/docs/createTypes.js +27 -0
  471. package/utils/docs/createTypes.js.map +1 -0
  472. package/utils/docs/index.d.ts +8 -0
  473. package/utils/docs/index.d.ts.map +1 -0
  474. package/utils/docs/index.js +16 -0
  475. package/utils/docs/index.js.map +1 -0
  476. package/utils/docs/mdx.module.css +201 -0
  477. package/utils/docs/serverSourceEnhancers.d.ts +26 -0
  478. package/utils/docs/serverSourceEnhancers.d.ts.map +1 -0
  479. package/utils/docs/serverSourceEnhancers.js +32 -0
  480. package/utils/docs/serverSourceEnhancers.js.map +1 -0
  481. package/utils/docs/toSidebarItems.d.ts +23 -0
  482. package/utils/docs/toSidebarItems.d.ts.map +1 -0
  483. package/utils/docs/toSidebarItems.js +36 -0
  484. package/utils/docs/toSidebarItems.js.map +1 -0
  485. package/utils/font-fallbacks.css +176 -0
  486. package/utils/fonts.d.ts +1 -0
  487. package/utils/fonts.d.ts.map +1 -1
  488. package/utils/fonts.js +12 -0
  489. package/utils/fonts.js.map +1 -1
  490. package/utils/frame.d.ts +4 -0
  491. package/utils/frame.d.ts.map +1 -0
  492. package/utils/frame.js +11 -0
  493. package/utils/frame.js.map +1 -0
  494. package/utils/global.css +480 -266
  495. package/utils/line.module.css +17 -17
  496. package/utils/media.css +1 -1
  497. package/utils/ornament.module.css +19 -19
  498. package/utils/overlay.d.ts +4 -4
  499. package/utils/overlay.js +4 -4
  500. package/utils/pattern.module.css +45 -45
  501. package/utils/print.css +48 -34
  502. package/utils/reset.css +9 -2
  503. package/utils/roles.css +29 -29
  504. package/utils/seriesPatterns.js +3 -3
  505. package/utils/syntax.module.css +92 -0
  506. package/utils/theme.css +6 -6
  507. package/utils/tokens.css +262 -192
  508. package/utils/tokens.d.ts +51 -8
  509. package/utils/tokens.d.ts.map +1 -1
  510. package/utils/tokens.js +46 -9
  511. package/utils/tokens.js.map +1 -1
  512. package/utils/type.module.css +87 -87
  513. package/utils/useReleaseMark.d.ts +13 -0
  514. package/utils/useReleaseMark.d.ts.map +1 -0
  515. package/utils/useReleaseMark.js +44 -0
  516. package/utils/useReleaseMark.js.map +1 -0
  517. 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
- * --ds-radius-8, 240–360 px wide, --size-px-3 padding. Motion is instant or
9
- * a clip reveal from the trigger side, never a fade [D91]. Shown only with
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(--ds-space-12);
40
- --preview-card-tail-block: calc(var(--ds-space-12) / 2 + var(--border-size-2));
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(--ds-space-margin)));
50
- max-inline-size: min(var(--ds-size-overlay-max), calc(100vw - 2 * var(--ds-space-margin)));
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(--ds-radius-8);
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(--ds-radius-8) - var(--size-px-3)));
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
- .arrow[data-side='left'],
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"}