@crewlethq/ui 0.32.0 → 0.34.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 +149 -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 +14 -12
- package/dist/{ArtifactBar-MLMJHWY6.css → ArtifactBar-C462VD4C.css} +8 -3
- package/dist/ArtifactCard/ArtifactCard.d.ts +64 -6
- package/dist/ArtifactCard/index.d.ts +2 -2
- package/dist/ArtifactCard/index.js +6 -4
- package/dist/ArtifactCard-XHRLAL7C.css +289 -0
- package/dist/ArtifactCover/index.js +8 -6
- package/dist/ArtifactIcon/index.js +7 -5
- package/dist/ArtifactKindIllustration/ArtifactKindIllustration.d.ts +53 -0
- package/dist/ArtifactKindIllustration/index.d.ts +3 -0
- package/dist/ArtifactKindIllustration/index.js +3 -0
- package/dist/ArtifactKindIllustration-4NG6IE3C.css +211 -0
- 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 +33 -2
- package/dist/Canvas/index.d.ts +1 -1
- package/dist/Canvas/index.js +4 -4
- package/dist/{Canvas-LRVNW7XN.css → Canvas-VUG2HLZK.css} +23 -0
- package/dist/CanvasBoard/CanvasBoard.d.ts +38 -3
- package/dist/CanvasBoard/budget.d.ts +9 -3
- package/dist/CanvasBoard/index.d.ts +2 -2
- package/dist/CanvasBoard/index.js +7 -7
- package/dist/{CanvasBoard-MBZVBWDO.css → CanvasBoard-5NNSKY6A.css} +127 -6
- package/dist/CanvasToolbar/index.js +5 -5
- package/dist/{CanvasToolbar-AE5MXH7T.css → CanvasToolbar-EM5EVZED.css} +4 -2
- 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 +8 -8
- 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-YWBUJAQU.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/LivePreview/LivePreview.d.ts +83 -0
- package/dist/LivePreview/budget.d.ts +50 -0
- package/dist/LivePreview/index.d.ts +5 -0
- package/dist/LivePreview/index.js +2 -0
- package/dist/LivePreview-SRO7KHO4.css +65 -0
- 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/Select.d.ts +10 -0
- package/dist/Select/index.d.ts +1 -1
- package/dist/Select/index.js +2 -2
- package/dist/{Select-2P7AWUE4.css → Select-A54YS5EP.css} +29 -0
- 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 +7 -3
- package/dist/SheetGrid/index.js +8 -8
- package/dist/{SheetGrid-J3TKKXZL.css → SheetGrid-GDPCCZ4V.css} +154 -14
- 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/SheetModel/labels.d.ts +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 +9 -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/Tooltip.d.ts +12 -1
- package/dist/Tooltip/index.d.ts +1 -1
- package/dist/Tooltip/index.js +2 -2
- package/dist/TreeCanvas/index.js +5 -5
- 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-WJDQ7XQA.js → chunk-2QEDJSJC.js} +1 -1
- package/dist/{chunk-VYDFB6PJ.js → chunk-356JNSER.js} +50 -17
- package/dist/{chunk-2HIOJ4YZ.js → chunk-3EB2AV3H.js} +2 -3
- package/dist/{chunk-ODT5H4MN.js → chunk-3LYWD3BO.js} +2 -2
- package/dist/{chunk-OTN35CI4.js → chunk-3P4Y5RX6.js} +18 -6
- package/dist/{chunk-FAQGGX2Z.js → chunk-3TFDQLW3.js} +1 -1
- package/dist/{chunk-E6EWK5YY.js → chunk-3Y56GQPM.js} +3 -3
- package/dist/{chunk-A4E5YLXO.js → chunk-4B6LSFDS.js} +1 -1
- package/dist/{chunk-UAN5NE7M.js → chunk-5AQBPHZD.js} +1 -1
- package/dist/{chunk-CJKMURZO.js → chunk-5SZGKSGL.js} +1 -1
- package/dist/chunk-6VOS2GMB.js +54 -0
- package/dist/{chunk-QWOPX2MN.js → chunk-6ZJ3N7QI.js} +7 -5
- package/dist/{chunk-3ZAFJ4GK.js → chunk-7Q7WDXHG.js} +4 -4
- package/dist/{chunk-QH3AKP2N.js → chunk-AC22RZKC.js} +2 -2
- package/dist/{chunk-UZ6MA2V6.js → chunk-AORVEG5V.js} +2 -2
- package/dist/{chunk-ZITJKF6Z.js → chunk-AYB6AYNH.js} +1 -1
- package/dist/{chunk-FC4YTTFJ.js → chunk-BQ7AKL2N.js} +5 -5
- 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-JQLTG4KH.js → chunk-CCLNGVCM.js} +62 -51
- package/dist/{chunk-6AH2XJ3Q.js → chunk-CFAJP777.js} +3 -3
- 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-V5IGUXMZ.js → chunk-E4NNGC6X.js} +4 -4
- package/dist/{chunk-TGYDROIB.js → chunk-EBCHVFCS.js} +4 -4
- package/dist/{chunk-LWXRD6L6.js → chunk-EWAFN2IU.js} +118 -27
- package/dist/{chunk-YDBC4DNW.js → chunk-FWYHRU7M.js} +1 -1
- package/dist/{chunk-HVNTQ36V.js → chunk-GMU6SQ6B.js} +4 -4
- 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-QVE4GJAT.js → chunk-HJO4WCH6.js} +1 -1
- package/dist/{chunk-JI5AVQLA.js → chunk-HOIZ6MIS.js} +1 -1
- package/dist/{chunk-I3BSQUKN.js → chunk-HUVG2FFT.js} +1 -1
- package/dist/{chunk-VS3KOOOL.js → chunk-ILAEBSLJ.js} +3 -3
- package/dist/{chunk-P4BOXB6E.js → chunk-IUD5VA2Z.js} +6 -7
- package/dist/{chunk-GR55WT4R.js → chunk-IYO2N5ZH.js} +2 -2
- package/dist/{chunk-RWA4H2TV.js → chunk-J6ON5SYE.js} +1 -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-KF6YGL4B.js +160 -0
- 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-E6CR5PEV.js → chunk-LV4APO72.js} +8 -2
- package/dist/{chunk-B4EBHPK3.js → chunk-M5KZX5JE.js} +9 -2
- 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-4KWOKX2B.js → chunk-OSKJZNBT.js} +1 -1
- package/dist/{chunk-4JUKWWUD.js → chunk-PLDUNXAO.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-YEKYVJQR.js → chunk-SGHIAGPR.js} +2 -2
- 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-UDQW6UK7.js +129 -0
- package/dist/{chunk-WTNUVQVI.js → chunk-UHJQDFKQ.js} +1 -1
- package/dist/{chunk-VVRL27HM.js → chunk-ULPL26BU.js} +2 -2
- 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-NHBP2XS5.js → chunk-VI5FWDZW.js} +51 -3
- 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-PJD2KFHX.js → chunk-WPX6A5BV.js} +38 -13
- package/dist/{chunk-I3KKZ2O3.js → chunk-XEGZHHRH.js} +45 -36
- package/dist/{chunk-IKB6HFGK.js → chunk-XO7PUL4F.js} +6 -4
- package/dist/chunk-XTOVADJU.js +170 -0
- 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/generated/index.d.ts +5 -0
- package/dist/generated/index.js +112 -108
- package/dist/index.js +112 -108
- package/dist/styles.css +1982 -228
- package/package.json +3 -3
- package/dist/AccessDeniedCard-WXM5DBDZ.css +0 -8
- package/dist/ArtifactCard-EXVAEBV6.css +0 -109
- package/dist/DocTabsEditor-RCOWHX5J.css +0 -78
- package/dist/PresenterView-T2C6ZZ3N.css +0 -103
- package/dist/SandboxedFrame-L6HBQZCD.css +0 -50
- package/dist/chunk-CRKFL423.js +0 -74
- package/dist/chunk-GOSQXEZU.js +0 -102
- package/dist/chunk-MBNFJSZS.js +0 -107
- package/dist/chunk-RV7SZAHR.js +0 -105
- package/dist/chunk-UZ7ZUSLH.js +0 -179
- package/dist/utils/useMediaMatch.d.ts +0 -12
- /package/dist/{chunk-TF2P3OPS.js → chunk-YCARLYI6.js} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { VisuallyHidden } from './chunk-BZFWDIV6.js';
|
|
2
2
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
3
|
-
import './Charts-
|
|
3
|
+
import './Charts-MBJG72BS.css';
|
|
4
4
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
5
5
|
import { useState, useRef, useCallback, useId } from 'react';
|
|
6
6
|
|
|
@@ -29,7 +29,7 @@ function Legend({ items, className }) {
|
|
|
29
29
|
/* @__PURE__ */ jsx(
|
|
30
30
|
"span",
|
|
31
31
|
{
|
|
32
|
-
className: "crewlet-legend__swatch",
|
|
32
|
+
className: cx("crewlet-legend__swatch", item.shape === "line" && "crewlet-legend__swatch--line"),
|
|
33
33
|
"aria-hidden": true,
|
|
34
34
|
style: { "--crewlet-legend-swatch-color": item.color ?? dataColor(index) }
|
|
35
35
|
}
|
|
@@ -39,6 +39,16 @@ function Legend({ items, className }) {
|
|
|
39
39
|
] }, item.id)) })
|
|
40
40
|
);
|
|
41
41
|
}
|
|
42
|
+
function ChartEmpty({ children, height, align = "center", className }) {
|
|
43
|
+
return /* @__PURE__ */ jsx(
|
|
44
|
+
"p",
|
|
45
|
+
{
|
|
46
|
+
className: cx("crewlet-chart-empty", align === "start" && "crewlet-chart-empty--start", className),
|
|
47
|
+
style: height === void 0 ? void 0 : { minHeight: height },
|
|
48
|
+
children
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
}
|
|
42
52
|
function BarList({
|
|
43
53
|
data,
|
|
44
54
|
layout = "stacked",
|
|
@@ -52,14 +62,15 @@ function BarList({
|
|
|
52
62
|
const shown = capped ? data.slice(0, limit) : data;
|
|
53
63
|
const top = max ?? Math.max(1, ...data.map((datum) => datum.value));
|
|
54
64
|
const remaining = capped ? Math.max(0, data.length - limit) : 0;
|
|
55
|
-
if (!shown.length)
|
|
65
|
+
if (!shown.length)
|
|
66
|
+
return /* @__PURE__ */ jsx(ChartEmpty, { align: "start", className, children: emptyLabel });
|
|
56
67
|
return (
|
|
57
68
|
// A list, and said to be one: the markers are off, and WebKit drops the
|
|
58
69
|
// list role with them. See Legend for the same note, including why the
|
|
59
70
|
// redundant-role rule is silenced rather than obeyed.
|
|
60
71
|
// eslint-disable-next-line jsx-a11y/no-redundant-roles
|
|
61
72
|
/* @__PURE__ */ jsxs("ul", { role: "list", className: cx("crewlet-bar-list", `crewlet-bar-list--${layout}`, className), children: [
|
|
62
|
-
shown.map((datum
|
|
73
|
+
shown.map((datum) => {
|
|
63
74
|
const width = top > 0 && datum.value > 0 ? Math.max(1, datum.value / top * 100) : 0;
|
|
64
75
|
const parts = (datum.parts ?? []).map((part, at) => ({ ...part, color: part.color ?? dataColor(at) })).filter((part) => part.value > 0);
|
|
65
76
|
const bar = width > 0 ? /* @__PURE__ */ jsx(
|
|
@@ -69,7 +80,7 @@ function BarList({
|
|
|
69
80
|
"aria-hidden": true,
|
|
70
81
|
style: parts.length > 0 ? { width: `${width}%` } : {
|
|
71
82
|
width: `${width}%`,
|
|
72
|
-
"--crewlet-bar-list-bar-color": datum.color ??
|
|
83
|
+
"--crewlet-bar-list-bar-color": datum.color ?? DATA_COLORS[0]
|
|
73
84
|
},
|
|
74
85
|
children: parts.map((part) => /* @__PURE__ */ jsx(
|
|
75
86
|
"span",
|
|
@@ -226,7 +237,13 @@ function useChartHover(count) {
|
|
|
226
237
|
plotProps: { tabIndex: 0, onKeyDown, onBlur, onPointerLeave }
|
|
227
238
|
};
|
|
228
239
|
}
|
|
229
|
-
function StackedBar({
|
|
240
|
+
function StackedBar({
|
|
241
|
+
segments,
|
|
242
|
+
summary,
|
|
243
|
+
format = (value) => value.toLocaleString(),
|
|
244
|
+
emptyLabel = "Nothing recorded in this window",
|
|
245
|
+
className
|
|
246
|
+
}) {
|
|
230
247
|
const named = useId();
|
|
231
248
|
const total = segments.reduce((sum, segment) => sum + Math.max(0, segment.value), 0);
|
|
232
249
|
const drawn = segments.map((segment, index) => ({ ...segment, color: segment.color ?? dataColor(index) })).filter((segment) => segment.value > 0);
|
|
@@ -239,6 +256,7 @@ function StackedBar({ segments, summary, format = (value) => value.toLocaleStrin
|
|
|
239
256
|
const hover = useChartHover(drawn.length);
|
|
240
257
|
const active = hover.active == null ? null : drawn[hover.active];
|
|
241
258
|
const edges = drawn.reduce((at, segment) => [...at, at[at.length - 1] + segment.value / total], [0]);
|
|
259
|
+
if (drawn.length === 0) return /* @__PURE__ */ jsx(ChartEmpty, { className, children: emptyLabel });
|
|
242
260
|
return /* @__PURE__ */ jsxs("div", { className: cx("crewlet-stacked-bar", className), children: [
|
|
243
261
|
/* @__PURE__ */ jsxs("div", { className: "crewlet-chart-frame", role: "group", "aria-labelledby": named, ...hover.plotProps, children: [
|
|
244
262
|
/* @__PURE__ */ jsx("div", { className: "crewlet-stacked-bar__track", "aria-hidden": true, children: drawn.map((segment, index) => /* @__PURE__ */ jsx(
|
|
@@ -273,14 +291,30 @@ function StackedBar({ segments, summary, format = (value) => value.toLocaleStrin
|
|
|
273
291
|
/* @__PURE__ */ jsx(VisuallyHidden, { id: named, children: sentence })
|
|
274
292
|
] });
|
|
275
293
|
}
|
|
276
|
-
function ActivityStrip({
|
|
294
|
+
function ActivityStrip({
|
|
295
|
+
buckets,
|
|
296
|
+
label,
|
|
297
|
+
summary,
|
|
298
|
+
reading,
|
|
299
|
+
emptyLabel = "Nothing recorded in this window",
|
|
300
|
+
className
|
|
301
|
+
}) {
|
|
302
|
+
const hover = useChartHover(buckets.length);
|
|
277
303
|
const peak = Math.max(1, ...buckets.map((bucket) => bucket.v));
|
|
278
304
|
const total = buckets.reduce((sum, bucket) => sum + bucket.v, 0);
|
|
279
|
-
const
|
|
280
|
-
|
|
305
|
+
const format = reading?.format ?? ((value) => value.toLocaleString());
|
|
306
|
+
const sentence = summary ? summary({ peak, total, buckets: buckets.length }) : `${label}. ${format(total)} in ${buckets.length} buckets, peak ${format(peak)}.`;
|
|
307
|
+
if (buckets.length === 0) return /* @__PURE__ */ jsx(ChartEmpty, { className, children: emptyLabel });
|
|
308
|
+
const active = reading && hover.active != null ? buckets[hover.active] : null;
|
|
309
|
+
const strip = /* @__PURE__ */ jsx("div", { className: cx("crewlet-activity-strip", className), role: "img", "aria-label": sentence, children: buckets.map((bucket, index) => /* @__PURE__ */ jsx(
|
|
281
310
|
"span",
|
|
282
311
|
{
|
|
283
|
-
className: cx(
|
|
312
|
+
className: cx(
|
|
313
|
+
"crewlet-activity-strip__cell",
|
|
314
|
+
bucket.v > 0 && "is-active",
|
|
315
|
+
reading && hover.active === index && "is-read"
|
|
316
|
+
),
|
|
317
|
+
onPointerEnter: reading ? () => hover.point(index) : void 0,
|
|
284
318
|
style: {
|
|
285
319
|
/*
|
|
286
320
|
* A floor of a fifth, so a bucket with one event in it reads as a
|
|
@@ -292,6 +326,19 @@ function ActivityStrip({ buckets, label, summary, className }) {
|
|
|
292
326
|
},
|
|
293
327
|
bucket.t
|
|
294
328
|
)) });
|
|
329
|
+
if (!reading) return strip;
|
|
330
|
+
return /* @__PURE__ */ jsxs("div", { className: "crewlet-chart-frame", role: "group", "aria-label": label, ...hover.plotProps, children: [
|
|
331
|
+
strip,
|
|
332
|
+
/* @__PURE__ */ jsx(
|
|
333
|
+
ChartTooltip,
|
|
334
|
+
{
|
|
335
|
+
open: active != null,
|
|
336
|
+
anchor: hover.active == null ? void 0 : { start: hover.active / buckets.length, end: (hover.active + 1) / buckets.length },
|
|
337
|
+
title: active == null ? void 0 : reading.formatTime(active.t),
|
|
338
|
+
rows: active == null ? [] : [{ id: "value", name: label, value: format(active.v) }]
|
|
339
|
+
}
|
|
340
|
+
)
|
|
341
|
+
] });
|
|
295
342
|
}
|
|
296
343
|
function TimeSeries({
|
|
297
344
|
series,
|
|
@@ -302,6 +349,8 @@ function TimeSeries({
|
|
|
302
349
|
format = (value) => value.toLocaleString(),
|
|
303
350
|
formatTime = (at) => new Date(at).toLocaleString(),
|
|
304
351
|
summary,
|
|
352
|
+
legend = "below",
|
|
353
|
+
emptyLabel = "Nothing recorded in this window",
|
|
305
354
|
className
|
|
306
355
|
}) {
|
|
307
356
|
const id = useId();
|
|
@@ -309,25 +358,35 @@ function TimeSeries({
|
|
|
309
358
|
const plot = 120;
|
|
310
359
|
const footer = 18;
|
|
311
360
|
const head = 6;
|
|
312
|
-
const span =
|
|
361
|
+
const span = to - from;
|
|
313
362
|
const peaks = series.map((one) => Math.max(0, ...one.points.map((point) => point.v)));
|
|
314
363
|
const peak = Math.max(1, ...peaks);
|
|
315
|
-
const
|
|
316
|
-
const
|
|
364
|
+
const low = Math.min(0, ...series.flatMap((one) => one.points.map((point) => point.v)));
|
|
365
|
+
const x = (at) => span > 0 ? (at - from) / span * width : width / 2;
|
|
366
|
+
const y = (value) => head + (peak - value) / (peak - low) * (plot - head - footer);
|
|
367
|
+
const zero = y(0);
|
|
317
368
|
const instants = [...new Set(series.flatMap((one) => one.points.map((point) => point.t)))].sort((a, b) => a - b);
|
|
318
369
|
const hover = useChartHover(instants.length);
|
|
319
370
|
const reading = hover.active == null ? null : instants[hover.active];
|
|
320
371
|
const onPointerMove = (event) => {
|
|
321
372
|
const box = event.currentTarget.getBoundingClientRect();
|
|
322
373
|
if (box.width <= 0 || instants.length === 0) return;
|
|
323
|
-
const at = from + (event.clientX - box.left) / box.width * span;
|
|
374
|
+
const at = from + (event.clientX - box.left) / box.width * Math.max(1, span);
|
|
324
375
|
let nearest = 0;
|
|
325
376
|
for (let index = 1; index < instants.length; index += 1) {
|
|
326
377
|
if (Math.abs(instants[index] - at) < Math.abs(instants[nearest] - at)) nearest = index;
|
|
327
378
|
}
|
|
328
379
|
hover.point(nearest);
|
|
329
380
|
};
|
|
330
|
-
const sentence = summary ? summary({ from, to, peak, series: series.map((one, index) => ({ name: one.name, peak: peaks[index] ?? 0 })) }) : `${label}. ${formatTime(from)} to ${formatTime(to)}, peak ${format(peak)}.`;
|
|
381
|
+
const sentence = summary ? summary({ from, to, peak, series: series.map((one, index) => ({ name: one.name, peak: peaks[index] ?? 0 })) }) : `${label}. ${formatTime(from)} to ${formatTime(to)}, peak ${format(peak)}${low < 0 ? `, low ${format(low)}` : ""}.`;
|
|
382
|
+
if (instants.length === 0) {
|
|
383
|
+
return /* @__PURE__ */ jsx(ChartEmpty, { height, className, children: emptyLabel });
|
|
384
|
+
}
|
|
385
|
+
const washed = series.length === 1;
|
|
386
|
+
const colorOf = (one, index) => one.color ?? dataColor(index);
|
|
387
|
+
const dots = series.flatMap(
|
|
388
|
+
(one, index) => one.points.filter((point) => one.points.length === 1 || point.t === reading).map((point) => ({ key: `${one.id}-${point.t}`, point, color: colorOf(one, index) }))
|
|
389
|
+
);
|
|
331
390
|
return /* @__PURE__ */ jsxs("figure", { className: cx("crewlet-time-series", className), children: [
|
|
332
391
|
/* @__PURE__ */ jsxs("div", { className: "crewlet-chart-frame", role: "group", "aria-label": label, ...hover.plotProps, children: [
|
|
333
392
|
/* @__PURE__ */ jsxs(
|
|
@@ -341,32 +400,49 @@ function TimeSeries({
|
|
|
341
400
|
"aria-label": sentence,
|
|
342
401
|
onPointerMove,
|
|
343
402
|
children: [
|
|
344
|
-
[0.25, 0.5, 0.75].map((fraction) =>
|
|
403
|
+
[0.25, 0.5, 0.75, 1].map((fraction) => {
|
|
404
|
+
const at = y(low + (peak - low) * fraction);
|
|
405
|
+
return /* @__PURE__ */ jsx(
|
|
406
|
+
"line",
|
|
407
|
+
{
|
|
408
|
+
className: "crewlet-chart__grid-line",
|
|
409
|
+
x1: 0,
|
|
410
|
+
x2: width,
|
|
411
|
+
y1: at,
|
|
412
|
+
y2: at,
|
|
413
|
+
vectorEffect: "non-scaling-stroke"
|
|
414
|
+
},
|
|
415
|
+
fraction
|
|
416
|
+
);
|
|
417
|
+
}),
|
|
418
|
+
low < 0 ? /* @__PURE__ */ jsx(
|
|
345
419
|
"line",
|
|
346
420
|
{
|
|
347
421
|
className: "crewlet-chart__grid-line",
|
|
348
422
|
x1: 0,
|
|
349
423
|
x2: width,
|
|
350
|
-
y1:
|
|
351
|
-
y2:
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
)
|
|
355
|
-
/* @__PURE__ */ jsx("line", { className: "crewlet-chart__axis-line", x1: 0, x2: width, y1:
|
|
424
|
+
y1: plot - footer,
|
|
425
|
+
y2: plot - footer,
|
|
426
|
+
vectorEffect: "non-scaling-stroke"
|
|
427
|
+
}
|
|
428
|
+
) : null,
|
|
429
|
+
/* @__PURE__ */ jsx("line", { className: "crewlet-chart__axis-line", x1: 0, x2: width, y1: zero, y2: zero, vectorEffect: "non-scaling-stroke" }),
|
|
356
430
|
series.map((one, index) => {
|
|
357
|
-
const color = one
|
|
431
|
+
const color = colorOf(one, index);
|
|
358
432
|
const points = [...one.points].sort((a, b) => a.t - b.t);
|
|
359
|
-
if (points.length
|
|
433
|
+
if (points.length < 2) return null;
|
|
360
434
|
const line = points.map((point) => `${x(point.t).toFixed(2)},${y(point.v).toFixed(2)}`).join(" ");
|
|
361
435
|
const first = points[0];
|
|
362
436
|
const last = points[points.length - 1];
|
|
363
|
-
const area = `${x(first.t).toFixed(2)},${
|
|
437
|
+
const area = `${x(first.t).toFixed(2)},${zero.toFixed(2)} ${line} ${x(last.t).toFixed(2)},${zero.toFixed(2)}`;
|
|
364
438
|
return /* @__PURE__ */ jsxs("g", { children: [
|
|
365
|
-
|
|
366
|
-
/* @__PURE__ */ jsx("
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
439
|
+
washed ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
440
|
+
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("linearGradient", { id: `${id}-${index}`, x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
441
|
+
/* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: color, stopOpacity: "0.22" }),
|
|
442
|
+
/* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: color, stopOpacity: "0" })
|
|
443
|
+
] }) }),
|
|
444
|
+
/* @__PURE__ */ jsx("polygon", { points: area, fill: `url(#${id}-${index})` })
|
|
445
|
+
] }) : null,
|
|
370
446
|
/* @__PURE__ */ jsx(
|
|
371
447
|
"polyline",
|
|
372
448
|
{
|
|
@@ -392,27 +468,51 @@ function TimeSeries({
|
|
|
392
468
|
]
|
|
393
469
|
}
|
|
394
470
|
),
|
|
471
|
+
dots.map(({ key, point, color }) => /* @__PURE__ */ jsx(
|
|
472
|
+
"span",
|
|
473
|
+
{
|
|
474
|
+
className: "crewlet-time-series__dot",
|
|
475
|
+
"aria-hidden": true,
|
|
476
|
+
style: {
|
|
477
|
+
left: `${(x(point.t) / width * 100).toFixed(3)}%`,
|
|
478
|
+
top: `${(y(point.v) / plot * 100).toFixed(3)}%`,
|
|
479
|
+
"--crewlet-time-series-dot-color": color
|
|
480
|
+
}
|
|
481
|
+
},
|
|
482
|
+
key
|
|
483
|
+
)),
|
|
395
484
|
/* @__PURE__ */ jsx(
|
|
396
485
|
ChartTooltip,
|
|
397
486
|
{
|
|
398
487
|
open: reading != null,
|
|
399
|
-
anchor: reading == null ? void 0 : { start: (reading
|
|
488
|
+
anchor: reading == null ? void 0 : { start: x(reading) / width },
|
|
400
489
|
title: reading == null ? void 0 : formatTime(reading),
|
|
401
490
|
rows: reading == null ? [] : series.flatMap((one, index) => {
|
|
402
491
|
const point = one.points.find((candidate) => candidate.t === reading);
|
|
403
|
-
return point ? [{ id: one.id, name: one.name, value: format(point.v), color: one
|
|
492
|
+
return point ? [{ id: one.id, name: one.name, value: format(point.v), color: colorOf(one, index) }] : [];
|
|
404
493
|
})
|
|
405
494
|
}
|
|
406
495
|
)
|
|
407
496
|
] }),
|
|
408
|
-
/* @__PURE__ */ jsxs("figcaption", { className: "crewlet-time-series__scale", children: [
|
|
497
|
+
/* @__PURE__ */ jsxs("figcaption", { className: cx("crewlet-time-series__scale", span <= 0 && "crewlet-time-series__scale--instant"), children: [
|
|
409
498
|
/* @__PURE__ */ jsx("span", { children: formatTime(from) }),
|
|
410
|
-
/* @__PURE__ */ jsxs("span", { children: [
|
|
499
|
+
/* @__PURE__ */ jsxs("span", { className: "crewlet-time-series__range", children: [
|
|
411
500
|
"peak ",
|
|
412
|
-
format(peak)
|
|
501
|
+
format(peak),
|
|
502
|
+
low < 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
503
|
+
", low ",
|
|
504
|
+
format(low)
|
|
505
|
+
] }) : null
|
|
413
506
|
] }),
|
|
414
|
-
/* @__PURE__ */ jsx("span", { children: formatTime(to) })
|
|
415
|
-
] })
|
|
507
|
+
span > 0 ? /* @__PURE__ */ jsx("span", { children: formatTime(to) }) : null
|
|
508
|
+
] }),
|
|
509
|
+
legend === "below" && series.length > 0 ? /* @__PURE__ */ jsx(
|
|
510
|
+
Legend,
|
|
511
|
+
{
|
|
512
|
+
className: "crewlet-time-series__legend",
|
|
513
|
+
items: series.map((one, index) => ({ id: one.id, label: one.name, color: colorOf(one, index), shape: "line" }))
|
|
514
|
+
}
|
|
515
|
+
) : null
|
|
416
516
|
] });
|
|
417
517
|
}
|
|
418
518
|
function Sparkline({
|
|
@@ -456,23 +556,39 @@ function StackedColumns({
|
|
|
456
556
|
height = PLOT_HEIGHT,
|
|
457
557
|
minHeight = PLOT_HEIGHT,
|
|
458
558
|
format = (value) => COMPACT.format(value),
|
|
559
|
+
formatScale = format,
|
|
459
560
|
formatTime = (at) => new Date(at).toLocaleDateString(),
|
|
561
|
+
emptyLabel = "Nothing recorded in this window",
|
|
460
562
|
summary,
|
|
461
563
|
className
|
|
462
564
|
}) {
|
|
463
565
|
const colored = series.map((one, index) => ({ ...one, color: one.color ?? dataColor(index) }));
|
|
464
566
|
const shown = colored.filter((one) => !hidden.includes(one.id));
|
|
465
|
-
const valueOf = (bucket, id) =>
|
|
466
|
-
const
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
567
|
+
const valueOf = (bucket, id) => bucket.values[id] ?? 0;
|
|
568
|
+
const sumOf = (bucket, sign) => shown.reduce((sum, one) => {
|
|
569
|
+
const value = valueOf(bucket, one.id);
|
|
570
|
+
return sign * value > 0 ? sum + value : sum;
|
|
571
|
+
}, 0);
|
|
572
|
+
const above = buckets.map((bucket) => sumOf(bucket, 1));
|
|
573
|
+
const below = buckets.map((bucket) => sumOf(bucket, -1));
|
|
574
|
+
const totals = buckets.map((_, index) => (above[index] ?? 0) + (below[index] ?? 0));
|
|
575
|
+
const peak = Math.max(0, ...above);
|
|
576
|
+
const trough = Math.min(0, ...below);
|
|
577
|
+
const { top, step } = niceScale(peak - trough);
|
|
578
|
+
const roof = trough < 0 ? Number((Math.ceil(peak / step - 1e-9) * step).toPrecision(12)) : top;
|
|
579
|
+
const floor = trough < 0 ? Number((Math.floor(trough / step + 1e-9) * step).toPrecision(12)) : 0;
|
|
580
|
+
const range = roof - floor;
|
|
581
|
+
const intervals = Math.round(range / step);
|
|
470
582
|
const ticks = Array.from(
|
|
471
583
|
{ length: intervals + 1 },
|
|
472
|
-
(_, index) => Number((
|
|
584
|
+
(_, index) => Number((roof - index * step).toPrecision(12))
|
|
473
585
|
);
|
|
586
|
+
const zero = -floor / range * 100;
|
|
474
587
|
const hover = useChartHover(buckets.length);
|
|
475
588
|
const active = hover.active == null ? null : buckets[hover.active];
|
|
589
|
+
if (buckets.length === 0) {
|
|
590
|
+
return /* @__PURE__ */ jsx(ChartEmpty, { height: height === "fill" ? minHeight : height, className, children: emptyLabel });
|
|
591
|
+
}
|
|
476
592
|
const first = buckets[0]?.t ?? null;
|
|
477
593
|
const last = buckets[buckets.length - 1]?.t ?? null;
|
|
478
594
|
const centre = Math.floor((buckets.length - 1) / 2);
|
|
@@ -514,7 +630,7 @@ function StackedColumns({
|
|
|
514
630
|
hasHead ? /* @__PURE__ */ jsx("div", { className: "crewlet-stacked-columns__heading", children: head }) : null,
|
|
515
631
|
legend === "head" ? key : null
|
|
516
632
|
] }) : null,
|
|
517
|
-
/* @__PURE__ */ jsx("div", { className: "crewlet-stacked-columns__axis", "aria-hidden": true, style: { height: plotHeight }, children: ticks.map((tick) => /* @__PURE__ */ jsx("span", { className: "crewlet-stacked-columns__tick", children:
|
|
633
|
+
/* @__PURE__ */ jsx("div", { className: "crewlet-stacked-columns__axis", "aria-hidden": true, style: { height: plotHeight }, children: ticks.map((tick) => /* @__PURE__ */ jsx("span", { className: "crewlet-stacked-columns__tick", children: formatScale(tick) }, tick)) }),
|
|
518
634
|
/* @__PURE__ */ jsxs("div", { className: "crewlet-chart-frame", role: "group", "aria-label": label, ...hover.plotProps, children: [
|
|
519
635
|
/* @__PURE__ */ jsxs(
|
|
520
636
|
"div",
|
|
@@ -526,32 +642,41 @@ function StackedColumns({
|
|
|
526
642
|
children: [
|
|
527
643
|
/* @__PURE__ */ jsx("div", { className: "crewlet-stacked-columns__grid", "aria-hidden": true, children: ticks.map((tick) => /* @__PURE__ */ jsx("span", { className: "crewlet-stacked-columns__grid-line" }, tick)) }),
|
|
528
644
|
buckets.map((bucket, index) => {
|
|
529
|
-
const
|
|
530
|
-
|
|
531
|
-
|
|
645
|
+
const stack = (sign, total) => {
|
|
646
|
+
const parts = shown.filter((one) => sign * valueOf(bucket, one.id) > 0);
|
|
647
|
+
if (parts.length === 0) return null;
|
|
648
|
+
return /* @__PURE__ */ jsx(
|
|
649
|
+
"div",
|
|
650
|
+
{
|
|
651
|
+
className: cx("crewlet-stacked-columns__column", sign < 0 && "crewlet-stacked-columns__column--below"),
|
|
652
|
+
style: {
|
|
653
|
+
height: `${(Math.abs(total) / range * 100).toFixed(3)}%`,
|
|
654
|
+
...sign > 0 ? { bottom: `${zero.toFixed(3)}%` } : { top: `${(100 - zero).toFixed(3)}%` }
|
|
655
|
+
},
|
|
656
|
+
children: parts.map((one) => /* @__PURE__ */ jsx(
|
|
657
|
+
"span",
|
|
658
|
+
{
|
|
659
|
+
className: "crewlet-stacked-columns__segment",
|
|
660
|
+
"data-series": one.id,
|
|
661
|
+
style: {
|
|
662
|
+
flexGrow: Math.abs(valueOf(bucket, one.id)),
|
|
663
|
+
"--crewlet-stacked-columns-segment-color": one.color
|
|
664
|
+
}
|
|
665
|
+
},
|
|
666
|
+
one.id
|
|
667
|
+
))
|
|
668
|
+
}
|
|
669
|
+
);
|
|
670
|
+
};
|
|
671
|
+
return /* @__PURE__ */ jsxs(
|
|
532
672
|
"div",
|
|
533
673
|
{
|
|
534
674
|
className: cx("crewlet-stacked-columns__slot", hover.active === index && "is-active"),
|
|
535
675
|
onPointerEnter: () => hover.point(index),
|
|
536
|
-
children:
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
style: { height: `${(total / top * 100).toFixed(3)}%` },
|
|
541
|
-
children: parts.map((one) => /* @__PURE__ */ jsx(
|
|
542
|
-
"span",
|
|
543
|
-
{
|
|
544
|
-
className: "crewlet-stacked-columns__segment",
|
|
545
|
-
"data-series": one.id,
|
|
546
|
-
style: {
|
|
547
|
-
flexGrow: valueOf(bucket, one.id),
|
|
548
|
-
"--crewlet-stacked-columns-segment-color": one.color
|
|
549
|
-
}
|
|
550
|
-
},
|
|
551
|
-
one.id
|
|
552
|
-
))
|
|
553
|
-
}
|
|
554
|
-
)
|
|
676
|
+
children: [
|
|
677
|
+
stack(1, above[index] ?? 0),
|
|
678
|
+
stack(-1, below[index] ?? 0)
|
|
679
|
+
]
|
|
555
680
|
},
|
|
556
681
|
bucket.t
|
|
557
682
|
);
|
|
@@ -588,4 +713,4 @@ function StackedColumns({
|
|
|
588
713
|
);
|
|
589
714
|
}
|
|
590
715
|
|
|
591
|
-
export { ActivityStrip, BarList, ChartTooltip, DATA_COLORS, DATA_COLOR_OTHER, Legend, Sparkline, StackedBar, StackedColumns, TimeSeries, dataColor, niceScale, useChartHover };
|
|
716
|
+
export { ActivityStrip, BarList, ChartEmpty, ChartTooltip, DATA_COLORS, DATA_COLOR_OTHER, Legend, Sparkline, StackedBar, StackedColumns, TimeSeries, dataColor, niceScale, useChartHover };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HeadingLevelProvider } from './chunk-PQADV6P6.js';
|
|
2
2
|
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
3
3
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
4
|
-
import './ArtifactPanel-
|
|
4
|
+
import './ArtifactPanel-HW3SU7CP.css';
|
|
5
5
|
import { useId, useRef, useLayoutEffect, useEffect } from 'react';
|
|
6
6
|
import { MinimizeGlyph, MaximizeGlyph, XGlyph } from '@crewlethq/icons/glyphs';
|
|
7
7
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { SlideStage } from './chunk-
|
|
1
|
+
import { SlideStage } from './chunk-LV4APO72.js';
|
|
2
2
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
3
|
-
import './SlideGrid-
|
|
3
|
+
import './SlideGrid-S4LTJ4UU.css';
|
|
4
4
|
import { EyeOffGlyph } from '@crewlethq/icons/glyphs';
|
|
5
5
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
6
|
|
|
@@ -27,7 +27,7 @@ function SlideGrid({ sections, renderSlide, onOpen, current, className, labels }
|
|
|
27
27
|
"data-hidden": slide.hidden ? "true" : void 0,
|
|
28
28
|
onClick: () => onOpen(slide.id),
|
|
29
29
|
children: [
|
|
30
|
-
/* @__PURE__ */ jsx(SlideStage, { label: name, children: renderSlide(slide.id) }),
|
|
30
|
+
/* @__PURE__ */ jsx(SlideStage, { label: name, framed: true, children: renderSlide(slide.id) }),
|
|
31
31
|
/* @__PURE__ */ jsxs("span", { className: "crewlet-slide-grid__caption", children: [
|
|
32
32
|
/* @__PURE__ */ jsx("span", { className: "crewlet-slide-grid__number", children: n }),
|
|
33
33
|
/* @__PURE__ */ jsx("span", { className: "crewlet-slide-grid__title", children: slide.title || text.untitled }),
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { isApplePlatform, Kbd } from './chunk-SMBKXWML.js';
|
|
2
|
-
import { Tooltip } from './chunk-
|
|
3
|
-
import { SegmentedControl } from './chunk-
|
|
4
|
-
import { ArtifactIcon } from './chunk-
|
|
5
|
-
import { Menu } from './chunk-
|
|
2
|
+
import { Tooltip } from './chunk-6ZJ3N7QI.js';
|
|
3
|
+
import { SegmentedControl } from './chunk-CCAXYHQS.js';
|
|
4
|
+
import { ArtifactIcon } from './chunk-PLDUNXAO.js';
|
|
5
|
+
import { Menu } from './chunk-3EB2AV3H.js';
|
|
6
6
|
import { Button } from './chunk-OG6CL3EB.js';
|
|
7
7
|
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
8
|
-
import { VisuallyHidden } from './chunk-BZFWDIV6.js';
|
|
9
8
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
10
|
-
import './ArtifactBar-
|
|
9
|
+
import './ArtifactBar-C462VD4C.css';
|
|
11
10
|
import { useId, useState, useRef, useEffect } from 'react';
|
|
12
11
|
import { ChevronLeftGlyph, EllipsisGlyph, ChevronDownGlyph } from '@crewlethq/icons/glyphs';
|
|
13
12
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -326,7 +325,7 @@ function BarTitle({
|
|
|
326
325
|
children: title
|
|
327
326
|
}
|
|
328
327
|
) }),
|
|
329
|
-
/* @__PURE__ */ jsx(
|
|
328
|
+
/* @__PURE__ */ jsx("span", { id: hintId, hidden: true, children: words.renameHint })
|
|
330
329
|
] });
|
|
331
330
|
}
|
|
332
331
|
function ArtifactVersionChip({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Composer } from './chunk-7DZDSSJS.js';
|
|
2
|
-
import { Document } from './chunk-
|
|
3
|
-
import { PrincipalAvatar } from './chunk-
|
|
2
|
+
import { Document } from './chunk-TYKQ33CL.js';
|
|
3
|
+
import { PrincipalAvatar } from './chunk-CI3VPIJN.js';
|
|
4
4
|
import { toInstant, RelativeTime, formatExact, toISO } from './chunk-3CZ7XAVY.js';
|
|
5
5
|
import { Count } from './chunk-BHHIIK3M.js';
|
|
6
6
|
import { useHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { TreeGrid } from './chunk-
|
|
1
|
+
import { TreeGrid } from './chunk-QWNVSR6G.js';
|
|
2
2
|
import { createTreeModel, treeParent } from './chunk-MY374UUD.js';
|
|
3
|
-
import { OrgLabel } from './chunk-
|
|
3
|
+
import { OrgLabel } from './chunk-ONQKKHON.js';
|
|
4
4
|
import { AddPill } from './chunk-TROLVEZY.js';
|
|
5
5
|
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
6
6
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useLayerContainer, viewportBounds, LAYER_GAP,
|
|
1
|
+
import { useLayerContainer, viewportBounds, LAYER_GAP, anchorGone, placePopup, LAYER_REPOSITION_EVENT } from './chunk-OMV5W53A.js';
|
|
2
2
|
import { usePopupLayer, focusables } from './chunk-R25RGPUB.js';
|
|
3
3
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
4
4
|
import './Popover-QCINR7WG.css';
|
|
@@ -68,14 +68,13 @@ function Popover({
|
|
|
68
68
|
width: rect.width,
|
|
69
69
|
height: rect.height
|
|
70
70
|
};
|
|
71
|
-
const whole = { x: 0, y: 0, width: host.width, height: host.height };
|
|
72
71
|
const bounds = {
|
|
73
72
|
x: LAYER_GAP,
|
|
74
73
|
y: LAYER_GAP,
|
|
75
74
|
width: host.width - 2 * LAYER_GAP,
|
|
76
75
|
height: host.height - 2 * LAYER_GAP
|
|
77
76
|
};
|
|
78
|
-
if (
|
|
77
|
+
if (anchorGone(rect, host, inHost)) {
|
|
79
78
|
close("anchor-gone");
|
|
80
79
|
return;
|
|
81
80
|
}
|
|
@@ -2,7 +2,7 @@ import { Link } from './chunk-FBSEJO2C.js';
|
|
|
2
2
|
import { Tag } from './chunk-GFV4LJHH.js';
|
|
3
3
|
import { RelativeTime } from './chunk-3CZ7XAVY.js';
|
|
4
4
|
import { EmptyValue } from './chunk-EUCC37WY.js';
|
|
5
|
-
import { Avatar } from './chunk-
|
|
5
|
+
import { Avatar } from './chunk-PZKHBB7D.js';
|
|
6
6
|
import { VisuallyHidden } from './chunk-BZFWDIV6.js';
|
|
7
7
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
8
8
|
import './TableCells-3VN5N2M3.css';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ConfirmModal } from './chunk-I3KKZ2O3.js';
|
|
2
1
|
import { InlineCode } from './chunk-5CLW2CXT.js';
|
|
3
|
-
import {
|
|
2
|
+
import { ConfirmModal } from './chunk-XEGZHHRH.js';
|
|
3
|
+
import { Callout } from './chunk-SZZRIHGT.js';
|
|
4
4
|
import './LinkInterstitial-ET4MSVSV.css';
|
|
5
5
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
6
|
|