@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,61 @@
1
+ /* A keycap: the key's name on a small raised tile. */
2
+ .crewlet-kbd {
3
+ display: inline-flex;
4
+ align-items: center;
5
+ gap: var(--spacing-1);
6
+ min-width: 18px;
7
+ padding: 1px var(--spacing-1);
8
+ border-radius: var(--radius-xs);
9
+ border: 1px solid var(--color-border-default);
10
+ /* The thicker bottom edge is the whole of the "cap": one border, drawn
11
+ heavier on one side, reads as a key without a shadow that forced-colors
12
+ mode would drop. */
13
+ border-bottom-width: 2px;
14
+ background: var(--color-surface-inset);
15
+ /*
16
+ * The MONO face, not the surrounding one. A keycap is a literal: the reader
17
+ * is being told which character is printed on a key, and a proportional face
18
+ * draws `l`, `I` and `1` as three widths of the same mark.
19
+ */
20
+ font-family: var(--font-family-mono);
21
+ font-variant-ligatures: none;
22
+ font-size: var(--font-size-2xs);
23
+ /* THE DOCUMENT'S OWN LEADING, because a cap is drawn INSIDE a line of text
24
+ and not beside it: a hint at the end of a search field, a key named in a
25
+ sentence, a shortcut in a menu row. Tightened it stood a pixel under the
26
+ line it sits in and the row it was in wobbled by that pixel wherever a
27
+ cap appeared and wherever one did not. */
28
+ line-height: var(--font-line-height-normal);
29
+ color: var(--color-text-tertiary);
30
+ white-space: nowrap;
31
+ vertical-align: middle;
32
+ }
33
+
34
+ /*
35
+ * A quieter cap: FLATTER, not fainter. The opacity this replaces multiplied
36
+ * the ink as well as the frame, and 0.7 of a text step measures 3.43:1 on the
37
+ * panel, so a hint printing the key a reader is told to press was the one
38
+ * thing on the row they could not read. The cap gives up its raised edge and
39
+ * its fill instead, and keeps the tertiary ink, which is measured at 4.5:1 on
40
+ * every surface the package paints on.
41
+ */
42
+ .crewlet-kbd--subtle {
43
+ border-bottom-width: 1px;
44
+ background: none;
45
+ }
46
+
47
+ /*
48
+ * A whole shortcut: the caps drawn together, and one sentence read instead of
49
+ * them. The caps are hidden from assistive technology by the component; this
50
+ * only lays them out.
51
+ */
52
+ .crewlet-kbd-combo {
53
+ display: inline-flex;
54
+ align-items: center;
55
+ }
56
+
57
+ .crewlet-kbd-keys {
58
+ display: inline-flex;
59
+ align-items: center;
60
+ gap: var(--spacing-1);
61
+ }
@@ -0,0 +1,23 @@
1
+ import { type ReactNode } from 'react';
2
+ export interface LayerHostProps {
3
+ children?: ReactNode;
4
+ className?: string | undefined;
5
+ }
6
+ /**
7
+ * Provides a portal target for every overlay rendered inside it.
8
+ *
9
+ * The target is a sibling AFTER the children, covering the host's own box, so
10
+ * a surface placed against `getBoundingClientRect()` is placed against the
11
+ * container rather than the window. It takes no pointer events itself, so the
12
+ * content beneath stays live while nothing is open; each overlay inside takes
13
+ * them back for its own panel.
14
+ */
15
+ export declare function LayerHost({ children, className }: LayerHostProps): import("react/jsx-runtime").JSX.Element;
16
+ /**
17
+ * The element an overlay rendered here should portal into.
18
+ *
19
+ * `null` before the host's own element is measured and on the server, which is
20
+ * what a caller renders nothing for; everywhere else it is the nearest host,
21
+ * or the document body.
22
+ */
23
+ export declare function useLayerContainer(): HTMLElement | null;
@@ -0,0 +1,7 @@
1
+ import './Layer.css';
2
+ export { focusables, isComposing, isModalLayerOpen, layerCount, useBodyScrollLock, useModalLayer, usePopupLayer, } from './stack.js';
3
+ export type { DismissReason, LayerKind, ModalLayer, ModalLayerOptions, PopupLayer, PopupLayerOptions, } from './stack.js';
4
+ export { LAYER_GAP, LAYER_REPOSITION_EVENT, outsideBounds, placePopup, viewportBounds } from './place.js';
5
+ export type { Placement, PlacementRect, PlacementSize } from './place.js';
6
+ export { LayerHost, useLayerContainer } from './LayerHost.js';
7
+ export type { LayerHostProps } from './LayerHost.js';
@@ -0,0 +1,3 @@
1
+ export { LAYER_GAP, LAYER_REPOSITION_EVENT, LayerHost, outsideBounds, placePopup, useLayerContainer, viewportBounds } from '../chunk-7RPGY3JE.js';
2
+ export { focusables, isComposing, isModalLayerOpen, layerCount, useBodyScrollLock, useModalLayer, usePopupLayer } from '../chunk-ITHXJHBB.js';
3
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Where a floating surface goes beside the thing it belongs to.
3
+ *
4
+ * KEPT PURE, and separate from every component that calls it, because none of
5
+ * it can be observed in jsdom: there is no layout, so a menu that placed
6
+ * itself off the bottom of a canvas or lost its last item past an edge nobody
7
+ * can scroll would pass any component suite. As arithmetic over numbers it has
8
+ * a suite of its own, and each component is left with the wiring.
9
+ *
10
+ * All four values are in the SAME coordinate space, whichever one the caller
11
+ * picks: viewport coordinates for a surface positioned against the window,
12
+ * container coordinates for one inside a `LayerHost`. The function does no
13
+ * conversion, so a caller that mixes the two gets an answer in neither.
14
+ */
15
+ /** The slice of a DOMRect these functions read, so a plain object works too. */
16
+ export interface PlacementRect {
17
+ x: number;
18
+ y: number;
19
+ width: number;
20
+ height: number;
21
+ }
22
+ export interface PlacementSize {
23
+ width: number;
24
+ height: number;
25
+ }
26
+ export interface Placement {
27
+ left: number;
28
+ top: number;
29
+ /** Which side of the anchor the surface ended up on. */
30
+ side: 'below' | 'above';
31
+ }
32
+ /**
33
+ * The event a layer receives when the content beneath it moves.
34
+ *
35
+ * A surface positioned from an anchor's rectangle has to follow that anchor
36
+ * through a pan, a zoom or a scroll, and listening on the layer it was
37
+ * rendered into is the whole contract: it never needs to know what kind of
38
+ * surface drew the layer.
39
+ */
40
+ export declare const LAYER_REPOSITION_EVENT = "crewlet:viewchange";
41
+ /** Space between a surface and its anchor, and between a surface and an edge. */
42
+ export declare const LAYER_GAP = 4;
43
+ /**
44
+ * Where a surface of `size` goes beside `anchor`, inside `bounds`.
45
+ *
46
+ * On the preferred side of the anchor and aligned to its start; on the other
47
+ * side when the preferred one has not room and the other has more; and slid
48
+ * back inside the bounds on both axes, so a menu opened from a card at the
49
+ * edge of a canvas is never cut off by the edge it opened near. Where neither
50
+ * side has room for the whole surface it overlaps its anchor rather than
51
+ * losing its last items past an edge nobody can scroll; one larger than the
52
+ * bounds keeps its START in view, which is where its first item is.
53
+ *
54
+ * `prefer` exists because the caller sometimes knows better than the geometry:
55
+ * a picker at the foot of a form opens upward by design, and a panel that
56
+ * flipped only when it ran out of room would jump between sides as the page
57
+ * scrolled.
58
+ */
59
+ export declare function placePopup(anchor: PlacementRect, size: PlacementSize, bounds: PlacementRect, gap?: number, prefer?: 'below' | 'above'): Placement;
60
+ /** The rectangle of the window itself, for a surface with no layer host. */
61
+ export declare function viewportBounds(): PlacementRect;
62
+ /** Whether an anchor has been carried entirely outside its bounds. */
63
+ export declare function outsideBounds(anchor: PlacementRect, bounds: PlacementRect): boolean;
@@ -0,0 +1,159 @@
1
+ /**
2
+ * The layer stack: which open surface a key press or a press outside belongs to.
3
+ *
4
+ * WHY IT EXISTS. Every overlay in this package used to put its own Escape
5
+ * listener on the document, so one press closed a Select, the Modal around it
6
+ * and the page's own dialog together; a backdrop press closed two layers at
7
+ * once; and nothing trapped Tab, so a keyboard reader walked straight out of a
8
+ * dialog into the page behind its veil. Two shells getting those rules right
9
+ * separately is how the two come to disagree.
10
+ *
11
+ * THE RULES IT KEEPS.
12
+ *
13
+ * - ONE STACK holding modals (a dialog, a sheet) and popups (a menu, a
14
+ * listbox). Only the TOPMOST entry handles Escape and a press outside, so an
15
+ * open menu inside a dialog closes first, then the dialog.
16
+ * - ORDER IS OPENING ORDER, taken when the surface renders open rather than
17
+ * when its effect runs: React runs a child's effects before its parent's, so
18
+ * a dialog mounted inside a sheet in the same commit would otherwise
19
+ * register first and end up beneath the sheet it sits on.
20
+ * - A MODAL TRAPS TAB. Focus cycles inside the topmost modal, and Tab from
21
+ * anywhere outside it comes back in. There is no exception for a modal the
22
+ * stack does not know: a hand-rolled one raised over a sheet would have its
23
+ * Tab pulled back into the sheet and its Escape taken by the sheet beneath
24
+ * it, which is why every overlay in this package is on the stack.
25
+ * - FOCUS GOES IN ON OPEN, unless something inside already took it (a field
26
+ * with `autoFocus`), and GOES BACK ON CLOSE to whatever held it when the
27
+ * modal first rendered. That is captured during RENDER on purpose: by the
28
+ * time an effect runs, `autoFocus` has already moved focus into the modal,
29
+ * and a capture taken then would restore focus to an element that no longer
30
+ * exists. When that element has gone because it sat in a modal that closed
31
+ * as this one opened, focus goes where that modal would have sent it; when
32
+ * it has gone from a modal that is still open, to that modal's panel, never
33
+ * behind its veil (`returnChain`). A modal that closes BENEATH another
34
+ * surface still open above it returns nothing: focus is in that surface.
35
+ * - A VEIL CLOSES ONLY ITS OWN MODAL, and only when the press lands on the
36
+ * veil itself. The decision is taken on `pointerdown`, before any surface
37
+ * closes, so the press that dismisses a menu is never also read as a press
38
+ * on the veil beneath it. The CLOSE waits for that press's `click`: a veil
39
+ * removed on `pointerdown` is gone before a tap's compatibility mouse events
40
+ * are hit-tested, so the click a finger ends with would land on whatever the
41
+ * veil was covering, such as a Delete button behind a dialog.
42
+ * - A CONTROL THAT CONSUMES ESCAPE KEEPS IT. A completion list that closes on
43
+ * Escape calls `preventDefault` or stops propagation, and the stack leaves
44
+ * that press alone. So does an input method mid-composition (`isComposing`):
45
+ * its Escape abandons a word, and its Tab is its own.
46
+ * - A SURFACE'S Z-INDEX IS ITS DEPTH IN THE STACK, inside a band of its own
47
+ * (`--z-index-layer-base` to `--z-index-layer-max`), never a counter that
48
+ * only grows. The token scale leaves two free steps above a modal (popover,
49
+ * then toast), so a counter would put the second dialog of a session at the
50
+ * popover level, the third at the toast level, and everything after that
51
+ * permanently above the toast. A toast reports what a write inside a dialog
52
+ * did; it has to paint above it.
53
+ *
54
+ * WHAT IT DOES NOT OWN: markup, copy, and whether closing is allowed right
55
+ * now. A modal mid-write passes `dismissable: false`.
56
+ *
57
+ * ONE STACK PER DOCUMENT, EVEN WITH TWO COPIES OF THE PACKAGE. It lives under
58
+ * `Symbol.for('crewlet.layer-stack')` on `globalThis`, because a consumer that
59
+ * ends up with two versions of @crewlethq/ui installed would otherwise get two
60
+ * module-level arrays, and a dialog on one of them would not know about a menu
61
+ * on the other: Escape would close both, and Tab would leave.
62
+ */
63
+ export type LayerKind = 'modal' | 'popup';
64
+ /** Why a surface is being dismissed. */
65
+ export type DismissReason = 'escape' | 'outside' | 'tab';
66
+ /**
67
+ * Whether this press belongs to an input method's composition rather than to
68
+ * the page.
69
+ *
70
+ * Somebody typing Japanese, Chinese or Korean builds each word in a
71
+ * composition: the arrows walk the candidates, Enter accepts one and Escape
72
+ * abandons it. Those presses still reach the page as `keydown`, so a list that
73
+ * read that Enter as "take the highlighted option", or a modal that read that
74
+ * Escape as "close", acted on a key the reader pressed for the input method.
75
+ *
76
+ * Browsers flag such a press with `isComposing`. Safari delivers the Enter
77
+ * that ENDS a composition after it has already cleared that flag, marked only
78
+ * by the legacy key code 229, so both are read. One definition, because a
79
+ * primitive checking only the flag would act on that Enter in Safari while the
80
+ * others did not.
81
+ */
82
+ export declare function isComposing(event: {
83
+ isComposing?: boolean;
84
+ keyCode?: number;
85
+ nativeEvent?: unknown;
86
+ }): boolean;
87
+ /**
88
+ * What a keyboard user can Tab to inside `root`, in document order.
89
+ *
90
+ * Exported because a surface choosing where focus starts needs the same answer
91
+ * the trap uses; two selectors would disagree about a disabled button.
92
+ */
93
+ export declare function focusables(root: Element): HTMLElement[];
94
+ /**
95
+ * Whether a modal is open, which makes everything behind it inert.
96
+ *
97
+ * For a shortcut that belongs to the page rather than to any surface, such as
98
+ * a shell's search. `aria-modal` tells a screen reader that nothing behind the
99
+ * dialog can be reached, and a page shortcut that fires through it breaks that
100
+ * in the most expensive way: search opened over a dialog navigates, and the
101
+ * navigation unmounts the dialog, a write still in flight included. A popup
102
+ * does not count: it is not modal, and the page's keys still reach past a
103
+ * menu.
104
+ */
105
+ export declare function isModalLayerOpen(): boolean;
106
+ export interface ModalLayerOptions {
107
+ onClose: () => void;
108
+ /** False while a request is in flight: Escape and the veil stop closing. */
109
+ dismissable?: boolean | undefined;
110
+ /**
111
+ * Where focus starts when nothing inside has taken it, if not the first
112
+ * control. A sheet's first control is its Close button, and an editor that
113
+ * opens with focus on Close has made closing the first thing it asks.
114
+ */
115
+ initialFocus?: (() => HTMLElement | null) | undefined;
116
+ }
117
+ export interface ModalLayer {
118
+ /** The dialog element: focus goes into it and Tab stays in it. */
119
+ panelRef: (el: HTMLElement | null) => void;
120
+ /** The veil behind it: a press on the veil itself closes the modal. */
121
+ veilRef: (el: HTMLElement | null) => void;
122
+ /** This surface's place in the band, to put on the veil. */
123
+ zIndex: number;
124
+ /** Whether this surface is the one a key press would reach now. */
125
+ isTopmost: boolean;
126
+ }
127
+ /** A modal surface: a dialog or a sheet. Mount it only while it is open. */
128
+ export declare function useModalLayer({ onClose, dismissable, initialFocus }: ModalLayerOptions): ModalLayer;
129
+ export interface PopupLayerOptions {
130
+ open: boolean;
131
+ /** Called on Escape and on a press outside the popup and its `inside` elements. */
132
+ onDismiss: (reason: DismissReason) => void;
133
+ }
134
+ export interface PopupLayer {
135
+ /** The popup surface. */
136
+ panelRef: (el: HTMLElement | null) => void;
137
+ /** An element a press on does not dismiss, such as the button that toggles it. */
138
+ insideRef: (el: HTMLElement | null) => void;
139
+ zIndex: number;
140
+ isTopmost: boolean;
141
+ }
142
+ /**
143
+ * A non-modal popup on the same stack: a menu, a listbox. It traps nothing,
144
+ * and it closes before anything beneath it.
145
+ */
146
+ export declare function usePopupLayer({ open, onDismiss }: PopupLayerOptions): PopupLayer;
147
+ /**
148
+ * Holding the document's scroll while a surface is up, counted.
149
+ *
150
+ * REF COUNTED, because two modals can be open at once and each writes
151
+ * `document.body.style.overflow` on the way in and gives it back on the way
152
+ * out. Written as two independent effects, the inner one's cleanup restores
153
+ * the scroll while the outer modal is still up, and the page behind a dialog
154
+ * starts scrolling under it. The FIRST lock records what to give back, so a
155
+ * host page that had its own overflow keeps it.
156
+ */
157
+ export declare function useBodyScrollLock(active: boolean): void;
158
+ /** How many surfaces are on the stack. Exported for the package's own suites. */
159
+ export declare function layerCount(): number;
@@ -0,0 +1,23 @@
1
+ /*
2
+ * The portal target a LayerHost provides.
3
+ *
4
+ * It covers its container so a surface placed against its rectangle is placed
5
+ * against the container, and it is inert until something is drawn in it: an
6
+ * empty host over a canvas must not swallow the drag that pans the canvas.
7
+ * Each overlay inside takes pointer events back for its own panel.
8
+ *
9
+ * Its container establishes the positioning context. A host whose parent is
10
+ * static covers the nearest positioned ancestor instead, which is the
11
+ * viewport in the common case and is still a usable bound.
12
+ */
13
+
14
+ .crewlet-layer-host {
15
+ position: absolute;
16
+ inset: 0;
17
+ pointer-events: none;
18
+ z-index: var(--z-index-layer-base);
19
+ }
20
+
21
+ .crewlet-layer-host > * {
22
+ pointer-events: auto;
23
+ }
@@ -0,0 +1,104 @@
1
+ /**
2
+ * The four layout primitives every screen is assembled from.
3
+ *
4
+ * WHY THEY EXIST. A product that has no Stack writes `display: flex` in a
5
+ * hundred places, and each one spends its own gap: the dashboard this set
6
+ * comes from carried 87 inline `style` props, 56 of them holding a literal (a
7
+ * gap of 2, a max width of 380, a left pad of depth times 12). Every one of
8
+ * those is a value nobody can find again and nothing can hold to a scale.
9
+ *
10
+ * So a gap is a STEP on the spacing scale rather than a number, which is what
11
+ * makes a density setting reach it: every step is `calc(Npx * var(--density))`
12
+ * in the token layer, so a compact reader gets a compact page without a single
13
+ * component knowing that density exists.
14
+ *
15
+ * WHAT THEY ARE NOT. They are not a style prop, and they are not a grid
16
+ * system. There is no `padding`, no `margin` and no colour here, because a
17
+ * component that takes those stops being a layout and starts being a second
18
+ * way to write CSS, with none of the review a stylesheet gets.
19
+ */
20
+ import type { ElementType, HTMLAttributes, ReactNode } from 'react';
21
+ /**
22
+ * A step on the spacing scale, never a number of pixels.
23
+ *
24
+ * The union is what stops `gap={7.5}` and `gap={300}`: a value off the scale
25
+ * is the whole defect these primitives exist to remove.
26
+ */
27
+ export type SpacingStep = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;
28
+ /** Cross-axis placement, in the words a reader of the markup can check. */
29
+ export type LayoutAlign = 'start' | 'center' | 'end' | 'baseline' | 'stretch';
30
+ /** Main-axis placement. */
31
+ export type LayoutJustify = 'start' | 'center' | 'end' | 'between' | 'around';
32
+ /**
33
+ * What both flex primitives take.
34
+ *
35
+ * Exported under both names, as every other component in the package exports
36
+ * the props it takes: a screen that wraps a Stack in a component of its own
37
+ * has to be able to name what it is passing on.
38
+ */
39
+ export interface StackProps extends HTMLAttributes<HTMLElement> {
40
+ /** The gap between children, as a spacing step. */
41
+ gap?: SpacingStep | undefined;
42
+ align?: LayoutAlign | undefined;
43
+ justify?: LayoutJustify | undefined;
44
+ /** Lets the children wrap onto another line. */
45
+ wrap?: boolean | undefined;
46
+ /** The element to draw. A div by default; a `ul`, a `header`, a `form`. */
47
+ as?: ElementType | undefined;
48
+ children?: ReactNode;
49
+ }
50
+ /** An Inline takes the same props; only the axis and the default align differ. */
51
+ export type InlineProps = StackProps;
52
+ /**
53
+ * A vertical run of children with one gap between them.
54
+ *
55
+ * `min-width: 0` is part of the primitive rather than something each caller
56
+ * remembers: a flex child's minimum size is its content, so one long token in
57
+ * one row pushes the whole column wider than its parent and the page grows a
58
+ * horizontal scrollbar nobody asked for.
59
+ */
60
+ export declare function Stack({ gap, align, justify, wrap, as: Tag, className, children, ...rest }: StackProps): import("react/jsx-runtime").JSX.Element;
61
+ /**
62
+ * A horizontal run of children, centred on the cross axis.
63
+ *
64
+ * Centred by default because that is what a row of controls, chips and labels
65
+ * wants; a row whose items are different heights and must line up at the top
66
+ * passes `align="start"`.
67
+ */
68
+ export declare function Inline({ gap, align, justify, wrap, as: Tag, className, children, ...rest }: StackProps): import("react/jsx-runtime").JSX.Element;
69
+ export type SpacerProps = HTMLAttributes<HTMLSpanElement>;
70
+ /**
71
+ * The flexible space that pushes what follows it to the far end of a row.
72
+ *
73
+ * DECORATION, so it is hidden from assistive technology: it holds no content,
74
+ * and an empty element in the accessibility tree is one more thing to walk
75
+ * past. A row that wants its trailing group pushed over uses this rather than
76
+ * `margin-left: auto` on a child, because the child then carries a rule about
77
+ * where it happens to sit in one particular row.
78
+ */
79
+ export declare function Spacer({ className, ...rest }: SpacerProps): import("react/jsx-runtime").JSX.Element;
80
+ /**
81
+ * The smallest column a card may be drawn at, as a named step.
82
+ *
83
+ * Three steps, taken from the three the dashboard measured its own cards at:
84
+ * `sm` for a stat tile, `md` for a card with a sentence in it, `lg` for one
85
+ * holding a table or a chart.
86
+ */
87
+ export type AutoGridMin = 'sm' | 'md' | 'lg';
88
+ export interface AutoGridProps extends HTMLAttributes<HTMLDivElement> {
89
+ /** The narrowest a track may be before the row drops a column. */
90
+ min?: AutoGridMin | undefined;
91
+ gap?: SpacingStep | undefined;
92
+ children?: ReactNode;
93
+ }
94
+ /**
95
+ * Cards laid out at a minimum readable width, wrapping without a breakpoint.
96
+ *
97
+ * `auto-fill` with `minmax(min(step, 100%), 1fr)` is the whole of it. The
98
+ * inner `min()` is what stops the track being wider than the grid itself on a
99
+ * narrow screen, which is how a card grid gives a phone a horizontal
100
+ * scrollbar; `auto-fill` rather than `auto-fit` is what keeps a row that is
101
+ * short of a full set of cards drawing cards at the width the full row would
102
+ * give them, instead of stretching them over the collapsed tracks.
103
+ */
104
+ export declare function AutoGrid({ min, gap, className, children, ...rest }: AutoGridProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './Layout.css';
2
+ export { AutoGrid, Inline, Spacer, Stack } from './Layout.js';
3
+ export type { AutoGridMin, AutoGridProps, InlineProps, LayoutAlign, LayoutJustify, SpacerProps, SpacingStep, StackProps, } from './Layout.js';
@@ -0,0 +1,2 @@
1
+ export { AutoGrid, Inline, Spacer, Stack } from '../chunk-W4ENKCXJ.js';
2
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,171 @@
1
+ /*
2
+ * Stack, Inline, Spacer and AutoGrid.
3
+ *
4
+ * The gap is one custom property with a token default, so a caller that passes
5
+ * no step still gets a value off the scale rather than the browser's zero, and
6
+ * the alignment classes are shared by both flex primitives: an align is an
7
+ * align whichever axis it is read on.
8
+ */
9
+
10
+ .crewlet-stack,
11
+ .crewlet-inline {
12
+ display: flex;
13
+ --crewlet-layout-gap: var(--spacing-2);
14
+ gap: var(--crewlet-layout-gap);
15
+ /* A flex child's minimum size is its content. Without this one long
16
+ identifier in one row widens the whole column past its parent. */
17
+ min-width: 0;
18
+ }
19
+
20
+ .crewlet-stack {
21
+ flex-direction: column;
22
+ }
23
+
24
+ .crewlet-inline {
25
+ flex-direction: row;
26
+ }
27
+
28
+ /*
29
+ * A GRID OF CARDS KEEPS ITS TRACKS. `auto-fill` lays down every track the row
30
+ * has room for and leaves the empty ones empty; `auto-fit`, which this was,
31
+ * COLLAPSES them, so the last row of a list, and every list that is short of a
32
+ * full row, stretches its cards across the whole width. One seat in a company
33
+ * drew a single card 1109px wide where its neighbours in a full row are 365.
34
+ * The inner min() is what keeps a track from being wider than the grid on a
35
+ * narrow screen, which is how a card row gives a phone a sideways scroll.
36
+ *
37
+ * The three track minimums are component variables rather than tokens: the
38
+ * token layer has no grid-track family, and a card's narrowest readable column
39
+ * is a property of the card rather than of the scale. An application that
40
+ * needs a fourth step sets --crewlet-auto-grid-min on its own wrapper.
41
+ *
42
+ * DECLARED BEFORE THE GAP CLASSES, and that order is load-bearing: a container
43
+ * and a --gap-N modifier are both one class, so the later rule in this file
44
+ * wins. Below them, `<AutoGrid gap={3}>` drew its own 16px default and the
45
+ * caller's step did nothing at all.
46
+ */
47
+ .crewlet-auto-grid {
48
+ display: grid;
49
+ --crewlet-layout-gap: var(--spacing-4);
50
+ --crewlet-auto-grid-min: 260px;
51
+ gap: var(--crewlet-layout-gap);
52
+ grid-template-columns: repeat(auto-fill, minmax(min(var(--crewlet-auto-grid-min), 100%), 1fr));
53
+ min-width: 0;
54
+ }
55
+
56
+ .crewlet-auto-grid--sm {
57
+ --crewlet-auto-grid-min: 180px;
58
+ }
59
+
60
+ .crewlet-auto-grid--md {
61
+ --crewlet-auto-grid-min: 260px;
62
+ }
63
+
64
+ .crewlet-auto-grid--lg {
65
+ --crewlet-auto-grid-min: 360px;
66
+ }
67
+
68
+ /*
69
+ * One gap class per step on the scale, shared by all three containers: a gap
70
+ * is the same distance whichever direction the children run in. Written out
71
+ * rather than composed in JavaScript so every token name a component can read
72
+ * appears literally in a stylesheet, which is what the custom property check
73
+ * verifies against the tokens the build emits.
74
+ */
75
+ .crewlet-layout--gap-0 {
76
+ --crewlet-layout-gap: var(--spacing-0);
77
+ }
78
+
79
+ .crewlet-layout--gap-1 {
80
+ --crewlet-layout-gap: var(--spacing-1);
81
+ }
82
+
83
+ .crewlet-layout--gap-2 {
84
+ --crewlet-layout-gap: var(--spacing-2);
85
+ }
86
+
87
+ .crewlet-layout--gap-3 {
88
+ --crewlet-layout-gap: var(--spacing-3);
89
+ }
90
+
91
+ .crewlet-layout--gap-4 {
92
+ --crewlet-layout-gap: var(--spacing-4);
93
+ }
94
+
95
+ .crewlet-layout--gap-5 {
96
+ --crewlet-layout-gap: var(--spacing-5);
97
+ }
98
+
99
+ .crewlet-layout--gap-6 {
100
+ --crewlet-layout-gap: var(--spacing-6);
101
+ }
102
+
103
+ .crewlet-layout--gap-7 {
104
+ --crewlet-layout-gap: var(--spacing-7);
105
+ }
106
+
107
+ .crewlet-layout--gap-8 {
108
+ --crewlet-layout-gap: var(--spacing-8);
109
+ }
110
+
111
+ .crewlet-layout--gap-9 {
112
+ --crewlet-layout-gap: var(--spacing-9);
113
+ }
114
+
115
+ .crewlet-layout--gap-10 {
116
+ --crewlet-layout-gap: var(--spacing-10);
117
+ }
118
+
119
+ .crewlet-layout--gap-11 {
120
+ --crewlet-layout-gap: var(--spacing-11);
121
+ }
122
+
123
+ .crewlet-layout--align-start {
124
+ align-items: flex-start;
125
+ }
126
+
127
+ .crewlet-layout--align-center {
128
+ align-items: center;
129
+ }
130
+
131
+ .crewlet-layout--align-end {
132
+ align-items: flex-end;
133
+ }
134
+
135
+ .crewlet-layout--align-baseline {
136
+ align-items: baseline;
137
+ }
138
+
139
+ .crewlet-layout--align-stretch {
140
+ align-items: stretch;
141
+ }
142
+
143
+ .crewlet-layout--justify-start {
144
+ justify-content: flex-start;
145
+ }
146
+
147
+ .crewlet-layout--justify-center {
148
+ justify-content: center;
149
+ }
150
+
151
+ .crewlet-layout--justify-end {
152
+ justify-content: flex-end;
153
+ }
154
+
155
+ .crewlet-layout--justify-between {
156
+ justify-content: space-between;
157
+ }
158
+
159
+ .crewlet-layout--justify-around {
160
+ justify-content: space-around;
161
+ }
162
+
163
+ .crewlet-layout--wrap {
164
+ flex-wrap: wrap;
165
+ }
166
+
167
+ .crewlet-spacer {
168
+ flex: 1 1 auto;
169
+ min-width: 0;
170
+ }
171
+
@@ -0,0 +1,45 @@
1
+ import { type AnchorHTMLAttributes, type ReactNode } from 'react';
2
+ export type LinkVariant =
3
+ /** A navigation: the accent ink, underlined on hover. */
4
+ 'default'
5
+ /** An identity a reader clicks through to: neutral ink, underlined on hover. */
6
+ | 'subtle';
7
+ export type LinkSize = 'body' | 'caption';
8
+ export interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
9
+ variant?: LinkVariant | undefined;
10
+ size?: LinkSize | undefined;
11
+ /**
12
+ * Leaves the application. Opens a tab, withholds the referrer and the
13
+ * opener, draws the mark that says so, and reads the sentence below.
14
+ */
15
+ external?: boolean | undefined;
16
+ /** Read after the link's own words when `external`. */
17
+ newTabLabel?: string | undefined;
18
+ /**
19
+ * A whole row is the target. It fills its line, draws no underline, and the
20
+ * focus ring is drawn inside the row rather than around the words.
21
+ */
22
+ block?: boolean | undefined;
23
+ /**
24
+ * Render the single child element with these classes instead of an anchor,
25
+ * to put this look on a router's own Link while keeping its navigation.
26
+ */
27
+ asChild?: boolean | undefined;
28
+ children?: ReactNode;
29
+ }
30
+ /**
31
+ * A link that reads as one.
32
+ *
33
+ * WHY IT IS NOT A `Text` WITH A COLOUR. The registers used to be utility
34
+ * classes, and a caption-sized link spelled with the caption class took the
35
+ * caption's quiet ink, which won over the anchor rule: four real navigations
36
+ * rendered as dim static micro-text that a reader could only find by hovering.
37
+ * A link is a different thing from a piece of text, so it is a different
38
+ * component, and `size="caption"` sets the caption's SIZE without its ink.
39
+ *
40
+ * `subtle` is for a link whose words are an identity rather than an
41
+ * instruction, a seat's name in a row, say. It is still underlined on hover
42
+ * and still takes the focus ring, because a link a reader cannot find is not
43
+ * quieter, it is hidden.
44
+ */
45
+ export declare const Link: import("react").ForwardRefExoticComponent<LinkProps & import("react").RefAttributes<HTMLAnchorElement>>;