@crewlethq/ui 0.2.0 → 0.4.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 +164 -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-RLR254LD.css +450 -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 +119 -0
  62. package/dist/CodeBlock/index.d.ts +3 -0
  63. package/dist/CodeBlock/index.js +7 -0
  64. package/dist/CodeBlock-GYNJ2HI6.css +188 -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 +64 -0
  78. package/dist/Copyable/Copyable.d.ts +42 -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 +100 -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 +126 -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 +101 -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 +153 -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 +67 -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-2HQR4U4D.js +143 -0
  364. package/dist/chunk-2PRH365R.js +74 -0
  365. package/dist/chunk-2ZQMA2WB.js +57 -0
  366. package/dist/chunk-34VGEDVV.js +907 -0
  367. package/dist/chunk-3CZ7XAVY.js +139 -0
  368. package/dist/chunk-3EYF6HKB.js +135 -0
  369. package/dist/chunk-3QRYCPXQ.js +116 -0
  370. package/dist/chunk-3ZP55QZE.js +40 -0
  371. package/dist/chunk-53DVJCVW.js +14 -0
  372. package/dist/chunk-5C5YMZQU.js +51 -0
  373. package/dist/chunk-5EKIWVOR.js +132 -0
  374. package/dist/chunk-5KPQ6D7N.js +54 -0
  375. package/dist/chunk-5SDBMKUO.js +297 -0
  376. package/dist/chunk-5VNUYO76.js +62 -0
  377. package/dist/chunk-5WS6L6FA.js +114 -0
  378. package/dist/chunk-6ZFVFA56.js +108 -0
  379. package/dist/chunk-7EM5T4ME.js +39 -0
  380. package/dist/chunk-7FZ53WDJ.js +163 -0
  381. package/dist/chunk-7HPRF5XN.js +525 -0
  382. package/dist/chunk-7RPGY3JE.js +43 -0
  383. package/dist/chunk-A2UXBCLO.js +48 -0
  384. package/dist/chunk-AV2DXAEL.js +27 -0
  385. package/dist/chunk-BHHIIK3M.js +17 -0
  386. package/dist/chunk-BZFWDIV6.js +9 -0
  387. package/dist/chunk-BZYDZBAN.js +123 -0
  388. package/dist/chunk-CMEE37QJ.js +628 -0
  389. package/dist/chunk-D35VTV2Z.js +106 -0
  390. package/dist/chunk-DD5BBGBE.js +162 -0
  391. package/dist/chunk-EN6K2IFA.js +256 -0
  392. package/dist/chunk-ESCO4XYW.js +144 -0
  393. package/dist/chunk-EUCC37WY.js +14 -0
  394. package/dist/chunk-EV6IMYJ6.js +62 -0
  395. package/dist/chunk-F27EPQ7D.js +68 -0
  396. package/dist/chunk-F4PJZ4ED.js +245 -0
  397. package/dist/chunk-F6OE5FH3.js +49 -0
  398. package/dist/chunk-FBZAKNSX.js +263 -0
  399. package/dist/chunk-FEFTGVMF.js +46 -0
  400. package/dist/chunk-GTOUGQQK.js +147 -0
  401. package/dist/chunk-GXQ3B46I.js +216 -0
  402. package/dist/chunk-H4FBTAYS.js +130 -0
  403. package/dist/chunk-HOXGBLEY.js +37 -0
  404. package/dist/chunk-HQNHV7D6.js +54 -0
  405. package/dist/chunk-HZ5XZNPS.js +98 -0
  406. package/dist/chunk-IAJLHVUA.js +28 -0
  407. package/dist/chunk-IJ7QXNIJ.js +1 -0
  408. package/dist/chunk-ITHXJHBB.js +280 -0
  409. package/dist/chunk-JCSA3XVH.js +32 -0
  410. package/dist/chunk-KLJCCMF3.js +97 -0
  411. package/dist/chunk-LWKJQTOM.js +77 -0
  412. package/dist/chunk-MNAXYY3R.js +215 -0
  413. package/dist/chunk-NDCATSW7.js +229 -0
  414. package/dist/chunk-NN62JQLR.js +29 -0
  415. package/dist/chunk-NPZY6YYL.js +251 -0
  416. package/dist/chunk-NTRZGNEX.js +529 -0
  417. package/dist/chunk-O6232G37.js +273 -0
  418. package/dist/chunk-O67VF5MS.js +58 -0
  419. package/dist/chunk-ODEQTPFM.js +6 -0
  420. package/dist/chunk-OFHBK7RI.js +498 -0
  421. package/dist/chunk-PNFASD6F.js +98 -0
  422. package/dist/chunk-PQADV6P6.js +19 -0
  423. package/dist/chunk-PZSWF74H.js +15 -0
  424. package/dist/chunk-Q4ZPPART.js +26 -0
  425. package/dist/chunk-QEUY3A5P.js +186 -0
  426. package/dist/chunk-QNCVHRZL.js +17 -0
  427. package/dist/chunk-QVE4GJAT.js +15 -0
  428. package/dist/chunk-QYOFACSP.js +36 -0
  429. package/dist/chunk-RA2ULG6H.js +29 -0
  430. package/dist/chunk-RDGD7Z7I.js +350 -0
  431. package/dist/chunk-RK4XPHVG.js +16 -0
  432. package/dist/chunk-RSAQOKH3.js +38 -0
  433. package/dist/chunk-S2XHHEW4.js +84 -0
  434. package/dist/chunk-S4GZWSKR.js +137 -0
  435. package/dist/chunk-SFZOKW2G.js +52 -0
  436. package/dist/chunk-UG46QBLT.js +325 -0
  437. package/dist/chunk-UOGSZKLT.js +134 -0
  438. package/dist/chunk-V2XMNLMS.js +52 -0
  439. package/dist/chunk-W4ENKCXJ.js +40 -0
  440. package/dist/chunk-W5J7R5EB.js +107 -0
  441. package/dist/chunk-WNI2WSJF.js +27 -0
  442. package/dist/chunk-WOYYD2YR.js +823 -0
  443. package/dist/chunk-WQX73TWF.js +1652 -0
  444. package/dist/chunk-XDTYBF2F.js +36 -0
  445. package/dist/chunk-XN4JBAN3.js +32 -0
  446. package/dist/chunk-XV6WRMBC.js +211 -0
  447. package/dist/chunk-YLYOWZ4V.js +33 -0
  448. package/dist/chunk-YODNNSZL.js +63 -0
  449. package/dist/chunk-ZCR6YGQ4.js +1 -0
  450. package/dist/chunk-ZFATEERP.js +144 -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 +14898 -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 +82 -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,119 @@
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
+ * THIS IS THE WRAPPING PROP, and the only one. `plain` is about the header;
24
+ * see its note.
25
+ */
26
+ wrap?: boolean | undefined;
27
+ /**
28
+ * A ceiling for THIS block, after which it scrolls itself: a CSS length, or
29
+ * a number of px. Without one a 900-line record pushes everything under it
30
+ * off the screen.
31
+ *
32
+ * There is no default, and a ceiling every caller has to remember is a
33
+ * ceiling somebody forgets — so the value is also readable from the CASCADE.
34
+ * An application that wants one ceiling for every block it renders declares
35
+ * `--crewlet-codeblock-max-height` on an ancestor (`:root`, a route's own
36
+ * wrapper) and passes nothing here; this prop then OVERRIDES that ancestor
37
+ * for one block, `maxHeight="none"` escapes it, and with neither set the
38
+ * block is unbounded exactly as it has always been.
39
+ */
40
+ maxHeight?: string | number | undefined;
41
+ /**
42
+ * No HEADER at all, for a block inside a row that already has one: no
43
+ * filename strip, no language, no copy control.
44
+ *
45
+ * IT IS ABOUT THE CHROME, NEVER THE TEXT. A `plain` block still wraps, and a
46
+ * block with a header wraps too — wrapping is `wrap` and nothing else. The
47
+ * name is worth reading twice when porting, because it is a word other code
48
+ * blocks spend on the opposite meaning: a `plain` that turned WRAPPING off
49
+ * is `wrap={false}` here.
50
+ */
51
+ plain?: boolean | undefined;
52
+ }
53
+ /**
54
+ * WHAT MAKES A BLOCK FOCUSABLE IS TWO DECISIONS, AND A NAME IS WHAT BOTH OWE.
55
+ *
56
+ * `selectable` is an INTENT only the caller has: this block is the record the
57
+ * screen is about, so while it has focus Command or Control plus A means this
58
+ * record rather than the document.
59
+ *
60
+ * `focusWhenScrollable` is an OBLIGATION the component discharges for itself.
61
+ * The `pre` is `overflow: auto`, so a ceiling or `wrap={false}` can turn any
62
+ * block into a scroll container, and a scroll container no keyboard can reach
63
+ * is content no keyboard can read. Whether a given block is one is a fact
64
+ * about the RENDERED BOX, not about any prop — the same code overflows at one
65
+ * viewport and not at the next — so the component measures it. A card carrying
66
+ * dozens of tool-argument blocks then gets a tab stop in front of the two that
67
+ * scroll rather than in front of all of them.
68
+ *
69
+ * They are separate because they answer different questions, and welding them
70
+ * gets both cases wrong: a block promoted for its scrollbar would start
71
+ * swallowing a chord nobody pressed for it, and a block that owns the chord
72
+ * would have to scroll to be named.
73
+ *
74
+ * `label` is the part they SHARE, and the type is what says so: a focusable
75
+ * `role="region"` with no accessible name is a tab stop a screen reader
76
+ * announces as nothing, which is worse than the plain block it replaced. So
77
+ * every arm that can take focus demands one, from either door, and the arm
78
+ * that cannot take focus refuses one — an optional label beside an optional
79
+ * flag is a label somebody forgets, and a label on a block that can never be
80
+ * named is a prop that silently does nothing.
81
+ */
82
+ export type CodeBlockProps = CodeBlockLook & ({
83
+ /** Take Command or Control plus A while focused, and take focus. */
84
+ selectable: true;
85
+ /** Also take focus when the rendered box turns out to scroll. */
86
+ focusWhenScrollable?: boolean | undefined;
87
+ /** What this block is: "The turn record, as JSON". */
88
+ label: string;
89
+ } | {
90
+ selectable?: false | undefined;
91
+ /**
92
+ * Take focus when, and only when, the rendered box scrolls — on
93
+ * either axis. The block is a named region then and nothing more: the
94
+ * select-all chord stays with the browser.
95
+ */
96
+ focusWhenScrollable: true;
97
+ /**
98
+ * What this block is. Required although the block may never take
99
+ * focus, because whether it does is a property of the box at one
100
+ * viewport and not of this call.
101
+ */
102
+ label: string;
103
+ } | {
104
+ selectable?: false | undefined;
105
+ focusWhenScrollable?: false | undefined;
106
+ label?: never;
107
+ });
108
+ /**
109
+ * A block of code, a config or a record.
110
+ *
111
+ * WHY THE LINES CARRY THEIR OWN NEWLINE. Each line used to be a `span` with
112
+ * nothing between them, so the block's `textContent` and any Range taken over
113
+ * it ran every line together: a reader who selected the block and copied it
114
+ * got one line of JSON with the structure gone. The newline is a real
115
+ * character in the markup now, and with line numbers off the code is ONE TEXT
116
+ * NODE, which is what a selection and a browser's own find both want.
117
+ */
118
+ export declare const CodeBlock: import("react").ForwardRefExoticComponent<CodeBlockProps & import("react").RefAttributes<HTMLDivElement>>;
119
+ 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-D35VTV2Z.js';
2
+ import '../chunk-3QRYCPXQ.js';
3
+ import '../chunk-5VNUYO76.js';
4
+ import '../chunk-F27EPQ7D.js';
5
+ import '../chunk-BZYDZBAN.js';
6
+ import '../chunk-BZFWDIV6.js';
7
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,188 @@
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
+ * THE CEILING IS A CASCADING ONE, read here and declared nowhere, so the
71
+ * fallback IS the default: with nothing set the block is unbounded, as it
72
+ * has always been. `maxHeight` writes the property inline on the block, and
73
+ * an application that wants one ceiling for every block it renders writes it
74
+ * once on an ancestor instead — because a ceiling every call site has to
75
+ * remember is a ceiling somebody forgets, and the right height is a fact
76
+ * about the SURFACE the block sits on rather than about the component.
77
+ *
78
+ * Declared with a fallback rather than seeded on `.crewlet-codeblock`: a
79
+ * name a component declares on itself stops inheriting, so seeding it would
80
+ * be the one shape in which an ancestor's value can never arrive.
81
+ *
82
+ * ONE DECLARATION, in the rule below. `.crewlet-codeblock--bounded` is still
83
+ * emitted as the marker that this block set a ceiling of its own — the hook
84
+ * an application stylesheet and a reader of the DOM key on — but it draws
85
+ * nothing, because a second rule restating this height is how the two come
86
+ * to disagree.
87
+ */
88
+ }
89
+
90
+ /*
91
+ * The ceiling, at the specificity the rule it replaces already had.
92
+ *
93
+ * `.crewlet-codeblock .crewlet-codeblock__pre` rather than
94
+ * `.crewlet-codeblock__pre`, and the extra class earns its place: the rule
95
+ * that used to set this was `.crewlet-codeblock--bounded .crewlet-codeblock__pre`
96
+ * at (0,2,0), and an application overriding it wrote `.crewlet-codeblock__pre
97
+ * { max-height: … }` at (0,1,0) and expected to LOSE. Declaring it on the
98
+ * single class drops this to (0,1,0), which turns every one of those
99
+ * overrides into a tie decided by sheet order — so a consumer who wrote a
100
+ * losing rule on purpose silently starts winning. Same two-class weight,
101
+ * same outcome for anybody who already had an opinion.
102
+ */
103
+ .crewlet-codeblock .crewlet-codeblock__pre {
104
+ max-height: var(--crewlet-codeblock-max-height, none);
105
+ }
106
+
107
+ /*
108
+ * Columns kept, and a sideways scroll to reach them: a diff, a table of
109
+ * output, a log whose alignment carries meaning.
110
+ */
111
+ .crewlet-codeblock--nowrap .crewlet-codeblock__pre {
112
+ white-space: pre;
113
+ overflow-wrap: normal;
114
+ }
115
+
116
+ /*
117
+ * A BLOCK A READER CAN REACH. Two things put the block in the tab order and
118
+ * the role follows both: `selectable`, and `focusWhenScrollable` on a box that
119
+ * turned out to scroll.
120
+ *
121
+ * On the first, select-all is a document verb, so on a screen that is mostly
122
+ * one record it took the nav, the stat row and every card with it. While this
123
+ * block has focus the verb means "this record", which is the only thing
124
+ * anybody was reaching for, and the ring is what says so: a keyboard verb that
125
+ * changes meaning on focus, with no visible focus state, is a secret. On the
126
+ * second the block keeps no keys at all; the ring is there because a scroll
127
+ * container a reader arrows through has to say where they are.
128
+ *
129
+ * The text cursor is right for both, and it is what the caret-shape of a
130
+ * `pre` full of selectable text should always have been.
131
+ */
132
+ .crewlet-codeblock__pre[role='region'] {
133
+ cursor: text;
134
+ }
135
+
136
+ .crewlet-codeblock__pre:focus-visible {
137
+ outline: 2px solid var(--color-focus);
138
+ outline-offset: var(--size-focus-ring-inset-offset);
139
+ }
140
+
141
+ .crewlet-codeblock__code {
142
+ display: block;
143
+ font-family: inherit;
144
+ }
145
+
146
+ .crewlet-codeblock__line {
147
+ display: block;
148
+ }
149
+
150
+ .crewlet-codeblock--numbered .crewlet-codeblock__line {
151
+ display: grid;
152
+ grid-template-columns: 2ch 1fr;
153
+ gap: var(--spacing-3);
154
+ align-items: baseline;
155
+ }
156
+
157
+ /*
158
+ * A line number is a reference somebody reads aloud in a review, so it sits on
159
+ * the tertiary step rather than the decoration one. `user-select: none` is
160
+ * what keeps it out of a copy.
161
+ */
162
+ .crewlet-codeblock__ln {
163
+ text-align: right;
164
+ color: var(--color-text-tertiary);
165
+ user-select: none;
166
+ }
167
+
168
+ .crewlet-codeblock__prompt {
169
+ flex: none;
170
+ color: var(--color-brand-accent-ink);
171
+ user-select: none;
172
+ margin-inline-end: var(--spacing-2);
173
+ }
174
+
175
+ .crewlet-codeblock__linecontent {
176
+ min-width: 0;
177
+ overflow-wrap: anywhere;
178
+ }
179
+
180
+ .crewlet-codeblock--nowrap .crewlet-codeblock__linecontent {
181
+ overflow-wrap: normal;
182
+ }
183
+
184
+ /* The copy control sits in the header in the sans face, not the block's. */
185
+ .crewlet-codeblock__copy {
186
+ flex: none;
187
+ font-family: var(--font-family-sans);
188
+ }
@@ -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
+ }