@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,615 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* DataTable, the sortable table the whole product reads its records from, in
|
|
4
|
+
* two visual variants (default and compact) over one data, sort, pagination
|
|
5
|
+
* and persistence model.
|
|
6
|
+
*
|
|
7
|
+
* THE FOUR RULES THAT DECIDE ITS SHAPE, each of them a defect that reached a
|
|
8
|
+
* reader before it was one:
|
|
9
|
+
*
|
|
10
|
+
* 1. THE SORT CONTROL IS A BUTTON INSIDE THE HEADER CELL, and `aria-sort`
|
|
11
|
+
* sits on the cell. A `th` with a click handler is neither focusable nor
|
|
12
|
+
* announced as a control, so a keyboard reader could see which way a column
|
|
13
|
+
* was sorted and could not change it.
|
|
14
|
+
* 2. THE COMPARATOR IS THREE-WAY, ABSENT LAST AND INDEX-STABLE. An absent
|
|
15
|
+
* value is not a small one: a seat with no meter has not spent nothing, it
|
|
16
|
+
* has not been measured, so it sorts below every measurement in BOTH
|
|
17
|
+
* directions. A comparator that returns -1 for equal operands (the
|
|
18
|
+
* `a < b ? 1 : -1` idiom) makes equal rows trade places on every render
|
|
19
|
+
* under V8's sort, which is a list that shuffles itself while somebody
|
|
20
|
+
* reads it.
|
|
21
|
+
* 3. A ROW THAT NAVIGATES IS A LINK, and a press that started on a control
|
|
22
|
+
* inside the row is that control's press and nobody else's. Both halves
|
|
23
|
+
* were wrong: a clickable `tr` could not be reached by keyboard, and a
|
|
24
|
+
* click on a chip inside it navigated twice.
|
|
25
|
+
* 4. NOTHING IT PERSISTS IS TRUSTED ON THE WAY BACK IN. A corrupt entry under
|
|
26
|
+
* `storageKey` used to throw from a state initialiser, which is a blank
|
|
27
|
+
* screen rather than a table, and `storageKey` stays optional because a
|
|
28
|
+
* surface whose state belongs in the URL should read no storage at all.
|
|
29
|
+
*/
|
|
30
|
+
/**
|
|
31
|
+
* A row, as the table itself sees one: an opaque record it reads named
|
|
32
|
+
* columns out of. A caller names its own row type through the generic, and
|
|
33
|
+
* every callback on the column and on the table is typed with it.
|
|
34
|
+
*/
|
|
35
|
+
export type DataTableRow = Record<string, unknown>;
|
|
36
|
+
export type DataTableSortDirection = 'asc' | 'desc';
|
|
37
|
+
/**
|
|
38
|
+
* What a second and third press on the same header do.
|
|
39
|
+
*
|
|
40
|
+
* `asc-desc-none` is the default: the third press clears the sort and hands
|
|
41
|
+
* the rows back in the order the server sent them, which on a live table is
|
|
42
|
+
* the only ordering that means anything. `asc-desc` is for a table that has
|
|
43
|
+
* no meaningful unsorted order, where clearing the sort would look like a
|
|
44
|
+
* glitch.
|
|
45
|
+
*/
|
|
46
|
+
export type DataTableSortCycle = 'asc-desc-none' | 'asc-desc';
|
|
47
|
+
/**
|
|
48
|
+
* How a row is marked as a state rather than as an identity.
|
|
49
|
+
*
|
|
50
|
+
* Three, and they are the rail colours a state may take: `info` for something
|
|
51
|
+
* that is happening, `warning` for something a person has to look at, and
|
|
52
|
+
* `danger` for something that failed. There is no brand tone, because the
|
|
53
|
+
* accent means "where the reader is" and a selected row already spends it.
|
|
54
|
+
*/
|
|
55
|
+
export type DataTableRowTone = 'info' | 'warning' | 'danger';
|
|
56
|
+
/**
|
|
57
|
+
* The column order a table draws, given the order a reader arranged and the
|
|
58
|
+
* columns the caller declares now.
|
|
59
|
+
*
|
|
60
|
+
* Kept order first, so nothing a reader did is lost; anything newly declared
|
|
61
|
+
* goes in BESIDE THE COLUMN IT WAS DECLARED AFTER, wherever the reader has
|
|
62
|
+
* since put that one, so a column that arrives in the middle of the set does
|
|
63
|
+
* not appear at the far end of the row. Counting the earlier columns instead
|
|
64
|
+
* of finding the nearest one puts it at the right DEPTH of a row the reader
|
|
65
|
+
* has rearranged rather than in the right PLACE: with the last two columns
|
|
66
|
+
* swapped, a column declared third landed second.
|
|
67
|
+
*/
|
|
68
|
+
export declare function reconcileOrder(current: readonly string[], declared: readonly string[]): string[];
|
|
69
|
+
export interface DataTableColumn<TRow = DataTableRow> {
|
|
70
|
+
label: ReactNode;
|
|
71
|
+
render?: (row: TRow, value: unknown) => ReactNode;
|
|
72
|
+
sortable?: boolean;
|
|
73
|
+
defaultVisible?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Whether a reader may hide this column. Defaults to true.
|
|
76
|
+
*
|
|
77
|
+
* FALSE IS FOR THE COLUMN THAT SAYS WHICH ROW THIS IS: the node, the seat,
|
|
78
|
+
* the name. Hidden, every remaining cell is a fact about something the
|
|
79
|
+
* reader can no longer identify, which is a table of numbers belonging to
|
|
80
|
+
* nobody. The tick is drawn, and drawn fixed with a reason beside it, rather
|
|
81
|
+
* than left out: a column missing from the list reads as a column that is
|
|
82
|
+
* not there at all.
|
|
83
|
+
*/
|
|
84
|
+
hideable?: boolean;
|
|
85
|
+
defaultWidth?: number;
|
|
86
|
+
/** Override the value used when sorting this column (defaults to row[key]). */
|
|
87
|
+
sortValue?: (row: TRow) => string | number | Date | null | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Which way the FIRST press on this header sorts. A name reads ascending
|
|
90
|
+
* first and a cost reads descending first, because the interesting end of
|
|
91
|
+
* each is the one the reader came for.
|
|
92
|
+
*/
|
|
93
|
+
firstDirection?: DataTableSortDirection;
|
|
94
|
+
/**
|
|
95
|
+
* Cell alignment. A right-aligned column is a column of numbers, so it also
|
|
96
|
+
* takes tabular figures and stops wrapping: a digit that changes width is a
|
|
97
|
+
* column that jiggles on every push.
|
|
98
|
+
*/
|
|
99
|
+
align?: 'left' | 'right' | 'center';
|
|
100
|
+
/** Shrink to the content and never wrap. For a status chip or a short id. */
|
|
101
|
+
shrink?: boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Monospace cell content at a smaller font, suitable for opaque ids,
|
|
104
|
+
* timestamps, and similar fixed-pitch values. Compact variant only.
|
|
105
|
+
*/
|
|
106
|
+
mono?: boolean;
|
|
107
|
+
/**
|
|
108
|
+
* When true, the cell value is wrapped in a hover-revealed copy
|
|
109
|
+
* affordance. The clipboard value defaults to String(row[key]) but
|
|
110
|
+
* can be overridden via copyValue. Compact variant only.
|
|
111
|
+
*/
|
|
112
|
+
copyable?: boolean;
|
|
113
|
+
copyValue?: (row: TRow) => unknown;
|
|
114
|
+
/**
|
|
115
|
+
* Fixed pixel-or-string width applied directly to the <th>/<td>. A
|
|
116
|
+
* column with `width` is locked at exactly that width; `defaultWidth`
|
|
117
|
+
* is a starting width that resizing and the fit-to-container pass can
|
|
118
|
+
* change.
|
|
119
|
+
*/
|
|
120
|
+
width?: string | number;
|
|
121
|
+
/**
|
|
122
|
+
* Pin the column to the right edge of the scroll container so it
|
|
123
|
+
* stays visible regardless of horizontal scroll or how the operator
|
|
124
|
+
* resizes the surrounding data columns. Typical use is a trailing
|
|
125
|
+
* row-action link or affordance that must always be reachable
|
|
126
|
+
* without scrolling. Compact variant only; the default variant
|
|
127
|
+
* already uses fixed widths that do not overflow.
|
|
128
|
+
*/
|
|
129
|
+
sticky?: 'right';
|
|
130
|
+
}
|
|
131
|
+
export interface DataTableSortState {
|
|
132
|
+
key: string;
|
|
133
|
+
direction: DataTableSortDirection;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Single action shown in the row-actions kebab menu. `rowActions` returns
|
|
137
|
+
* a list of these per row; falsy entries are dropped, so a caller can
|
|
138
|
+
* include an action conditionally with `condition && { ... }`.
|
|
139
|
+
*/
|
|
140
|
+
export interface DataTableRowAction {
|
|
141
|
+
label: string;
|
|
142
|
+
onClick?: () => void;
|
|
143
|
+
/** A glyph component, drawn before the label. */
|
|
144
|
+
icon?: ReactNode;
|
|
145
|
+
/** A destructive action, drawn in the critical ink. */
|
|
146
|
+
danger?: boolean;
|
|
147
|
+
disabled?: boolean;
|
|
148
|
+
visible?: boolean;
|
|
149
|
+
description?: string;
|
|
150
|
+
divider?: 'before' | 'after';
|
|
151
|
+
}
|
|
152
|
+
export type DataTableVariant = 'default' | 'compact';
|
|
153
|
+
/**
|
|
154
|
+
* The value the All chip stands for.
|
|
155
|
+
*
|
|
156
|
+
* A SENTINEL RATHER THAN A COUNT. It used to be written as `data.length`,
|
|
157
|
+
* which is not "all" but "as many as there were at the instant somebody
|
|
158
|
+
* pressed it": a reader who chose All on twelve rows was on twelve per page,
|
|
159
|
+
* and the table quietly began paging the moment a thirteenth arrived. On an
|
|
160
|
+
* empty table the same press wrote 0, and a page of zero rows hid every row
|
|
161
|
+
* that came afterwards, for the life of the screen and, with a `storageKey`,
|
|
162
|
+
* for every session after it. A word cannot go stale, so the word is what is
|
|
163
|
+
* stored, what a controlled caller is handed, and what the chip compares
|
|
164
|
+
* itself against.
|
|
165
|
+
*/
|
|
166
|
+
export declare const ALL_ITEMS = "all";
|
|
167
|
+
/** How many rows a page holds: a count, or every row there is. */
|
|
168
|
+
export type DataTableItemsPerPage = number | typeof ALL_ITEMS;
|
|
169
|
+
/**
|
|
170
|
+
* Row density for the compact variant. The two presets cover the two
|
|
171
|
+
* places a compact table usually sits:
|
|
172
|
+
*
|
|
173
|
+
* - 'compact' the 2xs header over the compact cell step, tight
|
|
174
|
+
* padding. For full-width list pages where density
|
|
175
|
+
* matters more than air.
|
|
176
|
+
* - 'comfortable' the small cell step with more padding and extra outer
|
|
177
|
+
* space on the first and last cells, so the rows align
|
|
178
|
+
* with the inner padding of the card they sit in.
|
|
179
|
+
*
|
|
180
|
+
* Has no effect on variant="default" since the default variant uses
|
|
181
|
+
* its own resizable column widths.
|
|
182
|
+
*/
|
|
183
|
+
export type DataTableDensity = 'compact' | 'comfortable';
|
|
184
|
+
/**
|
|
185
|
+
* Every string the table renders on its own behalf, in one prop.
|
|
186
|
+
*
|
|
187
|
+
* ONE PROP RATHER THAN THIRTY. A table draws a lot of chrome it invents the
|
|
188
|
+
* words for, and each of those words is one a product may have to say
|
|
189
|
+
* differently or in another language. They are gathered here so the signature
|
|
190
|
+
* stays readable and so a caller can override one without restating the rest;
|
|
191
|
+
* `DATA_TABLE_LABELS` is the English default, exported so an override can
|
|
192
|
+
* start from it.
|
|
193
|
+
*/
|
|
194
|
+
export interface DataTableLabels {
|
|
195
|
+
settings: string;
|
|
196
|
+
resetColumns: string;
|
|
197
|
+
resetConfirmed: string;
|
|
198
|
+
cancel: string;
|
|
199
|
+
apply: string;
|
|
200
|
+
settingsTitle: string;
|
|
201
|
+
itemsPerPage: string;
|
|
202
|
+
allItems: string;
|
|
203
|
+
/**
|
|
204
|
+
* HOW MANY ROWS All IS, read after the word itself, so the chip's whole name
|
|
205
|
+
* is "All 1,284 rows". The word alone is a promise with no size on it, and
|
|
206
|
+
* the size is what a reader is deciding: every row of a list of forty is a
|
|
207
|
+
* page, and every row of a list of forty thousand is a layout the browser
|
|
208
|
+
* will spend seconds on.
|
|
209
|
+
*/
|
|
210
|
+
allItemsCount: (rows: number) => string;
|
|
211
|
+
wrapLines: string;
|
|
212
|
+
wrapLinesHint: string;
|
|
213
|
+
columnsSection: string;
|
|
214
|
+
columnsHint: string;
|
|
215
|
+
moveUp: (column: string) => string;
|
|
216
|
+
moveDown: (column: string) => string;
|
|
217
|
+
/** Why Move up does nothing, for the column already at the top. */
|
|
218
|
+
atTop: (column: string) => string;
|
|
219
|
+
atBottom: (column: string) => string;
|
|
220
|
+
/** The drag handle, which is also the arrow-key control beside it. */
|
|
221
|
+
reorder: (column: string) => string;
|
|
222
|
+
reorderHint: string;
|
|
223
|
+
/** Where a column landed, said after a move nobody can see happen. */
|
|
224
|
+
columnMoved: (column: string, position: number, of: number) => string;
|
|
225
|
+
/** Why a column's tick is fixed: the caller's rule, and the table's own. */
|
|
226
|
+
columnAlwaysShown: string;
|
|
227
|
+
columnLastShown: string;
|
|
228
|
+
pagination: string;
|
|
229
|
+
firstPage: string;
|
|
230
|
+
previousPage: string;
|
|
231
|
+
nextPage: string;
|
|
232
|
+
lastPage: string;
|
|
233
|
+
page: (page: number, of: number) => string;
|
|
234
|
+
/**
|
|
235
|
+
* WHICH ROWS THIS PAGE IS, said after which page it is. "Page 2 of 7" tells
|
|
236
|
+
* a reader where they are in the chrome; it does not tell them what they
|
|
237
|
+
* are looking at, and on a table whose page size the same panel sets, the
|
|
238
|
+
* range is the answer to both "how far in am I" and "how much is there".
|
|
239
|
+
*/
|
|
240
|
+
pageRange: (from: number, to: number, total: number) => string;
|
|
241
|
+
expandRow: string;
|
|
242
|
+
collapseRow: string;
|
|
243
|
+
expandAll: string;
|
|
244
|
+
collapseAll: string;
|
|
245
|
+
resize: (column: string) => string;
|
|
246
|
+
/** The width a resize handle is at, for a reader who cannot see the edge. */
|
|
247
|
+
resizeWidth: (pixels: number) => string;
|
|
248
|
+
copyCell: (column: string) => string;
|
|
249
|
+
rowActions: string;
|
|
250
|
+
/** The action column's own header, for a reader moving across a row. */
|
|
251
|
+
actions: string;
|
|
252
|
+
/** Said of a row the caller marks archived, in that row's own title. */
|
|
253
|
+
archivedRow: (label: string) => string;
|
|
254
|
+
/** Read in place of the dash a cell with no value is drawn as. */
|
|
255
|
+
absent: string;
|
|
256
|
+
/** Said while the rows are being fetched and none are on screen yet. */
|
|
257
|
+
loading: string;
|
|
258
|
+
tone: Record<DataTableRowTone, string>;
|
|
259
|
+
}
|
|
260
|
+
export declare const DATA_TABLE_LABELS: DataTableLabels;
|
|
261
|
+
export interface DataTableProps<TRow = DataTableRow> {
|
|
262
|
+
data?: TRow[];
|
|
263
|
+
columns?: Record<string, DataTableColumn<TRow>>;
|
|
264
|
+
/**
|
|
265
|
+
* Where the operator's own layout choices are kept. Leave it out and the
|
|
266
|
+
* table reads no storage at all, which is what a surface whose state
|
|
267
|
+
* belongs in the URL wants.
|
|
268
|
+
*
|
|
269
|
+
* WHAT IS KEPT HERE, AND WHAT IS NOT. Two of this table's choices are facts
|
|
270
|
+
* about the browser somebody is reading in: whether cells wrap at this
|
|
271
|
+
* window width, and how wide each column was dragged. Those are stored, and
|
|
272
|
+
* only here. The other five, which page, how many rows a page holds, which
|
|
273
|
+
* columns are shown, in what order, and the sort, are facts about WHAT IS ON
|
|
274
|
+
* SCREEN: they are what a reader would send somebody, so each one has a
|
|
275
|
+
* controlled pair a screen can keep in its own history and hand back. A
|
|
276
|
+
* controlled choice is never written to storage, even with a key set, and
|
|
277
|
+
* never read from it either, because the caller holding it has somewhere
|
|
278
|
+
* better and the two would disagree on the first reload.
|
|
279
|
+
*/
|
|
280
|
+
storageKey?: string;
|
|
281
|
+
defaultColumnOrder?: string[] | null;
|
|
282
|
+
/**
|
|
283
|
+
* The order the columns are drawn in, as a controlled pair with
|
|
284
|
+
* `onColumnOrderChange`. Names every declared column; a column the caller
|
|
285
|
+
* leaves out is put back beside the one it was declared after.
|
|
286
|
+
*
|
|
287
|
+
* Without the pair, the order a reader arranges in the settings frame lives
|
|
288
|
+
* in `localStorage` under `storageKey`, so it cannot be shared and, on a
|
|
289
|
+
* surface with no key, cannot survive a reload at all.
|
|
290
|
+
*/
|
|
291
|
+
columnOrder?: string[];
|
|
292
|
+
onColumnOrderChange?: (next: string[]) => void;
|
|
293
|
+
defaultItemsPerPage?: DataTableItemsPerPage;
|
|
294
|
+
itemsPerPageOptions?: number[];
|
|
295
|
+
/**
|
|
296
|
+
* How many rows a page holds, as a controlled pair with
|
|
297
|
+
* `onItemsPerPageChange`. `ALL_ITEMS` is every row.
|
|
298
|
+
*
|
|
299
|
+
* Passing `onItemsPerPageChange` is also what offers the size to a table
|
|
300
|
+
* that does NOT slice its own rows: the number then means something (the
|
|
301
|
+
* caller reads it), so the frame draws the row of chips.
|
|
302
|
+
*/
|
|
303
|
+
itemsPerPage?: DataTableItemsPerPage;
|
|
304
|
+
onItemsPerPageChange?: (next: DataTableItemsPerPage) => void;
|
|
305
|
+
/**
|
|
306
|
+
* Which page the table is on, 1-indexed, as a controlled pair with
|
|
307
|
+
* `onPageChange`. It is where the reader is, so it belongs in the screen's
|
|
308
|
+
* own history: a link to page four of an event log is a link somebody sends.
|
|
309
|
+
*/
|
|
310
|
+
page?: number;
|
|
311
|
+
onPageChange?: (next: number) => void;
|
|
312
|
+
/**
|
|
313
|
+
* How many pages there are, for a caller that slices or fetches its own.
|
|
314
|
+
*
|
|
315
|
+
* Required to draw the chevrons for a table with `paginated={false}`, and
|
|
316
|
+
* not defaulted: a bound nobody supplied would be a Next button disabled on
|
|
317
|
+
* page one of a server's ten. With `paginated` on, the table counts its own
|
|
318
|
+
* rows and this is ignored.
|
|
319
|
+
*/
|
|
320
|
+
pageCount?: number;
|
|
321
|
+
/**
|
|
322
|
+
* Minimum column width, in pixels, that the resize handle will
|
|
323
|
+
* honor. Operators can drag a column down to this width but no
|
|
324
|
+
* further; trying to shrink past it pins the column at the floor.
|
|
325
|
+
* Default 80px, which keeps short labels and the sort indicator
|
|
326
|
+
* legible without being chatty.
|
|
327
|
+
*/
|
|
328
|
+
minColumnWidth?: number;
|
|
329
|
+
/**
|
|
330
|
+
* Enable the per-column drag-to-resize handle on every header.
|
|
331
|
+
* Defaults to true. Set to false on tables whose width should be
|
|
332
|
+
* controlled entirely by the fit-to-container pass (read-mostly
|
|
333
|
+
* lists, single-purpose tables that should not invite the
|
|
334
|
+
* operator to reflow the row). When off, no resize handles
|
|
335
|
+
* render anywhere on the table.
|
|
336
|
+
*/
|
|
337
|
+
resizable?: boolean;
|
|
338
|
+
onRowAction?: ((row: TRow) => void) | null;
|
|
339
|
+
actionLabel?: string;
|
|
340
|
+
/** The action column's glyph. A component, not a name. */
|
|
341
|
+
actionIcon?: ReactNode;
|
|
342
|
+
getRowKey?: (row: TRow) => string | number;
|
|
343
|
+
/** Pulls the row key from a fixed property (alternative to getRowKey). */
|
|
344
|
+
rowKey?: string;
|
|
345
|
+
/**
|
|
346
|
+
* What an empty table says. A node, so an EmptyState with its own title,
|
|
347
|
+
* cause and action goes here: "nothing happened", "nothing could be read"
|
|
348
|
+
* and "not configured" are three different facts and a reader has to be
|
|
349
|
+
* told which one this is.
|
|
350
|
+
*/
|
|
351
|
+
emptyMessage?: ReactNode;
|
|
352
|
+
/**
|
|
353
|
+
* What sits after the last row when there are no more to fetch. Left out,
|
|
354
|
+
* the end of the rows is silent, which is right for a table that is simply
|
|
355
|
+
* short and wrong for a feed somebody has paged to the bottom of.
|
|
356
|
+
*/
|
|
357
|
+
endMessage?: ReactNode;
|
|
358
|
+
showActions?: boolean;
|
|
359
|
+
className?: string;
|
|
360
|
+
/**
|
|
361
|
+
* Visual treatment.
|
|
362
|
+
* - 'default': roomier cells with the settings cog in the Actions
|
|
363
|
+
* column header; suited to directory-style tables an operator
|
|
364
|
+
* reshapes and revisits.
|
|
365
|
+
* - 'compact': lighter chrome, tight padding, uppercase headers,
|
|
366
|
+
* full-row loading and error states, and the settings cog beside the
|
|
367
|
+
* pager rather than in the header row. That pair is drawn in the
|
|
368
|
+
* table's own bar, in its own header where it has one, or on the header
|
|
369
|
+
* of the card the table fills. Designed for dense list pages.
|
|
370
|
+
* Both variants honour `resizable` and open the same settings frame.
|
|
371
|
+
*/
|
|
372
|
+
variant?: DataTableVariant;
|
|
373
|
+
/**
|
|
374
|
+
* Row density for the compact variant. Defaults to 'compact'.
|
|
375
|
+
* See the DataTableDensity docs for what each preset paints.
|
|
376
|
+
*/
|
|
377
|
+
density?: DataTableDensity;
|
|
378
|
+
/**
|
|
379
|
+
* How tall the rows may grow before they scroll, which is ALSO what pins the
|
|
380
|
+
* column names and paints the band they need to be read over the rows
|
|
381
|
+
* passing behind them. A number is pixels; a string is any CSS length.
|
|
382
|
+
*
|
|
383
|
+
* ONE PROP, because a pinned header and a bounded body are one thing. The
|
|
384
|
+
* rows already sit in a scroller of their own (the table has to be able to
|
|
385
|
+
* overflow sideways, and a box that scrolls in one axis scrolls in both), so
|
|
386
|
+
* a `position: sticky` header pins against THAT box and against nothing
|
|
387
|
+
* else. Left unbounded it is as tall as its rows, never scrolls, and the
|
|
388
|
+
* pin has nothing to happen against: a table told to pin its header and not
|
|
389
|
+
* told how tall to be simply does not pin it, which is a boolean whose true
|
|
390
|
+
* case does nothing. Naming the height is the whole of what a caller has to
|
|
391
|
+
* decide, and it cannot be said without also meaning the pin.
|
|
392
|
+
*
|
|
393
|
+
* Unset, the rows are as tall as they are and the header row is an ordinary
|
|
394
|
+
* row of names on whatever the table stands on, which is what a table the
|
|
395
|
+
* PAGE scrolls wants.
|
|
396
|
+
*/
|
|
397
|
+
maxBodyHeight?: number | string;
|
|
398
|
+
/**
|
|
399
|
+
* Controlled sort state. When provided, the table delegates sort to
|
|
400
|
+
* the caller (typical pairing: an external sort menu shares state
|
|
401
|
+
* with the column headers). When omitted, sort is internal.
|
|
402
|
+
*/
|
|
403
|
+
sort?: DataTableSortState | null;
|
|
404
|
+
onSortChange?: (next: DataTableSortState | null) => void;
|
|
405
|
+
/**
|
|
406
|
+
* Which column the table opens sorted on, and which order Reset puts back.
|
|
407
|
+
*
|
|
408
|
+
* It seeds the sort only while the sort is the table's own, but it is what
|
|
409
|
+
* BOTH resets mean by "default" either way: a caller holding the sort still
|
|
410
|
+
* has to say what the default IS, or Reset to Default can only offer to
|
|
411
|
+
* order the rows by nothing.
|
|
412
|
+
*/
|
|
413
|
+
defaultSort?: DataTableSortState | null;
|
|
414
|
+
/** What a second and third press on the same header do. */
|
|
415
|
+
sortCycle?: DataTableSortCycle;
|
|
416
|
+
/**
|
|
417
|
+
* Holds the order a sort produced until a header is pressed again.
|
|
418
|
+
*
|
|
419
|
+
* For a LIVE table. Without it, a table sorted by a number that a push
|
|
420
|
+
* updates re-ranks itself under the reader's cursor several times a second,
|
|
421
|
+
* so the row somebody is reading is not the row they click. With it, the
|
|
422
|
+
* order is taken once, when the sort is chosen; rows that arrive afterwards
|
|
423
|
+
* join the end until the next press re-ranks everything.
|
|
424
|
+
*/
|
|
425
|
+
stableOrder?: boolean;
|
|
426
|
+
/**
|
|
427
|
+
* Multi-action menu per row. When supplied, an actions column is
|
|
428
|
+
* appended on the right that renders a kebab menu. Takes precedence
|
|
429
|
+
* over onRowAction (the single-button affordance).
|
|
430
|
+
*/
|
|
431
|
+
rowActions?: (row: TRow) => Array<DataTableRowAction | null | undefined | false>;
|
|
432
|
+
/** Dim rows the predicate marks as archived, with a left edge accent. */
|
|
433
|
+
archivedPredicate?: (row: TRow) => boolean;
|
|
434
|
+
archivedLabel?: string;
|
|
435
|
+
/**
|
|
436
|
+
* Skeleton loading state. While true and no rows are present, the
|
|
437
|
+
* body renders shimmer bars inside the real table structure (one
|
|
438
|
+
* bar per visible column) so column alignment, paddings, and row
|
|
439
|
+
* heights match the data that replaces them, no layout shift when
|
|
440
|
+
* the fetch lands. Tables that already have rows keep showing them
|
|
441
|
+
* during a refresh.
|
|
442
|
+
*/
|
|
443
|
+
loading?: boolean;
|
|
444
|
+
/** Number of shimmer rows painted while loading. Default 5. */
|
|
445
|
+
skeletonRows?: number;
|
|
446
|
+
/** Renders a single full-row error message when truthy. Wins over empty. */
|
|
447
|
+
error?: ReactNode;
|
|
448
|
+
/**
|
|
449
|
+
* Whether the TABLE slices the rows into pages. When false the caller
|
|
450
|
+
* slices them, and says how many there are with `pageCount` if it wants the
|
|
451
|
+
* chevrons drawn.
|
|
452
|
+
*/
|
|
453
|
+
paginated?: boolean;
|
|
454
|
+
/** When false, the settings cog and Actions column header are suppressed. */
|
|
455
|
+
showSettings?: boolean;
|
|
456
|
+
/**
|
|
457
|
+
* Fires when a row's surface is clicked. Used by click-to-detail tables
|
|
458
|
+
* (an order row opening its detail page, a log entry opening a drawer).
|
|
459
|
+
* The row becomes focusable and takes Enter and Space, and a press that
|
|
460
|
+
* began on a control inside the row belongs to that control alone.
|
|
461
|
+
*/
|
|
462
|
+
onRowClick?: (row: TRow) => void;
|
|
463
|
+
/**
|
|
464
|
+
* Where a row leads, for a row that navigates.
|
|
465
|
+
*
|
|
466
|
+
* A REAL LINK, not a click handler: the first cell carries an anchor whose
|
|
467
|
+
* hit area covers the row, so the row can be opened in a new tab, its
|
|
468
|
+
* address copied, and read by a screen reader as the link it is. Prefer it
|
|
469
|
+
* to `onRowClick` wherever the destination is a URL.
|
|
470
|
+
*/
|
|
471
|
+
getRowHref?: (row: TRow) => string | null | undefined;
|
|
472
|
+
/**
|
|
473
|
+
* Marks a row as a state. The row takes a rail in the tone's colour and a
|
|
474
|
+
* word for a reader who cannot see the rail, because colour is never the
|
|
475
|
+
* only carrier of a state.
|
|
476
|
+
*/
|
|
477
|
+
rowTone?: (row: TRow) => DataTableRowTone | null | undefined;
|
|
478
|
+
/** Whether a row is the selected one: `aria-selected` and the selection ring. */
|
|
479
|
+
isSelected?: (row: TRow) => boolean;
|
|
480
|
+
/**
|
|
481
|
+
* Optional secondary row rendered immediately below each main row,
|
|
482
|
+
* spanning the full column width. Returning null skips it for that
|
|
483
|
+
* row. Used by tree-like tables (for example API keys grouped under
|
|
484
|
+
* their owner) where each entity owns an attached detail strip that
|
|
485
|
+
* visually belongs to the main row but does not share its column
|
|
486
|
+
* layout.
|
|
487
|
+
*/
|
|
488
|
+
renderAccessoryRow?: (row: TRow) => ReactNode | null | undefined;
|
|
489
|
+
/**
|
|
490
|
+
* Slot rendered above the table header (and inside the same root
|
|
491
|
+
* wrapper) for filter bars, search inputs, or batch-action toolbars.
|
|
492
|
+
* uilet is intentionally agnostic about what goes here, the caller
|
|
493
|
+
* composes whichever primitives match its domain (Select, Input,
|
|
494
|
+
* datetime-local, etc.). The slot is rendered exactly once per
|
|
495
|
+
* mount, regardless of pagination state.
|
|
496
|
+
*/
|
|
497
|
+
renderToolbar?: ReactNode;
|
|
498
|
+
/**
|
|
499
|
+
* A band BETWEEN the toolbar and the rows, inside the same panel, for what
|
|
500
|
+
* the toolbar has switched on: the chips a list screen draws for its active
|
|
501
|
+
* filters, a selection count, a batch action bar.
|
|
502
|
+
*
|
|
503
|
+
* It is a slot of its own rather than more of `renderToolbar` because the
|
|
504
|
+
* two are different rows: the toolbar is a row of controls the table's own
|
|
505
|
+
* pagination and settings share, and this is the state those controls
|
|
506
|
+
* produced. Stacked into one slot, the controls at the table's right edge
|
|
507
|
+
* would centre themselves against a two-line block. Left out, no band is
|
|
508
|
+
* drawn at all, so a screen with no chips on has no empty strip.
|
|
509
|
+
*/
|
|
510
|
+
renderFilterBar?: ReactNode;
|
|
511
|
+
/**
|
|
512
|
+
* Clear-filters affordance for tables whose renderToolbar slot
|
|
513
|
+
* carries filter controls. When onClearFilters is supplied and
|
|
514
|
+
* filtersActive is true, a "Clear filters" link button renders at
|
|
515
|
+
* the end of the filter slot; clicking it fires the callback so
|
|
516
|
+
* the caller resets its own filter state. The button stays hidden
|
|
517
|
+
* while filtersActive is false so an untouched toolbar carries no
|
|
518
|
+
* dead control.
|
|
519
|
+
*/
|
|
520
|
+
onClearFilters?: () => void;
|
|
521
|
+
filtersActive?: boolean;
|
|
522
|
+
/** Label override for the clear-filters button. */
|
|
523
|
+
clearFiltersLabel?: string;
|
|
524
|
+
/**
|
|
525
|
+
* A value that changes whenever the caller's own filters change, so the
|
|
526
|
+
* table can go back to the first page.
|
|
527
|
+
*
|
|
528
|
+
* THE PAGE IS RESET BY A FILTER OR A SORT, AND BY NOTHING ELSE. It used to
|
|
529
|
+
* reset whenever the row COUNT changed, which on a live table is whenever
|
|
530
|
+
* anything happened: a reader on page four of an activity feed was thrown
|
|
531
|
+
* back to page one by an event they were not looking at.
|
|
532
|
+
*/
|
|
533
|
+
filterKey?: string | number;
|
|
534
|
+
/**
|
|
535
|
+
* Which columns are shown, as a controlled pair with
|
|
536
|
+
* `onVisibleColumnsChange`.
|
|
537
|
+
*
|
|
538
|
+
* Without the pair the table owns the choice and keeps it in
|
|
539
|
+
* `localStorage` under `storageKey`, so a surface that passes neither can
|
|
540
|
+
* never bring back a column hidden by `defaultVisible: false`. Supplied,
|
|
541
|
+
* the caller keeps it wherever its other state lives, which for a dashboard
|
|
542
|
+
* screen is the URL.
|
|
543
|
+
*
|
|
544
|
+
* EITHER WAY, THE SETTINGS FRAME IS THE WAY IN, so a caller that passes the
|
|
545
|
+
* pair and `showSettings={false}` has taken the reader's way in with it and
|
|
546
|
+
* owes them a control of its own. The pair still drives the table: what it
|
|
547
|
+
* says is what is drawn, whoever changed it.
|
|
548
|
+
*/
|
|
549
|
+
visibleColumns?: Record<string, boolean>;
|
|
550
|
+
onVisibleColumnsChange?: (next: Record<string, boolean>) => void;
|
|
551
|
+
/**
|
|
552
|
+
* When supplied, each row becomes expandable. The chevron button in the
|
|
553
|
+
* leading cell toggles a detail panel rendered immediately below the row,
|
|
554
|
+
* spanning the full column width. Returning null from the function
|
|
555
|
+
* suppresses expansion for that row.
|
|
556
|
+
*
|
|
557
|
+
* Mutually exclusive with onRowClick (expansion takes the click);
|
|
558
|
+
* combine with rowActions freely since the kebab stops propagation.
|
|
559
|
+
* ANY NUMBER OF ROWS MAY BE OPEN AT ONCE: opening one closes nothing, and
|
|
560
|
+
* the header chevron opens or closes every row on the page.
|
|
561
|
+
*/
|
|
562
|
+
renderExpandedRow?: (row: TRow) => ReactNode | null | undefined;
|
|
563
|
+
/** Optional initial expanded row key (resolved via the row-key resolver). */
|
|
564
|
+
defaultExpandedKey?: string | number | null;
|
|
565
|
+
/**
|
|
566
|
+
* Cursor-pagination footer. When hasMore is true, the table renders
|
|
567
|
+
* a centered "Load more" button below the rows that fires onLoadMore.
|
|
568
|
+
* The button is disabled while loadingMore is true. When hasMore is
|
|
569
|
+
* false, `endMessage` says so, or nothing does.
|
|
570
|
+
*
|
|
571
|
+
* Independent from the built-in client-side paginated prop: cursor
|
|
572
|
+
* pagination is server-driven (caller fetches and appends rows),
|
|
573
|
+
* client pagination slices a fully loaded dataset.
|
|
574
|
+
*/
|
|
575
|
+
hasMore?: boolean;
|
|
576
|
+
onLoadMore?: () => void;
|
|
577
|
+
loadingMore?: boolean;
|
|
578
|
+
loadMoreLabel?: string;
|
|
579
|
+
/**
|
|
580
|
+
* Optional table header rendered above the toolbar. The title is the
|
|
581
|
+
* section name (e.g. "Projects"), the description is a one-line
|
|
582
|
+
* explanation of what the rows represent, and icon is an optional
|
|
583
|
+
* glyph rendered to the left of the title (the same icon, title and
|
|
584
|
+
* description header a settings card uses). Folding them into the table
|
|
585
|
+
* primitive lets the entire surface, header + toolbar + table, share the
|
|
586
|
+
* same card boundary and spacing without each caller recomposing the
|
|
587
|
+
* `<header><h2/><p/></header>` pattern.
|
|
588
|
+
*
|
|
589
|
+
* When a header is present, the table's right-side controls
|
|
590
|
+
* (pagination chevrons + settings cog) move ONTO the header row so
|
|
591
|
+
* the section title and the controls share the same line. The
|
|
592
|
+
* caller-supplied filter slot (renderToolbar) renders on its own
|
|
593
|
+
* row below the header.
|
|
594
|
+
*
|
|
595
|
+
* A TABLE THAT FILLS A CARD USUALLY WANTS THE CARD'S HEADER INSTEAD, which
|
|
596
|
+
* carries the icon, the name and the count, and which takes the same
|
|
597
|
+
* controls with nothing passed: see `Card.Header` and `useCardHeaderSlot`.
|
|
598
|
+
* This one is for a table that is the whole of its own surface.
|
|
599
|
+
*/
|
|
600
|
+
title?: ReactNode;
|
|
601
|
+
description?: ReactNode;
|
|
602
|
+
/** The header's glyph. A component, not a name. */
|
|
603
|
+
icon?: ReactNode;
|
|
604
|
+
/**
|
|
605
|
+
* Initial value for the Wrap lines toggle.
|
|
606
|
+
* When true, cells wrap their content with overflow-wrap: anywhere.
|
|
607
|
+
* When false, cells stay on a single line and truncate with an
|
|
608
|
+
* ellipsis. Persisted under `${storageKey}_wrapLines` when a
|
|
609
|
+
* storageKey is provided.
|
|
610
|
+
*/
|
|
611
|
+
defaultWrapLines?: boolean;
|
|
612
|
+
/** Every string the table renders itself. Merged over the English defaults. */
|
|
613
|
+
labels?: Partial<DataTableLabels>;
|
|
614
|
+
}
|
|
615
|
+
export declare const DataTable: <TRow>({ data, columns, storageKey, defaultColumnOrder, columnOrder: columnOrderProp, onColumnOrderChange, defaultItemsPerPage, itemsPerPage: itemsPerPageProp, onItemsPerPageChange, page: pageProp, onPageChange, pageCount, minColumnWidth, resizable, itemsPerPageOptions, onRowAction, actionLabel, actionIcon, getRowKey, rowKey, emptyMessage, endMessage, showActions, className, variant, density, maxBodyHeight, sort: sortProp, onSortChange, defaultSort, sortCycle, stableOrder, rowActions, archivedPredicate, archivedLabel, loading, skeletonRows, error, paginated, showSettings, onRowClick, getRowHref, rowTone, isSelected, renderAccessoryRow, renderToolbar, renderFilterBar, onClearFilters, filtersActive, clearFiltersLabel, filterKey, visibleColumns: visibleColumnsProp, onVisibleColumnsChange, renderExpandedRow, defaultExpandedKey, hasMore, onLoadMore, loadingMore, loadMoreLabel, title, description, icon, defaultWrapLines, labels: labelOverrides, }: DataTableProps<TRow>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { DataTableRowAction } from './DataTable.js';
|
|
2
|
+
export interface RowActionsMenuProps {
|
|
3
|
+
actions: Array<DataTableRowAction | null | undefined | false>;
|
|
4
|
+
/** The trigger's accessible name. */
|
|
5
|
+
label?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const RowActionsMenu: ({ actions, label }: RowActionsMenuProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import './DataTable.css';
|
|
2
|
+
export { DataTable, DATA_TABLE_LABELS, ALL_ITEMS } from './DataTable.js';
|
|
3
|
+
export type { DataTableColumn, DataTableDensity, DataTableItemsPerPage, DataTableLabels, DataTableProps, DataTableRow, DataTableRowAction, DataTableRowTone, DataTableSortCycle, DataTableSortDirection, DataTableSortState, DataTableVariant, } from './DataTable.js';
|
|
4
|
+
export { CopyableCell } from './CopyableCell.js';
|
|
5
|
+
export type { CopyableCellProps } from './CopyableCell.js';
|
|
6
|
+
export { RowActionsMenu } from './RowActionsMenu.js';
|
|
7
|
+
export type { RowActionsMenuProps } from './RowActionsMenu.js';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-EHMQQHYR.js';
|
|
2
|
+
import '../chunk-FBZAKNSX.js';
|
|
3
|
+
import '../chunk-EUCC37WY.js';
|
|
4
|
+
import '../chunk-2EOKFKHX.js';
|
|
5
|
+
import '../chunk-AV2DXAEL.js';
|
|
6
|
+
import '../chunk-2PRH365R.js';
|
|
7
|
+
import '../chunk-V663QU4R.js';
|
|
8
|
+
import '../chunk-PQADV6P6.js';
|
|
9
|
+
import '../chunk-7RPGY3JE.js';
|
|
10
|
+
import '../chunk-ITHXJHBB.js';
|
|
11
|
+
import '../chunk-F27EPQ7D.js';
|
|
12
|
+
import '../chunk-BZYDZBAN.js';
|
|
13
|
+
import '../chunk-BZFWDIV6.js';
|
|
14
|
+
import '../chunk-ODEQTPFM.js';
|