@logicplanes/kaeso-ui 0.4.3 → 0.4.5
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/ai/component-guides.md +279 -98
- package/ai/component-registry.json +352 -236
- package/ai/component-registry.md +241 -219
- package/ai/icons.md +2 -2
- package/ai/tokens.md +18 -14
- package/dist/blocks/delete-resource.js +3 -3
- package/dist/blocks/delete-resource.js.map +1 -1
- package/dist/blocks/pages.js +47 -42
- package/dist/blocks/pages.js.map +1 -1
- package/dist/blocks/resource-list.js +68 -55
- package/dist/blocks/resource-list.js.map +1 -1
- package/dist/chunks/agent-avatar-DHieggHK.js +188 -0
- package/dist/chunks/agent-avatar-DHieggHK.js.map +1 -0
- package/dist/chunks/app-frame-DysOel2X.js +232 -0
- package/dist/chunks/app-frame-DysOel2X.js.map +1 -0
- package/dist/chunks/arrow-focus-B0KdRFX8.js +20 -0
- package/dist/chunks/arrow-focus-B0KdRFX8.js.map +1 -0
- package/dist/chunks/avatar-CYNMK7uY.js +110 -0
- package/dist/chunks/avatar-CYNMK7uY.js.map +1 -0
- package/dist/chunks/badge-C0GC3B9X.js +27 -0
- package/dist/chunks/badge-C0GC3B9X.js.map +1 -0
- package/dist/chunks/banner-B3DGLTBu.js +88 -0
- package/dist/chunks/banner-B3DGLTBu.js.map +1 -0
- package/dist/chunks/button-IblhXUyZ.js +202 -0
- package/dist/chunks/button-IblhXUyZ.js.map +1 -0
- package/dist/chunks/{calendar-BWaf2MXc.js → calendar-Dc6_dl0f.js} +4 -4
- package/dist/chunks/calendar-Dc6_dl0f.js.map +1 -0
- package/dist/chunks/checkbox-9tbimmF3.js +141 -0
- package/dist/chunks/checkbox-9tbimmF3.js.map +1 -0
- package/dist/chunks/{cn-Dj6sRgkF.js → cn-BjnOAUrA.js} +45 -4
- package/dist/chunks/cn-BjnOAUrA.js.map +1 -0
- package/dist/chunks/code-block-64e-Cy1S.js +346 -0
- package/dist/chunks/code-block-64e-Cy1S.js.map +1 -0
- package/dist/chunks/code-block-KIvuE8jg.js +352 -0
- package/dist/chunks/code-block-KIvuE8jg.js.map +1 -0
- package/dist/chunks/{code-tqj0uhBL.js → code-xqjww4Pv.js} +5 -6
- package/dist/chunks/code-xqjww4Pv.js.map +1 -0
- package/dist/chunks/combobox-DkcjkWc6.js +352 -0
- package/dist/chunks/combobox-DkcjkWc6.js.map +1 -0
- package/dist/chunks/command-list-CypqsC4T.js +456 -0
- package/dist/chunks/command-list-CypqsC4T.js.map +1 -0
- package/dist/chunks/{copy-button-FJvPJn72.js → copy-button-CwU8t_9_.js} +22 -15
- package/dist/chunks/copy-button-CwU8t_9_.js.map +1 -0
- package/dist/chunks/core-CmK-8ObW.js +505 -0
- package/dist/chunks/core-CmK-8ObW.js.map +1 -0
- package/dist/chunks/data-table-CqY8_6IS.js +581 -0
- package/dist/chunks/data-table-CqY8_6IS.js.map +1 -0
- package/dist/chunks/date-popup-DAnjptFt.js +58 -0
- package/dist/chunks/date-popup-DAnjptFt.js.map +1 -0
- package/dist/chunks/{de-CPXJh9cq.js → de-CqC4aSIV.js} +81 -40
- package/dist/chunks/de-CqC4aSIV.js.map +1 -0
- package/dist/chunks/{dialog-Cg9A_6SF.js → dialog-2zb6ClNR.js} +156 -134
- package/dist/chunks/dialog-2zb6ClNR.js.map +1 -0
- package/dist/chunks/disclosure-BtYRTDO3.js +22 -0
- package/dist/chunks/disclosure-BtYRTDO3.js.map +1 -0
- package/dist/chunks/domain-obd_w9xk.js +28 -0
- package/dist/chunks/domain-obd_w9xk.js.map +1 -0
- package/dist/chunks/{empty-DvhyMXQq.js → empty-BpiUgGzm.js} +2 -2
- package/dist/chunks/{empty-DvhyMXQq.js.map → empty-BpiUgGzm.js.map} +1 -1
- package/dist/chunks/{field-TviMvYa2.js → field-D7m-yl-D.js} +37 -34
- package/dist/chunks/field-D7m-yl-D.js.map +1 -0
- package/dist/chunks/{icon-D7ja-_Yk.js → icon-CBzOwqrX.js} +7 -6
- package/dist/chunks/{icon-D7ja-_Yk.js.map → icon-CBzOwqrX.js.map} +1 -1
- package/dist/chunks/icon-CPJWE2N-.js +95 -0
- package/dist/chunks/{icon-DVooQfk4.js.map → icon-CPJWE2N-.js.map} +1 -1
- package/dist/chunks/{icon-button-CrdF_eMG.js → icon-button-Dfwpvmav.js} +7 -6
- package/dist/chunks/icon-button-Dfwpvmav.js.map +1 -0
- package/dist/chunks/{identity-BmhQ6BQ-.js → identity-3Foi5F8w.js} +7 -7
- package/dist/chunks/{identity-BmhQ6BQ-.js.map → identity-3Foi5F8w.js.map} +1 -1
- package/dist/chunks/{input-2VJuj_M4.js → input-Bo5-UZg2.js} +15 -9
- package/dist/chunks/input-Bo5-UZg2.js.map +1 -0
- package/dist/chunks/{input-group-DQ_4DoXg.js → input-group-jPcK9T_a.js} +42 -29
- package/dist/chunks/input-group-jPcK9T_a.js.map +1 -0
- package/dist/chunks/iso-field-DoqHBg8n.js +52 -0
- package/dist/chunks/iso-field-DoqHBg8n.js.map +1 -0
- package/dist/chunks/json-view-DZ2nL2Ir.js +253 -0
- package/dist/chunks/json-view-DZ2nL2Ir.js.map +1 -0
- package/dist/chunks/{kbd-BF1vKXJf.js → kbd-8A0ML_up.js} +30 -28
- package/dist/chunks/kbd-8A0ML_up.js.map +1 -0
- package/dist/chunks/label-DW24Aj0Z.js +26 -0
- package/dist/chunks/label-DW24Aj0Z.js.map +1 -0
- package/dist/chunks/{link-KWI7PevW.js → link-CMjkcLQK.js} +14 -14
- package/dist/chunks/link-CMjkcLQK.js.map +1 -0
- package/dist/chunks/list-B4G-sWwV.js +540 -0
- package/dist/chunks/list-B4G-sWwV.js.map +1 -0
- package/dist/chunks/{loader-DCfPndXa.js → loader-zo8CCIGJ.js} +2 -2
- package/dist/chunks/{loader-DCfPndXa.js.map → loader-zo8CCIGJ.js.map} +1 -1
- package/dist/chunks/markdown-C565aBR7.js +338 -0
- package/dist/chunks/markdown-C565aBR7.js.map +1 -0
- package/dist/chunks/menu-Clvv6ftq.js +485 -0
- package/dist/chunks/menu-Clvv6ftq.js.map +1 -0
- package/dist/chunks/merge-refs-BN1FyQt9.js +20 -0
- package/dist/chunks/merge-refs-BN1FyQt9.js.map +1 -0
- package/dist/chunks/meter-CASMHlxl.js +100 -0
- package/dist/chunks/meter-CASMHlxl.js.map +1 -0
- package/dist/chunks/nav-sheet-Dt6JSvzX.js +67 -0
- package/dist/chunks/nav-sheet-Dt6JSvzX.js.map +1 -0
- package/dist/chunks/{nav-wordmark-_pjheAsZ.js → nav-wordmark-J4pB_vjr.js} +4 -8
- package/dist/chunks/nav-wordmark-J4pB_vjr.js.map +1 -0
- package/dist/chunks/page-header-kS5tdmvb.js +45 -0
- package/dist/chunks/page-header-kS5tdmvb.js.map +1 -0
- package/dist/chunks/pagination-D7fAm8qg.js +147 -0
- package/dist/chunks/pagination-D7fAm8qg.js.map +1 -0
- package/dist/chunks/picker-popover-1FHb1LQG.js +119 -0
- package/dist/chunks/picker-popover-1FHb1LQG.js.map +1 -0
- package/dist/chunks/popover-Bl5QYqnh.js +51 -0
- package/dist/chunks/popover-Bl5QYqnh.js.map +1 -0
- package/dist/chunks/{portal-context-BBbzDKmY.js → portal-context-CTatR2Z8.js} +14 -4
- package/dist/chunks/portal-context-CTatR2Z8.js.map +1 -0
- package/dist/chunks/{radio-CDDFpdtL.js → radio-C6GtzF_t.js} +38 -23
- package/dist/chunks/radio-C6GtzF_t.js.map +1 -0
- package/dist/chunks/range-popup-lGiZsG3s.js +160 -0
- package/dist/chunks/range-popup-lGiZsG3s.js.map +1 -0
- package/dist/chunks/reasoning-frame-C3HdQRRS.js +51 -0
- package/dist/chunks/reasoning-frame-C3HdQRRS.js.map +1 -0
- package/dist/chunks/release-art-ChiT4T2S.js +582 -0
- package/dist/chunks/release-art-ChiT4T2S.js.map +1 -0
- package/dist/chunks/rights-B68ocZuq.js +312 -0
- package/dist/chunks/rights-B68ocZuq.js.map +1 -0
- package/dist/chunks/{scroll-area-D8MD7Vpo.js → scroll-area-_Ljh4-bG.js} +11 -6
- package/dist/chunks/scroll-area-_Ljh4-bG.js.map +1 -0
- package/dist/chunks/section-CFBYhsUi.js +77 -0
- package/dist/chunks/section-CFBYhsUi.js.map +1 -0
- package/dist/chunks/section-header-DU1Q4Tdf.js +28 -0
- package/dist/chunks/section-header-DU1Q4Tdf.js.map +1 -0
- package/dist/chunks/segmented-D9i1avik.js +119 -0
- package/dist/chunks/segmented-D9i1avik.js.map +1 -0
- package/dist/chunks/select-BqjmQOqx.js +222 -0
- package/dist/chunks/select-BqjmQOqx.js.map +1 -0
- package/dist/chunks/{separator-D7TzNHmX.js → separator-BNWf6BBj.js} +13 -8
- package/dist/chunks/separator-BNWf6BBj.js.map +1 -0
- package/dist/chunks/sidebar-Dq7oGOje.js +664 -0
- package/dist/chunks/sidebar-Dq7oGOje.js.map +1 -0
- package/dist/chunks/{sidebar-menu-BN3jkTlK.js → sidebar-menu-QSSNu1jJ.js} +2 -2
- package/dist/chunks/{sidebar-menu-BN3jkTlK.js.map → sidebar-menu-QSSNu1jJ.js.map} +1 -1
- package/dist/chunks/{skeleton-Dcz57Zyp.js → skeleton-D-qk3mes.js} +3 -3
- package/dist/chunks/skeleton-D-qk3mes.js.map +1 -0
- package/dist/chunks/slider-CcE8GtuV.js +58 -0
- package/dist/chunks/slider-CcE8GtuV.js.map +1 -0
- package/dist/chunks/{status-dot-QJTF0Yv4.js → status-dot-CP6runiC.js} +4 -4
- package/dist/chunks/{status-dot-QJTF0Yv4.js.map → status-dot-CP6runiC.js.map} +1 -1
- package/dist/chunks/{styles-CVJU9t9v.js → styles-hkFkoBbi.js} +2 -2
- package/dist/chunks/{styles-CVJU9t9v.js.map → styles-hkFkoBbi.js.map} +1 -1
- package/dist/chunks/{swap-text-Dr0Irxz6.js → swap-text-SlUjrTlG.js} +3 -3
- package/dist/chunks/swap-text-SlUjrTlG.js.map +1 -0
- package/dist/chunks/switch-ngywMQdl.js +76 -0
- package/dist/chunks/switch-ngywMQdl.js.map +1 -0
- package/dist/chunks/table-CTK5E0J7.js +102 -0
- package/dist/chunks/table-CTK5E0J7.js.map +1 -0
- package/dist/chunks/tag-BGr6lTSV.js +100 -0
- package/dist/chunks/tag-BGr6lTSV.js.map +1 -0
- package/dist/chunks/{text-CIXH8rmT.js → text-DkKdTVUf.js} +9 -9
- package/dist/chunks/text-DkKdTVUf.js.map +1 -0
- package/dist/chunks/{textarea--4FRL3Pb.js → textarea-CO0HP6fK.js} +47 -36
- package/dist/chunks/textarea-CO0HP6fK.js.map +1 -0
- package/dist/chunks/timeseries-Ck-q0wWn.js +381 -0
- package/dist/chunks/timeseries-Ck-q0wWn.js.map +1 -0
- package/dist/chunks/toolbar-u0Gm7Q7-.js +61 -0
- package/dist/chunks/toolbar-u0Gm7Q7-.js.map +1 -0
- package/dist/chunks/tooltip-Tkm-urbi.js +202 -0
- package/dist/chunks/tooltip-Tkm-urbi.js.map +1 -0
- package/dist/chunks/tooltip-root-BC_RNNiP.js +70 -0
- package/dist/chunks/tooltip-root-BC_RNNiP.js.map +1 -0
- package/dist/chunks/truncated-d1afmUJT.js +33 -0
- package/dist/chunks/truncated-d1afmUJT.js.map +1 -0
- package/dist/chunks/use-coarse-pointer-Ml5oE6oX.js +28 -0
- package/dist/chunks/use-coarse-pointer-Ml5oE6oX.js.map +1 -0
- package/dist/chunks/use-hydrating-COtYVRo4.js +8 -0
- package/dist/chunks/use-hydrating-COtYVRo4.js.map +1 -0
- package/dist/chunks/use-scroll-fade-uc8mWSDX.js +30 -0
- package/dist/chunks/use-scroll-fade-uc8mWSDX.js.map +1 -0
- package/dist/chunks/{zh-CN-29X4CDLE.js → zh-CN-BlpsT6d_.js} +80 -39
- package/dist/chunks/zh-CN-BlpsT6d_.js.map +1 -0
- package/dist/components/agent-avatar.js +1 -1
- package/dist/components/app-frame.js +2 -2
- package/dist/components/avatar.js +1 -1
- package/dist/components/badge.js +1 -1
- package/dist/components/banner.js +1 -1
- package/dist/components/button-group.js +22 -22
- package/dist/components/button-group.js.map +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/charts/bar.js +235 -160
- package/dist/components/charts/bar.js.map +1 -1
- package/dist/components/charts/donut.js +144 -99
- package/dist/components/charts/donut.js.map +1 -1
- package/dist/components/charts/gauge.js +61 -49
- package/dist/components/charts/gauge.js.map +1 -1
- package/dist/components/charts/heatmap.js +179 -70
- package/dist/components/charts/heatmap.js.map +1 -1
- package/dist/components/charts/sankey.js +144 -77
- package/dist/components/charts/sankey.js.map +1 -1
- package/dist/components/charts/sparkline.js +54 -38
- package/dist/components/charts/sparkline.js.map +1 -1
- package/dist/components/charts/timeseries.js +1 -1
- package/dist/components/charts.js +2 -2
- package/dist/components/checkbox.js +1 -1
- package/dist/components/code-block.js +4 -3
- package/dist/components/code.js +1 -1
- package/dist/components/collapsible.js +77 -1
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/combobox.js +1 -1
- package/dist/components/command-list.js +2 -2
- package/dist/components/command-palette.js +89 -66
- package/dist/components/command-palette.js.map +1 -1
- package/dist/components/copy-button.js +1 -1
- package/dist/components/data-table.js +1 -459
- package/dist/components/date-picker.js +162 -151
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/dialog.js +74 -63
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/display-options.js +76 -64
- package/dist/components/display-options.js.map +1 -1
- package/dist/components/empty.js +1 -1
- package/dist/components/field.js +1 -1
- package/dist/components/figure.js +2 -2
- package/dist/components/filter-chip.js +36 -27
- package/dist/components/filter-chip.js.map +1 -1
- package/dist/components/filter-row.js +4 -4
- package/dist/components/filter-row.js.map +1 -1
- package/dist/components/flow.js +94 -63
- package/dist/components/flow.js.map +1 -1
- package/dist/components/heading.js +1 -1
- package/dist/components/icon-button.js +1 -1
- package/dist/components/icon.js +2 -2
- package/dist/components/input.js +176 -98
- package/dist/components/input.js.map +1 -1
- package/dist/components/kaeso/conversation.js +51 -46
- package/dist/components/kaeso/conversation.js.map +1 -1
- package/dist/components/kaeso/identity.js +1 -1
- package/dist/components/kaeso/moments.js +23 -20
- package/dist/components/kaeso/moments.js.map +1 -1
- package/dist/components/kaeso/rights.js +1 -1
- package/dist/components/kaeso/usage.js +90 -74
- package/dist/components/kaeso/usage.js.map +1 -1
- package/dist/components/kaeso.js +200 -187
- package/dist/components/kaeso.js.map +1 -1
- package/dist/components/kbd.js +1 -1
- package/dist/components/key-value.js +32 -47
- package/dist/components/key-value.js.map +1 -1
- package/dist/components/label.js +1 -25
- package/dist/components/layout.js +2 -2
- package/dist/components/layout.js.map +1 -1
- package/dist/components/link.js +1 -1
- package/dist/components/list.js +1 -1
- package/dist/components/loader.js +11 -10
- package/dist/components/loader.js.map +1 -1
- package/dist/components/logo.js +2 -2
- package/dist/components/markdown.js +1 -1
- package/dist/components/menu.js +2 -2
- package/dist/components/meter.js +1 -1
- package/dist/components/page-header.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/playground.js +644 -529
- package/dist/components/playground.js.map +1 -1
- package/dist/components/popover.js +4 -4
- package/dist/components/popover.js.map +1 -1
- package/dist/components/portal.js +1 -1
- package/dist/components/qr-code.js +2 -2
- package/dist/components/qr-code.js.map +1 -1
- package/dist/components/radio.js +1 -1
- package/dist/components/release-art.js +1 -1
- package/dist/components/scroll-area.js +1 -1
- package/dist/components/section.js +1 -1
- package/dist/components/segmented.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/separator.js +1 -1
- package/dist/components/settings.js +39 -46
- package/dist/components/settings.js.map +1 -1
- package/dist/components/sheet.js +10 -9
- package/dist/components/sheet.js.map +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/skeleton.js +1 -1
- package/dist/components/slider.js +1 -1
- package/dist/components/stat.js +98 -84
- package/dist/components/stat.js.map +1 -1
- package/dist/components/status-dot.js +1 -1
- package/dist/components/surface.js +1 -1
- package/dist/components/swap-text.js +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/table.js +1 -1
- package/dist/components/tabs.js +73 -55
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/tag.js +1 -1
- package/dist/components/text.js +1 -1
- package/dist/components/theme-image.js +1 -1
- package/dist/components/theme-menu.js +5 -2
- package/dist/components/theme-menu.js.map +1 -1
- package/dist/components/theme-select.js +1 -1
- package/dist/components/thumbnail.js +35 -24
- package/dist/components/thumbnail.js.map +1 -1
- package/dist/components/timeline.js +51 -35
- package/dist/components/timeline.js.map +1 -1
- package/dist/components/toast.js +76 -66
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toc.js +14 -8
- package/dist/components/toc.js.map +1 -1
- package/dist/components/toolbar.js +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/components/visually-hidden.js +1 -1
- package/dist/i18n-provider.js +1 -1
- package/dist/index.js +101 -101
- package/dist/kaeso.css +605 -67
- package/dist/styles.css +1 -1
- package/dist/tailwind.css +1 -1
- package/dist/types/blocks/delete-resource/delete-resource.d.ts +2 -2
- package/dist/types/components/agent-avatar/agent-avatar.d.ts +24 -19
- package/dist/types/components/badge/badge.d.ts +3 -3
- package/dist/types/components/banner/banner.d.ts +3 -3
- package/dist/types/components/button/button.d.ts +2 -2
- package/dist/types/components/button-group/button-group.d.ts +1 -1
- package/dist/types/components/charts/domain.d.ts +11 -0
- package/dist/types/components/charts/marks.d.ts +1 -0
- package/dist/types/components/code/code.d.ts +3 -3
- package/dist/types/components/code-block/diff-view.d.ts +30 -0
- package/dist/types/components/code-block/diff.d.ts +26 -0
- package/dist/types/components/code-block/docs.d.ts +14 -0
- package/dist/types/components/code-block/index.d.ts +1 -0
- package/dist/types/components/code-block/json-view.d.ts +2 -1
- package/dist/types/components/code-block/numbers.d.ts +1 -0
- package/dist/types/components/collapsible/collapsible.d.ts +2 -2
- package/dist/types/components/collapsible/disclosure.d.ts +2 -0
- package/dist/types/components/data-table/data-table.d.ts +6 -5
- package/dist/types/components/data-table/docs.d.ts +1 -0
- package/dist/types/components/data-table/time-columns.d.ts +1 -0
- package/dist/types/components/date-picker/focus-day.d.ts +1 -0
- package/dist/types/components/date-picker/iso-field.d.ts +8 -1
- package/dist/types/components/dialog/dialog.d.ts +7 -7
- package/dist/types/components/field/field.d.ts +1 -1
- package/dist/types/components/flow/flow.d.ts +1 -1
- package/dist/types/components/icon-button/icon-button.d.ts +1 -1
- package/dist/types/components/input/input-group.d.ts +2 -0
- package/dist/types/components/input/number-input.d.ts +4 -4
- package/dist/types/components/input/otp-input.d.ts +3 -3
- package/dist/types/components/kaeso/client-button.d.ts +2 -1
- package/dist/types/components/kaeso/provider-picker.d.ts +1 -0
- package/dist/types/components/kaeso/rights.d.ts +1 -1
- package/dist/types/components/kaeso/role-picker.d.ts +1 -0
- package/dist/types/components/key-value/key-value.d.ts +2 -2
- package/dist/types/components/layout/layout.d.ts +2 -2
- package/dist/types/components/link/link.d.ts +4 -4
- package/dist/types/components/list/list.d.ts +2 -2
- package/dist/types/components/menu/menu.d.ts +2 -1
- package/dist/types/components/menu/styles.d.ts +3 -3
- package/dist/types/components/meter/meter.d.ts +3 -3
- package/dist/types/components/page-header/page-header.d.ts +1 -1
- package/dist/types/components/pagination/pagination.d.ts +2 -2
- package/dist/types/components/playground/prompt-suggestions.d.ts +1 -0
- package/dist/types/components/playground/reasoning-frame.d.ts +14 -0
- package/dist/types/components/playground/reasoning.d.ts +1 -0
- package/dist/types/components/popover/popover.d.ts +1 -1
- package/dist/types/components/scroll-area/scroll-area.d.ts +2 -2
- package/dist/types/components/section/section-header.d.ts +6 -0
- package/dist/types/components/segmented/segmented.d.ts +1 -0
- package/dist/types/components/select/select.d.ts +1 -1
- package/dist/types/components/sheet/sheet.d.ts +3 -3
- package/dist/types/components/sidebar/sidebar.d.ts +1 -0
- package/dist/types/components/slider/slider.d.ts +2 -2
- package/dist/types/components/stat/stat.d.ts +1 -1
- package/dist/types/components/tabs/tabs.d.ts +6 -4
- package/dist/types/components/text/truncated.d.ts +7 -0
- package/dist/types/components/timeline/timeline.d.ts +5 -5
- package/dist/types/components/toc/toc.d.ts +1 -1
- package/dist/types/components/toolbar/toolbar.d.ts +1 -1
- package/dist/types/components/tooltip/tooltip.d.ts +2 -2
- package/dist/types/components/tooltip/trigger-props.d.ts +1 -0
- package/dist/types/hooks/use-coarse-pointer.d.ts +1 -0
- package/dist/types/hooks/use-hydrating.d.ts +1 -0
- package/dist/types/icons/groups.d.ts +1 -1
- package/dist/types/icons/vocabulary.d.ts +5 -0
- package/dist/types/utils/arrow-focus.d.ts +4 -1
- package/dist/types/utils/cn.d.ts +33 -0
- package/dist/types/utils/portal-context.d.ts +7 -1
- package/dist/utils.js +2 -2
- package/foundations/accessibility.md +3 -2
- package/foundations/color.md +5 -1
- package/foundations/elevation.md +1 -0
- package/foundations/motion.md +1 -1
- package/foundations/shape.md +2 -2
- package/foundations/typography.md +12 -12
- package/package.json +2 -2
- package/dist/chunks/agent-avatar-0pdBTWkR.js +0 -171
- package/dist/chunks/agent-avatar-0pdBTWkR.js.map +0 -1
- package/dist/chunks/app-frame-DogGRmsu.js +0 -221
- package/dist/chunks/app-frame-DogGRmsu.js.map +0 -1
- package/dist/chunks/arrow-focus-BcySmwwU.js +0 -11
- package/dist/chunks/arrow-focus-BcySmwwU.js.map +0 -1
- package/dist/chunks/avatar-CWbdwbJv.js +0 -83
- package/dist/chunks/avatar-CWbdwbJv.js.map +0 -1
- package/dist/chunks/badge-C2KtxCLB.js +0 -26
- package/dist/chunks/badge-C2KtxCLB.js.map +0 -1
- package/dist/chunks/banner-BA2ALw9M.js +0 -85
- package/dist/chunks/banner-BA2ALw9M.js.map +0 -1
- package/dist/chunks/button-CzuxqawA.js +0 -164
- package/dist/chunks/button-CzuxqawA.js.map +0 -1
- package/dist/chunks/calendar-BWaf2MXc.js.map +0 -1
- package/dist/chunks/checkbox-CQjwCPkc.js +0 -126
- package/dist/chunks/checkbox-CQjwCPkc.js.map +0 -1
- package/dist/chunks/cn-Dj6sRgkF.js.map +0 -1
- package/dist/chunks/code-block-D5A-CGXG.js +0 -330
- package/dist/chunks/code-block-D5A-CGXG.js.map +0 -1
- package/dist/chunks/code-tqj0uhBL.js.map +0 -1
- package/dist/chunks/collapsible-CKrCX_T9.js +0 -87
- package/dist/chunks/collapsible-CKrCX_T9.js.map +0 -1
- package/dist/chunks/combobox-DjDI7SUC.js +0 -319
- package/dist/chunks/combobox-DjDI7SUC.js.map +0 -1
- package/dist/chunks/command-list-C2Y7V_lt.js +0 -418
- package/dist/chunks/command-list-C2Y7V_lt.js.map +0 -1
- package/dist/chunks/copy-button-FJvPJn72.js.map +0 -1
- package/dist/chunks/core-BYns5ytV.js +0 -472
- package/dist/chunks/core-BYns5ytV.js.map +0 -1
- package/dist/chunks/date-popup-CPA_zt6o.js +0 -35
- package/dist/chunks/date-popup-CPA_zt6o.js.map +0 -1
- package/dist/chunks/de-CPXJh9cq.js.map +0 -1
- package/dist/chunks/dialog-Cg9A_6SF.js.map +0 -1
- package/dist/chunks/field-TviMvYa2.js.map +0 -1
- package/dist/chunks/hidden-description-B2zSmLcn.js +0 -23
- package/dist/chunks/hidden-description-B2zSmLcn.js.map +0 -1
- package/dist/chunks/icon-DVooQfk4.js +0 -94
- package/dist/chunks/icon-button-CrdF_eMG.js.map +0 -1
- package/dist/chunks/input-2VJuj_M4.js.map +0 -1
- package/dist/chunks/input-group-DQ_4DoXg.js.map +0 -1
- package/dist/chunks/iso-field-B2rTwiBo.js +0 -33
- package/dist/chunks/iso-field-B2rTwiBo.js.map +0 -1
- package/dist/chunks/json-view-Dqd2TDkc.js +0 -175
- package/dist/chunks/json-view-Dqd2TDkc.js.map +0 -1
- package/dist/chunks/kbd-BF1vKXJf.js.map +0 -1
- package/dist/chunks/link-KWI7PevW.js.map +0 -1
- package/dist/chunks/list-M1csq-d4.js +0 -494
- package/dist/chunks/list-M1csq-d4.js.map +0 -1
- package/dist/chunks/markdown-DULktoTK.js +0 -313
- package/dist/chunks/markdown-DULktoTK.js.map +0 -1
- package/dist/chunks/menu-DEmBfdPm.js +0 -450
- package/dist/chunks/menu-DEmBfdPm.js.map +0 -1
- package/dist/chunks/meter-Bj4N3Xuh.js +0 -84
- package/dist/chunks/meter-Bj4N3Xuh.js.map +0 -1
- package/dist/chunks/nav-sheet-CzgIwgAm.js +0 -60
- package/dist/chunks/nav-sheet-CzgIwgAm.js.map +0 -1
- package/dist/chunks/nav-wordmark-_pjheAsZ.js.map +0 -1
- package/dist/chunks/page-header-DL2y2iZp.js +0 -41
- package/dist/chunks/page-header-DL2y2iZp.js.map +0 -1
- package/dist/chunks/pagination-Cn_qF4cg.js +0 -86
- package/dist/chunks/pagination-Cn_qF4cg.js.map +0 -1
- package/dist/chunks/picker-popover-BxyU1U9F.js +0 -106
- package/dist/chunks/picker-popover-BxyU1U9F.js.map +0 -1
- package/dist/chunks/popover-DNN4S47w.js +0 -50
- package/dist/chunks/popover-DNN4S47w.js.map +0 -1
- package/dist/chunks/portal-context-BBbzDKmY.js.map +0 -1
- package/dist/chunks/radio-CDDFpdtL.js.map +0 -1
- package/dist/chunks/range-popup-CRyWYUB1.js +0 -128
- package/dist/chunks/range-popup-CRyWYUB1.js.map +0 -1
- package/dist/chunks/release-art-ZwfFQImt.js +0 -561
- package/dist/chunks/release-art-ZwfFQImt.js.map +0 -1
- package/dist/chunks/rights-Cyp0Pzp-.js +0 -279
- package/dist/chunks/rights-Cyp0Pzp-.js.map +0 -1
- package/dist/chunks/scroll-area-D8MD7Vpo.js.map +0 -1
- package/dist/chunks/scroll-parent-WXvzQcUo.js +0 -14
- package/dist/chunks/scroll-parent-WXvzQcUo.js.map +0 -1
- package/dist/chunks/section-Ce1efbsP.js +0 -87
- package/dist/chunks/section-Ce1efbsP.js.map +0 -1
- package/dist/chunks/segmented-CErcoxwi.js +0 -114
- package/dist/chunks/segmented-CErcoxwi.js.map +0 -1
- package/dist/chunks/select-x4XVsdCI.js +0 -210
- package/dist/chunks/select-x4XVsdCI.js.map +0 -1
- package/dist/chunks/separator-D7TzNHmX.js.map +0 -1
- package/dist/chunks/sidebar-3r1ZRXlN.js +0 -621
- package/dist/chunks/sidebar-3r1ZRXlN.js.map +0 -1
- package/dist/chunks/skeleton-Dcz57Zyp.js.map +0 -1
- package/dist/chunks/slider-Ci83PGtj.js +0 -57
- package/dist/chunks/slider-Ci83PGtj.js.map +0 -1
- package/dist/chunks/swap-text-Dr0Irxz6.js.map +0 -1
- package/dist/chunks/switch-BNMq_kGt.js +0 -59
- package/dist/chunks/switch-BNMq_kGt.js.map +0 -1
- package/dist/chunks/table-BeOSKl_3.js +0 -84
- package/dist/chunks/table-BeOSKl_3.js.map +0 -1
- package/dist/chunks/tag-D_M1s2qS.js +0 -87
- package/dist/chunks/tag-D_M1s2qS.js.map +0 -1
- package/dist/chunks/text-CIXH8rmT.js.map +0 -1
- package/dist/chunks/textarea--4FRL3Pb.js.map +0 -1
- package/dist/chunks/timeseries-D1xjRXfk.js +0 -339
- package/dist/chunks/timeseries-D1xjRXfk.js.map +0 -1
- package/dist/chunks/toolbar-WA_oZgu-.js +0 -37
- package/dist/chunks/toolbar-WA_oZgu-.js.map +0 -1
- package/dist/chunks/tooltip-OcwO0VUT.js +0 -154
- package/dist/chunks/tooltip-OcwO0VUT.js.map +0 -1
- package/dist/chunks/tooltip-root-DzahJDVj.js +0 -60
- package/dist/chunks/tooltip-root-DzahJDVj.js.map +0 -1
- package/dist/chunks/zh-CN-29X4CDLE.js.map +0 -1
- package/dist/components/data-table.js.map +0 -1
- package/dist/components/label.js.map +0 -1
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as e } from "./cn-BjnOAUrA.js";
|
|
3
|
+
import { i as t, r as n } from "./context-BELWW79w.js";
|
|
4
|
+
import { dateFormatter as r, formatNumber as i, formatPercent as a, formatTimeZone as o } from "../format.js";
|
|
5
|
+
import { A as ee, D as s, E as c, O as l, S as te, _ as u, b as ne, g as re, i as ie, n as ae, p as oe, r as se, s as ce, t as d, v as le } from "./core-CmK-8ObW.js";
|
|
6
|
+
import { t as ue } from "./linear-scale-BWKeRqDX.js";
|
|
7
|
+
import { a as de, n as fe, o as pe, r as me, s as he, t as ge } from "./domain-obd_w9xk.js";
|
|
8
|
+
import { forwardRef as f, useId as _e, useMemo as ve, useState as ye } from "react";
|
|
9
|
+
import { Fragment as be, jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
10
|
+
import { area as xe, curveMonotoneX as h, line as Se, stack as Ce, stackOffsetDiverging as we } from "d3-shape";
|
|
11
|
+
import { bisector as Te, max as Ee, min as De } from "d3-array";
|
|
12
|
+
import { utcTicks as Oe } from "d3-time";
|
|
13
|
+
//#region src/components/charts/time-axis.ts
|
|
14
|
+
var g = /* @__PURE__ */ new Map();
|
|
15
|
+
function ke(e) {
|
|
16
|
+
if (!e) return (e) => e.getTime() - e.getTimezoneOffset() * 6e4;
|
|
17
|
+
if (e === "UTC") return (e) => e.getTime();
|
|
18
|
+
let t = g.get(e);
|
|
19
|
+
if (!t) {
|
|
20
|
+
let n = new Intl.DateTimeFormat("en-US", {
|
|
21
|
+
timeZone: e,
|
|
22
|
+
hourCycle: "h23",
|
|
23
|
+
year: "numeric",
|
|
24
|
+
month: "numeric",
|
|
25
|
+
day: "numeric",
|
|
26
|
+
hour: "numeric",
|
|
27
|
+
minute: "numeric",
|
|
28
|
+
second: "numeric"
|
|
29
|
+
});
|
|
30
|
+
t = (e) => {
|
|
31
|
+
let t = Object.fromEntries(n.formatToParts(e).map((e) => [e.type, Number(e.value)]));
|
|
32
|
+
return Date.UTC(t.year ?? 1970, (t.month ?? 1) - 1, t.day ?? 1, t.hour ?? 0, t.minute ?? 0, t.second ?? 0) + e.getUTCMilliseconds();
|
|
33
|
+
}, g.set(e, t);
|
|
34
|
+
}
|
|
35
|
+
return t;
|
|
36
|
+
}
|
|
37
|
+
function Ae(e, t) {
|
|
38
|
+
let n = e - (t(new Date(e)) - e);
|
|
39
|
+
return new Date(e - (t(new Date(n)) - n));
|
|
40
|
+
}
|
|
41
|
+
function _(e, t, n, r) {
|
|
42
|
+
return Oe(new Date(r(e)), new Date(r(t)), n).flatMap((e) => {
|
|
43
|
+
let t = Ae(e.getTime(), r);
|
|
44
|
+
return r(t) === e.getTime() ? [t] : [];
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
var je = (e, t) => new Date(t(e)).toISOString().slice(0, 10), Me = { kind: {
|
|
48
|
+
line: { classes: "" },
|
|
49
|
+
area: { classes: "" },
|
|
50
|
+
stacked: { classes: "" }
|
|
51
|
+
} }, Ne = { kind: "line" };
|
|
52
|
+
function v(e, t, n) {
|
|
53
|
+
return r({
|
|
54
|
+
...t,
|
|
55
|
+
...n ? { timeZone: n } : {}
|
|
56
|
+
}, e);
|
|
57
|
+
}
|
|
58
|
+
var Pe = {
|
|
59
|
+
hour: "2-digit",
|
|
60
|
+
minute: "2-digit",
|
|
61
|
+
hourCycle: "h23"
|
|
62
|
+
}, y = {
|
|
63
|
+
month: "short",
|
|
64
|
+
day: "numeric"
|
|
65
|
+
}, Fe = 36e5;
|
|
66
|
+
function Ie(e, t, n, r) {
|
|
67
|
+
if (t <= 48 * Fe) return v(e, Pe, n);
|
|
68
|
+
if (t <= 2160 * Fe) return v(e, y, n);
|
|
69
|
+
let i = v(e, { month: "short" }, n);
|
|
70
|
+
return (e) => {
|
|
71
|
+
let t = new Date(r(e));
|
|
72
|
+
return t.getUTCMonth() === 0 ? String(t.getUTCFullYear()) : i(e);
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
var Le = 864e5;
|
|
76
|
+
function Re(e, t, n, r, i, a, o, ee) {
|
|
77
|
+
let s = [];
|
|
78
|
+
for (let c = Math.max(2, Math.min(10, Math.floor(n / 64))); c >= 1; c--) {
|
|
79
|
+
let n = _(e, t, c, o).filter((e) => !ee || o(e) % Le === 0).filter((e, t, n) => t === 0 || a(e) !== a(n[t - 1])), l = u(n.map((e) => ({
|
|
80
|
+
key: e.getTime(),
|
|
81
|
+
at: Math.round(i(e)),
|
|
82
|
+
label: a(e)
|
|
83
|
+
})), r);
|
|
84
|
+
if (l.length === n.length && l.length >= 2) return l;
|
|
85
|
+
l.length > s.length && (s = l);
|
|
86
|
+
}
|
|
87
|
+
if (s.length < 2 && t.getTime() > e.getTime()) {
|
|
88
|
+
let n = u([e, t].map((e) => ({
|
|
89
|
+
key: e.getTime(),
|
|
90
|
+
at: Math.round(i(e)),
|
|
91
|
+
label: a(e)
|
|
92
|
+
})), r);
|
|
93
|
+
if (n.length === 2) return n;
|
|
94
|
+
}
|
|
95
|
+
return s;
|
|
96
|
+
}
|
|
97
|
+
var ze = /* @__PURE__ */ f(function({ series: r, kind: u = "line", height: f = 240, formatValue: Oe, threshold: g, hideLegend: Ae, highlight: _, formatTime: Me, formatTick: Ne, tickAt: Le = "time", timeZone: ze, shares: Be = !0, partial: b, className: Ve, "aria-label": He, ...x }, Ue) {
|
|
98
|
+
let S = t(), We = n(), Ge = Oe ?? ((e) => i(e)), [Ke, C] = s(), w = _e().replace(/:/g, ""), qe = te(Oe ?? fe), [Je, Ye] = ye(/* @__PURE__ */ new Set()), [T, Xe] = ye(null), [E, Ze] = ye(null), D = r.filter((e) => !Je.has(e.id)), O = ve(() => (r[0]?.points ?? []).map((e) => new Date(e.t)), [r]), k = D.flatMap((e) => e.points.map((e) => e.v)), Qe = r.length > 0 && D.length === 0, A = x.empty ?? (Qe || O.length === 0 || !de(k)), j = u === "stacked", $e = (e) => O.map((t, n) => D.reduce((t, r) => t + (Number.isFinite(r.points[n]?.v) && (r.points[n]?.v ?? 0) * e > 0 ? r.points[n].v : 0), 0)), et = he(j ? [...$e(1), ...$e(-1)] : k, g ? [g.value] : []), M = ue().domain(et).nice(4), [tt = 0, nt = 1] = M.domain(), N = l([
|
|
99
|
+
...k.map((e) => Number.isFinite(e) ? e : 0),
|
|
100
|
+
tt,
|
|
101
|
+
nt
|
|
102
|
+
], !!x.loading), P = N[N.length - 2] ?? tt, rt = N[N.length - 1] ?? nt, it = A ? [] : pe(k) ? [0] : ee(le(M, qe), me(k)).filter((e) => e >= P - 1e-9 && e <= rt + 1e-9), F = {
|
|
103
|
+
top: 8,
|
|
104
|
+
right: ge(it.map(qe), { max: C.width ? C.width * .4 : Infinity }),
|
|
105
|
+
bottom: 28,
|
|
106
|
+
left: 0
|
|
107
|
+
}, I = Math.max(0, C.width - F.left - F.right), L = Math.max(0, f - F.top - F.bottom);
|
|
108
|
+
M.range([L, 0]);
|
|
109
|
+
let at = D.map((e, t) => D.slice(0, t).reduce((e, t) => e + t.points.length, 0)), R = D.map((e, t) => e.points.map((e, n) => Number.isFinite(e.v) ? N[at[t] + n] ?? 0 : NaN)), ot = M.copy().domain([P, rt === P ? P + 1 : rt]), z = (e) => ot(e), B = Math.round(Math.max(0, Math.min(L, z(0)))), V = De(O) ?? /* @__PURE__ */ new Date(0), st = Ee(O) ?? V, H = Le === "points" && O.length > 0, U = H ? I / O.length : 0, W = ue().domain([V.getTime(), st.getTime()]).range([0, I]), G = (e) => H ? (e + .5) * U : W(O[e] ?? V), ct = j ? Ce().keys(D.map((e, t) => String(t))).offset(we)(O.map((e, t) => D.map((e, n) => Number.isFinite(R[n]?.[t]) ? R[n][t] : 0))) : null, K = ze ?? o(), lt = ke(K), ut = (O[O.length - 1]?.getTime() ?? 0) - (O[0]?.getTime() ?? 0), dt = Ne ?? (O.length === 1 ? v(We, y, K) : Ie(We, ut, K, lt)), ft = Le === "points" || O.length === 1 ? oe(O.map(dt), H ? U : I, H ? {
|
|
110
|
+
start: U / 2,
|
|
111
|
+
end: U / 2 + F.right
|
|
112
|
+
} : {
|
|
113
|
+
start: I / 2,
|
|
114
|
+
end: I / 2 + F.right
|
|
115
|
+
}, O.map((e) => je(e, lt))).map((e) => ({
|
|
116
|
+
key: O[e].getTime(),
|
|
117
|
+
x: Math.round(G(e)),
|
|
118
|
+
anchor: "middle",
|
|
119
|
+
label: dt(O[e])
|
|
120
|
+
})) : O.length ? Re(V, st, I, I + F.right, (e) => W(e.getTime()), dt, lt, !Ne && ut > 48 * Fe) : [], pt = (O[1]?.getTime() ?? 0) - (O[0]?.getTime() ?? 0), mt = Me ?? v(We, pt && pt < 864e5 ? {
|
|
121
|
+
weekday: "short",
|
|
122
|
+
...y,
|
|
123
|
+
...Pe
|
|
124
|
+
} : ut <= 7776e6 ? {
|
|
125
|
+
weekday: "short",
|
|
126
|
+
...y
|
|
127
|
+
} : {
|
|
128
|
+
...y,
|
|
129
|
+
year: "numeric"
|
|
130
|
+
}, K), q = O.length - 1, ht = (e) => {
|
|
131
|
+
let t = mt(O[e]);
|
|
132
|
+
return b?.ongoing && e === q ? S("chart.soFar", "{heading}, so far", { heading: t }) : b?.last && e === q || b?.first && e === 0 ? S("chart.partial", "{heading}, partial", { heading: t }) : t;
|
|
133
|
+
}, J = !!b?.first && q >= 1, Y = !!(b?.last || b?.ongoing) && q >= 1, gt = J ? Math.round(G(1)) : -F.left, _t = Y ? Math.round(G(q - 1)) : I + F.right, vt = (e) => !J && !Y ? /* @__PURE__ */ p("path", { ...e }) : /* @__PURE__ */ m(be, { children: [/* @__PURE__ */ p("path", {
|
|
134
|
+
...e,
|
|
135
|
+
clipPath: `url(#${w}-whole)`
|
|
136
|
+
}), /* @__PURE__ */ p("path", {
|
|
137
|
+
...e,
|
|
138
|
+
clipPath: `url(#${w}-partial)`,
|
|
139
|
+
strokeDasharray: "4 4",
|
|
140
|
+
"data-partial": ""
|
|
141
|
+
})] }), yt = Se().defined(Number.isFinite).x((e, t) => Math.round(G(t))).y((e) => z(e)).curve(h), bt = xe().defined(Number.isFinite).x((e, t) => Math.round(G(t))).y0(B).y1((e) => z(e)).curve(h), xt = xe().x((e, t) => Math.round(G(t))).y0((e) => z(e[0])).y1((e) => z(e[1])).curve(h), St = Se().x((e, t) => Math.round(G(t))).y((e) => z(e[0] < 0 && e[1] <= 0 ? e[0] : e[1])).curve(h), Ct = (e) => e.flatMap((t, n) => Number.isFinite(t) && !Number.isFinite(e[n - 1] ?? NaN) && !Number.isFinite(e[n + 1] ?? NaN) ? [n] : []), wt = ve(() => ne(r.map((e) => e.id)), [r]), X = (e) => e.color ?? wt.get(e.id), Tt = Te((e) => e.getTime()).center, Et = (e) => {
|
|
142
|
+
let t = e.currentTarget.getBoundingClientRect(), n = e.clientX - t.left, r = H ? Math.max(0, Math.min(O.length - 1, Math.floor(n / U))) : Tt(O, W.invert(n));
|
|
143
|
+
Ze({
|
|
144
|
+
i: r,
|
|
145
|
+
y: Math.round(e.clientY - t.top + F.top)
|
|
146
|
+
});
|
|
147
|
+
}, Dt = {
|
|
148
|
+
columns: [S("timeseriesChart.time", "Time"), ...r.map((e) => e.label)],
|
|
149
|
+
rows: O.map((e, t) => [ht(t), ...r.map((e) => Number.isFinite(e.points[t]?.v) ? Ge(e.points[t].v) : "–")])
|
|
150
|
+
}, Ot = !!x.loading || A, Z = c(Ot || x.error ? 0 : O.length), Q = Ot || x.error ? null : E?.i ?? Z.index ?? (_ !== void 0 && _ < O.length ? _ : null), $ = Q === null ? 0 : Math.round(G(Q)) + F.left, kt = (e) => Math.max(0, Math.min(L, e)), At = Q === null ? 0 : E && E.i === Q ? E.y : F.top + Math.round(kt(j ? Math.min(B, ...(ct ?? []).map((e) => z(e[Q]?.[1] ?? 0))) : Math.min(...R.map((e) => Number.isFinite(e[Q]) ? z(e[Q]) : L)))), jt = (e) => D.map((t) => {
|
|
151
|
+
let n = t.points[e]?.v ?? NaN, r = D.reduce((t, n) => t + Math.abs(Number.isFinite(n.points[e]?.v) ? n.points[e].v : 0), 0);
|
|
152
|
+
return {
|
|
153
|
+
id: t.id,
|
|
154
|
+
label: t.label,
|
|
155
|
+
color: X(t),
|
|
156
|
+
value: Number.isFinite(n) ? Ge(n) : "–",
|
|
157
|
+
...Be && D.length > 1 && r && Number.isFinite(n) ? { share: a(Math.round(Math.abs(n) / r * 100) / 100, 0) } : {}
|
|
158
|
+
};
|
|
159
|
+
});
|
|
160
|
+
return /* @__PURE__ */ p("div", {
|
|
161
|
+
ref: Ue,
|
|
162
|
+
className: e("min-w-0", Ve),
|
|
163
|
+
children: /* @__PURE__ */ p(ae, {
|
|
164
|
+
label: He,
|
|
165
|
+
height: f,
|
|
166
|
+
table: Dt,
|
|
167
|
+
state: {
|
|
168
|
+
...x,
|
|
169
|
+
empty: A,
|
|
170
|
+
...Qe && !x.empty ? { emptyText: S("chart.allHidden", "Every series is hidden. Choose one in the legend to show it.") } : {}
|
|
171
|
+
},
|
|
172
|
+
legend: !Ae && r.length > 1 ? /* @__PURE__ */ p(ce, {
|
|
173
|
+
items: r.map((e) => ({
|
|
174
|
+
id: e.id,
|
|
175
|
+
label: e.label,
|
|
176
|
+
color: X(e)
|
|
177
|
+
})),
|
|
178
|
+
hidden: Je,
|
|
179
|
+
shape: u === "line" ? "line" : "square",
|
|
180
|
+
onToggle: (e) => {
|
|
181
|
+
let t = new Set(Je);
|
|
182
|
+
t.has(e) ? t.delete(e) : t.add(e), Ye(t);
|
|
183
|
+
},
|
|
184
|
+
onHover: Xe
|
|
185
|
+
}) : void 0,
|
|
186
|
+
children: /* @__PURE__ */ m("div", {
|
|
187
|
+
ref: Ke,
|
|
188
|
+
role: "group",
|
|
189
|
+
"aria-label": He,
|
|
190
|
+
...Z.props,
|
|
191
|
+
className: "absolute inset-0 rounded-cell focus-ring",
|
|
192
|
+
children: [
|
|
193
|
+
C.width > 0 && /* @__PURE__ */ m("svg", {
|
|
194
|
+
width: C.width,
|
|
195
|
+
height: f,
|
|
196
|
+
className: "block overflow-visible",
|
|
197
|
+
role: "presentation",
|
|
198
|
+
children: [/* @__PURE__ */ m("defs", { children: [
|
|
199
|
+
/* @__PURE__ */ p("clipPath", {
|
|
200
|
+
id: `${w}-plot`,
|
|
201
|
+
children: /* @__PURE__ */ p("rect", {
|
|
202
|
+
x: -F.left - 4,
|
|
203
|
+
y: -4,
|
|
204
|
+
width: I + F.left + 8,
|
|
205
|
+
height: L + 8
|
|
206
|
+
})
|
|
207
|
+
}),
|
|
208
|
+
(J || Y) && /* @__PURE__ */ m(be, { children: [/* @__PURE__ */ p("clipPath", {
|
|
209
|
+
id: `${w}-whole`,
|
|
210
|
+
children: /* @__PURE__ */ p("rect", {
|
|
211
|
+
x: gt,
|
|
212
|
+
y: -F.top,
|
|
213
|
+
width: Math.max(0, _t - gt),
|
|
214
|
+
height: f
|
|
215
|
+
})
|
|
216
|
+
}), /* @__PURE__ */ m("clipPath", {
|
|
217
|
+
id: `${w}-partial`,
|
|
218
|
+
children: [J && /* @__PURE__ */ p("rect", {
|
|
219
|
+
x: -F.left,
|
|
220
|
+
y: -F.top,
|
|
221
|
+
width: gt + F.left,
|
|
222
|
+
height: f
|
|
223
|
+
}), Y && /* @__PURE__ */ p("rect", {
|
|
224
|
+
x: _t,
|
|
225
|
+
y: -F.top,
|
|
226
|
+
width: I + F.right - _t,
|
|
227
|
+
height: f
|
|
228
|
+
})]
|
|
229
|
+
})] }),
|
|
230
|
+
D.map((e) => /* @__PURE__ */ m("linearGradient", {
|
|
231
|
+
id: `${w}-${e.id}`,
|
|
232
|
+
x1: "0",
|
|
233
|
+
y1: "0",
|
|
234
|
+
x2: "0",
|
|
235
|
+
y2: "1",
|
|
236
|
+
children: [/* @__PURE__ */ p("stop", {
|
|
237
|
+
offset: "0%",
|
|
238
|
+
stopColor: X(e),
|
|
239
|
+
className: "chart-fill-top"
|
|
240
|
+
}), /* @__PURE__ */ p("stop", {
|
|
241
|
+
offset: "100%",
|
|
242
|
+
stopColor: X(e),
|
|
243
|
+
stopOpacity: 0
|
|
244
|
+
})]
|
|
245
|
+
}, e.id))
|
|
246
|
+
] }), /* @__PURE__ */ m("g", {
|
|
247
|
+
transform: `translate(${F.left},${F.top})`,
|
|
248
|
+
children: [
|
|
249
|
+
it.map((e) => /* @__PURE__ */ m("g", {
|
|
250
|
+
transform: `translate(0,${Math.round(z(e)) + .5})`,
|
|
251
|
+
children: [e !== 0 && /* @__PURE__ */ p("line", {
|
|
252
|
+
x2: I,
|
|
253
|
+
...d.grid
|
|
254
|
+
}), /* @__PURE__ */ p("text", {
|
|
255
|
+
x: I + 12,
|
|
256
|
+
dy: "0.32em",
|
|
257
|
+
...d.label,
|
|
258
|
+
children: qe(e)
|
|
259
|
+
})]
|
|
260
|
+
}, e)),
|
|
261
|
+
/* @__PURE__ */ p("line", {
|
|
262
|
+
x2: I,
|
|
263
|
+
y1: B + .5,
|
|
264
|
+
y2: B + .5,
|
|
265
|
+
...d.baseline
|
|
266
|
+
}),
|
|
267
|
+
ft.map((e) => /* @__PURE__ */ p("text", {
|
|
268
|
+
x: e.x,
|
|
269
|
+
y: L + 20,
|
|
270
|
+
textAnchor: e.anchor,
|
|
271
|
+
...d.label,
|
|
272
|
+
children: e.label
|
|
273
|
+
}, e.key)),
|
|
274
|
+
/* @__PURE__ */ p("g", {
|
|
275
|
+
clipPath: `url(#${w}-plot)`,
|
|
276
|
+
children: A ? null : j && ct ? ct.map((e, t) => {
|
|
277
|
+
let n = D[t];
|
|
278
|
+
return /* @__PURE__ */ m("g", {
|
|
279
|
+
opacity: T && T !== n.id ? .3 : 1,
|
|
280
|
+
className: "opacity-motion",
|
|
281
|
+
children: [/* @__PURE__ */ p("path", {
|
|
282
|
+
d: xt(e) ?? "",
|
|
283
|
+
fill: X(n),
|
|
284
|
+
className: "chart-stack-fill"
|
|
285
|
+
}), vt({
|
|
286
|
+
d: St(e) ?? "",
|
|
287
|
+
fill: "none",
|
|
288
|
+
stroke: X(n),
|
|
289
|
+
strokeWidth: 1.5,
|
|
290
|
+
strokeLinejoin: "round",
|
|
291
|
+
strokeLinecap: "round"
|
|
292
|
+
})]
|
|
293
|
+
}, n.id);
|
|
294
|
+
}) : D.map((e, t) => /* @__PURE__ */ m("g", {
|
|
295
|
+
opacity: T && T !== e.id ? .3 : 1,
|
|
296
|
+
className: "opacity-motion",
|
|
297
|
+
children: [
|
|
298
|
+
u === "area" && /* @__PURE__ */ p("path", {
|
|
299
|
+
d: bt(R[t] ?? []) ?? "",
|
|
300
|
+
fill: `url(#${w}-${e.id})`
|
|
301
|
+
}),
|
|
302
|
+
vt({
|
|
303
|
+
d: yt(R[t] ?? []) ?? "",
|
|
304
|
+
fill: "none",
|
|
305
|
+
stroke: X(e),
|
|
306
|
+
strokeWidth: 2,
|
|
307
|
+
strokeLinejoin: "round",
|
|
308
|
+
strokeLinecap: "round"
|
|
309
|
+
}),
|
|
310
|
+
Ct(R[t] ?? []).map((n) => /* @__PURE__ */ p("circle", {
|
|
311
|
+
"data-point": "",
|
|
312
|
+
cx: Math.round(G(n)),
|
|
313
|
+
cy: z(R[t][n]),
|
|
314
|
+
r: 2.5,
|
|
315
|
+
fill: X(e)
|
|
316
|
+
}, n))
|
|
317
|
+
]
|
|
318
|
+
}, e.id))
|
|
319
|
+
}),
|
|
320
|
+
g && z(g.value) >= 0 && z(g.value) <= L && /* @__PURE__ */ m("g", {
|
|
321
|
+
transform: `translate(0,${Math.round(z(g.value)) + .5})`,
|
|
322
|
+
children: [/* @__PURE__ */ p("line", {
|
|
323
|
+
x2: I,
|
|
324
|
+
stroke: "var(--k-danger)",
|
|
325
|
+
strokeDasharray: "4 4",
|
|
326
|
+
strokeWidth: 1
|
|
327
|
+
}), /* @__PURE__ */ p("text", {
|
|
328
|
+
x: 0,
|
|
329
|
+
dy: -6,
|
|
330
|
+
fill: "var(--k-danger-text)",
|
|
331
|
+
fontSize: 12,
|
|
332
|
+
fontWeight: 500,
|
|
333
|
+
children: g.label
|
|
334
|
+
})]
|
|
335
|
+
}),
|
|
336
|
+
Q !== null && /* @__PURE__ */ m("g", {
|
|
337
|
+
"aria-hidden": !0,
|
|
338
|
+
children: [/* @__PURE__ */ p("line", {
|
|
339
|
+
x1: $ - F.left + .5,
|
|
340
|
+
x2: $ - F.left + .5,
|
|
341
|
+
y2: L,
|
|
342
|
+
...d.grid,
|
|
343
|
+
stroke: "var(--k-line-strong)"
|
|
344
|
+
}), !j && D.map((e, t) => Number.isFinite(R[t]?.[Q]) ? /* @__PURE__ */ p("circle", {
|
|
345
|
+
cx: $ - F.left,
|
|
346
|
+
cy: kt(z(R[t][Q])),
|
|
347
|
+
r: 4,
|
|
348
|
+
fill: X(e),
|
|
349
|
+
stroke: "var(--k-bg-panel)",
|
|
350
|
+
strokeWidth: 2
|
|
351
|
+
}, e.id) : null)]
|
|
352
|
+
}),
|
|
353
|
+
/* @__PURE__ */ p("rect", {
|
|
354
|
+
width: I,
|
|
355
|
+
height: L,
|
|
356
|
+
fill: "transparent",
|
|
357
|
+
onPointerMove: Et,
|
|
358
|
+
onPointerLeave: () => Ze(null)
|
|
359
|
+
})
|
|
360
|
+
]
|
|
361
|
+
})]
|
|
362
|
+
}),
|
|
363
|
+
Q !== null && O[Q] && /* @__PURE__ */ p(ie, {
|
|
364
|
+
x: $,
|
|
365
|
+
y: At,
|
|
366
|
+
width: C.width,
|
|
367
|
+
visible: !0,
|
|
368
|
+
heading: ht(Q),
|
|
369
|
+
rows: jt(Q)
|
|
370
|
+
}),
|
|
371
|
+
/* @__PURE__ */ p(se, { children: Z.index !== null && Q !== null && O[Z.index] ? re(ht(Z.index), jt(Z.index), S) : null })
|
|
372
|
+
]
|
|
373
|
+
})
|
|
374
|
+
})
|
|
375
|
+
});
|
|
376
|
+
});
|
|
377
|
+
process.env.NODE_ENV !== "production" && (ze.displayName = "TimeseriesChart");
|
|
378
|
+
//#endregion
|
|
379
|
+
export { Me as n, ze as r, Ne as t };
|
|
380
|
+
|
|
381
|
+
//# sourceMappingURL=timeseries-Ck-q0wWn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeseries-Ck-q0wWn.js","names":["d3min","d3max","d3stack","_Fragment","d3line","d3area","cn","useUiText","useLocale","wholeTicks","useSize","useChartKeys","useTweened","tickLabel","placeTimeLabels","seriesColors","liveLine","ChartTooltip","ChartFrame","axisLabelIndexes","ChartLive","Legend","AXIS","readableTicks","scaleLinear","hasPoints","compactAxis","onlyZero","finite","valueExtent","axisRoom","Fragment$1","clocks","wallClock","timeZone","d","clock","f","p","x","fromWall","guess","wall","zoneTicks","utcTicks","from","to","count","w","wallDay","KAESO_TIMESERIES_CHART_VARIANTS","KAESO_TIMESERIES_CHART_DEFAULT_VARIANTS","timeFormat","dateFormatter","options","locale","CLOCK","DAY","H","tickFormat","span","month","DAY_MS","timeLabels","fallback","ticks","t0","t1","days","i","label","all","placed","at","right","ends","TimeseriesChart","ariaLabel","state","t","format","formatValue","formatNumber","v","box","size","gid","useId","axisLabel","hidden","setHidden","useState","focus","setFocus","hover","setHover","visible","series","s","times","useMemo","flatValues","allHidden","empty","stacked","kind","stackSums","a","ti","sign","extent","threshold","axis","niceLo","niceHi","drawn","lo","hi","yTicks","M","h","height","offsets","si","values","pi","yScale","y","zero","min","max","ordinal","tickAt","slot","stackData","stack","stackOffsetDiverging","zone","formatTimeZone","fmt","formatTick","xLabels","step","pointFormat","formatTime","last","headingFormat","heading","partial","dashedFirst","dashedLast","cutStart","cutEnd","partialLine","stroke","lineGen","line","curveMonotoneX","areaGen","area","stackArea","stackTop","lonely","vs","palette","color","bis","bisector","onMove","r","px","table","blank","keys","active","highlight","activeX","clampY","activeY","layer","sv","rowsFor","total","acc","ss","shares","formatPercent","className","hideLegend","n","id","tick","l","li"],"sources":["../../src/components/charts/time-axis.ts","../../src/components/charts/timeseries.tsx"],"sourcesContent":["import { utcTicks } from \"d3-time\";\n\nexport type WallClock = (d: Date) => number;\n\nconst clocks = new Map<string, WallClock>();\n\nexport function wallClock(timeZone: string | undefined): WallClock {\n if (!timeZone) return (d) => d.getTime() - d.getTimezoneOffset() * 60_000;\n if (timeZone === \"UTC\") return (d) => d.getTime();\n let clock = clocks.get(timeZone);\n if (!clock) {\n const f = new Intl.DateTimeFormat(\"en-US\", {\n timeZone,\n hourCycle: \"h23\",\n year: \"numeric\",\n month: \"numeric\",\n day: \"numeric\",\n hour: \"numeric\",\n minute: \"numeric\",\n second: \"numeric\",\n });\n clock = (d) => {\n const p = Object.fromEntries(f.formatToParts(d).map((x) => [x.type, Number(x.value)]));\n return Date.UTC(p.year ?? 1970, (p.month ?? 1) - 1, p.day ?? 1, p.hour ?? 0, p.minute ?? 0, p.second ?? 0) + d.getUTCMilliseconds();\n };\n clocks.set(timeZone, clock);\n }\n return clock;\n}\n\nexport function fromWall(wall: number, clock: WallClock): Date {\n const guess = wall - (clock(new Date(wall)) - wall);\n return new Date(wall - (clock(new Date(guess)) - guess));\n}\n\nexport function zoneTicks(from: Date, to: Date, count: number, clock: WallClock): Date[] {\n return utcTicks(new Date(clock(from)), new Date(clock(to)), count).flatMap((w) => {\n const d = fromWall(w.getTime(), clock);\n // A wall time skipped when clocks spring forward has no instant; it would land on the next tick.\n return clock(d) === w.getTime() ? [d] : [];\n });\n}\n\nexport const wallDay = (d: Date, clock: WallClock) => new Date(clock(d)).toISOString().slice(0, 10);\n","import type * as React from \"react\";\nimport { forwardRef, useId, useMemo, useState, type ReactNode } from \"react\";\nimport { scaleLinear } from \"./linear-scale.js\";\nimport { area as d3area, curveMonotoneX, line as d3line, stack as d3stack, stackOffsetDiverging, type SeriesPoint } from \"d3-shape\";\nimport { bisector, max as d3max, min as d3min } from \"d3-array\";\nimport { cn } from \"../../utils/cn.js\";\nimport { dateFormatter, formatNumber, formatPercent, formatTimeZone } from \"../../format/index.js\";\nimport { useLocale, useUiText } from \"../../i18n/context.js\";\nimport {\n AXIS,\n axisLabelIndexes,\n ChartFrame,\n ChartLive,\n ChartTooltip,\n Legend,\n placeTimeLabels,\n liveLine,\n seriesColors,\n readableTicks,\n tickLabel,\n useChartKeys,\n useSize,\n useTweened,\n wholeTicks,\n type ChartState,\n} from \"./core.js\";\nimport { axisRoom, compactAxis, finite, onlyZero, hasPoints, valueExtent } from \"./domain.js\";\nimport { wallClock, wallDay, zoneTicks, type WallClock } from \"./time-axis.js\";\n\nexport const KAESO_TIMESERIES_CHART_VARIANTS = {\n kind: {\n line: { classes: \"\" },\n area: { classes: \"\" },\n stacked: { classes: \"\" },\n },\n} as const;\nexport const KAESO_TIMESERIES_CHART_DEFAULT_VARIANTS = { kind: \"line\" } as const;\n\nexport interface TimePoint {\n t: Date | number | string;\n v: number;\n}\nexport interface TimeSeries {\n id: string;\n label: string;\n points: TimePoint[];\n color?: string | undefined;\n}\n\nexport interface TimeseriesChartProps extends ChartState {\n series: TimeSeries[];\n kind?: keyof typeof KAESO_TIMESERIES_CHART_VARIANTS.kind | undefined;\n height?: number | undefined;\n formatValue?: ((v: number) => string) | undefined;\n threshold?: { value: number; label: string } | undefined;\n hideLegend?: boolean | undefined;\n highlight?: number | undefined;\n formatTime?: ((t: Date) => string) | undefined;\n formatTick?: ((t: Date) => string) | undefined;\n tickAt?: \"time\" | \"points\" | undefined;\n timeZone?: string | undefined;\n shares?: boolean | undefined;\n partial?: { first?: boolean | undefined; last?: boolean | undefined; ongoing?: boolean | undefined } | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n}\n\nfunction timeFormat(locale: string, options: Intl.DateTimeFormatOptions, timeZone: string | undefined): (d: Date) => string {\n return dateFormatter({ ...options, ...(timeZone ? { timeZone } : {}) }, locale);\n}\nconst CLOCK = { hour: \"2-digit\", minute: \"2-digit\", hourCycle: \"h23\" } as const;\nconst DAY = { month: \"short\", day: \"numeric\" } as const;\nconst H = 3_600_000;\n\nfunction tickFormat(locale: string, span: number, timeZone: string | undefined, clock: WallClock) {\n if (span <= 48 * H) return timeFormat(locale, CLOCK, timeZone);\n if (span <= 90 * 24 * H) return timeFormat(locale, DAY, timeZone);\n const month = timeFormat(locale, { month: \"short\" }, timeZone);\n return (d: Date) => {\n const wall = new Date(clock(d));\n return wall.getUTCMonth() === 0 ? String(wall.getUTCFullYear()) : month(d);\n };\n}\n\ntype PlacedLabel = { key: number; x: number; anchor: \"start\" | \"middle\" | \"end\"; label: string };\n\nconst DAY_MS = 86_400_000;\n\nfunction timeLabels(\n t0: Date,\n t1: Date,\n w: number,\n right: number,\n at: (d: Date) => number,\n label: (d: Date) => string,\n clock: WallClock,\n days: boolean,\n): PlacedLabel[] {\n let fallback: PlacedLabel[] = [];\n for (let count = Math.max(2, Math.min(10, Math.floor(w / 64))); count >= 1; count--) {\n const ticks = zoneTicks(t0, t1, count, clock)\n .filter((d) => !days || clock(d) % DAY_MS === 0)\n .filter((d, i, all) => i === 0 || label(d) !== label(all[i - 1]!));\n const placed = placeTimeLabels(\n ticks.map((d) => ({ key: d.getTime(), at: Math.round(at(d)), label: label(d) })),\n right,\n );\n if (placed.length === ticks.length && placed.length >= 2) return placed;\n if (placed.length > fallback.length) fallback = placed;\n }\n if (fallback.length < 2 && t1.getTime() > t0.getTime()) {\n const ends = placeTimeLabels(\n [t0, t1].map((d) => ({ key: d.getTime(), at: Math.round(at(d)), label: label(d) })),\n right,\n );\n if (ends.length === 2) return ends;\n }\n return fallback;\n}\n\nexport const TimeseriesChart = /* @__PURE__ */ forwardRef<HTMLDivElement, TimeseriesChartProps>(function TimeseriesChart(\n {\n series,\n kind = \"line\",\n height = 240,\n formatValue,\n threshold,\n hideLegend,\n highlight,\n formatTime,\n formatTick,\n tickAt = \"time\",\n timeZone,\n shares = true,\n partial,\n className,\n \"aria-label\": ariaLabel,\n ...state\n },\n ref,\n) {\n const t = useUiText();\n const locale = useLocale();\n const format = formatValue ?? ((v: number) => formatNumber(v));\n const [box, size] = useSize<HTMLDivElement>();\n const gid = useId().replace(/:/g, \"\");\n const axisLabel = tickLabel(formatValue ?? compactAxis);\n const [hidden, setHidden] = useState<Set<string>>(new Set());\n const [focus, setFocus] = useState<string | null>(null);\n const [hover, setHover] = useState<{ i: number; y: number } | null>(null);\n const visible = series.filter((s) => !hidden.has(s.id));\n const times = useMemo(() => (series[0]?.points ?? []).map((p) => new Date(p.t)), [series]);\n const flatValues = visible.flatMap((s) => s.points.map((p) => p.v));\n const allHidden = series.length > 0 && visible.length === 0;\n const empty = state.empty ?? (allHidden || times.length === 0 || !hasPoints(flatValues));\n const stacked = kind === \"stacked\";\n const stackSums = (sign: number) =>\n times.map((_, ti) => visible.reduce((a, s) => a + (Number.isFinite(s.points[ti]?.v) && (s.points[ti]?.v ?? 0) * sign > 0 ? s.points[ti]!.v : 0), 0));\n const extent = valueExtent(stacked ? [...stackSums(1), ...stackSums(-1)] : flatValues, threshold ? [threshold.value] : []);\n const axis = scaleLinear().domain(extent).nice(4);\n const [niceLo = 0, niceHi = 1] = axis.domain();\n const drawn = useTweened([...flatValues.map((v) => (Number.isFinite(v) ? v : 0)), niceLo, niceHi], !!state.loading);\n const lo = drawn[drawn.length - 2] ?? niceLo;\n const hi = drawn[drawn.length - 1] ?? niceHi;\n const yTicks = empty\n ? []\n : onlyZero(flatValues)\n ? [0]\n : wholeTicks(readableTicks(axis, axisLabel), finite(flatValues)).filter((v) => v >= lo - 1e-9 && v <= hi + 1e-9);\n const M = { top: 8, right: axisRoom(yTicks.map(axisLabel), { max: size.width ? size.width * 0.4 : Infinity }), bottom: 28, left: 0 };\n const w = Math.max(0, size.width - M.left - M.right);\n const h = Math.max(0, height - M.top - M.bottom);\n axis.range([h, 0]);\n const offsets = visible.map((_, si) => visible.slice(0, si).reduce((a, s) => a + s.points.length, 0));\n const values = visible.map((s, si) => s.points.map((p, pi) => (Number.isFinite(p.v) ? (drawn[offsets[si]! + pi] ?? 0) : NaN)));\n const yScale = axis.copy().domain([lo, hi === lo ? lo + 1 : hi]);\n const y = (v: number) => yScale(v);\n const zero = Math.round(Math.max(0, Math.min(h, y(0))));\n const t0 = d3min(times) ?? new Date(0);\n const t1 = d3max(times) ?? t0;\n const ordinal = tickAt === \"points\" && times.length > 0;\n const slot = ordinal ? w / times.length : 0;\n const x = scaleLinear().domain([t0.getTime(), t1.getTime()]).range([0, w]);\n const at = (i: number) => (ordinal ? (i + 0.5) * slot : x(times[i] ?? t0));\n const stackData = stacked\n ? d3stack<number[]>()\n .keys(visible.map((_, i) => String(i)))\n .offset(stackOffsetDiverging)(times.map((_, ti) => visible.map((_, si) => (Number.isFinite(values[si]?.[ti]) ? values[si]![ti]! : 0))))\n : null;\n const zone = timeZone ?? formatTimeZone();\n const clock = wallClock(zone);\n const span = (times[times.length - 1]?.getTime() ?? 0) - (times[0]?.getTime() ?? 0);\n const fmt = formatTick ?? (times.length === 1 ? timeFormat(locale, DAY, zone) : tickFormat(locale, span, zone, clock));\n const xLabels: PlacedLabel[] =\n tickAt === \"points\" || times.length === 1\n ? axisLabelIndexes(\n times.map(fmt),\n ordinal ? slot : w,\n ordinal ? { start: slot / 2, end: slot / 2 + M.right } : { start: w / 2, end: w / 2 + M.right },\n times.map((d) => wallDay(d, clock)),\n ).map((i) => ({ key: times[i]!.getTime(), x: Math.round(at(i)), anchor: \"middle\", label: fmt(times[i]!) }))\n : times.length\n ? timeLabels(t0, t1, w, w + M.right, (d) => x(d.getTime()), fmt, clock, !formatTick && span > 48 * H)\n : [];\n const step = (times[1]?.getTime() ?? 0) - (times[0]?.getTime() ?? 0);\n const pointFormat =\n formatTime ??\n timeFormat(\n locale,\n step && step < 86_400_000 ? { weekday: \"short\", ...DAY, ...CLOCK } : span <= 90 * 86_400_000 ? { weekday: \"short\", ...DAY } : { ...DAY, year: \"numeric\" },\n zone,\n );\n const last = times.length - 1;\n const headingFormat = (i: number) => {\n const heading = pointFormat(times[i]!);\n if (partial?.ongoing && i === last) return t(\"chart.soFar\", \"{heading}, so far\", { heading });\n if ((partial?.last && i === last) || (partial?.first && i === 0)) return t(\"chart.partial\", \"{heading}, partial\", { heading });\n return heading;\n };\n const dashedFirst = !!partial?.first && last >= 1;\n const dashedLast = !!(partial?.last || partial?.ongoing) && last >= 1;\n const cutStart = dashedFirst ? Math.round(at(1)) : -M.left;\n const cutEnd = dashedLast ? Math.round(at(last - 1)) : w + M.right;\n const partialLine = (stroke: React.SVGProps<SVGPathElement>) => {\n if (!dashedFirst && !dashedLast) return <path {...stroke} />;\n return (\n <>\n <path {...stroke} clipPath={`url(#${gid}-whole)`} />\n <path {...stroke} clipPath={`url(#${gid}-partial)`} strokeDasharray=\"4 4\" data-partial=\"\" />\n </>\n );\n };\n const lineGen = d3line<number>()\n .defined(Number.isFinite)\n .x((_, i) => Math.round(at(i)))\n .y((v) => y(v))\n .curve(curveMonotoneX);\n const areaGen = d3area<number>()\n .defined(Number.isFinite)\n .x((_, i) => Math.round(at(i)))\n .y0(zero)\n .y1((v) => y(v))\n .curve(curveMonotoneX);\n const stackArea = d3area<SeriesPoint<number[]>>()\n .x((_, i) => Math.round(at(i)))\n .y0((d) => y(d[0]))\n .y1((d) => y(d[1]))\n .curve(curveMonotoneX);\n const stackTop = d3line<SeriesPoint<number[]>>()\n .x((_, i) => Math.round(at(i)))\n .y((d) => y(d[0] < 0 && d[1] <= 0 ? d[0] : d[1]))\n .curve(curveMonotoneX);\n const lonely = (vs: number[]) =>\n vs.flatMap((v, i) => (Number.isFinite(v) && !Number.isFinite(vs[i - 1] ?? NaN) && !Number.isFinite(vs[i + 1] ?? NaN) ? [i] : []));\n const palette = useMemo(() => seriesColors(series.map((s) => s.id)), [series]);\n const color = (s: TimeSeries) => s.color ?? palette.get(s.id)!;\n const bis = bisector((d: Date) => d.getTime()).center;\n const onMove = (e: React.PointerEvent<SVGRectElement>) => {\n const r = e.currentTarget.getBoundingClientRect();\n const px = e.clientX - r.left;\n const i = ordinal ? Math.max(0, Math.min(times.length - 1, Math.floor(px / slot))) : bis(times, x.invert(px));\n setHover({ i, y: Math.round(e.clientY - r.top + M.top) });\n };\n\n const table = {\n columns: [t(\"timeseriesChart.time\", \"Time\"), ...series.map((s) => s.label)],\n rows: times.map((_, i) => [headingFormat(i), ...series.map((s) => (Number.isFinite(s.points[i]?.v) ? format(s.points[i]!.v) : \"–\"))]),\n };\n\n const blank = !!state.loading || empty;\n const keys = useChartKeys(blank || state.error ? 0 : times.length);\n const active = blank || !!state.error ? null : (hover?.i ?? keys.index ?? (highlight !== undefined && highlight < times.length ? highlight : null));\n const activeX = active === null ? 0 : Math.round(at(active)) + M.left;\n const clampY = (v: number) => Math.max(0, Math.min(h, v));\n const activeY =\n active === null\n ? 0\n : hover && hover.i === active\n ? hover.y\n : M.top +\n Math.round(\n clampY(\n stacked\n ? Math.min(zero, ...(stackData ?? []).map((layer) => y(layer[active]?.[1] ?? 0)))\n : Math.min(...values.map((sv) => (Number.isFinite(sv[active]) ? y(sv[active]!) : h))),\n ),\n );\n const rowsFor = (i: number) =>\n visible.map((s) => {\n const v = s.points[i]?.v ?? NaN;\n const total = visible.reduce((acc, ss) => acc + Math.abs(Number.isFinite(ss.points[i]?.v) ? ss.points[i]!.v : 0), 0);\n return {\n id: s.id,\n label: s.label,\n color: color(s),\n value: Number.isFinite(v) ? format(v) : \"–\",\n ...(shares && visible.length > 1 && total && Number.isFinite(v) ? { share: formatPercent(Math.round((Math.abs(v) / total) * 100) / 100, 0) } : {}),\n } as { id: string; label: ReactNode; color: string; value: ReactNode; share?: ReactNode | undefined };\n });\n\n return (\n <div ref={ref} className={cn(\"min-w-0\", className)}>\n <ChartFrame\n label={ariaLabel}\n height={height}\n table={table}\n state={{\n ...state,\n empty,\n ...(allHidden && !state.empty ? { emptyText: t(\"chart.allHidden\", \"Every series is hidden. Choose one in the legend to show it.\") } : {}),\n }}\n legend={\n !hideLegend && series.length > 1 ? (\n <Legend\n items={series.map((s) => ({ id: s.id, label: s.label, color: color(s) }))}\n hidden={hidden}\n shape={kind === \"line\" ? \"line\" : \"square\"}\n onToggle={(id) => {\n const n = new Set(hidden);\n if (n.has(id)) n.delete(id);\n else n.add(id);\n setHidden(n);\n }}\n onHover={setFocus}\n />\n ) : undefined\n }\n >\n <div ref={box} role=\"group\" aria-label={ariaLabel} {...keys.props} className=\"absolute inset-0 rounded-cell focus-ring\">\n {size.width > 0 && (\n <svg width={size.width} height={height} className=\"block overflow-visible\" role=\"presentation\">\n <defs>\n <clipPath id={`${gid}-plot`}>\n <rect x={-M.left - 4} y={-4} width={w + M.left + 8} height={h + 8} />\n </clipPath>\n {(dashedFirst || dashedLast) && (\n <>\n <clipPath id={`${gid}-whole`}>\n <rect x={cutStart} y={-M.top} width={Math.max(0, cutEnd - cutStart)} height={height} />\n </clipPath>\n <clipPath id={`${gid}-partial`}>\n {dashedFirst && <rect x={-M.left} y={-M.top} width={cutStart + M.left} height={height} />}\n {dashedLast && <rect x={cutEnd} y={-M.top} width={w + M.right - cutEnd} height={height} />}\n </clipPath>\n </>\n )}\n {visible.map((s) => (\n <linearGradient key={s.id} id={`${gid}-${s.id}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={color(s)} className=\"chart-fill-top\" />\n <stop offset=\"100%\" stopColor={color(s)} stopOpacity={0} />\n </linearGradient>\n ))}\n </defs>\n <g transform={`translate(${M.left},${M.top})`}>\n {yTicks.map((tick) => (\n <g key={tick} transform={`translate(0,${Math.round(y(tick)) + 0.5})`}>\n {tick !== 0 && <line x2={w} {...AXIS.grid} />}\n <text x={w + 12} dy=\"0.32em\" {...AXIS.label}>\n {axisLabel(tick)}\n </text>\n </g>\n ))}\n <line x2={w} y1={zero + 0.5} y2={zero + 0.5} {...AXIS.baseline} />\n {xLabels.map((l) => (\n <text key={l.key} x={l.x} y={h + 20} textAnchor={l.anchor} {...AXIS.label}>\n {l.label}\n </text>\n ))}\n <g clipPath={`url(#${gid}-plot)`}>\n {empty\n ? null\n : stacked && stackData\n ? stackData.map((layer, li) => {\n const s = visible[li]!;\n return (\n <g key={s.id} opacity={focus && focus !== s.id ? 0.3 : 1} className=\"opacity-motion\">\n <path d={stackArea(layer) ?? \"\"} fill={color(s)} className=\"chart-stack-fill\" />\n {partialLine({\n d: stackTop(layer) ?? \"\",\n fill: \"none\",\n stroke: color(s),\n strokeWidth: 1.5,\n strokeLinejoin: \"round\",\n strokeLinecap: \"round\",\n })}\n </g>\n );\n })\n : visible.map((s, si) => (\n <g key={s.id} opacity={focus && focus !== s.id ? 0.3 : 1} className=\"opacity-motion\">\n {kind === \"area\" && <path d={areaGen(values[si] ?? []) ?? \"\"} fill={`url(#${gid}-${s.id})`} />}\n {partialLine({\n d: lineGen(values[si] ?? []) ?? \"\",\n fill: \"none\",\n stroke: color(s),\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"round\",\n })}\n {lonely(values[si] ?? []).map((i) => (\n <circle key={i} data-point=\"\" cx={Math.round(at(i))} cy={y(values[si]![i]!)} r={2.5} fill={color(s)} />\n ))}\n </g>\n ))}\n </g>\n {threshold && y(threshold.value) >= 0 && y(threshold.value) <= h && (\n <g transform={`translate(0,${Math.round(y(threshold.value)) + 0.5})`}>\n <line x2={w} stroke=\"var(--k-danger)\" strokeDasharray=\"4 4\" strokeWidth={1} />\n <text x={0} dy={-6} fill=\"var(--k-danger-text)\" fontSize={12} fontWeight={500}>\n {threshold.label}\n </text>\n </g>\n )}\n {active !== null && (\n <g aria-hidden>\n <line x1={activeX - M.left + 0.5} x2={activeX - M.left + 0.5} y2={h} {...AXIS.grid} stroke=\"var(--k-line-strong)\" />\n {!stacked &&\n visible.map((s, si) =>\n Number.isFinite(values[si]?.[active]) ? (\n <circle\n key={s.id}\n cx={activeX - M.left}\n cy={clampY(y(values[si]![active]!))}\n r={4}\n fill={color(s)}\n stroke=\"var(--k-bg-panel)\"\n strokeWidth={2}\n />\n ) : null,\n )}\n </g>\n )}\n <rect width={w} height={h} fill=\"transparent\" onPointerMove={onMove} onPointerLeave={() => setHover(null)} />\n </g>\n </svg>\n )}\n {active !== null && times[active] && (\n <ChartTooltip x={activeX} y={activeY} width={size.width} visible heading={headingFormat(active)} rows={rowsFor(active)} />\n )}\n <ChartLive>\n {keys.index !== null && active !== null && times[keys.index] ? liveLine(headingFormat(keys.index), rowsFor(keys.index), t) : null}\n </ChartLive>\n </div>\n </ChartFrame>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") TimeseriesChart.displayName = \"TimeseriesChart\";\n"],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as e } from "./cn-BjnOAUrA.js";
|
|
3
|
+
import { a as t } from "./inset-BUzyXLK4.js";
|
|
4
|
+
import { t as n } from "./merge-refs-BN1FyQt9.js";
|
|
5
|
+
import { n as r, t as i } from "./arrow-focus-B0KdRFX8.js";
|
|
6
|
+
import { forwardRef as a, useEffect as o, useMemo as s, useRef as c } from "react";
|
|
7
|
+
import { jsx as l } from "react/jsx-runtime";
|
|
8
|
+
//#region src/components/toolbar/toolbar.tsx
|
|
9
|
+
var u = { size: {
|
|
10
|
+
md: { classes: "min-h-48 gap-8 px-24 py-6" },
|
|
11
|
+
inset: { classes: "min-h-48 gap-8 px-0 py-6" }
|
|
12
|
+
} }, d = { size: "md" }, f = /* @__PURE__ */ a(function({ size: a, className: d, onKeyDown: f, onFocus: p, ...m }, h) {
|
|
13
|
+
let g = t(), _ = a ?? (g ? "inset" : "md"), v = c(null), y = s(() => n(v, h), [h]), b = c(null);
|
|
14
|
+
return o(() => {
|
|
15
|
+
let e = v.current;
|
|
16
|
+
if (!e) return;
|
|
17
|
+
let t = () => {
|
|
18
|
+
let t = r(e), n = b.current && t.includes(b.current) ? b.current : t[0];
|
|
19
|
+
for (let e of t) e.dataset.roving = "", e.tabIndex = e === n ? 0 : -1;
|
|
20
|
+
};
|
|
21
|
+
t();
|
|
22
|
+
let n = new MutationObserver(t);
|
|
23
|
+
return n.observe(e, {
|
|
24
|
+
childList: !0,
|
|
25
|
+
subtree: !0,
|
|
26
|
+
attributes: !0,
|
|
27
|
+
attributeFilter: ["disabled", "hidden"]
|
|
28
|
+
}), () => n.disconnect();
|
|
29
|
+
}, []), /* @__PURE__ */ l("div", {
|
|
30
|
+
ref: y,
|
|
31
|
+
role: "toolbar",
|
|
32
|
+
"aria-orientation": "horizontal",
|
|
33
|
+
className: e("flex shrink-0 flex-wrap items-center", u.size[_].classes, d),
|
|
34
|
+
onFocus: (e) => {
|
|
35
|
+
p?.(e);
|
|
36
|
+
let t = v.current, n = e.target;
|
|
37
|
+
if (t && r(t).includes(n)) {
|
|
38
|
+
b.current = n;
|
|
39
|
+
for (let e of r(t)) e.tabIndex = e === n ? 0 : -1;
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
onKeyDown: (e) => {
|
|
43
|
+
f?.(e), i(e);
|
|
44
|
+
},
|
|
45
|
+
...m
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
process.env.NODE_ENV !== "production" && (f.displayName = "Toolbar");
|
|
49
|
+
var p = /* @__PURE__ */ a(function(e, t) {
|
|
50
|
+
return /* @__PURE__ */ l("span", {
|
|
51
|
+
ref: t,
|
|
52
|
+
"aria-hidden": !0,
|
|
53
|
+
className: "flex-1"
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
process.env.NODE_ENV !== "production" && (p.displayName = "Toolbar.Spacer");
|
|
57
|
+
var m = /* @__PURE__ */ Object.assign(f, { Spacer: p });
|
|
58
|
+
//#endregion
|
|
59
|
+
export { u as n, m as r, d as t };
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=toolbar-u0Gm7Q7-.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolbar-u0Gm7Q7-.js","names":["cn","useInset","mergeRefs","focusables","arrowFocus","KAESO_TOOLBAR_VARIANTS","KAESO_TOOLBAR_DEFAULT_VARIANTS","Root","sizeProp","props","inset","size","own","useRef","refs","useMemo","ref","current","useEffect","bar","rove","items","stop","el","watch","className","target","onKeyDown","Spacer","Toolbar"],"sources":["../../src/components/toolbar/toolbar.tsx"],"sourcesContent":["import { forwardRef, useEffect, useMemo, useRef, type HTMLAttributes, type KeyboardEvent } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useInset } from \"../../utils/inset.js\";\nimport { arrowFocus, focusables } from \"../../utils/arrow-focus.js\";\nimport { mergeRefs } from \"../../utils/merge-refs.js\";\n\nexport const KAESO_TOOLBAR_VARIANTS = {\n size: {\n md: {\n classes: \"min-h-48 gap-8 px-24 py-6\",\n },\n inset: { classes: \"min-h-48 gap-8 px-0 py-6\" },\n },\n} as const;\nexport const KAESO_TOOLBAR_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface ToolbarProps extends HTMLAttributes<HTMLDivElement> {\n size?: keyof typeof KAESO_TOOLBAR_VARIANTS.size | undefined;\n \"aria-label\": string;\n}\n\nconst Root = /* @__PURE__ */ forwardRef<HTMLDivElement, ToolbarProps>(function Toolbar({ size: sizeProp, className, onKeyDown, onFocus, ...props }, ref) {\n const inset = useInset();\n const size = sizeProp ?? (inset ? \"inset\" : \"md\");\n const own = useRef<HTMLDivElement | null>(null);\n const refs = useMemo(() => mergeRefs(own, ref), [ref]);\n const current = useRef<HTMLElement | null>(null);\n useEffect(() => {\n const bar = own.current;\n if (!bar) return;\n const rove = () => {\n const items = focusables(bar);\n const stop = current.current && items.includes(current.current) ? current.current : items[0];\n for (const el of items) {\n el.dataset.roving = \"\";\n el.tabIndex = el === stop ? 0 : -1;\n }\n };\n rove();\n const watch = new MutationObserver(rove);\n watch.observe(bar, { childList: true, subtree: true, attributes: true, attributeFilter: [\"disabled\", \"hidden\"] });\n return () => watch.disconnect();\n }, []);\n return (\n <div\n ref={refs}\n role=\"toolbar\"\n aria-orientation=\"horizontal\"\n className={cn(\"flex shrink-0 flex-wrap items-center\", KAESO_TOOLBAR_VARIANTS.size[size].classes, className)}\n onFocus={(e) => {\n onFocus?.(e);\n const bar = own.current;\n const target = e.target as HTMLElement;\n if (!bar || !focusables(bar).includes(target)) return;\n current.current = target;\n for (const el of focusables(bar)) el.tabIndex = el === target ? 0 : -1;\n }}\n onKeyDown={(e: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n arrowFocus(e);\n }}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Root.displayName = \"Toolbar\";\n\nconst Spacer = /* @__PURE__ */ forwardRef<HTMLSpanElement>(function ToolbarSpacer(_props, ref) {\n return <span ref={ref} aria-hidden className=\"flex-1\" />;\n});\nif (process.env.NODE_ENV !== \"production\") Spacer.displayName = \"Toolbar.Spacer\";\n\nexport const Toolbar = /* @__PURE__ */ Object.assign(Root, { Spacer });\n"],"mappings":";;;;;;;;AAMA,IAAaK,IAAyB,EACpC,MAAM;CACJ,IAAI,EACF,SAAS,4BACX;CACA,OAAO,EAAE,SAAS,2BAA2B;AAC/C,EACF,GACaC,IAAiC,EAAE,MAAM,KAAK,GAOrDC,IAAuB,kBAAyC,SAAiB,EAAE,MAAMC,GAAU,cAAW,cAAW,YAAS,GAAGC,KAAS,GAAK;CACvJ,IAAMC,IAAQT,EAAS,GACjBU,IAAOH,MAAaE,IAAQ,UAAU,OACtCE,IAAMC,EAA8B,IAAI,GACxCC,IAAOC,QAAcb,EAAUU,GAAKI,CAAG,GAAG,CAACA,CAAG,CAAC,GAC/CC,IAAUJ,EAA2B,IAAI;CAiB/C,OAhBAK,QAAgB;EACd,IAAMC,IAAMP,EAAI;EAChB,IAAI,CAACO,GAAK;EACV,IAAMC,UAAa;GACjB,IAAMC,IAAQlB,EAAWgB,CAAG,GACtBG,IAAOL,EAAQ,WAAWI,EAAM,SAASJ,EAAQ,OAAO,IAAIA,EAAQ,UAAUI,EAAM;GAC1F,KAAK,IAAME,KAAMF,GAEf,AADA,EAAG,QAAQ,SAAS,IACpB,EAAG,WAAWE,MAAOD,IAAO,IAAI;EAEpC;EACA,EAAK;EACL,IAAME,IAAQ,IAAI,iBAAiBJ,CAAI;EAEvC,OADAI,EAAM,QAAQL,GAAK;GAAE,WAAW;GAAM,SAAS;GAAM,YAAY;GAAM,iBAAiB,CAAC,YAAY,QAAQ;EAAE,CAAC,SACnGK,EAAM,WAAW;CAChC,GAAG,CAAC,CAAC,GAEH,kBAAC,OAAD;EACE,KAAKV;EACL,MAAK;EACL,oBAAiB;EACjB,WAAWd,EAAG,wCAAwCK,EAAuB,KAAKM,EAAK,CAAC,SAASc,CAAS;EAC1G,UAAU,MAAM;GACd,IAAU,CAAC;GACX,IAAMN,IAAMP,EAAI,SACVc,IAAS,EAAE;GACjB,IAAKP,KAAQhB,EAAWgB,CAAG,CAAC,CAAC,SAASO,CAAM,GAC5C;MAAQ,UAAUA;IAClB,KAAK,IAAMH,KAAMpB,EAAWgB,CAAG,GAAG,EAAG,WAAWI,MAAOG,IAAS,IAAI;GADlD;EAEpB;EACA,YAAY,MAAqC;GAE/C,AADAC,IAAY,CAAC,GACbvB,EAAW,CAAC;EACd;EACA,GAAIK;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc;AAE9D,IAAMmB,IAAyB,kBAA4B,SAAuB,GAAQ,GAAK;CAC7F,OAAO,kBAAC,QAAD;EAAW;EAAK,eAAA;EAAY,WAAU;CAAU,CAAA;AACzD,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAO,cAAc;AAEhE,IAAaC,IAA0B,uBAAO,OAAOtB,GAAM,EAAE,UAAO,CAAC"}
|