@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,616 @@
1
+ /*
2
+ * The form row: Input, Textarea, Label, FormField, FormRow, FormSection and
3
+ * ReadOnlyField.
4
+ *
5
+ * Two sizes, both on the control tokens so a field lines up with the button
6
+ * and the select beside it at every density: md for a form row, sm for a
7
+ * dense toolbar or an inline filter.
8
+ *
9
+ * THE VALUE SITS ON ONE LINE, CENTRED IN THE BOX. The control carries its
10
+ * inset as side padding only and the box's own height is what makes the row:
11
+ * with padding on all four sides a 32px field drew 39px tall, so a field, the
12
+ * button beside it and the select beside that were three heights.
13
+ *
14
+ * THE BOUNDARY IS --color-border-control, not the default border. A text
15
+ * box, a checkbox and a switch are the three things on a page whose OUTLINE
16
+ * is the control: with the ordinary hairline they measured 1.27:1 in light
17
+ * and 1.75:1 in dark, which is a box a reader has to already know is there.
18
+ * It is the one place this register does not follow the product's own
19
+ * stylesheet, which draws every field on the panel hairline.
20
+ *
21
+ * AND A FOCUSED FIELD SHOWS ONE RING, drawn as an outline over that boundary.
22
+ * Every field in this package states that rule for itself and states it the
23
+ * same way; the long version is on .crewlet-input:has(...:focus-visible)
24
+ * below, and Input.test.tsx holds all of them to it.
25
+ */
26
+
27
+ .crewlet-input {
28
+ /* The width steps, named for what they hold. See InputWidth. */
29
+ --crewlet-input-width-xs: 140px;
30
+ --crewlet-input-width-sm: 200px;
31
+ --crewlet-input-width-md: 320px;
32
+ /* The widest step is the one a SENTENCE is typed into rather than a name:
33
+ the knowledge search asks for plain text and its own placeholder runs to
34
+ sixty characters, which is what this step is measured against. */
35
+ --crewlet-input-width-lg: 520px;
36
+
37
+ position: relative;
38
+ display: inline-flex;
39
+ align-items: center;
40
+ width: 100%;
41
+ min-height: var(--size-control-md);
42
+ background-color: var(--color-surface-subtle);
43
+ border: 1px solid var(--color-border-control);
44
+ border-radius: var(--radius-md);
45
+ /* The boundary is the only thing that moves here. The ring is an outline,
46
+ which takes no transition, and nothing else paints a shadow. */
47
+ transition: border-color var(--motion-duration-fast) var(--motion-easing-default);
48
+ }
49
+
50
+ .crewlet-input--w-full { max-width: none; }
51
+ .crewlet-input--w-xs { max-width: var(--crewlet-input-width-xs); }
52
+ .crewlet-input--w-sm { max-width: var(--crewlet-input-width-sm); }
53
+ .crewlet-input--w-md { max-width: var(--crewlet-input-width-md); }
54
+ .crewlet-input--w-lg { max-width: var(--crewlet-input-width-lg); }
55
+
56
+ .crewlet-input--sm { min-height: var(--size-control-sm); }
57
+
58
+ .crewlet-input:hover {
59
+ border-color: var(--color-border-hover);
60
+ }
61
+
62
+ /*
63
+ * ONE RING, AND IT IS THE BOUNDARY ITSELF.
64
+ *
65
+ * What this replaces drew the indicator twice. The border took --color-focus
66
+ * AND --shadow-focus laid a second focus-coloured ring outside it, and that
67
+ * token is already a ring in its own right: `0 0 0 2px background, 0 0 0 4px
68
+ * focus` is a background-coloured gap and then a band. So a focused field was
69
+ * an accent hairline, a two-pixel gap and an accent band, measured on the
70
+ * running dashboard as `border 1px #8b9ff5` under `#15171c 0 0 0 2px, #8b9ff5
71
+ * 0 0 0 4px`. Two layers of highlight, from one state.
72
+ *
73
+ * The one that is left is an OUTLINE rather than the shadow, because
74
+ * forced-colors mode drops every box-shadow and keeps outlines: a ring drawn
75
+ * as a shadow disappears for exactly the readers who most need one.
76
+ *
77
+ * It is drawn INSIDE the box, on the offset every focusable in a clipping
78
+ * scroller takes, so it covers the boundary rather than standing outside it.
79
+ * Two things follow: a scroller cannot clip it, and the field does not grow a
80
+ * four-pixel halo the moment a caret lands in it, which is what a filter box
81
+ * in a toolbar of them did to the row it sits in.
82
+ *
83
+ * THE BORDER IS LEFT ALONE. Recolouring it under the ring says nothing the
84
+ * ring has not already said, and it is what cost the error state its own
85
+ * colour: see the rule below.
86
+ *
87
+ * THE SELECTOR NAMES THE CONTROL rather than asking :focus-within. A search
88
+ * box holds a second focusable, its own clear control, and :focus-within drew
89
+ * the whole field's ring around the IconButton's ring the moment a reader
90
+ * tabbed onto it: a ring around a button inside a ring around the field.
91
+ * :focus-visible rather than :focus is the package's one vocabulary for an
92
+ * indicator, and for a text control the two are the same thing: every input
93
+ * type this slot holds, readonly and search included, matches :focus-visible
94
+ * on a pointer press as well as on a tab.
95
+ */
96
+ .crewlet-input:has(.crewlet-input__control:focus-visible) {
97
+ outline: 2px solid var(--color-focus);
98
+ outline-offset: var(--size-focus-ring-inset-offset);
99
+ }
100
+
101
+ .crewlet-input.is-error {
102
+ border-color: var(--color-feedback-danger);
103
+ }
104
+
105
+ /*
106
+ * A REFUSED FIELD KEEPS ITS COLOUR WHILE THE READER IS IN IT. The ring covers
107
+ * the boundary, so a focus-coloured one would paint out the one mark on the
108
+ * field itself saying the value cannot be saved, at the exact moment somebody
109
+ * is fixing it. The ring takes the danger step instead: the same token the
110
+ * boundary already carries, so the field does not change hue when a caret
111
+ * lands in it, and "here" and "refused" stay one edge rather than two.
112
+ *
113
+ * It is the FILL step, not the ink one the error line takes, because this is
114
+ * a graphical object rather than a word: @crewlethq/tokens measures
115
+ * --color-feedback-danger to 3:1 on every surface a mark can be drawn on.
116
+ */
117
+ .crewlet-input.is-error:has(.crewlet-input__control:focus-visible) {
118
+ outline-color: var(--color-feedback-danger);
119
+ }
120
+
121
+ .crewlet-input.is-disabled {
122
+ opacity: 0.6;
123
+ cursor: not-allowed;
124
+ }
125
+
126
+ .crewlet-input__control {
127
+ flex: 1;
128
+ min-width: 0;
129
+ background: transparent;
130
+ border: none;
131
+ outline: none;
132
+ font-family: inherit;
133
+ align-self: stretch;
134
+ color: var(--color-text-primary);
135
+ font-size: var(--font-size-compact);
136
+ line-height: var(--font-line-height-normal);
137
+ padding: 0 var(--spacing-3);
138
+ box-sizing: border-box;
139
+ width: 100%;
140
+ }
141
+
142
+ /*
143
+ * THE PLACEHOLDER IS A FACT, not decoration: it is the example of the shape a
144
+ * value takes, so it sits on the tertiary step (4.5:1) rather than the
145
+ * decoration step it used to take at 0.6 opacity, which measured 2.22:1.
146
+ */
147
+ .crewlet-input__control::placeholder {
148
+ color: var(--color-text-tertiary);
149
+ opacity: 1;
150
+ }
151
+
152
+ .crewlet-input__control:disabled {
153
+ cursor: not-allowed;
154
+ }
155
+
156
+ .crewlet-input--sm .crewlet-input__control {
157
+ padding: 0 var(--spacing-2);
158
+ font-size: var(--font-size-xs);
159
+ }
160
+
161
+ /*
162
+ * The leading and trailing slots sit out of the pointer's way, so a press
163
+ * anywhere in the field still lands in the box. Anything a reader has to
164
+ * press belongs beside the field rather than inside it.
165
+ */
166
+ .crewlet-input__leading,
167
+ .crewlet-input__trailing {
168
+ display: inline-flex;
169
+ align-items: center;
170
+ flex: none;
171
+ color: var(--color-text-tertiary);
172
+ pointer-events: none;
173
+ }
174
+
175
+ /*
176
+ * A GLYPH IS INSET ONE STEP LESS THAN TEXT. The mark reads from its own
177
+ * middle and the letter from its left edge, so a search glyph on the text's
178
+ * own 12px line sat further in than the box's other contents; at 8px the two
179
+ * hang on one optical edge, and the value after it starts where it does in
180
+ * every other field on the form.
181
+ */
182
+ .crewlet-input__leading {
183
+ padding-left: var(--spacing-2);
184
+ }
185
+
186
+ .crewlet-input__leading + .crewlet-input__control {
187
+ padding-left: var(--spacing-2);
188
+ }
189
+
190
+ .crewlet-input__trailing {
191
+ padding-right: var(--spacing-3);
192
+ }
193
+
194
+ .crewlet-input--sm .crewlet-input__trailing { padding-right: var(--spacing-2); }
195
+
196
+ /*
197
+ * A TEXT AFFIX IS INSET LIKE TEXT, AND THE VALUE JOINS IT.
198
+ *
199
+ * The rule above is written for a GLYPH, which reads from its own middle and
200
+ * therefore hangs one step further out than a letter does. An affix is not a
201
+ * glyph: it is the first word of the value, so it takes the step the
202
+ * control's own text takes, and the control after it takes none.
203
+ *
204
+ * Both halves matter and they fail the same way. At the glyph's inset the
205
+ * scheme sits a step closer to the boundary than every other value on the
206
+ * form; with the control still paying its own inset behind it, `https://`
207
+ * stands a clear step away from the host, which is the two-fields reading
208
+ * that drawing the affix INSIDE the boundary exists to stop.
209
+ *
210
+ * Selected with `:has` on the slot, because only the affix knows which kind
211
+ * of leading content this is and the padding belongs to the slot.
212
+ */
213
+ .crewlet-input__leading:has(.crewlet-input__affix) {
214
+ padding-left: var(--spacing-3);
215
+ }
216
+
217
+ .crewlet-input--sm .crewlet-input__leading:has(.crewlet-input__affix) {
218
+ padding-left: var(--spacing-2);
219
+ }
220
+
221
+ .crewlet-input__leading:has(.crewlet-input__affix) + .crewlet-input__control {
222
+ padding-left: 0;
223
+ }
224
+
225
+ /*
226
+ * The scheme a url field wears, INSIDE the boundary rather than beside it, so
227
+ * the box reads as one value: a chip in front of the field reads as two
228
+ * fields, and the second of them looks optional.
229
+ *
230
+ * The page's own face, not the code face it used to take. It is the start of
231
+ * a sentence somebody is finishing, not a token to be read exactly, and a
232
+ * mono `https://` in front of a proportional host is two typefaces in one
233
+ * value. Its ink is the SECONDARY step rather than the decoration one the
234
+ * product's own stylesheet gives it: the scheme is part of the value the
235
+ * field submits, and a value has to clear 4.5:1.
236
+ */
237
+ .crewlet-input__affix {
238
+ color: var(--color-text-secondary);
239
+ font-size: var(--font-size-compact);
240
+ user-select: none;
241
+ }
242
+
243
+ /*
244
+ * THE NATIVE CLEAR CONTROL IS NOT DRAWN. `::-webkit-search-cancel-button`
245
+ * exists in one browser family, is drawn by nobody else, and is reachable by
246
+ * no keyboard anywhere, so a themed version of it was a control that half the
247
+ * readers of a search box did not have. Input draws its own, as a real button
248
+ * with a name, whenever a caller passes `onClear`.
249
+ */
250
+ .crewlet-input__control[type='search']::-webkit-search-cancel-button {
251
+ -webkit-appearance: none;
252
+ appearance: none;
253
+ display: none;
254
+ }
255
+
256
+ /*
257
+ * The clear control's slot. It DOES take the pointer, unlike the leading and
258
+ * trailing slots above, because it is the one control that belongs inside a
259
+ * text box (see Input's own `onClear`).
260
+ */
261
+ .crewlet-input__clear {
262
+ display: inline-flex;
263
+ align-items: center;
264
+ flex: none;
265
+ padding-right: var(--spacing-1);
266
+ }
267
+
268
+ /*
269
+ * A field holding a name something else resolves: a secret reference, a key,
270
+ * a path. Monospace and quieter than prose, because it is a value to be read
271
+ * exactly rather than read for sense.
272
+ */
273
+ .crewlet-input--reference .crewlet-input__control {
274
+ font-family: var(--font-family-mono);
275
+ font-variant-ligatures: none;
276
+ font-size: var(--font-size-compact);
277
+ color: var(--color-text-secondary);
278
+ }
279
+
280
+ /*
281
+ * The search field of a command palette. Borderless and large, because the
282
+ * surface around it IS the field: a boundary inside a dialog whose whole body
283
+ * is one input is a boundary around nothing, and a drawn one made the palette
284
+ * read as a form with a single question.
285
+ */
286
+ .crewlet-input--command {
287
+ border-color: transparent;
288
+ background: transparent;
289
+ padding-inline: 0;
290
+ }
291
+
292
+ /*
293
+ * And it draws no ring either, for the same reason: the dialog around it is
294
+ * what says where the reader is, and the list below carries the highlight the
295
+ * arrows move.
296
+ *
297
+ * The outline is kept and made TRANSPARENT rather than dropped. Forced-colors
298
+ * mode substitutes a system colour into a transparent outline, so the one
299
+ * control in the palette is not the single field in the package left with no
300
+ * indicator at all for the readers who depend on that mode.
301
+ */
302
+ .crewlet-input--command:has(.crewlet-input__control:focus-visible) {
303
+ outline-color: transparent;
304
+ }
305
+
306
+ .crewlet-input--command .crewlet-input__control {
307
+ font-size: var(--font-size-lg);
308
+ }
309
+
310
+ /* ── Textarea ────────────────────────────────────────────────────────── */
311
+ /* A textarea with trailing content is wrapped so the content can sit inside
312
+ its top right corner; the textarea itself is unchanged. */
313
+ .crewlet-textarea-shell {
314
+ --crewlet-textarea-trailing-inset: 72px;
315
+
316
+ position: relative;
317
+ display: block;
318
+ width: 100%;
319
+ }
320
+
321
+ .crewlet-textarea-shell .crewlet-textarea {
322
+ padding-right: var(--crewlet-textarea-trailing-inset);
323
+ }
324
+
325
+ .crewlet-textarea-shell .crewlet-input__trailing {
326
+ position: absolute;
327
+ top: var(--spacing-2);
328
+ right: 0;
329
+ }
330
+
331
+ /*
332
+ * The multiline field: prose a person writes, such as a goal or a mission, so
333
+ * it wears the page's own face. It was the code face when this rule was
334
+ * written for a raw JSON editor that no longer exists.
335
+ */
336
+ .crewlet-textarea {
337
+ width: 100%;
338
+ padding: var(--spacing-2) var(--spacing-3);
339
+ font-family: var(--font-family-sans);
340
+ font-size: var(--font-size-compact);
341
+ line-height: var(--font-line-height-normal);
342
+ color: var(--color-text-primary);
343
+ background-color: var(--color-surface-subtle);
344
+ border: 1px solid var(--color-border-control);
345
+ border-radius: var(--radius-md);
346
+ transition: border-color var(--motion-duration-fast) var(--motion-easing-default);
347
+ box-sizing: border-box;
348
+ outline: none;
349
+ resize: vertical;
350
+ min-height: var(--spacing-11);
351
+ }
352
+
353
+ /* The same one ring the box above draws, and for the same reasons. Here it is
354
+ on the control itself: a textarea is the field, with nothing wrapped round
355
+ it and nothing focusable inside it. */
356
+ .crewlet-textarea:focus-visible {
357
+ outline: 2px solid var(--color-focus);
358
+ outline-offset: var(--size-focus-ring-inset-offset);
359
+ }
360
+
361
+ .crewlet-textarea.is-error {
362
+ border-color: var(--color-feedback-danger);
363
+ }
364
+
365
+ .crewlet-textarea.is-error:focus-visible {
366
+ outline-color: var(--color-feedback-danger);
367
+ }
368
+
369
+ .crewlet-textarea.is-disabled {
370
+ opacity: 0.6;
371
+ cursor: not-allowed;
372
+ }
373
+
374
+ .crewlet-textarea.is-auto-resize {
375
+ resize: none;
376
+ overflow: hidden;
377
+ min-height: var(--size-control-lg);
378
+ }
379
+
380
+ .crewlet-textarea::placeholder {
381
+ color: var(--color-text-tertiary);
382
+ opacity: 1;
383
+ }
384
+
385
+ /* ── Label ───────────────────────────────────────────────────────────── */
386
+ /*
387
+ * THE ONE MICRO-LABEL REGISTER: 11px, medium, opened up and uppercased, on
388
+ * the tertiary step. A form is read by its values, and a label set in the
389
+ * same size and weight as the value under it competes with it for the line;
390
+ * in this register the eye takes the whole column of labels in one pass and
391
+ * stops at the values.
392
+ *
393
+ * It is declared here and in exactly two other places that must match it, the
394
+ * fieldset legend and the read-only field's label, because those three ARE
395
+ * the same label in three markup positions.
396
+ */
397
+ .crewlet-label {
398
+ display: inline-flex;
399
+ align-items: center;
400
+ gap: var(--spacing-1);
401
+ font-size: var(--font-size-2xs);
402
+ font-weight: var(--font-weight-medium);
403
+ letter-spacing: var(--font-letter-spacing-wide);
404
+ text-transform: uppercase;
405
+ color: var(--color-text-tertiary);
406
+ }
407
+
408
+ .crewlet-label--with-action {
409
+ display: flex;
410
+ justify-content: space-between;
411
+ align-items: center;
412
+ gap: var(--spacing-2);
413
+ }
414
+
415
+ .crewlet-label__text {
416
+ display: inline-flex;
417
+ align-items: center;
418
+ gap: var(--spacing-1);
419
+ font-size: var(--font-size-2xs);
420
+ font-weight: var(--font-weight-medium);
421
+ letter-spacing: var(--font-letter-spacing-wide);
422
+ text-transform: uppercase;
423
+ color: var(--color-text-tertiary);
424
+ }
425
+
426
+ /*
427
+ * The asterisk takes the danger INK, not the danger fill: at 3.76:1 the fill
428
+ * is under the floor for a mark a reader has to notice, and this one carries
429
+ * a rule about whether the form can be saved.
430
+ */
431
+ .crewlet-label__required {
432
+ color: var(--color-feedback-danger-ink);
433
+ font-weight: var(--font-weight-bold);
434
+ }
435
+
436
+ /* "(optional)" and "(required)": a fact about the field, on the tertiary step. */
437
+ .crewlet-label__note {
438
+ color: var(--color-text-tertiary);
439
+ font-weight: var(--font-weight-regular);
440
+ }
441
+
442
+ .crewlet-label__action {
443
+ display: inline-flex;
444
+ align-items: center;
445
+ }
446
+
447
+ /* ── FormField ───────────────────────────────────────────────────────── */
448
+ /* The label, the control and its lines are one thing, so they sit one step
449
+ apart; the step BETWEEN fields is FormRow's and FormSection's, and it is
450
+ four times this. A field whose own parts were as far apart as the fields
451
+ around it left a label reading as a heading over the row below it. */
452
+ .crewlet-form-field {
453
+ display: flex;
454
+ flex-direction: column;
455
+ gap: var(--spacing-1);
456
+ min-width: 0;
457
+ border: none;
458
+ margin: 0;
459
+ padding: 0;
460
+ }
461
+
462
+ /* A fieldset's legend wears the field label's register, so a list of values
463
+ reads as one field among the others. */
464
+ .crewlet-form-field__legend {
465
+ padding: 0;
466
+ margin-bottom: var(--spacing-1);
467
+ }
468
+
469
+ .crewlet-form-field__helper {
470
+ font-size: var(--font-size-xs);
471
+ line-height: var(--font-line-height-normal);
472
+ color: var(--color-text-tertiary);
473
+ }
474
+
475
+ /*
476
+ * The error line, on the danger INK. It stays BESIDE the help rather than
477
+ * replacing it: a reader told they are wrong needs the line that says what
478
+ * right looks like more than ever, not less.
479
+ *
480
+ * THE INK IS NOT THE HELP LINE'S. The product's own stylesheet draws a
481
+ * field's refusal in the same tertiary grey as its help, which leaves the one
482
+ * line saying the value cannot be saved indistinguishable from the line
483
+ * saying what the value is for. This register keeps the measured danger step.
484
+ */
485
+ .crewlet-form-field__error {
486
+ font-size: var(--font-size-xs);
487
+ line-height: var(--font-line-height-normal);
488
+ color: var(--color-feedback-danger-ink);
489
+ }
490
+
491
+ /* ── FormRow ─────────────────────────────────────────────────────────── */
492
+ .crewlet-form-row {
493
+ display: grid;
494
+ gap: var(--spacing-4);
495
+ }
496
+
497
+ .crewlet-form-row--1 { grid-template-columns: 1fr; }
498
+ .crewlet-form-row--2 { grid-template-columns: repeat(2, 1fr); }
499
+ .crewlet-form-row--3 { grid-template-columns: repeat(3, 1fr); }
500
+
501
+ @media (max-width: 768px) {
502
+ .crewlet-form-row--2,
503
+ .crewlet-form-row--3 { grid-template-columns: 1fr; }
504
+ }
505
+
506
+ /* ── FormSection ─────────────────────────────────────────────────────── */
507
+ .crewlet-form-section {
508
+ display: flex;
509
+ flex-direction: column;
510
+ gap: var(--spacing-4);
511
+ }
512
+
513
+ .crewlet-form-section--divided {
514
+ border-top: 1px solid var(--color-border-default);
515
+ padding-top: var(--spacing-5);
516
+ }
517
+
518
+ .crewlet-form-section__header {
519
+ display: flex;
520
+ align-items: flex-start;
521
+ justify-content: space-between;
522
+ gap: var(--spacing-3);
523
+ }
524
+
525
+ .crewlet-form-section__titles {
526
+ display: flex;
527
+ flex-direction: column;
528
+ gap: var(--spacing-1);
529
+ min-width: 0;
530
+ }
531
+
532
+ .crewlet-form-section__title {
533
+ margin: 0;
534
+ font-size: var(--font-size-sm);
535
+ font-weight: var(--font-weight-semibold);
536
+ letter-spacing: var(--font-letter-spacing-tight);
537
+ color: var(--color-text-primary);
538
+ }
539
+
540
+ .crewlet-form-section__hint {
541
+ margin: 0;
542
+ font-size: var(--font-size-xs);
543
+ line-height: var(--font-line-height-normal);
544
+ color: var(--color-text-tertiary);
545
+ max-width: var(--size-measure-narrow);
546
+ }
547
+
548
+ .crewlet-form-section__actions {
549
+ display: flex;
550
+ align-items: center;
551
+ gap: var(--spacing-2);
552
+ flex: none;
553
+ }
554
+
555
+ .crewlet-form-section__body {
556
+ display: flex;
557
+ flex-direction: column;
558
+ gap: var(--spacing-4);
559
+ }
560
+
561
+ /* ── ReadOnlyField ───────────────────────────────────────────────────── */
562
+ .crewlet-readonly-field {
563
+ display: flex;
564
+ flex-direction: column;
565
+ gap: var(--spacing-1);
566
+ min-width: 0;
567
+ }
568
+
569
+ /* The same micro-label register a Label draws, because it is the same label:
570
+ the field is read-only, not a different kind of field. */
571
+ .crewlet-readonly-field__label {
572
+ font-size: var(--font-size-2xs);
573
+ font-weight: var(--font-weight-medium);
574
+ letter-spacing: var(--font-letter-spacing-wide);
575
+ text-transform: uppercase;
576
+ color: var(--color-text-tertiary);
577
+ }
578
+
579
+ .crewlet-readonly-field__value {
580
+ font-size: var(--font-size-compact);
581
+ line-height: var(--font-line-height-normal);
582
+ color: var(--color-text-primary);
583
+ overflow-wrap: anywhere;
584
+ }
585
+
586
+ .crewlet-readonly-field__value.is-mono {
587
+ font-family: var(--font-family-mono);
588
+ font-size: var(--font-size-compact);
589
+ }
590
+
591
+ /*
592
+ * Why it is not editable here, and where it is. The SECONDARY step rather
593
+ * than the decoration one: this sentence is the whole reason the reader stops
594
+ * looking for a control that is not on this screen.
595
+ */
596
+ .crewlet-readonly-field__reason {
597
+ display: flex;
598
+ flex-wrap: wrap;
599
+ align-items: baseline;
600
+ gap: var(--spacing-1);
601
+ font-size: var(--font-size-xs);
602
+ line-height: var(--font-line-height-normal);
603
+ color: var(--color-text-secondary);
604
+ }
605
+
606
+ .crewlet-readonly-field__action {
607
+ display: inline-flex;
608
+ align-items: baseline;
609
+ }
610
+
611
+ @media (prefers-reduced-motion: reduce) {
612
+ .crewlet-input,
613
+ .crewlet-textarea {
614
+ transition: none;
615
+ }
616
+ }
@@ -0,0 +1,40 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ /**
3
+ * Whether the reader is on an Apple platform, where Command is the command key.
4
+ *
5
+ * `userAgentData.platform` first, because `navigator.platform` is deprecated
6
+ * and frozen on several browsers, and the user agent string is the last
7
+ * resort rather than the first.
8
+ */
9
+ export declare function isApplePlatform(): boolean;
10
+ /** How one key is drawn and how it is read. */
11
+ export declare function keyGlyph(key: string, apple: boolean): {
12
+ glyph: string;
13
+ spoken: string;
14
+ };
15
+ export interface KbdProps extends HTMLAttributes<HTMLElement> {
16
+ /** Draws the keycap quieter, for a hint that sits inside a field. */
17
+ subtle?: boolean | undefined;
18
+ /**
19
+ * A shortcut as the keys it is pressed with, in order: `['Mod', 'Shift',
20
+ * 'z']`. `Mod` is the platform's command key, so one hint is right on both.
21
+ *
22
+ * With `keys`, the caps are drawn hidden and ONE SENTENCE is read instead:
23
+ * "Command plus Shift plus Z". A screen reader given the glyphs reads
24
+ * "place of interest sign Z", which names nothing anybody presses.
25
+ */
26
+ keys?: readonly string[] | undefined;
27
+ /** Overrides platform detection, for a suite or a screenshot. */
28
+ apple?: boolean | undefined;
29
+ children?: ReactNode;
30
+ }
31
+ /**
32
+ * Kbd: a keyboard key drawn as a keycap.
33
+ *
34
+ * Two forms, and they are not alternatives: `children` is one key, for a hint
35
+ * inside a field ("Enter" beside a box that adds a value to a list), and
36
+ * `keys` is a whole shortcut, which needs the platform mapping and the spoken
37
+ * sentence. A hint that says Ctrl+Z to somebody on a Mac names a key they do
38
+ * not press.
39
+ */
40
+ export declare const Kbd: ({ subtle, keys, apple, className, children, ...rest }: KbdProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './Kbd.css';
2
+ export { Kbd, isApplePlatform, keyGlyph } from './Kbd.js';
3
+ export type { KbdProps } from './Kbd.js';
@@ -0,0 +1,3 @@
1
+ export { Kbd, isApplePlatform, keyGlyph } from '../chunk-SFZOKW2G.js';
2
+ import '../chunk-BZFWDIV6.js';
3
+ import '../chunk-ODEQTPFM.js';