@crewlethq/ui 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. package/README.md +1714 -14
  2. package/dist/Accordion/Accordion.d.ts +54 -0
  3. package/dist/Accordion/index.d.ts +4 -0
  4. package/dist/Accordion/index.js +6 -0
  5. package/dist/Accordion-ZI2WLD5C.css +87 -0
  6. package/dist/AddPill/AddPill.d.ts +114 -0
  7. package/dist/AddPill/index.d.ts +3 -0
  8. package/dist/AddPill/index.js +3 -0
  9. package/dist/AddPill-DFWXYLIQ.css +434 -0
  10. package/dist/Announcer/Announcer.d.ts +15 -0
  11. package/dist/Announcer/index.d.ts +2 -0
  12. package/dist/Announcer/index.js +3 -0
  13. package/dist/AppShell/AppShell.d.ts +193 -0
  14. package/dist/AppShell/index.d.ts +3 -0
  15. package/dist/AppShell/index.js +6 -0
  16. package/dist/AppShell-NVE6LHNI.css +395 -0
  17. package/dist/Avatar/Avatar.d.ts +104 -0
  18. package/dist/Avatar/index.d.ts +3 -0
  19. package/dist/Avatar/index.js +2 -0
  20. package/dist/Avatar-P2KRQM2B.css +156 -0
  21. package/dist/BrandLockup/BrandLockup.d.ts +41 -0
  22. package/dist/BrandLockup/index.d.ts +3 -0
  23. package/dist/BrandLockup/index.js +2 -0
  24. package/dist/BrandLockup-6ISDEHPJ.css +108 -0
  25. package/dist/Button/Button.d.ts +88 -0
  26. package/dist/Button/index.d.ts +3 -0
  27. package/dist/Button/index.js +3 -0
  28. package/dist/Button-D4J6B4MA.css +302 -0
  29. package/dist/CalendarGrid/CalendarGrid.d.ts +87 -0
  30. package/dist/CalendarGrid/index.d.ts +3 -0
  31. package/dist/CalendarGrid/index.js +2 -0
  32. package/dist/CalendarGrid-V6TQ5QKS.css +128 -0
  33. package/dist/Callout/Callout.d.ts +47 -0
  34. package/dist/Callout/index.d.ts +3 -0
  35. package/dist/Callout/index.js +2 -0
  36. package/dist/Callout-S7QDWHDL.css +111 -0
  37. package/dist/Canvas/Canvas.d.ts +234 -0
  38. package/dist/Canvas/geometry.d.ts +249 -0
  39. package/dist/Canvas/index.d.ts +5 -0
  40. package/dist/Canvas/index.js +8 -0
  41. package/dist/Canvas/layerNode.d.ts +20 -0
  42. package/dist/Canvas-Q6JETCWR.css +315 -0
  43. package/dist/Card/Card.d.ts +164 -0
  44. package/dist/Card/headerSlot.d.ts +65 -0
  45. package/dist/Card/index.d.ts +5 -0
  46. package/dist/Card/index.js +6 -0
  47. package/dist/Card-RLR254LD.css +450 -0
  48. package/dist/Charts/ActivityStrip.d.ts +45 -0
  49. package/dist/Charts/BarList.d.ts +51 -0
  50. package/dist/Charts/Legend.d.ts +32 -0
  51. package/dist/Charts/StackedBar.d.ts +38 -0
  52. package/dist/Charts/TimeSeries.d.ts +92 -0
  53. package/dist/Charts/dataColor.d.ts +20 -0
  54. package/dist/Charts/index.d.ts +12 -0
  55. package/dist/Charts/index.js +3 -0
  56. package/dist/Charts-D7G2BSXH.css +277 -0
  57. package/dist/Checkbox/Checkbox.d.ts +45 -0
  58. package/dist/Checkbox/index.d.ts +3 -0
  59. package/dist/Checkbox/index.js +2 -0
  60. package/dist/Checkbox-VGW26YLQ.css +111 -0
  61. package/dist/CodeBlock/CodeBlock.d.ts +119 -0
  62. package/dist/CodeBlock/index.d.ts +3 -0
  63. package/dist/CodeBlock/index.js +7 -0
  64. package/dist/CodeBlock-GYNJ2HI6.css +188 -0
  65. package/dist/Combobox/Combobox.d.ts +89 -0
  66. package/dist/Combobox/index.d.ts +3 -0
  67. package/dist/Combobox/index.js +8 -0
  68. package/dist/Combobox-4FUVYIE7.css +80 -0
  69. package/dist/CommandPalette/CommandPalette.d.ts +77 -0
  70. package/dist/CommandPalette/index.d.ts +3 -0
  71. package/dist/CommandPalette/index.js +11 -0
  72. package/dist/CommandPalette-CSJDUCQA.css +115 -0
  73. package/dist/Container/Container.d.ts +17 -0
  74. package/dist/Container/index.d.ts +3 -0
  75. package/dist/Container/index.js +2 -0
  76. package/dist/Container-3TSKMGNI.css +52 -0
  77. package/dist/Copyable/CopyButton.d.ts +64 -0
  78. package/dist/Copyable/Copyable.d.ts +42 -0
  79. package/dist/Copyable/index.d.ts +5 -0
  80. package/dist/Copyable/index.js +6 -0
  81. package/dist/Copyable-5PNRFOLS.css +125 -0
  82. package/dist/Count/Count.d.ts +24 -0
  83. package/dist/Count/index.d.ts +3 -0
  84. package/dist/Count/index.js +3 -0
  85. package/dist/Count-ZVCJ6VPD.css +20 -0
  86. package/dist/DataTable/CopyableCell.d.ts +12 -0
  87. package/dist/DataTable/DataTable.d.ts +615 -0
  88. package/dist/DataTable/RowActionsMenu.d.ts +7 -0
  89. package/dist/DataTable/index.d.ts +7 -0
  90. package/dist/DataTable/index.js +14 -0
  91. package/dist/DataTable-ITNACQ2X.css +2020 -0
  92. package/dist/DataView/DataView.d.ts +109 -0
  93. package/dist/DataView/DataViewToolbar.d.ts +87 -0
  94. package/dist/DataView/FilterAxisBar.d.ts +103 -0
  95. package/dist/DataView/columns.d.ts +35 -0
  96. package/dist/DataView/filters.d.ts +184 -0
  97. package/dist/DataView/index.d.ts +11 -0
  98. package/dist/DataView/index.js +25 -0
  99. package/dist/DataView-256YF32J.css +441 -0
  100. package/dist/DateTimePicker/DateTimePicker.d.ts +91 -0
  101. package/dist/DateTimePicker/index.d.ts +3 -0
  102. package/dist/DateTimePicker/index.js +9 -0
  103. package/dist/DateTimePicker-22VNXRWC.css +199 -0
  104. package/dist/DescriptionList/DescriptionList.d.ts +36 -0
  105. package/dist/DescriptionList/index.d.ts +3 -0
  106. package/dist/DescriptionList/index.js +2 -0
  107. package/dist/DescriptionList-YYY3V3O6.css +59 -0
  108. package/dist/DiffList/DiffList.d.ts +47 -0
  109. package/dist/DiffList/index.d.ts +3 -0
  110. package/dist/DiffList/index.js +3 -0
  111. package/dist/DiffList-3EX64AAE.css +94 -0
  112. package/dist/Disclosure/Disclosure.d.ts +56 -0
  113. package/dist/Disclosure/anatomy.d.ts +43 -0
  114. package/dist/Disclosure/index.d.ts +5 -0
  115. package/dist/Disclosure/index.js +6 -0
  116. package/dist/Disclosure-VKBJJIZ7.css +176 -0
  117. package/dist/EmptyState/EmptyState.d.ts +39 -0
  118. package/dist/EmptyState/index.d.ts +3 -0
  119. package/dist/EmptyState/index.js +3 -0
  120. package/dist/EmptyState-C6HRBGT7.css +73 -0
  121. package/dist/EmptyValue/EmptyValue.d.ts +31 -0
  122. package/dist/EmptyValue/index.d.ts +3 -0
  123. package/dist/EmptyValue/index.js +3 -0
  124. package/dist/EmptyValue-4B6ODXHT.css +12 -0
  125. package/dist/EntityChip/EntityChip.d.ts +40 -0
  126. package/dist/EntityChip/index.d.ts +3 -0
  127. package/dist/EntityChip/index.js +3 -0
  128. package/dist/EntityChip-LUCPZBBG.css +64 -0
  129. package/dist/ErrorBoundary/ErrorBoundary.d.ts +58 -0
  130. package/dist/ErrorBoundary/index.d.ts +3 -0
  131. package/dist/ErrorBoundary/index.js +4 -0
  132. package/dist/ErrorBoundary-ME36CQTA.css +59 -0
  133. package/dist/Eyebrow/Eyebrow.d.ts +18 -0
  134. package/dist/Eyebrow/index.d.ts +3 -0
  135. package/dist/Eyebrow/index.js +2 -0
  136. package/dist/Eyebrow-5NREGHQH.css +46 -0
  137. package/dist/FilterChip/FilterChip.d.ts +100 -0
  138. package/dist/FilterChip/index.d.ts +3 -0
  139. package/dist/FilterChip/index.js +3 -0
  140. package/dist/FilterChip-GTGLLOXE.css +107 -0
  141. package/dist/Fullscreen/index.d.ts +2 -0
  142. package/dist/Fullscreen/index.js +1 -0
  143. package/dist/Fullscreen/useFullscreen.d.ts +32 -0
  144. package/dist/IconButton/IconButton.d.ts +45 -0
  145. package/dist/IconButton/index.d.ts +3 -0
  146. package/dist/IconButton/index.js +3 -0
  147. package/dist/IconButton-VQGNMJDI.css +158 -0
  148. package/dist/ImageUpload/ImageUpload.d.ts +37 -0
  149. package/dist/ImageUpload/index.d.ts +3 -0
  150. package/dist/ImageUpload/index.js +3 -0
  151. package/dist/ImageUpload-HKFIZR6D.css +193 -0
  152. package/dist/InlineCode/InlineCode.d.ts +37 -0
  153. package/dist/InlineCode/index.d.ts +3 -0
  154. package/dist/InlineCode/index.js +2 -0
  155. package/dist/InlineCode-6WSR5COL.css +65 -0
  156. package/dist/Input/FormField.d.ts +61 -0
  157. package/dist/Input/FormRow.d.ts +6 -0
  158. package/dist/Input/FormSection.d.ts +28 -0
  159. package/dist/Input/Input.d.ts +98 -0
  160. package/dist/Input/Label.d.ts +31 -0
  161. package/dist/Input/ReadOnlyField.d.ts +30 -0
  162. package/dist/Input/Textarea.d.ts +16 -0
  163. package/dist/Input/index.d.ts +15 -0
  164. package/dist/Input/index.js +5 -0
  165. package/dist/Input-2PU5CPKK.css +616 -0
  166. package/dist/Kbd/Kbd.d.ts +40 -0
  167. package/dist/Kbd/index.d.ts +3 -0
  168. package/dist/Kbd/index.js +3 -0
  169. package/dist/Kbd-W66MXQI5.css +61 -0
  170. package/dist/Layer/LayerHost.d.ts +23 -0
  171. package/dist/Layer/index.d.ts +7 -0
  172. package/dist/Layer/index.js +3 -0
  173. package/dist/Layer/place.d.ts +63 -0
  174. package/dist/Layer/stack.d.ts +159 -0
  175. package/dist/Layer-NAFSGCFA.css +23 -0
  176. package/dist/Layout/Layout.d.ts +104 -0
  177. package/dist/Layout/index.d.ts +3 -0
  178. package/dist/Layout/index.js +2 -0
  179. package/dist/Layout-2ZCV3IGF.css +171 -0
  180. package/dist/Link/Link.d.ts +45 -0
  181. package/dist/Link/index.d.ts +3 -0
  182. package/dist/Link/index.js +3 -0
  183. package/dist/Link-6BEFNMN2.css +80 -0
  184. package/dist/List/List.d.ts +73 -0
  185. package/dist/List/index.d.ts +3 -0
  186. package/dist/List/index.js +3 -0
  187. package/dist/List-XTHESXLR.css +161 -0
  188. package/dist/ListInput/ListInput.d.ts +68 -0
  189. package/dist/ListInput/index.d.ts +3 -0
  190. package/dist/ListInput/index.js +10 -0
  191. package/dist/ListInput-O7LJKOIG.css +147 -0
  192. package/dist/Listbox/index.d.ts +5 -0
  193. package/dist/Listbox/index.js +2 -0
  194. package/dist/Listbox/useListbox.d.ts +97 -0
  195. package/dist/Listbox/useOptionKeys.d.ts +64 -0
  196. package/dist/Listbox-X2DOTSQA.css +110 -0
  197. package/dist/Menu/Menu.d.ts +118 -0
  198. package/dist/Menu/index.d.ts +3 -0
  199. package/dist/Menu/index.js +7 -0
  200. package/dist/Menu-6DE7I66I.css +222 -0
  201. package/dist/Meter/Meter.d.ts +126 -0
  202. package/dist/Meter/index.d.ts +3 -0
  203. package/dist/Meter/index.js +3 -0
  204. package/dist/Meter-SKOOXQBC.css +87 -0
  205. package/dist/Modal/ConfirmModal.d.ts +74 -0
  206. package/dist/Modal/Modal.d.ts +154 -0
  207. package/dist/Modal/index.d.ts +5 -0
  208. package/dist/Modal/index.js +8 -0
  209. package/dist/Modal-XYQJ4BL6.css +484 -0
  210. package/dist/NewItemsNotice/NewItemsNotice.d.ts +28 -0
  211. package/dist/NewItemsNotice/index.d.ts +3 -0
  212. package/dist/NewItemsNotice/index.js +4 -0
  213. package/dist/NewItemsNotice-T4DSSPVV.css +60 -0
  214. package/dist/OrgLabel/OrgLabel.d.ts +117 -0
  215. package/dist/OrgLabel/index.d.ts +3 -0
  216. package/dist/OrgLabel/index.js +2 -0
  217. package/dist/OrgLabel-D7U6QJZD.css +293 -0
  218. package/dist/OrgNode/OrgNode.d.ts +103 -0
  219. package/dist/OrgNode/index.d.ts +3 -0
  220. package/dist/OrgNode/index.js +3 -0
  221. package/dist/OrgNode-BT7T2Q2X.css +214 -0
  222. package/dist/OrgTable/OrgTable.d.ts +113 -0
  223. package/dist/OrgTable/index.d.ts +3 -0
  224. package/dist/OrgTable/index.js +11 -0
  225. package/dist/OrgTable-VWMFC3TB.css +360 -0
  226. package/dist/PageHeader/PageHeader.d.ts +35 -0
  227. package/dist/PageHeader/index.d.ts +3 -0
  228. package/dist/PageHeader/index.js +3 -0
  229. package/dist/PageHeader-6EYWQXRE.css +88 -0
  230. package/dist/Popover/Popover.d.ts +91 -0
  231. package/dist/Popover/index.d.ts +3 -0
  232. package/dist/Popover/index.js +4 -0
  233. package/dist/Popover-WJGCF3ZQ.css +185 -0
  234. package/dist/PricingCard/PricingCard.d.ts +56 -0
  235. package/dist/PricingCard/index.d.ts +3 -0
  236. package/dist/PricingCard/index.js +4 -0
  237. package/dist/PricingCard-JFI7RYXP.css +278 -0
  238. package/dist/Prose/Prose.d.ts +33 -0
  239. package/dist/Prose/index.d.ts +3 -0
  240. package/dist/Prose/index.js +2 -0
  241. package/dist/Prose-BTXNFT2Q.css +99 -0
  242. package/dist/RelativeTime/RelativeTime.d.ts +31 -0
  243. package/dist/RelativeTime/clock.d.ts +9 -0
  244. package/dist/RelativeTime/format.d.ts +38 -0
  245. package/dist/RelativeTime/index.d.ts +6 -0
  246. package/dist/RelativeTime/index.js +4 -0
  247. package/dist/RelativeTime-EBAQPGO2.css +10 -0
  248. package/dist/SearchTrigger/SearchTrigger.d.ts +29 -0
  249. package/dist/SearchTrigger/index.d.ts +3 -0
  250. package/dist/SearchTrigger/index.js +2 -0
  251. package/dist/SearchTrigger-QXOYAUUY.css +79 -0
  252. package/dist/Section/Section.d.ts +41 -0
  253. package/dist/Section/index.d.ts +3 -0
  254. package/dist/Section/index.js +3 -0
  255. package/dist/Section-QRUPRIQ2.css +127 -0
  256. package/dist/SegmentedControl/SegmentedControl.d.ts +101 -0
  257. package/dist/SegmentedControl/index.d.ts +4 -0
  258. package/dist/SegmentedControl/index.js +5 -0
  259. package/dist/SegmentedControl-X3BI3XU4.css +68 -0
  260. package/dist/Select/Select.d.ts +153 -0
  261. package/dist/Select/index.d.ts +3 -0
  262. package/dist/Select/index.js +5 -0
  263. package/dist/Select-2X77FSWR.css +350 -0
  264. package/dist/Shortcut/index.d.ts +2 -0
  265. package/dist/Shortcut/index.js +4 -0
  266. package/dist/Shortcut/useShortcut.d.ts +68 -0
  267. package/dist/SidebarNav/SidebarNav.d.ts +117 -0
  268. package/dist/SidebarNav/index.d.ts +3 -0
  269. package/dist/SidebarNav/index.js +3 -0
  270. package/dist/SidebarNav-QGSFKZYA.css +319 -0
  271. package/dist/Skeleton/Skeleton.d.ts +50 -0
  272. package/dist/Skeleton/index.d.ts +3 -0
  273. package/dist/Skeleton/index.js +3 -0
  274. package/dist/Skeleton-V735HRGM.css +421 -0
  275. package/dist/StatCard/StatCard.d.ts +56 -0
  276. package/dist/StatCard/index.d.ts +3 -0
  277. package/dist/StatCard/index.js +3 -0
  278. package/dist/StatCard-KYPKZUWX.css +111 -0
  279. package/dist/StatGroup/StatGroup.d.ts +20 -0
  280. package/dist/StatGroup/index.d.ts +3 -0
  281. package/dist/StatGroup/index.js +2 -0
  282. package/dist/StatGroup-TGB6AEKM.css +80 -0
  283. package/dist/StatusDot/StatusDot.d.ts +25 -0
  284. package/dist/StatusDot/index.d.ts +3 -0
  285. package/dist/StatusDot/index.js +2 -0
  286. package/dist/StatusDot-HA2L2FSX.css +84 -0
  287. package/dist/Switch/Switch.d.ts +38 -0
  288. package/dist/Switch/index.d.ts +3 -0
  289. package/dist/Switch/index.js +2 -0
  290. package/dist/Switch-U4OWK4CL.css +169 -0
  291. package/dist/Table/Table.d.ts +51 -0
  292. package/dist/Table/index.d.ts +3 -0
  293. package/dist/Table/index.js +3 -0
  294. package/dist/Table-MDOLVUAW.css +159 -0
  295. package/dist/Tabs/Tabs.d.ts +97 -0
  296. package/dist/Tabs/index.d.ts +3 -0
  297. package/dist/Tabs/index.js +4 -0
  298. package/dist/Tabs/roving.d.ts +67 -0
  299. package/dist/Tabs-VLICJFVB.css +275 -0
  300. package/dist/Tag/Tag.d.ts +107 -0
  301. package/dist/Tag/index.d.ts +3 -0
  302. package/dist/Tag/index.js +3 -0
  303. package/dist/Tag-VNZEYLB6.css +406 -0
  304. package/dist/TagGroup/TagGroup.d.ts +41 -0
  305. package/dist/TagGroup/index.d.ts +3 -0
  306. package/dist/TagGroup/index.js +4 -0
  307. package/dist/TagGroup-APC2EFH4.css +75 -0
  308. package/dist/TagsInput/TagsInput.d.ts +112 -0
  309. package/dist/TagsInput/index.d.ts +3 -0
  310. package/dist/TagsInput/index.js +10 -0
  311. package/dist/TagsInput-W4P36PRJ.css +168 -0
  312. package/dist/Text/Text.d.ts +67 -0
  313. package/dist/Text/index.d.ts +3 -0
  314. package/dist/Text/index.js +2 -0
  315. package/dist/Text-XIPYYZX2.css +154 -0
  316. package/dist/ThemeSwitcher/ThemeSwitcher.d.ts +47 -0
  317. package/dist/ThemeSwitcher/index.d.ts +4 -0
  318. package/dist/ThemeSwitcher/index.js +6 -0
  319. package/dist/ThemeSwitcher/preferences.d.ts +51 -0
  320. package/dist/TimeWindowPicker/TimeWindowPicker.d.ts +231 -0
  321. package/dist/TimeWindowPicker/index.d.ts +3 -0
  322. package/dist/TimeWindowPicker/index.js +13 -0
  323. package/dist/TimeWindowPicker/mask.d.ts +82 -0
  324. package/dist/TimeWindowPicker-7I7KWCMU.css +403 -0
  325. package/dist/Timeline/Timeline.d.ts +51 -0
  326. package/dist/Timeline/index.d.ts +3 -0
  327. package/dist/Timeline/index.js +3 -0
  328. package/dist/Timeline-27SYKOFX.css +144 -0
  329. package/dist/Toaster/Toaster.d.ts +108 -0
  330. package/dist/Toaster/index.d.ts +3 -0
  331. package/dist/Toaster/index.js +5 -0
  332. package/dist/Toaster-NVDCEIP5.css +306 -0
  333. package/dist/Toolbar/Toolbar.d.ts +62 -0
  334. package/dist/Toolbar/index.d.ts +3 -0
  335. package/dist/Toolbar/index.js +4 -0
  336. package/dist/Toolbar-IP6LXN45.css +48 -0
  337. package/dist/Tooltip/Tooltip.d.ts +51 -0
  338. package/dist/Tooltip/index.d.ts +3 -0
  339. package/dist/Tooltip/index.js +4 -0
  340. package/dist/Tooltip-LKQF7CE4.css +71 -0
  341. package/dist/Tree/index.d.ts +8 -0
  342. package/dist/Tree/index.js +1 -0
  343. package/dist/Tree/layout.d.ts +160 -0
  344. package/dist/Tree/model.d.ts +110 -0
  345. package/dist/Tree/useMeasuredSizes.d.ts +61 -0
  346. package/dist/Tree/useTreeState.d.ts +89 -0
  347. package/dist/TreeCanvas/TreeCanvas.d.ts +384 -0
  348. package/dist/TreeCanvas/index.d.ts +3 -0
  349. package/dist/TreeCanvas/index.js +10 -0
  350. package/dist/TreeCanvas/motion.d.ts +59 -0
  351. package/dist/TreeCanvas-WBNQPHC7.css +1098 -0
  352. package/dist/TreeGrid/TreeGrid.d.ts +142 -0
  353. package/dist/TreeGrid/index.d.ts +3 -0
  354. package/dist/TreeGrid/index.js +8 -0
  355. package/dist/TreeGrid-NSW7VMOX.css +132 -0
  356. package/dist/VisuallyHidden/VisuallyHidden.d.ts +23 -0
  357. package/dist/VisuallyHidden/index.d.ts +3 -0
  358. package/dist/VisuallyHidden/index.js +2 -0
  359. package/dist/VisuallyHidden-L552H7OA.css +21 -0
  360. package/dist/chunk-22O7LAW2.js +41 -0
  361. package/dist/chunk-23DHIMJA.js +38 -0
  362. package/dist/chunk-2EOKFKHX.js +263 -0
  363. package/dist/chunk-2HQR4U4D.js +143 -0
  364. package/dist/chunk-2PRH365R.js +74 -0
  365. package/dist/chunk-2ZQMA2WB.js +57 -0
  366. package/dist/chunk-34VGEDVV.js +907 -0
  367. package/dist/chunk-3CZ7XAVY.js +139 -0
  368. package/dist/chunk-3EYF6HKB.js +135 -0
  369. package/dist/chunk-3QRYCPXQ.js +116 -0
  370. package/dist/chunk-3ZP55QZE.js +40 -0
  371. package/dist/chunk-53DVJCVW.js +14 -0
  372. package/dist/chunk-5C5YMZQU.js +51 -0
  373. package/dist/chunk-5EKIWVOR.js +132 -0
  374. package/dist/chunk-5KPQ6D7N.js +54 -0
  375. package/dist/chunk-5SDBMKUO.js +297 -0
  376. package/dist/chunk-5VNUYO76.js +62 -0
  377. package/dist/chunk-5WS6L6FA.js +114 -0
  378. package/dist/chunk-6ZFVFA56.js +108 -0
  379. package/dist/chunk-7EM5T4ME.js +39 -0
  380. package/dist/chunk-7FZ53WDJ.js +163 -0
  381. package/dist/chunk-7HPRF5XN.js +525 -0
  382. package/dist/chunk-7RPGY3JE.js +43 -0
  383. package/dist/chunk-A2UXBCLO.js +48 -0
  384. package/dist/chunk-AV2DXAEL.js +27 -0
  385. package/dist/chunk-BHHIIK3M.js +17 -0
  386. package/dist/chunk-BZFWDIV6.js +9 -0
  387. package/dist/chunk-BZYDZBAN.js +123 -0
  388. package/dist/chunk-CMEE37QJ.js +628 -0
  389. package/dist/chunk-D35VTV2Z.js +106 -0
  390. package/dist/chunk-DD5BBGBE.js +162 -0
  391. package/dist/chunk-EN6K2IFA.js +256 -0
  392. package/dist/chunk-ESCO4XYW.js +144 -0
  393. package/dist/chunk-EUCC37WY.js +14 -0
  394. package/dist/chunk-EV6IMYJ6.js +62 -0
  395. package/dist/chunk-F27EPQ7D.js +68 -0
  396. package/dist/chunk-F4PJZ4ED.js +245 -0
  397. package/dist/chunk-F6OE5FH3.js +49 -0
  398. package/dist/chunk-FBZAKNSX.js +263 -0
  399. package/dist/chunk-FEFTGVMF.js +46 -0
  400. package/dist/chunk-GTOUGQQK.js +147 -0
  401. package/dist/chunk-GXQ3B46I.js +216 -0
  402. package/dist/chunk-H4FBTAYS.js +130 -0
  403. package/dist/chunk-HOXGBLEY.js +37 -0
  404. package/dist/chunk-HQNHV7D6.js +54 -0
  405. package/dist/chunk-HZ5XZNPS.js +98 -0
  406. package/dist/chunk-IAJLHVUA.js +28 -0
  407. package/dist/chunk-IJ7QXNIJ.js +1 -0
  408. package/dist/chunk-ITHXJHBB.js +280 -0
  409. package/dist/chunk-JCSA3XVH.js +32 -0
  410. package/dist/chunk-KLJCCMF3.js +97 -0
  411. package/dist/chunk-LWKJQTOM.js +77 -0
  412. package/dist/chunk-MNAXYY3R.js +215 -0
  413. package/dist/chunk-NDCATSW7.js +229 -0
  414. package/dist/chunk-NN62JQLR.js +29 -0
  415. package/dist/chunk-NPZY6YYL.js +251 -0
  416. package/dist/chunk-NTRZGNEX.js +529 -0
  417. package/dist/chunk-O6232G37.js +273 -0
  418. package/dist/chunk-O67VF5MS.js +58 -0
  419. package/dist/chunk-ODEQTPFM.js +6 -0
  420. package/dist/chunk-OFHBK7RI.js +498 -0
  421. package/dist/chunk-PNFASD6F.js +98 -0
  422. package/dist/chunk-PQADV6P6.js +19 -0
  423. package/dist/chunk-PZSWF74H.js +15 -0
  424. package/dist/chunk-Q4ZPPART.js +26 -0
  425. package/dist/chunk-QEUY3A5P.js +186 -0
  426. package/dist/chunk-QNCVHRZL.js +17 -0
  427. package/dist/chunk-QVE4GJAT.js +15 -0
  428. package/dist/chunk-QYOFACSP.js +36 -0
  429. package/dist/chunk-RA2ULG6H.js +29 -0
  430. package/dist/chunk-RDGD7Z7I.js +350 -0
  431. package/dist/chunk-RK4XPHVG.js +16 -0
  432. package/dist/chunk-RSAQOKH3.js +38 -0
  433. package/dist/chunk-S2XHHEW4.js +84 -0
  434. package/dist/chunk-S4GZWSKR.js +137 -0
  435. package/dist/chunk-SFZOKW2G.js +52 -0
  436. package/dist/chunk-UG46QBLT.js +325 -0
  437. package/dist/chunk-UOGSZKLT.js +134 -0
  438. package/dist/chunk-V2XMNLMS.js +52 -0
  439. package/dist/chunk-W4ENKCXJ.js +40 -0
  440. package/dist/chunk-W5J7R5EB.js +107 -0
  441. package/dist/chunk-WNI2WSJF.js +27 -0
  442. package/dist/chunk-WOYYD2YR.js +823 -0
  443. package/dist/chunk-WQX73TWF.js +1652 -0
  444. package/dist/chunk-XDTYBF2F.js +36 -0
  445. package/dist/chunk-XN4JBAN3.js +32 -0
  446. package/dist/chunk-XV6WRMBC.js +211 -0
  447. package/dist/chunk-YLYOWZ4V.js +33 -0
  448. package/dist/chunk-YODNNSZL.js +63 -0
  449. package/dist/chunk-ZCR6YGQ4.js +1 -0
  450. package/dist/chunk-ZFATEERP.js +144 -0
  451. package/dist/generated/index.d.ts +83 -0
  452. package/dist/generated/index.js +91 -0
  453. package/dist/index.d.ts +1 -1217
  454. package/dist/index.js +91 -4518
  455. package/dist/styles.css +14898 -4274
  456. package/dist/utils/cx.d.ts +10 -0
  457. package/dist/utils/headingLevel.d.ts +16 -0
  458. package/dist/utils/index.d.ts +6 -0
  459. package/dist/utils/index.js +4 -0
  460. package/dist/utils/tone.d.ts +25 -0
  461. package/dist/utils/useClipboard.d.ts +82 -0
  462. package/package.json +18 -10
  463. package/scripts/bundle-css.mjs +25 -0
  464. package/scripts/check-css-literals.mjs +166 -0
  465. package/scripts/check-css-variables.mjs +184 -0
  466. package/scripts/check-css.mjs +27 -0
  467. package/scripts/css-source.mjs +67 -0
  468. package/scripts/write-barrel.mjs +60 -0
  469. package/dist/Accordion-NIMJQIOI.css +0 -88
  470. package/dist/AppShell-ZW3NSFBP.css +0 -51
  471. package/dist/Avatar-V6NG6Q45.css +0 -67
  472. package/dist/Button-XGCTXXYP.css +0 -174
  473. package/dist/Callout-LEGDIMAM.css +0 -52
  474. package/dist/Card-BOZGBML7.css +0 -86
  475. package/dist/Checkbox-OCUICIIZ.css +0 -58
  476. package/dist/CodeBlock-IEMBNIQC.css +0 -90
  477. package/dist/Container-LTKBA2FW.css +0 -21
  478. package/dist/Copyable-IB57OTHZ.css +0 -123
  479. package/dist/DataTable-3GALZUW2.css +0 -1593
  480. package/dist/DateTimePicker-NMSSGVPK.css +0 -312
  481. package/dist/Eyebrow-AVBORAS2.css +0 -30
  482. package/dist/IconButton-GB4PJDG2.css +0 -82
  483. package/dist/ImageUpload-3HQDF2KC.css +0 -158
  484. package/dist/Input-ZHUTN7CU.css +0 -210
  485. package/dist/Kbd-Q77CDZY7.css +0 -23
  486. package/dist/Modal-FJVG66S4.css +0 -138
  487. package/dist/Popover-FUFULUE2.css +0 -123
  488. package/dist/PricingCard-NKYV3JHA.css +0 -238
  489. package/dist/Section-665ZIPG6.css +0 -20
  490. package/dist/Select-GPRF7PRB.css +0 -294
  491. package/dist/Skeleton-3WEFLRDN.css +0 -378
  492. package/dist/StatCard-RTJIVTRB.css +0 -50
  493. package/dist/Table-AR3TRY2E.css +0 -89
  494. package/dist/Tabs-XZ4JIH3E.css +0 -153
  495. package/dist/Tag-R5QDJLYJ.css +0 -163
  496. package/dist/TimeWindowPicker-L3G5Q7UT.css +0 -629
  497. package/dist/Toaster-2O65VOR4.css +0 -264
