@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,434 @@
1
+ /*
2
+ * The control that adds a child (AddPill.tsx).
3
+ *
4
+ * TWO SIZES PER THING: what is DRAWN and what is HIT. The console org chart
5
+ * draws this at about a third of a node's height, which is half of what a
6
+ * pointer target is allowed to be, and the drawing is the point: a chart at
7
+ * rest is cards and branches with one small mark on each branch, not a row of
8
+ * buttons. So every control here is the target's own size and transparent, and
9
+ * the pill and the disc are drawn inside it. The proportions are the console
10
+ * chart's, taken up by the ratio between its node's height and this package's.
11
+ *
12
+ * TWO STEPS, because one gesture serves two surfaces. On a branch the drawing
13
+ * is the disc and the target is grown past it (`sm`); in a table row there is
14
+ * a control step to fill and the drawing IS the target (`md`), which is the
15
+ * pill the console's own table row draws. Both are the same state machine, the
16
+ * same spring and the same ink: it was two components once, and they disagreed
17
+ * about the size, the ground, the border's alpha and whether the gesture
18
+ * animated at all.
19
+ *
20
+ * THE STEPS ARE WRITTEN OUT PER SIZE rather than held in a variable of this
21
+ * component's own. A custom property is a value no suite outside a browser can
22
+ * resolve, and every measurement here is one a suite has to be able to take:
23
+ * written as a variable, the rules below measured zero in the suite that is
24
+ * supposed to catch them being wrong.
25
+ *
26
+ * THE ADD IS GREEN, and the green is the node ramp's. The console chart draws
27
+ * this control in one hue and nothing else on the chart in it, which is what
28
+ * makes "the green plus" a thing a reader can be told to press. Its three
29
+ * alphas land on this package's own derived steps almost exactly: its pill
30
+ * edge is the hue at 0.4 and `-line` is 0.38, its dividers 0.15 against a
31
+ * `-halo` of 0.16, and its hovered half 0.12, which is `-fill`.
32
+ *
33
+ * WHAT IS QUIET IS THE GLYPH, NEVER THE GROUND. The disc and the pill carry a
34
+ * ground of their own and it MASKS the branch they sit on: faded, the line
35
+ * runs straight through the plus. So the resting step is the GLYPH's, and it
36
+ * is one step for the plus and for the three choices alike, measured at 3:1 or
37
+ * better on both card grounds and on the page's, in both themes, because these
38
+ * are buttons and they are the only ones that add a child. The console chart
39
+ * draws its own choices at 0.6, which measures 2.51:1 on the light theme's
40
+ * node ground and 3.07 on the dark one: on the floor where it is not under it,
41
+ * for the one control a reader is told to press.
42
+ */
43
+
44
+ .crewlet-add-pill {
45
+ /* Where the pill grows from: over the mark, or beside it. See the keyframes. */
46
+ --crewlet-add-pill-origin: translate(-50%, -50%);
47
+
48
+ position: relative;
49
+ display: inline-flex;
50
+ align-items: center;
51
+ justify-content: center;
52
+ min-height: var(--size-target-min);
53
+ }
54
+
55
+ .crewlet-add-pill[data-size='md'] {
56
+ min-height: var(--size-control-sm);
57
+ }
58
+
59
+ /* ---- the mark, which is what a resting chart draws --------------------- */
60
+
61
+ .crewlet-add-pill__mark {
62
+ display: inline-flex;
63
+ align-items: center;
64
+ justify-content: center;
65
+ width: var(--size-target-min);
66
+ height: var(--size-target-min);
67
+ padding: 0;
68
+ color: var(--color-node-green);
69
+ background: none;
70
+ border: 0;
71
+ border-radius: var(--radius-circle);
72
+ cursor: pointer;
73
+ }
74
+
75
+ .crewlet-add-pill[data-size='md'] .crewlet-add-pill__mark {
76
+ width: var(--size-control-sm);
77
+ height: var(--size-control-sm);
78
+ }
79
+
80
+ /*
81
+ * THE DISC IS DRAWN, NOT THE BUTTON. A ground of its own, so the branch the
82
+ * mark sits on stops at its edge instead of running through the plus; a third
83
+ * of a node's height across, which is the console chart's own proportion.
84
+ *
85
+ * AND THE GROUND IS THE NODE'S, NOT THE PAGE'S. The console chart draws this
86
+ * on a step of its own, one notch off the card it hangs under and well clear
87
+ * of the page behind it, so the control reads as belonging to the node rather
88
+ * than as a hole punched in the chart. Written as the page's ground plus the
89
+ * card's own translucent step, in one declaration, which is exactly what a
90
+ * node is painted with: the two are the same grey wherever the chart is
91
+ * scrolled to, and the pair is OPAQUE, which the card's step alone is not.
92
+ * The resting hairline and the 150ms it fades over are that chart's as well.
93
+ *
94
+ * FULLY OPAQUE, ALWAYS. It used to fade with the rest of the control at rest,
95
+ * and a mask at a little over half opacity is not a mask: the branch was drawn
96
+ * straight through the plus on every node of a resting chart.
97
+ */
98
+ .crewlet-add-pill__disc {
99
+ position: absolute;
100
+ width: var(--spacing-4);
101
+ height: var(--spacing-4);
102
+ background-color: var(--color-surface-background);
103
+ background-image: linear-gradient(var(--color-surface-subtle), var(--color-surface-subtle));
104
+ border: 1px solid var(--color-border-default);
105
+ border-radius: var(--radius-circle);
106
+ transition:
107
+ background-color var(--motion-duration-base) var(--motion-easing-default),
108
+ border-color var(--motion-duration-base) var(--motion-easing-default);
109
+ }
110
+
111
+ /* A row has no branch to mask, so there is no disc and no boundary either:
112
+ the plus stands on the row's own ground, at the row's own control step. */
113
+ .crewlet-add-pill[data-size='md'] .crewlet-add-pill__disc {
114
+ width: var(--size-control-sm);
115
+ height: var(--size-control-sm);
116
+ background-color: transparent;
117
+ background-image: none;
118
+ border-color: transparent;
119
+ }
120
+
121
+ .crewlet-add-pill__mark:hover .crewlet-add-pill__disc,
122
+ .crewlet-add-pill__mark:focus-visible .crewlet-add-pill__disc {
123
+ border-color: var(--color-node-green-line);
124
+ }
125
+
126
+ /*
127
+ * QUIET IS THE PLUS ITSELF. It is one mark per branch on a chart of a hundred,
128
+ * and at rest it says a child can go here and nothing more. The step is the
129
+ * highest that still reads as quiet and the lowest that still measures 3:1 on
130
+ * the page's ground and on both card grounds, in both themes, which it has to
131
+ * clear AT REST: it is a button, not a decoration.
132
+ */
133
+ .crewlet-add-pill__mark svg {
134
+ position: relative;
135
+ width: var(--spacing-4);
136
+ height: var(--spacing-4);
137
+ fill: none;
138
+ stroke: currentcolor;
139
+ stroke-width: 1.5;
140
+ stroke-linecap: round;
141
+ opacity: 0.75;
142
+ transition: opacity var(--motion-duration-fast) var(--motion-easing-default);
143
+ }
144
+
145
+ .crewlet-add-pill[data-size='md'] .crewlet-add-pill__mark svg {
146
+ width: var(--spacing-5);
147
+ height: var(--spacing-5);
148
+ }
149
+
150
+ .crewlet-add-pill__mark:hover svg,
151
+ .crewlet-add-pill__mark:focus-visible svg,
152
+ .crewlet-add-pill:focus-within .crewlet-add-pill__mark svg {
153
+ opacity: 1;
154
+ }
155
+
156
+ .crewlet-add-pill__mark:focus-visible {
157
+ outline: 2px solid var(--color-focus);
158
+ outline-offset: var(--size-focus-ring-inset-offset);
159
+ }
160
+
161
+ /* WHILE THE PILL IS OPEN the mark is what the pill grew out of, so it is not
162
+ drawn beside it and takes no press; it keeps its place, because focus comes
163
+ back to it when the pill closes. A pill that opens BESIDE the mark
164
+ (`inline`) keeps it: there it is the toggle rather than the thing that
165
+ split. */
166
+ .crewlet-add-pill[data-layout='split'][data-phase='preview'] .crewlet-add-pill__mark,
167
+ .crewlet-add-pill[data-layout='split'][data-phase='locked'] .crewlet-add-pill__mark,
168
+ .crewlet-add-pill[data-layout='split'][data-phase='closing'] .crewlet-add-pill__mark {
169
+ opacity: 0;
170
+ pointer-events: none;
171
+ }
172
+
173
+ /* ---- the pill ---------------------------------------------------------- */
174
+
175
+ /*
176
+ * CENTRED ON THE MARK, because the gesture is the mark SPLITTING: the pill
177
+ * grows out of exactly where the disc was, so the choice a reader presses is
178
+ * within a few pixels of what they pointed at.
179
+ *
180
+ * ON THE DISC'S OWN GROUND, for the reason the disc has one: the pill hangs on
181
+ * the branch its choices add a child to, and a translucent ground would have
182
+ * that branch running through the three marks a reader is choosing between.
183
+ */
184
+ .crewlet-add-pill__sections {
185
+ display: flex;
186
+ height: var(--spacing-4);
187
+ background-color: var(--color-surface-background);
188
+ background-image: linear-gradient(var(--color-surface-subtle), var(--color-surface-subtle));
189
+ border: 1px solid var(--color-node-green-line);
190
+ border-radius: var(--radius-pill);
191
+ transform-origin: center;
192
+ animation: crewlet-add-pill-open var(--motion-duration-moderate) var(--motion-easing-spring);
193
+ }
194
+
195
+ .crewlet-add-pill[data-size='md'] .crewlet-add-pill__sections {
196
+ height: var(--size-control-sm);
197
+ }
198
+
199
+ .crewlet-add-pill[data-layout='split'] .crewlet-add-pill__sections {
200
+ position: absolute;
201
+ top: 50%;
202
+ left: 50%;
203
+ transform: var(--crewlet-add-pill-origin);
204
+ }
205
+
206
+ /*
207
+ * OPENING BESIDE THE MARK, for a row that has the width to spare. The pill is
208
+ * in the flow after the toggle rather than over it, so the row's own controls
209
+ * are not covered and the toggle stays where the pointer left it.
210
+ */
211
+ .crewlet-add-pill[data-layout='inline'] {
212
+ --crewlet-add-pill-origin: translate(0, 0);
213
+
214
+ gap: var(--spacing-1);
215
+ }
216
+
217
+ .crewlet-add-pill[data-layout='inline'] .crewlet-add-pill__sections {
218
+ transform-origin: left center;
219
+ }
220
+
221
+ /*
222
+ * THE CLOSE IS THE OPEN RUN BACKWARDS, and the easing is the open's own curve
223
+ * inverted: the pill pulls in past its resting width and settles, so closing
224
+ * reads as a recoil rather than as a surface being switched off. Written out
225
+ * rather than taken from a token because the package publishes the spring and
226
+ * not its inverse, and an easing that is not the exact mirror of
227
+ * `--motion-easing-spring` is a close that does not match its own open.
228
+ */
229
+ .crewlet-add-pill[data-phase='closing'] .crewlet-add-pill__sections {
230
+ pointer-events: none;
231
+ animation: crewlet-add-pill-close var(--motion-duration-moderate) cubic-bezier(0.36, 0, 0.66, -0.56)
232
+ forwards;
233
+ }
234
+
235
+ @keyframes crewlet-add-pill-open {
236
+ from {
237
+ opacity: 0.6;
238
+ transform: var(--crewlet-add-pill-origin) scaleX(0.22);
239
+ }
240
+
241
+ to {
242
+ opacity: 1;
243
+ transform: var(--crewlet-add-pill-origin) scaleX(1);
244
+ }
245
+ }
246
+
247
+ @keyframes crewlet-add-pill-close {
248
+ from {
249
+ opacity: 1;
250
+ transform: var(--crewlet-add-pill-origin) scaleX(1);
251
+ }
252
+
253
+ to {
254
+ opacity: 0.6;
255
+ transform: var(--crewlet-add-pill-origin) scaleX(0.22);
256
+ }
257
+ }
258
+
259
+ /*
260
+ * A SECTION IS A POINTER TARGET WEARING A SLICE OF THE PILL. At the branch's
261
+ * step the pill is half a target tall, so the button is grown past it, top and
262
+ * bottom, into the branch's own strip: what is drawn is the console chart's
263
+ * pill and what is pressed clears the 24px floor at every density. At the
264
+ * row's step the two are the same number and the margin is nothing.
265
+ *
266
+ * AND THE SLICE IS WHAT IS PAINTED, not the target. The overhang is PADDING
267
+ * rather than bare height, and the ground is clipped to the content box, so a
268
+ * hovered choice tints the pill and stops at its edges. Painted over the whole
269
+ * button it was a square of green standing four pixels proud of the pill top
270
+ * and bottom, over the branch behind it: a blob on the one gesture that is
271
+ * supposed to read as one pill splitting into three. The rounding follows the
272
+ * content box for the same reason, so the outer choices keep the pill's own
273
+ * ends rather than the target's.
274
+ */
275
+ .crewlet-add-pill__section {
276
+ display: inline-flex;
277
+ flex: none;
278
+ align-items: center;
279
+ justify-content: center;
280
+ width: var(--size-target-min);
281
+ height: var(--size-target-min);
282
+ margin: calc((var(--spacing-4) - var(--size-target-min)) / 2) 0;
283
+ /* The overhang, as padding: the content box is then the pill's own height. */
284
+ padding: calc((var(--size-target-min) - var(--spacing-4)) / 2) 0;
285
+ color: var(--color-node-green);
286
+ /*
287
+ * NOT THE `background` SHORTHAND. It resets `background-clip` along with
288
+ * everything else it does not name, and the clip below is what holds the
289
+ * tint to the pill: written as the shorthand plus a longhand after it, the
290
+ * declaration is honoured by a browser and DROPPED by jsdom, so the suite
291
+ * that is supposed to catch the tint bleeding measured `border-box` while
292
+ * the page painted correctly. A guard that cannot see the rule it guards is
293
+ * the whole reason these are measured rather than matched in the source.
294
+ */
295
+ background-color: transparent;
296
+ background-clip: content-box;
297
+ border: 0;
298
+ cursor: pointer;
299
+ opacity: 0.75;
300
+ transition:
301
+ opacity var(--motion-duration-fast) var(--motion-easing-default),
302
+ background-color var(--motion-duration-fast) var(--motion-easing-default);
303
+ }
304
+
305
+ /* A row's step is the target, so there is no overhang and nothing to clip. */
306
+ .crewlet-add-pill[data-size='md'] .crewlet-add-pill__section {
307
+ width: var(--size-control-sm);
308
+ height: var(--size-control-sm);
309
+ margin: 0;
310
+ padding: 0;
311
+ }
312
+
313
+ /*
314
+ * THE DIVIDER IS INSET, and it is not a boundary on a section's own box. The
315
+ * console chart draws these two lines from a sixth of the pill's height to
316
+ * five sixths of it, so they separate the choices without reaching the pill's
317
+ * own ends, where they would read as three pills rather than one split into
318
+ * three. Drawn as a `border-left` it could not be inset at all: a border is
319
+ * the length of the box it is on, and the box here is a POINTER TARGET half as
320
+ * tall again as the pill, so the line ran past the pill at both ends.
321
+ *
322
+ * AND IT TAKES NO PRESS. It stands between two choices, so a reader landing on
323
+ * the hairline would otherwise be pressing neither: that chart marks both of
324
+ * its dividers `pointer-events: none` for the same reason. The pixel it takes
325
+ * comes off nothing, because the pill's own room is reserved at four choices
326
+ * wide wherever a chart hangs one (`TreeCanvas.css`).
327
+ */
328
+ .crewlet-add-pill__divider {
329
+ flex: none;
330
+ align-self: center;
331
+ width: 1px;
332
+ height: var(--spacing-3);
333
+ background: var(--color-node-green-halo);
334
+ pointer-events: none;
335
+ }
336
+
337
+ .crewlet-add-pill[data-size='md'] .crewlet-add-pill__divider {
338
+ height: var(--spacing-5);
339
+ }
340
+
341
+ /*
342
+ * THE OUTER TWO ARE ROUNDED, of TYPE rather than of child: the reasons a
343
+ * refused choice carries are rendered after the last section (out of the flow,
344
+ * so that a refusal nobody can see never lands between two choices), and a
345
+ * dividing element now stands before each section but the first. Keyed on the
346
+ * child position, a pill whose last choice was refused drew a square right end
347
+ * inside a rounded one, and a pill with dividers drew no rounding at all.
348
+ */
349
+ .crewlet-add-pill__section:first-of-type {
350
+ border-top-left-radius: var(--radius-pill);
351
+ border-bottom-left-radius: var(--radius-pill);
352
+ }
353
+
354
+ .crewlet-add-pill__section:last-of-type {
355
+ border-top-right-radius: var(--radius-pill);
356
+ border-bottom-right-radius: var(--radius-pill);
357
+ }
358
+
359
+ .crewlet-add-pill__section:hover,
360
+ .crewlet-add-pill__section:focus-visible {
361
+ background-color: var(--color-node-green-fill);
362
+ opacity: 1;
363
+ }
364
+
365
+ .crewlet-add-pill__section:focus-visible {
366
+ outline: 2px solid var(--color-focus);
367
+ outline-offset: var(--size-focus-ring-inset-offset);
368
+ }
369
+
370
+ /* Refused rather than removed, so a reader learns the chart offers this and
371
+ why it will not do it now. */
372
+ .crewlet-add-pill__section[aria-disabled='true'] {
373
+ cursor: not-allowed;
374
+ opacity: 0.4;
375
+ }
376
+
377
+ .crewlet-add-pill__section[aria-disabled='true']:hover {
378
+ background-color: transparent;
379
+ opacity: 0.4;
380
+ }
381
+
382
+ /*
383
+ * A CHOICE IS ONE INK, and its mark takes that ink whatever it arrived
384
+ * painted in. A glyph inherits on its own, but a brand mark carries its own
385
+ * fill, and on a pill whose whole point is that it is drawn in ONE hue that is
386
+ * the one choice of three in somebody else's colour: measured, the middle
387
+ * section of every pill in the chart was the Crewlet figure's purple between
388
+ * two green marks. The console chart puts a hue-rotate filter on that same
389
+ * mark for the same reason. Stated as the section's own rule rather than asked
390
+ * of each caller, because the pill is what decides it is drawn in one colour.
391
+ */
392
+ .crewlet-add-pill__section svg {
393
+ width: var(--spacing-3);
394
+ height: var(--spacing-3);
395
+ }
396
+
397
+ .crewlet-add-pill__section svg,
398
+ .crewlet-add-pill__section svg g,
399
+ .crewlet-add-pill__section svg path {
400
+ /* THE INK AS WELL AS THE FILL. A mark may publish its own hue as a `color`
401
+ on its own root (the Crewlet figure does, from the brand token), and
402
+ `currentcolor` under that root then resolves to THAT: the fill was
403
+ overridden and landed on the same purple it started from. */
404
+ color: inherit;
405
+ fill: currentcolor;
406
+ }
407
+
408
+ .crewlet-add-pill[data-size='md'] .crewlet-add-pill__section svg {
409
+ width: var(--spacing-4);
410
+ height: var(--spacing-4);
411
+ }
412
+
413
+ /*
414
+ * A READER WHO ASKED FOR LESS gets the same pill, open or closed. The split is
415
+ * a state change rather than an entrance under this query: every choice is
416
+ * still drawn, still in the same place, and reached by the same press.
417
+ */
418
+ @media (prefers-reduced-motion: reduce) {
419
+ .crewlet-add-pill__disc,
420
+ .crewlet-add-pill__mark svg,
421
+ .crewlet-add-pill__section {
422
+ transition: none;
423
+ }
424
+
425
+ .crewlet-add-pill__sections {
426
+ animation: none;
427
+ }
428
+
429
+ /* And a pill that is closing is closed: with no animation to play out,
430
+ holding it drawn for the length of one would be a pill that lingers. */
431
+ .crewlet-add-pill[data-phase='closing'] .crewlet-add-pill__sections {
432
+ display: none;
433
+ }
434
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Announces `text` in the mounted region.
3
+ *
4
+ * A plain function rather than a hook's closure, so a callback outside React
5
+ * (a store, a socket handler) can use the same one.
6
+ */
7
+ export declare function announce(text: string): void;
8
+ /** The announcer, for a component that would rather take it as a value. */
9
+ export declare function useAnnouncer(): (text: string) => void;
10
+ export interface AnnouncerProps {
11
+ /** Names the region for a reader browsing landmarks. */
12
+ label?: string | undefined;
13
+ }
14
+ /** The polite region itself. Mount one, in the shell. */
15
+ export declare function Announcer({ label }: AnnouncerProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { Announcer, announce, useAnnouncer } from './Announcer.js';
2
+ export type { AnnouncerProps } from './Announcer.js';
@@ -0,0 +1,3 @@
1
+ export { Announcer, announce, useAnnouncer } from '../chunk-RSAQOKH3.js';
2
+ import '../chunk-BZFWDIV6.js';
3
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,193 @@
1
+ /**
2
+ * The application frame: a rail, a top bar, and ONE scroll container.
3
+ *
4
+ * WHY THE SHELL OWNS THE GRID NOW. It used to be passive: the slots positioned
5
+ * themselves with `position: fixed` and the shell only reserved a matching
6
+ * margin, so every consumer repeated the rail's width and the bar's height as
7
+ * literals in its own stylesheet (280 and 64, in two files, in two projects),
8
+ * and a change to either meant editing four places that nothing compared. The
9
+ * grid is sized from `--size-shell-rail` and `--size-shell-topbar` here, and
10
+ * the slots simply fill their cells.
11
+ *
12
+ * THE DOCUMENT DOES NOT SCROLL. `100dvh` with `overflow: hidden` on the root,
13
+ * and one scroller inside it, which is what lets a router restore a scroll
14
+ * position per history entry: a page with three independent scrollers has
15
+ * three positions and no way to name them. A page that can also scroll as a
16
+ * whole carries the rail off the top of the window and leaves the reader with
17
+ * two scrollbars, neither obviously the one they want.
18
+ *
19
+ * THE LANDMARKS ARE REAL. The rail is an `aside`, the bar is a `header`
20
+ * OUTSIDE `main` (so it is the page's banner rather than part of the screen),
21
+ * and `main` is a focusable target for the skip link that precedes everything.
22
+ *
23
+ * NARROW IS A DIFFERENT SHAPE, NOT A SMALLER ONE. Below the shell breakpoint
24
+ * the rail is a modal drawer on the shared layer stack: it takes Escape, traps
25
+ * Tab, hands focus back to the toggle, and closes on a navigation and when the
26
+ * layout it belongs to ends. Hidden rather than merely moved off screen, too,
27
+ * because a rail translated out of view keeps every link in the tab order and
28
+ * a keyboard reader walks through a dozen stops nobody can see.
29
+ */
30
+ import { type HTMLAttributes, type MouseEventHandler, type ReactNode, type Ref } from 'react';
31
+ /** What the shell tells the components inside it. */
32
+ interface AppShellContextValue {
33
+ /** Whether the layout is below the shell breakpoint. */
34
+ narrow: boolean;
35
+ drawerOpen: boolean;
36
+ openDrawer: () => void;
37
+ closeDrawer: () => void;
38
+ toggleDrawer: () => void;
39
+ /** The one scroll container, for a router restoring a position. */
40
+ scroller: HTMLElement | null;
41
+ railId: string;
42
+ toggleLabel: string;
43
+ hasRail: boolean;
44
+ }
45
+ export type { AppShellContextValue };
46
+ /**
47
+ * The shell around this component.
48
+ *
49
+ * Throws outside one, rather than answering with a shell-shaped default: a
50
+ * drawer control that silently does nothing is a control nobody can debug.
51
+ */
52
+ export declare function useAppShell(): AppShellContextValue;
53
+ export interface AppShellProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
54
+ /**
55
+ * The rail. Normally an `<AppShell.Rail>`; the slot keeps its 0.2.0 name
56
+ * because renaming it would break every consumer for nothing.
57
+ */
58
+ sidebar?: ReactNode;
59
+ /** The top bar, normally an `<AppShell.Topbar>`. It is the page's banner. */
60
+ topbar?: ReactNode;
61
+ /**
62
+ * A strip between the bar and the screen: a degraded connection, a missing
63
+ * configuration. It is chrome rather than screen content, so it stays put
64
+ * while the screen scrolls under it.
65
+ */
66
+ banner?: ReactNode;
67
+ /** A strip under the screen, in the content column and outside `main`. */
68
+ footer?: ReactNode;
69
+ /** The id of the `main` element, which the skip link points at. */
70
+ mainId?: string | undefined;
71
+ /** The scroll container itself, for a router restoring a position. */
72
+ mainRef?: Ref<HTMLElement> | undefined;
73
+ /**
74
+ * Gives the screen the whole height left under the bar, as a flex column,
75
+ * for a canvas or a split view that draws to the bottom of the window
76
+ * instead of scrolling.
77
+ */
78
+ fill?: boolean | undefined;
79
+ /**
80
+ * Any value that changes when the reader goes somewhere. The drawer closes
81
+ * when it does: a drawer left open over the screen you have just navigated
82
+ * to is the classic mobile navigation defect.
83
+ */
84
+ navigationKey?: string | number | undefined;
85
+ /** Names the control that opens the rail, and the drawer it opens. */
86
+ toggleLabel?: string | undefined;
87
+ /** The link that precedes everything, for a keyboard reader. */
88
+ skipLabel?: string | undefined;
89
+ children?: ReactNode;
90
+ }
91
+ export declare function AppShell({ sidebar, topbar, banner, footer, mainId, mainRef, fill, navigationKey, toggleLabel, skipLabel, className, style, children, ...rest }: AppShellProps): import("react/jsx-runtime").JSX.Element;
92
+ export declare namespace AppShell {
93
+ var Rail: typeof AppShellRail;
94
+ var RailRow: typeof AppShellRailRow;
95
+ var Topbar: typeof AppShellTopbar;
96
+ var Toggle: typeof AppShellToggle;
97
+ }
98
+ export interface AppShellRailProps {
99
+ /** The head of the rail, drawn at the top bar's own height. */
100
+ header?: ReactNode;
101
+ /**
102
+ * The foot: what the engine is doing, the theme and density controls. An
103
+ * `<AppShell.RailRow>` puts a line there on the rail's own insets, so its
104
+ * mark lands on the line every nav glyph above it sits on.
105
+ */
106
+ footer?: ReactNode;
107
+ className?: string | undefined;
108
+ children?: ReactNode;
109
+ }
110
+ /** The rail's three regions: a head, a scrolling middle, and a foot. */
111
+ export declare function AppShellRail({ header, footer, className, children }: AppShellRailProps): import("react/jsx-runtime").JSX.Element;
112
+ /** What a row in the rail's foot holds, whether or not it is a control. */
113
+ interface RailRowContent {
114
+ /**
115
+ * A mark at the head of the row: a status dot, a glyph. Decoration, because
116
+ * the words beside it say the same thing; it is here so it lands on the same
117
+ * vertical line as every nav glyph above it.
118
+ */
119
+ icon?: ReactNode;
120
+ /** A value at the end of the row: a count, a tag, a time. */
121
+ trailing?: ReactNode;
122
+ className?: string | undefined;
123
+ /** What the row says. */
124
+ children?: ReactNode;
125
+ }
126
+ /** A row the rail states and nothing presses. */
127
+ export interface StaticRailRowProps extends RailRowContent {
128
+ onClick?: undefined;
129
+ label?: undefined;
130
+ }
131
+ /** A row that opens something: the engine panel, an account menu. */
132
+ export interface ActionRailRowProps extends RailRowContent {
133
+ onClick: MouseEventHandler<HTMLButtonElement>;
134
+ /**
135
+ * Names the control where its own words are not a name: "engine connected"
136
+ * names a state rather than what pressing it does.
137
+ */
138
+ label?: string | undefined;
139
+ }
140
+ /**
141
+ * A row in the rail's foot.
142
+ *
143
+ * `label` is refused without `onClick` by the type rather than ignored at
144
+ * runtime: `aria-label` on an element with no role is dropped by assistive
145
+ * technology, so a name passed to a row nothing presses is a name nobody is
146
+ * ever told, and a silent no-op is the shape a caller cannot debug.
147
+ */
148
+ export type AppShellRailRowProps = StaticRailRowProps | ActionRailRowProps;
149
+ /**
150
+ * A row in the rail's foot, on the rail's own two insets.
151
+ *
152
+ * WHY IT IS A COMPONENT RATHER THAN A BUTTON THE CALLER DROPS IN. The rail's
153
+ * geometry is in two parts: the gutter insets the rail, which is where a row's
154
+ * background begins, and the row pad insets the content inside the row. A
155
+ * control brings its own inset and lands its mark a few pixels off the line
156
+ * every nav glyph above it sits on, which is the one thing a reader notices
157
+ * about a rail without being able to say what it is.
158
+ *
159
+ * AND THE FOOT CLAIMS WHAT LANDS THERE ANYWAY, because an application with a
160
+ * status button of its own reaches for that one whatever this package offers:
161
+ * the stylesheet gives a direct child of the foot the same row this draws, so
162
+ * a dropped-in control is a row in the rail rather than a control sitting on a
163
+ * toolbar's inset. This is still the one to reach for, because it is also the
164
+ * thing that decides whether the row is a control at all.
165
+ */
166
+ export declare function AppShellRailRow({ icon, trailing, onClick, label, className, children }: AppShellRailRowProps): import("react/jsx-runtime").JSX.Element;
167
+ export interface AppShellToggleProps {
168
+ className?: string | undefined;
169
+ }
170
+ /**
171
+ * The control that opens the rail as a drawer.
172
+ *
173
+ * Drawn at every width and HIDDEN BY THE STYLESHEET above the breakpoint,
174
+ * rather than removed by a second copy of the width rule in JavaScript. It
175
+ * used to be drawn at every width and to work at every width, and pressing it
176
+ * on a desktop put an unstyled veil into the shell's own grid, which took the
177
+ * rail's column and pushed the whole application into the next row.
178
+ */
179
+ export declare function AppShellToggle({ className }: AppShellToggleProps): import("react/jsx-runtime").JSX.Element | null;
180
+ export interface AppShellTopbarProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
181
+ /**
182
+ * The screen's name. It is the page's `h1`, which is why everything below
183
+ * it starts at level 2.
184
+ */
185
+ title?: ReactNode;
186
+ /** Names the heading, for anything that points at it. */
187
+ titleId?: string | undefined;
188
+ /** What can be done from the chrome: search, an account menu. */
189
+ actions?: ReactNode;
190
+ children?: ReactNode;
191
+ }
192
+ /** The page's banner: the drawer toggle, the screen's name, and the actions. */
193
+ export declare function AppShellTopbar({ title, titleId, actions, className, children, ...rest }: AppShellTopbarProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './AppShell.css';
2
+ export { AppShell, AppShellRail, AppShellRailRow, AppShellToggle, AppShellTopbar, useAppShell } from './AppShell.js';
3
+ export type { ActionRailRowProps, AppShellContextValue, AppShellProps, AppShellRailProps, AppShellRailRowProps, AppShellToggleProps, AppShellTopbarProps, StaticRailRowProps, } from './AppShell.js';
@@ -0,0 +1,6 @@
1
+ export { AppShell, AppShellRail, AppShellRailRow, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-MNAXYY3R.js';
2
+ import '../chunk-7RPGY3JE.js';
3
+ import '../chunk-ITHXJHBB.js';
4
+ import '../chunk-F27EPQ7D.js';
5
+ import '../chunk-BZFWDIV6.js';
6
+ import '../chunk-ODEQTPFM.js';