@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,434 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The control that adds a child (AddPill.tsx).
|
|
3
|
+
*
|
|
4
|
+
* TWO SIZES PER THING: what is DRAWN and what is HIT. The console org chart
|
|
5
|
+
* draws this at about a third of a node's height, which is half of what a
|
|
6
|
+
* pointer target is allowed to be, and the drawing is the point: a chart at
|
|
7
|
+
* rest is cards and branches with one small mark on each branch, not a row of
|
|
8
|
+
* buttons. So every control here is the target's own size and transparent, and
|
|
9
|
+
* the pill and the disc are drawn inside it. The proportions are the console
|
|
10
|
+
* chart's, taken up by the ratio between its node's height and this package's.
|
|
11
|
+
*
|
|
12
|
+
* TWO STEPS, because one gesture serves two surfaces. On a branch the drawing
|
|
13
|
+
* is the disc and the target is grown past it (`sm`); in a table row there is
|
|
14
|
+
* a control step to fill and the drawing IS the target (`md`), which is the
|
|
15
|
+
* pill the console's own table row draws. Both are the same state machine, the
|
|
16
|
+
* same spring and the same ink: it was two components once, and they disagreed
|
|
17
|
+
* about the size, the ground, the border's alpha and whether the gesture
|
|
18
|
+
* animated at all.
|
|
19
|
+
*
|
|
20
|
+
* THE STEPS ARE WRITTEN OUT PER SIZE rather than held in a variable of this
|
|
21
|
+
* component's own. A custom property is a value no suite outside a browser can
|
|
22
|
+
* resolve, and every measurement here is one a suite has to be able to take:
|
|
23
|
+
* written as a variable, the rules below measured zero in the suite that is
|
|
24
|
+
* supposed to catch them being wrong.
|
|
25
|
+
*
|
|
26
|
+
* THE ADD IS GREEN, and the green is the node ramp's. The console chart draws
|
|
27
|
+
* this control in one hue and nothing else on the chart in it, which is what
|
|
28
|
+
* makes "the green plus" a thing a reader can be told to press. Its three
|
|
29
|
+
* alphas land on this package's own derived steps almost exactly: its pill
|
|
30
|
+
* edge is the hue at 0.4 and `-line` is 0.38, its dividers 0.15 against a
|
|
31
|
+
* `-halo` of 0.16, and its hovered half 0.12, which is `-fill`.
|
|
32
|
+
*
|
|
33
|
+
* WHAT IS QUIET IS THE GLYPH, NEVER THE GROUND. The disc and the pill carry a
|
|
34
|
+
* ground of their own and it MASKS the branch they sit on: faded, the line
|
|
35
|
+
* runs straight through the plus. So the resting step is the GLYPH's, and it
|
|
36
|
+
* is one step for the plus and for the three choices alike, measured at 3:1 or
|
|
37
|
+
* better on both card grounds and on the page's, in both themes, because these
|
|
38
|
+
* are buttons and they are the only ones that add a child. The console chart
|
|
39
|
+
* draws its own choices at 0.6, which measures 2.51:1 on the light theme's
|
|
40
|
+
* node ground and 3.07 on the dark one: on the floor where it is not under it,
|
|
41
|
+
* for the one control a reader is told to press.
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
.crewlet-add-pill {
|
|
45
|
+
/* Where the pill grows from: over the mark, or beside it. See the keyframes. */
|
|
46
|
+
--crewlet-add-pill-origin: translate(-50%, -50%);
|
|
47
|
+
|
|
48
|
+
position: relative;
|
|
49
|
+
display: inline-flex;
|
|
50
|
+
align-items: center;
|
|
51
|
+
justify-content: center;
|
|
52
|
+
min-height: var(--size-target-min);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.crewlet-add-pill[data-size='md'] {
|
|
56
|
+
min-height: var(--size-control-sm);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* ---- the mark, which is what a resting chart draws --------------------- */
|
|
60
|
+
|
|
61
|
+
.crewlet-add-pill__mark {
|
|
62
|
+
display: inline-flex;
|
|
63
|
+
align-items: center;
|
|
64
|
+
justify-content: center;
|
|
65
|
+
width: var(--size-target-min);
|
|
66
|
+
height: var(--size-target-min);
|
|
67
|
+
padding: 0;
|
|
68
|
+
color: var(--color-node-green);
|
|
69
|
+
background: none;
|
|
70
|
+
border: 0;
|
|
71
|
+
border-radius: var(--radius-circle);
|
|
72
|
+
cursor: pointer;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.crewlet-add-pill[data-size='md'] .crewlet-add-pill__mark {
|
|
76
|
+
width: var(--size-control-sm);
|
|
77
|
+
height: var(--size-control-sm);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/*
|
|
81
|
+
* THE DISC IS DRAWN, NOT THE BUTTON. A ground of its own, so the branch the
|
|
82
|
+
* mark sits on stops at its edge instead of running through the plus; a third
|
|
83
|
+
* of a node's height across, which is the console chart's own proportion.
|
|
84
|
+
*
|
|
85
|
+
* AND THE GROUND IS THE NODE'S, NOT THE PAGE'S. The console chart draws this
|
|
86
|
+
* on a step of its own, one notch off the card it hangs under and well clear
|
|
87
|
+
* of the page behind it, so the control reads as belonging to the node rather
|
|
88
|
+
* than as a hole punched in the chart. Written as the page's ground plus the
|
|
89
|
+
* card's own translucent step, in one declaration, which is exactly what a
|
|
90
|
+
* node is painted with: the two are the same grey wherever the chart is
|
|
91
|
+
* scrolled to, and the pair is OPAQUE, which the card's step alone is not.
|
|
92
|
+
* The resting hairline and the 150ms it fades over are that chart's as well.
|
|
93
|
+
*
|
|
94
|
+
* FULLY OPAQUE, ALWAYS. It used to fade with the rest of the control at rest,
|
|
95
|
+
* and a mask at a little over half opacity is not a mask: the branch was drawn
|
|
96
|
+
* straight through the plus on every node of a resting chart.
|
|
97
|
+
*/
|
|
98
|
+
.crewlet-add-pill__disc {
|
|
99
|
+
position: absolute;
|
|
100
|
+
width: var(--spacing-4);
|
|
101
|
+
height: var(--spacing-4);
|
|
102
|
+
background-color: var(--color-surface-background);
|
|
103
|
+
background-image: linear-gradient(var(--color-surface-subtle), var(--color-surface-subtle));
|
|
104
|
+
border: 1px solid var(--color-border-default);
|
|
105
|
+
border-radius: var(--radius-circle);
|
|
106
|
+
transition:
|
|
107
|
+
background-color var(--motion-duration-base) var(--motion-easing-default),
|
|
108
|
+
border-color var(--motion-duration-base) var(--motion-easing-default);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* A row has no branch to mask, so there is no disc and no boundary either:
|
|
112
|
+
the plus stands on the row's own ground, at the row's own control step. */
|
|
113
|
+
.crewlet-add-pill[data-size='md'] .crewlet-add-pill__disc {
|
|
114
|
+
width: var(--size-control-sm);
|
|
115
|
+
height: var(--size-control-sm);
|
|
116
|
+
background-color: transparent;
|
|
117
|
+
background-image: none;
|
|
118
|
+
border-color: transparent;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.crewlet-add-pill__mark:hover .crewlet-add-pill__disc,
|
|
122
|
+
.crewlet-add-pill__mark:focus-visible .crewlet-add-pill__disc {
|
|
123
|
+
border-color: var(--color-node-green-line);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/*
|
|
127
|
+
* QUIET IS THE PLUS ITSELF. It is one mark per branch on a chart of a hundred,
|
|
128
|
+
* and at rest it says a child can go here and nothing more. The step is the
|
|
129
|
+
* highest that still reads as quiet and the lowest that still measures 3:1 on
|
|
130
|
+
* the page's ground and on both card grounds, in both themes, which it has to
|
|
131
|
+
* clear AT REST: it is a button, not a decoration.
|
|
132
|
+
*/
|
|
133
|
+
.crewlet-add-pill__mark svg {
|
|
134
|
+
position: relative;
|
|
135
|
+
width: var(--spacing-4);
|
|
136
|
+
height: var(--spacing-4);
|
|
137
|
+
fill: none;
|
|
138
|
+
stroke: currentcolor;
|
|
139
|
+
stroke-width: 1.5;
|
|
140
|
+
stroke-linecap: round;
|
|
141
|
+
opacity: 0.75;
|
|
142
|
+
transition: opacity var(--motion-duration-fast) var(--motion-easing-default);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.crewlet-add-pill[data-size='md'] .crewlet-add-pill__mark svg {
|
|
146
|
+
width: var(--spacing-5);
|
|
147
|
+
height: var(--spacing-5);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.crewlet-add-pill__mark:hover svg,
|
|
151
|
+
.crewlet-add-pill__mark:focus-visible svg,
|
|
152
|
+
.crewlet-add-pill:focus-within .crewlet-add-pill__mark svg {
|
|
153
|
+
opacity: 1;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.crewlet-add-pill__mark:focus-visible {
|
|
157
|
+
outline: 2px solid var(--color-focus);
|
|
158
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/* WHILE THE PILL IS OPEN the mark is what the pill grew out of, so it is not
|
|
162
|
+
drawn beside it and takes no press; it keeps its place, because focus comes
|
|
163
|
+
back to it when the pill closes. A pill that opens BESIDE the mark
|
|
164
|
+
(`inline`) keeps it: there it is the toggle rather than the thing that
|
|
165
|
+
split. */
|
|
166
|
+
.crewlet-add-pill[data-layout='split'][data-phase='preview'] .crewlet-add-pill__mark,
|
|
167
|
+
.crewlet-add-pill[data-layout='split'][data-phase='locked'] .crewlet-add-pill__mark,
|
|
168
|
+
.crewlet-add-pill[data-layout='split'][data-phase='closing'] .crewlet-add-pill__mark {
|
|
169
|
+
opacity: 0;
|
|
170
|
+
pointer-events: none;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/* ---- the pill ---------------------------------------------------------- */
|
|
174
|
+
|
|
175
|
+
/*
|
|
176
|
+
* CENTRED ON THE MARK, because the gesture is the mark SPLITTING: the pill
|
|
177
|
+
* grows out of exactly where the disc was, so the choice a reader presses is
|
|
178
|
+
* within a few pixels of what they pointed at.
|
|
179
|
+
*
|
|
180
|
+
* ON THE DISC'S OWN GROUND, for the reason the disc has one: the pill hangs on
|
|
181
|
+
* the branch its choices add a child to, and a translucent ground would have
|
|
182
|
+
* that branch running through the three marks a reader is choosing between.
|
|
183
|
+
*/
|
|
184
|
+
.crewlet-add-pill__sections {
|
|
185
|
+
display: flex;
|
|
186
|
+
height: var(--spacing-4);
|
|
187
|
+
background-color: var(--color-surface-background);
|
|
188
|
+
background-image: linear-gradient(var(--color-surface-subtle), var(--color-surface-subtle));
|
|
189
|
+
border: 1px solid var(--color-node-green-line);
|
|
190
|
+
border-radius: var(--radius-pill);
|
|
191
|
+
transform-origin: center;
|
|
192
|
+
animation: crewlet-add-pill-open var(--motion-duration-moderate) var(--motion-easing-spring);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.crewlet-add-pill[data-size='md'] .crewlet-add-pill__sections {
|
|
196
|
+
height: var(--size-control-sm);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.crewlet-add-pill[data-layout='split'] .crewlet-add-pill__sections {
|
|
200
|
+
position: absolute;
|
|
201
|
+
top: 50%;
|
|
202
|
+
left: 50%;
|
|
203
|
+
transform: var(--crewlet-add-pill-origin);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/*
|
|
207
|
+
* OPENING BESIDE THE MARK, for a row that has the width to spare. The pill is
|
|
208
|
+
* in the flow after the toggle rather than over it, so the row's own controls
|
|
209
|
+
* are not covered and the toggle stays where the pointer left it.
|
|
210
|
+
*/
|
|
211
|
+
.crewlet-add-pill[data-layout='inline'] {
|
|
212
|
+
--crewlet-add-pill-origin: translate(0, 0);
|
|
213
|
+
|
|
214
|
+
gap: var(--spacing-1);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.crewlet-add-pill[data-layout='inline'] .crewlet-add-pill__sections {
|
|
218
|
+
transform-origin: left center;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/*
|
|
222
|
+
* THE CLOSE IS THE OPEN RUN BACKWARDS, and the easing is the open's own curve
|
|
223
|
+
* inverted: the pill pulls in past its resting width and settles, so closing
|
|
224
|
+
* reads as a recoil rather than as a surface being switched off. Written out
|
|
225
|
+
* rather than taken from a token because the package publishes the spring and
|
|
226
|
+
* not its inverse, and an easing that is not the exact mirror of
|
|
227
|
+
* `--motion-easing-spring` is a close that does not match its own open.
|
|
228
|
+
*/
|
|
229
|
+
.crewlet-add-pill[data-phase='closing'] .crewlet-add-pill__sections {
|
|
230
|
+
pointer-events: none;
|
|
231
|
+
animation: crewlet-add-pill-close var(--motion-duration-moderate) cubic-bezier(0.36, 0, 0.66, -0.56)
|
|
232
|
+
forwards;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
@keyframes crewlet-add-pill-open {
|
|
236
|
+
from {
|
|
237
|
+
opacity: 0.6;
|
|
238
|
+
transform: var(--crewlet-add-pill-origin) scaleX(0.22);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
to {
|
|
242
|
+
opacity: 1;
|
|
243
|
+
transform: var(--crewlet-add-pill-origin) scaleX(1);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
@keyframes crewlet-add-pill-close {
|
|
248
|
+
from {
|
|
249
|
+
opacity: 1;
|
|
250
|
+
transform: var(--crewlet-add-pill-origin) scaleX(1);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
to {
|
|
254
|
+
opacity: 0.6;
|
|
255
|
+
transform: var(--crewlet-add-pill-origin) scaleX(0.22);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/*
|
|
260
|
+
* A SECTION IS A POINTER TARGET WEARING A SLICE OF THE PILL. At the branch's
|
|
261
|
+
* step the pill is half a target tall, so the button is grown past it, top and
|
|
262
|
+
* bottom, into the branch's own strip: what is drawn is the console chart's
|
|
263
|
+
* pill and what is pressed clears the 24px floor at every density. At the
|
|
264
|
+
* row's step the two are the same number and the margin is nothing.
|
|
265
|
+
*
|
|
266
|
+
* AND THE SLICE IS WHAT IS PAINTED, not the target. The overhang is PADDING
|
|
267
|
+
* rather than bare height, and the ground is clipped to the content box, so a
|
|
268
|
+
* hovered choice tints the pill and stops at its edges. Painted over the whole
|
|
269
|
+
* button it was a square of green standing four pixels proud of the pill top
|
|
270
|
+
* and bottom, over the branch behind it: a blob on the one gesture that is
|
|
271
|
+
* supposed to read as one pill splitting into three. The rounding follows the
|
|
272
|
+
* content box for the same reason, so the outer choices keep the pill's own
|
|
273
|
+
* ends rather than the target's.
|
|
274
|
+
*/
|
|
275
|
+
.crewlet-add-pill__section {
|
|
276
|
+
display: inline-flex;
|
|
277
|
+
flex: none;
|
|
278
|
+
align-items: center;
|
|
279
|
+
justify-content: center;
|
|
280
|
+
width: var(--size-target-min);
|
|
281
|
+
height: var(--size-target-min);
|
|
282
|
+
margin: calc((var(--spacing-4) - var(--size-target-min)) / 2) 0;
|
|
283
|
+
/* The overhang, as padding: the content box is then the pill's own height. */
|
|
284
|
+
padding: calc((var(--size-target-min) - var(--spacing-4)) / 2) 0;
|
|
285
|
+
color: var(--color-node-green);
|
|
286
|
+
/*
|
|
287
|
+
* NOT THE `background` SHORTHAND. It resets `background-clip` along with
|
|
288
|
+
* everything else it does not name, and the clip below is what holds the
|
|
289
|
+
* tint to the pill: written as the shorthand plus a longhand after it, the
|
|
290
|
+
* declaration is honoured by a browser and DROPPED by jsdom, so the suite
|
|
291
|
+
* that is supposed to catch the tint bleeding measured `border-box` while
|
|
292
|
+
* the page painted correctly. A guard that cannot see the rule it guards is
|
|
293
|
+
* the whole reason these are measured rather than matched in the source.
|
|
294
|
+
*/
|
|
295
|
+
background-color: transparent;
|
|
296
|
+
background-clip: content-box;
|
|
297
|
+
border: 0;
|
|
298
|
+
cursor: pointer;
|
|
299
|
+
opacity: 0.75;
|
|
300
|
+
transition:
|
|
301
|
+
opacity var(--motion-duration-fast) var(--motion-easing-default),
|
|
302
|
+
background-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/* A row's step is the target, so there is no overhang and nothing to clip. */
|
|
306
|
+
.crewlet-add-pill[data-size='md'] .crewlet-add-pill__section {
|
|
307
|
+
width: var(--size-control-sm);
|
|
308
|
+
height: var(--size-control-sm);
|
|
309
|
+
margin: 0;
|
|
310
|
+
padding: 0;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/*
|
|
314
|
+
* THE DIVIDER IS INSET, and it is not a boundary on a section's own box. The
|
|
315
|
+
* console chart draws these two lines from a sixth of the pill's height to
|
|
316
|
+
* five sixths of it, so they separate the choices without reaching the pill's
|
|
317
|
+
* own ends, where they would read as three pills rather than one split into
|
|
318
|
+
* three. Drawn as a `border-left` it could not be inset at all: a border is
|
|
319
|
+
* the length of the box it is on, and the box here is a POINTER TARGET half as
|
|
320
|
+
* tall again as the pill, so the line ran past the pill at both ends.
|
|
321
|
+
*
|
|
322
|
+
* AND IT TAKES NO PRESS. It stands between two choices, so a reader landing on
|
|
323
|
+
* the hairline would otherwise be pressing neither: that chart marks both of
|
|
324
|
+
* its dividers `pointer-events: none` for the same reason. The pixel it takes
|
|
325
|
+
* comes off nothing, because the pill's own room is reserved at four choices
|
|
326
|
+
* wide wherever a chart hangs one (`TreeCanvas.css`).
|
|
327
|
+
*/
|
|
328
|
+
.crewlet-add-pill__divider {
|
|
329
|
+
flex: none;
|
|
330
|
+
align-self: center;
|
|
331
|
+
width: 1px;
|
|
332
|
+
height: var(--spacing-3);
|
|
333
|
+
background: var(--color-node-green-halo);
|
|
334
|
+
pointer-events: none;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
.crewlet-add-pill[data-size='md'] .crewlet-add-pill__divider {
|
|
338
|
+
height: var(--spacing-5);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/*
|
|
342
|
+
* THE OUTER TWO ARE ROUNDED, of TYPE rather than of child: the reasons a
|
|
343
|
+
* refused choice carries are rendered after the last section (out of the flow,
|
|
344
|
+
* so that a refusal nobody can see never lands between two choices), and a
|
|
345
|
+
* dividing element now stands before each section but the first. Keyed on the
|
|
346
|
+
* child position, a pill whose last choice was refused drew a square right end
|
|
347
|
+
* inside a rounded one, and a pill with dividers drew no rounding at all.
|
|
348
|
+
*/
|
|
349
|
+
.crewlet-add-pill__section:first-of-type {
|
|
350
|
+
border-top-left-radius: var(--radius-pill);
|
|
351
|
+
border-bottom-left-radius: var(--radius-pill);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
.crewlet-add-pill__section:last-of-type {
|
|
355
|
+
border-top-right-radius: var(--radius-pill);
|
|
356
|
+
border-bottom-right-radius: var(--radius-pill);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
.crewlet-add-pill__section:hover,
|
|
360
|
+
.crewlet-add-pill__section:focus-visible {
|
|
361
|
+
background-color: var(--color-node-green-fill);
|
|
362
|
+
opacity: 1;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.crewlet-add-pill__section:focus-visible {
|
|
366
|
+
outline: 2px solid var(--color-focus);
|
|
367
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/* Refused rather than removed, so a reader learns the chart offers this and
|
|
371
|
+
why it will not do it now. */
|
|
372
|
+
.crewlet-add-pill__section[aria-disabled='true'] {
|
|
373
|
+
cursor: not-allowed;
|
|
374
|
+
opacity: 0.4;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
.crewlet-add-pill__section[aria-disabled='true']:hover {
|
|
378
|
+
background-color: transparent;
|
|
379
|
+
opacity: 0.4;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
/*
|
|
383
|
+
* A CHOICE IS ONE INK, and its mark takes that ink whatever it arrived
|
|
384
|
+
* painted in. A glyph inherits on its own, but a brand mark carries its own
|
|
385
|
+
* fill, and on a pill whose whole point is that it is drawn in ONE hue that is
|
|
386
|
+
* the one choice of three in somebody else's colour: measured, the middle
|
|
387
|
+
* section of every pill in the chart was the Crewlet figure's purple between
|
|
388
|
+
* two green marks. The console chart puts a hue-rotate filter on that same
|
|
389
|
+
* mark for the same reason. Stated as the section's own rule rather than asked
|
|
390
|
+
* of each caller, because the pill is what decides it is drawn in one colour.
|
|
391
|
+
*/
|
|
392
|
+
.crewlet-add-pill__section svg {
|
|
393
|
+
width: var(--spacing-3);
|
|
394
|
+
height: var(--spacing-3);
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
.crewlet-add-pill__section svg,
|
|
398
|
+
.crewlet-add-pill__section svg g,
|
|
399
|
+
.crewlet-add-pill__section svg path {
|
|
400
|
+
/* THE INK AS WELL AS THE FILL. A mark may publish its own hue as a `color`
|
|
401
|
+
on its own root (the Crewlet figure does, from the brand token), and
|
|
402
|
+
`currentcolor` under that root then resolves to THAT: the fill was
|
|
403
|
+
overridden and landed on the same purple it started from. */
|
|
404
|
+
color: inherit;
|
|
405
|
+
fill: currentcolor;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
.crewlet-add-pill[data-size='md'] .crewlet-add-pill__section svg {
|
|
409
|
+
width: var(--spacing-4);
|
|
410
|
+
height: var(--spacing-4);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
/*
|
|
414
|
+
* A READER WHO ASKED FOR LESS gets the same pill, open or closed. The split is
|
|
415
|
+
* a state change rather than an entrance under this query: every choice is
|
|
416
|
+
* still drawn, still in the same place, and reached by the same press.
|
|
417
|
+
*/
|
|
418
|
+
@media (prefers-reduced-motion: reduce) {
|
|
419
|
+
.crewlet-add-pill__disc,
|
|
420
|
+
.crewlet-add-pill__mark svg,
|
|
421
|
+
.crewlet-add-pill__section {
|
|
422
|
+
transition: none;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
.crewlet-add-pill__sections {
|
|
426
|
+
animation: none;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
/* And a pill that is closing is closed: with no animation to play out,
|
|
430
|
+
holding it drawn for the length of one would be a pill that lingers. */
|
|
431
|
+
.crewlet-add-pill[data-phase='closing'] .crewlet-add-pill__sections {
|
|
432
|
+
display: none;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Announces `text` in the mounted region.
|
|
3
|
+
*
|
|
4
|
+
* A plain function rather than a hook's closure, so a callback outside React
|
|
5
|
+
* (a store, a socket handler) can use the same one.
|
|
6
|
+
*/
|
|
7
|
+
export declare function announce(text: string): void;
|
|
8
|
+
/** The announcer, for a component that would rather take it as a value. */
|
|
9
|
+
export declare function useAnnouncer(): (text: string) => void;
|
|
10
|
+
export interface AnnouncerProps {
|
|
11
|
+
/** Names the region for a reader browsing landmarks. */
|
|
12
|
+
label?: string | undefined;
|
|
13
|
+
}
|
|
14
|
+
/** The polite region itself. Mount one, in the shell. */
|
|
15
|
+
export declare function Announcer({ label }: AnnouncerProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The application frame: a rail, a top bar, and ONE scroll container.
|
|
3
|
+
*
|
|
4
|
+
* WHY THE SHELL OWNS THE GRID NOW. It used to be passive: the slots positioned
|
|
5
|
+
* themselves with `position: fixed` and the shell only reserved a matching
|
|
6
|
+
* margin, so every consumer repeated the rail's width and the bar's height as
|
|
7
|
+
* literals in its own stylesheet (280 and 64, in two files, in two projects),
|
|
8
|
+
* and a change to either meant editing four places that nothing compared. The
|
|
9
|
+
* grid is sized from `--size-shell-rail` and `--size-shell-topbar` here, and
|
|
10
|
+
* the slots simply fill their cells.
|
|
11
|
+
*
|
|
12
|
+
* THE DOCUMENT DOES NOT SCROLL. `100dvh` with `overflow: hidden` on the root,
|
|
13
|
+
* and one scroller inside it, which is what lets a router restore a scroll
|
|
14
|
+
* position per history entry: a page with three independent scrollers has
|
|
15
|
+
* three positions and no way to name them. A page that can also scroll as a
|
|
16
|
+
* whole carries the rail off the top of the window and leaves the reader with
|
|
17
|
+
* two scrollbars, neither obviously the one they want.
|
|
18
|
+
*
|
|
19
|
+
* THE LANDMARKS ARE REAL. The rail is an `aside`, the bar is a `header`
|
|
20
|
+
* OUTSIDE `main` (so it is the page's banner rather than part of the screen),
|
|
21
|
+
* and `main` is a focusable target for the skip link that precedes everything.
|
|
22
|
+
*
|
|
23
|
+
* NARROW IS A DIFFERENT SHAPE, NOT A SMALLER ONE. Below the shell breakpoint
|
|
24
|
+
* the rail is a modal drawer on the shared layer stack: it takes Escape, traps
|
|
25
|
+
* Tab, hands focus back to the toggle, and closes on a navigation and when the
|
|
26
|
+
* layout it belongs to ends. Hidden rather than merely moved off screen, too,
|
|
27
|
+
* because a rail translated out of view keeps every link in the tab order and
|
|
28
|
+
* a keyboard reader walks through a dozen stops nobody can see.
|
|
29
|
+
*/
|
|
30
|
+
import { type HTMLAttributes, type MouseEventHandler, type ReactNode, type Ref } from 'react';
|
|
31
|
+
/** What the shell tells the components inside it. */
|
|
32
|
+
interface AppShellContextValue {
|
|
33
|
+
/** Whether the layout is below the shell breakpoint. */
|
|
34
|
+
narrow: boolean;
|
|
35
|
+
drawerOpen: boolean;
|
|
36
|
+
openDrawer: () => void;
|
|
37
|
+
closeDrawer: () => void;
|
|
38
|
+
toggleDrawer: () => void;
|
|
39
|
+
/** The one scroll container, for a router restoring a position. */
|
|
40
|
+
scroller: HTMLElement | null;
|
|
41
|
+
railId: string;
|
|
42
|
+
toggleLabel: string;
|
|
43
|
+
hasRail: boolean;
|
|
44
|
+
}
|
|
45
|
+
export type { AppShellContextValue };
|
|
46
|
+
/**
|
|
47
|
+
* The shell around this component.
|
|
48
|
+
*
|
|
49
|
+
* Throws outside one, rather than answering with a shell-shaped default: a
|
|
50
|
+
* drawer control that silently does nothing is a control nobody can debug.
|
|
51
|
+
*/
|
|
52
|
+
export declare function useAppShell(): AppShellContextValue;
|
|
53
|
+
export interface AppShellProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
54
|
+
/**
|
|
55
|
+
* The rail. Normally an `<AppShell.Rail>`; the slot keeps its 0.2.0 name
|
|
56
|
+
* because renaming it would break every consumer for nothing.
|
|
57
|
+
*/
|
|
58
|
+
sidebar?: ReactNode;
|
|
59
|
+
/** The top bar, normally an `<AppShell.Topbar>`. It is the page's banner. */
|
|
60
|
+
topbar?: ReactNode;
|
|
61
|
+
/**
|
|
62
|
+
* A strip between the bar and the screen: a degraded connection, a missing
|
|
63
|
+
* configuration. It is chrome rather than screen content, so it stays put
|
|
64
|
+
* while the screen scrolls under it.
|
|
65
|
+
*/
|
|
66
|
+
banner?: ReactNode;
|
|
67
|
+
/** A strip under the screen, in the content column and outside `main`. */
|
|
68
|
+
footer?: ReactNode;
|
|
69
|
+
/** The id of the `main` element, which the skip link points at. */
|
|
70
|
+
mainId?: string | undefined;
|
|
71
|
+
/** The scroll container itself, for a router restoring a position. */
|
|
72
|
+
mainRef?: Ref<HTMLElement> | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* Gives the screen the whole height left under the bar, as a flex column,
|
|
75
|
+
* for a canvas or a split view that draws to the bottom of the window
|
|
76
|
+
* instead of scrolling.
|
|
77
|
+
*/
|
|
78
|
+
fill?: boolean | undefined;
|
|
79
|
+
/**
|
|
80
|
+
* Any value that changes when the reader goes somewhere. The drawer closes
|
|
81
|
+
* when it does: a drawer left open over the screen you have just navigated
|
|
82
|
+
* to is the classic mobile navigation defect.
|
|
83
|
+
*/
|
|
84
|
+
navigationKey?: string | number | undefined;
|
|
85
|
+
/** Names the control that opens the rail, and the drawer it opens. */
|
|
86
|
+
toggleLabel?: string | undefined;
|
|
87
|
+
/** The link that precedes everything, for a keyboard reader. */
|
|
88
|
+
skipLabel?: string | undefined;
|
|
89
|
+
children?: ReactNode;
|
|
90
|
+
}
|
|
91
|
+
export declare function AppShell({ sidebar, topbar, banner, footer, mainId, mainRef, fill, navigationKey, toggleLabel, skipLabel, className, style, children, ...rest }: AppShellProps): import("react/jsx-runtime").JSX.Element;
|
|
92
|
+
export declare namespace AppShell {
|
|
93
|
+
var Rail: typeof AppShellRail;
|
|
94
|
+
var RailRow: typeof AppShellRailRow;
|
|
95
|
+
var Topbar: typeof AppShellTopbar;
|
|
96
|
+
var Toggle: typeof AppShellToggle;
|
|
97
|
+
}
|
|
98
|
+
export interface AppShellRailProps {
|
|
99
|
+
/** The head of the rail, drawn at the top bar's own height. */
|
|
100
|
+
header?: ReactNode;
|
|
101
|
+
/**
|
|
102
|
+
* The foot: what the engine is doing, the theme and density controls. An
|
|
103
|
+
* `<AppShell.RailRow>` puts a line there on the rail's own insets, so its
|
|
104
|
+
* mark lands on the line every nav glyph above it sits on.
|
|
105
|
+
*/
|
|
106
|
+
footer?: ReactNode;
|
|
107
|
+
className?: string | undefined;
|
|
108
|
+
children?: ReactNode;
|
|
109
|
+
}
|
|
110
|
+
/** The rail's three regions: a head, a scrolling middle, and a foot. */
|
|
111
|
+
export declare function AppShellRail({ header, footer, className, children }: AppShellRailProps): import("react/jsx-runtime").JSX.Element;
|
|
112
|
+
/** What a row in the rail's foot holds, whether or not it is a control. */
|
|
113
|
+
interface RailRowContent {
|
|
114
|
+
/**
|
|
115
|
+
* A mark at the head of the row: a status dot, a glyph. Decoration, because
|
|
116
|
+
* the words beside it say the same thing; it is here so it lands on the same
|
|
117
|
+
* vertical line as every nav glyph above it.
|
|
118
|
+
*/
|
|
119
|
+
icon?: ReactNode;
|
|
120
|
+
/** A value at the end of the row: a count, a tag, a time. */
|
|
121
|
+
trailing?: ReactNode;
|
|
122
|
+
className?: string | undefined;
|
|
123
|
+
/** What the row says. */
|
|
124
|
+
children?: ReactNode;
|
|
125
|
+
}
|
|
126
|
+
/** A row the rail states and nothing presses. */
|
|
127
|
+
export interface StaticRailRowProps extends RailRowContent {
|
|
128
|
+
onClick?: undefined;
|
|
129
|
+
label?: undefined;
|
|
130
|
+
}
|
|
131
|
+
/** A row that opens something: the engine panel, an account menu. */
|
|
132
|
+
export interface ActionRailRowProps extends RailRowContent {
|
|
133
|
+
onClick: MouseEventHandler<HTMLButtonElement>;
|
|
134
|
+
/**
|
|
135
|
+
* Names the control where its own words are not a name: "engine connected"
|
|
136
|
+
* names a state rather than what pressing it does.
|
|
137
|
+
*/
|
|
138
|
+
label?: string | undefined;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* A row in the rail's foot.
|
|
142
|
+
*
|
|
143
|
+
* `label` is refused without `onClick` by the type rather than ignored at
|
|
144
|
+
* runtime: `aria-label` on an element with no role is dropped by assistive
|
|
145
|
+
* technology, so a name passed to a row nothing presses is a name nobody is
|
|
146
|
+
* ever told, and a silent no-op is the shape a caller cannot debug.
|
|
147
|
+
*/
|
|
148
|
+
export type AppShellRailRowProps = StaticRailRowProps | ActionRailRowProps;
|
|
149
|
+
/**
|
|
150
|
+
* A row in the rail's foot, on the rail's own two insets.
|
|
151
|
+
*
|
|
152
|
+
* WHY IT IS A COMPONENT RATHER THAN A BUTTON THE CALLER DROPS IN. The rail's
|
|
153
|
+
* geometry is in two parts: the gutter insets the rail, which is where a row's
|
|
154
|
+
* background begins, and the row pad insets the content inside the row. A
|
|
155
|
+
* control brings its own inset and lands its mark a few pixels off the line
|
|
156
|
+
* every nav glyph above it sits on, which is the one thing a reader notices
|
|
157
|
+
* about a rail without being able to say what it is.
|
|
158
|
+
*
|
|
159
|
+
* AND THE FOOT CLAIMS WHAT LANDS THERE ANYWAY, because an application with a
|
|
160
|
+
* status button of its own reaches for that one whatever this package offers:
|
|
161
|
+
* the stylesheet gives a direct child of the foot the same row this draws, so
|
|
162
|
+
* a dropped-in control is a row in the rail rather than a control sitting on a
|
|
163
|
+
* toolbar's inset. This is still the one to reach for, because it is also the
|
|
164
|
+
* thing that decides whether the row is a control at all.
|
|
165
|
+
*/
|
|
166
|
+
export declare function AppShellRailRow({ icon, trailing, onClick, label, className, children }: AppShellRailRowProps): import("react/jsx-runtime").JSX.Element;
|
|
167
|
+
export interface AppShellToggleProps {
|
|
168
|
+
className?: string | undefined;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* The control that opens the rail as a drawer.
|
|
172
|
+
*
|
|
173
|
+
* Drawn at every width and HIDDEN BY THE STYLESHEET above the breakpoint,
|
|
174
|
+
* rather than removed by a second copy of the width rule in JavaScript. It
|
|
175
|
+
* used to be drawn at every width and to work at every width, and pressing it
|
|
176
|
+
* on a desktop put an unstyled veil into the shell's own grid, which took the
|
|
177
|
+
* rail's column and pushed the whole application into the next row.
|
|
178
|
+
*/
|
|
179
|
+
export declare function AppShellToggle({ className }: AppShellToggleProps): import("react/jsx-runtime").JSX.Element | null;
|
|
180
|
+
export interface AppShellTopbarProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
|
|
181
|
+
/**
|
|
182
|
+
* The screen's name. It is the page's `h1`, which is why everything below
|
|
183
|
+
* it starts at level 2.
|
|
184
|
+
*/
|
|
185
|
+
title?: ReactNode;
|
|
186
|
+
/** Names the heading, for anything that points at it. */
|
|
187
|
+
titleId?: string | undefined;
|
|
188
|
+
/** What can be done from the chrome: search, an account menu. */
|
|
189
|
+
actions?: ReactNode;
|
|
190
|
+
children?: ReactNode;
|
|
191
|
+
}
|
|
192
|
+
/** The page's banner: the drawer toggle, the screen's name, and the actions. */
|
|
193
|
+
export declare function AppShellTopbar({ title, titleId, actions, className, children, ...rest }: AppShellTopbarProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import './AppShell.css';
|
|
2
|
+
export { AppShell, AppShellRail, AppShellRailRow, AppShellToggle, AppShellTopbar, useAppShell } from './AppShell.js';
|
|
3
|
+
export type { ActionRailRowProps, AppShellContextValue, AppShellProps, AppShellRailProps, AppShellRailRowProps, AppShellToggleProps, AppShellTopbarProps, StaticRailRowProps, } from './AppShell.js';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { AppShell, AppShellRail, AppShellRailRow, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-MNAXYY3R.js';
|
|
2
|
+
import '../chunk-7RPGY3JE.js';
|
|
3
|
+
import '../chunk-ITHXJHBB.js';
|
|
4
|
+
import '../chunk-F27EPQ7D.js';
|
|
5
|
+
import '../chunk-BZFWDIV6.js';
|
|
6
|
+
import '../chunk-ODEQTPFM.js';
|