@@ -0,0 +1,77 @@
1
+ import { type HTMLAttributes, type ReactNode } from 'react';
2
+ export interface CommandPaletteItem {
3
+ /** Stable across a re-query: it keys the row and names its option element. */
4
+ id: string;
5
+ /** A glyph, drawn beside the label. Decorative: the label carries the words. */
6
+ icon?: ReactNode;
7
+ label: ReactNode;
8
+ /** What the row is, at its end: a path, a kind, a state. */
9
+ hint?: ReactNode;
10
+ onSelect: () => void;
11
+ }
12
+ export interface CommandPaletteGroup {
13
+ id: string;
14
+ /** The heading over the group, and the name a screen reader gives it. */
15
+ label: string;
16
+ items: CommandPaletteItem[];
17
+ }
18
+ /**
19
+ * Rest props reach the Modal's frame, which is what lets an application put
20
+ * its own chord on the surface (see the component doc).
21
+ *
22
+ * `role` and `onSubmit` are not among them: the surface is a dialog, and a
23
+ * palette announced as anything else is one a screen reader cannot get out of;
24
+ * a palette takes an answer from its list, not from a form submission. Nor are
25
+ * the three ARIA relationships, which the Modal decides: `label` names this
26
+ * surface and its field together.
27
+ */
28
+ export interface CommandPaletteProps extends Omit<HTMLAttributes<HTMLElement>, 'children' | 'role' | 'onSubmit' | 'aria-label' | 'aria-labelledby' | 'aria-describedby'> {
29
+ open: boolean;
30
+ onClose: () => void;
31
+ /** Names the surface and its field. */
32
+ label?: string | undefined;
33
+ query: string;
34
+ onQueryChange: (query: string) => void;
35
+ /** What is offered right now. The caller does the searching and the ranking. */
36
+ groups: CommandPaletteGroup[];
37
+ placeholder?: string | undefined;
38
+ /** The hints under the results, usually `Kbd` keycaps. */
39
+ footer?: ReactNode;
40
+ /** Said when the query matches nothing. Name the kind of nothing it is. */
41
+ emptyMessage?: string | undefined;
42
+ /** Names the result list itself. */
43
+ resultsLabel?: string | undefined;
44
+ }
45
+ /**
46
+ * One search surface for a whole product: screens, records, and any id pasted
47
+ * out of a log.
48
+ *
49
+ * IT KNOWS NOTHING ABOUT WHAT IT SEARCHES. The caller ranks and groups, and
50
+ * hands over rows; what this owns is the surface, the keyboard and the way a
51
+ * screen reader hears it. The alternative, a component that took a data source,
52
+ * would need one ranking rule per product and would still be wrong for the
53
+ * next one.
54
+ *
55
+ * IT IS A COMBOBOX. Focus stays in the field and the arrows move a highlight
56
+ * through the results, which the field names with `aria-activedescendant`, so a
57
+ * screen reader hears each result as it is reached. Results drawn as buttons
58
+ * instead put up to forty tab stops between the field and itself, and the
59
+ * highlight moved in silence.
60
+ *
61
+ * THE LIST IS THE SURFACE'S OWN BODY, not a popup above it (`popup: false`).
62
+ * Registered as a popup, the list would take Escape from the stack and take the
63
+ * veil's press on `pointerdown`, closing the palette before that press's click
64
+ * and letting the click land on whatever the veil was covering.
65
+ *
66
+ * A ROW OPENS ON ITS CLICK, not on the press. Nothing here closes on blur, so
67
+ * there is no reason to act early, and a surface gone on the press would leave
68
+ * the release to land on the screen beneath it. The press itself is still
69
+ * prevented, so it does not move focus off the field: a combobox that loses its
70
+ * input names no highlight, and typing reaches nothing.
71
+ *
72
+ * THE CHORD THAT OPENS IT IS THE APPLICATION'S, not this component's. Pass an
73
+ * `onKeyDown`: it reaches the frame, which is every key pressed inside the
74
+ * surface, and closing from there is one line the caller already has the
75
+ * definition for.
76
+ */
77
+ export declare function CommandPalette({ open, ...rest }: CommandPaletteProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,3 @@
1
+ import './CommandPalette.css';
2
+ export { CommandPalette } from './CommandPalette.js';
3
+ export type { CommandPaletteGroup, CommandPaletteItem, CommandPaletteProps } from './CommandPalette.js';
@@ -0,0 +1,11 @@
1
+ export { CommandPalette } from '../chunk-ESCO4XYW.js';
2
+ import '../chunk-2EOKFKHX.js';
3
+ import '../chunk-GTOUGQQK.js';
4
+ import '../chunk-O6232G37.js';
5
+ import '../chunk-PQADV6P6.js';
6
+ import '../chunk-7RPGY3JE.js';
7
+ import '../chunk-ITHXJHBB.js';
8
+ import '../chunk-F27EPQ7D.js';
9
+ import '../chunk-BZYDZBAN.js';
10
+ import '../chunk-BZFWDIV6.js';
11
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,115 @@
1
+ /*
2
+ * The command palette: a field, a list, and a line of keyboard hints.
3
+ *
4
+ * It is a Modal with its body's padding dropped, so the three bands run edge to
5
+ * edge and the field reads as the surface rather than as a question on a form.
6
+ * The rows are the listbox register (`Listbox.css`), because a result here and
7
+ * a completion in a field are the same thing to a reader and the accent that
8
+ * marks the active row has to mean the same in both.
9
+ *
10
+ * THE TWO OVERRIDES BELOW NAME BOTH CLASSES ON PURPOSE. A single class would
11
+ * tie with the rule it is overriding (`.crewlet-modal--md`,
12
+ * `.crewlet-input--command`), and a tie is broken by the order the stylesheets
13
+ * happen to be concatenated in, which is alphabetical over filenames.
14
+ */
15
+
16
+ .crewlet-modal.crewlet-palette {
17
+ /* Wider than a prompt and shorter than the window: a launcher is read in one
18
+ glance, and a list taller than this is a list nobody scans. */
19
+ --crewlet-modal-width: 620px;
20
+
21
+ max-height: min(60dvh, 520px);
22
+ }
23
+
24
+ /*
25
+ * THE BODY LAYS THE THREE BANDS OUT, and the RESULTS are what scrolls.
26
+ *
27
+ * A Modal's body is a block that scrolls its whole content, which is right for
28
+ * a dialog read top to bottom and wrong here: the field would ride up out of
29
+ * view as the arrows walked the list, and the list, sized to its own content,
30
+ * would never overflow, so the row the listbox brings into view by scrolling
31
+ * that element would have nowhere to go.
32
+ */
33
+ .crewlet-palette .crewlet-modal__body {
34
+ display: flex;
35
+ flex-direction: column;
36
+ overflow: hidden;
37
+ }
38
+
39
+ /*
40
+ * The field, drawn as the surface's own top band: no box of its own, the full
41
+ * height of a large row, and the question asked at the reading size rather
42
+ * than at a control's. It is the first thing on the surface and the only thing
43
+ * with focus, so it is the surface's headline as much as its input.
44
+ */
45
+ .crewlet-input.crewlet-palette__field {
46
+ flex-shrink: 0;
47
+ min-height: var(--size-row-lg);
48
+ padding-inline: var(--spacing-4);
49
+ border: none;
50
+ border-bottom: 1px solid var(--color-border-default);
51
+ border-radius: 0;
52
+ background: transparent;
53
+ }
54
+
55
+ .crewlet-input.crewlet-palette__field .crewlet-input__control {
56
+ font-size: var(--font-size-md);
57
+ }
58
+
59
+ /*
60
+ * THE FOOT IS THE KEYBOARD'S OWN BAND, at the micro register rather than the
61
+ * modal footer's. A modal's foot carries buttons and is sized for them; this
62
+ * one carries a line of keycaps saying what the arrows, Enter and Escape do,
63
+ * and at a dialog's padding that line reads as an action row nobody can press.
64
+ *
65
+ * Both classes are named for the same reason the two rules below are: a single
66
+ * class ties with `.crewlet-modal__footer`, and a tie is broken by the order
67
+ * the stylesheets are concatenated in.
68
+ */
69
+ .crewlet-palette .crewlet-modal__footer {
70
+ gap: var(--spacing-3);
71
+ padding: var(--spacing-2) var(--spacing-3);
72
+ }
73
+
74
+ .crewlet-palette .crewlet-modal__footer-start {
75
+ gap: var(--spacing-3);
76
+ font-size: var(--font-size-2xs);
77
+ }
78
+
79
+ .crewlet-palette__results {
80
+ flex: 1 1 auto;
81
+ min-height: 0;
82
+ overflow-y: auto;
83
+ overscroll-behavior: contain;
84
+ padding: var(--spacing-1);
85
+ }
86
+
87
+ /*
88
+ * The glyph takes the ROW'S colour rather than a quiet step of its own, so the
89
+ * row under the arrows turns accent in one piece. Pinned to the tertiary step
90
+ * it stayed grey inside the highlight, which read as a glyph that had failed
91
+ * to load.
92
+ */
93
+ .crewlet-palette__icon {
94
+ display: inline-flex;
95
+ flex-shrink: 0;
96
+ }
97
+
98
+ .crewlet-palette__label {
99
+ min-width: 0;
100
+ overflow: hidden;
101
+ text-overflow: ellipsis;
102
+ white-space: nowrap;
103
+ }
104
+
105
+ /*
106
+ * An honest empty state: it says which kind of nothing this is, and the
107
+ * component takes the sentence from the caller for that reason.
108
+ */
109
+ .crewlet-palette__empty {
110
+ margin: 0;
111
+ padding: var(--spacing-5) var(--spacing-4);
112
+ color: var(--color-text-tertiary);
113
+ font-size: var(--font-size-compact);
114
+ text-align: center;
115
+ }
@@ -0,0 +1,17 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export type ContainerSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';
3
+ export interface ContainerProps extends HTMLAttributes<HTMLDivElement> {
4
+ /**
5
+ * Max content width. sm 720, md 960, lg 1200, xl 1440, and `2xl` the
6
+ * content-max token (1600), which is the widest a console pane goes before
7
+ * a table's rows stop being scannable across. `full` keeps the gutter and
8
+ * drops the measure, for a canvas or a wide grid.
9
+ */
10
+ size?: ContainerSize | undefined;
11
+ }
12
+ /**
13
+ * Container, the centered max-width wrapper that gives every page a
14
+ * consistent measure and horizontal gutter. Pair with Section for the
15
+ * vertical rhythm.
16
+ */
17
+ export declare const Container: ({ size, className, children, ...rest }: ContainerProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './Container.css';
2
+ export { Container } from './Container.js';
3
+ export type { ContainerProps, ContainerSize } from './Container.js';
@@ -0,0 +1,2 @@
1
+ export { Container } from '../chunk-QVE4GJAT.js';
2
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,52 @@
1
+ /*
2
+ * Container, the centred content measure. One max-width scale shared by every
3
+ * surface, so pages line up regardless of who composed them.
4
+ */
5
+
6
+ .crewlet-container {
7
+ width: 100%;
8
+ margin-inline: auto;
9
+ /* The console's own gutter. A wider one leaves a table's first column
10
+ further from the window edge than the rail beside it is. */
11
+ padding-inline: var(--spacing-5);
12
+ }
13
+
14
+ .crewlet-container--sm {
15
+ max-width: 720px;
16
+ }
17
+
18
+ .crewlet-container--md {
19
+ max-width: 960px;
20
+ }
21
+
22
+ .crewlet-container--lg {
23
+ max-width: 1200px;
24
+ }
25
+
26
+ .crewlet-container--xl {
27
+ max-width: 1440px;
28
+ }
29
+
30
+ /*
31
+ * The console width. It reads the content-max token rather than restating the
32
+ * number, because the shell and this container have to agree about where a
33
+ * pane stops or a screen's own header sits at a different width from the
34
+ * screen under it.
35
+ */
36
+ .crewlet-container--2xl {
37
+ max-width: var(--size-content-max);
38
+ }
39
+
40
+ /*
41
+ * No measure, and the gutter kept. A canvas, a wide grid or a table that
42
+ * genuinely wants the viewport still needs its content off the window edge.
43
+ */
44
+ .crewlet-container--full {
45
+ max-width: none;
46
+ }
47
+
48
+ @media (max-width: 480px) {
49
+ .crewlet-container {
50
+ padding-inline: var(--spacing-3);
51
+ }
52
+ }
@@ -0,0 +1,64 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type ButtonSize, type ButtonVariant } from '../Button/index.js';
3
+ import { type ClipboardState } from '../utils/useClipboard.js';
4
+ /** What a copy control draws for each state. */
5
+ export declare function copyGlyph(state: ClipboardState): ReactNode;
6
+ export interface CopyStatusProps {
7
+ state: ClipboardState;
8
+ copiedMessage: string;
9
+ failedMessage: string;
10
+ }
11
+ /**
12
+ * What the copy did, said out loud.
13
+ *
14
+ * A SIBLING OF THE CONTROL, NEVER A CHILD. An accessible name is computed
15
+ * from an element's contents, so a live region inside the button named it
16
+ * "Copied copied to the clipboard", the status text becoming part of what the
17
+ * button claimed to be.
18
+ */
19
+ export declare function CopyStatus({ state, copiedMessage, failedMessage }: CopyStatusProps): import("react/jsx-runtime").JSX.Element;
20
+ export interface CopyButtonProps {
21
+ /**
22
+ * The text, or a THUNK that produces it.
23
+ *
24
+ * The thunk is not a convenience. On a live record the thing worth copying
25
+ * is assembled from everything on the screen, and a screen that pushes twice
26
+ * per second would serialize the whole record on every push for a button
27
+ * nobody has pressed. Resolved on the press, it costs nothing until it is
28
+ * asked for.
29
+ */
30
+ text: string | (() => string);
31
+ /** The label at rest. */
32
+ label?: string | undefined;
33
+ /** The label once the text is on the clipboard. */
34
+ copiedLabel?: string | undefined;
35
+ /** The label when the browser refused. */
36
+ failedLabel?: string | undefined;
37
+ /** Read out on success. */
38
+ copiedMessage?: string | undefined;
39
+ /** Read out on failure. */
40
+ failedMessage?: string | undefined;
41
+ size?: ButtonSize | undefined;
42
+ variant?: ButtonVariant | undefined;
43
+ title?: string | undefined;
44
+ /** How long `copiedLabel` stands before the control offers its action again. */
45
+ resetMs?: number | undefined;
46
+ /**
47
+ * How long `failedLabel` stands. Unset it is `resetMs`; `null` holds it
48
+ * until the next press. See [ClipboardOptions.failedResetMs] for why a
49
+ * refusal wants a clock of its own — and note the cost of `null`, which is
50
+ * that the control's accessible name stays "Copy failed" and so names a
51
+ * status rather than the action it still performs.
52
+ */
53
+ failedResetMs?: number | null | undefined;
54
+ className?: string | undefined;
55
+ }
56
+ /**
57
+ * Put text on the clipboard, and SAY WHETHER IT LANDED.
58
+ *
59
+ * The clipboard is invisible: a copy that reached no clipboard clicks exactly
60
+ * like one that did, so the label and the glyph are the only evidence a
61
+ * sighted reader gets and the status region is the only evidence anybody else
62
+ * gets. Both are part of the control, not decoration on it.
63
+ */
64
+ export declare function CopyButton({ text, label, copiedLabel, failedLabel, copiedMessage, failedMessage, size, variant, title, resetMs, failedResetMs, className, }: CopyButtonProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,42 @@
1
+ export type CopyableVariant = 'chip' | 'inline' | 'block';
2
+ export interface CopyableProps {
3
+ /** The value shown, and the text copied. */
4
+ value: string | number | null | undefined;
5
+ /** Shown instead of the value, when the value itself is not what to read. */
6
+ display?: string | undefined;
7
+ variant?: CopyableVariant | undefined;
8
+ monospace?: boolean | undefined;
9
+ truncate?: boolean | undefined;
10
+ truncateLength?: number | undefined;
11
+ /** Names the copy control. */
12
+ ariaLabel?: string | undefined;
13
+ /** The copy control's tooltip. */
14
+ title?: string | undefined;
15
+ /** Read out on success. */
16
+ copiedMessage?: string | undefined;
17
+ /** Read out on failure. */
18
+ failedMessage?: string | undefined;
19
+ /** How long the tick stands before the control settles back. */
20
+ resetMs?: number | undefined;
21
+ /**
22
+ * How long the refusal glyph stands. Unset it is `resetMs`; `null` holds it
23
+ * until the next press. See [ClipboardOptions.failedResetMs] for why a
24
+ * refusal wants a clock of its own.
25
+ */
26
+ failedResetMs?: number | null | undefined;
27
+ className?: string | undefined;
28
+ }
29
+ /**
30
+ * An identifier, with a control that copies it.
31
+ *
32
+ * ONE TAB STOP. The value used to be a `role="button"` span with its own
33
+ * `tabIndex` beside the button that did the same thing, so every id in a table
34
+ * was two stops on the way to the next row, and the first of them was a button
35
+ * that was not one. The value is text now, and the button is the only control.
36
+ *
37
+ * A REFUSAL IS REPORTED. The previous implementation awaited
38
+ * `document.execCommand` and reported success whatever it returned, so on the
39
+ * plain http origin anybody reads a remote dashboard at, the tick appeared and
40
+ * the clipboard was empty.
41
+ */
42
+ export declare const Copyable: ({ value, display, variant, monospace, truncate, truncateLength, ariaLabel, title, copiedMessage, failedMessage, resetMs, failedResetMs, className, }: CopyableProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,5 @@
1
+ import './Copyable.css';
2
+ export { Copyable } from './Copyable.js';
3
+ export type { CopyableProps, CopyableVariant } from './Copyable.js';
4
+ export { CopyButton } from './CopyButton.js';
5
+ export type { CopyButtonProps } from './CopyButton.js';
@@ -0,0 +1,6 @@
1
+ export { CopyButton, Copyable } from '../chunk-3QRYCPXQ.js';
2
+ import '../chunk-5VNUYO76.js';
3
+ import '../chunk-F27EPQ7D.js';
4
+ import '../chunk-BZYDZBAN.js';
5
+ import '../chunk-BZFWDIV6.js';
6
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,125 @@
1
+ /*
2
+ * Copyable: a value and the one control that copies it.
3
+ *
4
+ * Three framings, and they differ only in how the value is drawn:
5
+ *
6
+ * chip A compact pill for a table cell, with head and tail truncation.
7
+ * inline The value inline in a detail row, no chip behind it.
8
+ * block A bordered panel for a full URL or a command.
9
+ *
10
+ * The control is an IconButton in every one of them, and it is the only tab
11
+ * stop: the value is text.
12
+ */
13
+
14
+ .crewlet-copyable {
15
+ display: inline-flex;
16
+ align-items: center;
17
+ gap: var(--spacing-1);
18
+ max-width: 100%;
19
+ vertical-align: middle;
20
+ }
21
+
22
+ .crewlet-copyable__value {
23
+ font-family: var(--font-family-mono);
24
+ font-variant-ligatures: none;
25
+ letter-spacing: var(--font-letter-spacing-snug);
26
+ /* The ink every identifier chip in the system takes. A step quieter made a
27
+ value a reader is about to copy the faintest thing in its own row. */
28
+ color: var(--color-text-secondary);
29
+ white-space: nowrap;
30
+ min-width: 0;
31
+ overflow: hidden;
32
+ text-overflow: ellipsis;
33
+ }
34
+
35
+ /*
36
+ * The control is quiet until the row is reached, and it is REVEALED BY FOCUS
37
+ * as well as by hover: hidden from a keyboard reader, an opacity of 0 is a
38
+ * control that takes a tab stop and shows nothing.
39
+ */
40
+ .crewlet-copyable__button {
41
+ flex: none;
42
+ opacity: 0;
43
+ transition: opacity var(--motion-duration-fast) var(--motion-easing-default);
44
+ }
45
+
46
+ .crewlet-copyable:hover .crewlet-copyable__button,
47
+ .crewlet-copyable__button:focus-visible,
48
+ .crewlet-copyable.is-copied .crewlet-copyable__button,
49
+ .crewlet-copyable.is-failed .crewlet-copyable__button {
50
+ opacity: 1;
51
+ }
52
+
53
+ .crewlet-copyable.is-copied .crewlet-copyable__button {
54
+ color: var(--color-feedback-success-ink);
55
+ }
56
+
57
+ .crewlet-copyable.is-failed .crewlet-copyable__button {
58
+ color: var(--color-feedback-danger-ink);
59
+ }
60
+
61
+ /* ---- chip -------------------------------------------------------------- */
62
+
63
+ .crewlet-copyable--chip .crewlet-copyable__value {
64
+ font-size: var(--font-size-2xs);
65
+ background: var(--color-surface-inset);
66
+ padding: 1px var(--spacing-1);
67
+ border-radius: var(--radius-xs);
68
+ }
69
+
70
+ /* ---- inline ------------------------------------------------------------ */
71
+
72
+ .crewlet-copyable--inline .crewlet-copyable__value {
73
+ font-size: var(--font-size-xs);
74
+ background: transparent;
75
+ padding: 0;
76
+ color: var(--color-text-secondary);
77
+ }
78
+
79
+ /* ---- block ------------------------------------------------------------- */
80
+
81
+ .crewlet-copyable--block {
82
+ display: inline-flex;
83
+ width: 100%;
84
+ max-width: 100%;
85
+ box-sizing: border-box;
86
+ justify-content: space-between;
87
+ gap: var(--spacing-2);
88
+ /* The bordered value surface, which is the one a code block and a field
89
+ take. The elevated step here lifted a one-line value off the card it sits
90
+ on further than the card lifts off the page. */
91
+ background: var(--color-surface-subtle);
92
+ border: 1px solid var(--color-border-default);
93
+ border-radius: var(--radius-md);
94
+ padding: var(--spacing-2) var(--spacing-3);
95
+ }
96
+
97
+ .crewlet-copyable--block .crewlet-copyable__value {
98
+ font-size: var(--font-size-compact);
99
+ color: var(--color-text-primary);
100
+ background: transparent;
101
+ padding: 0;
102
+ white-space: nowrap;
103
+ overflow-x: auto;
104
+ flex: 1;
105
+ }
106
+
107
+ /* A panel's control is always drawn: there is nothing else in the panel. */
108
+ .crewlet-copyable--block .crewlet-copyable__button {
109
+ opacity: 1;
110
+ }
111
+
112
+ /*
113
+ * The mono face for any framing, for a value that is a command rather than an
114
+ * identifier. The value is already mono, so this is what a caller reaches for
115
+ * when `display` has replaced it with prose.
116
+ */
117
+ .crewlet-copyable--monospace .crewlet-copyable__value {
118
+ font-family: var(--font-family-mono);
119
+ }
120
+
121
+ @media (prefers-reduced-motion: reduce) {
122
+ .crewlet-copyable__button {
123
+ transition: none;
124
+ }
125
+ }
@@ -0,0 +1,24 @@
1
+ export interface CountProps {
2
+ /** How many. Rendered as it is given, so a caller decides its own formatting. */
3
+ value: number | string;
4
+ /**
5
+ * What is being counted, read after the number: "3 open incidents". Without
6
+ * one the number is read on its own, which is right beside a heading that
7
+ * already says what it counts.
8
+ */
9
+ label?: string | undefined;
10
+ className?: string | undefined;
11
+ }
12
+ /**
13
+ * How many of something a panel, a tab or a heading is about.
14
+ *
15
+ * IT IS NEVER TINTED, and that is the whole rule. A count coloured by severity
16
+ * is a claim the number cannot support: three of something is not a warning,
17
+ * and a red 3 beside "Failures" says the same thing twice while a red 3 beside
18
+ * "Retries" says something nobody meant. It sits on the inset surface in the
19
+ * tertiary ink, in every context.
20
+ *
21
+ * Tabular figures, so a count that ticks up does not shift the heading beside
22
+ * it, and a minimum width so 1 and 10 draw the same pill.
23
+ */
24
+ export declare function Count({ value, label, className }: CountProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './Count.css';
2
+ export { Count } from './Count.js';
3
+ export type { CountProps } from './Count.js';
@@ -0,0 +1,3 @@
1
+ export { Count } from '../chunk-BHHIIK3M.js';
2
+ import '../chunk-BZFWDIV6.js';
3
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,20 @@
1
+ /*
2
+ * The count pill. One neutral look, deliberately: see the component doc for
3
+ * why a count is never tinted.
4
+ */
5
+
6
+ .crewlet-count {
7
+ display: inline-flex;
8
+ align-items: center;
9
+ justify-content: center;
10
+ min-width: 20px;
11
+ padding: 1px var(--spacing-2);
12
+ border-radius: var(--radius-pill);
13
+ background: var(--color-surface-inset);
14
+ color: var(--color-text-tertiary);
15
+ font-size: var(--font-size-2xs);
16
+ font-weight: var(--font-weight-medium);
17
+ /* A count that ticks up must not shift the heading beside it. */
18
+ font-variant-numeric: tabular-nums;
19
+ line-height: var(--font-line-height-normal);
20
+ }
@@ -0,0 +1,12 @@
1
+ import { type ReactNode } from 'react';
2
+ export interface CopyableCellProps {
3
+ value: string | number | null | undefined;
4
+ children?: ReactNode;
5
+ /** The button's accessible name. */
6
+ ariaLabel?: string;
7
+ /** What the status line says once the value is on the clipboard. */
8
+ copiedLabel?: string;
9
+ /** What it says when the clipboard refused. */
10
+ failedLabel?: string;
11
+ }
12
+ export declare const CopyableCell: ({ value, children, ariaLabel, copiedLabel, failedLabel, }: CopyableCellProps) => import("react/jsx-runtime").JSX.Element;