@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,360 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* An organization as an indented table of rows (OrgTable.tsx).
|
|
3
|
+
*
|
|
4
|
+
* The rows, the cells and the column template are `TreeGrid`'s, and the add's
|
|
5
|
+
* own split is `AddPill`'s. What is here is the console org table's own drawing
|
|
6
|
+
* on top of them: the gutter the wires run down, the two-line name group, the
|
|
7
|
+
* controls that stay quiet until a row is reached, the slot the add splits open
|
|
8
|
+
* in, and the tab of tree controls attached to the table's top edge.
|
|
9
|
+
*
|
|
10
|
+
* IT KEYS ON ROLES, NOT ON THE GRID'S CLASS NAMES. A row is `[role='row']` and
|
|
11
|
+
* a cell is `[role='gridcell']`, which is the contract that component
|
|
12
|
+
* documents and a suite here holds it to; a private class name would be a
|
|
13
|
+
* second component's internals read from the outside, which changes without
|
|
14
|
+
* anything noticing.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
.crewlet-org-table {
|
|
18
|
+
/*
|
|
19
|
+
* THE STEP EACH LEVEL IS INDENTED BY, and therefore how long a row's own
|
|
20
|
+
* branch is. One step per level, on the spacing scale, and the step is the
|
|
21
|
+
* console org table's own 40px: at half of it a seat four levels down was
|
|
22
|
+
* offset 80px where the console offsets it 160, so the indent that IS the
|
|
23
|
+
* answer to "where is this in the organization" read at half strength.
|
|
24
|
+
*/
|
|
25
|
+
--crewlet-org-table-indent: var(--spacing-8);
|
|
26
|
+
/* The wire arriving at a row, and what it fades to at the row's own end.
|
|
27
|
+
Rebound per hue below. */
|
|
28
|
+
--crewlet-org-table-wire: var(--color-border-control);
|
|
29
|
+
--crewlet-org-table-wire-fade: var(--color-border-default);
|
|
30
|
+
/* What a row's name and its mark are drawn in. Rebound per hue below. */
|
|
31
|
+
--crewlet-org-table-ink: var(--color-text-primary);
|
|
32
|
+
--crewlet-org-table-accent: var(--color-text-tertiary);
|
|
33
|
+
/*
|
|
34
|
+
* HOW MANY KINDS THE ROW'S ADD OFFERS, which is what the slot holding it
|
|
35
|
+
* reserves: the pill opens to one target per kind and it opens IN PLACE, so
|
|
36
|
+
* the room it needs is room the closed row already holds. Three is what an
|
|
37
|
+
* organization takes (a unit, an agent seat, a human seat); a caller
|
|
38
|
+
* offering another number sets this once, here, and the slot and the track
|
|
39
|
+
* below both follow it.
|
|
40
|
+
*/
|
|
41
|
+
--crewlet-org-table-add-kinds: 3;
|
|
42
|
+
/*
|
|
43
|
+
* THE SLOT THE ADD SITS IN: the OPEN pill's own width, which is one pointer
|
|
44
|
+
* target per kind and the pill's own boundary. Reserved rather than
|
|
45
|
+
* overflowed, because the pill used to open back over the row and cover the
|
|
46
|
+
* Problems cell beside it, which is the check's own answer for that row; and
|
|
47
|
+
* a pill that opened the other way would have run off the end of the row and
|
|
48
|
+
* out of the grid's scroller.
|
|
49
|
+
*/
|
|
50
|
+
--crewlet-org-table-add: calc(
|
|
51
|
+
var(--size-target-min) * var(--crewlet-org-table-add-kinds) + 2px
|
|
52
|
+
);
|
|
53
|
+
/*
|
|
54
|
+
* THE TRACK A ROW'S CONTROL STRIP TAKES, and why it is a number at all:
|
|
55
|
+
* EVERY ROW IS ITS OWN GRID, so an `auto` last track is as wide as that
|
|
56
|
+
* row's own controls. The header row holds none, so its last track measured
|
|
57
|
+
* 16px where a row's measured 108, and every flexible column before it began
|
|
58
|
+
* somewhere else in the header than in the rows: a table whose headings
|
|
59
|
+
* named the wrong columns.
|
|
60
|
+
*
|
|
61
|
+
* The add's slot, the strip, and the cell's own inset. A caller with a
|
|
62
|
+
* different number sets its own track; what matters is that the track is
|
|
63
|
+
* fixed, and that it holds the add OPEN.
|
|
64
|
+
*/
|
|
65
|
+
--crewlet-org-table-actions: calc(
|
|
66
|
+
var(--crewlet-org-table-add) + var(--crewlet-org-table-strip) + var(--spacing-2) * 3
|
|
67
|
+
);
|
|
68
|
+
/*
|
|
69
|
+
* THE ROOM THE QUIET STRIP KEEPS, whatever that row draws in it: three
|
|
70
|
+
* controls and their two gaps, which is the most a row here takes (a
|
|
71
|
+
* pencil, a trash, a menu).
|
|
72
|
+
*
|
|
73
|
+
* RESERVED, because the cell is end-aligned and the ADD sits before the
|
|
74
|
+
* strip: measured, the company's row draws no trash and no menu, so its
|
|
75
|
+
* strip was 28px where every other row's was 92, and the plus a reader
|
|
76
|
+
* scans down the table for stood 64px to the right of the one on the row
|
|
77
|
+
* beneath it. A row that draws fewer controls leaves the room empty rather
|
|
78
|
+
* than moving what is beside it.
|
|
79
|
+
*/
|
|
80
|
+
--crewlet-org-table-strip: calc(var(--size-control-sm) * 3 + var(--spacing-1) * 2);
|
|
81
|
+
/*
|
|
82
|
+
* THE WIDTH BELOW WHICH THE TABLE SCROLLS SIDEWAYS, wider than a plain
|
|
83
|
+
* treegrid's because a row here spends its first column on a mark, two lines
|
|
84
|
+
* of text and an indent that grows with the level. At the treegrid's own
|
|
85
|
+
* 45rem a seat four levels down had 59px left for its name, so the column a
|
|
86
|
+
* reader scans said "SR…" and, on one row, nothing at all.
|
|
87
|
+
*/
|
|
88
|
+
--crewlet-tree-grid-min-width: 60rem;
|
|
89
|
+
display: flex;
|
|
90
|
+
flex-direction: column;
|
|
91
|
+
align-items: stretch;
|
|
92
|
+
min-width: 0;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/*
|
|
96
|
+
* THE TREE CONTROLS ARE A TAB ON THE TABLE'S OWN EDGE, not a toolbar above it:
|
|
97
|
+
* they act on this table and nothing else, and a strip floating over the page
|
|
98
|
+
* would read as the screen's. Its bottom hairline is the table's top one, so
|
|
99
|
+
* the two are one frame.
|
|
100
|
+
*/
|
|
101
|
+
.crewlet-org-table__controls {
|
|
102
|
+
display: flex;
|
|
103
|
+
align-self: flex-start;
|
|
104
|
+
align-items: center;
|
|
105
|
+
margin-inline-start: var(--spacing-4);
|
|
106
|
+
margin-bottom: -1px;
|
|
107
|
+
padding: var(--spacing-1);
|
|
108
|
+
background: var(--color-surface-subtle);
|
|
109
|
+
border: 1px solid var(--color-border-default);
|
|
110
|
+
border-bottom: 0;
|
|
111
|
+
border-start-start-radius: var(--radius-sm);
|
|
112
|
+
border-start-end-radius: var(--radius-sm);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/*
|
|
116
|
+
* A ROW IS TWO LINES TALL, so it stands on the TALL row step rather than the
|
|
117
|
+
* grid's own. The name group is a name over a caption and the grid's step left
|
|
118
|
+
* it 1.8px of air above and below, which is what made these rows read as
|
|
119
|
+
* cramped beside the console's 48.5px ones; it is also the room a wiring mark
|
|
120
|
+
* riding the caption needs before it can grow the row.
|
|
121
|
+
*
|
|
122
|
+
* KEYED ON `aria-level`, which is the ARIA contract's own mark of a row IN the
|
|
123
|
+
* tree: the head's row carries none, so a column heading keeps the shorter
|
|
124
|
+
* step it should have and no private class name is read from the outside.
|
|
125
|
+
*/
|
|
126
|
+
.crewlet-org-table [role='row'][aria-level] {
|
|
127
|
+
min-height: var(--size-row-lg);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/*
|
|
131
|
+
* THE INDENT IS THE WIRE'S, NOT THE CELL'S. `TreeGrid` indents its first cell
|
|
132
|
+
* by the row's level, which moves the row's own toggle right with it; the
|
|
133
|
+
* console table holds the toggle in a column of its own and indents what
|
|
134
|
+
* follows, so the trunk is one line down the whole table rather than one per
|
|
135
|
+
* level. The cell's padding is taken back and the wire element carries the
|
|
136
|
+
* level instead.
|
|
137
|
+
*/
|
|
138
|
+
.crewlet-org-table [role='gridcell']:first-child {
|
|
139
|
+
padding-inline-start: var(--spacing-2);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/*
|
|
143
|
+
* THE STRIP ENDS THE ROW, AND AN OPEN PILL GROWS BACK ALONG IT. The last track
|
|
144
|
+
* is the width of the CLOSED strip, so an open pill is wider than the cell
|
|
145
|
+
* holding it; a flex item that overflows a flex-start container spills off the
|
|
146
|
+
* END of the row, past the table's own edge and out of its scroller. Ended, it
|
|
147
|
+
* spills back over the row instead, where the pill's own ground covers
|
|
148
|
+
* whatever it crosses.
|
|
149
|
+
*/
|
|
150
|
+
.crewlet-org-table [role='gridcell']:last-child {
|
|
151
|
+
justify-content: flex-end;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.crewlet-org-table__wire {
|
|
155
|
+
position: relative;
|
|
156
|
+
flex: none;
|
|
157
|
+
align-self: stretch;
|
|
158
|
+
width: calc(var(--crewlet-org-table-indent) * var(--crewlet-org-table-depth, 0));
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.crewlet-org-table__wire::before,
|
|
162
|
+
.crewlet-org-table__wire::after {
|
|
163
|
+
content: '';
|
|
164
|
+
position: absolute;
|
|
165
|
+
pointer-events: none;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/*
|
|
169
|
+
* THE TRUNK: a segment down the gutter on every row inside the tree, so the
|
|
170
|
+
* segments stack into one line. Neutral, always: it belongs to the table
|
|
171
|
+
* rather than to any row, and a trunk that took each row's hue in turn would
|
|
172
|
+
* be a striped line saying nothing.
|
|
173
|
+
*/
|
|
174
|
+
.crewlet-org-table__wire[data-trunk]::before {
|
|
175
|
+
inset-block: 0;
|
|
176
|
+
inset-inline-start: 0;
|
|
177
|
+
width: 2px;
|
|
178
|
+
background: var(--color-border-default);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/* A root row's trunk starts at the row's middle: nothing hangs above the
|
|
182
|
+
first row of the table. */
|
|
183
|
+
.crewlet-org-table__wire[data-root][data-trunk]::before {
|
|
184
|
+
inset-block-start: 50%;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/*
|
|
188
|
+
* THE BRANCH: from the trunk across the gutter to the row's own mark, fading
|
|
189
|
+
* as it arrives. It reaches one cell gap past the wire's own width, which is
|
|
190
|
+
* where the mark begins. A root row has no branch, because its width is zero.
|
|
191
|
+
*/
|
|
192
|
+
.crewlet-org-table__wire::after {
|
|
193
|
+
inset-inline-start: 0;
|
|
194
|
+
inset-block-start: 50%;
|
|
195
|
+
width: calc(100% + var(--spacing-2));
|
|
196
|
+
height: 2px;
|
|
197
|
+
background: linear-gradient(
|
|
198
|
+
90deg,
|
|
199
|
+
var(--crewlet-org-table-wire),
|
|
200
|
+
var(--crewlet-org-table-wire-fade)
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/* A root row has nothing above it to branch off, so it draws none: the stub a
|
|
205
|
+
branch would leave beside the first row of the table is a line to nowhere. */
|
|
206
|
+
.crewlet-org-table__wire[data-root]::after {
|
|
207
|
+
content: none;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/*
|
|
211
|
+
* The six hues, on the branch arriving at a row and on the mark and name in
|
|
212
|
+
* it. Measured on the table's own ground (--color-surface-subtle): the ink
|
|
213
|
+
* every hue's name is drawn in clears 8.2:1 in both themes, and the accent the
|
|
214
|
+
* mark takes clears 4.2:1, which is over the floor for a drawing and under it
|
|
215
|
+
* for words. So the caption stays in the neutral tertiary ink, where the
|
|
216
|
+
* console table tints it: a word at 4.2:1 is a word a reader has to work at.
|
|
217
|
+
*/
|
|
218
|
+
.crewlet-org-table__wire[data-tone='purple'],
|
|
219
|
+
.crewlet-org-label--row[data-tone='purple'] {
|
|
220
|
+
--crewlet-org-table-wire: var(--color-node-purple-line);
|
|
221
|
+
--crewlet-org-table-wire-fade: var(--color-node-purple-halo);
|
|
222
|
+
--crewlet-org-table-ink: var(--color-node-purple-ink);
|
|
223
|
+
--crewlet-org-table-accent: var(--color-node-purple);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.crewlet-org-table__wire[data-tone='cyan'],
|
|
227
|
+
.crewlet-org-label--row[data-tone='cyan'] {
|
|
228
|
+
--crewlet-org-table-wire: var(--color-node-cyan-line);
|
|
229
|
+
--crewlet-org-table-wire-fade: var(--color-node-cyan-halo);
|
|
230
|
+
--crewlet-org-table-ink: var(--color-node-cyan-ink);
|
|
231
|
+
--crewlet-org-table-accent: var(--color-node-cyan);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.crewlet-org-table__wire[data-tone='green'],
|
|
235
|
+
.crewlet-org-label--row[data-tone='green'] {
|
|
236
|
+
--crewlet-org-table-wire: var(--color-node-green-line);
|
|
237
|
+
--crewlet-org-table-wire-fade: var(--color-node-green-halo);
|
|
238
|
+
--crewlet-org-table-ink: var(--color-node-green-ink);
|
|
239
|
+
--crewlet-org-table-accent: var(--color-node-green);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.crewlet-org-table__wire[data-tone='amber'],
|
|
243
|
+
.crewlet-org-label--row[data-tone='amber'] {
|
|
244
|
+
--crewlet-org-table-wire: var(--color-node-amber-line);
|
|
245
|
+
--crewlet-org-table-wire-fade: var(--color-node-amber-halo);
|
|
246
|
+
--crewlet-org-table-ink: var(--color-node-amber-ink);
|
|
247
|
+
--crewlet-org-table-accent: var(--color-node-amber);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
.crewlet-org-table__wire[data-tone='rose'],
|
|
251
|
+
.crewlet-org-label--row[data-tone='rose'] {
|
|
252
|
+
--crewlet-org-table-wire: var(--color-node-rose-line);
|
|
253
|
+
--crewlet-org-table-wire-fade: var(--color-node-rose-halo);
|
|
254
|
+
--crewlet-org-table-ink: var(--color-node-rose-ink);
|
|
255
|
+
--crewlet-org-table-accent: var(--color-node-rose);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.crewlet-org-table__wire[data-tone='blue'],
|
|
259
|
+
.crewlet-org-label--row[data-tone='blue'] {
|
|
260
|
+
--crewlet-org-table-wire: var(--color-node-blue-line);
|
|
261
|
+
--crewlet-org-table-wire-fade: var(--color-node-blue-halo);
|
|
262
|
+
--crewlet-org-table-ink: var(--color-node-blue-ink);
|
|
263
|
+
--crewlet-org-table-accent: var(--color-node-blue);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/* ---- The name group ------------------------------------------------------ */
|
|
267
|
+
|
|
268
|
+
/*
|
|
269
|
+
* WHAT A ROW SAYS IS `OrgLabel`, in its row layout, because a chart node says
|
|
270
|
+
* the same four things in the same words: see `OrgLabel.css`, which holds
|
|
271
|
+
* every rule that draws them. What is left here is the one thing that is the
|
|
272
|
+
* TABLE's and not the label's, which is the ink.
|
|
273
|
+
*
|
|
274
|
+
* THE SIX HUES ARE ABOVE, on the wire and on the row together, and they are a
|
|
275
|
+
* system this table owns: the chart's equivalent is published by a card, so
|
|
276
|
+
* the shared component cannot read either directly without knowing about both.
|
|
277
|
+
* It reads what is handed to it instead, and this is the table handing it over
|
|
278
|
+
* beside the rules that produce it.
|
|
279
|
+
*
|
|
280
|
+
* THE CAPTION IS NOT IN THIS. It stays the neutral tertiary ink, because a
|
|
281
|
+
* hue's own step measures 4.2:1 on this ground: over the floor for a drawing
|
|
282
|
+
* and under it for a word.
|
|
283
|
+
*/
|
|
284
|
+
.crewlet-org-label--row .crewlet-org-label__icon {
|
|
285
|
+
color: var(--crewlet-org-table-accent);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
.crewlet-org-label--row .crewlet-org-label__name {
|
|
289
|
+
color: var(--crewlet-org-table-ink);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/* ---- The row's own controls ---------------------------------------------- */
|
|
293
|
+
|
|
294
|
+
/*
|
|
295
|
+
* THE STRIP IS WHAT ACTS ON THIS ROW, and the add is not in it: see the slot
|
|
296
|
+
* below. No auto margin, because the cell already ends its content and an auto
|
|
297
|
+
* margin between the add and this strip would push the two apart by whatever a
|
|
298
|
+
* row's own controls left over, which is a different gap on every row.
|
|
299
|
+
*/
|
|
300
|
+
.crewlet-org-table__actions {
|
|
301
|
+
display: inline-flex;
|
|
302
|
+
align-items: center;
|
|
303
|
+
/* END-ALIGNED INSIDE THE ROOM IT KEEPS, so the control a row draws last is
|
|
304
|
+
at the row's own end whether it draws one or three. */
|
|
305
|
+
justify-content: flex-end;
|
|
306
|
+
gap: var(--spacing-1);
|
|
307
|
+
min-width: var(--crewlet-org-table-strip);
|
|
308
|
+
opacity: 0;
|
|
309
|
+
transition: opacity var(--motion-duration-fast) var(--motion-easing-default);
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/*
|
|
313
|
+
* REACHED BY THE POINTER, BY FOCUS, AND ON THE SELECTED ROW. Focus is the half
|
|
314
|
+
* that is not decoration: a control a keyboard can reach but nobody can see is
|
|
315
|
+
* a control that fails the focus-visibility rule, so the strip comes back the
|
|
316
|
+
* moment focus enters the row.
|
|
317
|
+
*/
|
|
318
|
+
.crewlet-org-table [role='row']:hover .crewlet-org-table__actions,
|
|
319
|
+
.crewlet-org-table [role='row']:focus-within .crewlet-org-table__actions,
|
|
320
|
+
.crewlet-org-table [role='row'][aria-selected='true'] .crewlet-org-table__actions {
|
|
321
|
+
opacity: 1;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/*
|
|
325
|
+
* A POINTER THAT CANNOT HOVER NEVER REACHES A ROW, so on a touch screen the
|
|
326
|
+
* strip is simply drawn. Without this the table is unusable on a phone: every
|
|
327
|
+
* control on it is behind a state that device has no way to enter.
|
|
328
|
+
*/
|
|
329
|
+
@media (hover: none) {
|
|
330
|
+
.crewlet-org-table__actions {
|
|
331
|
+
opacity: 1;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
@media (prefers-reduced-motion: reduce) {
|
|
336
|
+
.crewlet-org-table__actions {
|
|
337
|
+
transition: none;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/*
|
|
342
|
+
* THE ADD IS NOT ONE OF THE ROW'S QUIET CONTROLS. It is the console's own
|
|
343
|
+
* green plus and it is DRAWN on every row that can take a child, at the quiet
|
|
344
|
+
* opacity `AddPill` holds its mark at; only the controls that act on the row
|
|
345
|
+
* itself wait to be reached. Inside the strip it inherited `opacity: 0`, so
|
|
346
|
+
* the one control an operator reaches for by its colour could not be seen
|
|
347
|
+
* until the pointer was already on the row.
|
|
348
|
+
*
|
|
349
|
+
* THE SLOT IS AS WIDE AS THE PILL IS OPEN, so the split happens inside the
|
|
350
|
+
* track the row already reserved: the pill is centred on its own mark, the
|
|
351
|
+
* mark is centred here, and nothing the pill covers is something a reader was
|
|
352
|
+
* reading.
|
|
353
|
+
*/
|
|
354
|
+
.crewlet-org-table__add {
|
|
355
|
+
display: inline-flex;
|
|
356
|
+
flex: none;
|
|
357
|
+
align-items: center;
|
|
358
|
+
justify-content: center;
|
|
359
|
+
width: var(--crewlet-org-table-add);
|
|
360
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
import { type HeadingLevel } from '../utils/headingLevel.js';
|
|
3
|
+
export interface PageHeaderProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
|
|
4
|
+
/** What this screen is. */
|
|
5
|
+
title: ReactNode;
|
|
6
|
+
/**
|
|
7
|
+
* The heading element to draw. It follows the surrounding heading level by
|
|
8
|
+
* default, which is 2 on a page whose shell already spends the `h1` on the
|
|
9
|
+
* screen's name, and 3 inside a dialog that has taken 2 for its own title.
|
|
10
|
+
*/
|
|
11
|
+
headingLevel?: HeadingLevel | undefined;
|
|
12
|
+
/** One sentence saying what the screen answers. It sits on the measure. */
|
|
13
|
+
description?: ReactNode;
|
|
14
|
+
/** Status beside the title: a tag, a count, a live dot. */
|
|
15
|
+
badges?: ReactNode;
|
|
16
|
+
/** What a reader can do here. They wrap under the title when there is no room. */
|
|
17
|
+
actions?: ReactNode;
|
|
18
|
+
/** Names the heading, for a region that points at it with aria-labelledby. */
|
|
19
|
+
titleId?: string | undefined;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The standard head of a screen: what it is, what it answers, and what can be
|
|
23
|
+
* done here.
|
|
24
|
+
*
|
|
25
|
+
* WHY IT IS A COMPONENT. Twenty screens spelled this out of a div, a flex row
|
|
26
|
+
* and two inline styles each, and they had drifted: three gaps, two title
|
|
27
|
+
* sizes, and a badge row that wrapped on some screens and pushed the actions
|
|
28
|
+
* off the side on others. One header is also the only way the heading LEVEL
|
|
29
|
+
* can be right, which is what a reader navigating by heading uses to move
|
|
30
|
+
* around a page at all.
|
|
31
|
+
*
|
|
32
|
+
* The actions are a sibling of the title rather than part of it, so a heading
|
|
33
|
+
* a screen reader reads is the screen's name and not the name plus three verbs.
|
|
34
|
+
*/
|
|
35
|
+
export declare function PageHeader({ title, headingLevel, description, badges, actions, titleId, className, children, ...rest }: PageHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The head of a screen.
|
|
3
|
+
*
|
|
4
|
+
* THE OPERATOR'S TITLE, NOT THE MARKETING ONE. It was the 32px display step
|
|
5
|
+
* over a 16px sentence, which is the type a landing page opens with: on a
|
|
6
|
+
* screen whose job is to show a table it took a third of the first fold and
|
|
7
|
+
* pushed the rows a reader came for below it, and it said the screen's name
|
|
8
|
+
* twice as loudly as the shell's own bar says it. The 20px step over the
|
|
9
|
+
* compact sentence is the head every screen on the dashboard wears, and it
|
|
10
|
+
* leaves the content the largest thing on the page.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
.crewlet-page-header {
|
|
14
|
+
display: flex;
|
|
15
|
+
align-items: flex-end;
|
|
16
|
+
justify-content: space-between;
|
|
17
|
+
gap: var(--spacing-3);
|
|
18
|
+
flex-wrap: wrap;
|
|
19
|
+
min-width: 0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.crewlet-page-header__lead {
|
|
23
|
+
display: flex;
|
|
24
|
+
flex-direction: column;
|
|
25
|
+
/* One step. The title and the sentence under it are ONE block: at the
|
|
26
|
+
8px step they read as a heading with a caption parked below it. */
|
|
27
|
+
gap: var(--spacing-1);
|
|
28
|
+
min-width: 0;
|
|
29
|
+
/* Takes the row, so the actions wrap under the title rather than squeezing
|
|
30
|
+
a long screen name into two words and an ellipsis. */
|
|
31
|
+
flex: 1 1 auto;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.crewlet-page-header__titles {
|
|
35
|
+
display: flex;
|
|
36
|
+
align-items: center;
|
|
37
|
+
gap: var(--spacing-2);
|
|
38
|
+
flex-wrap: wrap;
|
|
39
|
+
min-width: 0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/*
|
|
43
|
+
* THE TITLE KEEPS THE PAGE'S OWN LEADING. It is a heading element, and the
|
|
44
|
+
* document baseline sets every heading at the tight step, which is the right
|
|
45
|
+
* answer for a stack of headings in prose and the wrong one here: this is one
|
|
46
|
+
* line above one sentence, and at 1.2 the two sit closer than the gap between
|
|
47
|
+
* them, so the head reads as three lines of something rather than a title with
|
|
48
|
+
* a caption. Declared here rather than left to the baseline because a screen
|
|
49
|
+
* that renders the title in a `div` would otherwise draw a different head from
|
|
50
|
+
* the one that renders it in an `h1`.
|
|
51
|
+
*/
|
|
52
|
+
.crewlet-page-header__title {
|
|
53
|
+
margin: 0;
|
|
54
|
+
font-family: var(--font-family-display);
|
|
55
|
+
font-size: var(--font-size-xl);
|
|
56
|
+
font-weight: var(--font-weight-semibold);
|
|
57
|
+
line-height: var(--font-line-height-normal);
|
|
58
|
+
letter-spacing: var(--font-letter-spacing-tight);
|
|
59
|
+
color: var(--color-text-primary);
|
|
60
|
+
min-width: 0;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.crewlet-page-header__badges {
|
|
64
|
+
display: flex;
|
|
65
|
+
align-items: center;
|
|
66
|
+
gap: var(--spacing-2);
|
|
67
|
+
flex-wrap: wrap;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.crewlet-page-header__description {
|
|
71
|
+
margin: 0;
|
|
72
|
+
max-width: var(--size-measure);
|
|
73
|
+
font-family: var(--font-family-sans);
|
|
74
|
+
/* A sentence that answers "what is this screen for", read once. It is not
|
|
75
|
+
body copy, and at the body step it competed with the table under it. */
|
|
76
|
+
font-size: var(--font-size-compact);
|
|
77
|
+
line-height: var(--font-line-height-normal);
|
|
78
|
+
color: var(--color-text-tertiary);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* One step between actions, which is what keeps a run of buttons reading as
|
|
82
|
+
one cluster at the end of the row rather than as three separate controls. */
|
|
83
|
+
.crewlet-page-header__actions {
|
|
84
|
+
display: flex;
|
|
85
|
+
align-items: center;
|
|
86
|
+
gap: var(--spacing-1);
|
|
87
|
+
flex-wrap: wrap;
|
|
88
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { type ReactElement, type ReactNode } from 'react';
|
|
2
|
+
import { type DismissReason } from '../Layer/index.js';
|
|
3
|
+
export type PopoverAlign = 'start' | 'end';
|
|
4
|
+
export type PopoverSide = 'top' | 'bottom';
|
|
5
|
+
export type PopoverWidth = 'auto' | 'match';
|
|
6
|
+
/**
|
|
7
|
+
* What the panel IS. `dialog` is the default because a panel holding a form, a
|
|
8
|
+
* date grid or a filter editor is a dialog; `menu` and `listbox` are for a
|
|
9
|
+
* panel whose children carry the matching item roles; `none` is for a panel
|
|
10
|
+
* whose own children already declare the structure.
|
|
11
|
+
*/
|
|
12
|
+
export type PopoverRole = 'dialog' | 'menu' | 'listbox' | 'none';
|
|
13
|
+
interface PopoverBaseProps {
|
|
14
|
+
trigger: (open: boolean, toggle: () => void) => ReactElement;
|
|
15
|
+
children: ReactNode | ((close: () => void) => ReactNode);
|
|
16
|
+
/** Which edge of the anchor the panel lines up with. */
|
|
17
|
+
align?: PopoverAlign | undefined;
|
|
18
|
+
/** The preferred side. It flips when there is not room and there is more room the other way. */
|
|
19
|
+
side?: PopoverSide | undefined;
|
|
20
|
+
/** `match` sizes the panel to the anchor, which is what a Select wants. */
|
|
21
|
+
width?: PopoverWidth | undefined;
|
|
22
|
+
className?: string | undefined;
|
|
23
|
+
/** Controlled. Leave it out for a panel that owns its own open state. */
|
|
24
|
+
open?: boolean | undefined;
|
|
25
|
+
defaultOpen?: boolean | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Reports a change, and ONLY a change: it is never called on mount, which
|
|
28
|
+
* the effect this replaced did on every render, so a caller that cleared a
|
|
29
|
+
* flag when the panel opened cleared it immediately and forever.
|
|
30
|
+
*/
|
|
31
|
+
onOpenChange?: ((open: boolean, reason: PopoverReason) => void) | undefined;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A DIALOG MUST BE NAMED, and the type is what says so.
|
|
35
|
+
*
|
|
36
|
+
* A dialog is announced by its name and by nothing else: with none, a screen
|
|
37
|
+
* reader says "dialog" and the reader is left to guess what opened. The
|
|
38
|
+
* default role is `dialog`, so an optional `label` meant the default was an
|
|
39
|
+
* unnamed one, which is what two pickers in this package shipped the day the
|
|
40
|
+
* default changed. The other roles take their meaning from the items inside
|
|
41
|
+
* them and a name is a courtesy, so it stays optional there.
|
|
42
|
+
*
|
|
43
|
+
* Zero values are meaningful or the type refuses them: this is the second.
|
|
44
|
+
*/
|
|
45
|
+
export type PopoverProps = PopoverBaseProps & ({
|
|
46
|
+
role?: 'dialog' | undefined;
|
|
47
|
+
/** Names the panel, and is what a screen reader announces when it opens. */
|
|
48
|
+
label: string;
|
|
49
|
+
} | {
|
|
50
|
+
role: 'menu' | 'listbox' | 'none';
|
|
51
|
+
/** Names the panel. Optional here: the items inside carry the meaning. */
|
|
52
|
+
label?: string | undefined;
|
|
53
|
+
});
|
|
54
|
+
/** Why the panel opened or closed. */
|
|
55
|
+
export type PopoverReason = DismissReason | 'trigger' | 'content' | 'anchor-gone';
|
|
56
|
+
/**
|
|
57
|
+
* An anchored floating panel: a filter editor, a sort menu, a date grid, a
|
|
58
|
+
* select's list.
|
|
59
|
+
*
|
|
60
|
+
* WHAT CHANGED, AND WHY. It used to add its own `keydown` and `mousedown`
|
|
61
|
+
* listeners to the document, so a panel inside a Modal closed the Modal with
|
|
62
|
+
* it on one Escape, and a panel hosting another panel needed a
|
|
63
|
+
* `stopPropagation` on `mousedown` to stop the outer one closing. Both are
|
|
64
|
+
* gone: it is a popup on the shared layer stack, which dismisses the TOPMOST
|
|
65
|
+
* surface and nothing beneath it.
|
|
66
|
+
*
|
|
67
|
+
* It also used to force `role="menu"` on every panel, which told a screen
|
|
68
|
+
* reader that a filter form was a menu of commands and that its inputs were
|
|
69
|
+
* menu items, and to portal to `document.body`, where a fullscreen container
|
|
70
|
+
* does not paint it at all.
|
|
71
|
+
*
|
|
72
|
+
* THE RULES IT KEEPS NOW.
|
|
73
|
+
*
|
|
74
|
+
* - PLACED BY ARITHMETIC, inside the bounds of the layer it renders into:
|
|
75
|
+
* below the anchor and aligned to its start by default, flipped when there
|
|
76
|
+
* is not room, and slid back inside an edge it opened near.
|
|
77
|
+
* - HIDDEN UNTIL PLACED. A panel drawn at the layer's corner for one frame is
|
|
78
|
+
* a flash, and a browser refuses focus to a hidden element, so focus moves
|
|
79
|
+
* in only once it has somewhere to be.
|
|
80
|
+
* - IT FOLLOWS ITS ANCHOR through a pan, a scroll and a resize, and CLOSES
|
|
81
|
+
* when the anchor is carried out of the bounds: a panel for something nobody
|
|
82
|
+
* can see is a panel for nothing.
|
|
83
|
+
* - WHAT HAPPENS IN THE PANEL STAYS IN THE PANEL. A portal carries React
|
|
84
|
+
* events up the COMPONENT tree rather than the document one, so without this
|
|
85
|
+
* the Enter that presses a button inside would also reach the row the panel
|
|
86
|
+
* was opened from. Escape and Tab still travel, because the layer stack acts
|
|
87
|
+
* on them at the document, and so does a chord with Control, Command or Alt,
|
|
88
|
+
* which is an application shortcut rather than a key of the panel's.
|
|
89
|
+
*/
|
|
90
|
+
export declare function Popover({ trigger, children, align, side, width, role, label, className, open: controlled, defaultOpen, onOpenChange, }: PopoverProps): import("react/jsx-runtime").JSX.Element;
|
|
91
|
+
export {};
|