@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,484 @@
1
+ /*
2
+ * The modal surface: the veil, the frame, and the three bands inside it.
3
+ *
4
+ * ONE STYLESHEET FOR BOTH VARIANTS, because a dialog and a side sheet differ
5
+ * in where they are pinned and in how tight their head and foot are, and in
6
+ * nothing else. Written as two, the head of one drifts from the head of the
7
+ * other and the two stop announcing the same way; here the variant changes the
8
+ * frame's box and the bands' padding, and leaves every other rule alone.
9
+ *
10
+ * THE SURFACE IS THE PANEL STEP, NOT THE ELEVATED ONE, and the veil is the
11
+ * page faded rather than the page darkened. Both are the same decision: a
12
+ * surface here is a sheet of the product's own paper laid over the page, not a
13
+ * lit box in a dark room. A dialog opens where the eye already is, one step
14
+ * down from the top of the window, for the same reason.
15
+ *
16
+ * The frame's widths are the only lengths declared here that are not tokens.
17
+ * They are component variables, so an application that needs a wider prompt
18
+ * sets one rather than restating the whole rule, and a reader of this file can
19
+ * see the four steps at once.
20
+ */
21
+
22
+ .crewlet-modal-overlay {
23
+ position: fixed;
24
+ inset: 0;
25
+ display: flex;
26
+ background: var(--color-surface-veil);
27
+ /*
28
+ * A light touch, because the veil is already doing most of the work. The
29
+ * page behind is meant to stay legible as context; blurred any harder it
30
+ * becomes a texture, which is a scrim with extra steps.
31
+ *
32
+ * THE STANDARD PROPERTY, AND ONLY IT. The vendor-prefixed spelling used to
33
+ * be written here by hand, after it, and the build's minifier answered by
34
+ * keeping the prefixed declaration and dropping the standard one: the
35
+ * shipped rule read `-webkit-backdrop-filter` alone, Chrome reports
36
+ * `CSS.supports('-webkit-backdrop-filter', 'blur(3px)')` as false, and the
37
+ * blur computed to `none` in every dialog and every sheet in the product
38
+ * while the source said otherwise. The bundler emits the prefix itself
39
+ * (Canvas.css writes one line and ships two), so writing the second line is
40
+ * what costs the effect. Guarded in apps/ui-tests against the BUILT
41
+ * stylesheet, because the source text here has always been correct.
42
+ */
43
+ backdrop-filter: blur(var(--blur-xs));
44
+ animation: crewlet-modal-veil-in var(--motion-duration-base) var(--motion-easing-default);
45
+ }
46
+
47
+ /* Inside a LayerHost the overlay covers the host, not the window. */
48
+ .crewlet-modal-overlay--in-host {
49
+ position: absolute;
50
+ }
51
+
52
+ /* A dialog is padded off every edge; a sheet is pinned against one. */
53
+ .crewlet-modal-overlay--dialog {
54
+ padding: var(--spacing-4);
55
+ justify-content: center;
56
+ }
57
+
58
+ .crewlet-modal-overlay--dialog.crewlet-modal-overlay--center {
59
+ align-items: center;
60
+ }
61
+
62
+ /*
63
+ * THE DEFAULT, and the one placement the engine's dashboard has. `top` puts
64
+ * the surface where the eye already is: a reader who just pressed a button is
65
+ * looking at the top half of the window, and a surface that opens in the
66
+ * middle of the screen asks them to find it. The inset is generous enough that
67
+ * the page behind stays legible as context, which is the whole reason the veil
68
+ * fades rather than darkens.
69
+ */
70
+ .crewlet-modal-overlay--dialog.crewlet-modal-overlay--top {
71
+ align-items: flex-start;
72
+ padding-top: var(--spacing-10);
73
+ }
74
+
75
+ /*
76
+ * The sheet's veil fades over the same span the sheet itself travels, so the
77
+ * two are one movement rather than a ground that lands and a panel that
78
+ * follows it. A dialog's veil keeps the shorter base step: a dialog rises
79
+ * 8px, and a ground that outlasts that motion reads as a lag.
80
+ */
81
+ .crewlet-modal-overlay--sheet {
82
+ padding: 0;
83
+ justify-content: flex-end;
84
+ align-items: stretch;
85
+ animation-duration: var(--motion-duration-slow);
86
+ }
87
+
88
+ .crewlet-modal {
89
+ --crewlet-modal-width: 480px;
90
+ --crewlet-modal-sheet-width: 560px;
91
+
92
+ display: flex;
93
+ flex-direction: column;
94
+ min-height: 0;
95
+ background: var(--color-surface-subtle);
96
+ color: var(--color-text-primary);
97
+ border: 1px solid var(--color-border-default);
98
+ box-shadow: var(--shadow-xl);
99
+ outline: none;
100
+ }
101
+
102
+ /*
103
+ * THE FORM DRAWS NO BOX. It sits between the frame and the three bands so a
104
+ * dialog can submit without being a `<form role="dialog">`, which no browser
105
+ * accepts as conformant, and `display: contents` keeps the head, the body and
106
+ * the footer as the frame's own children: every rule below still addresses
107
+ * them, and the body still scrolls inside the frame's column.
108
+ */
109
+ .crewlet-modal__form {
110
+ display: contents;
111
+ }
112
+
113
+ /*
114
+ * 100dvh, not 100vh: on a phone the browser's own chrome collapses as the page
115
+ * scrolls, and a frame measured against the larger viewport hides its own
116
+ * footer, which is where the button that closes it lives. The two insets
117
+ * subtracted are the overlay's own, top and bottom, so the frame stops exactly
118
+ * where its padding does however tall the window is.
119
+ *
120
+ * THE FRAME WITH THE CORNERS IS THE FRAME THAT CLIPS. A body with its padding
121
+ * dropped runs its content to the frame's own edge, and a table head, a code
122
+ * well or an image there is square where the frame is round: the corner is
123
+ * painted over by the first thing inside it. A sheet has no corners and does
124
+ * not clip, so nothing inside one is cut off at a rounded edge that is not
125
+ * there. Nothing that has to escape the frame is drawn inside it either: a
126
+ * menu, a listbox and a tooltip raised from a dialog all portal to a layer
127
+ * host outside it.
128
+ */
129
+ .crewlet-modal--dialog {
130
+ width: min(var(--crewlet-modal-width), 100%);
131
+ max-height: calc(100dvh - var(--spacing-10) - var(--spacing-4));
132
+ border-radius: var(--radius-xl);
133
+ overflow: hidden;
134
+ animation: crewlet-modal-rise var(--motion-duration-slow) var(--motion-easing-emphasized);
135
+ }
136
+
137
+ .crewlet-modal--sm { --crewlet-modal-width: 480px; }
138
+ .crewlet-modal--md { --crewlet-modal-width: 560px; }
139
+ .crewlet-modal--lg { --crewlet-modal-width: 720px; }
140
+ .crewlet-modal--xl { --crewlet-modal-width: 1080px; }
141
+
142
+ /*
143
+ * THE PROMPT: one question, three blocks, no chrome at all.
144
+ *
145
+ * A surface that asks "discard these changes?" is read in one glance, and
146
+ * every band around it is a thing the eye has to cross first: a rule under a
147
+ * head whose only content is the question itself, a glyph restating the
148
+ * danger the sentence states, a close control that does what the Cancel
149
+ * beside it does. It is narrower than a dialog because the question is one
150
+ * sentence and a sentence set across 560px is read twice, and it is centred
151
+ * because there is nothing behind it to stay in touch with: the prompt IS
152
+ * what the reader is doing.
153
+ *
154
+ * It is not a variant of its own. A prompt is a dialog with its bands taken
155
+ * off, so it keeps the frame, the corner, the veil and the rise, and changes
156
+ * the width, the shadow and where its title is drawn.
157
+ */
158
+ .crewlet-modal--prompt {
159
+ --crewlet-modal-width: 420px;
160
+
161
+ box-shadow: var(--shadow-2xl);
162
+ }
163
+
164
+ .crewlet-modal--prompt .crewlet-modal__body {
165
+ padding: var(--spacing-6);
166
+ }
167
+
168
+ /*
169
+ * The title, drawn INSIDE the body as its first line rather than in a band of
170
+ * its own. It still names the frame: see Modal.tsx, which links it either way.
171
+ */
172
+ .crewlet-modal__prompt-title {
173
+ margin: 0;
174
+ font-size: var(--font-size-md);
175
+ font-weight: var(--font-weight-semibold);
176
+ line-height: var(--font-line-height-tight);
177
+ color: var(--color-text-primary);
178
+ }
179
+
180
+ /*
181
+ * The actions hang off the body rather than sitting in a band: no rule above
182
+ * them and no ground of their own, because the whole surface is one block.
183
+ */
184
+ .crewlet-modal--prompt .crewlet-modal__footer {
185
+ padding: 0 var(--spacing-6) var(--spacing-6);
186
+ border-top: none;
187
+ background: none;
188
+ }
189
+
190
+ /*
191
+ * 100%, not 100dvh: the overlay already stretches the sheet to its own height,
192
+ * and inside a LayerHost that height is the host's rather than the window's. A
193
+ * sheet measured against the viewport there hangs out of the box it was drawn
194
+ * into and takes its footer with it.
195
+ */
196
+ .crewlet-modal--sheet {
197
+ /*
198
+ * WHERE THE SHEET COMES FROM, as a distance it can be flipped at: the frame
199
+ * is pinned by a logical flex property, so a document in a right-to-left
200
+ * script pins it against the other edge and has to arrive from that one.
201
+ * Nothing in this package sets a direction yet, which is exactly why the
202
+ * flip is one declaration here rather than a number buried in a keyframe.
203
+ */
204
+ --crewlet-modal-sheet-from: 100%;
205
+
206
+ width: min(var(--crewlet-modal-sheet-width), 100%);
207
+ height: 100%;
208
+ border-radius: 0;
209
+ border-block: none;
210
+ border-inline-end: none;
211
+ /*
212
+ * ITS OWN SHADOW, CAST SIDEWAYS. --shadow-xl is written for a dialog
213
+ * floating over a page and casts downward; on a frame that runs the whole
214
+ * height of the window both of its offsets fall off the screen, and the one
215
+ * edge a right-pinned sheet actually has is left with a blur tail. This one
216
+ * is cast along the inline axis, into the page the sheet covers.
217
+ */
218
+ box-shadow: var(--shadow-sheet);
219
+ animation: crewlet-modal-sheet-in var(--motion-duration-slow) var(--motion-easing-emphasized);
220
+ }
221
+
222
+ /*
223
+ * The shell's one breakpoint. Below it there is no content beside a sheet to
224
+ * keep in view, so the sheet takes the whole width and its edge goes with it.
225
+ */
226
+ @media (max-width: 900px) {
227
+ .crewlet-modal--sheet {
228
+ width: 100%;
229
+ border-inline: none;
230
+ }
231
+ }
232
+
233
+ /*
234
+ * Centred, not top-aligned. The head is one line in almost every surface, and
235
+ * on the few that carry a subtitle the glyph and the close control read as
236
+ * belonging to the pair rather than to the first line of it.
237
+ */
238
+ .crewlet-modal__header {
239
+ display: flex;
240
+ align-items: center;
241
+ gap: var(--spacing-3);
242
+ padding: var(--spacing-4);
243
+ border-bottom: 1px solid var(--color-border-default);
244
+ }
245
+
246
+ /*
247
+ * A SHEET IS COMMITTED FROM ITS HEAD, so its head is the taller band, not the
248
+ * tighter one. It stands at the shell's own top-bar height, which is what puts
249
+ * it on the line the bar behind it draws, and holds the two buttons that
250
+ * commit and abandon the form at a full control step with room around them.
251
+ *
252
+ * It used to be the tighter band, 49px with a close control alone, and the
253
+ * commit pair sat in a foot below a body that scrolled 1,764px on a seat with
254
+ * a dozen fields: the reader had to travel the whole form to reach Apply, and
255
+ * back again to read the field they were applying.
256
+ */
257
+ .crewlet-modal__header--sheet {
258
+ min-height: var(--size-shell-topbar);
259
+ padding: var(--spacing-4) var(--spacing-6);
260
+ gap: var(--spacing-4);
261
+ box-sizing: border-box;
262
+ }
263
+
264
+ /*
265
+ * The head's own actions, at the inline end. They are the surface's commit
266
+ * pair, so they are the last thing in the band and the close control, where a
267
+ * surface still draws one, sits after them.
268
+ */
269
+ .crewlet-modal__actions {
270
+ display: flex;
271
+ align-items: center;
272
+ gap: var(--spacing-2);
273
+ flex-shrink: 0;
274
+ }
275
+
276
+ /*
277
+ * The document's own ink, because the glyph is read as part of the title it
278
+ * sits beside rather than as a decoration next to it. Quietened, it made every
279
+ * surface in the product look faded at its top edge.
280
+ */
281
+ .crewlet-modal__icon {
282
+ display: inline-flex;
283
+ flex-shrink: 0;
284
+ color: var(--color-text-primary);
285
+ }
286
+
287
+ .crewlet-modal__heading {
288
+ display: flex;
289
+ flex: 1;
290
+ flex-direction: column;
291
+ gap: var(--spacing-1);
292
+ min-width: 0;
293
+ }
294
+
295
+ /*
296
+ * The title is drawn at the BODY register, one weight up, and is not a heading
297
+ * element: the dialog role announces it already, and the outline inside a
298
+ * modal starts one level below it. See Modal.tsx. A larger step here is what
299
+ * made a prompt asking one short question look like a page.
300
+ */
301
+ .crewlet-modal__title {
302
+ margin: 0;
303
+ font-size: var(--font-size-sm);
304
+ font-weight: var(--font-weight-semibold);
305
+ line-height: var(--font-line-height-tight);
306
+ color: var(--color-text-primary);
307
+ }
308
+
309
+ /*
310
+ * AFTER THE BASE RULE IT OVERRIDES, because both are one class and a tie is
311
+ * broken by source order: written above it, this set a size the base rule
312
+ * then set back, and the sheet's head kept the dialog's register while the
313
+ * source said otherwise.
314
+ *
315
+ * A sheet's title stands one step above a dialog's. A dialog's head is read
316
+ * in the same glance as the question under it; a sheet's is a bar the reader
317
+ * comes back to, over a column of fields that carry their own labels at the
318
+ * body register, and at that register it was one of them.
319
+ */
320
+ .crewlet-modal__title--sheet {
321
+ font-size: var(--font-size-md);
322
+ }
323
+
324
+ .crewlet-modal__subtitle {
325
+ margin: 0;
326
+ font-size: var(--font-size-compact);
327
+ line-height: var(--font-line-height-snug);
328
+ color: var(--color-text-secondary);
329
+ }
330
+
331
+ .crewlet-modal__close {
332
+ flex-shrink: 0;
333
+ margin: calc(var(--spacing-1) * -1);
334
+ }
335
+
336
+ .crewlet-modal__body {
337
+ flex: 1 1 auto;
338
+ min-height: 0;
339
+ padding: var(--spacing-4);
340
+ overflow-y: auto;
341
+ /*
342
+ * Declared rather than inherited. A dialog is read at a glance and sits over
343
+ * a page whose base size it should not borrow, which is how one sentence
344
+ * came out larger in one product than in another. The ink is the page's own:
345
+ * a prompt's one sentence is the thing being read, and drawn a step quieter
346
+ * it reads as a caption under a title nobody asked about.
347
+ */
348
+ font-size: var(--font-size-sm);
349
+ line-height: var(--font-line-height-normal);
350
+ color: var(--color-text-primary);
351
+ }
352
+
353
+ /*
354
+ * A sheet's body is inset on the head's own line, so a field's label starts
355
+ * where the title above it does. A dialog's tighter square would put the
356
+ * column of fields 8px closer to both edges than the bar naming them.
357
+ */
358
+ .crewlet-modal__body--sheet {
359
+ padding: var(--spacing-6);
360
+ }
361
+
362
+ .crewlet-modal__body--stacked {
363
+ display: flex;
364
+ flex-direction: column;
365
+ gap: var(--spacing-3);
366
+ }
367
+
368
+ /*
369
+ * Tighter between a sheet's own children, because they are FIELDS: each
370
+ * carries its own label above it and its own helper below, and a step meant
371
+ * to separate a paragraph from a callout reads as a gap inside the form.
372
+ */
373
+ .crewlet-modal__body--stacked.crewlet-modal__body--sheet {
374
+ gap: var(--spacing-2);
375
+ }
376
+
377
+ .crewlet-modal__body--flush {
378
+ padding: 0;
379
+ }
380
+
381
+ /*
382
+ * Paragraphs stack without the browser's own margins fighting the body
383
+ * padding, which is what left dialogs uneven at the top and the bottom. Not in
384
+ * a stacked body: there the gap between children is the stack's, and a margin
385
+ * as well would double it.
386
+ */
387
+ .crewlet-modal__body:not(.crewlet-modal__body--stacked) > p {
388
+ margin: 0 0 var(--spacing-3);
389
+ }
390
+
391
+ .crewlet-modal__body:not(.crewlet-modal__body--stacked) > p:last-child {
392
+ margin-bottom: 0;
393
+ }
394
+
395
+ /*
396
+ * OPAQUE, and on the panel's own step: the body scrolls under it, and a foot
397
+ * the content shows through is a foot whose buttons sit on whatever sentence
398
+ * happens to be behind them.
399
+ */
400
+ .crewlet-modal__footer {
401
+ display: flex;
402
+ align-items: center;
403
+ flex-wrap: wrap;
404
+ gap: var(--spacing-2);
405
+ padding: var(--spacing-3) var(--spacing-4);
406
+ border-top: 1px solid var(--color-border-default);
407
+ background: var(--color-surface-subtle);
408
+ }
409
+
410
+ /* On the sheet's own inset, so the foot's first word starts under the body's. */
411
+ .crewlet-modal__footer--sheet {
412
+ padding-inline: var(--spacing-6);
413
+ }
414
+
415
+ .crewlet-modal__footer-start {
416
+ display: flex;
417
+ align-items: center;
418
+ gap: var(--spacing-2);
419
+ min-width: 0;
420
+ margin-inline-end: auto;
421
+ font-size: var(--font-size-compact);
422
+ color: var(--color-text-tertiary);
423
+ }
424
+
425
+ /*
426
+ * The actions, and the reason the start slot carries the auto margin instead:
427
+ * with no start slot the end slot has to be pushed over itself, and a rule
428
+ * that reads "align to the end unless a sibling exists" is a rule that breaks
429
+ * the first time somebody adds one.
430
+ */
431
+ .crewlet-modal__footer-end {
432
+ display: flex;
433
+ align-items: center;
434
+ justify-content: flex-end;
435
+ flex-wrap: wrap;
436
+ gap: var(--spacing-2);
437
+ margin-inline-start: auto;
438
+ }
439
+
440
+ /*
441
+ * The message line a prompt leads with, in the body's own ink. No margin of
442
+ * its own: a prompt's body is a stacked one, so the gap between the message
443
+ * and the acknowledgement below it is the stack's, spelled once.
444
+ */
445
+ .crewlet-modal__message {
446
+ margin: 0;
447
+ line-height: var(--font-line-height-normal);
448
+ }
449
+
450
+ @keyframes crewlet-modal-veil-in {
451
+ from { opacity: 0; }
452
+ }
453
+
454
+ @keyframes crewlet-modal-rise {
455
+ from {
456
+ opacity: 0;
457
+ transform: translateY(var(--spacing-2));
458
+ }
459
+ }
460
+
461
+ /*
462
+ * A SHEET TRAVELS ITS OWN WIDTH, which is what makes the motion read as a
463
+ * sheet rather than as a box appearing beside the page: the frame starts
464
+ * wholly off screen and arrives. No opacity ramp with it, for the same
465
+ * reason. It used to move 16px and fade, and at that distance the panel did
466
+ * not arrive from anywhere, it simply turned up where it already was.
467
+ */
468
+ @keyframes crewlet-modal-sheet-in {
469
+ from {
470
+ transform: translateX(var(--crewlet-modal-sheet-from));
471
+ }
472
+ }
473
+
474
+ /*
475
+ * A surface that arrives instantly still arrives: the animation goes, and
476
+ * nothing else about the surface changes.
477
+ */
478
+ @media (prefers-reduced-motion: reduce) {
479
+ .crewlet-modal-overlay,
480
+ .crewlet-modal--dialog,
481
+ .crewlet-modal--sheet {
482
+ animation: none;
483
+ }
484
+ }
@@ -0,0 +1,28 @@
1
+ import { type ButtonHTMLAttributes } from 'react';
2
+ export interface NewItemsNoticeProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'onClick'> {
3
+ /** How many are being held back. The notice draws nothing at zero. */
4
+ count: number;
5
+ /** The singular noun: "new turn", "new phase". Pluralised with an s by default. */
6
+ noun: string;
7
+ /** Let them in. The caller owns the splice, and the scroll if there is one. */
8
+ onShow: () => void;
9
+ /** The whole sentence on the pill. */
10
+ label?: ((count: number, noun: string) => string) | undefined;
11
+ /** What a reader is told when the notice appears. */
12
+ announcement?: ((count: number, noun: string) => string) | undefined;
13
+ }
14
+ /**
15
+ * Work that finished while somebody was reading, held until they ask for it.
16
+ *
17
+ * WHY IT EXISTS AT ALL. Splicing finished rows in at the top pushes the page
18
+ * down by a card mid-sentence, which on a busy company happens every few
19
+ * seconds: the same complaint as a chat that scrolls while you are reading
20
+ * history. The list only moves when the reader says so.
21
+ *
22
+ * IT ANNOUNCES ONCE, when it appears, and not again as the count climbs. A
23
+ * reader who cannot see the pill still has to be told that work is being held;
24
+ * being told again every few seconds, while they are reading the thing they
25
+ * stayed on the page for, is the interruption this component exists to
26
+ * prevent. The number on the pill is current for whenever they reach it.
27
+ */
28
+ export declare function NewItemsNotice({ count, noun, onShow, label, announcement, className, ...rest }: NewItemsNoticeProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,3 @@
1
+ import './NewItemsNotice.css';
2
+ export { NewItemsNotice } from './NewItemsNotice.js';
3
+ export type { NewItemsNoticeProps } from './NewItemsNotice.js';
@@ -0,0 +1,4 @@
1
+ export { NewItemsNotice } from '../chunk-YLYOWZ4V.js';
2
+ import '../chunk-RSAQOKH3.js';
3
+ import '../chunk-BZFWDIV6.js';
4
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,60 @@
1
+ /*
2
+ * The pill that holds finished rows back.
3
+ *
4
+ * FULL WIDTH AND IN THE FLOW, where the rows would have gone. A floating
5
+ * badge over the list would cover the row somebody is reading, which is the
6
+ * thing this exists to stop happening.
7
+ */
8
+
9
+ .crewlet-new-items {
10
+ display: flex;
11
+ align-items: center;
12
+ justify-content: center;
13
+ gap: var(--spacing-2);
14
+ width: 100%;
15
+ min-height: var(--size-control-sm);
16
+ padding: var(--spacing-2) var(--spacing-3);
17
+ border: 1px solid var(--color-border-default);
18
+ border-radius: var(--radius-pill);
19
+ background: var(--color-surface-subtle);
20
+ color: var(--color-text-secondary);
21
+ font-family: var(--font-family-sans);
22
+ font-size: var(--font-size-xs);
23
+ /* Regular, which is what the engine's pill inherits from the document. It
24
+ stands in the flow where the rows will go, so it should read as a gap in
25
+ the list rather than as a heading over one. */
26
+ font-weight: var(--font-weight-regular);
27
+ line-height: 1;
28
+ cursor: pointer;
29
+ box-sizing: border-box;
30
+ transition:
31
+ border-color var(--motion-duration-fast) var(--motion-easing-default),
32
+ color var(--motion-duration-fast) var(--motion-easing-default);
33
+ }
34
+
35
+ /*
36
+ * The accent on hover, and only there. What is behind the pill IS where the
37
+ * reader is about to be, which is the one thing the accent means; at rest it
38
+ * would be a permanent accent on a page that already has one.
39
+ *
40
+ * TWO STEPS OF THE ONE HUE, because they are asked two different questions.
41
+ * The boundary takes the FILL step, which the engine spends here and which is
42
+ * measured at 3:1 as a mark; the label takes the INK step, which is measured
43
+ * at 4.5:1 as text. The engine paints its label in the fill step too, and that
44
+ * measures 4.39:1 on a light card and 3.45:1 on a dark one.
45
+ */
46
+ .crewlet-new-items:hover {
47
+ border-color: var(--color-brand-accent);
48
+ color: var(--color-brand-accent-ink);
49
+ }
50
+
51
+ .crewlet-new-items:focus-visible {
52
+ outline: 2px solid var(--color-focus);
53
+ outline-offset: 2px;
54
+ }
55
+
56
+ @media (prefers-reduced-motion: reduce) {
57
+ .crewlet-new-items {
58
+ transition: none;
59
+ }
60
+ }