@crewlethq/ui 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. package/README.md +1714 -14
  2. package/dist/Accordion/Accordion.d.ts +54 -0
  3. package/dist/Accordion/index.d.ts +4 -0
  4. package/dist/Accordion/index.js +6 -0
  5. package/dist/Accordion-ZI2WLD5C.css +87 -0
  6. package/dist/AddPill/AddPill.d.ts +114 -0
  7. package/dist/AddPill/index.d.ts +3 -0
  8. package/dist/AddPill/index.js +3 -0
  9. package/dist/AddPill-DFWXYLIQ.css +434 -0
  10. package/dist/Announcer/Announcer.d.ts +15 -0
  11. package/dist/Announcer/index.d.ts +2 -0
  12. package/dist/Announcer/index.js +3 -0
  13. package/dist/AppShell/AppShell.d.ts +193 -0
  14. package/dist/AppShell/index.d.ts +3 -0
  15. package/dist/AppShell/index.js +6 -0
  16. package/dist/AppShell-NVE6LHNI.css +395 -0
  17. package/dist/Avatar/Avatar.d.ts +104 -0
  18. package/dist/Avatar/index.d.ts +3 -0
  19. package/dist/Avatar/index.js +2 -0
  20. package/dist/Avatar-P2KRQM2B.css +156 -0
  21. package/dist/BrandLockup/BrandLockup.d.ts +41 -0
  22. package/dist/BrandLockup/index.d.ts +3 -0
  23. package/dist/BrandLockup/index.js +2 -0
  24. package/dist/BrandLockup-6ISDEHPJ.css +108 -0
  25. package/dist/Button/Button.d.ts +88 -0
  26. package/dist/Button/index.d.ts +3 -0
  27. package/dist/Button/index.js +3 -0
  28. package/dist/Button-D4J6B4MA.css +302 -0
  29. package/dist/CalendarGrid/CalendarGrid.d.ts +87 -0
  30. package/dist/CalendarGrid/index.d.ts +3 -0
  31. package/dist/CalendarGrid/index.js +2 -0
  32. package/dist/CalendarGrid-V6TQ5QKS.css +128 -0
  33. package/dist/Callout/Callout.d.ts +47 -0
  34. package/dist/Callout/index.d.ts +3 -0
  35. package/dist/Callout/index.js +2 -0
  36. package/dist/Callout-S7QDWHDL.css +111 -0
  37. package/dist/Canvas/Canvas.d.ts +234 -0
  38. package/dist/Canvas/geometry.d.ts +249 -0
  39. package/dist/Canvas/index.d.ts +5 -0
  40. package/dist/Canvas/index.js +8 -0
  41. package/dist/Canvas/layerNode.d.ts +20 -0
  42. package/dist/Canvas-Q6JETCWR.css +315 -0
  43. package/dist/Card/Card.d.ts +142 -0
  44. package/dist/Card/headerSlot.d.ts +65 -0
  45. package/dist/Card/index.d.ts +5 -0
  46. package/dist/Card/index.js +6 -0
  47. package/dist/Card-AHX3Q2JD.css +428 -0
  48. package/dist/Charts/ActivityStrip.d.ts +45 -0
  49. package/dist/Charts/BarList.d.ts +51 -0
  50. package/dist/Charts/Legend.d.ts +32 -0
  51. package/dist/Charts/StackedBar.d.ts +38 -0
  52. package/dist/Charts/TimeSeries.d.ts +92 -0
  53. package/dist/Charts/dataColor.d.ts +20 -0
  54. package/dist/Charts/index.d.ts +12 -0
  55. package/dist/Charts/index.js +3 -0
  56. package/dist/Charts-D7G2BSXH.css +277 -0
  57. package/dist/Checkbox/Checkbox.d.ts +45 -0
  58. package/dist/Checkbox/index.d.ts +3 -0
  59. package/dist/Checkbox/index.js +2 -0
  60. package/dist/Checkbox-VGW26YLQ.css +111 -0
  61. package/dist/CodeBlock/CodeBlock.d.ts +60 -0
  62. package/dist/CodeBlock/index.d.ts +3 -0
  63. package/dist/CodeBlock/index.js +7 -0
  64. package/dist/CodeBlock-U2W6NNVC.css +153 -0
  65. package/dist/Combobox/Combobox.d.ts +89 -0
  66. package/dist/Combobox/index.d.ts +3 -0
  67. package/dist/Combobox/index.js +8 -0
  68. package/dist/Combobox-4FUVYIE7.css +80 -0
  69. package/dist/CommandPalette/CommandPalette.d.ts +77 -0
  70. package/dist/CommandPalette/index.d.ts +3 -0
  71. package/dist/CommandPalette/index.js +11 -0
  72. package/dist/CommandPalette-CSJDUCQA.css +115 -0
  73. package/dist/Container/Container.d.ts +17 -0
  74. package/dist/Container/index.d.ts +3 -0
  75. package/dist/Container/index.js +2 -0
  76. package/dist/Container-3TSKMGNI.css +52 -0
  77. package/dist/Copyable/CopyButton.d.ts +54 -0
  78. package/dist/Copyable/Copyable.d.ts +34 -0
  79. package/dist/Copyable/index.d.ts +5 -0
  80. package/dist/Copyable/index.js +6 -0
  81. package/dist/Copyable-5PNRFOLS.css +125 -0
  82. package/dist/Count/Count.d.ts +24 -0
  83. package/dist/Count/index.d.ts +3 -0
  84. package/dist/Count/index.js +3 -0
  85. package/dist/Count-ZVCJ6VPD.css +20 -0
  86. package/dist/DataTable/CopyableCell.d.ts +12 -0
  87. package/dist/DataTable/DataTable.d.ts +615 -0
  88. package/dist/DataTable/RowActionsMenu.d.ts +7 -0
  89. package/dist/DataTable/index.d.ts +7 -0
  90. package/dist/DataTable/index.js +14 -0
  91. package/dist/DataTable-ITNACQ2X.css +2020 -0
  92. package/dist/DataView/DataView.d.ts +109 -0
  93. package/dist/DataView/DataViewToolbar.d.ts +87 -0
  94. package/dist/DataView/FilterAxisBar.d.ts +103 -0
  95. package/dist/DataView/columns.d.ts +35 -0
  96. package/dist/DataView/filters.d.ts +184 -0
  97. package/dist/DataView/index.d.ts +11 -0
  98. package/dist/DataView/index.js +25 -0
  99. package/dist/DataView-256YF32J.css +441 -0
  100. package/dist/DateTimePicker/DateTimePicker.d.ts +91 -0
  101. package/dist/DateTimePicker/index.d.ts +3 -0
  102. package/dist/DateTimePicker/index.js +9 -0
  103. package/dist/DateTimePicker-22VNXRWC.css +199 -0
  104. package/dist/DescriptionList/DescriptionList.d.ts +36 -0
  105. package/dist/DescriptionList/index.d.ts +3 -0
  106. package/dist/DescriptionList/index.js +2 -0
  107. package/dist/DescriptionList-YYY3V3O6.css +59 -0
  108. package/dist/DiffList/DiffList.d.ts +47 -0
  109. package/dist/DiffList/index.d.ts +3 -0
  110. package/dist/DiffList/index.js +3 -0
  111. package/dist/DiffList-3EX64AAE.css +94 -0
  112. package/dist/Disclosure/Disclosure.d.ts +56 -0
  113. package/dist/Disclosure/anatomy.d.ts +43 -0
  114. package/dist/Disclosure/index.d.ts +5 -0
  115. package/dist/Disclosure/index.js +6 -0
  116. package/dist/Disclosure-VKBJJIZ7.css +176 -0
  117. package/dist/EmptyState/EmptyState.d.ts +39 -0
  118. package/dist/EmptyState/index.d.ts +3 -0
  119. package/dist/EmptyState/index.js +3 -0
  120. package/dist/EmptyState-C6HRBGT7.css +73 -0
  121. package/dist/EmptyValue/EmptyValue.d.ts +31 -0
  122. package/dist/EmptyValue/index.d.ts +3 -0
  123. package/dist/EmptyValue/index.js +3 -0
  124. package/dist/EmptyValue-4B6ODXHT.css +12 -0
  125. package/dist/EntityChip/EntityChip.d.ts +40 -0
  126. package/dist/EntityChip/index.d.ts +3 -0
  127. package/dist/EntityChip/index.js +3 -0
  128. package/dist/EntityChip-LUCPZBBG.css +64 -0
  129. package/dist/ErrorBoundary/ErrorBoundary.d.ts +58 -0
  130. package/dist/ErrorBoundary/index.d.ts +3 -0
  131. package/dist/ErrorBoundary/index.js +4 -0
  132. package/dist/ErrorBoundary-ME36CQTA.css +59 -0
  133. package/dist/Eyebrow/Eyebrow.d.ts +18 -0
  134. package/dist/Eyebrow/index.d.ts +3 -0
  135. package/dist/Eyebrow/index.js +2 -0
  136. package/dist/Eyebrow-5NREGHQH.css +46 -0
  137. package/dist/FilterChip/FilterChip.d.ts +68 -0
  138. package/dist/FilterChip/index.d.ts +3 -0
  139. package/dist/FilterChip/index.js +3 -0
  140. package/dist/FilterChip-GTGLLOXE.css +107 -0
  141. package/dist/Fullscreen/index.d.ts +2 -0
  142. package/dist/Fullscreen/index.js +1 -0
  143. package/dist/Fullscreen/useFullscreen.d.ts +32 -0
  144. package/dist/IconButton/IconButton.d.ts +45 -0
  145. package/dist/IconButton/index.d.ts +3 -0
  146. package/dist/IconButton/index.js +3 -0
  147. package/dist/IconButton-VQGNMJDI.css +158 -0
  148. package/dist/ImageUpload/ImageUpload.d.ts +37 -0
  149. package/dist/ImageUpload/index.d.ts +3 -0
  150. package/dist/ImageUpload/index.js +3 -0
  151. package/dist/ImageUpload-HKFIZR6D.css +193 -0
  152. package/dist/InlineCode/InlineCode.d.ts +37 -0
  153. package/dist/InlineCode/index.d.ts +3 -0
  154. package/dist/InlineCode/index.js +2 -0
  155. package/dist/InlineCode-6WSR5COL.css +65 -0
  156. package/dist/Input/FormField.d.ts +61 -0
  157. package/dist/Input/FormRow.d.ts +6 -0
  158. package/dist/Input/FormSection.d.ts +28 -0
  159. package/dist/Input/Input.d.ts +98 -0
  160. package/dist/Input/Label.d.ts +31 -0
  161. package/dist/Input/ReadOnlyField.d.ts +30 -0
  162. package/dist/Input/Textarea.d.ts +16 -0
  163. package/dist/Input/index.d.ts +15 -0
  164. package/dist/Input/index.js +5 -0
  165. package/dist/Input-2PU5CPKK.css +616 -0
  166. package/dist/Kbd/Kbd.d.ts +40 -0
  167. package/dist/Kbd/index.d.ts +3 -0
  168. package/dist/Kbd/index.js +3 -0
  169. package/dist/Kbd-W66MXQI5.css +61 -0
  170. package/dist/Layer/LayerHost.d.ts +23 -0
  171. package/dist/Layer/index.d.ts +7 -0
  172. package/dist/Layer/index.js +3 -0
  173. package/dist/Layer/place.d.ts +63 -0
  174. package/dist/Layer/stack.d.ts +159 -0
  175. package/dist/Layer-NAFSGCFA.css +23 -0
  176. package/dist/Layout/Layout.d.ts +104 -0
  177. package/dist/Layout/index.d.ts +3 -0
  178. package/dist/Layout/index.js +2 -0
  179. package/dist/Layout-2ZCV3IGF.css +171 -0
  180. package/dist/Link/Link.d.ts +45 -0
  181. package/dist/Link/index.d.ts +3 -0
  182. package/dist/Link/index.js +3 -0
  183. package/dist/Link-6BEFNMN2.css +80 -0
  184. package/dist/List/List.d.ts +73 -0
  185. package/dist/List/index.d.ts +3 -0
  186. package/dist/List/index.js +3 -0
  187. package/dist/List-XTHESXLR.css +161 -0
  188. package/dist/ListInput/ListInput.d.ts +68 -0
  189. package/dist/ListInput/index.d.ts +3 -0
  190. package/dist/ListInput/index.js +10 -0
  191. package/dist/ListInput-O7LJKOIG.css +147 -0
  192. package/dist/Listbox/index.d.ts +5 -0
  193. package/dist/Listbox/index.js +2 -0
  194. package/dist/Listbox/useListbox.d.ts +97 -0
  195. package/dist/Listbox/useOptionKeys.d.ts +64 -0
  196. package/dist/Listbox-X2DOTSQA.css +110 -0
  197. package/dist/Menu/Menu.d.ts +118 -0
  198. package/dist/Menu/index.d.ts +3 -0
  199. package/dist/Menu/index.js +7 -0
  200. package/dist/Menu-6DE7I66I.css +222 -0
  201. package/dist/Meter/Meter.d.ts +49 -0
  202. package/dist/Meter/index.d.ts +3 -0
  203. package/dist/Meter/index.js +3 -0
  204. package/dist/Meter-SKOOXQBC.css +87 -0
  205. package/dist/Modal/ConfirmModal.d.ts +74 -0
  206. package/dist/Modal/Modal.d.ts +154 -0
  207. package/dist/Modal/index.d.ts +5 -0
  208. package/dist/Modal/index.js +8 -0
  209. package/dist/Modal-XYQJ4BL6.css +484 -0
  210. package/dist/NewItemsNotice/NewItemsNotice.d.ts +28 -0
  211. package/dist/NewItemsNotice/index.d.ts +3 -0
  212. package/dist/NewItemsNotice/index.js +4 -0
  213. package/dist/NewItemsNotice-T4DSSPVV.css +60 -0
  214. package/dist/OrgLabel/OrgLabel.d.ts +117 -0
  215. package/dist/OrgLabel/index.d.ts +3 -0
  216. package/dist/OrgLabel/index.js +2 -0
  217. package/dist/OrgLabel-D7U6QJZD.css +293 -0
  218. package/dist/OrgNode/OrgNode.d.ts +103 -0
  219. package/dist/OrgNode/index.d.ts +3 -0
  220. package/dist/OrgNode/index.js +3 -0
  221. package/dist/OrgNode-BT7T2Q2X.css +214 -0
  222. package/dist/OrgTable/OrgTable.d.ts +113 -0
  223. package/dist/OrgTable/index.d.ts +3 -0
  224. package/dist/OrgTable/index.js +11 -0
  225. package/dist/OrgTable-VWMFC3TB.css +360 -0
  226. package/dist/PageHeader/PageHeader.d.ts +35 -0
  227. package/dist/PageHeader/index.d.ts +3 -0
  228. package/dist/PageHeader/index.js +3 -0
  229. package/dist/PageHeader-6EYWQXRE.css +88 -0
  230. package/dist/Popover/Popover.d.ts +91 -0
  231. package/dist/Popover/index.d.ts +3 -0
  232. package/dist/Popover/index.js +4 -0
  233. package/dist/Popover-WJGCF3ZQ.css +185 -0
  234. package/dist/PricingCard/PricingCard.d.ts +56 -0
  235. package/dist/PricingCard/index.d.ts +3 -0
  236. package/dist/PricingCard/index.js +4 -0
  237. package/dist/PricingCard-JFI7RYXP.css +278 -0
  238. package/dist/Prose/Prose.d.ts +33 -0
  239. package/dist/Prose/index.d.ts +3 -0
  240. package/dist/Prose/index.js +2 -0
  241. package/dist/Prose-BTXNFT2Q.css +99 -0
  242. package/dist/RelativeTime/RelativeTime.d.ts +31 -0
  243. package/dist/RelativeTime/clock.d.ts +9 -0
  244. package/dist/RelativeTime/format.d.ts +38 -0
  245. package/dist/RelativeTime/index.d.ts +6 -0
  246. package/dist/RelativeTime/index.js +4 -0
  247. package/dist/RelativeTime-EBAQPGO2.css +10 -0
  248. package/dist/SearchTrigger/SearchTrigger.d.ts +29 -0
  249. package/dist/SearchTrigger/index.d.ts +3 -0
  250. package/dist/SearchTrigger/index.js +2 -0
  251. package/dist/SearchTrigger-QXOYAUUY.css +79 -0
  252. package/dist/Section/Section.d.ts +41 -0
  253. package/dist/Section/index.d.ts +3 -0
  254. package/dist/Section/index.js +3 -0
  255. package/dist/Section-QRUPRIQ2.css +127 -0
  256. package/dist/SegmentedControl/SegmentedControl.d.ts +68 -0
  257. package/dist/SegmentedControl/index.d.ts +4 -0
  258. package/dist/SegmentedControl/index.js +5 -0
  259. package/dist/SegmentedControl-X3BI3XU4.css +68 -0
  260. package/dist/Select/Select.d.ts +138 -0
  261. package/dist/Select/index.d.ts +3 -0
  262. package/dist/Select/index.js +5 -0
  263. package/dist/Select-2X77FSWR.css +350 -0
  264. package/dist/Shortcut/index.d.ts +2 -0
  265. package/dist/Shortcut/index.js +4 -0
  266. package/dist/Shortcut/useShortcut.d.ts +68 -0
  267. package/dist/SidebarNav/SidebarNav.d.ts +117 -0
  268. package/dist/SidebarNav/index.d.ts +3 -0
  269. package/dist/SidebarNav/index.js +3 -0
  270. package/dist/SidebarNav-QGSFKZYA.css +319 -0
  271. package/dist/Skeleton/Skeleton.d.ts +50 -0
  272. package/dist/Skeleton/index.d.ts +3 -0
  273. package/dist/Skeleton/index.js +3 -0
  274. package/dist/Skeleton-V735HRGM.css +421 -0
  275. package/dist/StatCard/StatCard.d.ts +56 -0
  276. package/dist/StatCard/index.d.ts +3 -0
  277. package/dist/StatCard/index.js +3 -0
  278. package/dist/StatCard-KYPKZUWX.css +111 -0
  279. package/dist/StatGroup/StatGroup.d.ts +20 -0
  280. package/dist/StatGroup/index.d.ts +3 -0
  281. package/dist/StatGroup/index.js +2 -0
  282. package/dist/StatGroup-TGB6AEKM.css +80 -0
  283. package/dist/StatusDot/StatusDot.d.ts +25 -0
  284. package/dist/StatusDot/index.d.ts +3 -0
  285. package/dist/StatusDot/index.js +2 -0
  286. package/dist/StatusDot-HA2L2FSX.css +84 -0
  287. package/dist/Switch/Switch.d.ts +38 -0
  288. package/dist/Switch/index.d.ts +3 -0
  289. package/dist/Switch/index.js +2 -0
  290. package/dist/Switch-U4OWK4CL.css +169 -0
  291. package/dist/Table/Table.d.ts +51 -0
  292. package/dist/Table/index.d.ts +3 -0
  293. package/dist/Table/index.js +3 -0
  294. package/dist/Table-MDOLVUAW.css +159 -0
  295. package/dist/Tabs/Tabs.d.ts +97 -0
  296. package/dist/Tabs/index.d.ts +3 -0
  297. package/dist/Tabs/index.js +4 -0
  298. package/dist/Tabs/roving.d.ts +36 -0
  299. package/dist/Tabs-VLICJFVB.css +275 -0
  300. package/dist/Tag/Tag.d.ts +107 -0
  301. package/dist/Tag/index.d.ts +3 -0
  302. package/dist/Tag/index.js +3 -0
  303. package/dist/Tag-VNZEYLB6.css +406 -0
  304. package/dist/TagGroup/TagGroup.d.ts +41 -0
  305. package/dist/TagGroup/index.d.ts +3 -0
  306. package/dist/TagGroup/index.js +4 -0
  307. package/dist/TagGroup-APC2EFH4.css +75 -0
  308. package/dist/TagsInput/TagsInput.d.ts +112 -0
  309. package/dist/TagsInput/index.d.ts +3 -0
  310. package/dist/TagsInput/index.js +10 -0
  311. package/dist/TagsInput-W4P36PRJ.css +168 -0
  312. package/dist/Text/Text.d.ts +67 -0
  313. package/dist/Text/index.d.ts +3 -0
  314. package/dist/Text/index.js +2 -0
  315. package/dist/Text-XIPYYZX2.css +154 -0
  316. package/dist/ThemeSwitcher/ThemeSwitcher.d.ts +47 -0
  317. package/dist/ThemeSwitcher/index.d.ts +4 -0
  318. package/dist/ThemeSwitcher/index.js +6 -0
  319. package/dist/ThemeSwitcher/preferences.d.ts +51 -0
  320. package/dist/TimeWindowPicker/TimeWindowPicker.d.ts +231 -0
  321. package/dist/TimeWindowPicker/index.d.ts +3 -0
  322. package/dist/TimeWindowPicker/index.js +13 -0
  323. package/dist/TimeWindowPicker/mask.d.ts +82 -0
  324. package/dist/TimeWindowPicker-7I7KWCMU.css +403 -0
  325. package/dist/Timeline/Timeline.d.ts +51 -0
  326. package/dist/Timeline/index.d.ts +3 -0
  327. package/dist/Timeline/index.js +3 -0
  328. package/dist/Timeline-27SYKOFX.css +144 -0
  329. package/dist/Toaster/Toaster.d.ts +108 -0
  330. package/dist/Toaster/index.d.ts +3 -0
  331. package/dist/Toaster/index.js +5 -0
  332. package/dist/Toaster-NVDCEIP5.css +306 -0
  333. package/dist/Toolbar/Toolbar.d.ts +62 -0
  334. package/dist/Toolbar/index.d.ts +3 -0
  335. package/dist/Toolbar/index.js +4 -0
  336. package/dist/Toolbar-IP6LXN45.css +48 -0
  337. package/dist/Tooltip/Tooltip.d.ts +51 -0
  338. package/dist/Tooltip/index.d.ts +3 -0
  339. package/dist/Tooltip/index.js +4 -0
  340. package/dist/Tooltip-LKQF7CE4.css +71 -0
  341. package/dist/Tree/index.d.ts +8 -0
  342. package/dist/Tree/index.js +1 -0
  343. package/dist/Tree/layout.d.ts +160 -0
  344. package/dist/Tree/model.d.ts +110 -0
  345. package/dist/Tree/useMeasuredSizes.d.ts +61 -0
  346. package/dist/Tree/useTreeState.d.ts +89 -0
  347. package/dist/TreeCanvas/TreeCanvas.d.ts +384 -0
  348. package/dist/TreeCanvas/index.d.ts +3 -0
  349. package/dist/TreeCanvas/index.js +10 -0
  350. package/dist/TreeCanvas/motion.d.ts +59 -0
  351. package/dist/TreeCanvas-WBNQPHC7.css +1098 -0
  352. package/dist/TreeGrid/TreeGrid.d.ts +142 -0
  353. package/dist/TreeGrid/index.d.ts +3 -0
  354. package/dist/TreeGrid/index.js +8 -0
  355. package/dist/TreeGrid-NSW7VMOX.css +132 -0
  356. package/dist/VisuallyHidden/VisuallyHidden.d.ts +23 -0
  357. package/dist/VisuallyHidden/index.d.ts +3 -0
  358. package/dist/VisuallyHidden/index.js +2 -0
  359. package/dist/VisuallyHidden-L552H7OA.css +21 -0
  360. package/dist/chunk-22O7LAW2.js +41 -0
  361. package/dist/chunk-23DHIMJA.js +38 -0
  362. package/dist/chunk-2EOKFKHX.js +263 -0
  363. package/dist/chunk-2PRH365R.js +74 -0
  364. package/dist/chunk-2ZQMA2WB.js +57 -0
  365. package/dist/chunk-3CZ7XAVY.js +139 -0
  366. package/dist/chunk-3EYF6HKB.js +135 -0
  367. package/dist/chunk-3ZP55QZE.js +40 -0
  368. package/dist/chunk-53DVJCVW.js +14 -0
  369. package/dist/chunk-5C5YMZQU.js +51 -0
  370. package/dist/chunk-5EKIWVOR.js +132 -0
  371. package/dist/chunk-5IMACPJS.js +495 -0
  372. package/dist/chunk-5KPQ6D7N.js +54 -0
  373. package/dist/chunk-5SDBMKUO.js +297 -0
  374. package/dist/chunk-5WS6L6FA.js +114 -0
  375. package/dist/chunk-7EM5T4ME.js +39 -0
  376. package/dist/chunk-7FZ53WDJ.js +163 -0
  377. package/dist/chunk-7HPRF5XN.js +525 -0
  378. package/dist/chunk-7RPGY3JE.js +43 -0
  379. package/dist/chunk-A2UXBCLO.js +48 -0
  380. package/dist/chunk-ARMRX2YV.js +96 -0
  381. package/dist/chunk-AV2DXAEL.js +27 -0
  382. package/dist/chunk-BHHIIK3M.js +17 -0
  383. package/dist/chunk-BZFWDIV6.js +9 -0
  384. package/dist/chunk-BZYDZBAN.js +123 -0
  385. package/dist/chunk-CMEE37QJ.js +628 -0
  386. package/dist/chunk-D3OADIM6.js +112 -0
  387. package/dist/chunk-DD5BBGBE.js +162 -0
  388. package/dist/chunk-EHMQQHYR.js +1652 -0
  389. package/dist/chunk-EN6K2IFA.js +256 -0
  390. package/dist/chunk-EPOOQZYA.js +118 -0
  391. package/dist/chunk-ESCO4XYW.js +144 -0
  392. package/dist/chunk-EUCC37WY.js +14 -0
  393. package/dist/chunk-EV6IMYJ6.js +62 -0
  394. package/dist/chunk-F27EPQ7D.js +68 -0
  395. package/dist/chunk-F4PJZ4ED.js +245 -0
  396. package/dist/chunk-F6OE5FH3.js +49 -0
  397. package/dist/chunk-FBZAKNSX.js +263 -0
  398. package/dist/chunk-FEFTGVMF.js +46 -0
  399. package/dist/chunk-G2QFRTJ2.js +823 -0
  400. package/dist/chunk-GHYY2WPF.js +907 -0
  401. package/dist/chunk-GTOUGQQK.js +147 -0
  402. package/dist/chunk-GUIF6Q6N.js +143 -0
  403. package/dist/chunk-GXQ3B46I.js +216 -0
  404. package/dist/chunk-H4FBTAYS.js +130 -0
  405. package/dist/chunk-HOXGBLEY.js +37 -0
  406. package/dist/chunk-HQNHV7D6.js +54 -0
  407. package/dist/chunk-HTDFCRJZ.js +92 -0
  408. package/dist/chunk-HZ5XZNPS.js +98 -0
  409. package/dist/chunk-IAJLHVUA.js +28 -0
  410. package/dist/chunk-IJ7QXNIJ.js +1 -0
  411. package/dist/chunk-ITHXJHBB.js +280 -0
  412. package/dist/chunk-JCSA3XVH.js +32 -0
  413. package/dist/chunk-KLJCCMF3.js +97 -0
  414. package/dist/chunk-LGCPQIOZ.js +49 -0
  415. package/dist/chunk-LWKJQTOM.js +77 -0
  416. package/dist/chunk-MNAXYY3R.js +215 -0
  417. package/dist/chunk-NN62JQLR.js +29 -0
  418. package/dist/chunk-NPZY6YYL.js +251 -0
  419. package/dist/chunk-NTRZGNEX.js +529 -0
  420. package/dist/chunk-O6232G37.js +273 -0
  421. package/dist/chunk-O67VF5MS.js +58 -0
  422. package/dist/chunk-ODEQTPFM.js +6 -0
  423. package/dist/chunk-PNFASD6F.js +98 -0
  424. package/dist/chunk-PQADV6P6.js +19 -0
  425. package/dist/chunk-PZSWF74H.js +15 -0
  426. package/dist/chunk-Q4ZPPART.js +26 -0
  427. package/dist/chunk-QNCVHRZL.js +17 -0
  428. package/dist/chunk-QVE4GJAT.js +15 -0
  429. package/dist/chunk-QYOFACSP.js +36 -0
  430. package/dist/chunk-RA2ULG6H.js +29 -0
  431. package/dist/chunk-RDGD7Z7I.js +350 -0
  432. package/dist/chunk-RK4XPHVG.js +16 -0
  433. package/dist/chunk-RSAQOKH3.js +38 -0
  434. package/dist/chunk-S2XHHEW4.js +84 -0
  435. package/dist/chunk-S4GZWSKR.js +137 -0
  436. package/dist/chunk-SFZOKW2G.js +52 -0
  437. package/dist/chunk-T7FKOJKW.js +221 -0
  438. package/dist/chunk-UG46QBLT.js +325 -0
  439. package/dist/chunk-UOGSZKLT.js +134 -0
  440. package/dist/chunk-V2XMNLMS.js +52 -0
  441. package/dist/chunk-V663QU4R.js +51 -0
  442. package/dist/chunk-W4ENKCXJ.js +40 -0
  443. package/dist/chunk-W5J7R5EB.js +107 -0
  444. package/dist/chunk-WNI2WSJF.js +27 -0
  445. package/dist/chunk-XDTYBF2F.js +36 -0
  446. package/dist/chunk-XN4JBAN3.js +32 -0
  447. package/dist/chunk-XV6WRMBC.js +211 -0
  448. package/dist/chunk-YLYOWZ4V.js +33 -0
  449. package/dist/chunk-YMWONFSI.js +170 -0
  450. package/dist/chunk-ZCR6YGQ4.js +1 -0
  451. package/dist/generated/index.d.ts +83 -0
  452. package/dist/generated/index.js +91 -0
  453. package/dist/index.d.ts +1 -1217
  454. package/dist/index.js +91 -4518
  455. package/dist/styles.css +14841 -4274
  456. package/dist/utils/cx.d.ts +10 -0
  457. package/dist/utils/headingLevel.d.ts +16 -0
  458. package/dist/utils/index.d.ts +6 -0
  459. package/dist/utils/index.js +4 -0
  460. package/dist/utils/tone.d.ts +25 -0
  461. package/dist/utils/useClipboard.d.ts +30 -0
  462. package/package.json +18 -10
  463. package/scripts/bundle-css.mjs +25 -0
  464. package/scripts/check-css-literals.mjs +166 -0
  465. package/scripts/check-css-variables.mjs +184 -0
  466. package/scripts/check-css.mjs +27 -0
  467. package/scripts/css-source.mjs +67 -0
  468. package/scripts/write-barrel.mjs +60 -0
  469. package/dist/Accordion-NIMJQIOI.css +0 -88
  470. package/dist/AppShell-ZW3NSFBP.css +0 -51
  471. package/dist/Avatar-V6NG6Q45.css +0 -67
  472. package/dist/Button-XGCTXXYP.css +0 -174
  473. package/dist/Callout-LEGDIMAM.css +0 -52
  474. package/dist/Card-BOZGBML7.css +0 -86
  475. package/dist/Checkbox-OCUICIIZ.css +0 -58
  476. package/dist/CodeBlock-IEMBNIQC.css +0 -90
  477. package/dist/Container-LTKBA2FW.css +0 -21
  478. package/dist/Copyable-IB57OTHZ.css +0 -123
  479. package/dist/DataTable-3GALZUW2.css +0 -1593
  480. package/dist/DateTimePicker-NMSSGVPK.css +0 -312
  481. package/dist/Eyebrow-AVBORAS2.css +0 -30
  482. package/dist/IconButton-GB4PJDG2.css +0 -82
  483. package/dist/ImageUpload-3HQDF2KC.css +0 -158
  484. package/dist/Input-ZHUTN7CU.css +0 -210
  485. package/dist/Kbd-Q77CDZY7.css +0 -23
  486. package/dist/Modal-FJVG66S4.css +0 -138
  487. package/dist/Popover-FUFULUE2.css +0 -123
  488. package/dist/PricingCard-NKYV3JHA.css +0 -238
  489. package/dist/Section-665ZIPG6.css +0 -20
  490. package/dist/Select-GPRF7PRB.css +0 -294
  491. package/dist/Skeleton-3WEFLRDN.css +0 -378
  492. package/dist/StatCard-RTJIVTRB.css +0 -50
  493. package/dist/Table-AR3TRY2E.css +0 -89
  494. package/dist/Tabs-XZ4JIH3E.css +0 -153
  495. package/dist/Tag-R5QDJLYJ.css +0 -163
  496. package/dist/TimeWindowPicker-L3G5Q7UT.css +0 -629
  497. package/dist/Toaster-2O65VOR4.css +0 -264
