@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,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The rail's navigation: groups of rows, one of which says where the reader is.
|
|
3
|
+
*
|
|
4
|
+
* THE ROW THE READER IS ON IS THE ONE PLACE THE ACCENT APPEARS IN THE CHROME,
|
|
5
|
+
* and it takes the accent twice over: the accent's soft tint as its ground,
|
|
6
|
+
* and the accent ink for its label and its glyph. Position AND hue, so the row
|
|
7
|
+
* is found at a glance by a reader who sees the hue and by one who does not.
|
|
8
|
+
* `aria-current="page"` says the same thing to a screen reader, and the style
|
|
9
|
+
* is drawn FROM that attribute, so the two cannot come apart. The stylesheet
|
|
10
|
+
* carries why this replaced a one-pixel accent bar outside the row's edge.
|
|
11
|
+
*
|
|
12
|
+
* THE LINK ELEMENT BELONGS TO THE APPLICATION (`renderLink`). A router's own
|
|
13
|
+
* link is what carries a client navigation and a leave guard; a plain anchor is
|
|
14
|
+
* what carries a middle click into a new tab. Neither is right everywhere, so
|
|
15
|
+
* neither is built in: the engine keeps plain anchors and the console passes
|
|
16
|
+
* its router's NavLink.
|
|
17
|
+
*/
|
|
18
|
+
import { type MouseEventHandler, type ReactNode } from 'react';
|
|
19
|
+
export interface SidebarNavProps {
|
|
20
|
+
/**
|
|
21
|
+
* Names the navigation region. A page with two of them ("Sections" and
|
|
22
|
+
* "This company") needs both named, or a screen reader offers a reader two
|
|
23
|
+
* landmarks both called "navigation".
|
|
24
|
+
*/
|
|
25
|
+
label: string;
|
|
26
|
+
className?: string | undefined;
|
|
27
|
+
children?: ReactNode;
|
|
28
|
+
}
|
|
29
|
+
export interface NavGroupProps {
|
|
30
|
+
/**
|
|
31
|
+
* The group's heading. Without one the rows are simply a run of rows, and an
|
|
32
|
+
* EMPTY one is without one: a rail whose first run has no name spells that
|
|
33
|
+
* as `""`, and a heading box with no word in it is sixteen pixels of the
|
|
34
|
+
* rail spent on nothing.
|
|
35
|
+
*/
|
|
36
|
+
label?: ReactNode;
|
|
37
|
+
className?: string | undefined;
|
|
38
|
+
children?: ReactNode;
|
|
39
|
+
}
|
|
40
|
+
/** What a caller is handed when it draws the row's element itself. */
|
|
41
|
+
export interface NavLinkProps {
|
|
42
|
+
className: string;
|
|
43
|
+
children: ReactNode;
|
|
44
|
+
href?: string | undefined;
|
|
45
|
+
'aria-current'?: 'page' | undefined;
|
|
46
|
+
onClick?: MouseEventHandler<HTMLElement> | undefined;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* How loudly a row's badge is drawn.
|
|
50
|
+
*
|
|
51
|
+
* `neutral` is a quiet figure at the end of the row, in the row's own ink.
|
|
52
|
+
* `attention` is the one badge in the chrome allowed a status hue: a count of
|
|
53
|
+
* what is waiting on a person is the one thing that should pull the eye out of
|
|
54
|
+
* whatever screen the reader is on. It is a tint behind a word rather than a
|
|
55
|
+
* word in a hue, so it still reads to somebody who cannot separate the hue.
|
|
56
|
+
*
|
|
57
|
+
* A TONE RATHER THAN A COMPONENT THE CALLER PASSES IN, because the tint has to
|
|
58
|
+
* clear its floor on the ground the ROW has, which is the accent tint on the
|
|
59
|
+
* reader's own row. That is a fact about the rail, measured in the rail's own
|
|
60
|
+
* stylesheet, and not something a call site can be asked to know.
|
|
61
|
+
*/
|
|
62
|
+
export type NavBadgeTone = 'neutral' | 'attention';
|
|
63
|
+
export interface NavItemProps {
|
|
64
|
+
/** What the row is called. */
|
|
65
|
+
label: ReactNode;
|
|
66
|
+
/** The row's glyph. Decoration: the label beside it carries the meaning. */
|
|
67
|
+
icon?: ReactNode;
|
|
68
|
+
/**
|
|
69
|
+
* A count or a state at the end of the row. The slot draws it: whatever is
|
|
70
|
+
* passed contributes its text and the name a screen reader reads after the
|
|
71
|
+
* row's own, so a `<Count>` here is a figure rather than a second pill.
|
|
72
|
+
*/
|
|
73
|
+
badge?: ReactNode;
|
|
74
|
+
/** How loudly. Neutral unless this row is what needs a person. */
|
|
75
|
+
badgeTone?: NavBadgeTone | undefined;
|
|
76
|
+
href?: string | undefined;
|
|
77
|
+
/** Whether this row is the screen the reader is on. */
|
|
78
|
+
current?: boolean | undefined;
|
|
79
|
+
/**
|
|
80
|
+
* Unavailable, and why.
|
|
81
|
+
*
|
|
82
|
+
* NOT `disabled`: a row taken out of the tab order teaches a keyboard reader
|
|
83
|
+
* that the destination does not exist, when what is true is that it is not
|
|
84
|
+
* reachable yet. It stays focusable, says `aria-disabled`, and the reason is
|
|
85
|
+
* read after its name.
|
|
86
|
+
*/
|
|
87
|
+
disabledReason?: string | undefined;
|
|
88
|
+
/** Draws the row's element, for a router that owns navigation. */
|
|
89
|
+
renderLink?: ((props: NavLinkProps) => ReactNode) | undefined;
|
|
90
|
+
onClick?: MouseEventHandler<HTMLElement> | undefined;
|
|
91
|
+
/** Nested rows. They expand and collapse under this one. */
|
|
92
|
+
children?: ReactNode;
|
|
93
|
+
expanded?: boolean | undefined;
|
|
94
|
+
defaultExpanded?: boolean | undefined;
|
|
95
|
+
onExpandedChange?: ((expanded: boolean) => void) | undefined;
|
|
96
|
+
/** Names the control that expands the nested rows. */
|
|
97
|
+
expandLabel?: string | undefined;
|
|
98
|
+
className?: string | undefined;
|
|
99
|
+
}
|
|
100
|
+
/** The navigation region in the rail. */
|
|
101
|
+
export declare function SidebarNav({ label, className, children }: SidebarNavProps): import("react/jsx-runtime").JSX.Element;
|
|
102
|
+
export declare namespace SidebarNav {
|
|
103
|
+
var Group: typeof NavGroup;
|
|
104
|
+
var Item: typeof NavItem;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* A labelled run of rows: "Company", "Work", "Operations".
|
|
108
|
+
*
|
|
109
|
+
* A HEADING WITH NO WORD IN IT IS NOT A HEADING. `""`, `null` and `false` are
|
|
110
|
+
* all how a caller spells a run that has no name (the engine's first run,
|
|
111
|
+
* above "Company", is one), and each has to reach the same place: an empty
|
|
112
|
+
* `<div>` here still carries the label's own padding, which put sixteen blank
|
|
113
|
+
* pixels at the top of the rail and named a group nothing could read.
|
|
114
|
+
*/
|
|
115
|
+
export declare function NavGroup({ label, className, children }: NavGroupProps): import("react/jsx-runtime").JSX.Element;
|
|
116
|
+
/** One row: a glyph, a label, an optional badge, and optionally rows beneath. */
|
|
117
|
+
export declare function NavItem({ label, icon, badge, badgeTone, href, current, disabledReason, renderLink, onClick, children, expanded, defaultExpanded, onExpandedChange, expandLabel, className, }: NavItemProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The rail's navigation.
|
|
3
|
+
*
|
|
4
|
+
* ONE VERTICAL LINE. The rail pads by --size-nav-gutter and each row pads by
|
|
5
|
+
* --size-nav-row-pad, so the mark, the group labels and every row's text start
|
|
6
|
+
* on the same line: shrink the gutter and grow the pad by the same step and
|
|
7
|
+
* nothing moves. That is why the row's own background takes the full width the
|
|
8
|
+
* gutter leaves it, rather than each row carrying a horizontal margin of its
|
|
9
|
+
* own.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
.crewlet-sidebar-nav {
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
gap: var(--spacing-1);
|
|
16
|
+
min-width: 0;
|
|
17
|
+
padding: var(--spacing-2) var(--size-nav-gutter) var(--spacing-4);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/*
|
|
21
|
+
* THE ROWS INSIDE A GROUP ARE FLUSH. A group is a run of destinations read as
|
|
22
|
+
* one block, and the space between two of them is already the row's own height
|
|
23
|
+
* against a 13px line; a step on top of that spends four pixels a rail cannot
|
|
24
|
+
* afford fifteen times over. It is what the group LABEL's bottom pad is for,
|
|
25
|
+
* and the rail's own gap between groups is what separates one run from the
|
|
26
|
+
* next.
|
|
27
|
+
*
|
|
28
|
+
* Measured rather than chosen: at one step per row the rail stood 823px in a
|
|
29
|
+
* 755px scroller, so the last two destinations in the product were reachable
|
|
30
|
+
* only by scrolling the rail. Flush it is 746px and every row is on screen.
|
|
31
|
+
*/
|
|
32
|
+
.crewlet-nav-group {
|
|
33
|
+
display: flex;
|
|
34
|
+
flex-direction: column;
|
|
35
|
+
gap: var(--spacing-0);
|
|
36
|
+
min-width: 0;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.crewlet-nav-group__label {
|
|
40
|
+
padding: var(--spacing-3) var(--size-nav-row-pad) var(--spacing-1);
|
|
41
|
+
font-family: var(--font-family-sans);
|
|
42
|
+
font-size: var(--font-size-2xs);
|
|
43
|
+
font-weight: var(--font-weight-medium);
|
|
44
|
+
/* The rail's own micro-label register, which is one step tighter than the
|
|
45
|
+
wider step an Eyebrow takes: a group name here sits four pixels above the
|
|
46
|
+
row it names, and at the wider step "OPERATIONS" was visibly broader than
|
|
47
|
+
the rows beneath it rather than quieter than them. */
|
|
48
|
+
letter-spacing: var(--font-letter-spacing-wide);
|
|
49
|
+
text-transform: uppercase;
|
|
50
|
+
/* The 4.5:1 step: a group name is a fact a reader has to read, not
|
|
51
|
+
decoration. */
|
|
52
|
+
color: var(--color-text-tertiary);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.crewlet-nav-item {
|
|
56
|
+
min-width: 0;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.crewlet-nav-item__head {
|
|
60
|
+
display: flex;
|
|
61
|
+
align-items: center;
|
|
62
|
+
gap: var(--spacing-1);
|
|
63
|
+
min-width: 0;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.crewlet-nav-item__row {
|
|
67
|
+
display: flex;
|
|
68
|
+
align-items: center;
|
|
69
|
+
gap: var(--spacing-2);
|
|
70
|
+
flex: 1 1 auto;
|
|
71
|
+
min-width: 0;
|
|
72
|
+
width: 100%;
|
|
73
|
+
min-height: var(--size-row-md);
|
|
74
|
+
padding: 0 var(--size-nav-row-pad);
|
|
75
|
+
border: none;
|
|
76
|
+
/* The chrome's radius, not a card's. A 12px corner on a 36px row leaves the
|
|
77
|
+
tint reading as a lozenge floating in the gutter rather than as a band the
|
|
78
|
+
width of the rail. */
|
|
79
|
+
border-radius: var(--radius-md);
|
|
80
|
+
background: transparent;
|
|
81
|
+
/*
|
|
82
|
+
* THE RAIL READS AT FULL INK. A destination is not secondary text: a rail of
|
|
83
|
+
* fifteen rows in the quiet step is a column of grey a reader has to hunt
|
|
84
|
+
* through, and the step down bought nothing the row's own tint does not
|
|
85
|
+
* already say. It is also the darker of the two on light and the lighter on
|
|
86
|
+
* dark, so the contrast on every ground the row can have goes up rather than
|
|
87
|
+
* down.
|
|
88
|
+
*
|
|
89
|
+
* WHAT CARRIES HOVER IS THEREFORE THE TINT, not an ink step: there is no
|
|
90
|
+
* step left above this one. The glyph is the second half of it, lifting from
|
|
91
|
+
* the decoration ramp to the row's own ink.
|
|
92
|
+
*/
|
|
93
|
+
color: var(--color-text-primary);
|
|
94
|
+
font-family: var(--font-family-sans);
|
|
95
|
+
/* THE CHROME IS NOT BODY TEXT. A rail row names a destination; it is read at
|
|
96
|
+
a glance and never read through, so it takes the compact step in the
|
|
97
|
+
medium weight, which is what keeps a one-word row legible at 13px. */
|
|
98
|
+
font-size: var(--font-size-compact);
|
|
99
|
+
font-weight: var(--font-weight-medium);
|
|
100
|
+
letter-spacing: var(--font-letter-spacing-snug);
|
|
101
|
+
line-height: var(--font-line-height-tight);
|
|
102
|
+
text-align: left;
|
|
103
|
+
text-decoration: none;
|
|
104
|
+
cursor: pointer;
|
|
105
|
+
transition:
|
|
106
|
+
background var(--motion-duration-fast) var(--motion-easing-default),
|
|
107
|
+
color var(--motion-duration-fast) var(--motion-easing-default);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.crewlet-nav-item__row:hover {
|
|
111
|
+
background: var(--color-surface-hover);
|
|
112
|
+
text-decoration: none;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.crewlet-nav-item__row:focus-visible {
|
|
116
|
+
outline: 2px solid var(--color-focus);
|
|
117
|
+
/* Inside the row's own box: the rail is a clipping scroller, so an outset
|
|
118
|
+
ring on the first or last row is cut off by it. */
|
|
119
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/*
|
|
123
|
+
* WHERE THE READER IS: the accent's own soft tint, with the label and the
|
|
124
|
+
* glyph in the accent ink. That is the whole job of an accent in a chrome, and
|
|
125
|
+
* the rail is the one place in the chrome it appears.
|
|
126
|
+
*
|
|
127
|
+
* It was a neutral lift with the accent as a one-pixel bar outside the row's
|
|
128
|
+
* left edge, on the reading that accent text in a rail competes with the
|
|
129
|
+
* status hues beside it and cannot be separated from the row above by a reader
|
|
130
|
+
* with a colour vision deficiency. Neither holds here. Nothing in this rail
|
|
131
|
+
* carries a status hue except the attention count below, which is a tint
|
|
132
|
+
* BEHIND a word rather than a word in a hue; and the tint is what answers the
|
|
133
|
+
* second objection, because the row still lifts off its ground by more than a
|
|
134
|
+
* hovered one does whether or not the hue is seen at all (@crewlethq/tokens
|
|
135
|
+
* measures exactly that, and measures this ink on this composite: 5.76:1 in
|
|
136
|
+
* light, 5.96:1 in dark).
|
|
137
|
+
*
|
|
138
|
+
* What the bar cost was that one pixel of hue was the entire signal, at the
|
|
139
|
+
* one moment a reader is scanning the rail to find out where they are.
|
|
140
|
+
*
|
|
141
|
+
* Drawn from aria-current, so the picture and what a screen reader is told
|
|
142
|
+
* cannot come apart. It is declared after :hover deliberately: both selectors
|
|
143
|
+
* weigh the same, a row shows the current tint or the hover overlay and never
|
|
144
|
+
* both, and later is what decides which.
|
|
145
|
+
*/
|
|
146
|
+
.crewlet-nav-item__row[aria-current='page'] {
|
|
147
|
+
background: var(--color-brand-accent-soft);
|
|
148
|
+
color: var(--color-brand-accent-ink);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.crewlet-nav-item__row[aria-disabled='true'] {
|
|
152
|
+
cursor: not-allowed;
|
|
153
|
+
opacity: 0.55;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.crewlet-nav-item__row[aria-disabled='true']:hover {
|
|
157
|
+
background: transparent;
|
|
158
|
+
color: var(--color-text-primary);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/*
|
|
162
|
+
* THE GLYPH FOLLOWS THE LABEL. At rest it is quieter than the word beside it
|
|
163
|
+
* and takes the decoration step; on a hovered row and on the reader's own it
|
|
164
|
+
* takes the row's own colour, which on the current row is the accent ink.
|
|
165
|
+
*
|
|
166
|
+
* ONE inherit rather than a second ramp, because a second ramp is how a row
|
|
167
|
+
* comes to paint its label and its glyph two different answers to "where am
|
|
168
|
+
* I". The colour is set on the DRAWING rather than on the box around it, which
|
|
169
|
+
* is what says the decoration step is being spent on a glyph and not on text:
|
|
170
|
+
* the package's variable check holds that rule, and it is the rule the step
|
|
171
|
+
* exists for.
|
|
172
|
+
*/
|
|
173
|
+
.crewlet-nav-item__icon {
|
|
174
|
+
display: inline-flex;
|
|
175
|
+
align-items: center;
|
|
176
|
+
justify-content: center;
|
|
177
|
+
flex: none;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.crewlet-nav-item__icon svg {
|
|
181
|
+
color: var(--color-text-muted);
|
|
182
|
+
transition: color var(--motion-duration-fast) var(--motion-easing-default);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.crewlet-nav-item__row:hover .crewlet-nav-item__icon svg,
|
|
186
|
+
.crewlet-nav-item__row[aria-current='page'] .crewlet-nav-item__icon svg {
|
|
187
|
+
color: inherit;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.crewlet-nav-item__label {
|
|
191
|
+
flex: 1 1 auto;
|
|
192
|
+
min-width: 0;
|
|
193
|
+
overflow: hidden;
|
|
194
|
+
text-overflow: ellipsis;
|
|
195
|
+
white-space: nowrap;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.crewlet-nav-item__badge {
|
|
199
|
+
display: inline-flex;
|
|
200
|
+
align-items: center;
|
|
201
|
+
flex: none;
|
|
202
|
+
margin-left: auto;
|
|
203
|
+
font-size: var(--font-size-2xs);
|
|
204
|
+
font-variant-numeric: tabular-nums;
|
|
205
|
+
color: var(--color-text-tertiary);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/*
|
|
209
|
+
* THE SLOT IS WHAT PAINTS. A caller hands in the figure and the name a screen
|
|
210
|
+
* reader reads after the row's own ("3 things waiting on somebody"); the rail
|
|
211
|
+
* decides whether that is a quiet number at the end of the row or the one
|
|
212
|
+
* thing on the screen that should pull the eye. So whatever arrives
|
|
213
|
+
* contributes its text and its accessible name and nothing else, which is why
|
|
214
|
+
* a <Count> here draws its own text rather than a second pill inside this one.
|
|
215
|
+
*/
|
|
216
|
+
.crewlet-nav-item__badge > * {
|
|
217
|
+
padding: 0;
|
|
218
|
+
border: none;
|
|
219
|
+
border-radius: 0;
|
|
220
|
+
background: transparent;
|
|
221
|
+
color: inherit;
|
|
222
|
+
min-width: 0;
|
|
223
|
+
font-size: inherit;
|
|
224
|
+
font-weight: inherit;
|
|
225
|
+
/* Not the `font` shorthand, which would reset font-variant and take the
|
|
226
|
+
tabular figures with it. */
|
|
227
|
+
font-variant-numeric: inherit;
|
|
228
|
+
line-height: inherit;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/* A quiet badge takes the row's ink, the current row's accent included. The
|
|
232
|
+
attention badge keeps its own, which is the whole point of it, and the
|
|
233
|
+
:not() is what says so: both selectors would otherwise weigh the same and a
|
|
234
|
+
tone would be decided by which rule a later edit happened to move. */
|
|
235
|
+
.crewlet-nav-item__row[aria-current='page'] .crewlet-nav-item__badge:not(.crewlet-nav-item__badge--attention) {
|
|
236
|
+
color: inherit;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/*
|
|
240
|
+
* THE ONE BADGE IN THE CHROME ALLOWED A STATUS HUE. A count of what is waiting
|
|
241
|
+
* on a person is the one thing that should pull the eye out of whatever screen
|
|
242
|
+
* the reader is on, and it stays a tint BEHIND a word rather than a word in a
|
|
243
|
+
* hue, so it reads to somebody who cannot separate the hue at all.
|
|
244
|
+
*
|
|
245
|
+
* Measured on every ground a row can have, the reader's own row included,
|
|
246
|
+
* which is a warning tint on the accent tint on the rail: @crewlethq/tokens'
|
|
247
|
+
* palette suite has that composite by name, at 5.08:1 in light and 9.75:1 in
|
|
248
|
+
* dark.
|
|
249
|
+
*/
|
|
250
|
+
.crewlet-nav-item__badge--attention {
|
|
251
|
+
padding: 0 var(--spacing-2);
|
|
252
|
+
border-radius: var(--radius-pill);
|
|
253
|
+
background: var(--color-feedback-warning-soft);
|
|
254
|
+
color: var(--color-feedback-warning-ink);
|
|
255
|
+
font-weight: var(--font-weight-semibold);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.crewlet-nav-item__toggle {
|
|
259
|
+
display: inline-flex;
|
|
260
|
+
align-items: center;
|
|
261
|
+
justify-content: center;
|
|
262
|
+
flex: none;
|
|
263
|
+
width: var(--size-control-sm);
|
|
264
|
+
height: var(--size-control-sm);
|
|
265
|
+
padding: 0;
|
|
266
|
+
border: none;
|
|
267
|
+
border-radius: var(--radius-sm);
|
|
268
|
+
background: transparent;
|
|
269
|
+
color: var(--color-text-tertiary);
|
|
270
|
+
cursor: pointer;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
.crewlet-nav-item__toggle:hover {
|
|
274
|
+
background: var(--color-surface-hover);
|
|
275
|
+
color: var(--color-text-primary);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
.crewlet-nav-item__toggle:focus-visible {
|
|
279
|
+
outline: 2px solid var(--color-focus);
|
|
280
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
.crewlet-nav-item__chevron {
|
|
284
|
+
display: inline-flex;
|
|
285
|
+
transition: transform var(--motion-duration-fast) var(--motion-easing-default);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
.crewlet-nav-item__chevron--open {
|
|
289
|
+
transform: rotate(180deg);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/*
|
|
293
|
+
* Nested rows carry an indent guide rather than more padding, because a run of
|
|
294
|
+
* indents with no line is a hierarchy a reader has to measure by eye. The
|
|
295
|
+
* guide takes the accent on the path the reader is on, which is the same
|
|
296
|
+
* signal the top-level rail gives.
|
|
297
|
+
*/
|
|
298
|
+
.crewlet-nav-item__children {
|
|
299
|
+
display: flex;
|
|
300
|
+
flex-direction: column;
|
|
301
|
+
gap: var(--spacing-1);
|
|
302
|
+
margin-left: var(--size-nav-row-pad);
|
|
303
|
+
padding-left: var(--spacing-2);
|
|
304
|
+
border-left: 1px solid var(--color-border-default);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/* No type step of its own any more: every row in the rail reads at the compact
|
|
308
|
+
step now, and the indent guide is what says a row is nested. */
|
|
309
|
+
.crewlet-nav-item__children:has(.crewlet-nav-item__row[aria-current='page']) {
|
|
310
|
+
border-left-color: var(--color-brand-accent);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
@media (prefers-reduced-motion: reduce) {
|
|
314
|
+
.crewlet-nav-item__row,
|
|
315
|
+
.crewlet-nav-item__icon svg,
|
|
316
|
+
.crewlet-nav-item__chevron {
|
|
317
|
+
transition: none;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { CSSProperties } from 'react';
|
|
2
|
+
export type SkeletonVariant = 'box' | 'text' | 'card' | 'grid' | 'list' | 'table' | 'info-grid' | 'pricing-card';
|
|
3
|
+
export interface SkeletonProps {
|
|
4
|
+
variant?: SkeletonVariant;
|
|
5
|
+
/** Row count for `text`, `grid`, `list`, `table` and `info-grid`. */
|
|
6
|
+
rows?: number;
|
|
7
|
+
/**
|
|
8
|
+
* How tall each line of the `text` variant is. A number of px, or a CSS
|
|
9
|
+
* length. Unset, the stylesheet's own step, which is a line of body text.
|
|
10
|
+
*/
|
|
11
|
+
rowHeight?: number | string;
|
|
12
|
+
/** Column count for `table`, and for `grid` and `info-grid` (1 to 4). */
|
|
13
|
+
columns?: number;
|
|
14
|
+
/** Card count for `pricing-card`. */
|
|
15
|
+
count?: number;
|
|
16
|
+
/**
|
|
17
|
+
* What is loading, said once for a reader who cannot see the placeholder.
|
|
18
|
+
* Rendered in a polite status region beside it: "Loading seats".
|
|
19
|
+
*
|
|
20
|
+
* THE `aria-busy` BELONGS TO THE REGION THAT IS LOADING, not to this
|
|
21
|
+
* element. A placeholder is the thing that is there INSTEAD of the content,
|
|
22
|
+
* so marking it busy says the placeholder is loading; the panel or the list
|
|
23
|
+
* whose content has not arrived is what a reader is waiting on, and that is
|
|
24
|
+
* the element its caller puts `aria-busy` on.
|
|
25
|
+
*/
|
|
26
|
+
label?: string;
|
|
27
|
+
/** Applied to the root element of every variant. */
|
|
28
|
+
className?: string;
|
|
29
|
+
/** Applied to the root element of every variant. */
|
|
30
|
+
style?: CSSProperties;
|
|
31
|
+
width?: number | string;
|
|
32
|
+
height?: number | string;
|
|
33
|
+
borderRadius?: number;
|
|
34
|
+
marginTop?: number;
|
|
35
|
+
marginBottom?: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Loading placeholder.
|
|
39
|
+
*
|
|
40
|
+
* ONLY WHERE CONTENT OF KNOWN SHAPE IS COMING. A spinner in place of a screen
|
|
41
|
+
* tells a reader nothing about what to expect; a placeholder that matches the
|
|
42
|
+
* shape of what will arrive tells them how much of it there is and stops the
|
|
43
|
+
* page moving when it does.
|
|
44
|
+
*
|
|
45
|
+
* The drawing is decoration and is hidden. `label` is what a reader who cannot
|
|
46
|
+
* see it is told, said once in a polite region; the `aria-busy` that goes with
|
|
47
|
+
* it belongs on the region whose content has not arrived, which is the
|
|
48
|
+
* caller's own element rather than this one.
|
|
49
|
+
*/
|
|
50
|
+
export declare const Skeleton: ({ label, ...placeholder }: SkeletonProps) => import("react/jsx-runtime").JSX.Element;
|