@crewlethq/ui 0.2.0 → 0.4.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 +164 -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-RLR254LD.css +450 -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 +119 -0
- package/dist/CodeBlock/index.d.ts +3 -0
- package/dist/CodeBlock/index.js +7 -0
- package/dist/CodeBlock-GYNJ2HI6.css +188 -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 +64 -0
- package/dist/Copyable/Copyable.d.ts +42 -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 +100 -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 +126 -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 +101 -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 +153 -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 +67 -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-2HQR4U4D.js +143 -0
- package/dist/chunk-2PRH365R.js +74 -0
- package/dist/chunk-2ZQMA2WB.js +57 -0
- package/dist/chunk-34VGEDVV.js +907 -0
- package/dist/chunk-3CZ7XAVY.js +139 -0
- package/dist/chunk-3EYF6HKB.js +135 -0
- package/dist/chunk-3QRYCPXQ.js +116 -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-5KPQ6D7N.js +54 -0
- package/dist/chunk-5SDBMKUO.js +297 -0
- package/dist/chunk-5VNUYO76.js +62 -0
- package/dist/chunk-5WS6L6FA.js +114 -0
- package/dist/chunk-6ZFVFA56.js +108 -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-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-D35VTV2Z.js +106 -0
- package/dist/chunk-DD5BBGBE.js +162 -0
- package/dist/chunk-EN6K2IFA.js +256 -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-GTOUGQQK.js +147 -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-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-LWKJQTOM.js +77 -0
- package/dist/chunk-MNAXYY3R.js +215 -0
- package/dist/chunk-NDCATSW7.js +229 -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-OFHBK7RI.js +498 -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-QEUY3A5P.js +186 -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-UG46QBLT.js +325 -0
- package/dist/chunk-UOGSZKLT.js +134 -0
- package/dist/chunk-V2XMNLMS.js +52 -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-WOYYD2YR.js +823 -0
- package/dist/chunk-WQX73TWF.js +1652 -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-YODNNSZL.js +63 -0
- package/dist/chunk-ZCR6YGQ4.js +1 -0
- package/dist/chunk-ZFATEERP.js +144 -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 +14898 -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 +82 -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,421 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Skeleton, the loading placeholder, in eight shapes:
|
|
3
|
+
* box One large rectangle with a sweeping glow, for a hero area.
|
|
4
|
+
* text Lines of text, with a row count and a row height.
|
|
5
|
+
* card One card: a title and two lines.
|
|
6
|
+
* grid An N by M grid of those cards.
|
|
7
|
+
* list Avatar and two-line rows.
|
|
8
|
+
* table A header and rows.
|
|
9
|
+
* info-grid Label and value pairs with row separators.
|
|
10
|
+
* pricing-card A row of cards laid out like PricingCard.Grid.
|
|
11
|
+
*
|
|
12
|
+
* Every class is namespaced under .crewlet-skeleton, so a placeholder never
|
|
13
|
+
* matches an application's own `.skeleton-line`.
|
|
14
|
+
*
|
|
15
|
+
* ITS GREY IS THE INSET OVERLAY, not a surface step. An overlay darkens
|
|
16
|
+
* whatever it is drawn on, so one value works on the page, on a card and
|
|
17
|
+
* inside a dialog; the elevated step it used to spell is invisible on an
|
|
18
|
+
* elevated surface, which is exactly where most of these sit.
|
|
19
|
+
*
|
|
20
|
+
* THE GLOW HAS ONE COLOUR, where it had five. A placeholder stands in for
|
|
21
|
+
* content that has not arrived, and a blue one and a red one say nothing
|
|
22
|
+
* different about that; each of the five was also a raw rgba outside the
|
|
23
|
+
* palette. It is the hover overlay sweeping across the inset one.
|
|
24
|
+
*
|
|
25
|
+
* EVERY BLOCK SWEEPS, where the small ones used to pulse. The engine draws one
|
|
26
|
+
* skeleton and it is a band of light travelling left to right; a block that
|
|
27
|
+
* fades in place beside one that sweeps reads as two different things loading
|
|
28
|
+
* in two different ways. The sweep is also the honest shape: it moves along
|
|
29
|
+
* the row the way the text will arrive, where a fade says only that something
|
|
30
|
+
* is happening somewhere.
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
/* ── The sweep, shared by every shimmer block ───────────────────── */
|
|
34
|
+
@keyframes crewlet-skeleton-sweep {
|
|
35
|
+
from {
|
|
36
|
+
background-position: 100% 50%;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
to {
|
|
40
|
+
background-position: 0 50%;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/*
|
|
45
|
+
* The gradient is four times the box, so the lit band crosses it rather than
|
|
46
|
+
* standing still inside it. The two stops are the inset overlay and the hover
|
|
47
|
+
* one, which composite onto whatever the block is drawn on: one value works on
|
|
48
|
+
* the page, on a card and inside a dialog.
|
|
49
|
+
*/
|
|
50
|
+
.crewlet-skeleton .crewlet-skeleton__line,
|
|
51
|
+
.crewlet-skeleton .crewlet-skeleton__avatar,
|
|
52
|
+
.crewlet-skeleton .crewlet-skeleton__circle,
|
|
53
|
+
.crewlet-skeleton .crewlet-skeleton__button {
|
|
54
|
+
background: linear-gradient(
|
|
55
|
+
90deg,
|
|
56
|
+
var(--color-surface-inset) 25%,
|
|
57
|
+
var(--color-surface-hover) 37%,
|
|
58
|
+
var(--color-surface-inset) 63%
|
|
59
|
+
);
|
|
60
|
+
background-size: 400% 100%;
|
|
61
|
+
/* Five of the slow step: 1.5s, which is the engine's own sweep to within a
|
|
62
|
+
tenth of a second and the nearest the scale comes to it. */
|
|
63
|
+
animation: crewlet-skeleton-sweep calc(var(--motion-duration-slow) * 5) var(--motion-easing-in-out) infinite;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* ── Primitives: line, avatar, circle, button ───────────────────── */
|
|
67
|
+
.crewlet-skeleton__line {
|
|
68
|
+
height: 12px;
|
|
69
|
+
border-radius: var(--radius-xs);
|
|
70
|
+
margin-bottom: var(--spacing-2);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.crewlet-skeleton__line:last-child {
|
|
74
|
+
margin-bottom: 0;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.crewlet-skeleton__line--title { height: 16px; width: 60%; margin-bottom: var(--spacing-3); }
|
|
78
|
+
.crewlet-skeleton__line--text { height: 12px; width: 100%; }
|
|
79
|
+
.crewlet-skeleton__line--short { width: 70%; }
|
|
80
|
+
.crewlet-skeleton__line--label { height: 13px; width: 40%; margin-bottom: var(--spacing-2); }
|
|
81
|
+
.crewlet-skeleton__line--value { height: 14px; width: 80%; }
|
|
82
|
+
|
|
83
|
+
.crewlet-skeleton__avatar {
|
|
84
|
+
width: 40px;
|
|
85
|
+
height: 40px;
|
|
86
|
+
border-radius: var(--radius-circle);
|
|
87
|
+
flex-shrink: 0;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.crewlet-skeleton__circle {
|
|
91
|
+
width: 24px;
|
|
92
|
+
height: 24px;
|
|
93
|
+
border-radius: var(--radius-circle);
|
|
94
|
+
flex-shrink: 0;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.crewlet-skeleton__circle--small {
|
|
98
|
+
width: 16px;
|
|
99
|
+
height: 16px;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.crewlet-skeleton__button {
|
|
103
|
+
width: 100%;
|
|
104
|
+
height: 36px;
|
|
105
|
+
border-radius: var(--radius-md);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/* ── card / grid / list containers ──────────────────────────────── */
|
|
109
|
+
.crewlet-skeleton--card {
|
|
110
|
+
background: var(--color-surface-subtle);
|
|
111
|
+
border: 1px solid var(--color-border-default);
|
|
112
|
+
border-radius: var(--radius-lg);
|
|
113
|
+
padding: var(--spacing-6);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/*
|
|
117
|
+
* grid and info-grid read their column count from --crewlet-skeleton-cols,
|
|
118
|
+
* set by the --cols-N modifier the component adds and lowered by the
|
|
119
|
+
* responsive rules at the end of this file.
|
|
120
|
+
*/
|
|
121
|
+
.crewlet-skeleton--cols-1 { --crewlet-skeleton-cols: 1; }
|
|
122
|
+
.crewlet-skeleton--cols-2 { --crewlet-skeleton-cols: 2; }
|
|
123
|
+
.crewlet-skeleton--cols-3 { --crewlet-skeleton-cols: 3; }
|
|
124
|
+
.crewlet-skeleton--cols-4 { --crewlet-skeleton-cols: 4; }
|
|
125
|
+
|
|
126
|
+
.crewlet-skeleton--grid {
|
|
127
|
+
display: grid;
|
|
128
|
+
grid-template-columns: repeat(var(--crewlet-skeleton-cols, 1), 1fr);
|
|
129
|
+
gap: var(--spacing-4);
|
|
130
|
+
width: 100%;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.crewlet-skeleton__card {
|
|
134
|
+
background: var(--color-surface-subtle);
|
|
135
|
+
border: 1px solid var(--color-border-default);
|
|
136
|
+
border-radius: var(--radius-lg);
|
|
137
|
+
padding: var(--spacing-5);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.crewlet-skeleton--list {
|
|
141
|
+
display: flex;
|
|
142
|
+
flex-direction: column;
|
|
143
|
+
gap: var(--spacing-3);
|
|
144
|
+
width: 100%;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.crewlet-skeleton__list-item {
|
|
148
|
+
display: flex;
|
|
149
|
+
align-items: center;
|
|
150
|
+
gap: var(--spacing-4);
|
|
151
|
+
padding: var(--spacing-3);
|
|
152
|
+
background: var(--color-surface-subtle);
|
|
153
|
+
border: 1px solid var(--color-border-default);
|
|
154
|
+
border-radius: var(--radius-md);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.crewlet-skeleton__list-content {
|
|
158
|
+
flex: 1;
|
|
159
|
+
min-width: 0;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/* ── table ──────────────────────────────────────────────────────── */
|
|
163
|
+
.crewlet-skeleton--table {
|
|
164
|
+
width: 100%;
|
|
165
|
+
position: relative;
|
|
166
|
+
overflow-x: auto;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.crewlet-skeleton__table {
|
|
170
|
+
width: 100%;
|
|
171
|
+
border-collapse: collapse;
|
|
172
|
+
background: transparent;
|
|
173
|
+
display: table;
|
|
174
|
+
table-layout: auto;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.crewlet-skeleton__table thead {
|
|
178
|
+
border-bottom: 1px solid var(--color-border-default);
|
|
179
|
+
display: table-header-group;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.crewlet-skeleton__table tbody { display: table-row-group; }
|
|
183
|
+
.crewlet-skeleton__table tr { display: table-row; }
|
|
184
|
+
|
|
185
|
+
.crewlet-skeleton__th {
|
|
186
|
+
padding: 2px var(--spacing-4);
|
|
187
|
+
text-align: left;
|
|
188
|
+
position: relative;
|
|
189
|
+
display: table-cell;
|
|
190
|
+
white-space: nowrap;
|
|
191
|
+
vertical-align: middle;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.crewlet-skeleton__th .crewlet-skeleton__line {
|
|
195
|
+
height: 14px;
|
|
196
|
+
width: 60%;
|
|
197
|
+
margin: 0;
|
|
198
|
+
display: inline-block;
|
|
199
|
+
transform: translateY(-4px);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.crewlet-skeleton__th:first-child .crewlet-skeleton__line { width: 70%; }
|
|
203
|
+
.crewlet-skeleton__th:last-child .crewlet-skeleton__line { width: 40%; }
|
|
204
|
+
|
|
205
|
+
.crewlet-skeleton__tr {
|
|
206
|
+
background: var(--color-surface-subtle);
|
|
207
|
+
border-bottom: 1px solid var(--color-border-default);
|
|
208
|
+
display: table-row;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.crewlet-skeleton__td {
|
|
212
|
+
padding: var(--spacing-3) var(--spacing-4);
|
|
213
|
+
display: table-cell;
|
|
214
|
+
text-align: left;
|
|
215
|
+
vertical-align: middle;
|
|
216
|
+
white-space: nowrap;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.crewlet-skeleton__td .crewlet-skeleton__line {
|
|
220
|
+
height: 8px;
|
|
221
|
+
width: auto;
|
|
222
|
+
min-width: 80px;
|
|
223
|
+
margin: 0;
|
|
224
|
+
border-radius: var(--radius-xs);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.crewlet-skeleton__td:first-child .crewlet-skeleton__line { min-width: 200px; }
|
|
228
|
+
.crewlet-skeleton__td:last-child .crewlet-skeleton__line { min-width: 60px; width: 60px; }
|
|
229
|
+
|
|
230
|
+
/* ── info-grid (label and value pairs with row separators) ──────── */
|
|
231
|
+
.crewlet-skeleton--info-grid {
|
|
232
|
+
--crewlet-skeleton-row-gap: var(--spacing-7);
|
|
233
|
+
--crewlet-skeleton-col-gap: var(--spacing-9);
|
|
234
|
+
display: grid;
|
|
235
|
+
grid-template-columns: repeat(var(--crewlet-skeleton-cols, 1), 1fr);
|
|
236
|
+
gap: var(--crewlet-skeleton-row-gap) var(--crewlet-skeleton-col-gap);
|
|
237
|
+
width: 100%;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.crewlet-skeleton__info-item {
|
|
241
|
+
display: flex;
|
|
242
|
+
flex-direction: column;
|
|
243
|
+
gap: var(--spacing-2);
|
|
244
|
+
position: relative;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/*
|
|
248
|
+
* A separator centred in the row gap above the first item of every row after
|
|
249
|
+
* the first, drawn across the whole row: the item's own width times the column
|
|
250
|
+
* count, plus the column gaps between them. The row-start selectors are
|
|
251
|
+
* wrapped in :where() so every rule here shares one specificity and the
|
|
252
|
+
* responsive overrides win by source order.
|
|
253
|
+
*/
|
|
254
|
+
.crewlet-skeleton__info-item::before {
|
|
255
|
+
content: '';
|
|
256
|
+
position: absolute;
|
|
257
|
+
left: 0;
|
|
258
|
+
top: calc(var(--crewlet-skeleton-row-gap) / -2);
|
|
259
|
+
width: calc(
|
|
260
|
+
100% * var(--crewlet-skeleton-cols, 1) + var(--crewlet-skeleton-col-gap) * (var(--crewlet-skeleton-cols, 1) - 1)
|
|
261
|
+
);
|
|
262
|
+
height: 1px;
|
|
263
|
+
background: var(--color-border-default);
|
|
264
|
+
display: none;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
:where(.crewlet-skeleton--cols-1) > .crewlet-skeleton__info-item:where(:nth-child(n + 2))::before,
|
|
268
|
+
:where(.crewlet-skeleton--cols-2) > .crewlet-skeleton__info-item:where(:nth-child(2n + 1):nth-child(n + 3))::before,
|
|
269
|
+
:where(.crewlet-skeleton--cols-3) > .crewlet-skeleton__info-item:where(:nth-child(3n + 1):nth-child(n + 4))::before,
|
|
270
|
+
:where(.crewlet-skeleton--cols-4) > .crewlet-skeleton__info-item:where(:nth-child(4n + 1):nth-child(n + 5))::before {
|
|
271
|
+
display: block;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/* ── pricing-card (mirrors PricingCard.Grid and the card surface) ── */
|
|
275
|
+
.crewlet-skeleton--pricing-card {
|
|
276
|
+
display: grid;
|
|
277
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
278
|
+
gap: var(--spacing-3);
|
|
279
|
+
align-items: stretch;
|
|
280
|
+
width: 100%;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
.crewlet-skeleton__pricing-card {
|
|
284
|
+
display: flex;
|
|
285
|
+
flex-direction: column;
|
|
286
|
+
gap: var(--spacing-3);
|
|
287
|
+
min-width: 0;
|
|
288
|
+
padding: var(--spacing-4);
|
|
289
|
+
background: var(--color-surface-subtle);
|
|
290
|
+
border: 1px solid var(--color-border-default);
|
|
291
|
+
border-radius: var(--radius-lg);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.crewlet-skeleton__pricing-card-header {
|
|
295
|
+
display: flex;
|
|
296
|
+
align-items: center;
|
|
297
|
+
gap: var(--spacing-2);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
.crewlet-skeleton__pricing-card-description {
|
|
301
|
+
display: flex;
|
|
302
|
+
flex-direction: column;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
.crewlet-skeleton__pricing-card-features {
|
|
306
|
+
display: flex;
|
|
307
|
+
flex-direction: column;
|
|
308
|
+
gap: var(--spacing-2);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
.crewlet-skeleton__pricing-card-feature {
|
|
312
|
+
display: flex;
|
|
313
|
+
align-items: center;
|
|
314
|
+
gap: var(--spacing-2);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
.crewlet-skeleton__line--heading { width: 80px; height: 16px; margin: 0; }
|
|
318
|
+
.crewlet-skeleton__line--wide { width: 90%; }
|
|
319
|
+
.crewlet-skeleton__line--three-quarter { width: 75%; }
|
|
320
|
+
.crewlet-skeleton__line--feature { width: 60px; height: 12px; margin: 0; }
|
|
321
|
+
|
|
322
|
+
/* ── Box variant: the hero shimmer ──────────────────────────────── */
|
|
323
|
+
.crewlet-skeleton--box {
|
|
324
|
+
width: 100%;
|
|
325
|
+
padding: 0;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
.crewlet-skeleton__glow-box {
|
|
329
|
+
width: 100%;
|
|
330
|
+
background: var(--color-surface-inset);
|
|
331
|
+
border: 1px solid var(--color-border-default);
|
|
332
|
+
position: relative;
|
|
333
|
+
overflow: hidden;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
.crewlet-skeleton__glow-wave {
|
|
337
|
+
position: absolute;
|
|
338
|
+
top: 0;
|
|
339
|
+
left: -100%;
|
|
340
|
+
width: 100%;
|
|
341
|
+
height: 100%;
|
|
342
|
+
background: linear-gradient(90deg, transparent, var(--color-surface-hover), transparent);
|
|
343
|
+
animation: crewlet-skeleton-wave calc(var(--motion-duration-slow) * 5) var(--motion-easing-in-out) infinite;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
@keyframes crewlet-skeleton-wave {
|
|
347
|
+
0% {
|
|
348
|
+
left: -100%;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
100% {
|
|
352
|
+
left: 100%;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/* ── responsive ─────────────────────────────────────────────────── */
|
|
357
|
+
@media (max-width: 1200px) {
|
|
358
|
+
.crewlet-skeleton--pricing-card { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
359
|
+
.crewlet-skeleton--grid.crewlet-skeleton--cols-4 { --crewlet-skeleton-cols: 2; }
|
|
360
|
+
|
|
361
|
+
.crewlet-skeleton--info-grid.crewlet-skeleton--cols-4 {
|
|
362
|
+
--crewlet-skeleton-cols: 2;
|
|
363
|
+
--crewlet-skeleton-row-gap: var(--spacing-6);
|
|
364
|
+
--crewlet-skeleton-col-gap: var(--spacing-7);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
:where(.crewlet-skeleton--cols-4) > .crewlet-skeleton__info-item::before { display: none; }
|
|
368
|
+
|
|
369
|
+
:where(.crewlet-skeleton--cols-4) > .crewlet-skeleton__info-item:where(:nth-child(2n + 1):nth-child(n + 3))::before {
|
|
370
|
+
display: block;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
@media (max-width: 768px) {
|
|
375
|
+
.crewlet-skeleton--pricing-card { grid-template-columns: minmax(0, 1fr); }
|
|
376
|
+
|
|
377
|
+
.crewlet-skeleton--grid.crewlet-skeleton--cols-2,
|
|
378
|
+
.crewlet-skeleton--grid.crewlet-skeleton--cols-3,
|
|
379
|
+
.crewlet-skeleton--grid.crewlet-skeleton--cols-4 { --crewlet-skeleton-cols: 1; }
|
|
380
|
+
|
|
381
|
+
.crewlet-skeleton--info-grid.crewlet-skeleton--cols-2,
|
|
382
|
+
.crewlet-skeleton--info-grid.crewlet-skeleton--cols-3,
|
|
383
|
+
.crewlet-skeleton--info-grid.crewlet-skeleton--cols-4 {
|
|
384
|
+
--crewlet-skeleton-cols: 1;
|
|
385
|
+
--crewlet-skeleton-row-gap: var(--spacing-5);
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
.crewlet-skeleton__info-item::before { display: none; }
|
|
389
|
+
.crewlet-skeleton__info-item:where(:nth-child(n + 2))::before { display: block; }
|
|
390
|
+
|
|
391
|
+
.crewlet-skeleton--card,
|
|
392
|
+
.crewlet-skeleton__card { padding: var(--spacing-4); }
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
/*
|
|
396
|
+
* A placeholder that cannot move is still a placeholder: it keeps its shape,
|
|
397
|
+
* its grey and its position, so the page still says how much is coming and
|
|
398
|
+
* still does not jump when it arrives.
|
|
399
|
+
*/
|
|
400
|
+
@media (prefers-reduced-motion: reduce) {
|
|
401
|
+
.crewlet-skeleton .crewlet-skeleton__line,
|
|
402
|
+
.crewlet-skeleton .crewlet-skeleton__avatar,
|
|
403
|
+
.crewlet-skeleton .crewlet-skeleton__circle,
|
|
404
|
+
.crewlet-skeleton .crewlet-skeleton__button,
|
|
405
|
+
.crewlet-skeleton__glow-wave {
|
|
406
|
+
animation: none;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
/* Held still ON the inset step rather than wherever the sweep stopped: a
|
|
410
|
+
gradient frozen mid-travel is a block with a bright stripe down it. */
|
|
411
|
+
.crewlet-skeleton .crewlet-skeleton__line,
|
|
412
|
+
.crewlet-skeleton .crewlet-skeleton__avatar,
|
|
413
|
+
.crewlet-skeleton .crewlet-skeleton__circle,
|
|
414
|
+
.crewlet-skeleton .crewlet-skeleton__button {
|
|
415
|
+
background: var(--color-surface-inset);
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
.crewlet-skeleton__glow-wave {
|
|
419
|
+
display: none;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* The STATE this number is in, when it has one.
|
|
4
|
+
*
|
|
5
|
+
* DELIBERATELY ABSENT FROM MOST STATS. Colour carries state and never
|
|
6
|
+
* identity, and a token count or an elapsed time is not in a state: tinting
|
|
7
|
+
* every tile would spend the four status hues on decoration and leave the one
|
|
8
|
+
* tile that means something indistinguishable from its neighbours. Use it
|
|
9
|
+
* where the value IS an outcome, such as a turn's decision or a probe's
|
|
10
|
+
* verdict, and nowhere else.
|
|
11
|
+
*
|
|
12
|
+
* There is no `brand` here. The accent means "where the reader is", and a
|
|
13
|
+
* number is never that.
|
|
14
|
+
*/
|
|
15
|
+
export type StatCardTone = 'neutral' | 'success' | 'warning' | 'danger' | 'info';
|
|
16
|
+
export interface StatCardProps extends HTMLAttributes<HTMLDivElement> {
|
|
17
|
+
/** What is being counted, for example "Total tokens". */
|
|
18
|
+
label: ReactNode;
|
|
19
|
+
/** The headline value, already formatted by the caller. */
|
|
20
|
+
value: ReactNode;
|
|
21
|
+
/** A unit after the value, at a quieter weight: "ms", "/ 20K", "per turn". */
|
|
22
|
+
unit?: ReactNode;
|
|
23
|
+
/** A second line under the label: "3 working, 4 idle". Its line is reserved either way. */
|
|
24
|
+
sub?: ReactNode;
|
|
25
|
+
/** A glyph before the label. A component, not a name. */
|
|
26
|
+
icon?: ReactNode;
|
|
27
|
+
/** Colours the VALUE's ink. See the type for when that is right. */
|
|
28
|
+
tone?: StatCardTone;
|
|
29
|
+
/** The value has not arrived. Draws a placeholder and marks the tile busy. */
|
|
30
|
+
loading?: boolean;
|
|
31
|
+
/** What a reader is told while it is loading. */
|
|
32
|
+
loadingLabel?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Drop the tile's own surface, border and radius, so a StatGroup can draw
|
|
35
|
+
* one card around the row and hairlines between the tiles inside it.
|
|
36
|
+
*/
|
|
37
|
+
flush?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* One number, with what it counts.
|
|
41
|
+
*
|
|
42
|
+
* THE LABEL SITS ABOVE THE VALUE, in the micro-caps register, which is the
|
|
43
|
+
* engine's order and the one a board is actually read in: the labels are what
|
|
44
|
+
* a reader scans to find the tile they want, and the number is the answer
|
|
45
|
+
* underneath it. It is also the order a screen reader reads correctly, "live
|
|
46
|
+
* nodes, four, holding an unexpired lease" rather than "four, live nodes".
|
|
47
|
+
* The numbers still sit on one line across the row, because the label register
|
|
48
|
+
* is one line at every tile and the value box is a fixed step.
|
|
49
|
+
*
|
|
50
|
+
* WHILE IT IS LOADING IT SAYS SO. It used to draw a literal `--`, which a
|
|
51
|
+
* screen reader reads aloud as "dash dash" and which looks exactly like a
|
|
52
|
+
* measured value of nothing. A placeholder line plus `aria-busy` on the tile
|
|
53
|
+
* says the number has not arrived, which is a different fact from the number
|
|
54
|
+
* being zero.
|
|
55
|
+
*/
|
|
56
|
+
export declare const StatCard: ({ label, value, unit, sub, icon, tone, loading, loadingLabel, flush, className, ...rest }: StatCardProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The stat tile.
|
|
3
|
+
*
|
|
4
|
+
* THE TONE PAINTS THE VALUE, which is what the props always said and what the
|
|
5
|
+
* stylesheet never did: 0.2.0 tinted the ICON, so a caller who passed a tone
|
|
6
|
+
* and no icon got a tile identical to a neutral one. Ink only, and never a
|
|
7
|
+
* fill: a tinted block behind a 24px number reads as a button.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
.crewlet-statcard {
|
|
11
|
+
display: flex;
|
|
12
|
+
flex-direction: column;
|
|
13
|
+
gap: var(--spacing-1);
|
|
14
|
+
padding: var(--spacing-3) var(--spacing-4);
|
|
15
|
+
/* The panel recipe: the surface, the hairline, the 12px corner and the
|
|
16
|
+
elevation the engine gives every card on a screen, so a lone tile is the
|
|
17
|
+
same object as the panel beside it rather than a flatter cousin. */
|
|
18
|
+
background: var(--color-surface-subtle);
|
|
19
|
+
border: 1px solid var(--color-border-default);
|
|
20
|
+
border-radius: var(--radius-lg);
|
|
21
|
+
box-shadow: var(--shadow-xs), var(--shadow-hairline);
|
|
22
|
+
color: var(--color-text-primary);
|
|
23
|
+
font-family: var(--font-family-sans);
|
|
24
|
+
min-width: 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* Inside a StatGroup the row is one card and the tiles are its columns, so a
|
|
28
|
+
tile brings no surface of its own. */
|
|
29
|
+
.crewlet-statcard--flush {
|
|
30
|
+
background: transparent;
|
|
31
|
+
border: 0;
|
|
32
|
+
border-radius: var(--radius-none);
|
|
33
|
+
box-shadow: none;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.crewlet-statcard__value {
|
|
37
|
+
display: flex;
|
|
38
|
+
align-items: baseline;
|
|
39
|
+
gap: var(--spacing-2);
|
|
40
|
+
min-width: 0;
|
|
41
|
+
font-size: var(--font-size-2xl);
|
|
42
|
+
font-weight: var(--font-weight-semibold);
|
|
43
|
+
letter-spacing: var(--font-letter-spacing-tight);
|
|
44
|
+
/* 1.1, the engine's, which is tighter than the tight step: a 24px number
|
|
45
|
+
with 1.2 of leading sits low in its box and opens a gap between the value
|
|
46
|
+
and the line under it that the 4px gap was already spending. */
|
|
47
|
+
line-height: 1.1;
|
|
48
|
+
/* A number that ticks up must not move the label under it. */
|
|
49
|
+
font-variant-numeric: tabular-nums;
|
|
50
|
+
overflow: hidden;
|
|
51
|
+
text-overflow: ellipsis;
|
|
52
|
+
white-space: nowrap;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.crewlet-statcard__unit {
|
|
56
|
+
font-size: var(--font-size-sm);
|
|
57
|
+
font-weight: var(--font-weight-regular);
|
|
58
|
+
letter-spacing: var(--font-letter-spacing-normal);
|
|
59
|
+
color: var(--color-text-tertiary);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/*
|
|
63
|
+
* The placeholder is a line, not a pair of dashes. `--` is read aloud as
|
|
64
|
+
* "dash dash" and looks exactly like a measured value of nothing; the tile
|
|
65
|
+
* carries aria-busy instead, and the line says the number is on its way.
|
|
66
|
+
*/
|
|
67
|
+
.crewlet-statcard__placeholder {
|
|
68
|
+
display: inline-block;
|
|
69
|
+
width: 3ch;
|
|
70
|
+
height: 0.7em;
|
|
71
|
+
border-radius: var(--radius-xs);
|
|
72
|
+
background: var(--color-surface-inset);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.crewlet-statcard__label {
|
|
76
|
+
display: flex;
|
|
77
|
+
align-items: center;
|
|
78
|
+
gap: var(--spacing-1);
|
|
79
|
+
font-size: var(--font-size-2xs);
|
|
80
|
+
font-weight: var(--font-weight-medium);
|
|
81
|
+
letter-spacing: var(--font-letter-spacing-wide);
|
|
82
|
+
text-transform: uppercase;
|
|
83
|
+
color: var(--color-text-tertiary);
|
|
84
|
+
min-width: 0;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.crewlet-statcard__icon {
|
|
88
|
+
display: inline-flex;
|
|
89
|
+
flex: none;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/*
|
|
93
|
+
* The second line keeps its space whether or not there is one, so a row of
|
|
94
|
+
* tiles where only some carry a sub still sits on one baseline.
|
|
95
|
+
*/
|
|
96
|
+
.crewlet-statcard__sub {
|
|
97
|
+
min-height: 1.2em;
|
|
98
|
+
font-size: var(--font-size-xs);
|
|
99
|
+
/* The quiet step, with the label. The sub qualifies the number rather than
|
|
100
|
+
being a second one, and the engine keeps both of them a step under the
|
|
101
|
+
value they belong to. */
|
|
102
|
+
color: var(--color-text-tertiary);
|
|
103
|
+
overflow: hidden;
|
|
104
|
+
text-overflow: ellipsis;
|
|
105
|
+
white-space: nowrap;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.crewlet-statcard--success .crewlet-statcard__value { color: var(--color-feedback-success-ink); }
|
|
109
|
+
.crewlet-statcard--warning .crewlet-statcard__value { color: var(--color-feedback-warning-ink); }
|
|
110
|
+
.crewlet-statcard--danger .crewlet-statcard__value { color: var(--color-feedback-danger-ink); }
|
|
111
|
+
.crewlet-statcard--info .crewlet-statcard__value { color: var(--color-feedback-info-ink); }
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export interface StatGroupProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
/**
|
|
4
|
+
* How many tiles a row holds. FIXED, and that is the whole point: the board
|
|
5
|
+
* this replaces reflowed from one column to three as tiles appeared and
|
|
6
|
+
* vanished, which moved every number on the page for a reason that had
|
|
7
|
+
* nothing to do with the numbers.
|
|
8
|
+
*/
|
|
9
|
+
columns?: 2 | 3 | 4;
|
|
10
|
+
children?: ReactNode;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* A row of stat tiles, as one card.
|
|
14
|
+
*
|
|
15
|
+
* The tiles inside it are `flush`, so the group draws the surface and the
|
|
16
|
+
* hairlines between them rather than four separate cards with gaps. Under the
|
|
17
|
+
* md breakpoint it drops to two columns, which is the last count at which a
|
|
18
|
+
* six-character number still fits on one line of a phone.
|
|
19
|
+
*/
|
|
20
|
+
export declare function StatGroup({ columns, className, children, ...rest }: StatGroupProps): import("react/jsx-runtime").JSX.Element;
|