@@ -0,0 +1,249 @@
1
+ /**
2
+ * The geometry of a pannable, zoomable viewport, as pure functions.
3
+ *
4
+ * WHY IT IS SEPARATE FROM THE COMPONENT. Every rule here is arithmetic a
5
+ * browser-free suite cannot otherwise reach: jsdom has no layout, no pointer
6
+ * capture and no `DOMMatrix`, so a zoom that drifted off the cursor or a fit
7
+ * that cropped the root would pass any component suite. Kept pure, each rule
8
+ * is a function of numbers with a suite of its own, and the component is left
9
+ * with the wiring. `placePopup` in the Layer module is the same idea for the
10
+ * surfaces that float over a canvas.
11
+ *
12
+ * THE MODEL. A view is `{ x, y, k }`: a world point `p` lands on screen at
13
+ * `p * k + (x, y)`, with the origin at the viewport's top left corner. Every
14
+ * function returns a new view and never mutates one.
15
+ *
16
+ * THE RULES IT KEEPS.
17
+ *
18
+ * - A ZOOM KEEPS ITS FOCUS STILL. The world point under the cursor (or the
19
+ * pinch midpoint, or the viewport centre for a key) stays where it was,
20
+ * including when the zoom is clamped at a limit.
21
+ * - CONTENT CANNOT BE LOST. A pan leaves at least a margin of the content on
22
+ * screen on each axis, so nobody drags the chart away and has nothing left
23
+ * to drag it back by.
24
+ * - A FIT NEVER ENLARGES past one to one, and when the content is too tall to
25
+ * fit even at the smallest zoom it aligns to the TOP, where a tree's root
26
+ * is, rather than centring the root off screen.
27
+ * - A REVEAL MOVES AS LITTLE AS IT CAN: nothing when the target is already in
28
+ * view, otherwise just enough to bring it inside the padding.
29
+ */
30
+ export interface CanvasPoint {
31
+ x: number;
32
+ y: number;
33
+ }
34
+ export interface CanvasSize {
35
+ width: number;
36
+ height: number;
37
+ }
38
+ export interface CanvasRect extends CanvasPoint, CanvasSize {
39
+ }
40
+ /** A world point `p` is drawn at `p * k + (x, y)`. */
41
+ export interface CanvasView {
42
+ x: number;
43
+ y: number;
44
+ k: number;
45
+ }
46
+ /** No pan and no zoom: what a canvas shows before it has been fitted. */
47
+ export declare const IDENTITY_VIEW: CanvasView;
48
+ /**
49
+ * The smallest zoom a canvas with no content to measure will go to. At a
50
+ * quarter size body text is about three pixels tall: past reading, but the
51
+ * shape of the structure and where a card sits in it are still legible.
52
+ *
53
+ * IT IS A BACKSTOP, NOT THE FLOOR. Once the content has been measured the
54
+ * floor is the FIT itself ([zoomLimits]): there is nothing to see past the
55
+ * whole chart, and a reader who has shrunk it to a quarter of that has a
56
+ * screen of grey and no way to tell which way is back. It is what the console
57
+ * chart does, where zooming out lerps toward the fit and snaps to it.
58
+ */
59
+ export declare const CANVAS_MIN_ZOOM = 0.25;
60
+ /**
61
+ * The smallest a canvas's largest zoom may be, for content whose own items
62
+ * were never measured.
63
+ *
64
+ * THE CEILING IS NORMALLY THE CONTENT'S ([zoomLimits]): one item filling the
65
+ * viewport, which is the console chart's own ceiling and the answer to "let me
66
+ * look at THIS one". Double size was the ceiling for every chart once, which
67
+ * on a 180px node in a 1267px viewport is a fifth of the magnification a
68
+ * reader can ask for there.
69
+ */
70
+ export declare const CANVAS_MAX_ZOOM = 2;
71
+ /**
72
+ * The largest zoom any canvas will go to, however small its largest item.
73
+ *
74
+ * A chart whose widest card is a few dozen pixels would otherwise let a reader
75
+ * zoom to twenty times, where a pan of one wheel notch crosses the whole
76
+ * content and nothing on screen says where they are.
77
+ */
78
+ export declare const CANVAS_ZOOM_CEILING = 8;
79
+ /**
80
+ * How much of the viewport a region focused with [regionView] is given: the
81
+ * visible width is this many times the region's own.
82
+ *
83
+ * Three, because the point of easing onto a region is to say where it is as
84
+ * well as what it is: the region fills the middle third and its surroundings
85
+ * are still drawn either side of it. The console chart's own ghost is 280
86
+ * units wide and it eases to a visible width between 660 and 1040, which is
87
+ * 2.4 to 3.7 times.
88
+ */
89
+ export declare const CANVAS_FOCUS_CONTEXT = 3;
90
+ /**
91
+ * How much of the viewport a region a reader has to TYPE INTO is given: the
92
+ * visible width is one and a half times the region's own, so it takes two
93
+ * thirds of the pane rather than a third.
94
+ *
95
+ * A region focused because a surface is ABOUT it is being pointed at, and the
96
+ * point is as much where it is as what it is. A node being COMPOSED in the
97
+ * chart is the other thing: its card holds the form, so what is drawn there
98
+ * has to be read and typed into at a size a pointer can hit. Measured on this
99
+ * build, the builder's add form is 320 by 400 and the pane 900 by 700: at
100
+ * [CANVAS_FOCUS_CONTEXT] it is drawn at 0.58 of its own size, with a 24px
101
+ * target landing on 14 screen pixels. At this step it is drawn at 1.16.
102
+ */
103
+ export declare const CANVAS_COMPOSE_CONTEXT = 1.5;
104
+ /** A fit shows everything at no more than actual size: a small tree is not blown up. */
105
+ export declare const CANVAS_FIT_MAX_ZOOM = 1;
106
+ /**
107
+ * One zoom step, for a key press or a button: a fifth. Small enough that two
108
+ * presses are a deliberate change rather than a jump, large enough that going
109
+ * from the smallest zoom to actual size takes eight presses, not twenty.
110
+ */
111
+ export declare const CANVAS_ZOOM_STEP = 1.2;
112
+ /**
113
+ * Wheel zoom per pixel of wheel delta, chosen so that one notch of a mouse
114
+ * wheel (which browsers report as about 100 pixels) is exactly one
115
+ * `CANVAS_ZOOM_STEP`: a wheel notch and a key press do the same thing. A
116
+ * trackpad pinch reports small deltas many times a second, which this turns
117
+ * into a smooth zoom.
118
+ */
119
+ export declare const CANVAS_WHEEL_ZOOM_PER_PIXEL: number;
120
+ /** What a wheel "line" is in pixels, for devices that report lines. */
121
+ export declare const CANVAS_WHEEL_LINE_PX = 16;
122
+ /**
123
+ * How much content stays on screen however far it is panned: about one card
124
+ * edge, which is enough to see where the chart went and to grab it back.
125
+ */
126
+ export declare const CANVAS_PAN_MARGIN = 48;
127
+ /** Space kept around the content by a fit, so the outermost cards do not touch the edge. */
128
+ export declare const CANVAS_FIT_PADDING = 24;
129
+ /** Space kept around a revealed item, so focus never lands on a card cut by the edge. */
130
+ export declare const CANVAS_REVEAL_PADDING = 24;
131
+ /** How far an arrow key pans a focused viewport: roughly half a card, so a press is visible. */
132
+ export declare const CANVAS_PAN_STEP = 64;
133
+ /**
134
+ * How far a press may travel and still be a click or a tap rather than a drag.
135
+ * A mouse is precise; a finger rolls several pixels while it rests, and a slop
136
+ * sized for a mouse would turn every tap into a tiny pan.
137
+ */
138
+ export declare const CANVAS_TAP_SLOP: {
139
+ readonly mouse: 4;
140
+ readonly pen: 4;
141
+ readonly touch: 10;
142
+ };
143
+ /** How far a canvas may be zoomed out and in: see [zoomLimits]. */
144
+ export interface CanvasZoomLimits {
145
+ min: number;
146
+ max: number;
147
+ }
148
+ /** What a canvas allows before its content has been measured. */
149
+ export declare const CANVAS_ZOOM_LIMITS: CanvasZoomLimits;
150
+ /**
151
+ * How far this content, in this viewport, may be zoomed.
152
+ *
153
+ * THE FLOOR IS THE FIT. Everything there is to see is on screen at the fit, so
154
+ * zooming out past it only shrinks the chart away from the reader; the console
155
+ * chart refuses it outright, and this is that refusal. Before the content has
156
+ * been measured there is no fit to floor at, so the backstop stands.
157
+ *
158
+ * THE CEILING IS ONE ITEM FILLING THE VIEWPORT, which is what a reader asking
159
+ * for more zoom is asking for: to look at THIS card. `largestItem` is the
160
+ * width in world units of the widest one, which the chart above this knows
161
+ * because it measured every card; with none given the fixed ceiling stands. It
162
+ * never goes below that fixed ceiling and never above [CANVAS_ZOOM_CEILING].
163
+ */
164
+ export declare function zoomLimits(content: CanvasRect | null, viewport: CanvasSize, largestItem?: number, padding?: number): CanvasZoomLimits;
165
+ export declare function clampZoom(k: number, limits?: CanvasZoomLimits): number;
166
+ /** Where a world point is drawn, in viewport coordinates. */
167
+ export declare function toScreen(view: CanvasView, point: CanvasPoint): CanvasPoint;
168
+ /** Which world point a viewport coordinate sits over. */
169
+ export declare function toWorld(view: CanvasView, point: CanvasPoint): CanvasPoint;
170
+ /** A world rectangle as it is drawn, in viewport coordinates. */
171
+ export declare function screenRect(view: CanvasView, rect: CanvasRect): CanvasRect;
172
+ export declare function panBy(view: CanvasView, dx: number, dy: number): CanvasView;
173
+ /** Zoom by `factor` about `focus` (a viewport point), which stays still. */
174
+ export declare function zoomAt(view: CanvasView, factor: number, focus: CanvasPoint, limits?: CanvasZoomLimits): CanvasView;
175
+ /**
176
+ * The same view, panned no further than leaves `margin` of the content on
177
+ * screen on each axis. A view that already satisfies it comes back unchanged.
178
+ */
179
+ export declare function clampPan(view: CanvasView, content: CanvasRect, viewport: CanvasSize, margin?: number): CanvasView;
180
+ /** The view that shows all of `content`, centred, at no more than actual size. */
181
+ export declare function fitView(content: CanvasRect, viewport: CanvasSize, padding?: number): CanvasView;
182
+ /** The smallest pan that brings world rectangle `target` inside the padded viewport. */
183
+ export declare function revealView(view: CanvasView, target: CanvasRect, viewport: CanvasSize, padding?: number): CanvasView;
184
+ /**
185
+ * The view that draws world point `after` where `before` was drawn.
186
+ *
187
+ * What keeps a node still on screen when a relayout moves it in the world: a
188
+ * card grows, its siblings shift, and the one the operator just acted on stays
189
+ * under their eyes instead of jumping away.
190
+ */
191
+ export declare function anchorView(view: CanvasView, before: CanvasPoint, after: CanvasPoint): CanvasView;
192
+ /** Where a two-pointer gesture began. */
193
+ export interface PinchStart {
194
+ view: CanvasView;
195
+ a: CanvasPoint;
196
+ b: CanvasPoint;
197
+ }
198
+ /**
199
+ * The view for a pinch whose pointers have moved from `start` to `a` and `b`.
200
+ *
201
+ * The spread scales the zoom, and the world point under the starting midpoint
202
+ * follows the current midpoint, so one gesture zooms and pans together the way
203
+ * every touch map does.
204
+ */
205
+ export declare function pinchView(start: PinchStart, a: CanvasPoint, b: CanvasPoint, limits?: CanvasZoomLimits): CanvasView;
206
+ /** The minimal slice of a WheelEvent these functions read. */
207
+ export interface WheelLike {
208
+ deltaX: number;
209
+ deltaY: number;
210
+ /** 0 pixels, 1 lines, 2 pages. */
211
+ deltaMode: number;
212
+ shiftKey?: boolean;
213
+ }
214
+ /**
215
+ * A wheel event's movement in pixels.
216
+ *
217
+ * Normalised across delta modes, and with Shift turning a vertical wheel into
218
+ * a horizontal pan on platforms that do not already do that themselves.
219
+ */
220
+ export declare function wheelPixels(event: WheelLike, pageHeight: number): CanvasPoint;
221
+ /** The zoom factor for a vertical wheel movement of `dy` pixels (up zooms in). */
222
+ export declare function wheelZoomFactor(dy: number): number;
223
+ /** Whether a press that went from `a` to `b` has become a drag. */
224
+ export declare function beyondSlop(a: CanvasPoint, b: CanvasPoint, pointerType: string): boolean;
225
+ /**
226
+ * The view that brings one world rectangle to the middle of the viewport, with
227
+ * room around it.
228
+ *
229
+ * WHAT IT IS FOR: a surface that is about ONE node (a form for the child about
230
+ * to be added under it, say) has to be able to say WHERE that node is, and the
231
+ * chart is the only thing that can say it. Easing onto the region is the
232
+ * console chart's own answer, and it saves the view it left so the reader is
233
+ * put back exactly where they were when the surface closes.
234
+ *
235
+ * THE ZOOM IS THE REGION'S, NOT THE READER'S: the region is given the middle
236
+ * third of the viewport ([CANVAS_FOCUS_CONTEXT]), clamped to what this content
237
+ * allows, so a small region is enlarged and a huge one is shrunk to fit.
238
+ *
239
+ * `ceiling` is how far that may go IN, for a region that has a size of its own
240
+ * to respect. A node being pointed AT has none, so the default is no ceiling
241
+ * and a small chart's node fills the pane; a region holding a FORM was drawn
242
+ * at the size its controls were designed at, and enlarging it is a page zoom
243
+ * nobody asked for. Measured on a two-node company: the engine's add form was
244
+ * drawn at 233%, its 16px labels at 37px and its buttons past a finger's
245
+ * width, with the chart around it off screen. [CANVAS_FIT_MAX_ZOOM] is the
246
+ * ceiling such a caller passes, which is the same "never blown up" this
247
+ * module's fit already keeps.
248
+ */
249
+ export declare function regionView(region: CanvasRect, viewport: CanvasSize, limits?: CanvasZoomLimits, context?: number, ceiling?: number): CanvasView;
@@ -0,0 +1,5 @@
1
+ import './Canvas.css';
2
+ export { Canvas } from './Canvas.js';
3
+ export type { CanvasHandle, CanvasLabels, CanvasProps } from './Canvas.js';
4
+ export { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, CANVAS_FIT_PADDING, CANVAS_FOCUS_CONTEXT, CANVAS_MAX_ZOOM, CANVAS_MIN_ZOOM, CANVAS_PAN_MARGIN, CANVAS_PAN_STEP, CANVAS_REVEAL_PADDING, CANVAS_TAP_SLOP, CANVAS_WHEEL_LINE_PX, CANVAS_WHEEL_ZOOM_PER_PIXEL, CANVAS_ZOOM_CEILING, CANVAS_ZOOM_LIMITS, CANVAS_ZOOM_STEP, IDENTITY_VIEW, anchorView, beyondSlop, clampPan, clampZoom, fitView, panBy, pinchView, regionView, revealView, screenRect, toScreen, toWorld, wheelPixels, wheelZoomFactor, zoomAt, zoomLimits, } from './geometry.js';
5
+ export type { CanvasPoint, CanvasRect, CanvasSize, CanvasView, CanvasZoomLimits, PinchStart, WheelLike, } from './geometry.js';
@@ -0,0 +1,8 @@
1
+ export { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, CANVAS_FIT_PADDING, CANVAS_FOCUS_CONTEXT, CANVAS_MAX_ZOOM, CANVAS_MIN_ZOOM, CANVAS_PAN_MARGIN, CANVAS_PAN_STEP, CANVAS_REVEAL_PADDING, CANVAS_TAP_SLOP, CANVAS_WHEEL_LINE_PX, CANVAS_WHEEL_ZOOM_PER_PIXEL, CANVAS_ZOOM_CEILING, CANVAS_ZOOM_LIMITS, CANVAS_ZOOM_STEP, Canvas, IDENTITY_VIEW, anchorView, beyondSlop, clampPan, clampZoom, fitView, panBy, pinchView, regionView, revealView, screenRect, toScreen, toWorld, wheelPixels, wheelZoomFactor, zoomAt, zoomLimits } from '../chunk-CMEE37QJ.js';
2
+ import '../chunk-53DVJCVW.js';
3
+ import '../chunk-7RPGY3JE.js';
4
+ import '../chunk-ITHXJHBB.js';
5
+ import '../chunk-F27EPQ7D.js';
6
+ import '../chunk-BZYDZBAN.js';
7
+ import '../chunk-BZFWDIV6.js';
8
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Hands a surface the element its own LayerHost provides.
3
+ *
4
+ * WHY IT EXISTS. A host keeps its element in state and publishes it through
5
+ * context, so the only way to reach it is from inside. A surface that draws a
6
+ * host over content that MOVES (a canvas that pans and zooms, a grid that
7
+ * scrolls sideways) has to dispatch `LAYER_REPOSITION_EVENT` on that element
8
+ * whenever the content moves, which is what an open menu or picker listens to
9
+ * in order to follow its anchor or close with it. So a component renders this
10
+ * inside its host and keeps what it reports.
11
+ *
12
+ * ONE COPY, imported by the canvas and by the grid. Written twice it would be
13
+ * two places to get the document body case wrong. It belongs here rather than
14
+ * in the Layer module only because this package's Layer folder has another
15
+ * owner; the right home for it is beside `LayerHost`, as a hook that answers
16
+ * with the host's own element (see the note in the package README).
17
+ */
18
+ export declare function LayerNodeBridge({ onNode }: {
19
+ onNode: (el: HTMLElement | null) => void;
20
+ }): null;
@@ -0,0 +1,315 @@
1
+ /*
2
+ * A bounded viewport (Canvas.tsx). It fills the box it is given and clips; the
3
+ * page's own scroller is never involved.
4
+ */
5
+
6
+ .crewlet-canvas {
7
+ position: relative;
8
+ height: 100%;
9
+ min-height: 0;
10
+ overflow: hidden;
11
+ /*
12
+ * THE PAGE'S OWN GROUND, not a panel's. A canvas is a FIELD that cards are
13
+ * placed on, and a card carries the panel surface: painted on the panel
14
+ * colour the two were the same grey, so a chart read as a sheet of cards
15
+ * with no space between them rather than as objects standing on a field.
16
+ * The frame is what says where the canvas ends.
17
+ */
18
+ background: var(--color-surface-background);
19
+ border: 1px solid var(--color-border-default);
20
+ border-radius: var(--radius-lg);
21
+ }
22
+
23
+ .crewlet-canvas__viewport {
24
+ position: absolute;
25
+ inset: 0;
26
+ overflow: hidden;
27
+ cursor: grab;
28
+ /* Until it is tapped, one finger belongs to the page's vertical scroll. */
29
+ touch-action: pan-y;
30
+ }
31
+
32
+ /*
33
+ * The ring is drawn INSIDE the viewport's own box, because the canvas clips:
34
+ * an outset ring would be cut away by the border it sits under.
35
+ */
36
+ .crewlet-canvas__viewport:focus-visible {
37
+ outline: 2px solid var(--color-focus);
38
+ outline-offset: var(--size-focus-ring-inset-offset);
39
+ }
40
+
41
+ .crewlet-canvas[data-touch-active='true'] .crewlet-canvas__viewport {
42
+ touch-action: none;
43
+ }
44
+
45
+ .crewlet-canvas[data-panning='true'] .crewlet-canvas__viewport {
46
+ cursor: grabbing;
47
+ user-select: none;
48
+ }
49
+
50
+ .crewlet-canvas__world {
51
+ position: absolute;
52
+ top: 0;
53
+ left: 0;
54
+ transform-origin: 0 0;
55
+ }
56
+
57
+ /*
58
+ * Nothing is shown before the first fit: a chart that appears at the origin and
59
+ * then jumps into place reads as the page misbehaving.
60
+ */
61
+ .crewlet-canvas[data-ready='false'] .crewlet-canvas__world {
62
+ visibility: hidden;
63
+ }
64
+
65
+ .crewlet-canvas[data-panning='true'] .crewlet-canvas__world {
66
+ will-change: transform;
67
+ }
68
+
69
+ /*
70
+ * Eased only when asked for, never while a finger or a wheel is moving it, and
71
+ * in one of TWO eases, because the canvas does two different things.
72
+ *
73
+ * `near` is a CORRECTION to the view the reader already has: a fit, a zoom
74
+ * step, the least pan that brings something into view. The emphasised
75
+ * decelerate at the default step, which is what an arriving surface takes
76
+ * everywhere in the system, so it lands rather than drifts.
77
+ *
78
+ * `travel` is the chart GOING SOMEWHERE ELSE: easing onto the node a surface
79
+ * is about, onto a node being composed, and back again. That is a gesture
80
+ * rather than a correction, and what the movement says is WHERE the place is,
81
+ * so cutting it short throws away the whole of what it is for. Measured
82
+ * against the console chart this package is drawn to match, whose own viewBox
83
+ * ease is 400ms of easeInOutQuad: at the near step ours was 150ms, 2.7 times
84
+ * faster, and the owner's words for it were that there was no zoom effect at
85
+ * all. Two `moderate` steps is that chart's 400 exactly, written as scale
86
+ * steps rather than as a number off the scale, and the in-out curve is the
87
+ * shape of its easing rather than the decelerate a surface lands on: a journey
88
+ * is read by leaving as well as by arriving.
89
+ *
90
+ * The two properties the world carries anyway are repeated in both, because a
91
+ * transition property is replaced rather than added to.
92
+ */
93
+ .crewlet-canvas[data-animate='near'] .crewlet-canvas__world {
94
+ transition:
95
+ transform var(--motion-duration-base) var(--motion-easing-emphasized),
96
+ filter var(--motion-duration-slow) var(--motion-easing-default),
97
+ opacity var(--motion-duration-slow) var(--motion-easing-default);
98
+ }
99
+
100
+ .crewlet-canvas[data-animate='travel'] .crewlet-canvas__world {
101
+ transition:
102
+ transform calc(var(--motion-duration-moderate) * 2) var(--motion-easing-in-out),
103
+ filter var(--motion-duration-slow) var(--motion-easing-default),
104
+ opacity var(--motion-duration-slow) var(--motion-easing-default);
105
+ }
106
+
107
+ /*
108
+ * The untransformed overlay, under the layer host that carries the menus and
109
+ * pickers opened from the content. Empty space passes presses through to the
110
+ * viewport beneath it; each child takes its own back, because a control drawn
111
+ * here has to be pressable, and a note that must not swallow the drag that
112
+ * pans the chart turns them off on itself.
113
+ */
114
+ .crewlet-canvas__overlay {
115
+ position: absolute;
116
+ inset: 0;
117
+ pointer-events: none;
118
+ }
119
+
120
+ .crewlet-canvas__overlay > * {
121
+ pointer-events: auto;
122
+ }
123
+
124
+ /*
125
+ * THE CHART'S OWN CHROME, as ONE group in ONE corner: a column of bars, each a
126
+ * surface of its own, in the corner the caller names. The console org chart
127
+ * stacks its toolbar, its key hint and its chart switch exactly this way, and
128
+ * what is being avoided is what happened when it was not one group: the zoom
129
+ * bar sat in one corner of the canvas and two of its three companions sat in
130
+ * the page's toolbar 800px away, acting on a canvas they were nowhere near.
131
+ */
132
+ .crewlet-canvas__controls {
133
+ position: absolute;
134
+ right: var(--spacing-3);
135
+ bottom: var(--spacing-3);
136
+ z-index: var(--z-index-raised);
137
+ display: flex;
138
+ flex-direction: column;
139
+ align-items: flex-end;
140
+ gap: var(--spacing-2);
141
+ }
142
+
143
+ /*
144
+ * TOP RIGHT IS A CHART'S CORNER. A tree grows downward from its root, so the
145
+ * bottom right is where the content ends up and the top right is the corner
146
+ * that stays empty; it is also the first place a reader looks after the root.
147
+ */
148
+ .crewlet-canvas__controls[data-placement='top-right'] {
149
+ top: var(--spacing-3);
150
+ bottom: auto;
151
+ }
152
+
153
+ /*
154
+ * ONE BAR: a well at the panel radius with its controls lifted inside it. The
155
+ * chip step is exactly one hairline tighter than the well around it, which is
156
+ * what reads as sitting IN it rather than beside it, and it is the console
157
+ * chart's own 7px against its 10px bar.
158
+ */
159
+ .crewlet-canvas__bar {
160
+ display: flex;
161
+ align-items: center;
162
+ gap: var(--spacing-1);
163
+ padding: var(--spacing-1);
164
+ background: var(--color-surface-glass);
165
+ backdrop-filter: blur(var(--blur-sm));
166
+ border: 1px solid var(--color-border-default);
167
+ border-radius: var(--radius-md);
168
+ box-shadow: var(--shadow-xs);
169
+ }
170
+
171
+ .crewlet-canvas__bar .crewlet-icon-btn {
172
+ border-radius: var(--radius-chip);
173
+ }
174
+
175
+ /*
176
+ * A NOTE UNDER THE CONTROLS, about a key or a state the canvas is in. The
177
+ * bar's own surface at the smallest step, because it is one of the group's
178
+ * bars rather than a thing floating over the chart; inert, because it is
179
+ * decoration and a press meant for the chart must reach the chart.
180
+ *
181
+ * AND IT IS DRAWN ONLY WHEN IT SAYS SOMETHING. The element stays in the
182
+ * document while it is empty, because a live region a page INSERTS with its
183
+ * message already in it is a region a screen reader may never announce, where
184
+ * one that was there and is then filled is announced; an empty bar with a
185
+ * border around it is not a thing to draw, so it is not.
186
+ */
187
+ .crewlet-canvas__hint {
188
+ display: flex;
189
+ align-items: center;
190
+ gap: var(--spacing-2);
191
+ max-width: 16rem;
192
+ padding: var(--spacing-1) var(--spacing-2);
193
+ font-size: var(--font-size-2xs);
194
+ line-height: var(--font-line-height-tight);
195
+ color: var(--color-text-secondary);
196
+ text-align: right;
197
+ background: var(--color-surface-glass);
198
+ backdrop-filter: blur(var(--blur-sm));
199
+ border: 1px solid var(--color-border-default);
200
+ border-radius: var(--radius-md);
201
+ box-shadow: var(--shadow-xs);
202
+ pointer-events: none;
203
+ }
204
+
205
+ .crewlet-canvas__hint:empty {
206
+ display: none;
207
+ }
208
+
209
+ /*
210
+ * THE ZOOM READOUT, between the two steppers. It says where the view stands,
211
+ * which two chevrons never do, and it is the way to a number without pressing a
212
+ * chevron eight times.
213
+ *
214
+ * It is the SMALL CONTROL STEP tall, like the buttons either side of it, so the
215
+ * row of controls is one row of targets rather than two heights; and the same
216
+ * step wide at least, so a zoom of 25% and one of 100% do not move the buttons
217
+ * beside them as a reader zooms. `tabular-nums` is the other half of that: a
218
+ * proportional 1 is narrower than a 0, so a digit changing would otherwise
219
+ * shift the two characters beside it.
220
+ */
221
+ .crewlet-canvas__zoom,
222
+ .crewlet-canvas__zoom-field {
223
+ flex: none;
224
+ box-sizing: border-box;
225
+ /*
226
+ * ONE WIDTH FOR BOTH, and it is a WIDTH rather than a floor. As a floor it
227
+ * held the button to the step and did nothing at all to the field, whose own
228
+ * intrinsic size is its `size` attribute: 155px at this type, so pressing
229
+ * the readout made the bar 111px wider and moved every button in it out from
230
+ * under the pointer. The console chart's is a fixed 36px in the slot the
231
+ * readout used, for that reason.
232
+ */
233
+ width: var(--size-control-lg);
234
+ height: var(--size-control-sm);
235
+ padding: 0 var(--spacing-1);
236
+ font: inherit;
237
+ font-size: var(--font-size-xs);
238
+ font-variant-numeric: tabular-nums;
239
+ text-align: center;
240
+ color: var(--color-text-secondary);
241
+ background: transparent;
242
+ border: 1px solid transparent;
243
+ border-radius: var(--radius-sm);
244
+ }
245
+
246
+ .crewlet-canvas__zoom {
247
+ cursor: pointer;
248
+ border-radius: var(--radius-chip);
249
+ }
250
+
251
+ .crewlet-canvas__zoom:hover:not(:disabled) {
252
+ color: var(--color-text-primary);
253
+ background: var(--color-surface-hover);
254
+ }
255
+
256
+ .crewlet-canvas__zoom:disabled {
257
+ color: var(--color-text-tertiary);
258
+ cursor: not-allowed;
259
+ pointer-events: none;
260
+ }
261
+
262
+ /*
263
+ * The field is the box it replaced the button with, so it is drawn as a box:
264
+ * the boundary is what says a value can be typed here, where the button's is
265
+ * transparent.
266
+ */
267
+ .crewlet-canvas__zoom-field {
268
+ color: var(--color-text-primary);
269
+ background: var(--color-surface-inset);
270
+ border-color: var(--color-border-control);
271
+ }
272
+
273
+ .crewlet-canvas__zoom:focus-visible,
274
+ .crewlet-canvas__zoom-field:focus-visible {
275
+ outline: 2px solid var(--color-focus);
276
+ /* Inset, like every ring on this canvas: the controls sit against the
277
+ viewport's clipping edge, where an outset ring is cut away. */
278
+ outline-offset: var(--size-focus-ring-inset-offset);
279
+ }
280
+
281
+ /*
282
+ * THE CONTENT PUSHED BACK, for a surface opened over the canvas about one part
283
+ * of it. Blurred and faded rather than covered: the chart is still there
284
+ * behind the decision being made about it, which is what tells a reader where
285
+ * the thing they are naming will go. The console chart does the same while a
286
+ * node is being added.
287
+ *
288
+ * ON THE WORLD, NOT THE CANVAS. A filter on the canvas would blur the controls
289
+ * and any note over it too, and a filter makes a containing block, which would
290
+ * take every menu the content opens out of its own layer.
291
+ */
292
+ .crewlet-canvas[data-dimmed='true'] .crewlet-canvas__world {
293
+ filter: blur(var(--blur-xs));
294
+ opacity: 0.55;
295
+ }
296
+
297
+ .crewlet-canvas__world {
298
+ transition:
299
+ filter var(--motion-duration-slow) var(--motion-easing-default),
300
+ opacity var(--motion-duration-slow) var(--motion-easing-default);
301
+ }
302
+
303
+ /*
304
+ * A READER WHO ASKED FOR LESS is put where they are going without travelling:
305
+ * both eases are cancelled, so the chart ARRIVES at the node a surface is
306
+ * about, or at a node being composed, rather than moving there. Nothing is
307
+ * lost but the journey.
308
+ */
309
+ @media (prefers-reduced-motion: reduce) {
310
+ .crewlet-canvas[data-animate='near'] .crewlet-canvas__world,
311
+ .crewlet-canvas[data-animate='travel'] .crewlet-canvas__world,
312
+ .crewlet-canvas__world {
313
+ transition: none;
314
+ }
315
+ }