@crewlethq/ui 0.31.1 → 0.33.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 +151 -5
- package/dist/AccessDeniedCard/AccessDeniedCard.d.ts +5 -0
- package/dist/AccessDeniedCard/index.js +1 -5
- package/dist/AccessDeniedCard-QVNDMT46.css +8 -0
- package/dist/AppShell/index.js +4 -4
- package/dist/{AppShell-GCM4TDVY.css → AppShell-JTSEOA57.css} +3 -1
- package/dist/ArrangeGroup/ArrangeGroup.d.ts +16 -1
- package/dist/ArrangeGroup/index.d.ts +1 -1
- package/dist/ArrangeGroup/index.js +1 -1
- package/dist/{ArrangeGroup-GY5YMP6E.css → ArrangeGroup-KRWWOJKR.css} +43 -0
- package/dist/ArrangeList/index.js +2 -2
- package/dist/ArtifactBar/index.js +12 -12
- package/dist/{ArtifactBar-MLMJHWY6.css → ArtifactBar-C462VD4C.css} +8 -3
- package/dist/ArtifactCard/ArtifactCard.d.ts +19 -1
- package/dist/ArtifactCard/index.d.ts +1 -1
- package/dist/ArtifactCard/index.js +4 -4
- package/dist/{ArtifactCard-EXVAEBV6.css → ArtifactCard-AS5Z4CVI.css} +17 -2
- package/dist/ArtifactCover/index.js +6 -6
- package/dist/ArtifactIcon/index.js +5 -5
- package/dist/ArtifactPanel/ArtifactPanel.d.ts +6 -2
- package/dist/ArtifactPanel/index.js +1 -1
- package/dist/{ArtifactPanel-YFXT5O77.css → ArtifactPanel-HW3SU7CP.css} +25 -7
- package/dist/Avatar/Avatar.d.ts +6 -4
- package/dist/Avatar/index.js +2 -2
- package/dist/AvatarPicker/index.js +8 -8
- package/dist/Callout/index.js +1 -1
- package/dist/{Callout-SXXK4B5R.css → Callout-ZAVG3P66.css} +46 -6
- package/dist/Canvas/Canvas.d.ts +81 -4
- package/dist/Canvas/ShortcutTip.d.ts +22 -0
- package/dist/Canvas/geometry.d.ts +13 -3
- package/dist/Canvas/index.d.ts +4 -2
- package/dist/Canvas/index.js +5 -3
- package/dist/{Canvas-YVXHMWLN.css → Canvas-VUG2HLZK.css} +62 -3
- package/dist/CanvasBoard/CanvasBoard.d.ts +110 -12
- package/dist/CanvasBoard/budget.d.ts +9 -3
- package/dist/CanvasBoard/index.d.ts +2 -2
- package/dist/CanvasBoard/index.js +9 -5
- package/dist/CanvasBoard-5NNSKY6A.css +462 -0
- package/dist/CanvasToolbar/CanvasToolbar.d.ts +48 -0
- package/dist/CanvasToolbar/index.d.ts +3 -0
- package/dist/CanvasToolbar/index.js +12 -0
- package/dist/CanvasToolbar-EM5EVZED.css +34 -0
- package/dist/ChangeMark/index.js +4 -4
- package/dist/CharacterPicker/index.js +2 -2
- package/dist/Charts/ActivityStrip.d.ts +16 -1
- package/dist/Charts/BarList.d.ts +6 -0
- package/dist/Charts/ChartEmpty.d.ts +33 -0
- package/dist/Charts/Legend.d.ts +6 -0
- package/dist/Charts/StackedBar.d.ts +4 -1
- package/dist/Charts/StackedColumns.d.ts +14 -3
- package/dist/Charts/TimeSeries.d.ts +11 -1
- package/dist/Charts/index.d.ts +2 -0
- package/dist/Charts/index.js +1 -1
- package/dist/{Charts-RY4JN5FC.css → Charts-MBJG72BS.css} +140 -16
- package/dist/Checkbox/index.js +1 -1
- package/dist/{Checkbox-5UORUG3F.css → Checkbox-ALWG3WV2.css} +11 -0
- package/dist/CommandPalette/index.js +3 -3
- package/dist/{CommandPalette-HBTNKHZQ.css → CommandPalette-7CFGVBND.css} +4 -0
- package/dist/CommentThread/index.js +5 -5
- package/dist/Container/index.js +1 -1
- package/dist/{Container-3TSKMGNI.css → Container-34BAKG7B.css} +3 -1
- package/dist/{DashboardCover-RMINBODB.css → DashboardCover-KYGYMRKW.css} +42 -9
- package/dist/DataTable/index.js +5 -5
- package/dist/{DataTable-WZK3V62B.css → DataTable-NL2YWAIA.css} +4 -1
- package/dist/DataView/index.js +9 -9
- package/dist/DateTimePicker/index.js +3 -3
- package/dist/DocTabsEditor/DocTabsEditor.d.ts +34 -21
- package/dist/DocTabsEditor/index.js +4 -1
- package/dist/DocTabsEditor-4M452LNS.css +189 -0
- package/dist/Document/Document.d.ts +18 -1
- package/dist/Document/index.d.ts +2 -2
- package/dist/Document/index.js +1 -1
- package/dist/{Document-G3YTZIUL.css → Document-JUGCSQ4L.css} +78 -5
- package/dist/EditingStatus/index.js +1 -1
- package/dist/{EditingStatus-L6THUAN7.css → EditingStatus-NNA2CKIL.css} +17 -4
- package/dist/{Editor-YZ7KG2RD.js → Editor-UUZ7XKCU.js} +5 -5
- package/dist/EntityChip/index.js +3 -3
- package/dist/FactList/index.js +3 -3
- package/dist/FollowBanner/index.js +3 -3
- package/dist/Fullscreen/index.d.ts +1 -0
- package/dist/Fullscreen/index.js +1 -1
- package/dist/Fullscreen/useIdle.d.ts +16 -0
- package/dist/HuePicker/index.js +3 -3
- package/dist/ImageUpload/index.js +3 -3
- package/dist/Layer/index.d.ts +1 -1
- package/dist/Layer/index.js +1 -1
- package/dist/Layer/place.d.ts +18 -0
- package/dist/LayersList/LayersList.d.ts +57 -0
- package/dist/LayersList/index.d.ts +3 -0
- package/dist/LayersList/index.js +3 -0
- package/dist/LayersList-NQZEIPZB.css +82 -0
- package/dist/LinkInterstitial/index.js +4 -4
- package/dist/ListInput/index.js +1 -1
- package/dist/Markdown/index.js +1 -1
- package/dist/MarkdownEditor/index.js +5 -5
- package/dist/MediaMatch/index.d.ts +1 -0
- package/dist/MediaMatch/index.js +1 -0
- package/dist/MediaMatch/useMediaMatch.d.ts +19 -0
- package/dist/Menu/index.js +2 -2
- package/dist/MergeConflicts/index.js +4 -4
- package/dist/Modal/index.js +2 -2
- package/dist/{Modal-XOSV6FAH.css → Modal-7MWRCWAI.css} +30 -0
- package/dist/Note/index.js +1 -1
- package/dist/{Note-ONSKKTOA.css → Note-WI5MLZOO.css} +13 -0
- package/dist/OrgLabel/index.js +3 -3
- package/dist/OrgNode/index.js +4 -4
- package/dist/OrgTable/index.js +7 -7
- package/dist/PeopleRail/index.js +3 -3
- package/dist/Popover/index.js +2 -2
- package/dist/PresenceStack/index.js +3 -3
- package/dist/{PresenceStack-QSXQJND5.css → PresenceStack-FJJQVH74.css} +11 -3
- package/dist/PresenterView/PresenterView.d.ts +3 -0
- package/dist/PresenterView/index.js +5 -3
- package/dist/PresenterView-T3EXIQ5S.css +147 -0
- package/dist/Principal/index.js +3 -3
- package/dist/PrincipalPicker/index.js +4 -4
- package/dist/RichEditor/index.js +5 -5
- package/dist/RichEditor/schema.d.ts +1 -1
- package/dist/RichEditorMarkdown/index.js +3 -3
- package/dist/SandboxedFrame/SandboxedFrame.d.ts +44 -2
- package/dist/SandboxedFrame/index.d.ts +2 -2
- package/dist/SandboxedFrame/index.js +3 -3
- package/dist/SandboxedFrame-P5NASXB7.css +72 -0
- package/dist/Section/index.js +1 -1
- package/dist/{Section-QR3ILQVK.css → Section-O5AHGSOG.css} +28 -5
- package/dist/SegmentedControl/index.js +3 -3
- package/dist/Select/index.js +2 -2
- package/dist/ShareDialog/ShareDialog.d.ts +10 -0
- package/dist/ShareDialog/index.js +9 -9
- package/dist/{ShareDialog-YZ4F37MW.css → ShareDialog-4QDCBWMH.css} +12 -0
- package/dist/SheetGrid/SheetGrid.d.ts +3 -1
- package/dist/SheetGrid/index.js +10 -10
- package/dist/{SheetGrid-J3TKKXZL.css → SheetGrid-AKPUCK67.css} +106 -7
- package/dist/SheetModel/fit.d.ts +34 -0
- package/dist/SheetModel/index.d.ts +1 -0
- package/dist/SheetModel/index.js +1 -1
- package/dist/Shortcut/index.js +1 -1
- package/dist/Skeleton/Skeleton.d.ts +2 -1
- package/dist/Skeleton/index.js +1 -1
- package/dist/SlideCompare/SlideCompare.d.ts +6 -1
- package/dist/SlideCompare/index.js +3 -3
- package/dist/{SlideCompare-MGM3U2ME.css → SlideCompare-HTCMPQFY.css} +36 -3
- package/dist/SlideFilmstrip/SlideFilmstrip.d.ts +14 -3
- package/dist/SlideFilmstrip/index.js +3 -3
- package/dist/{SlideFilmstrip-BCLNAHFX.css → SlideFilmstrip-5U6Z55GS.css} +63 -2
- package/dist/SlideGrid/index.js +3 -3
- package/dist/{SlideGrid-RT6QEQEE.css → SlideGrid-S4LTJ4UU.css} +9 -5
- package/dist/SlideNav/SlideNav.d.ts +49 -0
- package/dist/SlideNav/index.d.ts +3 -0
- package/dist/SlideNav/index.js +4 -0
- package/dist/SlideNav-BLFJF6AH.css +53 -0
- package/dist/SlideStage/SlideStage.d.ts +14 -1
- package/dist/SlideStage/index.js +2 -2
- package/dist/{SlideStage-KGRRALXR.css → SlideStage-S2FISF4C.css} +23 -0
- package/dist/StatCard/StatCard.d.ts +16 -1
- package/dist/StatCard/index.js +1 -1
- package/dist/{StatCard-KPAFD4E2.css → StatCard-4T7TMWMN.css} +40 -13
- package/dist/Switcher/index.js +6 -6
- package/dist/TableCells/index.js +3 -3
- package/dist/Tabs/Tabs.d.ts +21 -4
- package/dist/Tabs/index.js +1 -1
- package/dist/{Tabs-CJGO35BH.css → Tabs-MMZXV5EF.css} +9 -8
- package/dist/TagsInput/index.js +1 -1
- package/dist/ThemeSwitcher/index.js +4 -4
- package/dist/TimeWindowPicker/index.js +4 -4
- package/dist/Toaster/index.js +2 -2
- package/dist/{Toaster-EOOOTSJT.css → Toaster-C6BQ7L6I.css} +10 -1
- package/dist/Toolbar/index.js +1 -1
- package/dist/Tooltip/index.js +2 -2
- package/dist/TreeCanvas/index.js +6 -4
- package/dist/TreeGrid/index.js +3 -3
- package/dist/VersionCompare/index.js +4 -4
- package/dist/VersionTimeline/index.js +4 -4
- package/dist/WidgetFrame/WidgetFrame.d.ts +8 -1
- package/dist/WidgetFrame/index.js +2 -2
- package/dist/{WidgetFrame-LRZIL62O.css → WidgetFrame-BTFW3CRK.css} +49 -5
- package/dist/{chunk-OJ45PPCV.js → chunk-22UEIXZE.js} +127 -32
- package/dist/{chunk-UZ6MA2V6.js → chunk-2DHMVB5J.js} +2 -2
- package/dist/{chunk-WJDQ7XQA.js → chunk-2QEDJSJC.js} +1 -1
- package/dist/{chunk-2HIOJ4YZ.js → chunk-3EB2AV3H.js} +2 -3
- package/dist/{chunk-ODT5H4MN.js → chunk-3LYWD3BO.js} +2 -2
- package/dist/{chunk-FAQGGX2Z.js → chunk-3TFDQLW3.js} +1 -1
- package/dist/{chunk-VYDFB6PJ.js → chunk-3U7S6ZUN.js} +50 -17
- package/dist/{chunk-A4E5YLXO.js → chunk-4B6LSFDS.js} +1 -1
- package/dist/{chunk-S6VG5ZFZ.js → chunk-4IJS5CPF.js} +1 -1
- package/dist/{chunk-UAN5NE7M.js → chunk-5AQBPHZD.js} +1 -1
- package/dist/{chunk-QWOPX2MN.js → chunk-5FYPE5GL.js} +2 -3
- package/dist/{chunk-CJKMURZO.js → chunk-5SZGKSGL.js} +1 -1
- package/dist/chunk-6VOS2GMB.js +54 -0
- package/dist/{chunk-RODMM35O.js → chunk-7Q7WDXHG.js} +5 -5
- package/dist/{chunk-JI5AVQLA.js → chunk-7WHDPLVJ.js} +1 -1
- package/dist/{chunk-QH3AKP2N.js → chunk-AC22RZKC.js} +2 -2
- package/dist/{chunk-ZITJKF6Z.js → chunk-AYB6AYNH.js} +1 -1
- package/dist/{chunk-Y5NQ2LMS.js → chunk-BY4N65PM.js} +1 -1
- package/dist/{chunk-YFW4MTK4.js → chunk-C7DKX453.js} +1 -1
- package/dist/{chunk-RCQXUT5K.js → chunk-CCAXYHQS.js} +1 -1
- package/dist/{chunk-4KP4RC3O.js → chunk-CI3VPIJN.js} +1 -1
- package/dist/{chunk-7T42VQQT.js → chunk-CPEPST4S.js} +1 -1
- package/dist/{chunk-AAOH2P6Y.js → chunk-DFK5EQTU.js} +5 -3
- package/dist/{chunk-GOSQXEZU.js → chunk-DFZMYB5X.js} +16 -10
- package/dist/{chunk-TGYDROIB.js → chunk-EBCHVFCS.js} +4 -4
- package/dist/{chunk-YDBC4DNW.js → chunk-FWYHRU7M.js} +1 -1
- package/dist/{chunk-CT4EZF62.js → chunk-G4ZW7A2W.js} +125 -33
- package/dist/chunk-GLSOD5Z4.js +33 -0
- package/dist/{chunk-LIXSV5YI.js → chunk-GPHWCK7M.js} +1 -1
- package/dist/{chunk-UQHKFF2N.js → chunk-GPWJCP3U.js} +1 -1
- package/dist/{chunk-77DRMDXR.js → chunk-HG5VF3TZ.js} +192 -67
- package/dist/{chunk-4JUKWWUD.js → chunk-HH2GKAAE.js} +1 -1
- package/dist/{chunk-QVE4GJAT.js → chunk-HJO4WCH6.js} +1 -1
- package/dist/{chunk-I3BSQUKN.js → chunk-HUVG2FFT.js} +1 -1
- package/dist/{chunk-3C3BRIMY.js → chunk-ILAEBSLJ.js} +3 -3
- package/dist/{chunk-GR55WT4R.js → chunk-IYO2N5ZH.js} +2 -2
- package/dist/{chunk-RWA4H2TV.js → chunk-J6ON5SYE.js} +1 -1
- package/dist/{chunk-NHBP2XS5.js → chunk-J6ZSH3F5.js} +49 -1
- package/dist/{chunk-AMNN4WDX.js → chunk-JBUMD6DS.js} +2 -2
- package/dist/{chunk-BWRGFKJP.js → chunk-K3IJQNB7.js} +2 -3
- package/dist/{chunk-LFNUH4GY.js → chunk-K4VP6ZKE.js} +1 -1
- package/dist/{chunk-ZR5VN5IV.js → chunk-KD2IRYCT.js} +2 -2
- package/dist/{chunk-SKOYC2CF.js → chunk-KK5OYNAF.js} +2 -1
- package/dist/{chunk-UB7TJEKZ.js → chunk-KV3ODJXH.js} +6 -7
- package/dist/chunk-LL5AFXU7.js +96 -0
- package/dist/{chunk-VYOKRN2I.js → chunk-LM3ISVJA.js} +1 -1
- package/dist/{chunk-O63MWA4G.js → chunk-LV4APO72.js} +10 -3
- package/dist/{chunk-B4EBHPK3.js → chunk-M5KZX5JE.js} +9 -2
- package/dist/{chunk-JODJS7MR.js → chunk-MDNVHIB2.js} +276 -47
- package/dist/{chunk-VOX3YRFO.js → chunk-MTMKIUWF.js} +4 -4
- package/dist/{chunk-HVNTQ36V.js → chunk-O37AQNLK.js} +4 -4
- package/dist/{chunk-HMPFGIWM.js → chunk-OMV5W53A.js} +10 -1
- package/dist/chunk-ONL54WMH.js +55 -0
- package/dist/{chunk-AKEZ3G5V.js → chunk-ONQKKHON.js} +1 -1
- package/dist/{chunk-LZHLSQYK.js → chunk-OOWPSBIS.js} +2 -2
- package/dist/{chunk-JQLTG4KH.js → chunk-ORT5IKHP.js} +62 -51
- package/dist/{chunk-4KWOKX2B.js → chunk-OSKJZNBT.js} +1 -1
- package/dist/{chunk-EHQTPVV4.js → chunk-PLTCDSTU.js} +1 -1
- package/dist/{chunk-5OM447RW.js → chunk-PZKHBB7D.js} +1 -1
- package/dist/{chunk-VEB5ERRE.js → chunk-QWNVSR6G.js} +2 -2
- package/dist/{chunk-IG75YMUN.js → chunk-RTPQDNW3.js} +1 -1
- package/dist/{chunk-SVSCLHHI.js → chunk-SZZRIHGT.js} +1 -1
- package/dist/{chunk-EBNI36UQ.js → chunk-T46NR3WP.js} +3 -3
- package/dist/{chunk-FPS3JIPQ.js → chunk-TC7DJTXI.js} +1 -1
- package/dist/{chunk-W5J7R5EB.js → chunk-TEUQWOWZ.js} +1 -1
- package/dist/chunk-THROPJZC.js +115 -0
- package/dist/{chunk-IDBHX5SR.js → chunk-TRQCHF2F.js} +1 -1
- package/dist/{chunk-M3LUNN7F.js → chunk-TYKQ33CL.js} +13 -2
- package/dist/{chunk-VVRL27HM.js → chunk-ULPL26BU.js} +2 -2
- package/dist/{chunk-6AH2XJ3Q.js → chunk-UNXLTJU7.js} +3 -3
- package/dist/{chunk-FC4YTTFJ.js → chunk-UQGFHNDI.js} +2 -3
- package/dist/{chunk-EBJREOKS.js → chunk-UXXJDIYE.js} +4 -4
- package/dist/{chunk-5LUI3WQP.js → chunk-V43UVX4H.js} +1 -1
- package/dist/{chunk-W4XYY73O.js → chunk-VHZ3AXJD.js} +1 -1
- package/dist/{chunk-HJEVSQN6.js → chunk-VL6CUNSX.js} +11 -5
- package/dist/{chunk-XDTYBF2F.js → chunk-W5XCNEZC.js} +39 -1
- package/dist/{chunk-LDJ3J4TQ.js → chunk-WGD2HX2A.js} +1 -1
- package/dist/{chunk-FQCLKD7U.js → chunk-WKEPORNM.js} +1 -1
- package/dist/{chunk-I3KKZ2O3.js → chunk-XEGZHHRH.js} +45 -36
- package/dist/{chunk-IKB6HFGK.js → chunk-XO7PUL4F.js} +6 -4
- package/dist/chunk-XV32RKQZ.js +142 -0
- package/dist/{chunk-TBMDMXEX.js → chunk-YA3AWELW.js} +1 -1
- package/dist/{chunk-HVIX5ECM.js → chunk-YEVG2X5R.js} +1 -1
- package/dist/chunk-YZFLH463.js +215 -0
- package/dist/{chunk-P4BOXB6E.js → chunk-Z6GFMI2Z.js} +6 -7
- package/dist/{chunk-YEKYVJQR.js → chunk-ZNBLFCQS.js} +2 -2
- package/dist/generated/index.d.ts +4 -0
- package/dist/generated/index.js +107 -104
- package/dist/index.js +107 -104
- package/dist/styles.css +1648 -235
- package/package.json +3 -3
- package/dist/AccessDeniedCard-WXM5DBDZ.css +0 -8
- package/dist/CanvasBoard-ZLPDINSM.css +0 -236
- package/dist/DocTabsEditor-RCOWHX5J.css +0 -78
- package/dist/PresenterView-T2C6ZZ3N.css +0 -103
- package/dist/SandboxedFrame-L6HBQZCD.css +0 -50
- package/dist/chunk-ALMSY7RL.js +0 -74
- package/dist/chunk-LR5QTFOE.js +0 -105
- package/dist/chunk-OGAAHVF6.js +0 -107
- package/dist/chunk-UZ7ZUSLH.js +0 -179
- package/dist/utils/useMediaMatch.d.ts +0 -12
- /package/dist/{chunk-OC46246T.js → chunk-2JJIN6JN.js} +0 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The floating palette of a canvas's tools: Move, Hand, and whatever a surface
|
|
3
|
+
* places (a text, a sticky), one of them in hand at a time.
|
|
4
|
+
*
|
|
5
|
+
* WHAT IT IS. A toolbar (one tab stop, walked with the arrows; see Toolbar)
|
|
6
|
+
* of toggle buttons, exactly one pressed. Each tool names its key, and the tip
|
|
7
|
+
* that opens on hover or focus says it, so a reader learns `V` and `H` from the
|
|
8
|
+
* palette rather than from a help page.
|
|
9
|
+
*
|
|
10
|
+
* WHAT IT IS NOT. It does not listen for the keys itself: which keys reach a
|
|
11
|
+
* canvas is the canvas's question (a page full of fields must not lose its `V`
|
|
12
|
+
* to a palette), so the surface that holds the tools matches its own presses
|
|
13
|
+
* against [toolForKey] and sets the tool it finds.
|
|
14
|
+
*
|
|
15
|
+
* Drawn as a glass bar like the canvas's zoom bar, so the two read as one
|
|
16
|
+
* family of chrome over the field.
|
|
17
|
+
*/
|
|
18
|
+
import type { ReactNode } from 'react';
|
|
19
|
+
/** One tool in the palette. */
|
|
20
|
+
export interface CanvasTool<Id extends string = string> {
|
|
21
|
+
id: Id;
|
|
22
|
+
/** What the tool does, in words: its accessible name and the tip's first words. */
|
|
23
|
+
label: string;
|
|
24
|
+
/** The glyph. A component from @crewlethq/icons/glyphs. */
|
|
25
|
+
icon: ReactNode;
|
|
26
|
+
/**
|
|
27
|
+
* The key that picks the tool, as Kbd names it: one letter, pressed alone.
|
|
28
|
+
* A letter rather than a chord, because a tool is picked dozens of times a
|
|
29
|
+
* minute and design tools have taught every reader their letters.
|
|
30
|
+
*/
|
|
31
|
+
shortcut: string;
|
|
32
|
+
}
|
|
33
|
+
export interface CanvasToolbarProps<Id extends string = string> {
|
|
34
|
+
/** The palette's accessible name, such as "Tools". */
|
|
35
|
+
label: string;
|
|
36
|
+
tools: readonly CanvasTool<Id>[];
|
|
37
|
+
/** The tool in hand. */
|
|
38
|
+
value: Id;
|
|
39
|
+
onChange: (id: Id) => void;
|
|
40
|
+
className?: string | undefined;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The tool a key press picks, or undefined. A bare letter only: a press with
|
|
44
|
+
* Control, Command or Alt is somebody else's chord, and Shift is a different
|
|
45
|
+
* key in every design tool.
|
|
46
|
+
*/
|
|
47
|
+
export declare function toolForKey<Id extends string>(tools: readonly CanvasTool<Id>[], event: Pick<KeyboardEvent, 'key' | 'ctrlKey' | 'metaKey' | 'altKey' | 'shiftKey'>): Id | undefined;
|
|
48
|
+
export declare function CanvasToolbar<Id extends string>({ label, tools, value, onChange, className, }: CanvasToolbarProps<Id>): import("react").JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { CanvasToolbar, toolForKey } from '../chunk-GLSOD5Z4.js';
|
|
2
|
+
import '../chunk-PGRPNDWM.js';
|
|
3
|
+
import '../chunk-22UEIXZE.js';
|
|
4
|
+
import '../chunk-LM3ISVJA.js';
|
|
5
|
+
import '../chunk-SMBKXWML.js';
|
|
6
|
+
import '../chunk-5FYPE5GL.js';
|
|
7
|
+
import '../chunk-OMV5W53A.js';
|
|
8
|
+
import '../chunk-R25RGPUB.js';
|
|
9
|
+
import '../chunk-OG6CL3EB.js';
|
|
10
|
+
import '../chunk-4FQT6ZAY.js';
|
|
11
|
+
import '../chunk-BZFWDIV6.js';
|
|
12
|
+
import '../chunk-ODEQTPFM.js';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* A canvas's tool palette (CanvasToolbar.tsx): the zoom bar's glass surface
|
|
3
|
+
* and its control step (the small one, which every toolbar and panel control
|
|
4
|
+
* takes), so the two bars stand the same height on the field's foot,
|
|
5
|
+
* with the tool in hand drawn SOLID in the accent rather than the soft tint a
|
|
6
|
+
* toggle takes elsewhere, because it is the one fact about the palette a
|
|
7
|
+
* reader checks from across the field before every press.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
.crewlet-canvas-toolbar.crewlet-toolbar {
|
|
11
|
+
display: inline-flex;
|
|
12
|
+
align-items: center;
|
|
13
|
+
gap: var(--spacing-1);
|
|
14
|
+
padding: var(--spacing-1);
|
|
15
|
+
background: var(--color-surface-glass);
|
|
16
|
+
backdrop-filter: blur(var(--blur-sm));
|
|
17
|
+
border: 1px solid var(--color-border-default);
|
|
18
|
+
border-radius: var(--radius-md);
|
|
19
|
+
box-shadow: var(--shadow-xs);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.crewlet-canvas-toolbar .crewlet-icon-btn {
|
|
23
|
+
border-radius: var(--radius-chip);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.crewlet-canvas-toolbar .crewlet-icon-btn[aria-pressed='true'] {
|
|
27
|
+
color: var(--color-text-on-accent);
|
|
28
|
+
background: var(--color-brand-accent);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.crewlet-canvas-toolbar .crewlet-icon-btn[aria-pressed='true']:hover:not(:disabled) {
|
|
32
|
+
color: var(--color-text-on-accent);
|
|
33
|
+
background: var(--color-brand-accent-hover);
|
|
34
|
+
}
|
package/dist/ChangeMark/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { ChangeMark } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { ChangeMark } from '../chunk-ZNBLFCQS.js';
|
|
2
|
+
import '../chunk-J6ZSH3F5.js';
|
|
3
3
|
import '../chunk-Z7JYG5TF.js';
|
|
4
4
|
import '../chunk-AYKXMIOR.js';
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
5
|
+
import '../chunk-5FYPE5GL.js';
|
|
6
|
+
import '../chunk-OMV5W53A.js';
|
|
7
7
|
import '../chunk-R25RGPUB.js';
|
|
8
8
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '../chunk-3L5NHASN.js';
|
|
2
|
-
export { CHARACTER_PICKER_COLUMNS, CharacterPicker } from '../chunk-
|
|
2
|
+
export { CHARACTER_PICKER_COLUMNS, CharacterPicker } from '../chunk-YEVG2X5R.js';
|
|
3
3
|
import '../chunk-RKKO7QHH.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-PZKHBB7D.js';
|
|
5
5
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
1
2
|
export interface ActivityBucket {
|
|
2
3
|
/** The bucket's start, epoch milliseconds. It is also the cell's key. */
|
|
3
4
|
t: number;
|
|
@@ -21,6 +22,20 @@ export interface ActivityStripProps {
|
|
|
21
22
|
total: number;
|
|
22
23
|
buckets: number;
|
|
23
24
|
}) => string;
|
|
25
|
+
/**
|
|
26
|
+
* Makes every cell READABLE, as every other chart's marks are: pointing at a
|
|
27
|
+
* cell, or walking the cells with ←/→ once the strip has focus, opens a
|
|
28
|
+
* tooltip with the bucket's time and value. Opt-in, because a strip is also
|
|
29
|
+
* a glance beside a row (a seat's last hour on Live), where a tab stop and a
|
|
30
|
+
* tooltip on every row of a list would be noise; a strip that is a figure of
|
|
31
|
+
* its own, on a dashboard, passes it.
|
|
32
|
+
*/
|
|
33
|
+
reading?: {
|
|
34
|
+
formatTime: (at: number) => string;
|
|
35
|
+
format?: (value: number) => string;
|
|
36
|
+
} | undefined;
|
|
37
|
+
/** What the strip says in place of the cells when it has no bucket. */
|
|
38
|
+
emptyLabel?: ReactNode;
|
|
24
39
|
className?: string;
|
|
25
40
|
}
|
|
26
41
|
/**
|
|
@@ -42,4 +57,4 @@ export interface ActivityStripProps {
|
|
|
42
57
|
* ONE IMAGE, not sixty. The cells are marks in a single picture, so the
|
|
43
58
|
* strip is the `img` and its label is the sentence.
|
|
44
59
|
*/
|
|
45
|
-
export declare function ActivityStrip({ buckets, label, summary, className }: ActivityStripProps): import("react").JSX.Element;
|
|
60
|
+
export declare function ActivityStrip({ buckets, label, summary, reading, emptyLabel, className, }: ActivityStripProps): import("react").JSX.Element;
|
package/dist/Charts/BarList.d.ts
CHANGED
|
@@ -26,6 +26,12 @@ export interface BarDatum {
|
|
|
26
26
|
display?: ReactNode;
|
|
27
27
|
/** A second line under the label. */
|
|
28
28
|
sub?: ReactNode;
|
|
29
|
+
/**
|
|
30
|
+
* The bar's hue. Defaults to the first data hue for EVERY row: a ranked
|
|
31
|
+
* list is one series, and a hue per rank (blue, orange, green, amber, then
|
|
32
|
+
* the residual grey) gave five rows five identities the data does not have
|
|
33
|
+
* and painted the tail as "the rest" although every row is named.
|
|
34
|
+
*/
|
|
29
35
|
color?: string;
|
|
30
36
|
/** Where the row leads. A link, wherever the destination is an address. */
|
|
31
37
|
href?: string;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface ChartEmptyProps {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
/**
|
|
5
|
+
* The height of the plot it stands in for, as a CSS length, so a chart with
|
|
6
|
+
* nothing to draw keeps the height it would have drawn and a row of figures
|
|
7
|
+
* stays even. Left out, it is as tall as its sentence, or as its container
|
|
8
|
+
* when that is given a height.
|
|
9
|
+
*/
|
|
10
|
+
height?: string | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Where the sentence stands: `center`, the default, in the middle of the
|
|
13
|
+
* plot it stands in for; `start` at the start of a list, where its rows
|
|
14
|
+
* would have begun.
|
|
15
|
+
*/
|
|
16
|
+
align?: 'center' | 'start' | undefined;
|
|
17
|
+
className?: string | undefined;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* What a chart says when it has nothing to draw.
|
|
21
|
+
*
|
|
22
|
+
* ONE SENTENCE IN THE CHART'S PLACE, the same for every chart in the kit. A
|
|
23
|
+
* chart of no data drew its scaffolding (an empty grid, a scale of 0 to 4, a
|
|
24
|
+
* track with nothing on it, a window starting at the epoch), which is a
|
|
25
|
+
* picture of a measurement that was never taken.
|
|
26
|
+
*
|
|
27
|
+
* IN THE MIDDLE OF THE PLOT, AT ITS HEIGHT. At the top left of a tall empty
|
|
28
|
+
* card the sentence read as a card that had failed to draw; centred in the
|
|
29
|
+
* area the plot would have filled, in the quiet ink, it reads as a chart with
|
|
30
|
+
* nothing in it, and the card keeps its height. A list's sentence stands
|
|
31
|
+
* where its rows would have begun (`align="start"`).
|
|
32
|
+
*/
|
|
33
|
+
export declare function ChartEmpty({ children, height, align, className }: ChartEmptyProps): import("react").JSX.Element;
|
package/dist/Charts/Legend.d.ts
CHANGED
|
@@ -12,6 +12,12 @@ export interface LegendItem {
|
|
|
12
12
|
color?: string;
|
|
13
13
|
/** The number beside the name, where the legend doubles as the readout. */
|
|
14
14
|
value?: ReactNode;
|
|
15
|
+
/**
|
|
16
|
+
* The key's shape, which MIRRORS THE MARK it names: a `swatch` for a fill
|
|
17
|
+
* (a bar, a column, a part of a whole), the default, and a `line` for a
|
|
18
|
+
* series drawn as a line, so a reader matches a stroke to a stroke.
|
|
19
|
+
*/
|
|
20
|
+
shape?: 'swatch' | 'line';
|
|
15
21
|
}
|
|
16
22
|
export interface LegendProps {
|
|
17
23
|
items: LegendItem[];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
1
2
|
export interface StackedSegment {
|
|
2
3
|
/** Keyed by id, so a push that re-ranks the parts moves no other part. */
|
|
3
4
|
id: string;
|
|
@@ -22,6 +23,8 @@ export interface StackedBarProps {
|
|
|
22
23
|
* Defaults to the reader's own number format.
|
|
23
24
|
*/
|
|
24
25
|
format?: (value: number) => string;
|
|
26
|
+
/** What the bar says in place of the track when no part holds anything. */
|
|
27
|
+
emptyLabel?: ReactNode;
|
|
25
28
|
className?: string;
|
|
26
29
|
}
|
|
27
30
|
/**
|
|
@@ -53,4 +56,4 @@ export interface StackedBarProps {
|
|
|
53
56
|
* `segments`, zero parts included, so the swatch in its reading is the hue the
|
|
54
57
|
* Legend keyed from the same list shows.
|
|
55
58
|
*/
|
|
56
|
-
export declare function StackedBar({ segments, summary, format, className }: StackedBarProps): import("react").JSX.Element;
|
|
59
|
+
export declare function StackedBar({ segments, summary, format, emptyLabel, className, }: StackedBarProps): import("react").JSX.Element;
|
|
@@ -9,7 +9,10 @@ export interface StackedColumnsSeries {
|
|
|
9
9
|
export interface StackedColumnsBucket {
|
|
10
10
|
/** The bucket's start, epoch milliseconds. It is the column's identity. */
|
|
11
11
|
t: number;
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Each series' value in this bucket, by series id. A missing id is zero. A
|
|
14
|
+
* negative value stands below the zero line, its parts stacked down from it.
|
|
15
|
+
*/
|
|
13
16
|
values: Readonly<Record<string, number>>;
|
|
14
17
|
}
|
|
15
18
|
/**
|
|
@@ -66,10 +69,18 @@ export interface StackedColumnsProps {
|
|
|
66
69
|
* a plot given none.
|
|
67
70
|
*/
|
|
68
71
|
minHeight?: string;
|
|
69
|
-
/** How a value reads out,
|
|
72
|
+
/** How a value reads out, in the tooltip and the summary. Defaults to a compact number. */
|
|
70
73
|
format?: (value: number) => string;
|
|
74
|
+
/**
|
|
75
|
+
* How the scale's words read. Defaults to `format`. A scale is read at a
|
|
76
|
+
* glance, so a caller whose values carry a unit or every digit ("7,500 USD")
|
|
77
|
+
* passes the short form here and keeps the exact one for the tooltip.
|
|
78
|
+
*/
|
|
79
|
+
formatScale?: (value: number) => string;
|
|
71
80
|
/** How a bucket reads out, under the plot and in the tooltip. Defaults to the reader's date. */
|
|
72
81
|
formatTime?: (at: number) => string;
|
|
82
|
+
/** What the chart says in place of the plot when there is no bucket to draw. */
|
|
83
|
+
emptyLabel?: ReactNode;
|
|
73
84
|
/** The chart's own sentence. The default names the window, the tallest column and each series' total. */
|
|
74
85
|
summary?: (facts: {
|
|
75
86
|
from: number | null;
|
|
@@ -132,4 +143,4 @@ export declare function niceScale(peak: number, steps?: number): {
|
|
|
132
143
|
* gap and a true 4px corner at any width, which a stretched SVG cannot, and no
|
|
133
144
|
* style element is ever drawn.
|
|
134
145
|
*/
|
|
135
|
-
export declare function StackedColumns({ series, buckets, hidden, label, legend, head, height, minHeight, format, formatTime, summary, className, }: StackedColumnsProps): import("react").JSX.Element;
|
|
146
|
+
export declare function StackedColumns({ series, buckets, hidden, label, legend, head, height, minHeight, format, formatScale, formatTime, emptyLabel, summary, className, }: StackedColumnsProps): import("react").JSX.Element;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
1
2
|
export interface SeriesPoint {
|
|
2
3
|
/** The bucket's start, epoch milliseconds. */
|
|
3
4
|
t: number;
|
|
@@ -42,6 +43,15 @@ export interface TimeSeriesProps {
|
|
|
42
43
|
peak: number;
|
|
43
44
|
}[];
|
|
44
45
|
}) => string;
|
|
46
|
+
/**
|
|
47
|
+
* Where the legend goes: `below`, the default, under the scale, or `none`
|
|
48
|
+
* for a screen that names the series somewhere the chart cannot reach, such
|
|
49
|
+
* as a card whose title names its one series. A split that answered one band
|
|
50
|
+
* still draws its key: nothing else names the band.
|
|
51
|
+
*/
|
|
52
|
+
legend?: 'below' | 'none';
|
|
53
|
+
/** What the chart says in place of the plot when no series has a point. */
|
|
54
|
+
emptyLabel?: ReactNode;
|
|
45
55
|
className?: string;
|
|
46
56
|
}
|
|
47
57
|
/**
|
|
@@ -72,7 +82,7 @@ export interface TimeSeriesProps {
|
|
|
72
82
|
* contrast floors the palette suite measures, and a library's theming surface
|
|
73
83
|
* is a second design system to keep in step with this one.
|
|
74
84
|
*/
|
|
75
|
-
export declare function TimeSeries({ series, from, to, label, height, format, formatTime, summary, className, }: TimeSeriesProps): import("react").JSX.Element;
|
|
85
|
+
export declare function TimeSeries({ series, from, to, label, height, format, formatTime, summary, legend, emptyLabel, className, }: TimeSeriesProps): import("react").JSX.Element;
|
|
76
86
|
export interface SparklineProps {
|
|
77
87
|
values: readonly number[];
|
|
78
88
|
/**
|
package/dist/Charts/index.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export { TimeSeries, Sparkline } from './TimeSeries.js';
|
|
|
12
12
|
export type { Series, SeriesPoint, SparklineProps, TimeSeriesProps } from './TimeSeries.js';
|
|
13
13
|
export { StackedColumns, niceScale } from './StackedColumns.js';
|
|
14
14
|
export type { StackedColumnsBucket, StackedColumnsHeight, StackedColumnsLegend, StackedColumnsProps, StackedColumnsSeries, } from './StackedColumns.js';
|
|
15
|
+
export { ChartEmpty } from './ChartEmpty.js';
|
|
16
|
+
export type { ChartEmptyProps } from './ChartEmpty.js';
|
|
15
17
|
export { ChartTooltip } from './ChartTooltip.js';
|
|
16
18
|
export type { ChartTooltipProps, ChartTooltipRow } from './ChartTooltip.js';
|
|
17
19
|
export { useChartHover } from './useChartHover.js';
|
package/dist/Charts/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { ActivityStrip, BarList, ChartTooltip, DATA_COLORS, DATA_COLOR_OTHER, Legend, Sparkline, StackedBar, StackedColumns, TimeSeries, dataColor, niceScale, useChartHover } from '../chunk-
|
|
1
|
+
export { ActivityStrip, BarList, ChartEmpty, ChartTooltip, DATA_COLORS, DATA_COLOR_OTHER, Legend, Sparkline, StackedBar, StackedColumns, TimeSeries, dataColor, niceScale, useChartHover } from '../chunk-HG5VF3TZ.js';
|
|
2
2
|
import '../chunk-BZFWDIV6.js';
|
|
3
3
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -39,6 +39,12 @@
|
|
|
39
39
|
background: var(--crewlet-legend-swatch-color, var(--color-data-other));
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
.crewlet-legend__swatch--line {
|
|
43
|
+
width: 12px;
|
|
44
|
+
height: 2px;
|
|
45
|
+
border-radius: calc(var(--radius-xs) / 4);
|
|
46
|
+
}
|
|
47
|
+
|
|
42
48
|
.crewlet-legend__label {
|
|
43
49
|
overflow: hidden;
|
|
44
50
|
text-overflow: ellipsis;
|
|
@@ -157,7 +163,7 @@
|
|
|
157
163
|
*/
|
|
158
164
|
.crewlet-bar-list__sub,
|
|
159
165
|
.crewlet-bar-list__more,
|
|
160
|
-
.crewlet-
|
|
166
|
+
.crewlet-chart-empty {
|
|
161
167
|
font-size: var(--font-size-xs);
|
|
162
168
|
color: var(--color-text-tertiary);
|
|
163
169
|
}
|
|
@@ -174,9 +180,22 @@
|
|
|
174
180
|
* A card draws its own content in a body now, so a padding here is the panel's
|
|
175
181
|
* inset a second time.
|
|
176
182
|
*/
|
|
177
|
-
.crewlet-
|
|
183
|
+
.crewlet-chart-empty {
|
|
184
|
+
box-sizing: border-box;
|
|
185
|
+
display: flex;
|
|
186
|
+
align-items: center;
|
|
187
|
+
justify-content: center;
|
|
188
|
+
height: 100%;
|
|
178
189
|
margin: 0;
|
|
179
190
|
padding: 0;
|
|
191
|
+
line-height: var(--font-line-height-normal);
|
|
192
|
+
text-align: center;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.crewlet-chart-empty--start {
|
|
196
|
+
display: block;
|
|
197
|
+
height: auto;
|
|
198
|
+
text-align: start;
|
|
180
199
|
}
|
|
181
200
|
|
|
182
201
|
.crewlet-bar-list__sub {
|
|
@@ -403,6 +422,8 @@
|
|
|
403
422
|
row-gap: var(--spacing-1);
|
|
404
423
|
margin: 0;
|
|
405
424
|
min-width: 0;
|
|
425
|
+
/* Measured by its own width, for the dates under the plot. */
|
|
426
|
+
container: crewlet-stacked-columns / inline-size;
|
|
406
427
|
}
|
|
407
428
|
|
|
408
429
|
/*
|
|
@@ -427,12 +448,16 @@
|
|
|
427
448
|
align-items: flex-end;
|
|
428
449
|
}
|
|
429
450
|
|
|
451
|
+
/*
|
|
452
|
+
* The scale's words are set as the dates under the plot are, the sans at the
|
|
453
|
+
* caption step with tabular figures, so the two axes of one chart read as one
|
|
454
|
+
* scale. They were the mono at the step below, beside dates in the sans.
|
|
455
|
+
*/
|
|
430
456
|
.crewlet-stacked-columns__tick {
|
|
431
457
|
display: flex;
|
|
432
458
|
align-items: center;
|
|
433
459
|
height: 0;
|
|
434
|
-
font-
|
|
435
|
-
font-size: var(--font-size-2xs);
|
|
460
|
+
font-size: var(--font-size-xs);
|
|
436
461
|
line-height: var(--font-line-height-tight);
|
|
437
462
|
color: var(--color-text-tertiary);
|
|
438
463
|
font-variant-numeric: tabular-nums;
|
|
@@ -447,7 +472,7 @@
|
|
|
447
472
|
* keeps that half line above the plot itself.
|
|
448
473
|
*/
|
|
449
474
|
.crewlet-stacked-columns--headless {
|
|
450
|
-
padding-block-start: calc(var(--font-size-
|
|
475
|
+
padding-block-start: calc(var(--font-size-xs) * var(--font-line-height-tight) / 2);
|
|
451
476
|
}
|
|
452
477
|
|
|
453
478
|
.crewlet-stacked-columns__plot {
|
|
@@ -497,14 +522,23 @@
|
|
|
497
522
|
/*
|
|
498
523
|
* THE COLUMN IS ITS TOTAL'S HEIGHT (a style property), and its parts share it
|
|
499
524
|
* by value, first series at the baseline. They stand 2px apart for the reason
|
|
500
|
-
* a stacked bar's do, and the gap comes out of the parts.
|
|
525
|
+
* a stacked bar's do, and the gap comes out of the parts. It stands on the
|
|
526
|
+
* zero line (a style property), centred in its slot; the column of a
|
|
527
|
+
* bucket's negative parts hangs from the same line, first series nearest it.
|
|
501
528
|
*/
|
|
502
529
|
.crewlet-stacked-columns__column {
|
|
530
|
+
position: absolute;
|
|
531
|
+
inset-inline-start: 50%;
|
|
503
532
|
display: flex;
|
|
504
533
|
flex-direction: column-reverse;
|
|
505
534
|
gap: 2px;
|
|
506
535
|
width: 63%;
|
|
507
|
-
max-width: var(--spacing-
|
|
536
|
+
max-width: var(--spacing-6);
|
|
537
|
+
transform: translateX(-50%);
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
.crewlet-stacked-columns__column--below {
|
|
541
|
+
flex-direction: column;
|
|
508
542
|
}
|
|
509
543
|
|
|
510
544
|
.crewlet-stacked-columns__segment {
|
|
@@ -516,13 +550,19 @@
|
|
|
516
550
|
background: var(--crewlet-stacked-columns-segment-color, var(--color-data-other));
|
|
517
551
|
}
|
|
518
552
|
|
|
519
|
-
/* The VALUE END: the top of the topmost part, rounded at the smallest step
|
|
520
|
-
|
|
521
|
-
.
|
|
553
|
+
/* The VALUE END: the top of the topmost part, rounded at the smallest step
|
|
554
|
+
(the foot of the lowest one, below zero). The end on the zero line stays
|
|
555
|
+
square, where every column starts. */
|
|
556
|
+
.crewlet-stacked-columns__column:not(.crewlet-stacked-columns__column--below) > .crewlet-stacked-columns__segment:last-child {
|
|
522
557
|
border-top-left-radius: var(--radius-xs);
|
|
523
558
|
border-top-right-radius: var(--radius-xs);
|
|
524
559
|
}
|
|
525
560
|
|
|
561
|
+
.crewlet-stacked-columns__column--below > .crewlet-stacked-columns__segment:last-child {
|
|
562
|
+
border-bottom-left-radius: var(--radius-xs);
|
|
563
|
+
border-bottom-right-radius: var(--radius-xs);
|
|
564
|
+
}
|
|
565
|
+
|
|
526
566
|
.crewlet-stacked-columns__scale {
|
|
527
567
|
position: relative;
|
|
528
568
|
grid-column: 2;
|
|
@@ -574,7 +614,9 @@
|
|
|
574
614
|
margin-top: var(--spacing-2);
|
|
575
615
|
}
|
|
576
616
|
|
|
577
|
-
/* The middle label stands on the column it names (a style property).
|
|
617
|
+
/* The middle label stands on the column it names (a style property). On a
|
|
618
|
+
chart too narrow for three dates it leaves the line to the two ends, which
|
|
619
|
+
it ran into; the tooltip reads every column's date. */
|
|
578
620
|
.crewlet-stacked-columns__middle {
|
|
579
621
|
position: absolute;
|
|
580
622
|
top: 0;
|
|
@@ -582,6 +624,16 @@
|
|
|
582
624
|
white-space: nowrap;
|
|
583
625
|
}
|
|
584
626
|
|
|
627
|
+
.crewlet-stacked-columns__scale > span {
|
|
628
|
+
white-space: nowrap;
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
@container crewlet-stacked-columns (width < 22rem) {
|
|
632
|
+
.crewlet-stacked-columns__middle {
|
|
633
|
+
display: none;
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
|
|
585
637
|
/* ─── The reading layer: a focusable plot and its tooltip ─────── */
|
|
586
638
|
|
|
587
639
|
/*
|
|
@@ -681,13 +733,18 @@
|
|
|
681
733
|
background: var(--crewlet-chart-tooltip-swatch-color, var(--color-data-other));
|
|
682
734
|
}
|
|
683
735
|
|
|
736
|
+
/* A name too long for the box ends in an ellipsis before its value: it ran
|
|
737
|
+
under the number ("lifec1,397 USD"). The value is never cut. */
|
|
684
738
|
.crewlet-chart-tooltip__name {
|
|
685
739
|
flex: 1;
|
|
686
740
|
min-width: 0;
|
|
741
|
+
overflow: hidden;
|
|
742
|
+
text-overflow: ellipsis;
|
|
687
743
|
color: var(--color-text-secondary);
|
|
688
744
|
}
|
|
689
745
|
|
|
690
746
|
.crewlet-chart-tooltip__value {
|
|
747
|
+
flex: none;
|
|
691
748
|
color: var(--color-text-primary);
|
|
692
749
|
font-variant-numeric: tabular-nums;
|
|
693
750
|
}
|
|
@@ -710,9 +767,14 @@
|
|
|
710
767
|
width: 100%;
|
|
711
768
|
}
|
|
712
769
|
|
|
770
|
+
/*
|
|
771
|
+
* A cell shares the strip's width with the others, up to a column's width,
|
|
772
|
+
* so a strip of one day is one mark rather than a slab across the figure.
|
|
773
|
+
*/
|
|
713
774
|
.crewlet-activity-strip__cell {
|
|
714
775
|
flex: 1;
|
|
715
776
|
min-width: var(--crewlet-activity-strip-cell-min-width, 2px);
|
|
777
|
+
max-width: var(--crewlet-activity-strip-cell-max-width, var(--spacing-6));
|
|
716
778
|
height: var(--crewlet-activity-strip-fill, 10%);
|
|
717
779
|
/*
|
|
718
780
|
* A quarter of the smallest step. A cell is two pixels wide, so at the step
|
|
@@ -730,6 +792,12 @@
|
|
|
730
792
|
background: var(--color-data-1);
|
|
731
793
|
}
|
|
732
794
|
|
|
795
|
+
/* The cell being read lifts, as a column being read does, by the hover step
|
|
796
|
+
behind it rather than by a second colour. */
|
|
797
|
+
.crewlet-activity-strip__cell.is-read {
|
|
798
|
+
box-shadow: 0 0 0 2px var(--color-surface-hover);
|
|
799
|
+
}
|
|
800
|
+
|
|
733
801
|
/* ─── Time series, and the sparkline beside a number ──────────── */
|
|
734
802
|
|
|
735
803
|
/*
|
|
@@ -756,14 +824,16 @@
|
|
|
756
824
|
}
|
|
757
825
|
|
|
758
826
|
/*
|
|
759
|
-
* The grid is
|
|
760
|
-
*
|
|
761
|
-
*
|
|
827
|
+
* The grid is a SOLID HAIRLINE in the default border, the ink the column
|
|
828
|
+
* chart's grid is drawn in. It was dashed, so that three lines would
|
|
829
|
+
* not read as three series, but a one pixel rule in a border ink beside a two
|
|
830
|
+
* pixel line in a data hue reads as neither, and a dash is how a chart says
|
|
831
|
+
* "projection" or "threshold". The lines carry no values of their own: the
|
|
832
|
+
* peak under the plot is the scale.
|
|
762
833
|
*/
|
|
763
834
|
.crewlet-chart__grid-line {
|
|
764
835
|
stroke: var(--color-border-default);
|
|
765
836
|
stroke-width: 1;
|
|
766
|
-
stroke-dasharray: 2 4;
|
|
767
837
|
}
|
|
768
838
|
|
|
769
839
|
/*
|
|
@@ -788,7 +858,34 @@
|
|
|
788
858
|
pointer-events: none;
|
|
789
859
|
}
|
|
790
860
|
|
|
791
|
-
/*
|
|
861
|
+
/*
|
|
862
|
+
* A POINT: a disc 8px across in its series' hue, cut out of the ground by a
|
|
863
|
+
* 2px ring of the card (`--crewlet-spark-ground`, as a sparkline's point is),
|
|
864
|
+
* centred on its value. It stands over the plot rather than in it, so it stays
|
|
865
|
+
* round at every width, and is drawn for a series of one point and for every
|
|
866
|
+
* series at the instant being read.
|
|
867
|
+
*/
|
|
868
|
+
.crewlet-time-series__dot {
|
|
869
|
+
position: absolute;
|
|
870
|
+
width: 8px;
|
|
871
|
+
height: 8px;
|
|
872
|
+
border-radius: 50%;
|
|
873
|
+
background: var(--crewlet-time-series-dot-color, var(--color-data-other));
|
|
874
|
+
box-shadow: 0 0 0 2px var(--crewlet-spark-ground, var(--color-surface-subtle));
|
|
875
|
+
transform: translate(-50%, -50%);
|
|
876
|
+
pointer-events: none;
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
/*
|
|
880
|
+
* The window's two ends and its peak, under the plot: the scale, as words.
|
|
881
|
+
* The ends hold their words whole and the range between them gives way, so a
|
|
882
|
+
* narrow chart never runs one into another; under 18rem the range leaves the
|
|
883
|
+
* line to the tooltip and the summary, which carry it too.
|
|
884
|
+
*/
|
|
885
|
+
.crewlet-time-series {
|
|
886
|
+
container: crewlet-time-series / inline-size;
|
|
887
|
+
}
|
|
888
|
+
|
|
792
889
|
.crewlet-time-series__scale {
|
|
793
890
|
display: flex;
|
|
794
891
|
justify-content: space-between;
|
|
@@ -799,6 +896,33 @@
|
|
|
799
896
|
font-variant-numeric: tabular-nums;
|
|
800
897
|
}
|
|
801
898
|
|
|
899
|
+
.crewlet-time-series__scale > span {
|
|
900
|
+
flex: none;
|
|
901
|
+
white-space: nowrap;
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
/* A window of one instant is drawn at the plot's middle, and so is its date. */
|
|
905
|
+
.crewlet-time-series__scale--instant {
|
|
906
|
+
justify-content: center;
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
.crewlet-time-series__scale > .crewlet-time-series__range {
|
|
910
|
+
flex: 0 1 auto;
|
|
911
|
+
min-width: 0;
|
|
912
|
+
overflow: hidden;
|
|
913
|
+
text-overflow: ellipsis;
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
@container crewlet-time-series (width < 18rem) {
|
|
917
|
+
.crewlet-time-series__range {
|
|
918
|
+
display: none;
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
.crewlet-time-series__legend {
|
|
923
|
+
margin-top: var(--spacing-2);
|
|
924
|
+
}
|
|
925
|
+
|
|
802
926
|
/*
|
|
803
927
|
* THE SPARKLINE: the plot stretched to the box, and, with `current`, one
|
|
804
928
|
* accent point on the last value.
|
package/dist/Checkbox/index.js
CHANGED
|
@@ -108,6 +108,17 @@
|
|
|
108
108
|
.crewlet-checkbox--sm {
|
|
109
109
|
--crewlet-checkbox-size: 14px;
|
|
110
110
|
|
|
111
|
+
/*
|
|
112
|
+
* ITS LINE IS CENTRED IN THE ROW. The row's floor was a minimum height with
|
|
113
|
+
* the label at its top, so in a form row of small inputs (whose text sits
|
|
114
|
+
* on their middle) the box and its label stood 5px above the line every
|
|
115
|
+
* other control's text was on. The floor is made of equal padding round
|
|
116
|
+
* the first line instead: one line comes out exactly the row's height with
|
|
117
|
+
* the text on its middle, and a longer label grows the row downwards with
|
|
118
|
+
* the box still on its first line.
|
|
119
|
+
*/
|
|
120
|
+
min-height: 0;
|
|
121
|
+
padding-block: calc((var(--size-row-sm) - var(--font-line-height-snug) * 1em) / 2);
|
|
111
122
|
font-size: var(--font-size-compact);
|
|
112
123
|
}
|
|
113
124
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export { CommandPalette } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { CommandPalette } from '../chunk-ULPL26BU.js';
|
|
2
|
+
import '../chunk-XEGZHHRH.js';
|
|
3
3
|
import '../chunk-F73MC7EZ.js';
|
|
4
4
|
import '../chunk-6QFAK2WV.js';
|
|
5
5
|
import '../chunk-SMBKXWML.js';
|
|
6
6
|
import '../chunk-BHHIIK3M.js';
|
|
7
7
|
import '../chunk-PQADV6P6.js';
|
|
8
|
-
import '../chunk-
|
|
8
|
+
import '../chunk-OMV5W53A.js';
|
|
9
9
|
import '../chunk-R25RGPUB.js';
|
|
10
10
|
import '../chunk-OG6CL3EB.js';
|
|
11
11
|
import '../chunk-4FQT6ZAY.js';
|