@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,128 @@
1
+ /*
2
+ * The month grid, shared by every picker.
3
+ *
4
+ * Seven equal columns, drawn as a grid rather than a wrapped row of buttons,
5
+ * so a week is a row a reader can move along and a day sits in one. The cells
6
+ * are spans with grid roles rather than buttons: a button inside a gridcell
7
+ * is two focusable things where the pattern has one, and the roving tabindex
8
+ * is what makes the month a single tab stop.
9
+ */
10
+
11
+ .crewlet-calendar {
12
+ display: grid;
13
+ gap: 1px;
14
+ user-select: none;
15
+ }
16
+
17
+ .crewlet-calendar__weekdays,
18
+ .crewlet-calendar__week {
19
+ display: grid;
20
+ grid-template-columns: repeat(7, 1fr);
21
+ gap: 1px;
22
+ }
23
+
24
+ .crewlet-calendar__weekday {
25
+ display: flex;
26
+ align-items: center;
27
+ justify-content: center;
28
+ height: var(--size-row-sm);
29
+ font-size: var(--font-size-2xs);
30
+ font-weight: var(--font-weight-medium);
31
+ letter-spacing: var(--font-letter-spacing-wide);
32
+ text-transform: uppercase;
33
+ color: var(--color-text-tertiary);
34
+ }
35
+
36
+ .crewlet-calendar__day {
37
+ display: flex;
38
+ align-items: center;
39
+ justify-content: center;
40
+ /* Never under the 24px target floor, at any density. */
41
+ min-width: var(--size-control-sm);
42
+ height: var(--size-control-sm);
43
+ /* The corner every small row in the package wears: a menu item, a
44
+ completion, a day. */
45
+ border-radius: var(--radius-xs);
46
+ font-size: var(--font-size-compact);
47
+ font-variant-numeric: tabular-nums;
48
+ color: var(--color-text-primary);
49
+ cursor: pointer;
50
+ transition: background-color var(--motion-duration-fast) var(--motion-easing-default);
51
+ }
52
+
53
+ .crewlet-calendar__day:hover:not(.is-disabled):not(.is-selected):not(.is-blank) {
54
+ background: var(--color-surface-hover);
55
+ }
56
+
57
+ .crewlet-calendar__day.is-outside {
58
+ color: var(--color-text-tertiary);
59
+ }
60
+
61
+ /* A padding cell holds the column open and nothing else: no day, no tint, and
62
+ no cursor promising that a press does something. */
63
+ .crewlet-calendar__day.is-blank {
64
+ cursor: default;
65
+ }
66
+
67
+ .crewlet-calendar__day.is-disabled {
68
+ color: var(--color-text-tertiary);
69
+ cursor: not-allowed;
70
+ }
71
+
72
+ /*
73
+ * TODAY IS A RING, not a fill: the fill means "chosen", and the two are
74
+ * different facts that are often true of different days.
75
+ */
76
+ .crewlet-calendar__day.is-today {
77
+ box-shadow: inset 0 0 0 1px var(--color-border-hover);
78
+ }
79
+
80
+ /*
81
+ * A RANGE IS ONE BAND. The cells sit 1px apart, so a tint on each of them
82
+ * alone reads as a row of separate squares with the ground showing between.
83
+ * An OUTLINE in the band's own colour closes that gap on every side, which is
84
+ * what joins the weeks a multi-week range runs through as well as the days.
85
+ *
86
+ * An outline rather than a box-shadow because today's ring is a box-shadow: a
87
+ * second one on the same element replaces it, and a day that is both today and
88
+ * inside the chosen range would lose the ring that says which day it is. The
89
+ * focus ring is an outline too and is declared after this, so it still wins on
90
+ * the day the keyboard is on.
91
+ */
92
+ .crewlet-calendar__day.is-in-range {
93
+ background: var(--color-brand-accent-soft);
94
+ color: var(--color-brand-accent-ink);
95
+ border-radius: 0;
96
+ outline: 1px solid var(--color-brand-accent-soft);
97
+ }
98
+
99
+ .crewlet-calendar__day.is-selected {
100
+ background: var(--color-brand-accent);
101
+ color: var(--color-text-on-accent);
102
+ }
103
+
104
+ /*
105
+ * The ends of the band: the chosen day keeps its own fill and its own corner,
106
+ * and carries the band's colour around it so the chip reads as joined to the
107
+ * run beside it rather than floating one gap away from it.
108
+ */
109
+ .crewlet-calendar__day.is-range-start,
110
+ .crewlet-calendar__day.is-range-end {
111
+ outline: 1px solid var(--color-brand-accent-soft);
112
+ }
113
+
114
+ /*
115
+ * The ring is an OUTLINE, drawn INSIDE the cell: the grid is a clipping box
116
+ * at its edges, so an outset ring on the first or last column is cut off by
117
+ * it and painted over by the row beneath.
118
+ */
119
+ .crewlet-calendar__day:focus-visible {
120
+ outline: 2px solid var(--color-focus);
121
+ outline-offset: var(--size-focus-ring-inset-offset);
122
+ }
123
+
124
+ @media (prefers-reduced-motion: reduce) {
125
+ .crewlet-calendar__day {
126
+ transition: none;
127
+ }
128
+ }
@@ -0,0 +1,47 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ import type { Tone } from '../utils/tone.js';
3
+ /**
4
+ * The tones a callout speaks in.
5
+ *
6
+ * `brand` is deliberately not one of them. The accent means "where the reader
7
+ * is", and a banner is never that: an accented strip across a screen claims
8
+ * the reader's own position for a sentence about the system.
9
+ */
10
+ export type CalloutVariant = Exclude<Tone, 'brand'>;
11
+ /**
12
+ * A card in the content flow, or a strip across the surface it heads.
13
+ *
14
+ * `banner` is full bleed with no radius and only a bottom border, for the
15
+ * place a shell puts one: above a screen's content, against the edges, where a
16
+ * rounded card would leave a gutter of page colour down both sides.
17
+ */
18
+ export type CalloutLayout = 'card' | 'banner';
19
+ export interface CalloutProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
20
+ variant?: CalloutVariant | undefined;
21
+ /** A bold lead-in before the message. */
22
+ title?: ReactNode;
23
+ /** A glyph replacing the variant's own. A component, not a name. */
24
+ icon?: ReactNode;
25
+ layout?: CalloutLayout | undefined;
26
+ /** A control at the trailing edge: "Reconnect", "Open the log", "Dismiss". */
27
+ action?: ReactNode;
28
+ /**
29
+ * Announce this when it appears. OFF by default, which is the change from
30
+ * 0.2.0: every static banner on a screen was a live region, so a screen
31
+ * reader arriving at a page read out each of them in turn, and one that had
32
+ * been on the page for an hour was announced as news. Set it on a callout
33
+ * that appears IN RESPONSE to something, and use `role="alert"` for the one
34
+ * that must interrupt.
35
+ */
36
+ live?: 'polite' | 'assertive' | undefined;
37
+ }
38
+ /**
39
+ * A status in the content flow: an unreachable backend, a permission gate, a
40
+ * destructive action about to happen.
41
+ *
42
+ * It stays until the condition clears, which is what separates it from a
43
+ * toast. Anything a reader would want to find again must not be a toast; and
44
+ * anything that is the OUTCOME of a press they just made should not be a
45
+ * callout they have to go looking for.
46
+ */
47
+ export declare const Callout: ({ variant, title, icon, layout, action, live, className, children, ...rest }: CalloutProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './Callout.css';
2
+ export { Callout } from './Callout.js';
3
+ export type { CalloutLayout, CalloutProps, CalloutVariant } from './Callout.js';
@@ -0,0 +1,2 @@
1
+ export { Callout } from '../chunk-3ZP55QZE.js';
2
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,111 @@
1
+ /*
2
+ * The callout: a status that stays in the content flow.
3
+ *
4
+ * ITS INK IS THE TONE'S OWN `-ink` STEP, not a mix. 0.2.0 built every one of
5
+ * these with `color-mix(in srgb, <fill> 55%, var(--color-text-primary))`,
6
+ * which produces a colour nobody measured: the light warning reached 4.41:1
7
+ * against its own tint. The ink, the soft fill and the line are three declared
8
+ * steps the palette suite measures against each other, so the pair a reader
9
+ * sees is the pair that was checked.
10
+ */
11
+
12
+ .crewlet-callout {
13
+ --crewlet-callout-fill: var(--color-surface-inset);
14
+ --crewlet-callout-ink: var(--color-text-secondary);
15
+ /*
16
+ * TRANSPARENT, because the tint is the boundary. The engine's banner is a
17
+ * block of the tone's soft step with no rule around it: a 1px line in the
18
+ * same hue as the fill behind it adds a second edge a reader reads as a
19
+ * card, and the thing this component IS is a sentence the screen is saying
20
+ * rather than a card the screen contains. The pixel is still spent, so a
21
+ * consumer that overrides the line gets it back without the box moving.
22
+ */
23
+ --crewlet-callout-line: transparent;
24
+
25
+ display: flex;
26
+ align-items: flex-start;
27
+ gap: var(--spacing-2);
28
+ /* The engine's own: a tight strip rather than a padded card. This sits
29
+ above a screen or between two sections and takes a line or two of text,
30
+ and the card's 16px made a one-line banner 48px tall. */
31
+ padding: var(--spacing-2) var(--spacing-3);
32
+ border: 1px solid var(--crewlet-callout-line);
33
+ border-radius: var(--radius-md);
34
+ background: var(--crewlet-callout-fill);
35
+ color: var(--crewlet-callout-ink);
36
+ font-family: var(--font-family-sans);
37
+ font-size: var(--font-size-compact);
38
+ line-height: var(--font-line-height-normal);
39
+ }
40
+
41
+ .crewlet-callout__icon {
42
+ display: inline-flex;
43
+ flex: none;
44
+ /* On the first line's optical centre rather than its box top, which a 16px
45
+ glyph beside a 13px line sits two pixels above. */
46
+ margin-top: 2px;
47
+ }
48
+
49
+ .crewlet-callout__content {
50
+ min-width: 0;
51
+ flex: 1;
52
+ }
53
+
54
+ .crewlet-callout__title {
55
+ font-weight: var(--font-weight-semibold);
56
+ margin-right: var(--spacing-2);
57
+ }
58
+
59
+ .crewlet-callout__action {
60
+ flex: none;
61
+ align-self: center;
62
+ }
63
+
64
+ /*
65
+ * Inline code inside a callout takes the callout's ink. A mono chip that kept
66
+ * its own neutral ink inside a danger banner read as the one part of the
67
+ * sentence that was fine.
68
+ */
69
+ .crewlet-callout code,
70
+ .crewlet-callout .crewlet-inline-code {
71
+ color: inherit;
72
+ }
73
+
74
+ /* ── tones ─────────────────────────────────────────────────────────────── */
75
+
76
+ .crewlet-callout--info {
77
+ --crewlet-callout-fill: var(--color-feedback-info-soft);
78
+ --crewlet-callout-ink: var(--color-feedback-info-ink);
79
+ }
80
+
81
+ .crewlet-callout--success {
82
+ --crewlet-callout-fill: var(--color-feedback-success-soft);
83
+ --crewlet-callout-ink: var(--color-feedback-success-ink);
84
+ }
85
+
86
+ .crewlet-callout--warning {
87
+ --crewlet-callout-fill: var(--color-feedback-warning-soft);
88
+ --crewlet-callout-ink: var(--color-feedback-warning-ink);
89
+ }
90
+
91
+ .crewlet-callout--danger {
92
+ --crewlet-callout-fill: var(--color-feedback-danger-soft);
93
+ --crewlet-callout-ink: var(--color-feedback-danger-ink);
94
+ }
95
+
96
+ /* ── layouts ───────────────────────────────────────────────────────────── */
97
+
98
+ /*
99
+ * The banner is what a shell puts above a screen: against both edges, with no
100
+ * radius and no side borders, because a rounded card there leaves a gutter of
101
+ * page colour down each side and reads as content rather than as chrome.
102
+ */
103
+ .crewlet-callout--banner {
104
+ border-radius: var(--radius-none);
105
+ /* The one layout that keeps a visible rule, on the edge it meets the screen
106
+ at: full bleed, there is no tint boundary at the sides for the eye to
107
+ stop on, so the bottom line is what says the strip has ended. */
108
+ border-width: 0 0 1px;
109
+ border-bottom-color: var(--color-border-default);
110
+ padding: var(--spacing-2) var(--spacing-4);
111
+ }
@@ -0,0 +1,234 @@
1
+ /**
2
+ * A bounded, pannable and zoomable viewport over positioned content.
3
+ *
4
+ * WHY IT EXISTS. A hierarchy drawn as a chart grows wider than any screen, and
5
+ * the page's own scroller is the wrong instrument for it: an application shell
6
+ * usually has exactly one element allowed to scroll, and a chart that scrolled
7
+ * it sideways would fight the router's scroll memory and every other screen's
8
+ * layout. So the chart lives in its own viewport, the geometry of moving
9
+ * around it is `geometry.ts`, and this component is the wiring from pointers,
10
+ * wheels and keys to that geometry.
11
+ *
12
+ * THE RULES IT KEEPS.
13
+ *
14
+ * - IT FILLS THE HEIGHT ITS CONTAINER GIVES IT and never grows the page. A
15
+ * screen that wants a full height canvas gives it a full height box.
16
+ * - THE PAGE STILL SCROLLS. A plain wheel pans the canvas only while focus is
17
+ * inside it; otherwise the wheel belongs to the page, so a reader scrolling
18
+ * down is never caught by a chart passing under the pointer. Ctrl or Command
19
+ * with the wheel zooms toward the cursor wherever the pointer is, which is
20
+ * also what a trackpad pinch sends.
21
+ * - TOUCH IS OPT IN. Until the canvas is tapped, one finger scrolls the page
22
+ * (`touch-action: pan-y`); a tap activates it, one finger then pans, and a
23
+ * visible Done control hands the finger back to the page. Two fingers pinch
24
+ * toward their midpoint at any time, because two fingers are never a scroll.
25
+ * - THE ZOOM KEYS ARE THE CANVAS'S, WHEREVER FOCUS IS INSIDE IT: `+`, `-` and
26
+ * `0` (and Ctrl or Command with `=`, `-` and `0`) work on an item as well as
27
+ * on the viewport, because the tab stop a chart hands out is an ITEM and a
28
+ * reader who has navigated the content is exactly the reader who wants to
29
+ * zoom it. They are in no other keyboard pattern here, so there is nothing
30
+ * for them to collide with. The PAN keys are the viewport's own: the arrows
31
+ * belong to whatever holds focus, so a tree's navigation and a listbox's
32
+ * selection are never eaten. A text field inside keeps every key it is sent.
33
+ * - HOW FAR IT ZOOMS IS THE CONTENT'S ANSWER: out as far as the fit, because
34
+ * there is nothing beyond the whole chart to see, and in until the largest
35
+ * item fills the pane, because that is what a reader pressing Zoom in is
36
+ * asking for. See `zoomLimits`.
37
+ * - THE ZOOM SAYS WHAT IT IS, between the two steppers, and a reader can type
38
+ * one. A zoom has a value as well as a direction, and two chevrons say only
39
+ * the direction: without the readout, getting back to actual size from a
40
+ * stray pinch is pressing a chevron until it looks right. What is typed goes
41
+ * through the same clamp as every other zoom.
42
+ * - A FOCUSED ITEM IS NEVER SCROLLED INTO VIEW BEHIND THE TRANSFORM'S BACK.
43
+ * The viewport clips rather than scrolls, but a browser still scrolls a
44
+ * clipping box to show a focused descendant; that scroll is converted into a
45
+ * pan and reset, so the transform stays the one source of truth.
46
+ * - ITS CHROME IS ONE GROUP IN ONE CORNER: the zoom bar, whatever the caller
47
+ * adds to the end of it, and whatever bars it stacks under it. Everything in
48
+ * that group acts on the canvas, so it is drawn beside the canvas rather
49
+ * than in the page's own toolbar.
50
+ * - ITS OVERLAY IS A LayerHost. The untransformed layer over the viewport is
51
+ * the portal target for every menu, popover and picker opened from an item
52
+ * inside, so each is placed from its anchor's viewport rectangle rather than
53
+ * scaled by the zoom or clipped inside a card. The host receives
54
+ * `LAYER_REPOSITION_EVENT` whenever the content moves beneath it, which is
55
+ * how an open surface follows its anchor through a pan or a zoom.
56
+ * - FIT HAPPENS ONCE, on the first layout that has both a measured viewport
57
+ * and content bounds, and again only on request. A data push that changes
58
+ * the content never moves the operator's view, and nothing is shown before
59
+ * that first fit.
60
+ * - MOTION ONLY ON REQUEST. A fit, a zoom button or a reveal eases; a drag, a
61
+ * pinch, a wheel and a relayout anchor never do, and under reduced motion
62
+ * nothing does. An easing lasts as long as its transition: a clamp that
63
+ * arrives while one runs (a data push) rides along with it, and one that
64
+ * arrives after it has settled moves at once, as any move nobody asked for
65
+ * must. A request that moves nothing starts no easing.
66
+ *
67
+ * Pointer capture is used where the browser has it and the drag is tracked on
68
+ * the window either way, so a drag that leaves the viewport keeps panning.
69
+ * Fullscreen is not this component's concern: a surface that goes fullscreen
70
+ * must take its dialogs and toasts with it, so the screen that owns those
71
+ * decides.
72
+ *
73
+ * Ported from the engine dashboard's `ui/Canvas.tsx`, with its suite.
74
+ */
75
+ import { type ReactNode, type Ref } from 'react';
76
+ import { type CanvasPoint, type CanvasRect } from './geometry.js';
77
+ /**
78
+ * How a view change moves: a correction to where the reader already is, or the
79
+ * chart travelling somewhere else. See the state that holds it, below.
80
+ */
81
+ export type CanvasEase = 'near' | 'travel';
82
+ /** What a screen can ask of a canvas it holds a ref to. */
83
+ export interface CanvasHandle {
84
+ /** Show all of the content. Eases, unless reduced motion is set. */
85
+ fit(): void;
86
+ /** Zoom about the viewport centre. */
87
+ zoomBy(factor: number): void;
88
+ /** Pan the least distance that brings a world rectangle into view. */
89
+ reveal(target: CanvasRect): void;
90
+ /** Keep a node still on screen across a relayout: see `anchorView`. */
91
+ anchor(before: CanvasPoint, after: CanvasPoint): void;
92
+ /**
93
+ * Ease onto one world rectangle, remembering the view it left.
94
+ *
95
+ * For a surface that is about one item and has to say WHERE that item is:
96
+ * the chart moves to it, leaves room around it (`regionView`), and gives the
97
+ * reader their own view back on [restoreView]. Calling it twice remembers
98
+ * only the first view, so a second region is still left by one restore.
99
+ *
100
+ * `context` is how many times the region's own width the visible width comes
101
+ * to: [CANVAS_FOCUS_CONTEXT] unless it is named, and
102
+ * [CANVAS_COMPOSE_CONTEXT] for a region a reader has to type into rather
103
+ * than merely look at. `ceiling` is how far in the ease may zoom, for a
104
+ * region with a size of its own to respect: see [regionView].
105
+ */
106
+ focusRegion(target: CanvasRect, context?: number, ceiling?: number): void;
107
+ /**
108
+ * Remember the view the reader is on NOW, as the one [restoreView] gives
109
+ * back, without moving anything.
110
+ *
111
+ * FOR A REGION THAT DOES NOT EXIST YET. [focusRegion] remembers the view it
112
+ * leaves, which is the right moment whenever the thing being eased onto was
113
+ * already on the chart. A node being COMPOSED is not: its card has to be
114
+ * added to the content and measured before there is a rectangle to ease
115
+ * onto, and the content growing is itself a change the canvas answers by
116
+ * keeping what it holds reachable. So by the time `focusRegion` could be
117
+ * called, the view is no longer the one the reader was on, and what came
118
+ * back afterwards was the chart as the GHOST had left it. Measured on the
119
+ * engine's own builder: 198px sideways, every time an add was cancelled.
120
+ *
121
+ * Calling it twice keeps the first view, as [focusRegion] does.
122
+ */
123
+ rememberView(): void;
124
+ /** Ease back to the view [focusRegion] left, if it has not been given back already. */
125
+ restoreView(): void;
126
+ /** A world rectangle in viewport coordinates, for positioning an overlay. */
127
+ screenRect(target: CanvasRect): CanvasRect;
128
+ }
129
+ /** Every string the canvas renders on its own. */
130
+ export interface CanvasLabels {
131
+ zoomIn: string;
132
+ zoomOut: string;
133
+ fit: string;
134
+ /**
135
+ * The zoom readout, given the zoom as a whole percentage. It is also what
136
+ * opens the box a reader types one into, so it says both.
137
+ */
138
+ zoom: (percent: number) => string;
139
+ /** The box a reader types a zoom into. */
140
+ zoomLevel: string;
141
+ /** The control that hands one finger back to the page. */
142
+ done: string;
143
+ /** Read after the canvas's name, so a keyboard reader learns its keys. */
144
+ keys: string;
145
+ }
146
+ export interface CanvasProps {
147
+ /** The accessible name of the viewport, such as "Organization chart". */
148
+ label: string;
149
+ /** The laid out content's bounds in world units, or null until it has been measured. */
150
+ content: CanvasRect | null;
151
+ /** The positioned content: the layer that is panned and zoomed. */
152
+ children: ReactNode;
153
+ /**
154
+ * Anything drawn over the viewport without the transform, such as a note
155
+ * about what the chart is showing.
156
+ *
157
+ * THE LAYER IS INERT AND ITS CHILDREN ARE NOT. Empty space passes a press
158
+ * through to the viewport beneath, but each child takes its own presses
159
+ * back, because a control drawn here has to be pressable. So a note that
160
+ * must not swallow the drag that pans the chart sets `pointer-events: none`
161
+ * on itself.
162
+ */
163
+ overlay?: ReactNode;
164
+ /** The zoom out, zoom in and fit controls. */
165
+ controls?: boolean | undefined;
166
+ /**
167
+ * Which corner the controls sit in.
168
+ *
169
+ * `top-right` is where a chart's own toolbar belongs, and where the console
170
+ * org chart puts it: out of the way of the content, which a tree grows
171
+ * DOWNWARD from its root, and beside the first place a reader looks after
172
+ * the root itself.
173
+ */
174
+ controlsPlacement?: 'top-right' | 'bottom-right' | undefined;
175
+ /**
176
+ * Anything else in the control bar, drawn after the zoom controls: a
177
+ * fullscreen toggle, a print, a download. It is in the bar rather than in
178
+ * the page's own toolbar because it acts on the CANVAS, and a control that
179
+ * acts on the canvas from 800px away is a control nobody finds.
180
+ */
181
+ controlsExtra?: ReactNode | undefined;
182
+ /**
183
+ * Bars of the caller's own, stacked under the control bar in the same
184
+ * corner: a switch between two drawings of the content, a note about a key.
185
+ * Each is a surface of its own, as the bar is.
186
+ */
187
+ controlsBelow?: ReactNode | undefined;
188
+ /**
189
+ * A note under the controls, about a key or a state: "Press Esc to leave
190
+ * fullscreen".
191
+ *
192
+ * DECORATION, AND AN ANNOUNCEMENT. It takes no press and no tab stop, so it
193
+ * never comes between a reader and the chart; it is a `status` region, so a
194
+ * canvas that puts one up when it enters a state a reader cannot see out of
195
+ * says so to a reader who cannot see it either. Give it a node whose content
196
+ * comes and goes rather than the node itself: the region stays in the
197
+ * document while it is empty, and a live region that was already there when
198
+ * its message arrives is a message a screen reader announces.
199
+ */
200
+ hint?: ReactNode | undefined;
201
+ /**
202
+ * The width, in world units, of the largest single item the content draws.
203
+ *
204
+ * It is what the largest zoom is derived from ([zoomLimits]): a reader who
205
+ * keeps pressing Zoom in is asking to look at one item, so the ceiling is
206
+ * the zoom that gives them one. Unset, the fixed ceiling stands.
207
+ */
208
+ largestItemWidth?: number | undefined;
209
+ /**
210
+ * Pushes the content back, for a surface opened OVER the canvas that is
211
+ * about one part of it.
212
+ *
213
+ * The content is blurred and faded rather than covered, so the chart is
214
+ * still there behind the decision being made about it, which is what the
215
+ * console chart does while a node is being added. It is a state rather than
216
+ * an entrance, so a reader who asked for less motion simply gets it.
217
+ */
218
+ dimmed?: boolean | undefined;
219
+ /**
220
+ * Whether one finger can pan the canvas at all.
221
+ *
222
+ * On by default, behind the tap that activates it. Turned off, one finger
223
+ * always belongs to the page and only a two finger pinch reaches the canvas,
224
+ * which is what a chart embedded in a long scrolling page wants.
225
+ */
226
+ touch?: boolean | undefined;
227
+ /** Every string the canvas renders itself, for another language. */
228
+ labels?: Partial<CanvasLabels> | undefined;
229
+ /** Called once, when the first measured layout has been fitted. */
230
+ onReady?: (() => void) | undefined;
231
+ ref?: Ref<CanvasHandle> | undefined;
232
+ className?: string | undefined;
233
+ }
234
+ export declare function Canvas({ label, content, children, overlay, controls, controlsPlacement, controlsExtra, controlsBelow, hint, largestItemWidth, dimmed, touch, labels, onReady, ref, className, }: CanvasProps): import("react/jsx-runtime").JSX.Element;