@crewlethq/ui 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. package/README.md +1714 -14
  2. package/dist/Accordion/Accordion.d.ts +54 -0
  3. package/dist/Accordion/index.d.ts +4 -0
  4. package/dist/Accordion/index.js +6 -0
  5. package/dist/Accordion-ZI2WLD5C.css +87 -0
  6. package/dist/AddPill/AddPill.d.ts +114 -0
  7. package/dist/AddPill/index.d.ts +3 -0
  8. package/dist/AddPill/index.js +3 -0
  9. package/dist/AddPill-DFWXYLIQ.css +434 -0
  10. package/dist/Announcer/Announcer.d.ts +15 -0
  11. package/dist/Announcer/index.d.ts +2 -0
  12. package/dist/Announcer/index.js +3 -0
  13. package/dist/AppShell/AppShell.d.ts +193 -0
  14. package/dist/AppShell/index.d.ts +3 -0
  15. package/dist/AppShell/index.js +6 -0
  16. package/dist/AppShell-NVE6LHNI.css +395 -0
  17. package/dist/Avatar/Avatar.d.ts +104 -0
  18. package/dist/Avatar/index.d.ts +3 -0
  19. package/dist/Avatar/index.js +2 -0
  20. package/dist/Avatar-P2KRQM2B.css +156 -0
  21. package/dist/BrandLockup/BrandLockup.d.ts +41 -0
  22. package/dist/BrandLockup/index.d.ts +3 -0
  23. package/dist/BrandLockup/index.js +2 -0
  24. package/dist/BrandLockup-6ISDEHPJ.css +108 -0
  25. package/dist/Button/Button.d.ts +88 -0
  26. package/dist/Button/index.d.ts +3 -0
  27. package/dist/Button/index.js +3 -0
  28. package/dist/Button-D4J6B4MA.css +302 -0
  29. package/dist/CalendarGrid/CalendarGrid.d.ts +87 -0
  30. package/dist/CalendarGrid/index.d.ts +3 -0
  31. package/dist/CalendarGrid/index.js +2 -0
  32. package/dist/CalendarGrid-V6TQ5QKS.css +128 -0
  33. package/dist/Callout/Callout.d.ts +47 -0
  34. package/dist/Callout/index.d.ts +3 -0
  35. package/dist/Callout/index.js +2 -0
  36. package/dist/Callout-S7QDWHDL.css +111 -0
  37. package/dist/Canvas/Canvas.d.ts +234 -0
  38. package/dist/Canvas/geometry.d.ts +249 -0
  39. package/dist/Canvas/index.d.ts +5 -0
  40. package/dist/Canvas/index.js +8 -0
  41. package/dist/Canvas/layerNode.d.ts +20 -0
  42. package/dist/Canvas-Q6JETCWR.css +315 -0
  43. package/dist/Card/Card.d.ts +142 -0
  44. package/dist/Card/headerSlot.d.ts +65 -0
  45. package/dist/Card/index.d.ts +5 -0
  46. package/dist/Card/index.js +6 -0
  47. package/dist/Card-AHX3Q2JD.css +428 -0
  48. package/dist/Charts/ActivityStrip.d.ts +45 -0
  49. package/dist/Charts/BarList.d.ts +51 -0
  50. package/dist/Charts/Legend.d.ts +32 -0
  51. package/dist/Charts/StackedBar.d.ts +38 -0
  52. package/dist/Charts/TimeSeries.d.ts +92 -0
  53. package/dist/Charts/dataColor.d.ts +20 -0
  54. package/dist/Charts/index.d.ts +12 -0
  55. package/dist/Charts/index.js +3 -0
  56. package/dist/Charts-D7G2BSXH.css +277 -0
  57. package/dist/Checkbox/Checkbox.d.ts +45 -0
  58. package/dist/Checkbox/index.d.ts +3 -0
  59. package/dist/Checkbox/index.js +2 -0
  60. package/dist/Checkbox-VGW26YLQ.css +111 -0
  61. package/dist/CodeBlock/CodeBlock.d.ts +60 -0
  62. package/dist/CodeBlock/index.d.ts +3 -0
  63. package/dist/CodeBlock/index.js +7 -0
  64. package/dist/CodeBlock-U2W6NNVC.css +153 -0
  65. package/dist/Combobox/Combobox.d.ts +89 -0
  66. package/dist/Combobox/index.d.ts +3 -0
  67. package/dist/Combobox/index.js +8 -0
  68. package/dist/Combobox-4FUVYIE7.css +80 -0
  69. package/dist/CommandPalette/CommandPalette.d.ts +77 -0
  70. package/dist/CommandPalette/index.d.ts +3 -0
  71. package/dist/CommandPalette/index.js +11 -0
  72. package/dist/CommandPalette-CSJDUCQA.css +115 -0
  73. package/dist/Container/Container.d.ts +17 -0
  74. package/dist/Container/index.d.ts +3 -0
  75. package/dist/Container/index.js +2 -0
  76. package/dist/Container-3TSKMGNI.css +52 -0
  77. package/dist/Copyable/CopyButton.d.ts +54 -0
  78. package/dist/Copyable/Copyable.d.ts +34 -0
  79. package/dist/Copyable/index.d.ts +5 -0
  80. package/dist/Copyable/index.js +6 -0
  81. package/dist/Copyable-5PNRFOLS.css +125 -0
  82. package/dist/Count/Count.d.ts +24 -0
  83. package/dist/Count/index.d.ts +3 -0
  84. package/dist/Count/index.js +3 -0
  85. package/dist/Count-ZVCJ6VPD.css +20 -0
  86. package/dist/DataTable/CopyableCell.d.ts +12 -0
  87. package/dist/DataTable/DataTable.d.ts +615 -0
  88. package/dist/DataTable/RowActionsMenu.d.ts +7 -0
  89. package/dist/DataTable/index.d.ts +7 -0
  90. package/dist/DataTable/index.js +14 -0
  91. package/dist/DataTable-ITNACQ2X.css +2020 -0
  92. package/dist/DataView/DataView.d.ts +109 -0
  93. package/dist/DataView/DataViewToolbar.d.ts +87 -0
  94. package/dist/DataView/FilterAxisBar.d.ts +103 -0
  95. package/dist/DataView/columns.d.ts +35 -0
  96. package/dist/DataView/filters.d.ts +184 -0
  97. package/dist/DataView/index.d.ts +11 -0
  98. package/dist/DataView/index.js +25 -0
  99. package/dist/DataView-256YF32J.css +441 -0
  100. package/dist/DateTimePicker/DateTimePicker.d.ts +91 -0
  101. package/dist/DateTimePicker/index.d.ts +3 -0
  102. package/dist/DateTimePicker/index.js +9 -0
  103. package/dist/DateTimePicker-22VNXRWC.css +199 -0
  104. package/dist/DescriptionList/DescriptionList.d.ts +36 -0
  105. package/dist/DescriptionList/index.d.ts +3 -0
  106. package/dist/DescriptionList/index.js +2 -0
  107. package/dist/DescriptionList-YYY3V3O6.css +59 -0
  108. package/dist/DiffList/DiffList.d.ts +47 -0
  109. package/dist/DiffList/index.d.ts +3 -0
  110. package/dist/DiffList/index.js +3 -0
  111. package/dist/DiffList-3EX64AAE.css +94 -0
  112. package/dist/Disclosure/Disclosure.d.ts +56 -0
  113. package/dist/Disclosure/anatomy.d.ts +43 -0
  114. package/dist/Disclosure/index.d.ts +5 -0
  115. package/dist/Disclosure/index.js +6 -0
  116. package/dist/Disclosure-VKBJJIZ7.css +176 -0
  117. package/dist/EmptyState/EmptyState.d.ts +39 -0
  118. package/dist/EmptyState/index.d.ts +3 -0
  119. package/dist/EmptyState/index.js +3 -0
  120. package/dist/EmptyState-C6HRBGT7.css +73 -0
  121. package/dist/EmptyValue/EmptyValue.d.ts +31 -0
  122. package/dist/EmptyValue/index.d.ts +3 -0
  123. package/dist/EmptyValue/index.js +3 -0
  124. package/dist/EmptyValue-4B6ODXHT.css +12 -0
  125. package/dist/EntityChip/EntityChip.d.ts +40 -0
  126. package/dist/EntityChip/index.d.ts +3 -0
  127. package/dist/EntityChip/index.js +3 -0
  128. package/dist/EntityChip-LUCPZBBG.css +64 -0
  129. package/dist/ErrorBoundary/ErrorBoundary.d.ts +58 -0
  130. package/dist/ErrorBoundary/index.d.ts +3 -0
  131. package/dist/ErrorBoundary/index.js +4 -0
  132. package/dist/ErrorBoundary-ME36CQTA.css +59 -0
  133. package/dist/Eyebrow/Eyebrow.d.ts +18 -0
  134. package/dist/Eyebrow/index.d.ts +3 -0
  135. package/dist/Eyebrow/index.js +2 -0
  136. package/dist/Eyebrow-5NREGHQH.css +46 -0
  137. package/dist/FilterChip/FilterChip.d.ts +68 -0
  138. package/dist/FilterChip/index.d.ts +3 -0
  139. package/dist/FilterChip/index.js +3 -0
  140. package/dist/FilterChip-GTGLLOXE.css +107 -0
  141. package/dist/Fullscreen/index.d.ts +2 -0
  142. package/dist/Fullscreen/index.js +1 -0
  143. package/dist/Fullscreen/useFullscreen.d.ts +32 -0
  144. package/dist/IconButton/IconButton.d.ts +45 -0
  145. package/dist/IconButton/index.d.ts +3 -0
  146. package/dist/IconButton/index.js +3 -0
  147. package/dist/IconButton-VQGNMJDI.css +158 -0
  148. package/dist/ImageUpload/ImageUpload.d.ts +37 -0
  149. package/dist/ImageUpload/index.d.ts +3 -0
  150. package/dist/ImageUpload/index.js +3 -0
  151. package/dist/ImageUpload-HKFIZR6D.css +193 -0
  152. package/dist/InlineCode/InlineCode.d.ts +37 -0
  153. package/dist/InlineCode/index.d.ts +3 -0
  154. package/dist/InlineCode/index.js +2 -0
  155. package/dist/InlineCode-6WSR5COL.css +65 -0
  156. package/dist/Input/FormField.d.ts +61 -0
  157. package/dist/Input/FormRow.d.ts +6 -0
  158. package/dist/Input/FormSection.d.ts +28 -0
  159. package/dist/Input/Input.d.ts +98 -0
  160. package/dist/Input/Label.d.ts +31 -0
  161. package/dist/Input/ReadOnlyField.d.ts +30 -0
  162. package/dist/Input/Textarea.d.ts +16 -0
  163. package/dist/Input/index.d.ts +15 -0
  164. package/dist/Input/index.js +5 -0
  165. package/dist/Input-2PU5CPKK.css +616 -0
  166. package/dist/Kbd/Kbd.d.ts +40 -0
  167. package/dist/Kbd/index.d.ts +3 -0
  168. package/dist/Kbd/index.js +3 -0
  169. package/dist/Kbd-W66MXQI5.css +61 -0
  170. package/dist/Layer/LayerHost.d.ts +23 -0
  171. package/dist/Layer/index.d.ts +7 -0
  172. package/dist/Layer/index.js +3 -0
  173. package/dist/Layer/place.d.ts +63 -0
  174. package/dist/Layer/stack.d.ts +159 -0
  175. package/dist/Layer-NAFSGCFA.css +23 -0
  176. package/dist/Layout/Layout.d.ts +104 -0
  177. package/dist/Layout/index.d.ts +3 -0
  178. package/dist/Layout/index.js +2 -0
  179. package/dist/Layout-2ZCV3IGF.css +171 -0
  180. package/dist/Link/Link.d.ts +45 -0
  181. package/dist/Link/index.d.ts +3 -0
  182. package/dist/Link/index.js +3 -0
  183. package/dist/Link-6BEFNMN2.css +80 -0
  184. package/dist/List/List.d.ts +73 -0
  185. package/dist/List/index.d.ts +3 -0
  186. package/dist/List/index.js +3 -0
  187. package/dist/List-XTHESXLR.css +161 -0
  188. package/dist/ListInput/ListInput.d.ts +68 -0
  189. package/dist/ListInput/index.d.ts +3 -0
  190. package/dist/ListInput/index.js +10 -0
  191. package/dist/ListInput-O7LJKOIG.css +147 -0
  192. package/dist/Listbox/index.d.ts +5 -0
  193. package/dist/Listbox/index.js +2 -0
  194. package/dist/Listbox/useListbox.d.ts +97 -0
  195. package/dist/Listbox/useOptionKeys.d.ts +64 -0
  196. package/dist/Listbox-X2DOTSQA.css +110 -0
  197. package/dist/Menu/Menu.d.ts +118 -0
  198. package/dist/Menu/index.d.ts +3 -0
  199. package/dist/Menu/index.js +7 -0
  200. package/dist/Menu-6DE7I66I.css +222 -0
  201. package/dist/Meter/Meter.d.ts +49 -0
  202. package/dist/Meter/index.d.ts +3 -0
  203. package/dist/Meter/index.js +3 -0
  204. package/dist/Meter-SKOOXQBC.css +87 -0
  205. package/dist/Modal/ConfirmModal.d.ts +74 -0
  206. package/dist/Modal/Modal.d.ts +154 -0
  207. package/dist/Modal/index.d.ts +5 -0
  208. package/dist/Modal/index.js +8 -0
  209. package/dist/Modal-XYQJ4BL6.css +484 -0
  210. package/dist/NewItemsNotice/NewItemsNotice.d.ts +28 -0
  211. package/dist/NewItemsNotice/index.d.ts +3 -0
  212. package/dist/NewItemsNotice/index.js +4 -0
  213. package/dist/NewItemsNotice-T4DSSPVV.css +60 -0
  214. package/dist/OrgLabel/OrgLabel.d.ts +117 -0
  215. package/dist/OrgLabel/index.d.ts +3 -0
  216. package/dist/OrgLabel/index.js +2 -0
  217. package/dist/OrgLabel-D7U6QJZD.css +293 -0
  218. package/dist/OrgNode/OrgNode.d.ts +103 -0
  219. package/dist/OrgNode/index.d.ts +3 -0
  220. package/dist/OrgNode/index.js +3 -0
  221. package/dist/OrgNode-BT7T2Q2X.css +214 -0
  222. package/dist/OrgTable/OrgTable.d.ts +113 -0
  223. package/dist/OrgTable/index.d.ts +3 -0
  224. package/dist/OrgTable/index.js +11 -0
  225. package/dist/OrgTable-VWMFC3TB.css +360 -0
  226. package/dist/PageHeader/PageHeader.d.ts +35 -0
  227. package/dist/PageHeader/index.d.ts +3 -0
  228. package/dist/PageHeader/index.js +3 -0
  229. package/dist/PageHeader-6EYWQXRE.css +88 -0
  230. package/dist/Popover/Popover.d.ts +91 -0
  231. package/dist/Popover/index.d.ts +3 -0
  232. package/dist/Popover/index.js +4 -0
  233. package/dist/Popover-WJGCF3ZQ.css +185 -0
  234. package/dist/PricingCard/PricingCard.d.ts +56 -0
  235. package/dist/PricingCard/index.d.ts +3 -0
  236. package/dist/PricingCard/index.js +4 -0
  237. package/dist/PricingCard-JFI7RYXP.css +278 -0
  238. package/dist/Prose/Prose.d.ts +33 -0
  239. package/dist/Prose/index.d.ts +3 -0
  240. package/dist/Prose/index.js +2 -0
  241. package/dist/Prose-BTXNFT2Q.css +99 -0
  242. package/dist/RelativeTime/RelativeTime.d.ts +31 -0
  243. package/dist/RelativeTime/clock.d.ts +9 -0
  244. package/dist/RelativeTime/format.d.ts +38 -0
  245. package/dist/RelativeTime/index.d.ts +6 -0
  246. package/dist/RelativeTime/index.js +4 -0
  247. package/dist/RelativeTime-EBAQPGO2.css +10 -0
  248. package/dist/SearchTrigger/SearchTrigger.d.ts +29 -0
  249. package/dist/SearchTrigger/index.d.ts +3 -0
  250. package/dist/SearchTrigger/index.js +2 -0
  251. package/dist/SearchTrigger-QXOYAUUY.css +79 -0
  252. package/dist/Section/Section.d.ts +41 -0
  253. package/dist/Section/index.d.ts +3 -0
  254. package/dist/Section/index.js +3 -0
  255. package/dist/Section-QRUPRIQ2.css +127 -0
  256. package/dist/SegmentedControl/SegmentedControl.d.ts +68 -0
  257. package/dist/SegmentedControl/index.d.ts +4 -0
  258. package/dist/SegmentedControl/index.js +5 -0
  259. package/dist/SegmentedControl-X3BI3XU4.css +68 -0
  260. package/dist/Select/Select.d.ts +138 -0
  261. package/dist/Select/index.d.ts +3 -0
  262. package/dist/Select/index.js +5 -0
  263. package/dist/Select-2X77FSWR.css +350 -0
  264. package/dist/Shortcut/index.d.ts +2 -0
  265. package/dist/Shortcut/index.js +4 -0
  266. package/dist/Shortcut/useShortcut.d.ts +68 -0
  267. package/dist/SidebarNav/SidebarNav.d.ts +117 -0
  268. package/dist/SidebarNav/index.d.ts +3 -0
  269. package/dist/SidebarNav/index.js +3 -0
  270. package/dist/SidebarNav-QGSFKZYA.css +319 -0
  271. package/dist/Skeleton/Skeleton.d.ts +50 -0
  272. package/dist/Skeleton/index.d.ts +3 -0
  273. package/dist/Skeleton/index.js +3 -0
  274. package/dist/Skeleton-V735HRGM.css +421 -0
  275. package/dist/StatCard/StatCard.d.ts +56 -0
  276. package/dist/StatCard/index.d.ts +3 -0
  277. package/dist/StatCard/index.js +3 -0
  278. package/dist/StatCard-KYPKZUWX.css +111 -0
  279. package/dist/StatGroup/StatGroup.d.ts +20 -0
  280. package/dist/StatGroup/index.d.ts +3 -0
  281. package/dist/StatGroup/index.js +2 -0
  282. package/dist/StatGroup-TGB6AEKM.css +80 -0
  283. package/dist/StatusDot/StatusDot.d.ts +25 -0
  284. package/dist/StatusDot/index.d.ts +3 -0
  285. package/dist/StatusDot/index.js +2 -0
  286. package/dist/StatusDot-HA2L2FSX.css +84 -0
  287. package/dist/Switch/Switch.d.ts +38 -0
  288. package/dist/Switch/index.d.ts +3 -0
  289. package/dist/Switch/index.js +2 -0
  290. package/dist/Switch-U4OWK4CL.css +169 -0
  291. package/dist/Table/Table.d.ts +51 -0
  292. package/dist/Table/index.d.ts +3 -0
  293. package/dist/Table/index.js +3 -0
  294. package/dist/Table-MDOLVUAW.css +159 -0
  295. package/dist/Tabs/Tabs.d.ts +97 -0
  296. package/dist/Tabs/index.d.ts +3 -0
  297. package/dist/Tabs/index.js +4 -0
  298. package/dist/Tabs/roving.d.ts +36 -0
  299. package/dist/Tabs-VLICJFVB.css +275 -0
  300. package/dist/Tag/Tag.d.ts +107 -0
  301. package/dist/Tag/index.d.ts +3 -0
  302. package/dist/Tag/index.js +3 -0
  303. package/dist/Tag-VNZEYLB6.css +406 -0
  304. package/dist/TagGroup/TagGroup.d.ts +41 -0
  305. package/dist/TagGroup/index.d.ts +3 -0
  306. package/dist/TagGroup/index.js +4 -0
  307. package/dist/TagGroup-APC2EFH4.css +75 -0
  308. package/dist/TagsInput/TagsInput.d.ts +112 -0
  309. package/dist/TagsInput/index.d.ts +3 -0
  310. package/dist/TagsInput/index.js +10 -0
  311. package/dist/TagsInput-W4P36PRJ.css +168 -0
  312. package/dist/Text/Text.d.ts +67 -0
  313. package/dist/Text/index.d.ts +3 -0
  314. package/dist/Text/index.js +2 -0
  315. package/dist/Text-XIPYYZX2.css +154 -0
  316. package/dist/ThemeSwitcher/ThemeSwitcher.d.ts +47 -0
  317. package/dist/ThemeSwitcher/index.d.ts +4 -0
  318. package/dist/ThemeSwitcher/index.js +6 -0
  319. package/dist/ThemeSwitcher/preferences.d.ts +51 -0
  320. package/dist/TimeWindowPicker/TimeWindowPicker.d.ts +231 -0
  321. package/dist/TimeWindowPicker/index.d.ts +3 -0
  322. package/dist/TimeWindowPicker/index.js +13 -0
  323. package/dist/TimeWindowPicker/mask.d.ts +82 -0
  324. package/dist/TimeWindowPicker-7I7KWCMU.css +403 -0
  325. package/dist/Timeline/Timeline.d.ts +51 -0
  326. package/dist/Timeline/index.d.ts +3 -0
  327. package/dist/Timeline/index.js +3 -0
  328. package/dist/Timeline-27SYKOFX.css +144 -0
  329. package/dist/Toaster/Toaster.d.ts +108 -0
  330. package/dist/Toaster/index.d.ts +3 -0
  331. package/dist/Toaster/index.js +5 -0
  332. package/dist/Toaster-NVDCEIP5.css +306 -0
  333. package/dist/Toolbar/Toolbar.d.ts +62 -0
  334. package/dist/Toolbar/index.d.ts +3 -0
  335. package/dist/Toolbar/index.js +4 -0
  336. package/dist/Toolbar-IP6LXN45.css +48 -0
  337. package/dist/Tooltip/Tooltip.d.ts +51 -0
  338. package/dist/Tooltip/index.d.ts +3 -0
  339. package/dist/Tooltip/index.js +4 -0
  340. package/dist/Tooltip-LKQF7CE4.css +71 -0
  341. package/dist/Tree/index.d.ts +8 -0
  342. package/dist/Tree/index.js +1 -0
  343. package/dist/Tree/layout.d.ts +160 -0
  344. package/dist/Tree/model.d.ts +110 -0
  345. package/dist/Tree/useMeasuredSizes.d.ts +61 -0
  346. package/dist/Tree/useTreeState.d.ts +89 -0
  347. package/dist/TreeCanvas/TreeCanvas.d.ts +384 -0
  348. package/dist/TreeCanvas/index.d.ts +3 -0
  349. package/dist/TreeCanvas/index.js +10 -0
  350. package/dist/TreeCanvas/motion.d.ts +59 -0
  351. package/dist/TreeCanvas-WBNQPHC7.css +1098 -0
  352. package/dist/TreeGrid/TreeGrid.d.ts +142 -0
  353. package/dist/TreeGrid/index.d.ts +3 -0
  354. package/dist/TreeGrid/index.js +8 -0
  355. package/dist/TreeGrid-NSW7VMOX.css +132 -0
  356. package/dist/VisuallyHidden/VisuallyHidden.d.ts +23 -0
  357. package/dist/VisuallyHidden/index.d.ts +3 -0
  358. package/dist/VisuallyHidden/index.js +2 -0
  359. package/dist/VisuallyHidden-L552H7OA.css +21 -0
  360. package/dist/chunk-22O7LAW2.js +41 -0
  361. package/dist/chunk-23DHIMJA.js +38 -0
  362. package/dist/chunk-2EOKFKHX.js +263 -0
  363. package/dist/chunk-2PRH365R.js +74 -0
  364. package/dist/chunk-2ZQMA2WB.js +57 -0
  365. package/dist/chunk-3CZ7XAVY.js +139 -0
  366. package/dist/chunk-3EYF6HKB.js +135 -0
  367. package/dist/chunk-3ZP55QZE.js +40 -0
  368. package/dist/chunk-53DVJCVW.js +14 -0
  369. package/dist/chunk-5C5YMZQU.js +51 -0
  370. package/dist/chunk-5EKIWVOR.js +132 -0
  371. package/dist/chunk-5IMACPJS.js +495 -0
  372. package/dist/chunk-5KPQ6D7N.js +54 -0
  373. package/dist/chunk-5SDBMKUO.js +297 -0
  374. package/dist/chunk-5WS6L6FA.js +114 -0
  375. package/dist/chunk-7EM5T4ME.js +39 -0
  376. package/dist/chunk-7FZ53WDJ.js +163 -0
  377. package/dist/chunk-7HPRF5XN.js +525 -0
  378. package/dist/chunk-7RPGY3JE.js +43 -0
  379. package/dist/chunk-A2UXBCLO.js +48 -0
  380. package/dist/chunk-ARMRX2YV.js +96 -0
  381. package/dist/chunk-AV2DXAEL.js +27 -0
  382. package/dist/chunk-BHHIIK3M.js +17 -0
  383. package/dist/chunk-BZFWDIV6.js +9 -0
  384. package/dist/chunk-BZYDZBAN.js +123 -0
  385. package/dist/chunk-CMEE37QJ.js +628 -0
  386. package/dist/chunk-D3OADIM6.js +112 -0
  387. package/dist/chunk-DD5BBGBE.js +162 -0
  388. package/dist/chunk-EHMQQHYR.js +1652 -0
  389. package/dist/chunk-EN6K2IFA.js +256 -0
  390. package/dist/chunk-EPOOQZYA.js +118 -0
  391. package/dist/chunk-ESCO4XYW.js +144 -0
  392. package/dist/chunk-EUCC37WY.js +14 -0
  393. package/dist/chunk-EV6IMYJ6.js +62 -0
  394. package/dist/chunk-F27EPQ7D.js +68 -0
  395. package/dist/chunk-F4PJZ4ED.js +245 -0
  396. package/dist/chunk-F6OE5FH3.js +49 -0
  397. package/dist/chunk-FBZAKNSX.js +263 -0
  398. package/dist/chunk-FEFTGVMF.js +46 -0
  399. package/dist/chunk-G2QFRTJ2.js +823 -0
  400. package/dist/chunk-GHYY2WPF.js +907 -0
  401. package/dist/chunk-GTOUGQQK.js +147 -0
  402. package/dist/chunk-GUIF6Q6N.js +143 -0
  403. package/dist/chunk-GXQ3B46I.js +216 -0
  404. package/dist/chunk-H4FBTAYS.js +130 -0
  405. package/dist/chunk-HOXGBLEY.js +37 -0
  406. package/dist/chunk-HQNHV7D6.js +54 -0
  407. package/dist/chunk-HTDFCRJZ.js +92 -0
  408. package/dist/chunk-HZ5XZNPS.js +98 -0
  409. package/dist/chunk-IAJLHVUA.js +28 -0
  410. package/dist/chunk-IJ7QXNIJ.js +1 -0
  411. package/dist/chunk-ITHXJHBB.js +280 -0
  412. package/dist/chunk-JCSA3XVH.js +32 -0
  413. package/dist/chunk-KLJCCMF3.js +97 -0
  414. package/dist/chunk-LGCPQIOZ.js +49 -0
  415. package/dist/chunk-LWKJQTOM.js +77 -0
  416. package/dist/chunk-MNAXYY3R.js +215 -0
  417. package/dist/chunk-NN62JQLR.js +29 -0
  418. package/dist/chunk-NPZY6YYL.js +251 -0
  419. package/dist/chunk-NTRZGNEX.js +529 -0
  420. package/dist/chunk-O6232G37.js +273 -0
  421. package/dist/chunk-O67VF5MS.js +58 -0
  422. package/dist/chunk-ODEQTPFM.js +6 -0
  423. package/dist/chunk-PNFASD6F.js +98 -0
  424. package/dist/chunk-PQADV6P6.js +19 -0
  425. package/dist/chunk-PZSWF74H.js +15 -0
  426. package/dist/chunk-Q4ZPPART.js +26 -0
  427. package/dist/chunk-QNCVHRZL.js +17 -0
  428. package/dist/chunk-QVE4GJAT.js +15 -0
  429. package/dist/chunk-QYOFACSP.js +36 -0
  430. package/dist/chunk-RA2ULG6H.js +29 -0
  431. package/dist/chunk-RDGD7Z7I.js +350 -0
  432. package/dist/chunk-RK4XPHVG.js +16 -0
  433. package/dist/chunk-RSAQOKH3.js +38 -0
  434. package/dist/chunk-S2XHHEW4.js +84 -0
  435. package/dist/chunk-S4GZWSKR.js +137 -0
  436. package/dist/chunk-SFZOKW2G.js +52 -0
  437. package/dist/chunk-T7FKOJKW.js +221 -0
  438. package/dist/chunk-UG46QBLT.js +325 -0
  439. package/dist/chunk-UOGSZKLT.js +134 -0
  440. package/dist/chunk-V2XMNLMS.js +52 -0
  441. package/dist/chunk-V663QU4R.js +51 -0
  442. package/dist/chunk-W4ENKCXJ.js +40 -0
  443. package/dist/chunk-W5J7R5EB.js +107 -0
  444. package/dist/chunk-WNI2WSJF.js +27 -0
  445. package/dist/chunk-XDTYBF2F.js +36 -0
  446. package/dist/chunk-XN4JBAN3.js +32 -0
  447. package/dist/chunk-XV6WRMBC.js +211 -0
  448. package/dist/chunk-YLYOWZ4V.js +33 -0
  449. package/dist/chunk-YMWONFSI.js +170 -0
  450. package/dist/chunk-ZCR6YGQ4.js +1 -0
  451. package/dist/generated/index.d.ts +83 -0
  452. package/dist/generated/index.js +91 -0
  453. package/dist/index.d.ts +1 -1217
  454. package/dist/index.js +91 -4518
  455. package/dist/styles.css +14841 -4274
  456. package/dist/utils/cx.d.ts +10 -0
  457. package/dist/utils/headingLevel.d.ts +16 -0
  458. package/dist/utils/index.d.ts +6 -0
  459. package/dist/utils/index.js +4 -0
  460. package/dist/utils/tone.d.ts +25 -0
  461. package/dist/utils/useClipboard.d.ts +30 -0
  462. package/package.json +18 -10
  463. package/scripts/bundle-css.mjs +25 -0
  464. package/scripts/check-css-literals.mjs +166 -0
  465. package/scripts/check-css-variables.mjs +184 -0
  466. package/scripts/check-css.mjs +27 -0
  467. package/scripts/css-source.mjs +67 -0
  468. package/scripts/write-barrel.mjs +60 -0
  469. package/dist/Accordion-NIMJQIOI.css +0 -88
  470. package/dist/AppShell-ZW3NSFBP.css +0 -51
  471. package/dist/Avatar-V6NG6Q45.css +0 -67
  472. package/dist/Button-XGCTXXYP.css +0 -174
  473. package/dist/Callout-LEGDIMAM.css +0 -52
  474. package/dist/Card-BOZGBML7.css +0 -86
  475. package/dist/Checkbox-OCUICIIZ.css +0 -58
  476. package/dist/CodeBlock-IEMBNIQC.css +0 -90
  477. package/dist/Container-LTKBA2FW.css +0 -21
  478. package/dist/Copyable-IB57OTHZ.css +0 -123
  479. package/dist/DataTable-3GALZUW2.css +0 -1593
  480. package/dist/DateTimePicker-NMSSGVPK.css +0 -312
  481. package/dist/Eyebrow-AVBORAS2.css +0 -30
  482. package/dist/IconButton-GB4PJDG2.css +0 -82
  483. package/dist/ImageUpload-3HQDF2KC.css +0 -158
  484. package/dist/Input-ZHUTN7CU.css +0 -210
  485. package/dist/Kbd-Q77CDZY7.css +0 -23
  486. package/dist/Modal-FJVG66S4.css +0 -138
  487. package/dist/Popover-FUFULUE2.css +0 -123
  488. package/dist/PricingCard-NKYV3JHA.css +0 -238
  489. package/dist/Section-665ZIPG6.css +0 -20
  490. package/dist/Select-GPRF7PRB.css +0 -294
  491. package/dist/Skeleton-3WEFLRDN.css +0 -378
  492. package/dist/StatCard-RTJIVTRB.css +0 -50
  493. package/dist/Table-AR3TRY2E.css +0 -89
  494. package/dist/Tabs-XZ4JIH3E.css +0 -153
  495. package/dist/Tag-R5QDJLYJ.css +0 -163
  496. package/dist/TimeWindowPicker-L3G5Q7UT.css +0 -629
  497. package/dist/Toaster-2O65VOR4.css +0 -264
