@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,384 @@
1
+ /**
2
+ * A hierarchy drawn as cards on a canvas, with the ARIA tree pattern over it.
3
+ *
4
+ * WHAT IT OWNS AND WHAT IT DOES NOT. It owns the layout, the connectors, the
5
+ * keyboard pattern, focus and the per node menu state. It draws no card: the
6
+ * caller renders each one and is handed the props that make an element a
7
+ * treeitem, so a card can be anything from a name to a stack of rows without
8
+ * this component knowing what a seat, a unit or a company is.
9
+ *
10
+ * THE KEYBOARD PATTERN IS A TREE, AND ITS ITEMS HOLD NOTHING FOCUSABLE. Each
11
+ * card's header and each row inside a card is a `treeitem` with its level,
12
+ * position and expansion, and focus moves among them by a roving tab stop:
13
+ * arrows walk the visible order, Right and Left open, close and climb, Home
14
+ * and End jump, and typing finds a node by name. A treeitem's own keys act on
15
+ * it: Enter activates, Delete or Backspace removes, the ContextMenu key or
16
+ * Shift+F10 opens its menu. The buttons a pointer uses (expand, add, more)
17
+ * sit BESIDE the treeitem in a strip hidden from assistive technology and out
18
+ * of the tab order, because a control inside a treeitem is a control a screen
19
+ * reader cannot reach and a keyboard user would Tab through by the hundred;
20
+ * the menu they open is the same one the ContextMenu key opens. A press on
21
+ * that strip never leaves focus in it: the treeitem takes the focus, so what
22
+ * holds it is always a node a screen reader can announce and the arrows can
23
+ * move from. `ctx.actions` is what a caller spreads on such a strip.
24
+ *
25
+ * THE POINTER'S CONTROLS ARE QUIET UNTIL THE CARD IS REACHED, and that is why
26
+ * they are the component's to place rather than the caller's. The actions strip
27
+ * is drawn OVER the end of the card and the add control hangs UNDER it
28
+ * (`renderUnder`), both appearing on hover, on focus and on the selected card;
29
+ * so a name has the card's whole width rather than the half left beside three
30
+ * buttons nobody is pointing at, and the chart at rest is cards and connectors
31
+ * rather than a field of chrome. The room each takes is reserved whether or not
32
+ * it is drawn, because a chart that grew under the pointer would move the card
33
+ * somebody was aiming at out from under them.
34
+ *
35
+ * FOCUS NEVER SCROLLS BEHIND THE TRANSFORM'S BACK. A node is focused with
36
+ * `preventScroll` and then revealed by panning the canvas, and a node inside a
37
+ * collapsed card has its ancestors opened first. The caller decides which node
38
+ * is focused after an operation, an undo or a redo, through the handle.
39
+ *
40
+ * THE LAYOUT IS MEASURED. Every card is rendered at the card width variable
41
+ * and measured, the gaps between cards and the space around the whole chart
42
+ * are read from probes drawn with spacing tokens (so density scales them with
43
+ * everything else), and the layout places them: under each parent, or on a
44
+ * band per depth, which is what an org chart is and what the `node`
45
+ * appearance takes (`ranks`). A relayout keeps the node the operator acted on
46
+ * still on screen. Nothing else is an input to the layout: a badge whose text
47
+ * changes inside a slot that keeps its size lays nothing out again.
48
+ *
49
+ * AND IT MOVES. A chart arrives rank by rank rather than all at once, and a
50
+ * relayout TWEENS every card from where it was to where it is, connectors and
51
+ * all, so adding a seat is visibly the same chart rearranging rather than a
52
+ * new one. Both are `motion.ts`, both are off under `prefers-reduced-motion`,
53
+ * and neither changes what is drawn in the end or what any of it is called.
54
+ *
55
+ * A NODE IS ADDED IN THE CHART, NOT IN A DIALOG OVER IT. `composing` names a
56
+ * GHOST: a card the layout knows about and the data does not, drawn where the
57
+ * new node will be, holding the form that makes it. The chart makes room for
58
+ * it, draws the branch into it, eases onto it and gives the reader their view
59
+ * back when it goes. It is in `cards` and NOT in `nodes`, which is the whole
60
+ * of why the tree is untouched by it: no level, no position, no set size and
61
+ * no key of any real node moves, and no arrow key, type ahead or selection can
62
+ * land on something that is not there yet. See [TreeComposing].
63
+ *
64
+ * Ported from the engine dashboard's org builder canvas, with the generic half
65
+ * of its suite.
66
+ */
67
+ import { type KeyboardEvent, type MouseEvent, type ReactNode, type Ref } from 'react';
68
+ import { type CanvasLabels } from '../Canvas/index.js';
69
+ import { type TreeConnectorShape, type TreeInput, type TreeItemAction, type LayoutRanks, type TreeModel, type TreeViewHandle } from '../Tree/index.js';
70
+ /** A card of the layout: its id and the cards nested under it. */
71
+ export interface TreeCardInput {
72
+ id: string;
73
+ children: TreeCardInput[];
74
+ }
75
+ /**
76
+ * The six hues a card can be tinted with, and the connector arriving at it.
77
+ *
78
+ * DECORATIVE AND PER ENTITY, never a series: two cards sharing a hue say
79
+ * nothing, so the palette is not measured for separability and the chart owes
80
+ * no legend (`--color-node-*` in the tokens package says the same). It is what
81
+ * an operator picks for one agent so they can find it again, and what a chart
82
+ * with no such choice derives from a stable identity.
83
+ *
84
+ * A NAMED SET RATHER THAN A COLOUR. A caller that could hand in any colour
85
+ * would hand in a literal, and the fill, the border, the halo and the ink of a
86
+ * tinted card are four measured steps of one hue rather than one value with
87
+ * three alphas applied by whoever drew it last.
88
+ */
89
+ export type TreeCardTone = 'purple' | 'cyan' | 'green' | 'amber' | 'rose' | 'blue';
90
+ /**
91
+ * The props that make an element the pointer-only strip of controls beside a
92
+ * node: see `TreeCardContext.actions`.
93
+ */
94
+ export interface TreeActionsProps {
95
+ className: string;
96
+ 'aria-hidden': 'true';
97
+ /** Set while a menu inside the strip is open, so the strip stays drawn. */
98
+ 'data-menu-open': 'true' | undefined;
99
+ onMouseDown(event: MouseEvent<HTMLElement>): void;
100
+ }
101
+ /** The props that make an element the treeitem of a node. */
102
+ export interface TreeItemProps {
103
+ role: 'treeitem';
104
+ tabIndex: number;
105
+ 'aria-level': number;
106
+ 'aria-setsize': number;
107
+ 'aria-posinset': number;
108
+ 'aria-expanded': boolean | undefined;
109
+ 'aria-selected': boolean;
110
+ 'data-tree-id': string;
111
+ ref: (el: HTMLElement | null) => void;
112
+ onClick: (event: MouseEvent<HTMLElement>) => void;
113
+ onDoubleClick: () => void;
114
+ }
115
+ /** What a card needs from the tree it is drawn in. */
116
+ export interface TreeCardContext {
117
+ /** The props that make an element the treeitem of `id`. Spread them. */
118
+ item(id: string): TreeItemProps;
119
+ expanded(id: string): boolean;
120
+ expandable(id: string): boolean;
121
+ toggle(id: string): void;
122
+ /** Makes `id` the current node without moving focus, as a pointer action on its card does. */
123
+ activate(id: string): void;
124
+ /**
125
+ * The whole of a node's pointer-only strip of controls: its class, its
126
+ * removal from the accessibility tree and the press that lands on the node.
127
+ * Spread it on the element holding the expand, add and more buttons, and put
128
+ * that element IMMEDIATELY AFTER the node's own treeitem.
129
+ *
130
+ * WHY THE COMPONENT OWNS IT. The strip is drawn OVER the end of the card and
131
+ * is quiet until the card is reached, so the node's name has the card's whole
132
+ * width to say itself in rather than the half left over beside three buttons
133
+ * nobody is pointing at. Where it sits, when it appears and what covers what
134
+ * are the chart's decisions, not the caller's: left to the caller the strip
135
+ * was a permanent column and every name in the chart was truncated to fit
136
+ * beside it. The immediate-sibling rule is what the reveal is keyed on, which
137
+ * is why it is stated here and not merely implied.
138
+ *
139
+ * `press` is the same landing behaviour on its own, for a pointer-only region
140
+ * that is NOT this strip (a chip drawn along a card's bottom edge, say).
141
+ */
142
+ actions(id: string): TreeActionsProps;
143
+ /**
144
+ * The props that make a press anywhere in a pointer-only strip land on `id`
145
+ * rather than on the button it hit. Wrap the strip in them.
146
+ */
147
+ press(id: string): {
148
+ onMouseDown(event: MouseEvent<HTMLElement>): void;
149
+ };
150
+ menuOpen(id: string): boolean;
151
+ setMenuOpen(id: string, open: boolean): void;
152
+ }
153
+ /**
154
+ * What a screen can ask of a tree drawn on a CANVAS: everything a tree view
155
+ * answers, and the two things only a view with a viewport under it can.
156
+ *
157
+ * Separate from [TreeViewHandle] rather than added to it, because the other
158
+ * view of one hierarchy is a grid of rows with no viewport to move: a handle
159
+ * that promised these there would be a promise kept by doing nothing.
160
+ */
161
+ export interface TreeCanvasHandle extends TreeViewHandle {
162
+ /**
163
+ * Ease onto one node's own card, remembering the view it left.
164
+ *
165
+ * For a surface opened ABOUT that node: the view moves to it with room
166
+ * around it, so the decision being made has the part of the chart it is
167
+ * about behind it. A node whose card has not been laid out yet is ignored.
168
+ */
169
+ focusRegion(id: string): void;
170
+ /** Give back the view [focusRegion] left. */
171
+ restoreView(): void;
172
+ }
173
+ /**
174
+ * A node being COMPOSED: the ghost card a new node's form is drawn in, before
175
+ * there is a node to draw.
176
+ *
177
+ * THE PHANTOM IS THE LAYOUT'S AND NOT THE DATA'S. A chart that asked for a
178
+ * child's name in a dialog over itself said nothing about WHERE that child
179
+ * would go, which is the one thing a chart is for. So the card is grafted into
180
+ * the CARD forest, under `parent` and after its existing children, exactly
181
+ * where the new node will land; `nodes` is untouched, and that is what keeps
182
+ * every real node's level, position in set, set size and key the same while a
183
+ * node is being composed. A screen reader is never told a unit has seven
184
+ * children while six exist. Nothing focusable by the tree's own keys is in it,
185
+ * either: the arrows, type ahead and the selection walk `nodes`, so they walk
186
+ * past a ghost that is not in them.
187
+ *
188
+ * IT IS DRAWN OUTSIDE THE TREE ELEMENT for the same reason. A form is not a
189
+ * `treeitem` and a `tree` may hold nothing else, so the ghost is a sibling of
190
+ * the tree in the same transformed world: the layout places it, and what is
191
+ * inside it is an ordinary region of the page that a screen reader reads and
192
+ * Tab walks.
193
+ *
194
+ * WHAT THE CHART DOES ABOUT IT. It opens `parent` if it is closed, eases onto
195
+ * the ghost with the room a form needs rather than the room a label needs
196
+ * ([CANVAS_COMPOSE_CONTEXT]), moves focus to the first control inside it, and
197
+ * on Escape calls `onCancel`. When it goes, the view the reader left is given
198
+ * back and focus returns to `parent`. Under `prefers-reduced-motion` every
199
+ * part of that still happens; only the animations do not.
200
+ */
201
+ export interface TreeComposing {
202
+ /**
203
+ * The ghost card's own id.
204
+ *
205
+ * IT MUST NOT BE AN ID OF `nodes`. A ghost in the node forest is a node, and
206
+ * then everything this arrangement exists to avoid is back: a set size that
207
+ * counts it, an arrow key that lands on it and a selection that can hold it.
208
+ */
209
+ id: string;
210
+ /** The card it hangs under, which is the node the new one is being added to. */
211
+ parent: string;
212
+ /**
213
+ * The accessible name of the ghost, such as "Add to Engineering".
214
+ *
215
+ * THE GHOST IS A NAMED REGION rather than an anonymous box with a form in
216
+ * it, because focus is moved into it: a reader who arrives at a field with
217
+ * nothing around it has been told what to type and not what they are making
218
+ * or where it is going. The name says both, and it is the only thing about
219
+ * the ghost this component cannot work out for itself.
220
+ */
221
+ label: string;
222
+ /** What is drawn inside the ghost: the form that makes the node. */
223
+ render: () => ReactNode;
224
+ /** Escape inside the ghost. Cancelling is the caller's: it owns the form. */
225
+ onCancel: () => void;
226
+ }
227
+ export interface TreeCanvasProps {
228
+ /** The accessible name of the chart, such as "Structure chart". */
229
+ label: string;
230
+ /**
231
+ * The hierarchy as the tree pattern reads it: every node, nested.
232
+ *
233
+ * Keep it stable across renders (a `useMemo` over what it is derived from).
234
+ * A fresh array each render rebuilds the model, and with it the visible
235
+ * order and the layout, on every push a parent takes.
236
+ */
237
+ nodes: readonly TreeInput[];
238
+ /**
239
+ * Which CARDS the layout draws, and how they nest. A node drawn as a row
240
+ * inside another node's card is not a card of its own, so this is not always
241
+ * the node forest: it is asked again whenever the model or the expansion
242
+ * changes, and is given both.
243
+ *
244
+ * Keep it stable too, for the reason `nodes` is: it is asked again whenever
245
+ * it changes identity, and the tidy layout it feeds is the most expensive
246
+ * thing this component does.
247
+ */
248
+ cards: (model: TreeModel, expanded: ReadonlySet<string>) => TreeCardInput[];
249
+ /** The card a node is drawn in: itself, or the card holding its row. Stable, as `cards` is. */
250
+ cardOf: (id: string) => string;
251
+ /** Draws one card. Everything it needs from the tree is the second argument. */
252
+ renderCard: (id: string, card: TreeCardContext) => ReactNode;
253
+ /**
254
+ * What hangs UNDER a card, on the branch its children come off: the control
255
+ * that adds one, normally. Return nothing for a card that takes none.
256
+ *
257
+ * IT IS A SLOT RATHER THAN SOMETHING THE CALLER DRAWS ITSELF because of where
258
+ * it has to be. A control below the card is below the card's MEASURED bottom,
259
+ * which is where the layout puts the next rank and where the connectors
260
+ * start, so a caller drawing it itself either has it overlap its own
261
+ * children or has to tell the layout a height that is not the card's. Drawn
262
+ * here it is part of the card, so the space is reserved by the same
263
+ * measurement that reserves the name's, and every connector already leaves
264
+ * from below it.
265
+ *
266
+ * THE ROOM IS KEPT WHETHER OR NOT IT IS DRAWN. It is quiet until the card is
267
+ * reached, like the actions strip, and a chart that grew a rank taller under
268
+ * the pointer would move the card somebody was aiming at out from under them.
269
+ */
270
+ renderUnder?: ((id: string, card: TreeCardContext) => ReactNode) | undefined;
271
+ /**
272
+ * Whether a card is drawn with the dashed edge.
273
+ *
274
+ * It is the mark a card carries when it stands for somebody outside the
275
+ * system: a person rather than an agent, a seat nobody holds. The BOUNDARY
276
+ * says it rather than a hue, so it reads to a reader who cannot separate the
277
+ * hue at all, and the card's frame is this component's to draw so the mark
278
+ * is too. Unset, every card takes the solid edge.
279
+ */
280
+ cardOutline?: ((id: string) => boolean) | undefined;
281
+ /**
282
+ * The hue a card is tinted with, and the connector arriving at it.
283
+ *
284
+ * ONE ANSWER FOR BOTH, because they are one statement. A tinted card reached
285
+ * by a branch in the chart's neutral ink reads as somebody else's branch
286
+ * ending on it, and two functions would be two places for that to come
287
+ * apart. Unset, or answered with nothing, a card is the chart's own neutral
288
+ * surface and the branch is the chart's own ink.
289
+ */
290
+ cardTone?: ((id: string) => TreeCardTone | undefined) | undefined;
291
+ /**
292
+ * How a card is drawn.
293
+ *
294
+ * `card` (the default) is a panel: one width for every card in the chart, its
295
+ * lines stacked with room around them, and the pointer's controls over its
296
+ * top right corner. It is what a chart of a few dozen nodes reads best as.
297
+ *
298
+ * `node` is an org chart NODE: as wide as its own name between a fixed icon
299
+ * zone and a fixed actions column, one rank tall, its two lines centred
300
+ * between them, with the actions as a column down its right edge and the add
301
+ * hanging under its bottom edge. Denser, and it is the drawing the console's
302
+ * own org chart uses, which this package is matched to. A chart of a hundred
303
+ * nodes fits on a screen in it; a card that has more to say than a name and a
304
+ * caption does not belong in it.
305
+ */
306
+ appearance?: 'card' | 'node' | undefined;
307
+ /**
308
+ * Where a card's top edge sits: under its own parent (`per-parent`) or on a
309
+ * band shared by every card of its depth (`shared`). See [LayoutRanks].
310
+ *
311
+ * Unset, it follows the appearance, because the two are one decision about
312
+ * what the chart IS. A chart of panels is a hierarchy of things with
313
+ * contents, where a short card's children riding up beside a tall
314
+ * neighbour's is tidier; a chart of org chart NODES is an organization,
315
+ * where a rank is a row a reader scans across and two units of one company
316
+ * sit on one line whether or not one of them carries a lead.
317
+ */
318
+ ranks?: LayoutRanks | undefined;
319
+ /**
320
+ * The shape of the connectors: a rounded step (the default) or the single
321
+ * cubic the console's org chart draws. See [layoutConnectors], which states
322
+ * what each shape costs.
323
+ */
324
+ connector?: TreeConnectorShape | undefined;
325
+ /**
326
+ * Carries out Enter (activate) or Delete and Backspace (remove) on a node.
327
+ * Return false when the node has no such action, so the key travels on.
328
+ *
329
+ * The Menu key is not here: which menu is open is this component's state, so
330
+ * it opens the node's own menu itself when `hasNodeMenu` says there is one.
331
+ */
332
+ onNodeKey?: ((id: string, action: Exclude<TreeItemAction, 'menu'>) => boolean) | undefined;
333
+ /**
334
+ * Any other key the caller claims on a node, such as Alt with an arrow to
335
+ * move it among its siblings. Asked FIRST, while the node itself holds
336
+ * focus; return true when it was handled, and the chart swallows the key.
337
+ *
338
+ * The same contract the grid of rows keeps (`TreeGridProps.onRowKeyDown`),
339
+ * because the two are two views of one hierarchy and a key that moves a node
340
+ * in one has to move it in the other.
341
+ */
342
+ onNodeKeyDown?: ((id: string, event: KeyboardEvent<HTMLElement>) => boolean) | undefined;
343
+ /** Whether a node has a menu the ContextMenu key and Shift+F10 can open. */
344
+ hasNodeMenu?: ((id: string) => boolean) | undefined;
345
+ /** The selected node, drawn as `aria-selected` on its treeitem. */
346
+ selectedId?: string | null | undefined;
347
+ /**
348
+ * Selection follows focus. Called with every node focus reaches, so a caller
349
+ * that selects only some of them (a group heading is no node of the data)
350
+ * filters here.
351
+ */
352
+ onSelect?: ((id: string) => void) | undefined;
353
+ /**
354
+ * The node the operator just acted on, which a relayout keeps still on
355
+ * screen. Without one the node holding focus is kept still instead.
356
+ */
357
+ anchorNode?: string | null | undefined;
358
+ /** Drawn over the canvas without the transform, such as a note about the chart. */
359
+ overlay?: ReactNode | undefined;
360
+ /** Which corner the canvas's controls sit in. A chart's own corner is the top right. */
361
+ controlsPlacement?: 'top-right' | 'bottom-right' | undefined;
362
+ /** Anything else in the canvas's control bar: see [CanvasProps.controlsExtra]. */
363
+ controlsExtra?: ReactNode | undefined;
364
+ /** Bars stacked under the canvas's control bar: see [CanvasProps.controlsBelow]. */
365
+ controlsBelow?: ReactNode | undefined;
366
+ /** A note under the canvas's controls, about a key or a state: see [CanvasProps.hint]. */
367
+ hint?: ReactNode | undefined;
368
+ /**
369
+ * Pushes the chart back, for a surface opened over it about one of its
370
+ * nodes. See [CanvasProps.dimmed]; pair it with `focusRegion` on the handle,
371
+ * which says WHICH node the surface is about.
372
+ */
373
+ dimmed?: boolean | undefined;
374
+ /**
375
+ * A node being composed in the chart rather than in a surface over it: see
376
+ * [TreeComposing]. Null, and the chart is the data and nothing else.
377
+ */
378
+ composing?: TreeComposing | null | undefined;
379
+ /** The canvas control labels, for another language. */
380
+ labels?: Partial<CanvasLabels> | undefined;
381
+ ref?: Ref<TreeCanvasHandle> | undefined;
382
+ className?: string | undefined;
383
+ }
384
+ export declare function TreeCanvas({ label, nodes, cards, cardOf, renderCard, renderUnder, cardOutline, cardTone, appearance, ranks, connector, onNodeKey, onNodeKeyDown, hasNodeMenu, selectedId, onSelect, anchorNode, overlay, controlsPlacement, controlsExtra, controlsBelow, hint, dimmed, composing, labels, ref, className, }: TreeCanvasProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './TreeCanvas.css';
2
+ export { TreeCanvas } from './TreeCanvas.js';
3
+ export type { TreeActionsProps, TreeCanvasHandle, TreeCanvasProps, TreeCardContext, TreeCardInput, TreeCardTone, TreeComposing, TreeItemProps, } from './TreeCanvas.js';
@@ -0,0 +1,10 @@
1
+ export { TreeCanvas } from '../chunk-7HPRF5XN.js';
2
+ import '../chunk-NTRZGNEX.js';
3
+ import '../chunk-CMEE37QJ.js';
4
+ import '../chunk-53DVJCVW.js';
5
+ import '../chunk-7RPGY3JE.js';
6
+ import '../chunk-ITHXJHBB.js';
7
+ import '../chunk-F27EPQ7D.js';
8
+ import '../chunk-BZYDZBAN.js';
9
+ import '../chunk-BZFWDIV6.js';
10
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,59 @@
1
+ /**
2
+ * The two motions a chart of cards has, and the one question they both ask
3
+ * first: has the reader asked for less?
4
+ *
5
+ * A CHART ARRIVES RANK BY RANK. Every card at once is a picture that appears;
6
+ * one rank after another, a few dozen milliseconds apart, is a hierarchy being
7
+ * drawn, and the order the eye is walked in (down, then across) is the order
8
+ * the chart is read in afterwards. It runs ONCE, when the chart is first laid
9
+ * out, and never again: a chart that replayed its entrance on every push would
10
+ * be a chart nobody could read while anything was happening.
11
+ *
12
+ * A RELAYOUT MOVES CARDS RATHER THAN REPLACING THEM. Adding a seat re-centres
13
+ * every ancestor over its children and shifts whole subtrees sideways; jumped,
14
+ * the card the operator just made appears somewhere that has nothing to do
15
+ * with where the one they pressed was, and so does everything else. Tweened,
16
+ * the chart is visibly the same chart rearranging, which is the only way the
17
+ * reader keeps their place in it. The canvas's own anchor is the other half of
18
+ * that and is unaffected: it keeps the node acted on STILL ON SCREEN, over the
19
+ * targets, while the cards travel to them.
20
+ *
21
+ * NEITHER RUNS WHEN THE READER HAS ASKED FOR LESS. Both are read through
22
+ * [useStillness], and under `prefers-reduced-motion: reduce` the chart is laid
23
+ * out complete and every relayout is a jump: nothing is hidden, nothing is
24
+ * slower to reach, and no control moves later than it would have.
25
+ *
26
+ * WHY IT IS JAVASCRIPT AND NOT CSS. A card's position is a transform the
27
+ * layout computes, and a CSS transition on it would fire on the first paint of
28
+ * every card the measurement pass adds, which is the entrance played twice at
29
+ * two speeds. The tween is over the layout's own numbers, so a frame is a
30
+ * position rather than a promise about one, and the connectors are recomputed
31
+ * from those same numbers: a line that did not travel with its cards would
32
+ * spend the whole relayout pointing at where a card used to be.
33
+ */
34
+ import type { ForestLayout } from '../Tree/index.js';
35
+ /** How far apart two cards are revealed, in milliseconds. */
36
+ export declare const ENTRANCE_STEP_MS = 60;
37
+ /** How long a relayout takes to move every card from where it was to where it is. */
38
+ export declare const REFLOW_MS = 350;
39
+ /** The order cards are revealed in: down the chart, then across each row. */
40
+ export declare function entranceOrder(layout: ForestLayout): string[];
41
+ /** Whether the reader has asked for less motion, and again whenever that changes. */
42
+ export declare function useStillness(): boolean;
43
+ /**
44
+ * The cards revealed so far, or `null` once the chart is whole.
45
+ *
46
+ * `null` rather than "every id" so a caller has one cheap answer for the state
47
+ * a chart is in for all but its first second, and never walks a set per card
48
+ * per render for the rest of its life.
49
+ */
50
+ export declare function useEntrance(layout: ForestLayout | null, still: boolean): ReadonlySet<string> | null;
51
+ /**
52
+ * The layout as it is DRAWN this frame: the target, or a point on the way to
53
+ * it while a relayout is travelling.
54
+ *
55
+ * The bounds are the target's throughout, so the canvas neither grows nor
56
+ * shrinks under a pan while the cards move: what is scrollable is where the
57
+ * chart is going to be.
58
+ */
59
+ export declare function useReflow(layout: ForestLayout | null, still: boolean): ForestLayout | null;