@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.
- package/README.md +1714 -14
- package/dist/Accordion/Accordion.d.ts +54 -0
- package/dist/Accordion/index.d.ts +4 -0
- package/dist/Accordion/index.js +6 -0
- package/dist/Accordion-ZI2WLD5C.css +87 -0
- package/dist/AddPill/AddPill.d.ts +114 -0
- package/dist/AddPill/index.d.ts +3 -0
- package/dist/AddPill/index.js +3 -0
- package/dist/AddPill-DFWXYLIQ.css +434 -0
- package/dist/Announcer/Announcer.d.ts +15 -0
- package/dist/Announcer/index.d.ts +2 -0
- package/dist/Announcer/index.js +3 -0
- package/dist/AppShell/AppShell.d.ts +193 -0
- package/dist/AppShell/index.d.ts +3 -0
- package/dist/AppShell/index.js +6 -0
- package/dist/AppShell-NVE6LHNI.css +395 -0
- package/dist/Avatar/Avatar.d.ts +104 -0
- package/dist/Avatar/index.d.ts +3 -0
- package/dist/Avatar/index.js +2 -0
- package/dist/Avatar-P2KRQM2B.css +156 -0
- package/dist/BrandLockup/BrandLockup.d.ts +41 -0
- package/dist/BrandLockup/index.d.ts +3 -0
- package/dist/BrandLockup/index.js +2 -0
- package/dist/BrandLockup-6ISDEHPJ.css +108 -0
- package/dist/Button/Button.d.ts +88 -0
- package/dist/Button/index.d.ts +3 -0
- package/dist/Button/index.js +3 -0
- package/dist/Button-D4J6B4MA.css +302 -0
- package/dist/CalendarGrid/CalendarGrid.d.ts +87 -0
- package/dist/CalendarGrid/index.d.ts +3 -0
- package/dist/CalendarGrid/index.js +2 -0
- package/dist/CalendarGrid-V6TQ5QKS.css +128 -0
- package/dist/Callout/Callout.d.ts +47 -0
- package/dist/Callout/index.d.ts +3 -0
- package/dist/Callout/index.js +2 -0
- package/dist/Callout-S7QDWHDL.css +111 -0
- package/dist/Canvas/Canvas.d.ts +234 -0
- package/dist/Canvas/geometry.d.ts +249 -0
- package/dist/Canvas/index.d.ts +5 -0
- package/dist/Canvas/index.js +8 -0
- package/dist/Canvas/layerNode.d.ts +20 -0
- package/dist/Canvas-Q6JETCWR.css +315 -0
- package/dist/Card/Card.d.ts +142 -0
- package/dist/Card/headerSlot.d.ts +65 -0
- package/dist/Card/index.d.ts +5 -0
- package/dist/Card/index.js +6 -0
- package/dist/Card-AHX3Q2JD.css +428 -0
- package/dist/Charts/ActivityStrip.d.ts +45 -0
- package/dist/Charts/BarList.d.ts +51 -0
- package/dist/Charts/Legend.d.ts +32 -0
- package/dist/Charts/StackedBar.d.ts +38 -0
- package/dist/Charts/TimeSeries.d.ts +92 -0
- package/dist/Charts/dataColor.d.ts +20 -0
- package/dist/Charts/index.d.ts +12 -0
- package/dist/Charts/index.js +3 -0
- package/dist/Charts-D7G2BSXH.css +277 -0
- package/dist/Checkbox/Checkbox.d.ts +45 -0
- package/dist/Checkbox/index.d.ts +3 -0
- package/dist/Checkbox/index.js +2 -0
- package/dist/Checkbox-VGW26YLQ.css +111 -0
- package/dist/CodeBlock/CodeBlock.d.ts +60 -0
- package/dist/CodeBlock/index.d.ts +3 -0
- package/dist/CodeBlock/index.js +7 -0
- package/dist/CodeBlock-U2W6NNVC.css +153 -0
- package/dist/Combobox/Combobox.d.ts +89 -0
- package/dist/Combobox/index.d.ts +3 -0
- package/dist/Combobox/index.js +8 -0
- package/dist/Combobox-4FUVYIE7.css +80 -0
- package/dist/CommandPalette/CommandPalette.d.ts +77 -0
- package/dist/CommandPalette/index.d.ts +3 -0
- package/dist/CommandPalette/index.js +11 -0
- package/dist/CommandPalette-CSJDUCQA.css +115 -0
- package/dist/Container/Container.d.ts +17 -0
- package/dist/Container/index.d.ts +3 -0
- package/dist/Container/index.js +2 -0
- package/dist/Container-3TSKMGNI.css +52 -0
- package/dist/Copyable/CopyButton.d.ts +54 -0
- package/dist/Copyable/Copyable.d.ts +34 -0
- package/dist/Copyable/index.d.ts +5 -0
- package/dist/Copyable/index.js +6 -0
- package/dist/Copyable-5PNRFOLS.css +125 -0
- package/dist/Count/Count.d.ts +24 -0
- package/dist/Count/index.d.ts +3 -0
- package/dist/Count/index.js +3 -0
- package/dist/Count-ZVCJ6VPD.css +20 -0
- package/dist/DataTable/CopyableCell.d.ts +12 -0
- package/dist/DataTable/DataTable.d.ts +615 -0
- package/dist/DataTable/RowActionsMenu.d.ts +7 -0
- package/dist/DataTable/index.d.ts +7 -0
- package/dist/DataTable/index.js +14 -0
- package/dist/DataTable-ITNACQ2X.css +2020 -0
- package/dist/DataView/DataView.d.ts +109 -0
- package/dist/DataView/DataViewToolbar.d.ts +87 -0
- package/dist/DataView/FilterAxisBar.d.ts +103 -0
- package/dist/DataView/columns.d.ts +35 -0
- package/dist/DataView/filters.d.ts +184 -0
- package/dist/DataView/index.d.ts +11 -0
- package/dist/DataView/index.js +25 -0
- package/dist/DataView-256YF32J.css +441 -0
- package/dist/DateTimePicker/DateTimePicker.d.ts +91 -0
- package/dist/DateTimePicker/index.d.ts +3 -0
- package/dist/DateTimePicker/index.js +9 -0
- package/dist/DateTimePicker-22VNXRWC.css +199 -0
- package/dist/DescriptionList/DescriptionList.d.ts +36 -0
- package/dist/DescriptionList/index.d.ts +3 -0
- package/dist/DescriptionList/index.js +2 -0
- package/dist/DescriptionList-YYY3V3O6.css +59 -0
- package/dist/DiffList/DiffList.d.ts +47 -0
- package/dist/DiffList/index.d.ts +3 -0
- package/dist/DiffList/index.js +3 -0
- package/dist/DiffList-3EX64AAE.css +94 -0
- package/dist/Disclosure/Disclosure.d.ts +56 -0
- package/dist/Disclosure/anatomy.d.ts +43 -0
- package/dist/Disclosure/index.d.ts +5 -0
- package/dist/Disclosure/index.js +6 -0
- package/dist/Disclosure-VKBJJIZ7.css +176 -0
- package/dist/EmptyState/EmptyState.d.ts +39 -0
- package/dist/EmptyState/index.d.ts +3 -0
- package/dist/EmptyState/index.js +3 -0
- package/dist/EmptyState-C6HRBGT7.css +73 -0
- package/dist/EmptyValue/EmptyValue.d.ts +31 -0
- package/dist/EmptyValue/index.d.ts +3 -0
- package/dist/EmptyValue/index.js +3 -0
- package/dist/EmptyValue-4B6ODXHT.css +12 -0
- package/dist/EntityChip/EntityChip.d.ts +40 -0
- package/dist/EntityChip/index.d.ts +3 -0
- package/dist/EntityChip/index.js +3 -0
- package/dist/EntityChip-LUCPZBBG.css +64 -0
- package/dist/ErrorBoundary/ErrorBoundary.d.ts +58 -0
- package/dist/ErrorBoundary/index.d.ts +3 -0
- package/dist/ErrorBoundary/index.js +4 -0
- package/dist/ErrorBoundary-ME36CQTA.css +59 -0
- package/dist/Eyebrow/Eyebrow.d.ts +18 -0
- package/dist/Eyebrow/index.d.ts +3 -0
- package/dist/Eyebrow/index.js +2 -0
- package/dist/Eyebrow-5NREGHQH.css +46 -0
- package/dist/FilterChip/FilterChip.d.ts +68 -0
- package/dist/FilterChip/index.d.ts +3 -0
- package/dist/FilterChip/index.js +3 -0
- package/dist/FilterChip-GTGLLOXE.css +107 -0
- package/dist/Fullscreen/index.d.ts +2 -0
- package/dist/Fullscreen/index.js +1 -0
- package/dist/Fullscreen/useFullscreen.d.ts +32 -0
- package/dist/IconButton/IconButton.d.ts +45 -0
- package/dist/IconButton/index.d.ts +3 -0
- package/dist/IconButton/index.js +3 -0
- package/dist/IconButton-VQGNMJDI.css +158 -0
- package/dist/ImageUpload/ImageUpload.d.ts +37 -0
- package/dist/ImageUpload/index.d.ts +3 -0
- package/dist/ImageUpload/index.js +3 -0
- package/dist/ImageUpload-HKFIZR6D.css +193 -0
- package/dist/InlineCode/InlineCode.d.ts +37 -0
- package/dist/InlineCode/index.d.ts +3 -0
- package/dist/InlineCode/index.js +2 -0
- package/dist/InlineCode-6WSR5COL.css +65 -0
- package/dist/Input/FormField.d.ts +61 -0
- package/dist/Input/FormRow.d.ts +6 -0
- package/dist/Input/FormSection.d.ts +28 -0
- package/dist/Input/Input.d.ts +98 -0
- package/dist/Input/Label.d.ts +31 -0
- package/dist/Input/ReadOnlyField.d.ts +30 -0
- package/dist/Input/Textarea.d.ts +16 -0
- package/dist/Input/index.d.ts +15 -0
- package/dist/Input/index.js +5 -0
- package/dist/Input-2PU5CPKK.css +616 -0
- package/dist/Kbd/Kbd.d.ts +40 -0
- package/dist/Kbd/index.d.ts +3 -0
- package/dist/Kbd/index.js +3 -0
- package/dist/Kbd-W66MXQI5.css +61 -0
- package/dist/Layer/LayerHost.d.ts +23 -0
- package/dist/Layer/index.d.ts +7 -0
- package/dist/Layer/index.js +3 -0
- package/dist/Layer/place.d.ts +63 -0
- package/dist/Layer/stack.d.ts +159 -0
- package/dist/Layer-NAFSGCFA.css +23 -0
- package/dist/Layout/Layout.d.ts +104 -0
- package/dist/Layout/index.d.ts +3 -0
- package/dist/Layout/index.js +2 -0
- package/dist/Layout-2ZCV3IGF.css +171 -0
- package/dist/Link/Link.d.ts +45 -0
- package/dist/Link/index.d.ts +3 -0
- package/dist/Link/index.js +3 -0
- package/dist/Link-6BEFNMN2.css +80 -0
- package/dist/List/List.d.ts +73 -0
- package/dist/List/index.d.ts +3 -0
- package/dist/List/index.js +3 -0
- package/dist/List-XTHESXLR.css +161 -0
- package/dist/ListInput/ListInput.d.ts +68 -0
- package/dist/ListInput/index.d.ts +3 -0
- package/dist/ListInput/index.js +10 -0
- package/dist/ListInput-O7LJKOIG.css +147 -0
- package/dist/Listbox/index.d.ts +5 -0
- package/dist/Listbox/index.js +2 -0
- package/dist/Listbox/useListbox.d.ts +97 -0
- package/dist/Listbox/useOptionKeys.d.ts +64 -0
- package/dist/Listbox-X2DOTSQA.css +110 -0
- package/dist/Menu/Menu.d.ts +118 -0
- package/dist/Menu/index.d.ts +3 -0
- package/dist/Menu/index.js +7 -0
- package/dist/Menu-6DE7I66I.css +222 -0
- package/dist/Meter/Meter.d.ts +49 -0
- package/dist/Meter/index.d.ts +3 -0
- package/dist/Meter/index.js +3 -0
- package/dist/Meter-SKOOXQBC.css +87 -0
- package/dist/Modal/ConfirmModal.d.ts +74 -0
- package/dist/Modal/Modal.d.ts +154 -0
- package/dist/Modal/index.d.ts +5 -0
- package/dist/Modal/index.js +8 -0
- package/dist/Modal-XYQJ4BL6.css +484 -0
- package/dist/NewItemsNotice/NewItemsNotice.d.ts +28 -0
- package/dist/NewItemsNotice/index.d.ts +3 -0
- package/dist/NewItemsNotice/index.js +4 -0
- package/dist/NewItemsNotice-T4DSSPVV.css +60 -0
- package/dist/OrgLabel/OrgLabel.d.ts +117 -0
- package/dist/OrgLabel/index.d.ts +3 -0
- package/dist/OrgLabel/index.js +2 -0
- package/dist/OrgLabel-D7U6QJZD.css +293 -0
- package/dist/OrgNode/OrgNode.d.ts +103 -0
- package/dist/OrgNode/index.d.ts +3 -0
- package/dist/OrgNode/index.js +3 -0
- package/dist/OrgNode-BT7T2Q2X.css +214 -0
- package/dist/OrgTable/OrgTable.d.ts +113 -0
- package/dist/OrgTable/index.d.ts +3 -0
- package/dist/OrgTable/index.js +11 -0
- package/dist/OrgTable-VWMFC3TB.css +360 -0
- package/dist/PageHeader/PageHeader.d.ts +35 -0
- package/dist/PageHeader/index.d.ts +3 -0
- package/dist/PageHeader/index.js +3 -0
- package/dist/PageHeader-6EYWQXRE.css +88 -0
- package/dist/Popover/Popover.d.ts +91 -0
- package/dist/Popover/index.d.ts +3 -0
- package/dist/Popover/index.js +4 -0
- package/dist/Popover-WJGCF3ZQ.css +185 -0
- package/dist/PricingCard/PricingCard.d.ts +56 -0
- package/dist/PricingCard/index.d.ts +3 -0
- package/dist/PricingCard/index.js +4 -0
- package/dist/PricingCard-JFI7RYXP.css +278 -0
- package/dist/Prose/Prose.d.ts +33 -0
- package/dist/Prose/index.d.ts +3 -0
- package/dist/Prose/index.js +2 -0
- package/dist/Prose-BTXNFT2Q.css +99 -0
- package/dist/RelativeTime/RelativeTime.d.ts +31 -0
- package/dist/RelativeTime/clock.d.ts +9 -0
- package/dist/RelativeTime/format.d.ts +38 -0
- package/dist/RelativeTime/index.d.ts +6 -0
- package/dist/RelativeTime/index.js +4 -0
- package/dist/RelativeTime-EBAQPGO2.css +10 -0
- package/dist/SearchTrigger/SearchTrigger.d.ts +29 -0
- package/dist/SearchTrigger/index.d.ts +3 -0
- package/dist/SearchTrigger/index.js +2 -0
- package/dist/SearchTrigger-QXOYAUUY.css +79 -0
- package/dist/Section/Section.d.ts +41 -0
- package/dist/Section/index.d.ts +3 -0
- package/dist/Section/index.js +3 -0
- package/dist/Section-QRUPRIQ2.css +127 -0
- package/dist/SegmentedControl/SegmentedControl.d.ts +68 -0
- package/dist/SegmentedControl/index.d.ts +4 -0
- package/dist/SegmentedControl/index.js +5 -0
- package/dist/SegmentedControl-X3BI3XU4.css +68 -0
- package/dist/Select/Select.d.ts +138 -0
- package/dist/Select/index.d.ts +3 -0
- package/dist/Select/index.js +5 -0
- package/dist/Select-2X77FSWR.css +350 -0
- package/dist/Shortcut/index.d.ts +2 -0
- package/dist/Shortcut/index.js +4 -0
- package/dist/Shortcut/useShortcut.d.ts +68 -0
- package/dist/SidebarNav/SidebarNav.d.ts +117 -0
- package/dist/SidebarNav/index.d.ts +3 -0
- package/dist/SidebarNav/index.js +3 -0
- package/dist/SidebarNav-QGSFKZYA.css +319 -0
- package/dist/Skeleton/Skeleton.d.ts +50 -0
- package/dist/Skeleton/index.d.ts +3 -0
- package/dist/Skeleton/index.js +3 -0
- package/dist/Skeleton-V735HRGM.css +421 -0
- package/dist/StatCard/StatCard.d.ts +56 -0
- package/dist/StatCard/index.d.ts +3 -0
- package/dist/StatCard/index.js +3 -0
- package/dist/StatCard-KYPKZUWX.css +111 -0
- package/dist/StatGroup/StatGroup.d.ts +20 -0
- package/dist/StatGroup/index.d.ts +3 -0
- package/dist/StatGroup/index.js +2 -0
- package/dist/StatGroup-TGB6AEKM.css +80 -0
- package/dist/StatusDot/StatusDot.d.ts +25 -0
- package/dist/StatusDot/index.d.ts +3 -0
- package/dist/StatusDot/index.js +2 -0
- package/dist/StatusDot-HA2L2FSX.css +84 -0
- package/dist/Switch/Switch.d.ts +38 -0
- package/dist/Switch/index.d.ts +3 -0
- package/dist/Switch/index.js +2 -0
- package/dist/Switch-U4OWK4CL.css +169 -0
- package/dist/Table/Table.d.ts +51 -0
- package/dist/Table/index.d.ts +3 -0
- package/dist/Table/index.js +3 -0
- package/dist/Table-MDOLVUAW.css +159 -0
- package/dist/Tabs/Tabs.d.ts +97 -0
- package/dist/Tabs/index.d.ts +3 -0
- package/dist/Tabs/index.js +4 -0
- package/dist/Tabs/roving.d.ts +36 -0
- package/dist/Tabs-VLICJFVB.css +275 -0
- package/dist/Tag/Tag.d.ts +107 -0
- package/dist/Tag/index.d.ts +3 -0
- package/dist/Tag/index.js +3 -0
- package/dist/Tag-VNZEYLB6.css +406 -0
- package/dist/TagGroup/TagGroup.d.ts +41 -0
- package/dist/TagGroup/index.d.ts +3 -0
- package/dist/TagGroup/index.js +4 -0
- package/dist/TagGroup-APC2EFH4.css +75 -0
- package/dist/TagsInput/TagsInput.d.ts +112 -0
- package/dist/TagsInput/index.d.ts +3 -0
- package/dist/TagsInput/index.js +10 -0
- package/dist/TagsInput-W4P36PRJ.css +168 -0
- package/dist/Text/Text.d.ts +67 -0
- package/dist/Text/index.d.ts +3 -0
- package/dist/Text/index.js +2 -0
- package/dist/Text-XIPYYZX2.css +154 -0
- package/dist/ThemeSwitcher/ThemeSwitcher.d.ts +47 -0
- package/dist/ThemeSwitcher/index.d.ts +4 -0
- package/dist/ThemeSwitcher/index.js +6 -0
- package/dist/ThemeSwitcher/preferences.d.ts +51 -0
- package/dist/TimeWindowPicker/TimeWindowPicker.d.ts +231 -0
- package/dist/TimeWindowPicker/index.d.ts +3 -0
- package/dist/TimeWindowPicker/index.js +13 -0
- package/dist/TimeWindowPicker/mask.d.ts +82 -0
- package/dist/TimeWindowPicker-7I7KWCMU.css +403 -0
- package/dist/Timeline/Timeline.d.ts +51 -0
- package/dist/Timeline/index.d.ts +3 -0
- package/dist/Timeline/index.js +3 -0
- package/dist/Timeline-27SYKOFX.css +144 -0
- package/dist/Toaster/Toaster.d.ts +108 -0
- package/dist/Toaster/index.d.ts +3 -0
- package/dist/Toaster/index.js +5 -0
- package/dist/Toaster-NVDCEIP5.css +306 -0
- package/dist/Toolbar/Toolbar.d.ts +62 -0
- package/dist/Toolbar/index.d.ts +3 -0
- package/dist/Toolbar/index.js +4 -0
- package/dist/Toolbar-IP6LXN45.css +48 -0
- package/dist/Tooltip/Tooltip.d.ts +51 -0
- package/dist/Tooltip/index.d.ts +3 -0
- package/dist/Tooltip/index.js +4 -0
- package/dist/Tooltip-LKQF7CE4.css +71 -0
- package/dist/Tree/index.d.ts +8 -0
- package/dist/Tree/index.js +1 -0
- package/dist/Tree/layout.d.ts +160 -0
- package/dist/Tree/model.d.ts +110 -0
- package/dist/Tree/useMeasuredSizes.d.ts +61 -0
- package/dist/Tree/useTreeState.d.ts +89 -0
- package/dist/TreeCanvas/TreeCanvas.d.ts +384 -0
- package/dist/TreeCanvas/index.d.ts +3 -0
- package/dist/TreeCanvas/index.js +10 -0
- package/dist/TreeCanvas/motion.d.ts +59 -0
- package/dist/TreeCanvas-WBNQPHC7.css +1098 -0
- package/dist/TreeGrid/TreeGrid.d.ts +142 -0
- package/dist/TreeGrid/index.d.ts +3 -0
- package/dist/TreeGrid/index.js +8 -0
- package/dist/TreeGrid-NSW7VMOX.css +132 -0
- package/dist/VisuallyHidden/VisuallyHidden.d.ts +23 -0
- package/dist/VisuallyHidden/index.d.ts +3 -0
- package/dist/VisuallyHidden/index.js +2 -0
- package/dist/VisuallyHidden-L552H7OA.css +21 -0
- package/dist/chunk-22O7LAW2.js +41 -0
- package/dist/chunk-23DHIMJA.js +38 -0
- package/dist/chunk-2EOKFKHX.js +263 -0
- package/dist/chunk-2PRH365R.js +74 -0
- package/dist/chunk-2ZQMA2WB.js +57 -0
- package/dist/chunk-3CZ7XAVY.js +139 -0
- package/dist/chunk-3EYF6HKB.js +135 -0
- package/dist/chunk-3ZP55QZE.js +40 -0
- package/dist/chunk-53DVJCVW.js +14 -0
- package/dist/chunk-5C5YMZQU.js +51 -0
- package/dist/chunk-5EKIWVOR.js +132 -0
- package/dist/chunk-5IMACPJS.js +495 -0
- package/dist/chunk-5KPQ6D7N.js +54 -0
- package/dist/chunk-5SDBMKUO.js +297 -0
- package/dist/chunk-5WS6L6FA.js +114 -0
- package/dist/chunk-7EM5T4ME.js +39 -0
- package/dist/chunk-7FZ53WDJ.js +163 -0
- package/dist/chunk-7HPRF5XN.js +525 -0
- package/dist/chunk-7RPGY3JE.js +43 -0
- package/dist/chunk-A2UXBCLO.js +48 -0
- package/dist/chunk-ARMRX2YV.js +96 -0
- package/dist/chunk-AV2DXAEL.js +27 -0
- package/dist/chunk-BHHIIK3M.js +17 -0
- package/dist/chunk-BZFWDIV6.js +9 -0
- package/dist/chunk-BZYDZBAN.js +123 -0
- package/dist/chunk-CMEE37QJ.js +628 -0
- package/dist/chunk-D3OADIM6.js +112 -0
- package/dist/chunk-DD5BBGBE.js +162 -0
- package/dist/chunk-EHMQQHYR.js +1652 -0
- package/dist/chunk-EN6K2IFA.js +256 -0
- package/dist/chunk-EPOOQZYA.js +118 -0
- package/dist/chunk-ESCO4XYW.js +144 -0
- package/dist/chunk-EUCC37WY.js +14 -0
- package/dist/chunk-EV6IMYJ6.js +62 -0
- package/dist/chunk-F27EPQ7D.js +68 -0
- package/dist/chunk-F4PJZ4ED.js +245 -0
- package/dist/chunk-F6OE5FH3.js +49 -0
- package/dist/chunk-FBZAKNSX.js +263 -0
- package/dist/chunk-FEFTGVMF.js +46 -0
- package/dist/chunk-G2QFRTJ2.js +823 -0
- package/dist/chunk-GHYY2WPF.js +907 -0
- package/dist/chunk-GTOUGQQK.js +147 -0
- package/dist/chunk-GUIF6Q6N.js +143 -0
- package/dist/chunk-GXQ3B46I.js +216 -0
- package/dist/chunk-H4FBTAYS.js +130 -0
- package/dist/chunk-HOXGBLEY.js +37 -0
- package/dist/chunk-HQNHV7D6.js +54 -0
- package/dist/chunk-HTDFCRJZ.js +92 -0
- package/dist/chunk-HZ5XZNPS.js +98 -0
- package/dist/chunk-IAJLHVUA.js +28 -0
- package/dist/chunk-IJ7QXNIJ.js +1 -0
- package/dist/chunk-ITHXJHBB.js +280 -0
- package/dist/chunk-JCSA3XVH.js +32 -0
- package/dist/chunk-KLJCCMF3.js +97 -0
- package/dist/chunk-LGCPQIOZ.js +49 -0
- package/dist/chunk-LWKJQTOM.js +77 -0
- package/dist/chunk-MNAXYY3R.js +215 -0
- package/dist/chunk-NN62JQLR.js +29 -0
- package/dist/chunk-NPZY6YYL.js +251 -0
- package/dist/chunk-NTRZGNEX.js +529 -0
- package/dist/chunk-O6232G37.js +273 -0
- package/dist/chunk-O67VF5MS.js +58 -0
- package/dist/chunk-ODEQTPFM.js +6 -0
- package/dist/chunk-PNFASD6F.js +98 -0
- package/dist/chunk-PQADV6P6.js +19 -0
- package/dist/chunk-PZSWF74H.js +15 -0
- package/dist/chunk-Q4ZPPART.js +26 -0
- package/dist/chunk-QNCVHRZL.js +17 -0
- package/dist/chunk-QVE4GJAT.js +15 -0
- package/dist/chunk-QYOFACSP.js +36 -0
- package/dist/chunk-RA2ULG6H.js +29 -0
- package/dist/chunk-RDGD7Z7I.js +350 -0
- package/dist/chunk-RK4XPHVG.js +16 -0
- package/dist/chunk-RSAQOKH3.js +38 -0
- package/dist/chunk-S2XHHEW4.js +84 -0
- package/dist/chunk-S4GZWSKR.js +137 -0
- package/dist/chunk-SFZOKW2G.js +52 -0
- package/dist/chunk-T7FKOJKW.js +221 -0
- package/dist/chunk-UG46QBLT.js +325 -0
- package/dist/chunk-UOGSZKLT.js +134 -0
- package/dist/chunk-V2XMNLMS.js +52 -0
- package/dist/chunk-V663QU4R.js +51 -0
- package/dist/chunk-W4ENKCXJ.js +40 -0
- package/dist/chunk-W5J7R5EB.js +107 -0
- package/dist/chunk-WNI2WSJF.js +27 -0
- package/dist/chunk-XDTYBF2F.js +36 -0
- package/dist/chunk-XN4JBAN3.js +32 -0
- package/dist/chunk-XV6WRMBC.js +211 -0
- package/dist/chunk-YLYOWZ4V.js +33 -0
- package/dist/chunk-YMWONFSI.js +170 -0
- package/dist/chunk-ZCR6YGQ4.js +1 -0
- package/dist/generated/index.d.ts +83 -0
- package/dist/generated/index.js +91 -0
- package/dist/index.d.ts +1 -1217
- package/dist/index.js +91 -4518
- package/dist/styles.css +14841 -4274
- package/dist/utils/cx.d.ts +10 -0
- package/dist/utils/headingLevel.d.ts +16 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/tone.d.ts +25 -0
- package/dist/utils/useClipboard.d.ts +30 -0
- package/package.json +18 -10
- package/scripts/bundle-css.mjs +25 -0
- package/scripts/check-css-literals.mjs +166 -0
- package/scripts/check-css-variables.mjs +184 -0
- package/scripts/check-css.mjs +27 -0
- package/scripts/css-source.mjs +67 -0
- package/scripts/write-barrel.mjs +60 -0
- package/dist/Accordion-NIMJQIOI.css +0 -88
- package/dist/AppShell-ZW3NSFBP.css +0 -51
- package/dist/Avatar-V6NG6Q45.css +0 -67
- package/dist/Button-XGCTXXYP.css +0 -174
- package/dist/Callout-LEGDIMAM.css +0 -52
- package/dist/Card-BOZGBML7.css +0 -86
- package/dist/Checkbox-OCUICIIZ.css +0 -58
- package/dist/CodeBlock-IEMBNIQC.css +0 -90
- package/dist/Container-LTKBA2FW.css +0 -21
- package/dist/Copyable-IB57OTHZ.css +0 -123
- package/dist/DataTable-3GALZUW2.css +0 -1593
- package/dist/DateTimePicker-NMSSGVPK.css +0 -312
- package/dist/Eyebrow-AVBORAS2.css +0 -30
- package/dist/IconButton-GB4PJDG2.css +0 -82
- package/dist/ImageUpload-3HQDF2KC.css +0 -158
- package/dist/Input-ZHUTN7CU.css +0 -210
- package/dist/Kbd-Q77CDZY7.css +0 -23
- package/dist/Modal-FJVG66S4.css +0 -138
- package/dist/Popover-FUFULUE2.css +0 -123
- package/dist/PricingCard-NKYV3JHA.css +0 -238
- package/dist/Section-665ZIPG6.css +0 -20
- package/dist/Select-GPRF7PRB.css +0 -294
- package/dist/Skeleton-3WEFLRDN.css +0 -378
- package/dist/StatCard-RTJIVTRB.css +0 -50
- package/dist/Table-AR3TRY2E.css +0 -89
- package/dist/Tabs-XZ4JIH3E.css +0 -153
- package/dist/Tag-R5QDJLYJ.css +0 -163
- package/dist/TimeWindowPicker-L3G5Q7UT.css +0 -629
- 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,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;
|