@@ -0,0 +1,111 @@
1
+ /*
2
+ * Checkbox: a box, its label and its consequence as one target.
3
+ *
4
+ * The root IS the label element, so the row is clickable end to end. A 16px
5
+ * square is under every pointer-target floor there is; the row is what makes
6
+ * it pass, which is why the text is inside the control rather than beside it.
7
+ */
8
+
9
+ /*
10
+ * THE ROW CARRIES THE LABEL'S SIZE, and it is load-bearing rather than
11
+ * cosmetic: the box below is nudged onto the label's first line by arithmetic
12
+ * in `em`, and `em` on the box is the size it INHERITS, which is this. Left
13
+ * off, the row took whatever size the application's body text happened to be
14
+ * and the nudge was computed against a line the label does not set: on a 16px
15
+ * host it moved a 16px box by 3.2px to sit on an 18.9px line, which wants
16
+ * 1.45px.
17
+ */
18
+ .crewlet-checkbox {
19
+ --crewlet-checkbox-size: 16px;
20
+
21
+ display: flex;
22
+ align-items: flex-start;
23
+ gap: var(--spacing-2);
24
+ min-height: var(--size-row-sm);
25
+ font-size: var(--font-size-sm);
26
+ cursor: pointer;
27
+ }
28
+
29
+ .crewlet-checkbox__control {
30
+ /*
31
+ * Nudged down by half the difference between the label's first LINE and the
32
+ * BOX, so the box sits on that line rather than above it.
33
+ *
34
+ * BOTH TERMS ARE NAMED. The product's own stylesheet writes this as
35
+ * (line-height * 1em - 1em) / 2, which is the same sum only where the box
36
+ * is one em tall: that one draws a native checkbox at whatever size the
37
+ * platform picks, and this one is a stated 16px square on a 19.6px line, so
38
+ * the em form leaves it a pixel low. Reading the square's own token here is
39
+ * what stops the two drifting when either changes.
40
+ */
41
+ margin: calc((var(--font-line-height-snug) * 1em - var(--crewlet-checkbox-size)) / 2) 0 0;
42
+ width: var(--crewlet-checkbox-size);
43
+ height: var(--crewlet-checkbox-size);
44
+ flex: 0 0 auto;
45
+ /*
46
+ * THE TICK IS THE ACCENT, which is what "here, this one" means everywhere
47
+ * else in the system. It used to read --color-brand-primary, which is white
48
+ * in the dark theme: a white tick on a white box.
49
+ */
50
+ accent-color: var(--color-brand-accent);
51
+ cursor: pointer;
52
+ }
53
+
54
+ .crewlet-checkbox--danger .crewlet-checkbox__control {
55
+ accent-color: var(--color-feedback-danger);
56
+ }
57
+
58
+ .crewlet-checkbox__text {
59
+ display: flex;
60
+ flex-direction: column;
61
+ gap: var(--spacing-1);
62
+ user-select: none;
63
+ min-width: 0;
64
+ }
65
+
66
+ .crewlet-checkbox__label {
67
+ font-size: var(--font-size-sm);
68
+ line-height: var(--font-line-height-snug);
69
+ color: var(--color-text-primary);
70
+ }
71
+
72
+ /*
73
+ * The consequence, on the tertiary step. It says what ticking the box
74
+ * deletes, so it is a fact a reader has to make out rather than decoration:
75
+ * the muted step is measured into the 2.8 to 4.5 band on purpose and is the
76
+ * wrong home for a sentence about removing somebody's accounts.
77
+ */
78
+ .crewlet-checkbox__description {
79
+ font-size: var(--font-size-xs);
80
+ line-height: var(--font-line-height-normal);
81
+ color: var(--color-text-tertiary);
82
+ }
83
+
84
+ /*
85
+ * The bordered row a dialog gives a decision that stands on its own. It draws
86
+ * a BOUNDARY and nothing else: the frame sits on the dialog's own body, and a
87
+ * surface of its own inside a panel of the same surface is a box that reads
88
+ * as a second panel rather than as one choice.
89
+ *
90
+ * A destructive choice is not tinted here either. What it deletes is said in
91
+ * the words, and the box itself says so in the colour of its tick; a red
92
+ * panel around the sentence puts the alarm on the frame, where a reader who
93
+ * has already decided is not reading.
94
+ */
95
+ .crewlet-checkbox--framed {
96
+ gap: var(--spacing-3);
97
+ padding: var(--spacing-3);
98
+ border: 1px solid var(--color-border-default);
99
+ border-radius: var(--radius-lg);
100
+ }
101
+
102
+ .crewlet-checkbox.is-disabled,
103
+ .crewlet-checkbox.is-disabled .crewlet-checkbox__control {
104
+ cursor: not-allowed;
105
+ opacity: 0.6;
106
+ }
107
+
108
+ .crewlet-checkbox__control:focus-visible {
109
+ outline: 2px solid var(--color-focus);
110
+ outline-offset: 2px;
111
+ }
@@ -0,0 +1,60 @@
1
+ import { type HTMLAttributes } from 'react';
2
+ interface CodeBlockLook extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
3
+ /** The code to display and copy. A trailing newline is trimmed. */
4
+ code: string;
5
+ /** Shown in the header when there is no filename, and set as a data attribute. */
6
+ language?: string | undefined;
7
+ /** Shown on the left of the header. */
8
+ filename?: string | undefined;
9
+ showLineNumbers?: boolean | undefined;
10
+ /** Render the copy control. On by default. */
11
+ copyable?: boolean | undefined;
12
+ /** Names the copy control's action. */
13
+ copyLabel?: string | undefined;
14
+ /** A per-line prefix that is not part of the copy: `$` for a shell command. */
15
+ prompt?: string | undefined;
16
+ /**
17
+ * Wrap long lines instead of scrolling sideways. ON by default, because a
18
+ * block a reader reads is the common case, a message, a record, a stack
19
+ * trace, and a sideways scrollbar on one of those is a line nobody finds the
20
+ * end of. Turn it off for a block whose columns are the point: a diff, a
21
+ * table of output, a log that is aligned on purpose.
22
+ */
23
+ wrap?: boolean | undefined;
24
+ /**
25
+ * A ceiling, after which the block scrolls itself: a CSS length, or a number
26
+ * of px. Without one a 900-line record pushes everything under it off the
27
+ * screen.
28
+ */
29
+ maxHeight?: string | number | undefined;
30
+ /** No header at all, for a block inside a row that already has one. */
31
+ plain?: boolean | undefined;
32
+ }
33
+ /**
34
+ * `selectable` and `label` travel together, and the type is what says so: a
35
+ * focusable `role="region"` with no accessible name is a tab stop a screen
36
+ * reader announces as nothing, which is worse than the plain block it
37
+ * replaced. A union rather than two optional props, because an optional label
38
+ * beside an optional flag is a label somebody forgets.
39
+ */
40
+ export type CodeBlockProps = CodeBlockLook & ({
41
+ /** Take Command or Control plus A while focused, and take focus. */
42
+ selectable: true;
43
+ /** What this block is: "The turn record, as JSON". */
44
+ label: string;
45
+ } | {
46
+ selectable?: false | undefined;
47
+ label?: never;
48
+ });
49
+ /**
50
+ * A block of code, a config or a record.
51
+ *
52
+ * WHY THE LINES CARRY THEIR OWN NEWLINE. Each line used to be a `span` with
53
+ * nothing between them, so the block's `textContent` and any Range taken over
54
+ * it ran every line together: a reader who selected the block and copied it
55
+ * got one line of JSON with the structure gone. The newline is a real
56
+ * character in the markup now, and with line numbers off the code is ONE TEXT
57
+ * NODE, which is what a selection and a browser's own find both want.
58
+ */
59
+ export declare const CodeBlock: import("react").ForwardRefExoticComponent<CodeBlockProps & import("react").RefAttributes<HTMLDivElement>>;
60
+ export {};
@@ -0,0 +1,3 @@
1
+ import './CodeBlock.css';
2
+ export { CodeBlock } from './CodeBlock.js';
3
+ export type { CodeBlockProps } from './CodeBlock.js';
@@ -0,0 +1,7 @@
1
+ export { CodeBlock } from '../chunk-HTDFCRJZ.js';
2
+ import '../chunk-D3OADIM6.js';
3
+ import '../chunk-V663QU4R.js';
4
+ import '../chunk-F27EPQ7D.js';
5
+ import '../chunk-BZYDZBAN.js';
6
+ import '../chunk-BZFWDIV6.js';
7
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,153 @@
1
+ /*
2
+ * CodeBlock, a monospace command, config or record surface. One step off the
3
+ * page, with an optional header carrying a filename and the copy control.
4
+ * Long lines WRAP, because the common block is one a reader reads; a caller
5
+ * whose columns are the point asks for the sideways scroll instead.
6
+ */
7
+
8
+ .crewlet-codeblock {
9
+ border: 1px solid var(--color-border-default);
10
+ /* The block sits INSIDE a card more often than beside one, and the card's
11
+ own radius repeated inside it reads as a box drawn twice. */
12
+ border-radius: var(--radius-md);
13
+ background: var(--color-surface-subtle);
14
+ overflow: hidden;
15
+ font-family: var(--font-family-mono);
16
+ min-width: 0;
17
+ }
18
+
19
+ .crewlet-codeblock__header {
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: space-between;
23
+ gap: var(--spacing-4);
24
+ padding: var(--spacing-2) var(--spacing-3);
25
+ /* The rule alone, as every head in the system is drawn. A second ground
26
+ inside the block made the filename strip a lighter band across a surface
27
+ that is already one step off the page. */
28
+ border-bottom: 1px solid var(--color-border-default);
29
+ min-height: var(--size-row-md);
30
+ }
31
+
32
+ .crewlet-codeblock__meta {
33
+ display: inline-flex;
34
+ align-items: center;
35
+ gap: var(--spacing-2);
36
+ min-width: 0;
37
+ font-size: var(--font-size-xs);
38
+ color: var(--color-text-tertiary);
39
+ }
40
+
41
+ .crewlet-codeblock__filename {
42
+ color: var(--color-text-secondary);
43
+ white-space: nowrap;
44
+ overflow: hidden;
45
+ text-overflow: ellipsis;
46
+ }
47
+
48
+ .crewlet-codeblock__lang {
49
+ text-transform: uppercase;
50
+ letter-spacing: var(--font-letter-spacing-wide);
51
+ }
52
+
53
+ .crewlet-codeblock__pre {
54
+ margin: 0;
55
+ padding: var(--spacing-3);
56
+ overflow: auto;
57
+ font-size: var(--font-size-xs);
58
+ line-height: var(--font-line-height-normal);
59
+ color: var(--color-text-secondary);
60
+ /*
61
+ * IT WRAPS. A block a reader READS is the common case, a stack trace or a
62
+ * record or a model's own error text, and a sideways scrollbar on one of
63
+ * those is a line nobody finds the end of. `nowrap` is what the caller asks
64
+ * for when the columns are the point.
65
+ */
66
+ white-space: pre-wrap;
67
+ overflow-wrap: anywhere;
68
+ tab-size: 2;
69
+ }
70
+
71
+ /*
72
+ * Columns kept, and a sideways scroll to reach them: a diff, a table of
73
+ * output, a log whose alignment carries meaning.
74
+ */
75
+ .crewlet-codeblock--nowrap .crewlet-codeblock__pre {
76
+ white-space: pre;
77
+ overflow-wrap: normal;
78
+ }
79
+
80
+ /*
81
+ * Bounded, with its own scroll. Without a ceiling a long record pushes
82
+ * everything under it off the screen, which on a detail page is every other
83
+ * fact about the thing being read.
84
+ */
85
+ .crewlet-codeblock--bounded .crewlet-codeblock__pre {
86
+ max-height: var(--crewlet-codeblock-max-height);
87
+ }
88
+
89
+ /*
90
+ * A BLOCK THAT OWNS SELECT-ALL. Select-all is a document verb, so on a screen
91
+ * that is mostly one record it took the nav, the stat row and every card with
92
+ * it. While this block has focus the verb means "this record", which is the
93
+ * only thing anybody was reaching for, and the ring is what says so: a
94
+ * keyboard verb that changes meaning on focus, with no visible focus state, is
95
+ * a secret.
96
+ */
97
+ .crewlet-codeblock__pre[role='region'] {
98
+ cursor: text;
99
+ }
100
+
101
+ .crewlet-codeblock__pre:focus-visible {
102
+ outline: 2px solid var(--color-focus);
103
+ outline-offset: var(--size-focus-ring-inset-offset);
104
+ }
105
+
106
+ .crewlet-codeblock__code {
107
+ display: block;
108
+ font-family: inherit;
109
+ }
110
+
111
+ .crewlet-codeblock__line {
112
+ display: block;
113
+ }
114
+
115
+ .crewlet-codeblock--numbered .crewlet-codeblock__line {
116
+ display: grid;
117
+ grid-template-columns: 2ch 1fr;
118
+ gap: var(--spacing-3);
119
+ align-items: baseline;
120
+ }
121
+
122
+ /*
123
+ * A line number is a reference somebody reads aloud in a review, so it sits on
124
+ * the tertiary step rather than the decoration one. `user-select: none` is
125
+ * what keeps it out of a copy.
126
+ */
127
+ .crewlet-codeblock__ln {
128
+ text-align: right;
129
+ color: var(--color-text-tertiary);
130
+ user-select: none;
131
+ }
132
+
133
+ .crewlet-codeblock__prompt {
134
+ flex: none;
135
+ color: var(--color-brand-accent-ink);
136
+ user-select: none;
137
+ margin-inline-end: var(--spacing-2);
138
+ }
139
+
140
+ .crewlet-codeblock__linecontent {
141
+ min-width: 0;
142
+ overflow-wrap: anywhere;
143
+ }
144
+
145
+ .crewlet-codeblock--nowrap .crewlet-codeblock__linecontent {
146
+ overflow-wrap: normal;
147
+ }
148
+
149
+ /* The copy control sits in the header in the sans face, not the block's. */
150
+ .crewlet-codeblock__copy {
151
+ flex: none;
152
+ font-family: var(--font-family-sans);
153
+ }
@@ -0,0 +1,89 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type InputProps } from '../Input/index.js';
3
+ export interface ComboboxOption {
4
+ /** What taking the option puts in the field. */
5
+ value: string;
6
+ /** What is drawn. The value itself when it is left out. */
7
+ label?: ReactNode;
8
+ /** A short second line of identity: a handle, a path, a kind. */
9
+ hint?: ReactNode;
10
+ disabled?: boolean;
11
+ }
12
+ /** What a caller drawing its own rows is handed. */
13
+ export interface ComboboxListRender {
14
+ /** The id the field's `aria-controls` points at. Put it on the list. */
15
+ listId: string;
16
+ /** The highlighted row's index, or -1 when nothing is offered. */
17
+ active: number;
18
+ /** The id of the row at `index`. */
19
+ optionId: (index: number) => string;
20
+ /** Mouse wiring for the row at `index`. */
21
+ optionHandlers: (index: number) => Record<string, unknown>;
22
+ }
23
+ export interface ComboboxProps extends Omit<InputProps, 'value' | 'onChange' | 'role' | 'onKeyDown' | 'list'> {
24
+ /** What the field holds. The caller owns it: a completion is an edit to it. */
25
+ value: string;
26
+ onValueChange: (next: string) => void;
27
+ /**
28
+ * What is offered RIGHT NOW. The caller filters, because what a query
29
+ * matches is the caller's question: a secret reference matches on a prefix
30
+ * of the name under the caret, not on the whole field.
31
+ */
32
+ options?: readonly ComboboxOption[];
33
+ /**
34
+ * Draws the rows itself, for a list whose rows are not plain options.
35
+ *
36
+ * `options` STILL SAYS WHAT IS OFFERED. This decides what a row looks like,
37
+ * not what there is: the highlight is an index into `options`, and so is
38
+ * what Enter takes, so a list drawn this way with no `options` is one the
39
+ * arrows cannot move through and Enter cannot commit from.
40
+ */
41
+ renderList?: ((list: ComboboxListRender) => ReactNode) | undefined;
42
+ /**
43
+ * Taking an option. By default it writes the option's value into the field,
44
+ * which is what a completion means; a caller with a caret to place (a
45
+ * `${NAME}` inside a longer value) does it itself.
46
+ */
47
+ onCommit?: ((option: ComboboxOption, index: number) => void) | undefined;
48
+ /** Whether the list is on screen. Controlled: only the caller knows when it has something to offer. */
49
+ open: boolean;
50
+ onOpenChange: (open: boolean) => void;
51
+ /** Names the list. A listbox with no name is announced as "list box" and nothing else. */
52
+ label: string;
53
+ /**
54
+ * Tab takes the highlighted option, which is what it means in a completion
55
+ * list. Left off, Tab moves focus, as it does on every form control.
56
+ */
57
+ tabCommits?: boolean | undefined;
58
+ /**
59
+ * Which press takes a row. `mousedown` is the default and the right answer
60
+ * for a list that closes on blur: the field blurs first, so a list waiting
61
+ * for the click takes the row out from under the press that chose it.
62
+ * `click` is for a list inside a surface that is not going anywhere.
63
+ */
64
+ commitOn?: 'mousedown' | 'click' | undefined;
65
+ /** Draws the rows in the mono face, for names read exactly rather than for sense. */
66
+ mono?: boolean | undefined;
67
+ /** The line shown while the list is open with nothing to offer. Nothing is drawn without one. */
68
+ emptyMessage?: ReactNode;
69
+ }
70
+ /**
71
+ * A text field that offers completions.
72
+ *
73
+ * WHY THE LIST IS ANCHORED RATHER THAN PORTALLED. It is positioned absolutely
74
+ * under the field, inside the field's own box, so opening it moves nothing: a
75
+ * list that took part in the layout pushed every field under it down the form
76
+ * as somebody typed. It is bounded and scrolled rather than as long as the
77
+ * matches, and it sits on an OPAQUE surface, because a translucent one over a
78
+ * form leaves two sets of words in the same place.
79
+ *
80
+ * ESCAPE IS CONSUMED HERE. The list closes and the dialog or sheet around the
81
+ * field stays open; a second Escape reaches it. Without that, somebody
82
+ * dismissing a completion they did not want lost the whole editor with it.
83
+ *
84
+ * WHAT IT DOES NOT DECIDE is what matches. The caller filters and hands over
85
+ * what is offered, because a completion's question belongs to the value: the
86
+ * engine's secret references complete on the name under the caret, not on the
87
+ * whole field.
88
+ */
89
+ export declare const Combobox: import("react").ForwardRefExoticComponent<ComboboxProps & import("react").RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,3 @@
1
+ import './Combobox.css';
2
+ export { Combobox } from './Combobox.js';
3
+ export type { ComboboxListRender, ComboboxOption, ComboboxProps } from './Combobox.js';
@@ -0,0 +1,8 @@
1
+ export { Combobox } from '../chunk-UOGSZKLT.js';
2
+ import '../chunk-GTOUGQQK.js';
3
+ import '../chunk-O6232G37.js';
4
+ import '../chunk-PQADV6P6.js';
5
+ import '../chunk-ITHXJHBB.js';
6
+ import '../chunk-F27EPQ7D.js';
7
+ import '../chunk-BZFWDIV6.js';
8
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,80 @@
1
+ /*
2
+ * Combobox: a field that offers completions.
3
+ *
4
+ * The panel is anchored inside the field's own box rather than portalled or
5
+ * laid out in the flow. In the flow it pushed every field under it down the
6
+ * form as somebody typed; portalled, it would have to be placed, followed and
7
+ * given a layer of its own for a list that never leaves its field's side.
8
+ */
9
+
10
+ .crewlet-combobox {
11
+ position: relative;
12
+ width: 100%;
13
+ }
14
+
15
+ .crewlet-combobox__panel {
16
+ /* Six rows and a scroll, as every list this package offers from a field. */
17
+ --crewlet-combobox-panel-max-height: 12rem;
18
+
19
+ position: absolute;
20
+ top: calc(100% + var(--spacing-1));
21
+ left: 0;
22
+ right: 0;
23
+ max-height: var(--crewlet-combobox-panel-max-height);
24
+ overflow-y: auto;
25
+ overscroll-behavior: contain;
26
+ padding: var(--spacing-1);
27
+ display: flex;
28
+ flex-direction: column;
29
+ gap: 1px;
30
+ /*
31
+ * OPAQUE, and the product's own panel surface: a translucent list over a
32
+ * form puts two sets of words in the same place, and the words underneath
33
+ * are a label and a value somebody is in the middle of typing.
34
+ */
35
+ background: var(--color-surface-subtle);
36
+ border: 1px solid var(--color-border-default);
37
+ border-radius: var(--radius-md);
38
+ box-shadow: var(--shadow-md);
39
+ /* Above the fields below it, and nothing more: it never leaves its form. */
40
+ z-index: var(--z-index-dropdown);
41
+ }
42
+
43
+ /* Names read exactly rather than for sense: a secret reference, a path, a key. */
44
+ .crewlet-combobox__panel.is-mono .crewlet-combobox__label {
45
+ font-family: var(--font-family-mono);
46
+ font-size: var(--font-size-compact);
47
+ }
48
+
49
+ .crewlet-combobox__label {
50
+ overflow: hidden;
51
+ text-overflow: ellipsis;
52
+ white-space: nowrap;
53
+ }
54
+
55
+ /*
56
+ * The row the arrows or the pointer are on, in the hover tint. The accent is
57
+ * what "here, this is the current one" means elsewhere in the product; a
58
+ * completion list has no current one, only the row about to be taken.
59
+ *
60
+ * Scoped to the panel rather than written on the row class, because the
61
+ * shared listbox register paints [aria-selected] itself and the stylesheets
62
+ * are bundled in hash order: a rule of equal weight would win or lose by the
63
+ * name of a build artefact.
64
+ */
65
+ .crewlet-combobox__panel .crewlet-listbox__option {
66
+ border-radius: var(--radius-xs);
67
+ }
68
+
69
+ .crewlet-combobox__panel .crewlet-listbox__option[aria-selected='true'],
70
+ .crewlet-combobox__panel .crewlet-listbox__option.is-highlight,
71
+ .crewlet-combobox__panel .crewlet-listbox__option:hover {
72
+ background: var(--color-surface-hover);
73
+ color: var(--color-text-primary);
74
+ }
75
+
76
+ .crewlet-combobox__panel .crewlet-listbox__option.is-disabled {
77
+ background: transparent;
78
+ color: var(--color-text-tertiary);
79
+ cursor: not-allowed;
80
+ }
@@ -0,0 +1,77 @@
1
+ import { type HTMLAttributes, type ReactNode } from 'react';
2
+ export interface CommandPaletteItem {
3
+ /** Stable across a re-query: it keys the row and names its option element. */
4
+ id: string;
5
+ /** A glyph, drawn beside the label. Decorative: the label carries the words. */
6
+ icon?: ReactNode;
7
+ label: ReactNode;
8
+ /** What the row is, at its end: a path, a kind, a state. */
9
+ hint?: ReactNode;
10
+ onSelect: () => void;
11
+ }
12
+ export interface CommandPaletteGroup {
13
+ id: string;
14
+ /** The heading over the group, and the name a screen reader gives it. */
15
+ label: string;
16
+ items: CommandPaletteItem[];
17
+ }
18
+ /**
19
+ * Rest props reach the Modal's frame, which is what lets an application put
20
+ * its own chord on the surface (see the component doc).
21
+ *
22
+ * `role` and `onSubmit` are not among them: the surface is a dialog, and a
23
+ * palette announced as anything else is one a screen reader cannot get out of;
24
+ * a palette takes an answer from its list, not from a form submission. Nor are
25
+ * the three ARIA relationships, which the Modal decides: `label` names this
26
+ * surface and its field together.
27
+ */
28
+ export interface CommandPaletteProps extends Omit<HTMLAttributes<HTMLElement>, 'children' | 'role' | 'onSubmit' | 'aria-label' | 'aria-labelledby' | 'aria-describedby'> {
29
+ open: boolean;
30
+ onClose: () => void;
31
+ /** Names the surface and its field. */
32
+ label?: string | undefined;
33
+ query: string;
34
+ onQueryChange: (query: string) => void;
35
+ /** What is offered right now. The caller does the searching and the ranking. */
36
+ groups: CommandPaletteGroup[];
37
+ placeholder?: string | undefined;
38
+ /** The hints under the results, usually `Kbd` keycaps. */
39
+ footer?: ReactNode;
40
+ /** Said when the query matches nothing. Name the kind of nothing it is. */
41
+ emptyMessage?: string | undefined;
42
+ /** Names the result list itself. */
43
+ resultsLabel?: string | undefined;
44
+ }
45
+ /**
46
+ * One search surface for a whole product: screens, records, and any id pasted
47
+ * out of a log.
48
+ *
49
+ * IT KNOWS NOTHING ABOUT WHAT IT SEARCHES. The caller ranks and groups, and
50
+ * hands over rows; what this owns is the surface, the keyboard and the way a
51
+ * screen reader hears it. The alternative, a component that took a data source,
52
+ * would need one ranking rule per product and would still be wrong for the
53
+ * next one.
54
+ *
55
+ * IT IS A COMBOBOX. Focus stays in the field and the arrows move a highlight
56
+ * through the results, which the field names with `aria-activedescendant`, so a
57
+ * screen reader hears each result as it is reached. Results drawn as buttons
58
+ * instead put up to forty tab stops between the field and itself, and the
59
+ * highlight moved in silence.
60
+ *
61
+ * THE LIST IS THE SURFACE'S OWN BODY, not a popup above it (`popup: false`).
62
+ * Registered as a popup, the list would take Escape from the stack and take the
63
+ * veil's press on `pointerdown`, closing the palette before that press's click
64
+ * and letting the click land on whatever the veil was covering.
65
+ *
66
+ * A ROW OPENS ON ITS CLICK, not on the press. Nothing here closes on blur, so
67
+ * there is no reason to act early, and a surface gone on the press would leave
68
+ * the release to land on the screen beneath it. The press itself is still
69
+ * prevented, so it does not move focus off the field: a combobox that loses its
70
+ * input names no highlight, and typing reaches nothing.
71
+ *
72
+ * THE CHORD THAT OPENS IT IS THE APPLICATION'S, not this component's. Pass an
73
+ * `onKeyDown`: it reaches the frame, which is every key pressed inside the
74
+ * surface, and closing from there is one line the caller already has the
75
+ * definition for.
76
+ */
77
+ export declare function CommandPalette({ open, ...rest }: CommandPaletteProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,3 @@
1
+ import './CommandPalette.css';
2
+ export { CommandPalette } from './CommandPalette.js';
3
+ export type { CommandPaletteGroup, CommandPaletteItem, CommandPaletteProps } from './CommandPalette.js';
@@ -0,0 +1,11 @@
1
+ export { CommandPalette } from '../chunk-ESCO4XYW.js';
2
+ import '../chunk-2EOKFKHX.js';
3
+ import '../chunk-GTOUGQQK.js';
4
+ import '../chunk-O6232G37.js';
5
+ import '../chunk-PQADV6P6.js';
6
+ import '../chunk-7RPGY3JE.js';
7
+ import '../chunk-ITHXJHBB.js';
8
+ import '../chunk-F27EPQ7D.js';
9
+ import '../chunk-BZYDZBAN.js';
10
+ import '../chunk-BZFWDIV6.js';
11
+ import '../chunk-ODEQTPFM.js';