@hexclave/dashboard-ui-components 1.0.40 → 1.0.42
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/dist/analytics-chart-BUxntwQ3.d.ts +553 -0
- package/dist/analytics-chart-BUxntwQ3.d.ts.map +1 -0
- package/dist/components/alert.d.ts +1 -3
- package/dist/components/alert.d.ts.map +1 -1
- package/dist/components/alert.js +4 -7
- package/dist/components/alert.js.map +1 -1
- package/dist/components/analytics-chart/analytics-chart-pie.d.ts +3 -4
- package/dist/components/analytics-chart/analytics-chart-pie.d.ts.map +1 -1
- package/dist/components/analytics-chart/analytics-chart-pie.js +2 -4
- package/dist/components/analytics-chart/analytics-chart-pie.js.map +1 -1
- package/dist/components/analytics-chart/analytics-chart.d.ts +2 -554
- package/dist/components/analytics-chart/analytics-chart.js +2 -5
- package/dist/components/analytics-chart/analytics-chart.js.map +1 -1
- package/dist/components/analytics-chart/default-analytics-chart-tooltip.d.ts +2 -66
- package/dist/components/analytics-chart/default-analytics-chart-tooltip.js +2 -4
- package/dist/components/analytics-chart/default-analytics-chart-tooltip.js.map +1 -1
- package/dist/components/analytics-chart/format.d.ts +2 -13
- package/dist/components/analytics-chart/format.js +2 -3
- package/dist/components/analytics-chart/format.js.map +1 -1
- package/dist/components/analytics-chart/index.d.ts +7 -7
- package/dist/components/analytics-chart/index.js +175 -177
- package/dist/components/analytics-chart/palette.d.ts +2 -15
- package/dist/components/analytics-chart/palette.js +2 -3
- package/dist/components/analytics-chart/palette.js.map +1 -1
- package/dist/components/analytics-chart/render-data-series.d.ts +1 -1
- package/dist/components/analytics-chart/render-data-series.d.ts.map +1 -1
- package/dist/components/analytics-chart/render-data-series.js +2 -4
- package/dist/components/analytics-chart/render-data-series.js.map +1 -1
- package/dist/components/analytics-chart/state.d.ts +2 -54
- package/dist/components/analytics-chart/state.js +2 -4
- package/dist/components/analytics-chart/state.js.map +1 -1
- package/dist/components/analytics-chart/strings.d.ts +2 -33
- package/dist/components/analytics-chart/strings.js +2 -3
- package/dist/components/analytics-chart/strings.js.map +1 -1
- package/dist/components/analytics-chart/types.d.ts +2 -158
- package/dist/components/analytics-chart/types.js +2 -3
- package/dist/components/analytics-chart/types.js.map +1 -1
- package/dist/components/badge.d.ts +1 -3
- package/dist/components/badge.d.ts.map +1 -1
- package/dist/components/badge.js +4 -10
- package/dist/components/badge.js.map +1 -1
- package/dist/components/button.d.ts +6 -7
- package/dist/components/button.d.ts.map +1 -1
- package/dist/components/button.js +4 -5
- package/dist/components/button.js.map +1 -1
- package/dist/components/card.d.ts +2 -3
- package/dist/components/card.d.ts.map +1 -1
- package/dist/components/card.js +6 -8
- package/dist/components/card.js.map +1 -1
- package/dist/components/chart-card.d.ts +1 -2
- package/dist/components/chart-card.d.ts.map +1 -1
- package/dist/components/chart-card.js +5 -7
- package/dist/components/chart-card.js.map +1 -1
- package/dist/components/chart-container.d.ts +1 -2
- package/dist/components/chart-container.d.ts.map +1 -1
- package/dist/components/chart-container.js +5 -7
- package/dist/components/chart-container.js.map +1 -1
- package/dist/components/chart-legend.d.ts +1 -1
- package/dist/components/chart-legend.js +4 -6
- package/dist/components/chart-legend.js.map +1 -1
- package/dist/components/chart-theme.d.ts.map +1 -1
- package/dist/components/chart-theme.js +3 -5
- package/dist/components/chart-theme.js.map +1 -1
- package/dist/components/chart-tooltip.d.ts +10 -14
- package/dist/components/chart-tooltip.d.ts.map +1 -1
- package/dist/components/chart-tooltip.js +5 -7
- package/dist/components/chart-tooltip.js.map +1 -1
- package/dist/components/cursor-blast-effect.d.ts +1 -3
- package/dist/components/cursor-blast-effect.d.ts.map +1 -1
- package/dist/components/cursor-blast-effect.js +2 -5
- package/dist/components/cursor-blast-effect.js.map +1 -1
- package/dist/components/data-grid/data-grid-export-dialog.d.ts +2 -3
- package/dist/components/data-grid/data-grid-export-dialog.d.ts.map +1 -1
- package/dist/components/data-grid/data-grid-export-dialog.js +4 -6
- package/dist/components/data-grid/data-grid-export-dialog.js.map +1 -1
- package/dist/components/data-grid/data-grid-sizing.d.ts +2 -13
- package/dist/components/data-grid/data-grid-sizing.js +3 -4
- package/dist/components/data-grid/data-grid-sizing.js.map +1 -1
- package/dist/components/data-grid/data-grid-toolbar.d.ts +2 -31
- package/dist/components/data-grid/data-grid-toolbar.js +4 -6
- package/dist/components/data-grid/data-grid-toolbar.js.map +1 -1
- package/dist/components/data-grid/data-grid.d.ts +2 -47
- package/dist/components/data-grid/data-grid.js +6 -8
- package/dist/components/data-grid/data-grid.js.map +1 -1
- package/dist/components/data-grid/data-grid.test.js +1 -3
- package/dist/components/data-grid/data-grid.test.js.map +1 -1
- package/dist/components/data-grid/index.d.ts +8 -8
- package/dist/components/data-grid/index.js +139 -141
- package/dist/components/data-grid/state.d.ts +2 -34
- package/dist/components/data-grid/state.js +2 -4
- package/dist/components/data-grid/state.js.map +1 -1
- package/dist/components/data-grid/strings.d.ts +2 -8
- package/dist/components/data-grid/strings.js +2 -3
- package/dist/components/data-grid/strings.js.map +1 -1
- package/dist/components/data-grid/types.d.ts +2 -308
- package/dist/components/data-grid/use-data-source.d.ts +2 -85
- package/dist/components/data-grid/use-data-source.js +2 -4
- package/dist/components/data-grid/use-data-source.js.map +1 -1
- package/dist/components/data-grid/use-url-state.d.ts +2 -38
- package/dist/components/data-grid/use-url-state.js +2 -5
- package/dist/components/data-grid/use-url-state.js.map +1 -1
- package/dist/components/data-grid/use-url-state.test.js +1 -3
- package/dist/components/data-grid/use-url-state.test.js.map +1 -1
- package/dist/components/dialog.d.ts +2 -71
- package/dist/components/dialog.js +6 -8
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/edit-mode.d.ts +1 -3
- package/dist/components/edit-mode.d.ts.map +1 -1
- package/dist/components/edit-mode.js +2 -5
- package/dist/components/edit-mode.js.map +1 -1
- package/dist/components/empty-state.d.ts +1 -2
- package/dist/components/empty-state.d.ts.map +1 -1
- package/dist/components/empty-state.js +4 -6
- package/dist/components/empty-state.js.map +1 -1
- package/dist/components/input.js +4 -6
- package/dist/components/input.js.map +1 -1
- package/dist/components/metric-card.d.ts +1 -2
- package/dist/components/metric-card.d.ts.map +1 -1
- package/dist/components/metric-card.js +5 -7
- package/dist/components/metric-card.js.map +1 -1
- package/dist/components/pill-toggle.d.ts +1 -3
- package/dist/components/pill-toggle.d.ts.map +1 -1
- package/dist/components/pill-toggle.js +4 -7
- package/dist/components/pill-toggle.js.map +1 -1
- package/dist/components/progress-bar.d.ts +1 -3
- package/dist/components/progress-bar.d.ts.map +1 -1
- package/dist/components/progress-bar.js +3 -6
- package/dist/components/progress-bar.js.map +1 -1
- package/dist/components/separator.d.ts +1 -3
- package/dist/components/separator.d.ts.map +1 -1
- package/dist/components/separator.js +2 -5
- package/dist/components/separator.js.map +1 -1
- package/dist/components/skeleton.d.ts +1 -2
- package/dist/components/skeleton.d.ts.map +1 -1
- package/dist/components/skeleton.js +2 -5
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/table.js +4 -6
- package/dist/components/table.js.map +1 -1
- package/dist/components/tabs.d.ts +1 -2
- package/dist/components/tabs.d.ts.map +1 -1
- package/dist/components/tabs.js +4 -7
- package/dist/components/tabs.js.map +1 -1
- package/dist/dashboard-ui-components.global.js +5136 -5147
- package/dist/dashboard-ui-components.global.js.map +4 -4
- package/dist/data-grid-AJi1TNDa.d.ts +46 -0
- package/dist/data-grid-AJi1TNDa.d.ts.map +1 -0
- package/dist/data-grid-sizing-S1ixcZKo.d.ts +13 -0
- package/dist/data-grid-sizing-S1ixcZKo.d.ts.map +1 -0
- package/dist/data-grid-toolbar-BGSNGDpT.d.ts +30 -0
- package/dist/data-grid-toolbar-BGSNGDpT.d.ts.map +1 -0
- package/dist/default-analytics-chart-tooltip-PrLoMaC1.d.ts +65 -0
- package/dist/default-analytics-chart-tooltip-PrLoMaC1.d.ts.map +1 -0
- package/dist/dialog-CCtTH7s6.d.ts +131 -0
- package/dist/dialog-CCtTH7s6.d.ts.map +1 -0
- package/dist/esm/components/alert.d.ts +1 -3
- package/dist/esm/components/alert.d.ts.map +1 -1
- package/dist/esm/components/alert.js +3 -5
- package/dist/esm/components/alert.js.map +1 -1
- package/dist/esm/components/analytics-chart/analytics-chart-pie.d.ts +3 -4
- package/dist/esm/components/analytics-chart/analytics-chart-pie.d.ts.map +1 -1
- package/dist/esm/components/analytics-chart/analytics-chart-pie.js +1 -2
- package/dist/esm/components/analytics-chart/analytics-chart-pie.js.map +1 -1
- package/dist/esm/components/analytics-chart/analytics-chart.d.ts +4 -5
- package/dist/esm/components/analytics-chart/analytics-chart.d.ts.map +1 -1
- package/dist/esm/components/analytics-chart/analytics-chart.js +1 -3
- package/dist/esm/components/analytics-chart/analytics-chart.js.map +1 -1
- package/dist/esm/components/analytics-chart/default-analytics-chart-tooltip.d.ts +4 -5
- package/dist/esm/components/analytics-chart/default-analytics-chart-tooltip.d.ts.map +1 -1
- package/dist/esm/components/analytics-chart/default-analytics-chart-tooltip.js +1 -2
- package/dist/esm/components/analytics-chart/default-analytics-chart-tooltip.js.map +1 -1
- package/dist/esm/components/analytics-chart/format.d.ts +1 -1
- package/dist/esm/components/analytics-chart/format.d.ts.map +1 -1
- package/dist/esm/components/analytics-chart/format.js +1 -1
- package/dist/esm/components/analytics-chart/format.js.map +1 -1
- package/dist/esm/components/analytics-chart/index.d.ts +7 -7
- package/dist/esm/components/analytics-chart/index.js +1 -2
- package/dist/esm/components/analytics-chart/palette.d.ts +1 -1
- package/dist/esm/components/analytics-chart/palette.d.ts.map +1 -1
- package/dist/esm/components/analytics-chart/palette.js +1 -1
- package/dist/esm/components/analytics-chart/palette.js.map +1 -1
- package/dist/esm/components/analytics-chart/render-data-series.d.ts +1 -1
- package/dist/esm/components/analytics-chart/render-data-series.d.ts.map +1 -1
- package/dist/esm/components/analytics-chart/render-data-series.js +1 -2
- package/dist/esm/components/analytics-chart/render-data-series.js.map +1 -1
- package/dist/esm/components/analytics-chart/state.d.ts +1 -1
- package/dist/esm/components/analytics-chart/state.d.ts.map +1 -1
- package/dist/esm/components/analytics-chart/state.js +1 -2
- package/dist/esm/components/analytics-chart/state.js.map +1 -1
- package/dist/esm/components/analytics-chart/strings.d.ts.map +1 -1
- package/dist/esm/components/analytics-chart/strings.js +1 -1
- package/dist/esm/components/analytics-chart/strings.js.map +1 -1
- package/dist/esm/components/analytics-chart/types.d.ts.map +1 -1
- package/dist/esm/components/analytics-chart/types.js +1 -1
- package/dist/esm/components/analytics-chart/types.js.map +1 -1
- package/dist/esm/components/badge.d.ts +1 -3
- package/dist/esm/components/badge.d.ts.map +1 -1
- package/dist/esm/components/badge.js +3 -8
- package/dist/esm/components/badge.js.map +1 -1
- package/dist/esm/components/button.d.ts +6 -7
- package/dist/esm/components/button.d.ts.map +1 -1
- package/dist/esm/components/button.js +2 -3
- package/dist/esm/components/button.js.map +1 -1
- package/dist/esm/components/card.d.ts +2 -3
- package/dist/esm/components/card.d.ts.map +1 -1
- package/dist/esm/components/card.js +3 -5
- package/dist/esm/components/card.js.map +1 -1
- package/dist/esm/components/chart-card.d.ts +1 -2
- package/dist/esm/components/chart-card.d.ts.map +1 -1
- package/dist/esm/components/chart-card.js +3 -5
- package/dist/esm/components/chart-card.js.map +1 -1
- package/dist/esm/components/chart-container.d.ts +1 -2
- package/dist/esm/components/chart-container.d.ts.map +1 -1
- package/dist/esm/components/chart-container.js +1 -3
- package/dist/esm/components/chart-container.js.map +1 -1
- package/dist/esm/components/chart-legend.d.ts +1 -1
- package/dist/esm/components/chart-legend.js +1 -3
- package/dist/esm/components/chart-legend.js.map +1 -1
- package/dist/esm/components/chart-theme.d.ts.map +1 -1
- package/dist/esm/components/chart-theme.js +2 -3
- package/dist/esm/components/chart-theme.js.map +1 -1
- package/dist/esm/components/chart-tooltip.d.ts +10 -14
- package/dist/esm/components/chart-tooltip.d.ts.map +1 -1
- package/dist/esm/components/chart-tooltip.js +1 -3
- package/dist/esm/components/chart-tooltip.js.map +1 -1
- package/dist/esm/components/cursor-blast-effect.d.ts +1 -3
- package/dist/esm/components/cursor-blast-effect.d.ts.map +1 -1
- package/dist/esm/components/cursor-blast-effect.js +1 -3
- package/dist/esm/components/cursor-blast-effect.js.map +1 -1
- package/dist/esm/components/data-grid/data-grid-export-dialog.d.ts +2 -3
- package/dist/esm/components/data-grid/data-grid-export-dialog.d.ts.map +1 -1
- package/dist/esm/components/data-grid/data-grid-export-dialog.js +2 -4
- package/dist/esm/components/data-grid/data-grid-export-dialog.js.map +1 -1
- package/dist/esm/components/data-grid/data-grid-sizing.d.ts +1 -1
- package/dist/esm/components/data-grid/data-grid-sizing.d.ts.map +1 -1
- package/dist/esm/components/data-grid/data-grid-sizing.js +2 -2
- package/dist/esm/components/data-grid/data-grid-sizing.js.map +1 -1
- package/dist/esm/components/data-grid/data-grid-toolbar.d.ts +2 -3
- package/dist/esm/components/data-grid/data-grid-toolbar.d.ts.map +1 -1
- package/dist/esm/components/data-grid/data-grid-toolbar.js +1 -3
- package/dist/esm/components/data-grid/data-grid-toolbar.js.map +1 -1
- package/dist/esm/components/data-grid/data-grid.d.ts +2 -3
- package/dist/esm/components/data-grid/data-grid.d.ts.map +1 -1
- package/dist/esm/components/data-grid/data-grid.js +4 -6
- package/dist/esm/components/data-grid/data-grid.js.map +1 -1
- package/dist/esm/components/data-grid/data-grid.test.js +2 -3
- package/dist/esm/components/data-grid/data-grid.test.js.map +1 -1
- package/dist/esm/components/data-grid/index.d.ts +8 -8
- package/dist/esm/components/data-grid/index.js +1 -2
- package/dist/esm/components/data-grid/state.d.ts +1 -1
- package/dist/esm/components/data-grid/state.d.ts.map +1 -1
- package/dist/esm/components/data-grid/state.js +1 -2
- package/dist/esm/components/data-grid/state.js.map +1 -1
- package/dist/esm/components/data-grid/strings.d.ts +1 -1
- package/dist/esm/components/data-grid/strings.d.ts.map +1 -1
- package/dist/esm/components/data-grid/strings.js +1 -1
- package/dist/esm/components/data-grid/strings.js.map +1 -1
- package/dist/esm/components/data-grid/types.d.ts.map +1 -1
- package/dist/esm/components/data-grid/types.js +1 -1
- package/dist/esm/components/data-grid/use-data-source.d.ts +1 -1
- package/dist/esm/components/data-grid/use-data-source.d.ts.map +1 -1
- package/dist/esm/components/data-grid/use-data-source.js +1 -2
- package/dist/esm/components/data-grid/use-data-source.js.map +1 -1
- package/dist/esm/components/data-grid/use-url-state.d.ts +1 -1
- package/dist/esm/components/data-grid/use-url-state.d.ts.map +1 -1
- package/dist/esm/components/data-grid/use-url-state.js +1 -3
- package/dist/esm/components/data-grid/use-url-state.js.map +1 -1
- package/dist/esm/components/data-grid/use-url-state.test.js +2 -3
- package/dist/esm/components/data-grid/use-url-state.test.js.map +1 -1
- package/dist/esm/components/dialog.d.ts +6 -8
- package/dist/esm/components/dialog.d.ts.map +1 -1
- package/dist/esm/components/dialog.js +3 -5
- package/dist/esm/components/dialog.js.map +1 -1
- package/dist/esm/components/edit-mode.d.ts +1 -3
- package/dist/esm/components/edit-mode.d.ts.map +1 -1
- package/dist/esm/components/edit-mode.js +1 -3
- package/dist/esm/components/edit-mode.js.map +1 -1
- package/dist/esm/components/empty-state.d.ts +1 -2
- package/dist/esm/components/empty-state.d.ts.map +1 -1
- package/dist/esm/components/empty-state.js +2 -4
- package/dist/esm/components/empty-state.js.map +1 -1
- package/dist/esm/components/input.js +2 -4
- package/dist/esm/components/input.js.map +1 -1
- package/dist/esm/components/metric-card.d.ts +1 -2
- package/dist/esm/components/metric-card.d.ts.map +1 -1
- package/dist/esm/components/metric-card.js +3 -5
- package/dist/esm/components/metric-card.js.map +1 -1
- package/dist/esm/components/pill-toggle.d.ts +1 -3
- package/dist/esm/components/pill-toggle.d.ts.map +1 -1
- package/dist/esm/components/pill-toggle.js +3 -5
- package/dist/esm/components/pill-toggle.js.map +1 -1
- package/dist/esm/components/progress-bar.d.ts +1 -3
- package/dist/esm/components/progress-bar.d.ts.map +1 -1
- package/dist/esm/components/progress-bar.js +2 -4
- package/dist/esm/components/progress-bar.js.map +1 -1
- package/dist/esm/components/separator.d.ts +1 -3
- package/dist/esm/components/separator.d.ts.map +1 -1
- package/dist/esm/components/separator.js +1 -3
- package/dist/esm/components/separator.js.map +1 -1
- package/dist/esm/components/skeleton.d.ts +1 -2
- package/dist/esm/components/skeleton.d.ts.map +1 -1
- package/dist/esm/components/skeleton.js +1 -3
- package/dist/esm/components/skeleton.js.map +1 -1
- package/dist/esm/components/table.js +2 -4
- package/dist/esm/components/table.js.map +1 -1
- package/dist/esm/components/tabs.d.ts +1 -2
- package/dist/esm/components/tabs.d.ts.map +1 -1
- package/dist/esm/components/tabs.js +3 -5
- package/dist/esm/components/tabs.js.map +1 -1
- package/dist/esm/index.d.ts +23 -23
- package/dist/esm/index.js +3 -6
- package/dist/format-DdrrnMlc.d.ts +13 -0
- package/dist/format-DdrrnMlc.d.ts.map +1 -0
- package/dist/index.d.ts +17 -17
- package/dist/index.js +278 -277
- package/dist/palette-pqnuo5cq.d.ts +15 -0
- package/dist/palette-pqnuo5cq.d.ts.map +1 -0
- package/dist/{chunk-BE-pF4vm.js → rolldown-runtime-D6vf50IK.js} +12 -18
- package/dist/state-6LW8ACh5.d.ts +34 -0
- package/dist/state-6LW8ACh5.d.ts.map +1 -0
- package/dist/state-Hch3gYtt.d.ts +54 -0
- package/dist/state-Hch3gYtt.d.ts.map +1 -0
- package/dist/strings-CACVtKlq.d.ts +8 -0
- package/dist/strings-CACVtKlq.d.ts.map +1 -0
- package/dist/strings-D-t58Uol.d.ts +33 -0
- package/dist/strings-D-t58Uol.d.ts.map +1 -0
- package/dist/types-1-eOd1JF.d.ts +308 -0
- package/dist/types-1-eOd1JF.d.ts.map +1 -0
- package/dist/types-NyzRTEfi.d.ts +158 -0
- package/dist/types-NyzRTEfi.d.ts.map +1 -0
- package/dist/use-data-source-BVFynerX.d.ts +85 -0
- package/dist/use-data-source-BVFynerX.d.ts.map +1 -0
- package/dist/use-url-state-B4_wnBjm.d.ts +38 -0
- package/dist/use-url-state-B4_wnBjm.d.ts.map +1 -0
- package/package.json +3 -7
- package/dist/components/analytics-chart/analytics-chart.d.ts.map +0 -1
- package/dist/components/analytics-chart/default-analytics-chart-tooltip.d.ts.map +0 -1
- package/dist/components/analytics-chart/format.d.ts.map +0 -1
- package/dist/components/analytics-chart/palette.d.ts.map +0 -1
- package/dist/components/analytics-chart/state.d.ts.map +0 -1
- package/dist/components/analytics-chart/strings.d.ts.map +0 -1
- package/dist/components/analytics-chart/types.d.ts.map +0 -1
- package/dist/components/data-grid/data-grid-sizing.d.ts.map +0 -1
- package/dist/components/data-grid/data-grid-toolbar.d.ts.map +0 -1
- package/dist/components/data-grid/data-grid.d.ts.map +0 -1
- package/dist/components/data-grid/state.d.ts.map +0 -1
- package/dist/components/data-grid/strings.d.ts.map +0 -1
- package/dist/components/data-grid/types.d.ts.map +0 -1
- package/dist/components/data-grid/use-data-source.d.ts.map +0 -1
- package/dist/components/data-grid/use-url-state.d.ts.map +0 -1
- package/dist/components/dialog.d.ts.map +0 -1
|
@@ -5,5 +5,4 @@ import { ANALYTICS_CHART_DEFAULT_PALETTE, buildRampColors, buildSegmentThemeMap,
|
|
|
5
5
|
import { ANALYTICS_CHART_DEFAULT_LAYERS, ANALYTICS_CHART_DEFAULT_STATE, EMPTY_MATRIX, EMPTY_SERIES, STROKE_DASHARRAY, computeLocalInProgressIdx, findAnnotationsLayer, findCompareLayer, findLayerById, findPrimaryLayer, isAnalyticsChartDataLayer, isTimeseriesState, patchLayerById, resolveDataLayerStyle, setLayerById } from "./state.js";
|
|
6
6
|
import { ANALYTICS_CHART_DEFAULT_STRINGS, resolveAnalyticsChartStrings } from "./strings.js";
|
|
7
7
|
import { AnalyticsChart } from "./analytics-chart.js";
|
|
8
|
-
|
|
9
|
-
export { ANALYTICS_CHART_DEFAULT_LAYERS, ANALYTICS_CHART_DEFAULT_PALETTE, ANALYTICS_CHART_DEFAULT_STATE, ANALYTICS_CHART_DEFAULT_STRINGS, AnalyticsChart, DEFAULT_FORMAT_KIND, DefaultAnalyticsChartTooltip, EMPTY_MATRIX, EMPTY_SERIES, FORMAT_KIND_TYPES, STROKE_DASHARRAY, TrendPill, buildRampColors, buildSegmentThemeMap, computeLocalInProgressIdx, findAnnotationsLayer, findCompareLayer, findLayerById, findPrimaryLayer, formatDelta, formatValue, isAnalyticsChartDataLayer, isTimeseriesState, patchLayerById, pointValue, resolveAnalyticsChartPalette, resolveAnalyticsChartStrings, resolveDataLayerStyle, setLayerById };
|
|
8
|
+
export { ANALYTICS_CHART_DEFAULT_LAYERS, ANALYTICS_CHART_DEFAULT_PALETTE, ANALYTICS_CHART_DEFAULT_STATE, ANALYTICS_CHART_DEFAULT_STRINGS, AnalyticsChart, DEFAULT_FORMAT_KIND, DefaultAnalyticsChartTooltip, EMPTY_MATRIX, EMPTY_SERIES, FORMAT_KIND_TYPES, STROKE_DASHARRAY, TrendPill, buildRampColors, buildSegmentThemeMap, computeLocalInProgressIdx, findAnnotationsLayer, findCompareLayer, findLayerById, findPrimaryLayer, formatDelta, formatValue, isAnalyticsChartDataLayer, isTimeseriesState, patchLayerById, pointValue, resolveAnalyticsChartPalette, resolveAnalyticsChartStrings, resolveDataLayerStyle, setLayerById };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnalyticsChartPalette, AnalyticsChartSegmentRamp, AnalyticsChartSeries } from "./types";
|
|
1
|
+
import { AnalyticsChartPalette, AnalyticsChartSegmentRamp, AnalyticsChartSeries } from "./types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/components/analytics-chart/palette.d.ts
|
|
4
4
|
declare const ANALYTICS_CHART_DEFAULT_PALETTE: AnalyticsChartPalette;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palette.d.ts","names":[],"sources":["../../../../src/components/analytics-chart/palette.ts"],"mappings":";;;cAMa,+BAAA,EAAiC,
|
|
1
|
+
{"version":3,"file":"palette.d.ts","names":[],"sources":["../../../../src/components/analytics-chart/palette.ts"],"mappings":";;;cAMa,+BAAA,EAAiC,qBAe7C;AAAA,iBAEe,4BAAA,CACd,QAAA,EAAU,OAAA,CAAQ,qBAAA,gBACjB,qBAAA;AAnBH;AAAA,iBA4BgB,eAAA,CACd,IAAA,EAAM,yBAAyB,EAC/B,KAAA,UACA,KAAA;;iBAmBc,oBAAA,CACd,MAAA,WAAiB,oBAAA,IACjB,IAAA,EAAM,yBAAA,GACL,MAAA;EAAiB,KAAA;EAAe,IAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palette.js","names":[],"sources":["../../../../src/components/analytics-chart/palette.ts"],"sourcesContent":["import type {\n AnalyticsChartPalette,\n AnalyticsChartSegmentRamp,\n AnalyticsChartSeries,\n} from \"./types\";\n\nexport const ANALYTICS_CHART_DEFAULT_PALETTE: AnalyticsChartPalette = {\n primary: {\n kind: \"procedural\",\n hue: 220,\n sat: 78,\n shadeRangeLight: [28, 62],\n shadeRangeDark: [52, 82],\n },\n compare: {\n kind: \"procedural\",\n hue: 38,\n sat: 92,\n shadeRangeLight: [28, 62],\n shadeRangeDark: [52, 82],\n },\n};\n\nexport function resolveAnalyticsChartPalette(\n override: Partial<AnalyticsChartPalette> | undefined,\n): AnalyticsChartPalette {\n if (!override) return ANALYTICS_CHART_DEFAULT_PALETTE;\n return {\n primary: override.primary ?? ANALYTICS_CHART_DEFAULT_PALETTE.primary,\n compare: override.compare ?? ANALYTICS_CHART_DEFAULT_PALETTE.compare,\n };\n}\n\n/** Expand a ramp into N colors for a given theme. */\nexport function buildRampColors(\n ramp: AnalyticsChartSegmentRamp,\n count: number,\n theme: \"light\" | \"dark\",\n): string[] {\n if (ramp.kind === \"explicit\") {\n const list = theme === \"light\" ? ramp.light : ramp.dark;\n if (list.length === 0) return Array.from({ length: count }, () => \"#888\");\n return Array.from(\n { length: count },\n (_, i) => list[i < list.length ? i : list.length - 1]!,\n );\n }\n const range = theme === \"light\" ? ramp.shadeRangeLight : ramp.shadeRangeDark;\n return Array.from({ length: count }, (_, i) => {\n const t = count <= 1 ? 0.5 : i / (count - 1);\n const l = range[0] + t * (range[1] - range[0]);\n return `hsl(${ramp.hue} ${ramp.sat}% ${l.toFixed(1)}%)`;\n });\n}\n\n/** Per-segment light/dark colors for `ChartConfig.theme` (SVG only; siblings use inline vars). */\nexport function buildSegmentThemeMap(\n series: readonly AnalyticsChartSeries[],\n ramp: AnalyticsChartSegmentRamp,\n): Record<string, { light: string, dark: string }> {\n const light = buildRampColors(ramp, series.length, \"light\");\n const dark = buildRampColors(ramp, series.length, \"dark\");\n const out: Record<string, { light: string, dark: string }> = {};\n series.forEach((s, i) => {\n out[s.key] = { light: light[i]!, dark: dark[i]! };\n });\n return out;\n}\n"],"mappings":";AAMA,MAAa,kCAAyD;CACpE,SAAS;EACP,MAAM;EACN,KAAK;EACL,KAAK;EACL,iBAAiB,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"palette.js","names":[],"sources":["../../../../src/components/analytics-chart/palette.ts"],"sourcesContent":["import type {\n AnalyticsChartPalette,\n AnalyticsChartSegmentRamp,\n AnalyticsChartSeries,\n} from \"./types\";\n\nexport const ANALYTICS_CHART_DEFAULT_PALETTE: AnalyticsChartPalette = {\n primary: {\n kind: \"procedural\",\n hue: 220,\n sat: 78,\n shadeRangeLight: [28, 62],\n shadeRangeDark: [52, 82],\n },\n compare: {\n kind: \"procedural\",\n hue: 38,\n sat: 92,\n shadeRangeLight: [28, 62],\n shadeRangeDark: [52, 82],\n },\n};\n\nexport function resolveAnalyticsChartPalette(\n override: Partial<AnalyticsChartPalette> | undefined,\n): AnalyticsChartPalette {\n if (!override) return ANALYTICS_CHART_DEFAULT_PALETTE;\n return {\n primary: override.primary ?? ANALYTICS_CHART_DEFAULT_PALETTE.primary,\n compare: override.compare ?? ANALYTICS_CHART_DEFAULT_PALETTE.compare,\n };\n}\n\n/** Expand a ramp into N colors for a given theme. */\nexport function buildRampColors(\n ramp: AnalyticsChartSegmentRamp,\n count: number,\n theme: \"light\" | \"dark\",\n): string[] {\n if (ramp.kind === \"explicit\") {\n const list = theme === \"light\" ? ramp.light : ramp.dark;\n if (list.length === 0) return Array.from({ length: count }, () => \"#888\");\n return Array.from(\n { length: count },\n (_, i) => list[i < list.length ? i : list.length - 1]!,\n );\n }\n const range = theme === \"light\" ? ramp.shadeRangeLight : ramp.shadeRangeDark;\n return Array.from({ length: count }, (_, i) => {\n const t = count <= 1 ? 0.5 : i / (count - 1);\n const l = range[0] + t * (range[1] - range[0]);\n return `hsl(${ramp.hue} ${ramp.sat}% ${l.toFixed(1)}%)`;\n });\n}\n\n/** Per-segment light/dark colors for `ChartConfig.theme` (SVG only; siblings use inline vars). */\nexport function buildSegmentThemeMap(\n series: readonly AnalyticsChartSeries[],\n ramp: AnalyticsChartSegmentRamp,\n): Record<string, { light: string, dark: string }> {\n const light = buildRampColors(ramp, series.length, \"light\");\n const dark = buildRampColors(ramp, series.length, \"dark\");\n const out: Record<string, { light: string, dark: string }> = {};\n series.forEach((s, i) => {\n out[s.key] = { light: light[i]!, dark: dark[i]! };\n });\n return out;\n}\n"],"mappings":";AAMA,MAAa,kCAAyD;CACpE,SAAS;EACP,MAAM;EACN,KAAK;EACL,KAAK;EACL,iBAAiB,CAAC,IAAI,EAAE;EACxB,gBAAgB,CAAC,IAAI,EAAE;CACzB;CACA,SAAS;EACP,MAAM;EACN,KAAK;EACL,KAAK;EACL,iBAAiB,CAAC,IAAI,EAAE;EACxB,gBAAgB,CAAC,IAAI,EAAE;CACzB;AACF;AAEA,SAAgB,6BACd,UACuB;CACvB,IAAI,CAAC,UAAU,OAAO;CACtB,OAAO;EACL,SAAS,SAAS,WAAW,gCAAgC;EAC7D,SAAS,SAAS,WAAW,gCAAgC;CAC/D;AACF;;AAGA,SAAgB,gBACd,MACA,OACA,OACU;CACV,IAAI,KAAK,SAAS,YAAY;EAC5B,MAAM,OAAO,UAAU,UAAU,KAAK,QAAQ,KAAK;EACnD,IAAI,KAAK,WAAW,GAAG,OAAO,MAAM,KAAK,EAAE,QAAQ,MAAM,SAAS,MAAM;EACxE,OAAO,MAAM,KACX,EAAE,QAAQ,MAAM,IACf,GAAG,MAAM,KAAK,IAAI,KAAK,SAAS,IAAI,KAAK,SAAS,EACrD;CACF;CACA,MAAM,QAAQ,UAAU,UAAU,KAAK,kBAAkB,KAAK;CAC9D,OAAO,MAAM,KAAK,EAAE,QAAQ,MAAM,IAAI,GAAG,MAAM;EAC7C,MAAM,IAAI,SAAS,IAAI,KAAM,KAAK,QAAQ;EAC1C,MAAM,IAAI,MAAM,KAAK,KAAK,MAAM,KAAK,MAAM;EAC3C,OAAO,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,EAAE,QAAQ,CAAC,EAAE;CACtD,CAAC;AACH;;AAGA,SAAgB,qBACd,QACA,MACiD;CACjD,MAAM,QAAQ,gBAAgB,MAAM,OAAO,QAAQ,OAAO;CAC1D,MAAM,OAAO,gBAAgB,MAAM,OAAO,QAAQ,MAAM;CACxD,MAAM,MAAuD,CAAC;CAC9D,OAAO,SAAS,GAAG,MAAM;EACvB,IAAI,EAAE,OAAO;GAAE,OAAO,MAAM;GAAK,MAAM,KAAK;EAAI;CAClD,CAAC;CACD,OAAO;AACT"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ReactNode } from "react";
|
|
2
|
-
import { AnalyticsChartDataLayer, AnalyticsChartSeries } from "./types";
|
|
2
|
+
import { AnalyticsChartDataLayer, AnalyticsChartSeries } from "./types.js";
|
|
3
3
|
|
|
4
4
|
//#region src/components/analytics-chart/render-data-series.d.ts
|
|
5
5
|
/** Area layers use fill-only `<Area>` plus `<Line>` for the top edge (not Recharts' closed-path stroke). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-data-series.d.ts","names":[],"sources":["../../../../src/components/analytics-chart/render-data-series.tsx"],"mappings":";;;;;KAQY,oBAAA;EACV,KAAA,EAAO,uBAAA;EACP,SAAA;EACA,aAAA,WAAwB,
|
|
1
|
+
{"version":3,"file":"render-data-series.d.ts","names":[],"sources":["../../../../src/components/analytics-chart/render-data-series.tsx"],"mappings":";;;;;KAQY,oBAAA;EACV,KAAA,EAAO,uBAAA;EACP,SAAA;EACA,aAAA,WAAwB,oBAAoB;EAC5C,MAAA,GAAS,MAAA;EACT,OAAA;EACA,eAAA;EACA,wBAAA;EACA,WAAA;EACA,oBAAA;EACA,WAAA;EACA,WAAA;EACA,oBAAA;EACA,cAAA;IAAkB,KAAA;IAAe,MAAA;EAAA;AAAA;;iBAInB,gBAAA,CAAiB,IAAA,EAAM,oBAAA,GAAuB,SAAS"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Area, Bar, Line } from "recharts";
|
|
3
|
-
|
|
4
3
|
//#region src/components/analytics-chart/render-data-series.tsx
|
|
5
4
|
/** Return value must be spread into `<ComposedChart>` as siblings — do not wrap in `<Fragment>`. */
|
|
6
5
|
function renderDataSeries(args) {
|
|
@@ -101,7 +100,7 @@ function renderDataSeries(args) {
|
|
|
101
100
|
}, `${layer.id}_line`));
|
|
102
101
|
return nodes;
|
|
103
102
|
}
|
|
104
|
-
|
|
105
103
|
//#endregion
|
|
106
104
|
export { renderDataSeries };
|
|
105
|
+
|
|
107
106
|
//# sourceMappingURL=render-data-series.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-data-series.js","names":[],"sources":["../../../../src/components/analytics-chart/render-data-series.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Area, Bar, Line } from \"recharts\";\nimport type {\n AnalyticsChartDataLayer,\n AnalyticsChartSeries,\n} from \"./types\";\n\n/** Area layers use fill-only `<Area>` plus `<Line>` for the top edge (not Recharts' closed-path stroke). */\nexport type RenderDataSeriesArgs = {\n layer: AnalyticsChartDataLayer,\n segmented: boolean,\n segmentSeries: readonly AnalyticsChartSeries[],\n segKey: (segKey: string) => string,\n stackId: string,\n strokeDasharray: string | undefined,\n segmentedStrokeDasharray: string | undefined,\n fillOpacity: number,\n segmentedFillOpacity: number,\n baseOpacity?: number,\n strokeWidth: number,\n segmentedStrokeWidth: number,\n inProgressKeys: { solid: string, dashed: string } | null,\n};\n\n/** Return value must be spread into `<ComposedChart>` as siblings — do not wrap in `<Fragment>`. */\nexport function renderDataSeries(args: RenderDataSeriesArgs): ReactNode[] {\n const {\n layer,\n segmented,\n segmentSeries,\n segKey,\n stackId,\n strokeDasharray,\n segmentedStrokeDasharray,\n fillOpacity,\n segmentedFillOpacity,\n baseOpacity = 1,\n strokeWidth,\n segmentedStrokeWidth,\n inProgressKeys,\n } = args;\n\n const nodes: ReactNode[] = [];\n\n if (segmented) {\n segmentSeries.forEach((s, sIdx) => {\n const key = segKey(s.key);\n const nodeKey = `${layer.id}_seg_${s.key}`;\n if (layer.type === \"bar\") {\n const isTop = sIdx === segmentSeries.length - 1;\n nodes.push(\n <Bar\n key={nodeKey}\n dataKey={key}\n stackId={stackId}\n fill={`var(--color-${key})`}\n radius={isTop ? [2, 2, 0, 0] : 0}\n isAnimationActive={false}\n opacity={baseOpacity}\n />,\n );\n } else if (layer.type === \"area\") {\n nodes.push(\n <Area\n key={nodeKey}\n dataKey={key}\n stackId={stackId}\n type=\"linear\"\n fill={`var(--color-${key})`}\n fillOpacity={segmentedFillOpacity}\n stroke={`var(--color-${key})`}\n strokeWidth={segmentedStrokeWidth}\n strokeDasharray={segmentedStrokeDasharray}\n isAnimationActive={false}\n opacity={baseOpacity}\n />,\n );\n } else {\n nodes.push(\n <Line\n key={nodeKey}\n dataKey={key}\n type=\"linear\"\n stroke={`var(--color-${key})`}\n strokeWidth={strokeWidth}\n strokeDasharray={segmentedStrokeDasharray}\n dot={false}\n isAnimationActive={false}\n opacity={baseOpacity}\n />,\n );\n }\n });\n return nodes;\n }\n\n if (layer.type === \"bar\") {\n nodes.push(\n <Bar\n key={`${layer.id}_main`}\n dataKey={layer.id}\n fill={`var(--color-${layer.id})`}\n radius={2}\n isAnimationActive={false}\n />,\n );\n return nodes;\n }\n\n if (layer.type === \"area\") {\n nodes.push(\n <Area\n key={`${layer.id}_area`}\n dataKey={layer.id}\n type=\"linear\"\n fill={`var(--color-${layer.id})`}\n fillOpacity={fillOpacity}\n stroke=\"none\"\n isAnimationActive={false}\n />,\n );\n }\n\n if (inProgressKeys) {\n nodes.push(\n <Line\n key={`${layer.id}_solid`}\n dataKey={inProgressKeys.solid}\n type=\"linear\"\n stroke={`var(--color-${layer.id})`}\n strokeWidth={strokeWidth}\n strokeDasharray={strokeDasharray}\n dot={false}\n isAnimationActive={false}\n connectNulls\n />,\n );\n nodes.push(\n <Line\n key={`${layer.id}_dashed`}\n dataKey={inProgressKeys.dashed}\n type=\"linear\"\n stroke={`var(--color-${layer.id})`}\n strokeWidth={strokeWidth}\n strokeDasharray=\"4 4\"\n dot={false}\n isAnimationActive={false}\n connectNulls\n opacity={0.85}\n />,\n );\n } else {\n nodes.push(\n <Line\n key={`${layer.id}_line`}\n dataKey={layer.id}\n type=\"linear\"\n stroke={`var(--color-${layer.id})`}\n strokeWidth={strokeWidth}\n strokeDasharray={strokeDasharray}\n dot={false}\n isAnimationActive={false}\n opacity={baseOpacity}\n />,\n );\n }\n\n return nodes;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"render-data-series.js","names":[],"sources":["../../../../src/components/analytics-chart/render-data-series.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Area, Bar, Line } from \"recharts\";\nimport type {\n AnalyticsChartDataLayer,\n AnalyticsChartSeries,\n} from \"./types\";\n\n/** Area layers use fill-only `<Area>` plus `<Line>` for the top edge (not Recharts' closed-path stroke). */\nexport type RenderDataSeriesArgs = {\n layer: AnalyticsChartDataLayer,\n segmented: boolean,\n segmentSeries: readonly AnalyticsChartSeries[],\n segKey: (segKey: string) => string,\n stackId: string,\n strokeDasharray: string | undefined,\n segmentedStrokeDasharray: string | undefined,\n fillOpacity: number,\n segmentedFillOpacity: number,\n baseOpacity?: number,\n strokeWidth: number,\n segmentedStrokeWidth: number,\n inProgressKeys: { solid: string, dashed: string } | null,\n};\n\n/** Return value must be spread into `<ComposedChart>` as siblings — do not wrap in `<Fragment>`. */\nexport function renderDataSeries(args: RenderDataSeriesArgs): ReactNode[] {\n const {\n layer,\n segmented,\n segmentSeries,\n segKey,\n stackId,\n strokeDasharray,\n segmentedStrokeDasharray,\n fillOpacity,\n segmentedFillOpacity,\n baseOpacity = 1,\n strokeWidth,\n segmentedStrokeWidth,\n inProgressKeys,\n } = args;\n\n const nodes: ReactNode[] = [];\n\n if (segmented) {\n segmentSeries.forEach((s, sIdx) => {\n const key = segKey(s.key);\n const nodeKey = `${layer.id}_seg_${s.key}`;\n if (layer.type === \"bar\") {\n const isTop = sIdx === segmentSeries.length - 1;\n nodes.push(\n <Bar\n key={nodeKey}\n dataKey={key}\n stackId={stackId}\n fill={`var(--color-${key})`}\n radius={isTop ? [2, 2, 0, 0] : 0}\n isAnimationActive={false}\n opacity={baseOpacity}\n />,\n );\n } else if (layer.type === \"area\") {\n nodes.push(\n <Area\n key={nodeKey}\n dataKey={key}\n stackId={stackId}\n type=\"linear\"\n fill={`var(--color-${key})`}\n fillOpacity={segmentedFillOpacity}\n stroke={`var(--color-${key})`}\n strokeWidth={segmentedStrokeWidth}\n strokeDasharray={segmentedStrokeDasharray}\n isAnimationActive={false}\n opacity={baseOpacity}\n />,\n );\n } else {\n nodes.push(\n <Line\n key={nodeKey}\n dataKey={key}\n type=\"linear\"\n stroke={`var(--color-${key})`}\n strokeWidth={strokeWidth}\n strokeDasharray={segmentedStrokeDasharray}\n dot={false}\n isAnimationActive={false}\n opacity={baseOpacity}\n />,\n );\n }\n });\n return nodes;\n }\n\n if (layer.type === \"bar\") {\n nodes.push(\n <Bar\n key={`${layer.id}_main`}\n dataKey={layer.id}\n fill={`var(--color-${layer.id})`}\n radius={2}\n isAnimationActive={false}\n />,\n );\n return nodes;\n }\n\n if (layer.type === \"area\") {\n nodes.push(\n <Area\n key={`${layer.id}_area`}\n dataKey={layer.id}\n type=\"linear\"\n fill={`var(--color-${layer.id})`}\n fillOpacity={fillOpacity}\n stroke=\"none\"\n isAnimationActive={false}\n />,\n );\n }\n\n if (inProgressKeys) {\n nodes.push(\n <Line\n key={`${layer.id}_solid`}\n dataKey={inProgressKeys.solid}\n type=\"linear\"\n stroke={`var(--color-${layer.id})`}\n strokeWidth={strokeWidth}\n strokeDasharray={strokeDasharray}\n dot={false}\n isAnimationActive={false}\n connectNulls\n />,\n );\n nodes.push(\n <Line\n key={`${layer.id}_dashed`}\n dataKey={inProgressKeys.dashed}\n type=\"linear\"\n stroke={`var(--color-${layer.id})`}\n strokeWidth={strokeWidth}\n strokeDasharray=\"4 4\"\n dot={false}\n isAnimationActive={false}\n connectNulls\n opacity={0.85}\n />,\n );\n } else {\n nodes.push(\n <Line\n key={`${layer.id}_line`}\n dataKey={layer.id}\n type=\"linear\"\n stroke={`var(--color-${layer.id})`}\n strokeWidth={strokeWidth}\n strokeDasharray={strokeDasharray}\n dot={false}\n isAnimationActive={false}\n opacity={baseOpacity}\n />,\n );\n }\n\n return nodes;\n}\n"],"mappings":";;;;AAyBA,SAAgB,iBAAiB,MAAyC;CACxE,MAAM,EACJ,OACA,WACA,eACA,QACA,SACA,iBACA,0BACA,aACA,sBACA,cAAc,GACd,aACA,sBACA,mBACE;CAEJ,MAAM,QAAqB,CAAC;CAE5B,IAAI,WAAW;EACb,cAAc,SAAS,GAAG,SAAS;GACjC,MAAM,MAAM,OAAO,EAAE,GAAG;GACxB,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,EAAE;GACrC,IAAI,MAAM,SAAS,OAAO;IACxB,MAAM,QAAQ,SAAS,cAAc,SAAS;IAC9C,MAAM,KACJ,oBAAC,KAAD;KAEE,SAAS;KACA;KACT,MAAM,eAAe,IAAI;KACzB,QAAQ,QAAQ;MAAC;MAAG;MAAG;MAAG;KAAC,IAAI;KAC/B,mBAAmB;KACnB,SAAS;IACV,GAPM,OAON,CACH;GACF,OAAO,IAAI,MAAM,SAAS,QACxB,MAAM,KACJ,oBAAC,MAAD;IAEE,SAAS;IACA;IACT,MAAK;IACL,MAAM,eAAe,IAAI;IACzB,aAAa;IACb,QAAQ,eAAe,IAAI;IAC3B,aAAa;IACb,iBAAiB;IACjB,mBAAmB;IACnB,SAAS;GACV,GAXM,OAWN,CACH;QAEA,MAAM,KACJ,oBAAC,MAAD;IAEE,SAAS;IACT,MAAK;IACL,QAAQ,eAAe,IAAI;IACd;IACb,iBAAiB;IACjB,KAAK;IACL,mBAAmB;IACnB,SAAS;GACV,GATM,OASN,CACH;EAEJ,CAAC;EACD,OAAO;CACT;CAEA,IAAI,MAAM,SAAS,OAAO;EACxB,MAAM,KACJ,oBAAC,KAAD;GAEE,SAAS,MAAM;GACf,MAAM,eAAe,MAAM,GAAG;GAC9B,QAAQ;GACR,mBAAmB;EACpB,GALM,GAAG,MAAM,GAAG,MAKlB,CACH;EACA,OAAO;CACT;CAEA,IAAI,MAAM,SAAS,QACjB,MAAM,KACJ,oBAAC,MAAD;EAEE,SAAS,MAAM;EACf,MAAK;EACL,MAAM,eAAe,MAAM,GAAG;EACjB;EACb,QAAO;EACP,mBAAmB;CACpB,GAPM,GAAG,MAAM,GAAG,MAOlB,CACH;CAGF,IAAI,gBAAgB;EAClB,MAAM,KACJ,oBAAC,MAAD;GAEE,SAAS,eAAe;GACxB,MAAK;GACL,QAAQ,eAAe,MAAM,GAAG;GACnB;GACI;GACjB,KAAK;GACL,mBAAmB;GACnB,cAAA;EACD,GATM,GAAG,MAAM,GAAG,OASlB,CACH;EACA,MAAM,KACJ,oBAAC,MAAD;GAEE,SAAS,eAAe;GACxB,MAAK;GACL,QAAQ,eAAe,MAAM,GAAG;GACnB;GACb,iBAAgB;GAChB,KAAK;GACL,mBAAmB;GACnB,cAAA;GACA,SAAS;EACV,GAVM,GAAG,MAAM,GAAG,QAUlB,CACH;CACF,OACE,MAAM,KACJ,oBAAC,MAAD;EAEE,SAAS,MAAM;EACf,MAAK;EACL,QAAQ,eAAe,MAAM,GAAG;EACnB;EACI;EACjB,KAAK;EACL,mBAAmB;EACnB,SAAS;CACV,GATM,GAAG,MAAM,GAAG,MASlB,CACH;CAGF,OAAO;AACT"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnalyticsChartAnnotationsLayer, AnalyticsChartDataLayer, AnalyticsChartLayer, AnalyticsChartLayerType, AnalyticsChartLayers, AnalyticsChartSeries, AnalyticsChartState, AnalyticsChartStrokeStyle, AnalyticsChartTimeseriesState } from "./types";
|
|
1
|
+
import { AnalyticsChartAnnotationsLayer, AnalyticsChartDataLayer, AnalyticsChartLayer, AnalyticsChartLayerType, AnalyticsChartLayers, AnalyticsChartSeries, AnalyticsChartState, AnalyticsChartStrokeStyle, AnalyticsChartTimeseriesState } from "./types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/components/analytics-chart/state.d.ts
|
|
4
4
|
declare const STROKE_DASHARRAY: Record<AnalyticsChartStrokeStyle, string | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","names":[],"sources":["../../../../src/components/analytics-chart/state.ts"],"mappings":";;;cAaa,gBAAA,EAAkB,
|
|
1
|
+
{"version":3,"file":"state.d.ts","names":[],"sources":["../../../../src/components/analytics-chart/state.ts"],"mappings":";;;cAaa,gBAAA,EAAkB,MAAM,CAAC,yBAAA;AAAA,cAMzB,YAAA,WAAuB,oBAAoB;AAAA,cAC3C,YAAA;;cAGA,8BAAA,EAAgC,oBAyB5C;;AAnC8D;AAM/D;;;;AAAwD;AACxD;;;;AAA8D;AAG9D;;;;AAyBC;AAoBD;cAAa,6BAAA,EAA+B,mBAU3C;AAAA,iBAEe,gBAAA,CAAiB,MAAA,EAAQ,oBAAA,GAAuB,uBAAuB;AAAA,iBAIvE,gBAAA,CAAiB,MAAA,EAAQ,oBAAA,GAAuB,uBAAuB;AAAA,iBAIvE,oBAAA,CAAqB,MAAA,EAAQ,oBAAA,GAAuB,8BAA8B;AAAA,iBAKlF,aAAA,CACd,MAAA,EAAQ,oBAAA,EACR,EAAA,WACC,mBAAmB;AAAA,iBAIN,yBAAA,CAA0B,CAAA,EAAG,mBAAA,GAAsB,CAAA,IAAK,uBAAuB;AAAA,iBAI/E,iBAAA,CACd,KAAA,EAAO,mBAAA,GACN,KAAA,IAAS,6BAA6B;;iBAKzB,YAAA,CACd,MAAA,EAAQ,oBAAA,EACR,EAAA,UACA,IAAA,EAAM,mBAAA,GACL,oBAAA;;;;iBAOa,cAAA,CACd,MAAA,EAAQ,oBAAA,EACR,EAAA,UACA,KAAA,EAAO,MAAA,oBACN,oBAAA;AAAA,KAIS,sBAAA;EACV,KAAA;EACA,IAAA,EAAM,uBAAA;EACN,WAAA,EAAa,yBAAyB;EACtC,WAAA;AAAA;AAAA,iBAGc,qBAAA,CACd,KAAA,EAAO,uBAAA,GACN,sBAAsB;;AAvD8D;AAIvF;;iBAkEgB,yBAAA,CACd,MAAA,6BACA,YAAA,UACA,UAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { DEFAULT_FORMAT_KIND } from "./format.js";
|
|
2
|
-
|
|
3
2
|
//#region src/components/analytics-chart/state.ts
|
|
4
3
|
const STROKE_DASHARRAY = {
|
|
5
4
|
solid: void 0,
|
|
@@ -120,7 +119,7 @@ function computeLocalInProgressIdx(absIdx, visibleStart, visibleEnd) {
|
|
|
120
119
|
if (local < 0) return 0;
|
|
121
120
|
return local;
|
|
122
121
|
}
|
|
123
|
-
|
|
124
122
|
//#endregion
|
|
125
123
|
export { ANALYTICS_CHART_DEFAULT_LAYERS, ANALYTICS_CHART_DEFAULT_STATE, EMPTY_MATRIX, EMPTY_SERIES, STROKE_DASHARRAY, computeLocalInProgressIdx, findAnnotationsLayer, findCompareLayer, findLayerById, findPrimaryLayer, isAnalyticsChartDataLayer, isTimeseriesState, patchLayerById, resolveDataLayerStyle, setLayerById };
|
|
124
|
+
|
|
126
125
|
//# sourceMappingURL=state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","names":[],"sources":["../../../../src/components/analytics-chart/state.ts"],"sourcesContent":["import { DEFAULT_FORMAT_KIND } from \"./format\";\nimport type {\n AnalyticsChartAnnotationsLayer,\n AnalyticsChartDataLayer,\n AnalyticsChartLayer,\n AnalyticsChartLayers,\n AnalyticsChartLayerType,\n AnalyticsChartSeries,\n AnalyticsChartState,\n AnalyticsChartStrokeStyle,\n AnalyticsChartTimeseriesState,\n} from \"./types\";\n\nexport const STROKE_DASHARRAY: Record<AnalyticsChartStrokeStyle, string | undefined> = {\n solid: undefined,\n dashed: \"5 4\",\n dotted: \"1 4\",\n};\n\nexport const EMPTY_SERIES: readonly AnalyticsChartSeries[] = [];\nexport const EMPTY_MATRIX: readonly (readonly number[])[] = [];\n\n/** Generic non-segmented defaults; demos swap in segment data. */\nexport const ANALYTICS_CHART_DEFAULT_LAYERS: AnalyticsChartLayers = [\n {\n id: \"primary\",\n kind: \"primary\",\n label: \"Current\",\n visible: true,\n color: \"#2563eb\",\n segmented: false,\n type: \"area\",\n strokeStyle: \"solid\",\n fillOpacity: 0.22,\n inProgressFromIndex: null,\n },\n {\n id: \"compare\",\n kind: \"compare\",\n label: \"Previous period\",\n visible: true,\n color: \"#f59e0b\",\n segmented: false,\n type: \"line\",\n strokeStyle: \"dashed\",\n inProgressFromIndex: null,\n },\n { id: \"annotations\", kind: \"annotations\", label: \"Annotations\", visible: true, color: \"#f59e0b\" },\n];\n\n/**\n * Default state for `AnalyticsChart`. ALWAYS spread from this when\n * initializing state; never build the state object by hand. Ships with\n * three pre-configured layers (primary, compare, annotations) — map over\n * `layers` to override individual ones.\n *\n * ```tsx\n * const [state, setState] = React.useState({\n * ...ANALYTICS_CHART_DEFAULT_STATE,\n * layers: ANALYTICS_CHART_DEFAULT_STATE.layers.map(l =>\n * l.kind === \"compare\" ? { ...l, visible: false } : l\n * ),\n * });\n * ```\n *\n * See the JSDoc on `AnalyticsChart` for the full contract, examples, and\n * the segment data format.\n */\nexport const ANALYTICS_CHART_DEFAULT_STATE: AnalyticsChartState = {\n view: \"timeseries\",\n layers: ANALYTICS_CHART_DEFAULT_LAYERS,\n xFormatKind: DEFAULT_FORMAT_KIND.datetime,\n yFormatKind: DEFAULT_FORMAT_KIND.short,\n showGrid: true,\n showXAxis: true,\n showYAxis: true,\n zoomRange: null,\n pinnedIndex: null,\n};\n\nexport function findPrimaryLayer(layers: AnalyticsChartLayers): AnalyticsChartDataLayer | undefined {\n const l = layers.find((x) => x.kind === \"primary\");\n return l as AnalyticsChartDataLayer | undefined;\n}\nexport function findCompareLayer(layers: AnalyticsChartLayers): AnalyticsChartDataLayer | undefined {\n const l = layers.find((x) => x.kind === \"compare\");\n return l as AnalyticsChartDataLayer | undefined;\n}\nexport function findAnnotationsLayer(layers: AnalyticsChartLayers): AnalyticsChartAnnotationsLayer | undefined {\n const l = layers.find((x) => x.kind === \"annotations\");\n return l as AnalyticsChartAnnotationsLayer | undefined;\n}\n\nexport function findLayerById(\n layers: AnalyticsChartLayers,\n id: string,\n): AnalyticsChartLayer | undefined {\n return layers.find((l) => l.id === id);\n}\n\nexport function isAnalyticsChartDataLayer(l: AnalyticsChartLayer): l is AnalyticsChartDataLayer {\n return l.kind === \"primary\" || l.kind === \"compare\";\n}\n\nexport function isTimeseriesState(\n state: AnalyticsChartState,\n): state is AnalyticsChartTimeseriesState {\n return state.view === \"timeseries\";\n}\n\n/** Replace a single layer (looked up by id) with a new layer object. */\nexport function setLayerById(\n layers: AnalyticsChartLayers,\n id: string,\n next: AnalyticsChartLayer,\n): AnalyticsChartLayers {\n return layers.map((l) => (l.id === id ? next : l));\n}\n\n/** Shallow-patch fields on a layer by id. The patch type is deliberately\n * loose — callers are trusted to supply only fields the layer's\n * `kind`/`type` actually owns. */\nexport function patchLayerById(\n layers: AnalyticsChartLayers,\n id: string,\n patch: Record<string, unknown>,\n): AnalyticsChartLayers {\n return layers.map((l) => (l.id === id ? ({ ...l, ...patch } as AnalyticsChartLayer) : l));\n}\n\nexport type ResolvedDataLayerStyle = {\n color: string,\n type: AnalyticsChartLayerType,\n strokeStyle: AnalyticsChartStrokeStyle,\n fillOpacity: number,\n};\n\nexport function resolveDataLayerStyle(\n layer: AnalyticsChartDataLayer,\n): ResolvedDataLayerStyle {\n return {\n color: layer.color,\n type: layer.type,\n // Bars have no stroke pattern — default to solid for the underline.\n strokeStyle: layer.type === \"bar\" ? \"solid\" : layer.strokeStyle,\n // Lines have no fill — default to 0 so gradient overlays sit flat.\n fillOpacity: layer.type === \"line\" ? 0 : layer.fillOpacity,\n };\n}\n\n/** Translate a layer's absolute `inProgressFromIndex` into a local index\n * inside the visible window. Returns `null` when the marker sits beyond\n * the visible window, `0` when it sits before the window (whole window\n * is dashed), or the clamped local index otherwise. */\nexport function computeLocalInProgressIdx(\n absIdx: number | null | undefined,\n visibleStart: number,\n visibleEnd: number,\n): number | null {\n if (absIdx == null) return null;\n const local = absIdx - visibleStart;\n if (local >= visibleEnd - visibleStart + 1) return null; // beyond window\n if (local < 0) return 0; // before window — whole window is dashed\n return local;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"state.js","names":[],"sources":["../../../../src/components/analytics-chart/state.ts"],"sourcesContent":["import { DEFAULT_FORMAT_KIND } from \"./format\";\nimport type {\n AnalyticsChartAnnotationsLayer,\n AnalyticsChartDataLayer,\n AnalyticsChartLayer,\n AnalyticsChartLayers,\n AnalyticsChartLayerType,\n AnalyticsChartSeries,\n AnalyticsChartState,\n AnalyticsChartStrokeStyle,\n AnalyticsChartTimeseriesState,\n} from \"./types\";\n\nexport const STROKE_DASHARRAY: Record<AnalyticsChartStrokeStyle, string | undefined> = {\n solid: undefined,\n dashed: \"5 4\",\n dotted: \"1 4\",\n};\n\nexport const EMPTY_SERIES: readonly AnalyticsChartSeries[] = [];\nexport const EMPTY_MATRIX: readonly (readonly number[])[] = [];\n\n/** Generic non-segmented defaults; demos swap in segment data. */\nexport const ANALYTICS_CHART_DEFAULT_LAYERS: AnalyticsChartLayers = [\n {\n id: \"primary\",\n kind: \"primary\",\n label: \"Current\",\n visible: true,\n color: \"#2563eb\",\n segmented: false,\n type: \"area\",\n strokeStyle: \"solid\",\n fillOpacity: 0.22,\n inProgressFromIndex: null,\n },\n {\n id: \"compare\",\n kind: \"compare\",\n label: \"Previous period\",\n visible: true,\n color: \"#f59e0b\",\n segmented: false,\n type: \"line\",\n strokeStyle: \"dashed\",\n inProgressFromIndex: null,\n },\n { id: \"annotations\", kind: \"annotations\", label: \"Annotations\", visible: true, color: \"#f59e0b\" },\n];\n\n/**\n * Default state for `AnalyticsChart`. ALWAYS spread from this when\n * initializing state; never build the state object by hand. Ships with\n * three pre-configured layers (primary, compare, annotations) — map over\n * `layers` to override individual ones.\n *\n * ```tsx\n * const [state, setState] = React.useState({\n * ...ANALYTICS_CHART_DEFAULT_STATE,\n * layers: ANALYTICS_CHART_DEFAULT_STATE.layers.map(l =>\n * l.kind === \"compare\" ? { ...l, visible: false } : l\n * ),\n * });\n * ```\n *\n * See the JSDoc on `AnalyticsChart` for the full contract, examples, and\n * the segment data format.\n */\nexport const ANALYTICS_CHART_DEFAULT_STATE: AnalyticsChartState = {\n view: \"timeseries\",\n layers: ANALYTICS_CHART_DEFAULT_LAYERS,\n xFormatKind: DEFAULT_FORMAT_KIND.datetime,\n yFormatKind: DEFAULT_FORMAT_KIND.short,\n showGrid: true,\n showXAxis: true,\n showYAxis: true,\n zoomRange: null,\n pinnedIndex: null,\n};\n\nexport function findPrimaryLayer(layers: AnalyticsChartLayers): AnalyticsChartDataLayer | undefined {\n const l = layers.find((x) => x.kind === \"primary\");\n return l as AnalyticsChartDataLayer | undefined;\n}\nexport function findCompareLayer(layers: AnalyticsChartLayers): AnalyticsChartDataLayer | undefined {\n const l = layers.find((x) => x.kind === \"compare\");\n return l as AnalyticsChartDataLayer | undefined;\n}\nexport function findAnnotationsLayer(layers: AnalyticsChartLayers): AnalyticsChartAnnotationsLayer | undefined {\n const l = layers.find((x) => x.kind === \"annotations\");\n return l as AnalyticsChartAnnotationsLayer | undefined;\n}\n\nexport function findLayerById(\n layers: AnalyticsChartLayers,\n id: string,\n): AnalyticsChartLayer | undefined {\n return layers.find((l) => l.id === id);\n}\n\nexport function isAnalyticsChartDataLayer(l: AnalyticsChartLayer): l is AnalyticsChartDataLayer {\n return l.kind === \"primary\" || l.kind === \"compare\";\n}\n\nexport function isTimeseriesState(\n state: AnalyticsChartState,\n): state is AnalyticsChartTimeseriesState {\n return state.view === \"timeseries\";\n}\n\n/** Replace a single layer (looked up by id) with a new layer object. */\nexport function setLayerById(\n layers: AnalyticsChartLayers,\n id: string,\n next: AnalyticsChartLayer,\n): AnalyticsChartLayers {\n return layers.map((l) => (l.id === id ? next : l));\n}\n\n/** Shallow-patch fields on a layer by id. The patch type is deliberately\n * loose — callers are trusted to supply only fields the layer's\n * `kind`/`type` actually owns. */\nexport function patchLayerById(\n layers: AnalyticsChartLayers,\n id: string,\n patch: Record<string, unknown>,\n): AnalyticsChartLayers {\n return layers.map((l) => (l.id === id ? ({ ...l, ...patch } as AnalyticsChartLayer) : l));\n}\n\nexport type ResolvedDataLayerStyle = {\n color: string,\n type: AnalyticsChartLayerType,\n strokeStyle: AnalyticsChartStrokeStyle,\n fillOpacity: number,\n};\n\nexport function resolveDataLayerStyle(\n layer: AnalyticsChartDataLayer,\n): ResolvedDataLayerStyle {\n return {\n color: layer.color,\n type: layer.type,\n // Bars have no stroke pattern — default to solid for the underline.\n strokeStyle: layer.type === \"bar\" ? \"solid\" : layer.strokeStyle,\n // Lines have no fill — default to 0 so gradient overlays sit flat.\n fillOpacity: layer.type === \"line\" ? 0 : layer.fillOpacity,\n };\n}\n\n/** Translate a layer's absolute `inProgressFromIndex` into a local index\n * inside the visible window. Returns `null` when the marker sits beyond\n * the visible window, `0` when it sits before the window (whole window\n * is dashed), or the clamped local index otherwise. */\nexport function computeLocalInProgressIdx(\n absIdx: number | null | undefined,\n visibleStart: number,\n visibleEnd: number,\n): number | null {\n if (absIdx == null) return null;\n const local = absIdx - visibleStart;\n if (local >= visibleEnd - visibleStart + 1) return null; // beyond window\n if (local < 0) return 0; // before window — whole window is dashed\n return local;\n}\n"],"mappings":";;AAaA,MAAa,mBAA0E;CACrF,OAAO,KAAA;CACP,QAAQ;CACR,QAAQ;AACV;AAEA,MAAa,eAAgD,CAAC;AAC9D,MAAa,eAA+C,CAAC;;AAG7D,MAAa,iCAAuD;CAClE;EACE,IAAI;EACJ,MAAM;EACN,OAAO;EACP,SAAS;EACT,OAAO;EACP,WAAW;EACX,MAAM;EACN,aAAa;EACb,aAAa;EACb,qBAAqB;CACvB;CACA;EACE,IAAI;EACJ,MAAM;EACN,OAAO;EACP,SAAS;EACT,OAAO;EACP,WAAW;EACX,MAAM;EACN,aAAa;EACb,qBAAqB;CACvB;CACA;EAAE,IAAI;EAAe,MAAM;EAAe,OAAO;EAAe,SAAS;EAAM,OAAO;CAAU;AAClG;;;;;;;;;;;;;;;;;;;AAoBA,MAAa,gCAAqD;CAChE,MAAM;CACN,QAAQ;CACR,aAAa,oBAAoB;CACjC,aAAa,oBAAoB;CACjC,UAAU;CACV,WAAW;CACX,WAAW;CACX,WAAW;CACX,aAAa;AACf;AAEA,SAAgB,iBAAiB,QAAmE;CAElG,OADU,OAAO,MAAM,MAAM,EAAE,SAAS,SACjC;AACT;AACA,SAAgB,iBAAiB,QAAmE;CAElG,OADU,OAAO,MAAM,MAAM,EAAE,SAAS,SACjC;AACT;AACA,SAAgB,qBAAqB,QAA0E;CAE7G,OADU,OAAO,MAAM,MAAM,EAAE,SAAS,aACjC;AACT;AAEA,SAAgB,cACd,QACA,IACiC;CACjC,OAAO,OAAO,MAAM,MAAM,EAAE,OAAO,EAAE;AACvC;AAEA,SAAgB,0BAA0B,GAAsD;CAC9F,OAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAC5C;AAEA,SAAgB,kBACd,OACwC;CACxC,OAAO,MAAM,SAAS;AACxB;;AAGA,SAAgB,aACd,QACA,IACA,MACsB;CACtB,OAAO,OAAO,KAAK,MAAO,EAAE,OAAO,KAAK,OAAO,CAAE;AACnD;;;;AAKA,SAAgB,eACd,QACA,IACA,OACsB;CACtB,OAAO,OAAO,KAAK,MAAO,EAAE,OAAO,KAAM;EAAE,GAAG;EAAG,GAAG;CAAM,IAA4B,CAAE;AAC1F;AASA,SAAgB,sBACd,OACwB;CACxB,OAAO;EACL,OAAO,MAAM;EACb,MAAM,MAAM;EAEZ,aAAa,MAAM,SAAS,QAAQ,UAAU,MAAM;EAEpD,aAAa,MAAM,SAAS,SAAS,IAAI,MAAM;CACjD;AACF;;;;;AAMA,SAAgB,0BACd,QACA,cACA,YACe;CACf,IAAI,UAAU,MAAM,OAAO;CAC3B,MAAM,QAAQ,SAAS;CACvB,IAAI,SAAS,aAAa,eAAe,GAAG,OAAO;CACnD,IAAI,QAAQ,GAAG,OAAO;CACtB,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strings.d.ts","names":[],"sources":["../../../../src/components/analytics-chart/strings.ts"],"mappings":";KAAY,qBAAA;EAAA,8EAEV,SAAA;EAEA,UAAA,UAFA;EAIA,SAAA,GAAY,IAAA,qBAAZ;EAEA,MAAA;EAEA,QAAA,UAEA;EAAA,qBAAA,UAIA;EAFA,mBAAA,UAMA;EAJA,IAAA,UAQA;EANA,MAAA,UAWA;EATA,cAAA,UAaA;EAXA,WAAA,UAeA;EAbA,WAAA;EAa4C;;EAV5C,gBAAA,UAYoB;EAVpB,cAAA,UAU+B;EAR/B,sBAAA,UAgCD;EA9BC,cAAA,
|
|
1
|
+
{"version":3,"file":"strings.d.ts","names":[],"sources":["../../../../src/components/analytics-chart/strings.ts"],"mappings":";KAAY,qBAAA;EAAA,8EAEV,SAAA;EAEA,UAAA,UAFA;EAIA,SAAA,GAAY,IAAA,qBAAZ;EAEA,MAAA;EAEA,QAAA,UAEA;EAAA,qBAAA,UAIA;EAFA,mBAAA,UAMA;EAJA,IAAA,UAQA;EANA,MAAA,UAWA;EATA,cAAA,UAaA;EAXA,WAAA,UAeA;EAbA,WAAA;EAa4C;;EAV5C,gBAAA,UAYoB;EAVpB,cAAA,UAU+B;EAR/B,sBAAA,UAgCD;EA9BC,cAAA,UA8BD;EA5BC,SAAA,UA+Bc;EA7Bd,YAAA,GAAe,GAAA;IAAO,YAAA;IAAsB,UAAA;EAAA,cA+B3C;EA7BD,iBAAA,GAAoB,GAAA;AAAA;AAAA,cAGT,+BAAA,EAAiC,qBAqB7C;;iBAGe,4BAAA,CACd,QAAA,EAAU,OAAA,CAAQ,qBAAA,gBACjB,qBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strings.js","names":[],"sources":["../../../../src/components/analytics-chart/strings.ts"],"sourcesContent":["export type AnalyticsChartStrings = {\n /** Reset-zoom badge in the top-right corner when `state.zoomRange` is set. */\n resetZoom: string,\n /** Header label above the timestamps in the live range-brush popup. */\n rangeLabel: string,\n /** Formatted day-count suffix used by the brush + action-bar. */\n daysShort: (days: number) => string,\n /** \"Zoom in\" button inside the committed-range action bar. */\n zoomIn: string,\n /** \"Annotate\" button inside the committed-range action bar. */\n annotate: string,\n /** Placeholder for the annotation label input. */\n annotationPlaceholder: string,\n /** `aria-label` for the annotation label input. */\n annotationLabelAria: string,\n /** Save button in the annotation form. */\n save: string,\n /** Cancel button in the annotation form. */\n cancel: string,\n /** `aria-label` for the X button that clears the committed range. */\n clearSelection: string,\n /** Pinned badge shown in the tooltip header when the tooltip is pinned. */\n pinnedBadge: string,\n /** \"Δ vs prev\" row label in the tooltip (both segmented and flat modes). */\n deltaVsPrev: string,\n /** Suffix appended to a layer's label in the per-layer totals section\n * (e.g. \"Sign-ups\" → \"Sign-ups total\"). */\n layerTotalSuffix: string,\n /** Hint row shown in the tooltip while it is floating (not pinned). */\n hintClickToPin: string,\n /** Hint row shown in the tooltip while it is pinned. */\n hintClickAnywhereUnpin: string,\n /** Center-stat heading shown in the pie when no segment is hovered. */\n pieTotalCenter: string,\n /** Label on the TrendPill in the pie center. */\n pieVsPrev: string,\n /** `aria-label` for the PieChart SVG. */\n pieAriaLabel: (ctx: { segmentCount: number, windowDays: number }) => string,\n /** Percentage-of-total caption shown under an active pie slice. */\n piePercentOfTotal: (pct: number) => string,\n};\n\nexport const ANALYTICS_CHART_DEFAULT_STRINGS: AnalyticsChartStrings = {\n resetZoom: \"Reset zoom\",\n rangeLabel: \"Range\",\n daysShort: (days) => `${days}d`,\n zoomIn: \"Zoom in\",\n annotate: \"Annotate\",\n annotationPlaceholder: \"Label this range…\",\n annotationLabelAria: \"Annotation label\",\n save: \"Save\",\n cancel: \"Cancel\",\n clearSelection: \"Clear selection\",\n pinnedBadge: \"Pinned\",\n deltaVsPrev: \"Δ vs prev\",\n layerTotalSuffix: \" total\",\n hintClickToPin: \"Click to pin this point\",\n hintClickAnywhereUnpin: \"Click anywhere · Esc\\u00A0to unpin\",\n pieTotalCenter: \"Total\",\n pieVsPrev: \"vs prev\",\n pieAriaLabel: ({ segmentCount, windowDays }) =>\n `${segmentCount} segment share-of-total over the visible ${windowDays}-day range`,\n piePercentOfTotal: (pct) => `${(pct * 100).toFixed(1)}% of total`,\n};\n\n/** Shallow merge — every field is a primitive or a flat function. */\nexport function resolveAnalyticsChartStrings(\n override: Partial<AnalyticsChartStrings> | undefined,\n): AnalyticsChartStrings {\n if (!override) return ANALYTICS_CHART_DEFAULT_STRINGS;\n return { ...ANALYTICS_CHART_DEFAULT_STRINGS, ...override };\n}\n"],"mappings":";AA0CA,MAAa,kCAAyD;CACpE,WAAW;CACX,YAAY;CACZ,YAAY,SAAS,GAAG,KAAK;CAC7B,QAAQ;CACR,UAAU;CACV,uBAAuB;CACvB,qBAAqB;CACrB,MAAM;CACN,QAAQ;CACR,gBAAgB;CAChB,aAAa;CACb,aAAa;CACb,kBAAkB;CAClB,gBAAgB;CAChB,wBAAwB;CACxB,gBAAgB;CAChB,WAAW;CACX,eAAe,EAAE,cAAc,iBAC7B,GAAG,aAAa,2CAA2C,WAAW;CACxE,oBAAoB,QAAQ,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"strings.js","names":[],"sources":["../../../../src/components/analytics-chart/strings.ts"],"sourcesContent":["export type AnalyticsChartStrings = {\n /** Reset-zoom badge in the top-right corner when `state.zoomRange` is set. */\n resetZoom: string,\n /** Header label above the timestamps in the live range-brush popup. */\n rangeLabel: string,\n /** Formatted day-count suffix used by the brush + action-bar. */\n daysShort: (days: number) => string,\n /** \"Zoom in\" button inside the committed-range action bar. */\n zoomIn: string,\n /** \"Annotate\" button inside the committed-range action bar. */\n annotate: string,\n /** Placeholder for the annotation label input. */\n annotationPlaceholder: string,\n /** `aria-label` for the annotation label input. */\n annotationLabelAria: string,\n /** Save button in the annotation form. */\n save: string,\n /** Cancel button in the annotation form. */\n cancel: string,\n /** `aria-label` for the X button that clears the committed range. */\n clearSelection: string,\n /** Pinned badge shown in the tooltip header when the tooltip is pinned. */\n pinnedBadge: string,\n /** \"Δ vs prev\" row label in the tooltip (both segmented and flat modes). */\n deltaVsPrev: string,\n /** Suffix appended to a layer's label in the per-layer totals section\n * (e.g. \"Sign-ups\" → \"Sign-ups total\"). */\n layerTotalSuffix: string,\n /** Hint row shown in the tooltip while it is floating (not pinned). */\n hintClickToPin: string,\n /** Hint row shown in the tooltip while it is pinned. */\n hintClickAnywhereUnpin: string,\n /** Center-stat heading shown in the pie when no segment is hovered. */\n pieTotalCenter: string,\n /** Label on the TrendPill in the pie center. */\n pieVsPrev: string,\n /** `aria-label` for the PieChart SVG. */\n pieAriaLabel: (ctx: { segmentCount: number, windowDays: number }) => string,\n /** Percentage-of-total caption shown under an active pie slice. */\n piePercentOfTotal: (pct: number) => string,\n};\n\nexport const ANALYTICS_CHART_DEFAULT_STRINGS: AnalyticsChartStrings = {\n resetZoom: \"Reset zoom\",\n rangeLabel: \"Range\",\n daysShort: (days) => `${days}d`,\n zoomIn: \"Zoom in\",\n annotate: \"Annotate\",\n annotationPlaceholder: \"Label this range…\",\n annotationLabelAria: \"Annotation label\",\n save: \"Save\",\n cancel: \"Cancel\",\n clearSelection: \"Clear selection\",\n pinnedBadge: \"Pinned\",\n deltaVsPrev: \"Δ vs prev\",\n layerTotalSuffix: \" total\",\n hintClickToPin: \"Click to pin this point\",\n hintClickAnywhereUnpin: \"Click anywhere · Esc\\u00A0to unpin\",\n pieTotalCenter: \"Total\",\n pieVsPrev: \"vs prev\",\n pieAriaLabel: ({ segmentCount, windowDays }) =>\n `${segmentCount} segment share-of-total over the visible ${windowDays}-day range`,\n piePercentOfTotal: (pct) => `${(pct * 100).toFixed(1)}% of total`,\n};\n\n/** Shallow merge — every field is a primitive or a flat function. */\nexport function resolveAnalyticsChartStrings(\n override: Partial<AnalyticsChartStrings> | undefined,\n): AnalyticsChartStrings {\n if (!override) return ANALYTICS_CHART_DEFAULT_STRINGS;\n return { ...ANALYTICS_CHART_DEFAULT_STRINGS, ...override };\n}\n"],"mappings":";AA0CA,MAAa,kCAAyD;CACpE,WAAW;CACX,YAAY;CACZ,YAAY,SAAS,GAAG,KAAK;CAC7B,QAAQ;CACR,UAAU;CACV,uBAAuB;CACvB,qBAAqB;CACrB,MAAM;CACN,QAAQ;CACR,gBAAgB;CAChB,aAAa;CACb,aAAa;CACb,kBAAkB;CAClB,gBAAgB;CAChB,wBAAwB;CACxB,gBAAgB;CAChB,WAAW;CACX,eAAe,EAAE,cAAc,iBAC7B,GAAG,aAAa,2CAA2C,WAAW;CACxE,oBAAoB,QAAQ,IAAI,MAAM,IAAA,CAAK,QAAQ,CAAC,EAAE;AACxD;;AAGA,SAAgB,6BACd,UACuB;CACvB,IAAI,CAAC,UAAU,OAAO;CACtB,OAAO;EAAE,GAAG;EAAiC,GAAG;CAAS;AAC3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../../src/components/analytics-chart/types.ts"],"mappings":";;KACY,KAAA;EACV,EAAA;EACA,MAAA,EAAQ,
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../../src/components/analytics-chart/types.ts"],"mappings":";;KACY,KAAA;EACV,EAAA;EACA,MAAA,EAAQ,MAAM;AAAA;;iBAIA,UAAA,CAAW,CAAA,EAAG,KAAK,EAAE,EAAA;;;AAJrB;AAIhB;iBASgB,QAAA,CAAS,GAAW;AAAA,KAOxB,UAAA;EACV,KAAA;EACA,KAAA;EACA,WAAA;AAAA;;KAIU,oBAAA;EACV,GAAA;EACA,KAAK;AAAA;AAAA,KAGK,cAAA;AAAA,KAQA,iBAAA;EACV,IAAA,aArBoB;EAuBpB,MAAA,WAvBoB;EAyBpB,QAAA;AAAA;AAAA,KAEU,eAAA;EACV,IAAA,WAzBW;EA2BX,SAAA;EACA,MAAA;AAAA;AAAA,KAEU,kBAAA;EACV,IAAA,cAtBU;EAwBV,QAAA;EAEA,OAAA;EACA,MAAA;AAAA;AAAA,KAEU,kBAAA;EACV,IAAA,cAtB2B;EAwB3B,IAAA,2BArBA;EAuBA,QAAA;AAAA;AAAA,KAEU,kBAAA;EACV,IAAA,cAtByB;EAwBzB,KAAA;EACA,MAAA;AAAA;AAAA,KAEU,iBAAA;EACV,IAAA;EAxBM;AAAA;AAER;;;EA4BE,MAAA,mCA3BA;EA6BA,QAAA;AAAA;AAAA,KAGU,UAAA,GACR,iBAAA,GACA,eAAA,GACA,kBAAA,GACA,kBAAA,GACA,kBAAA,GACA,iBAAA;AAAA,KAEQ,kBAAA;AAAA,KACA,uBAAA;AAAA,KACA,yBAAA;AAAA,KAEP,6BAAA;EACH,EAAA;EACA,IAAA;EACA,KAAA;EACA,OAAA;EACA,KAAA;EACA,SAAA;EAtCQ;AAEV;;EAwCE,QAAA;EAxC4B;;EA2C5B,aAAA,YAAyB,oBAAoB;EAvC7C;;AAAM;AAER;EA0CE,mBAAA;AAAA;AAAA,KAEU,uBAAA,GAA0B,6BAAA;EACpC,IAAA;EACA,WAAA,EAAa,yBAAyB;AAAA;AAAA,KAE5B,uBAAA,GAA0B,6BAAA;EACpC,IAAA;EACA,WAAA,EAAa,yBAAyB;EACtC,WAAA;AAAA;AAAA,KAEU,sBAAA,GAAyB,6BAA6B;EAChE,IAAA;EACA,WAAA;AAAA;AAAA,KAGU,uBAAA,GACR,uBAAA,GACA,uBAAA,GACA,sBAAA;AAAA,KAEQ,8BAAA;EACV,EAAA;EACA,IAAA;EACA,KAAA;EACA,OAAA;EACA,KAAA;AAAA;AAAA,KAGU,mBAAA,GACR,uBAAA,GACA,8BAA8B;AAAA,KAEtB,oBAAA,YAAgC,mBAAmB;AAAA,KAEnD,6BAAA;EACV,IAAA;EACA,MAAA,EAAQ,oBAAA,EA3DoB;EA6D5B,WAAA,EAAa,UAAA,EA7De;EA+D5B,WAAA,EAAa,UAAA;EACb,QAAA;EACA,SAAA;EACA,SAAA;EACA,SAAA;EACA,WAAA;AAAA;AAAA,KAEU,sBAAA;EACV,IAAA;EACA,MAAA,EAAQ,oBAAA;EACR,WAAA,EAAa,UAAA;EACb,WAAA,EAAa,UAAA;AAAA;AAAA,KAEH,mBAAA,GACR,6BAAA,GACA,sBAAsB;AAAA,KAEd,mBAAA;EACV,GAAA;EACA,IAAI;AAAA;;;;KAMM,sBAAA;EACV,WAAA;EACA,WAAA;EACA,kBAAA;EACA,kBAAA;EACA,SAAA;EACA,aAAA;AAAA;AAAA,KAGU,yBAAA;EAER,IAAA,gBA3EkC;EA6ElC,GAAA,UA3EF;EA6EE,GAAA,UA7EoC;EA+EpC,eAAA,oBA7EQ;EA+ER,cAAA;AAAA;EAGA,IAAA,cAlFkC;EAoFlC,KAAA,qBAlFF;EAoFE,IAAA;AAAA;AAAA,KAGQ,qBAAA;EAtFC,8DAwFX,OAAA,EAAS,yBAAA,EAtFuB;EAwFhC,OAAA,EAAS,yBAAyB;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/components/analytics-chart/types.ts"],"sourcesContent":["/** Time-series point. `values` is keyed by layer id. */\nexport type Point = {\n ts: number,\n values: Record<string, number>,\n};\n\n/** Missing or non-finite values become 0. */\nexport function pointValue(p: Point, id: string): number {\n const v = p.values[id];\n return typeof v === \"number\" && Number.isFinite(v) ? v : 0;\n}\n\n/** Sanitize a string into a valid CSS `<ident>` token.\n * Replaces characters not allowed in CSS identifiers (like `$`, spaces,\n * slashes, dots) with underscores. Used to build safe `var(--color-xxx)`\n * custom property names from arbitrary segment keys. */\nexport function cssIdent(raw: string): string {\n // Replace everything that isn't a letter, digit, hyphen, or underscore.\n // Prefix with `_` if the result starts with a digit (not valid as ident start).\n const cleaned = raw.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n return /^\\d/.test(cleaned) ? `_${cleaned}` : cleaned;\n}\n\nexport type Annotation = {\n index: number,\n label: string,\n description: string,\n};\n\n/** Breakdown category definition — `{ key, label }` tuple. */\nexport type AnalyticsChartSeries = {\n key: string,\n label: string,\n};\n\nexport type FormatKindType =\n | \"numeric\"\n | \"short\"\n | \"currency\"\n | \"duration\"\n | \"datetime\"\n | \"percent\";\n\nexport type FormatKindNumeric = {\n type: \"numeric\",\n /** Locale used for grouping and digit separators. Defaults to \"en-US\". */\n locale?: string,\n /** Fixed decimal places (0-4). Defaults to 0. */\n decimals?: number,\n};\nexport type FormatKindShort = {\n type: \"short\",\n /** Decimal places after the unit suffix (1.2K vs 1.20K). Defaults to 1. */\n precision?: number,\n locale?: string,\n};\nexport type FormatKindCurrency = {\n type: \"currency\",\n /** ISO 4217 code. Defaults to \"USD\". */\n currency?: string,\n /** Divisor applied before formatting — e.g. 100 for cents → dollars. Defaults to 1. */\n divisor?: number,\n locale?: string,\n};\nexport type FormatKindDuration = {\n type: \"duration\",\n /** Source unit of the input value. Defaults to \"s\". */\n unit?: \"ms\" | \"s\" | \"m\" | \"h\",\n /** Show the smallest unit even when zero. Defaults to false. */\n showZero?: boolean,\n};\nexport type FormatKindDatetime = {\n type: \"datetime\",\n /** Render style. Defaults to \"short\". */\n style?: \"short\" | \"long\" | \"iso\" | \"relative\",\n locale?: string,\n};\nexport type FormatKindPercent = {\n type: \"percent\",\n /** How to interpret the input value:\n * - \"fraction\" → 0..1 → multiply by 100 (default)\n * - \"basis\" → 0..10000 → divide by 100\n * - \"whole\" → 0..100 → no scaling\n */\n source?: \"fraction\" | \"basis\" | \"whole\",\n /** Decimal places. Defaults to 1. */\n decimals?: number,\n};\n\nexport type FormatKind =\n | FormatKindNumeric\n | FormatKindShort\n | FormatKindCurrency\n | FormatKindDuration\n | FormatKindDatetime\n | FormatKindPercent;\n\nexport type AnalyticsChartView = \"timeseries\" | \"pie\";\nexport type AnalyticsChartLayerType = \"line\" | \"area\" | \"bar\";\nexport type AnalyticsChartStrokeStyle = \"solid\" | \"dashed\" | \"dotted\";\n\ntype AnalyticsChartDataLayerCommon = {\n id: string,\n kind: \"primary\" | \"compare\",\n label: string,\n visible: boolean,\n color: string,\n segmented: boolean,\n /** Per-day per-category values. Outer index is the day (matches the\n * chart data array index); inner index is the category (matches\n * `segmentSeries`). Rows should sum to `point.values[layer.id]`. */\n segments?: readonly (readonly number[])[],\n /** Breakdown category definitions ordered to match the inner index of\n * `segments`. */\n segmentSeries?: readonly AnalyticsChartSeries[],\n /** Absolute index into the full data array at which this layer's values\n * become \"in progress\" (incomplete and still changing). Points from this\n * index onward render with a dashed overlay so users don't panic at a\n * half-filled bucket. Applies to line and area rendering only. */\n inProgressFromIndex?: number | null,\n};\nexport type AnalyticsChartLineLayer = AnalyticsChartDataLayerCommon & {\n type: \"line\",\n strokeStyle: AnalyticsChartStrokeStyle,\n};\nexport type AnalyticsChartAreaLayer = AnalyticsChartDataLayerCommon & {\n type: \"area\",\n strokeStyle: AnalyticsChartStrokeStyle,\n fillOpacity: number,\n};\nexport type AnalyticsChartBarLayer = AnalyticsChartDataLayerCommon & {\n type: \"bar\",\n fillOpacity: number,\n};\n\nexport type AnalyticsChartDataLayer =\n | AnalyticsChartLineLayer\n | AnalyticsChartAreaLayer\n | AnalyticsChartBarLayer;\n\nexport type AnalyticsChartAnnotationsLayer = {\n id: string,\n kind: \"annotations\",\n label: string,\n visible: boolean,\n color: string,\n};\n\nexport type AnalyticsChartLayer =\n | AnalyticsChartDataLayer\n | AnalyticsChartAnnotationsLayer;\n\nexport type AnalyticsChartLayers = readonly AnalyticsChartLayer[];\n\nexport type AnalyticsChartTimeseriesState = {\n view: \"timeseries\",\n layers: AnalyticsChartLayers,\n /** Format applied to every x-axis value. Defaults to `datetime / short`. */\n xFormatKind: FormatKind,\n /** Format applied to every y-axis value. Defaults to `short`. */\n yFormatKind: FormatKind,\n showGrid: boolean,\n showXAxis: boolean,\n showYAxis: boolean,\n zoomRange: [number, number] | null,\n pinnedIndex: number | null,\n};\nexport type AnalyticsChartPieState = {\n view: \"pie\",\n layers: AnalyticsChartLayers,\n xFormatKind: FormatKind,\n yFormatKind: FormatKind,\n};\nexport type AnalyticsChartState =\n | AnalyticsChartTimeseriesState\n | AnalyticsChartPieState;\n\nexport type AnalyticsChartDelta = {\n pct: number | null,\n sign: \"up\" | \"down\" | \"flat\" | \"na\",\n};\n\n/** Grouped pie config — collapses the formerly-separate\n * `pieInnerRadius` / `pieOuterRadius` / `pieCompareInnerRadius` /\n * `pieCompareOuterRadius` / `pieContainerClassName` props into one object. */\nexport type AnalyticsChartPieProps = {\n innerRadius?: number,\n outerRadius?: number,\n compareInnerRadius?: number,\n compareOuterRadius?: number,\n className?: string,\n showDateRange?: boolean,\n};\n\nexport type AnalyticsChartSegmentRamp =\n | {\n kind: \"procedural\",\n /** HSL hue (0-360). */\n hue: number,\n /** HSL saturation percent (0-100). */\n sat: number,\n /** Lightness range `[start, end]` for the light theme (0-100). */\n shadeRangeLight: [number, number],\n /** Lightness range `[start, end]` for the dark theme (0-100). */\n shadeRangeDark: [number, number],\n }\n | {\n kind: \"explicit\",\n /** Concrete light-theme color list. Indexed by segment. */\n light: readonly string[],\n /** Concrete dark-theme color list. Indexed by segment. */\n dark: readonly string[],\n };\n\nexport type AnalyticsChartPalette = {\n /** Color ramp for the primary data layer (current period). */\n primary: AnalyticsChartSegmentRamp,\n /** Color ramp for the compare data layer (previous period). */\n compare: AnalyticsChartSegmentRamp,\n};\n"],"mappings":";;AAOA,SAAgB,WAAW,GAAU,IAAoB;CACvD,MAAM,IAAI,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/components/analytics-chart/types.ts"],"sourcesContent":["/** Time-series point. `values` is keyed by layer id. */\nexport type Point = {\n ts: number,\n values: Record<string, number>,\n};\n\n/** Missing or non-finite values become 0. */\nexport function pointValue(p: Point, id: string): number {\n const v = p.values[id];\n return typeof v === \"number\" && Number.isFinite(v) ? v : 0;\n}\n\n/** Sanitize a string into a valid CSS `<ident>` token.\n * Replaces characters not allowed in CSS identifiers (like `$`, spaces,\n * slashes, dots) with underscores. Used to build safe `var(--color-xxx)`\n * custom property names from arbitrary segment keys. */\nexport function cssIdent(raw: string): string {\n // Replace everything that isn't a letter, digit, hyphen, or underscore.\n // Prefix with `_` if the result starts with a digit (not valid as ident start).\n const cleaned = raw.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n return /^\\d/.test(cleaned) ? `_${cleaned}` : cleaned;\n}\n\nexport type Annotation = {\n index: number,\n label: string,\n description: string,\n};\n\n/** Breakdown category definition — `{ key, label }` tuple. */\nexport type AnalyticsChartSeries = {\n key: string,\n label: string,\n};\n\nexport type FormatKindType =\n | \"numeric\"\n | \"short\"\n | \"currency\"\n | \"duration\"\n | \"datetime\"\n | \"percent\";\n\nexport type FormatKindNumeric = {\n type: \"numeric\",\n /** Locale used for grouping and digit separators. Defaults to \"en-US\". */\n locale?: string,\n /** Fixed decimal places (0-4). Defaults to 0. */\n decimals?: number,\n};\nexport type FormatKindShort = {\n type: \"short\",\n /** Decimal places after the unit suffix (1.2K vs 1.20K). Defaults to 1. */\n precision?: number,\n locale?: string,\n};\nexport type FormatKindCurrency = {\n type: \"currency\",\n /** ISO 4217 code. Defaults to \"USD\". */\n currency?: string,\n /** Divisor applied before formatting — e.g. 100 for cents → dollars. Defaults to 1. */\n divisor?: number,\n locale?: string,\n};\nexport type FormatKindDuration = {\n type: \"duration\",\n /** Source unit of the input value. Defaults to \"s\". */\n unit?: \"ms\" | \"s\" | \"m\" | \"h\",\n /** Show the smallest unit even when zero. Defaults to false. */\n showZero?: boolean,\n};\nexport type FormatKindDatetime = {\n type: \"datetime\",\n /** Render style. Defaults to \"short\". */\n style?: \"short\" | \"long\" | \"iso\" | \"relative\",\n locale?: string,\n};\nexport type FormatKindPercent = {\n type: \"percent\",\n /** How to interpret the input value:\n * - \"fraction\" → 0..1 → multiply by 100 (default)\n * - \"basis\" → 0..10000 → divide by 100\n * - \"whole\" → 0..100 → no scaling\n */\n source?: \"fraction\" | \"basis\" | \"whole\",\n /** Decimal places. Defaults to 1. */\n decimals?: number,\n};\n\nexport type FormatKind =\n | FormatKindNumeric\n | FormatKindShort\n | FormatKindCurrency\n | FormatKindDuration\n | FormatKindDatetime\n | FormatKindPercent;\n\nexport type AnalyticsChartView = \"timeseries\" | \"pie\";\nexport type AnalyticsChartLayerType = \"line\" | \"area\" | \"bar\";\nexport type AnalyticsChartStrokeStyle = \"solid\" | \"dashed\" | \"dotted\";\n\ntype AnalyticsChartDataLayerCommon = {\n id: string,\n kind: \"primary\" | \"compare\",\n label: string,\n visible: boolean,\n color: string,\n segmented: boolean,\n /** Per-day per-category values. Outer index is the day (matches the\n * chart data array index); inner index is the category (matches\n * `segmentSeries`). Rows should sum to `point.values[layer.id]`. */\n segments?: readonly (readonly number[])[],\n /** Breakdown category definitions ordered to match the inner index of\n * `segments`. */\n segmentSeries?: readonly AnalyticsChartSeries[],\n /** Absolute index into the full data array at which this layer's values\n * become \"in progress\" (incomplete and still changing). Points from this\n * index onward render with a dashed overlay so users don't panic at a\n * half-filled bucket. Applies to line and area rendering only. */\n inProgressFromIndex?: number | null,\n};\nexport type AnalyticsChartLineLayer = AnalyticsChartDataLayerCommon & {\n type: \"line\",\n strokeStyle: AnalyticsChartStrokeStyle,\n};\nexport type AnalyticsChartAreaLayer = AnalyticsChartDataLayerCommon & {\n type: \"area\",\n strokeStyle: AnalyticsChartStrokeStyle,\n fillOpacity: number,\n};\nexport type AnalyticsChartBarLayer = AnalyticsChartDataLayerCommon & {\n type: \"bar\",\n fillOpacity: number,\n};\n\nexport type AnalyticsChartDataLayer =\n | AnalyticsChartLineLayer\n | AnalyticsChartAreaLayer\n | AnalyticsChartBarLayer;\n\nexport type AnalyticsChartAnnotationsLayer = {\n id: string,\n kind: \"annotations\",\n label: string,\n visible: boolean,\n color: string,\n};\n\nexport type AnalyticsChartLayer =\n | AnalyticsChartDataLayer\n | AnalyticsChartAnnotationsLayer;\n\nexport type AnalyticsChartLayers = readonly AnalyticsChartLayer[];\n\nexport type AnalyticsChartTimeseriesState = {\n view: \"timeseries\",\n layers: AnalyticsChartLayers,\n /** Format applied to every x-axis value. Defaults to `datetime / short`. */\n xFormatKind: FormatKind,\n /** Format applied to every y-axis value. Defaults to `short`. */\n yFormatKind: FormatKind,\n showGrid: boolean,\n showXAxis: boolean,\n showYAxis: boolean,\n zoomRange: [number, number] | null,\n pinnedIndex: number | null,\n};\nexport type AnalyticsChartPieState = {\n view: \"pie\",\n layers: AnalyticsChartLayers,\n xFormatKind: FormatKind,\n yFormatKind: FormatKind,\n};\nexport type AnalyticsChartState =\n | AnalyticsChartTimeseriesState\n | AnalyticsChartPieState;\n\nexport type AnalyticsChartDelta = {\n pct: number | null,\n sign: \"up\" | \"down\" | \"flat\" | \"na\",\n};\n\n/** Grouped pie config — collapses the formerly-separate\n * `pieInnerRadius` / `pieOuterRadius` / `pieCompareInnerRadius` /\n * `pieCompareOuterRadius` / `pieContainerClassName` props into one object. */\nexport type AnalyticsChartPieProps = {\n innerRadius?: number,\n outerRadius?: number,\n compareInnerRadius?: number,\n compareOuterRadius?: number,\n className?: string,\n showDateRange?: boolean,\n};\n\nexport type AnalyticsChartSegmentRamp =\n | {\n kind: \"procedural\",\n /** HSL hue (0-360). */\n hue: number,\n /** HSL saturation percent (0-100). */\n sat: number,\n /** Lightness range `[start, end]` for the light theme (0-100). */\n shadeRangeLight: [number, number],\n /** Lightness range `[start, end]` for the dark theme (0-100). */\n shadeRangeDark: [number, number],\n }\n | {\n kind: \"explicit\",\n /** Concrete light-theme color list. Indexed by segment. */\n light: readonly string[],\n /** Concrete dark-theme color list. Indexed by segment. */\n dark: readonly string[],\n };\n\nexport type AnalyticsChartPalette = {\n /** Color ramp for the primary data layer (current period). */\n primary: AnalyticsChartSegmentRamp,\n /** Color ramp for the compare data layer (previous period). */\n compare: AnalyticsChartSegmentRamp,\n};\n"],"mappings":";;AAOA,SAAgB,WAAW,GAAU,IAAoB;CACvD,MAAM,IAAI,EAAE,OAAO;CACnB,OAAO,OAAO,MAAM,YAAY,OAAO,SAAS,CAAC,IAAI,IAAI;AAC3D;;;;;AAMA,SAAgB,SAAS,KAAqB;CAG5C,MAAM,UAAU,IAAI,QAAQ,mBAAmB,GAAG;CAClD,OAAO,MAAM,KAAK,OAAO,IAAI,IAAI,YAAY;AAC/C"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
-
|
|
3
1
|
//#region src/components/badge.d.ts
|
|
4
2
|
type DesignBadgeColor = "blue" | "cyan" | "purple" | "green" | "orange" | "red";
|
|
5
3
|
type DesignBadgeSize = "sm" | "md";
|
|
@@ -34,7 +32,7 @@ declare function DesignBadge({
|
|
|
34
32
|
icon,
|
|
35
33
|
size,
|
|
36
34
|
contentMode
|
|
37
|
-
}: DesignBadgeProps):
|
|
35
|
+
}: DesignBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
38
36
|
//#endregion
|
|
39
37
|
export { DesignBadge, DesignBadgeColor, DesignBadgeContentMode, DesignBadgeProps, DesignBadgeSize };
|
|
40
38
|
//# sourceMappingURL=badge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.d.ts","names":[],"sources":["../../../src/components/badge.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"badge.d.ts","names":[],"sources":["../../../src/components/badge.tsx"],"mappings":";KAIY,gBAAA;AAAA,KACA,eAAA;;KAoBA,sBAAA;AAAA,KAEA,gBAAA;EACV,KAAA;EACA,KAAA,EAAO,gBAAA;EACP,IAAA,GAAO,KAAA,CAAM,WAAA;EACb,IAAA,GAAO,eAAA,EA1BkB;EA4BzB,WAAA,GAAc,sBAAA;AAAA;;;;AARkB;AAElC;;;;;;;;;;;;iBAiDgB,WAAA;EACd,KAAA;EACA,KAAA;EACA,IAAA;EACA,IAAA;EACA;AAAA,GACC,gBAAA,+BAAgB,GAAA,CAAA,OAAA"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
2
|
import { cn } from "@hexclave/ui";
|
|
4
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
-
|
|
6
4
|
//#region src/components/badge.tsx
|
|
7
|
-
const badgeStyles = new Map([
|
|
5
|
+
const badgeStyles = /* @__PURE__ */ new Map([
|
|
8
6
|
["blue", "text-blue-700 dark:text-blue-400 bg-blue-500/20 dark:bg-blue-500/10 ring-1 ring-blue-500/30 dark:ring-blue-500/20"],
|
|
9
7
|
["cyan", "text-cyan-700 dark:text-cyan-400 bg-cyan-500/20 dark:bg-cyan-500/10 ring-1 ring-cyan-500/30 dark:ring-cyan-500/20"],
|
|
10
8
|
["purple", "text-purple-700 dark:text-purple-400 bg-purple-500/20 dark:bg-purple-500/10 ring-1 ring-purple-500/30 dark:ring-purple-500/20"],
|
|
@@ -33,10 +31,7 @@ function getShowLabelShowIcon(contentMode, hasIcon) {
|
|
|
33
31
|
showLabel: false,
|
|
34
32
|
showIcon: true
|
|
35
33
|
};
|
|
36
|
-
default: {
|
|
37
|
-
const _exhaustive = contentMode;
|
|
38
|
-
throw new Error(`Unknown contentMode: ${String(_exhaustive)}`);
|
|
39
|
-
}
|
|
34
|
+
default: throw new Error(`Unknown contentMode: ${String(contentMode)}`);
|
|
40
35
|
}
|
|
41
36
|
}
|
|
42
37
|
/**
|
|
@@ -67,7 +62,7 @@ function DesignBadge({ label, color, icon, size = "md", contentMode = "both" })
|
|
|
67
62
|
children: [showIcon && Icon && /* @__PURE__ */ jsx(Icon, { className: "h-3 w-3" }), showLabel ? label : null]
|
|
68
63
|
});
|
|
69
64
|
}
|
|
70
|
-
|
|
71
65
|
//#endregion
|
|
72
66
|
export { DesignBadge };
|
|
67
|
+
|
|
73
68
|
//# sourceMappingURL=badge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.js","names":[],"sources":["../../../src/components/badge.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@hexclave/ui\";\n\nexport type DesignBadgeColor = \"blue\" | \"cyan\" | \"purple\" | \"green\" | \"orange\" | \"red\";\nexport type DesignBadgeSize = \"sm\" | \"md\";\n\nconst badgeStyles = new Map<DesignBadgeColor, string>([\n [\"blue\", \"text-blue-700 dark:text-blue-400 bg-blue-500/20 dark:bg-blue-500/10 ring-1 ring-blue-500/30 dark:ring-blue-500/20\"],\n [\"cyan\", \"text-cyan-700 dark:text-cyan-400 bg-cyan-500/20 dark:bg-cyan-500/10 ring-1 ring-cyan-500/30 dark:ring-cyan-500/20\"],\n [\"purple\", \"text-purple-700 dark:text-purple-400 bg-purple-500/20 dark:bg-purple-500/10 ring-1 ring-purple-500/30 dark:ring-purple-500/20\"],\n [\"green\", \"text-emerald-700 dark:text-emerald-400 bg-emerald-500/20 dark:bg-emerald-500/10 ring-1 ring-emerald-500/30 dark:ring-emerald-500/20\"],\n [\"orange\", \"text-amber-700 dark:text-amber-300 bg-amber-500/20 dark:bg-amber-500/10 ring-1 ring-amber-500/30 dark:ring-amber-500/20\"],\n [\"red\", \"text-red-700 dark:text-red-400 bg-red-500/20 dark:bg-red-500/10 ring-1 ring-red-500/30 dark:ring-red-500/20\"],\n]);\n\nfunction getMapValueOrThrow<TKey, TValue>(map: Map<TKey, TValue>, key: TKey, mapName: string) {\n const value = map.get(key);\n if (!value) {\n throw new Error(`Missing ${mapName} entry for key \"${String(key)}\"`);\n }\n return value;\n}\n\n/** At least one of showLabel or showIcon must be true. */\nexport type DesignBadgeContentMode = \"both\" | \"text\" | \"icon\";\n\nexport type DesignBadgeProps = {\n label: string,\n color: DesignBadgeColor,\n icon?: React.ElementType,\n size?: DesignBadgeSize,\n /** What to display: \"both\" (default), \"text\" (label only), or \"icon\" (icon only; requires icon prop). */\n contentMode?: DesignBadgeContentMode,\n};\n\nfunction getShowLabelShowIcon(\n contentMode: DesignBadgeContentMode,\n hasIcon: boolean,\n): { showLabel: boolean, showIcon: boolean } {\n switch (contentMode) {\n case \"both\": {\n return { showLabel: true, showIcon: hasIcon };\n }\n case \"text\": {\n return { showLabel: true, showIcon: false };\n }\n case \"icon\": {\n if (!hasIcon) {\n throw new Error(\"DesignBadge contentMode 'icon' requires the icon prop to be provided.\");\n }\n return { showLabel: false, showIcon: true };\n }\n default: {\n const _exhaustive: never = contentMode;\n throw new Error(`Unknown contentMode: ${String(_exhaustive)}`);\n }\n }\n}\n\n/**\n * Small pill used for status tags, roles, categories, and other short\n * labels. Not a variant-based component — pick a semantic `color` and\n * optionally pass an `icon` (as a component type, not a rendered node).\n *\n * ```tsx\n * <DesignBadge label=\"Verified\" color=\"green\" icon={CheckIcon} />\n * <DesignBadge label=\"Beta\" color=\"purple\" />\n * <DesignBadge label=\"Error\" color=\"red\" size=\"sm\" />\n * ```\n *\n * Notes:\n * - Props are `label` + `color`, NOT `variant` + children.\n * - `color` is one of: `\"blue\" | \"cyan\" | \"purple\" | \"green\" | \"orange\" | \"red\"`.\n * - `icon` is optional but, if set via `contentMode: \"icon\"`, is required.\n */\nexport function DesignBadge({\n label,\n color,\n icon,\n size = \"md\",\n contentMode = \"both\",\n}: DesignBadgeProps) {\n const Icon = icon;\n const { showLabel, showIcon } = getShowLabelShowIcon(contentMode, !!Icon);\n if (!showLabel && !showIcon) {\n throw new Error(\"DesignBadge must show at least label or icon.\");\n }\n const sizeClasses = size === \"sm\"\n ? \"px-2 py-0.5 text-[10px]\"\n : \"px-2.5 py-1 text-[11px]\";\n const colorClasses = getMapValueOrThrow(badgeStyles, color, \"badgeStyles\");\n\n return (\n <div\n className={cn(\n \"inline-flex max-w-full items-center gap-1.5 whitespace-nowrap rounded-full font-medium leading-none\",\n colorClasses,\n sizeClasses\n )}\n title={!showLabel ? label : undefined}\n aria-label={label}\n >\n {showIcon && Icon && <Icon className=\"h-3 w-3\" />}\n {showLabel ? label : null}\n </div>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"badge.js","names":["_exhaustive"],"sources":["../../../src/components/badge.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@hexclave/ui\";\n\nexport type DesignBadgeColor = \"blue\" | \"cyan\" | \"purple\" | \"green\" | \"orange\" | \"red\";\nexport type DesignBadgeSize = \"sm\" | \"md\";\n\nconst badgeStyles = new Map<DesignBadgeColor, string>([\n [\"blue\", \"text-blue-700 dark:text-blue-400 bg-blue-500/20 dark:bg-blue-500/10 ring-1 ring-blue-500/30 dark:ring-blue-500/20\"],\n [\"cyan\", \"text-cyan-700 dark:text-cyan-400 bg-cyan-500/20 dark:bg-cyan-500/10 ring-1 ring-cyan-500/30 dark:ring-cyan-500/20\"],\n [\"purple\", \"text-purple-700 dark:text-purple-400 bg-purple-500/20 dark:bg-purple-500/10 ring-1 ring-purple-500/30 dark:ring-purple-500/20\"],\n [\"green\", \"text-emerald-700 dark:text-emerald-400 bg-emerald-500/20 dark:bg-emerald-500/10 ring-1 ring-emerald-500/30 dark:ring-emerald-500/20\"],\n [\"orange\", \"text-amber-700 dark:text-amber-300 bg-amber-500/20 dark:bg-amber-500/10 ring-1 ring-amber-500/30 dark:ring-amber-500/20\"],\n [\"red\", \"text-red-700 dark:text-red-400 bg-red-500/20 dark:bg-red-500/10 ring-1 ring-red-500/30 dark:ring-red-500/20\"],\n]);\n\nfunction getMapValueOrThrow<TKey, TValue>(map: Map<TKey, TValue>, key: TKey, mapName: string) {\n const value = map.get(key);\n if (!value) {\n throw new Error(`Missing ${mapName} entry for key \"${String(key)}\"`);\n }\n return value;\n}\n\n/** At least one of showLabel or showIcon must be true. */\nexport type DesignBadgeContentMode = \"both\" | \"text\" | \"icon\";\n\nexport type DesignBadgeProps = {\n label: string,\n color: DesignBadgeColor,\n icon?: React.ElementType,\n size?: DesignBadgeSize,\n /** What to display: \"both\" (default), \"text\" (label only), or \"icon\" (icon only; requires icon prop). */\n contentMode?: DesignBadgeContentMode,\n};\n\nfunction getShowLabelShowIcon(\n contentMode: DesignBadgeContentMode,\n hasIcon: boolean,\n): { showLabel: boolean, showIcon: boolean } {\n switch (contentMode) {\n case \"both\": {\n return { showLabel: true, showIcon: hasIcon };\n }\n case \"text\": {\n return { showLabel: true, showIcon: false };\n }\n case \"icon\": {\n if (!hasIcon) {\n throw new Error(\"DesignBadge contentMode 'icon' requires the icon prop to be provided.\");\n }\n return { showLabel: false, showIcon: true };\n }\n default: {\n const _exhaustive: never = contentMode;\n throw new Error(`Unknown contentMode: ${String(_exhaustive)}`);\n }\n }\n}\n\n/**\n * Small pill used for status tags, roles, categories, and other short\n * labels. Not a variant-based component — pick a semantic `color` and\n * optionally pass an `icon` (as a component type, not a rendered node).\n *\n * ```tsx\n * <DesignBadge label=\"Verified\" color=\"green\" icon={CheckIcon} />\n * <DesignBadge label=\"Beta\" color=\"purple\" />\n * <DesignBadge label=\"Error\" color=\"red\" size=\"sm\" />\n * ```\n *\n * Notes:\n * - Props are `label` + `color`, NOT `variant` + children.\n * - `color` is one of: `\"blue\" | \"cyan\" | \"purple\" | \"green\" | \"orange\" | \"red\"`.\n * - `icon` is optional but, if set via `contentMode: \"icon\"`, is required.\n */\nexport function DesignBadge({\n label,\n color,\n icon,\n size = \"md\",\n contentMode = \"both\",\n}: DesignBadgeProps) {\n const Icon = icon;\n const { showLabel, showIcon } = getShowLabelShowIcon(contentMode, !!Icon);\n if (!showLabel && !showIcon) {\n throw new Error(\"DesignBadge must show at least label or icon.\");\n }\n const sizeClasses = size === \"sm\"\n ? \"px-2 py-0.5 text-[10px]\"\n : \"px-2.5 py-1 text-[11px]\";\n const colorClasses = getMapValueOrThrow(badgeStyles, color, \"badgeStyles\");\n\n return (\n <div\n className={cn(\n \"inline-flex max-w-full items-center gap-1.5 whitespace-nowrap rounded-full font-medium leading-none\",\n colorClasses,\n sizeClasses\n )}\n title={!showLabel ? label : undefined}\n aria-label={label}\n >\n {showIcon && Icon && <Icon className=\"h-3 w-3\" />}\n {showLabel ? label : null}\n </div>\n );\n}\n"],"mappings":";;;;AAOA,MAAM,8BAAc,IAAI,IAA8B;CACpD,CAAC,QAAQ,mHAAmH;CAC5H,CAAC,QAAQ,mHAAmH;CAC5H,CAAC,UAAU,+HAA+H;CAC1I,CAAC,SAAS,qIAAqI;CAC/I,CAAC,UAAU,yHAAyH;CACpI,CAAC,OAAO,6GAA6G;AACvH,CAAC;AAED,SAAS,mBAAiC,KAAwB,KAAW,SAAiB;CAC5F,MAAM,QAAQ,IAAI,IAAI,GAAG;CACzB,IAAI,CAAC,OACH,MAAM,IAAI,MAAM,WAAW,QAAQ,kBAAkB,OAAO,GAAG,EAAE,EAAE;CAErE,OAAO;AACT;AAcA,SAAS,qBACP,aACA,SAC2C;CAC3C,QAAQ,aAAR;EACE,KAAK,QACH,OAAO;GAAE,WAAW;GAAM,UAAU;EAAQ;EAE9C,KAAK,QACH,OAAO;GAAE,WAAW;GAAM,UAAU;EAAM;EAE5C,KAAK;GACH,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,uEAAuE;GAEzF,OAAO;IAAE,WAAW;IAAO,UAAU;GAAK;EAE5C,SAEE,MAAM,IAAI,MAAM,wBAAwB,OAAOA,WAAW,GAAG;CAEjE;AACF;;;;;;;;;;;;;;;;;AAkBA,SAAgB,YAAY,EAC1B,OACA,OACA,MACA,OAAO,MACP,cAAc,UACK;CACnB,MAAM,OAAO;CACb,MAAM,EAAE,WAAW,aAAa,qBAAqB,aAAa,CAAC,CAAC,IAAI;CACxE,IAAI,CAAC,aAAa,CAAC,UACjB,MAAM,IAAI,MAAM,+CAA+C;CAEjE,MAAM,cAAc,SAAS,OACzB,4BACA;CAGJ,OACE,qBAAC,OAAD;EACE,WAAW,GACT,uGALe,mBAAmB,aAAa,OAAO,aAM3C,GACX,WACF;EACA,OAAO,CAAC,YAAY,QAAQ,KAAA;EAC5B,cAAY;YAPd,CASG,YAAY,QAAQ,oBAAC,MAAD,EAAM,WAAU,UAAW,CAAA,GAC/C,YAAY,QAAQ,IAClB;;AAET"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { VariantProps } from "class-variance-authority";
|
|
2
2
|
import React from "react";
|
|
3
|
-
import * as class_variance_authority_types0 from "class-variance-authority/types";
|
|
4
3
|
|
|
5
4
|
//#region src/components/button.d.ts
|
|
6
5
|
declare const designButtonVariants: (props?: ({
|
|
7
|
-
variant?: "
|
|
8
|
-
size?: "
|
|
9
|
-
} &
|
|
6
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | "plain" | null | undefined;
|
|
7
|
+
size?: "default" | "sm" | "lg" | "icon" | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
10
9
|
type DesignOriginalButtonProps = {
|
|
11
10
|
asChild?: boolean;
|
|
12
11
|
} & React.ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<typeof designButtonVariants>;
|
|
@@ -36,9 +35,9 @@ declare const DesignButton: React.FC<{
|
|
|
36
35
|
} & {
|
|
37
36
|
asChild?: boolean;
|
|
38
37
|
} & React.ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<(props?: ({
|
|
39
|
-
variant?: "
|
|
40
|
-
size?: "
|
|
41
|
-
} &
|
|
38
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | "plain" | null | undefined;
|
|
39
|
+
size?: "default" | "sm" | "lg" | "icon" | null | undefined;
|
|
40
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
|
|
42
41
|
ref?: React.Ref<HTMLButtonElement> | undefined;
|
|
43
42
|
}>;
|
|
44
43
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.d.ts","names":[],"sources":["../../../src/components/button.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"button.d.ts","names":[],"sources":["../../../src/components/button.tsx"],"mappings":";;;;cASM,oBAAA,GAAoB,KAAA;;;;KA+Bd,yBAAA;EACV,OAAA;AAAA,IACE,KAAA,CAAM,oBAAA,CAAqB,iBAAA,IAAqB,YAAA,QAAoB,oBAAA;AAAA,KAgB5D,iBAAA;EACV,OAAA,IAAW,CAAA,EAAG,KAAA,CAAM,UAAA,CAAW,iBAAA,aAA8B,OAAA;EAC7D,OAAA;EACA,YAAA;AAAA,IACE,yBAAA;AAtBJ;;;;;;;;;;;;;;AAAA,cAsCa,YAAA,EAAY,KAAA,CAAA,EAAA;aAnBZ,CAAA,EAAG,KAAA,CAAM,UAAA,CAAW,iBAAA,aAA8B,OAAA"}
|
|
@@ -3,10 +3,9 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { Slot, Slottable } from "@radix-ui/react-slot";
|
|
4
4
|
import { forwardRefIfNeeded } from "@hexclave/shared/dist/utils/react";
|
|
5
5
|
import { cva } from "class-variance-authority";
|
|
6
|
-
import
|
|
6
|
+
import "react";
|
|
7
7
|
import { useAsyncCallback } from "@hexclave/shared/dist/hooks/use-async-callback";
|
|
8
8
|
import { runAsynchronouslyWithAlert } from "@hexclave/shared/dist/utils/promises";
|
|
9
|
-
|
|
10
9
|
//#region src/components/button.tsx
|
|
11
10
|
const designButtonVariants = cva("stack-scope inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50", {
|
|
12
11
|
variants: {
|
|
@@ -73,7 +72,7 @@ const DesignButton = forwardRefIfNeeded(({ onClick, loading: loadingProp, loadin
|
|
|
73
72
|
});
|
|
74
73
|
});
|
|
75
74
|
DesignButton.displayName = "DesignButton";
|
|
76
|
-
|
|
77
75
|
//#endregion
|
|
78
76
|
export { DesignButton };
|
|
77
|
+
|
|
79
78
|
//# sourceMappingURL=button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.js","names":[],"sources":["../../../src/components/button.tsx"],"sourcesContent":["import { Slot, Slottable } from \"@radix-ui/react-slot\";\nimport { forwardRefIfNeeded } from \"@hexclave/shared/dist/utils/react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport React from \"react\";\n\nimport { cn, Spinner } from \"@hexclave/ui\";\nimport { useAsyncCallback } from \"@hexclave/shared/dist/hooks/use-async-callback\";\nimport { runAsynchronouslyWithAlert } from \"@hexclave/shared/dist/utils/promises\";\n\nconst designButtonVariants = cva(\n \"stack-scope inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-white/85 dark:bg-background hover:bg-zinc-50 dark:hover:bg-accent dark:hover:text-accent-foreground\",\n secondary:\n \"bg-white dark:bg-secondary text-secondary-foreground hover:bg-zinc-50 dark:hover:bg-secondary/80\",\n ghost: \"hover:bg-zinc-100 dark:hover:bg-accent dark:hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n plain: \"\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport type DesignOriginalButtonProps = {\n asChild?: boolean,\n} & React.ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<typeof designButtonVariants>;\n\nconst DesignOriginalButton = forwardRefIfNeeded<HTMLButtonElement, DesignOriginalButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(designButtonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n }\n);\nDesignOriginalButton.displayName = \"DesignButton\";\n\nexport type DesignButtonProps = {\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void | Promise<void>,\n loading?: boolean,\n loadingStyle?: \"spinner\" | \"disabled\",\n} & DesignOriginalButtonProps;\n\n/**\n * Standard button. Variants: `default | destructive | outline | secondary | ghost | link | plain`.\n * Sizes: `default | sm | lg | icon`.\n *\n * ```tsx\n * <DesignButton variant=\"default\" onClick={handleSave}>Save</DesignButton>\n * <DesignButton variant=\"outline\" size=\"sm\" onClick={handleCancel}>Cancel</DesignButton>\n * <DesignButton variant=\"ghost\" size=\"icon\"><PlusIcon className=\"h-4 w-4\" /></DesignButton>\n * ```\n *\n * Pass an async `onClick` and the button will automatically show a spinner\n * while the promise is pending (set `loadingStyle=\"disabled\"` if you prefer\n * a simple disabled state instead).\n */\nexport const DesignButton = forwardRefIfNeeded<HTMLButtonElement, DesignButtonProps>(\n ({ onClick, loading: loadingProp, loadingStyle = \"spinner\", children, size, ...props }, ref) => {\n const [handleClick, isLoading] = useAsyncCallback(async (e: React.MouseEvent<HTMLButtonElement>) => {\n await onClick?.(e);\n }, [onClick]);\n\n const loading = loadingProp || isLoading;\n\n return (\n <DesignOriginalButton\n {...props}\n ref={ref}\n disabled={props.disabled || loading}\n onClick={(e) => runAsynchronouslyWithAlert(handleClick(e))}\n size={size}\n className={cn(\"relative\", loading && \"[&>:not(.stack-button-do-not-hide-when-siblings-are)]:invisible\", props.className)}\n >\n {loadingStyle === \"spinner\" && <Spinner className={cn(\"absolute inset-0 flex items-center justify-center stack-button-do-not-hide-when-siblings-are\", !loading && \"invisible\")} />}\n <Slottable>\n {typeof children === \"string\" ? <span>{children}</span> : children}\n </Slottable>\n </DesignOriginalButton>\n );\n }\n);\nDesignButton.displayName = \"DesignButton\";\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"button.js","names":[],"sources":["../../../src/components/button.tsx"],"sourcesContent":["import { Slot, Slottable } from \"@radix-ui/react-slot\";\nimport { forwardRefIfNeeded } from \"@hexclave/shared/dist/utils/react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport React from \"react\";\n\nimport { cn, Spinner } from \"@hexclave/ui\";\nimport { useAsyncCallback } from \"@hexclave/shared/dist/hooks/use-async-callback\";\nimport { runAsynchronouslyWithAlert } from \"@hexclave/shared/dist/utils/promises\";\n\nconst designButtonVariants = cva(\n \"stack-scope inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-white/85 dark:bg-background hover:bg-zinc-50 dark:hover:bg-accent dark:hover:text-accent-foreground\",\n secondary:\n \"bg-white dark:bg-secondary text-secondary-foreground hover:bg-zinc-50 dark:hover:bg-secondary/80\",\n ghost: \"hover:bg-zinc-100 dark:hover:bg-accent dark:hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n plain: \"\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport type DesignOriginalButtonProps = {\n asChild?: boolean,\n} & React.ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<typeof designButtonVariants>;\n\nconst DesignOriginalButton = forwardRefIfNeeded<HTMLButtonElement, DesignOriginalButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(designButtonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n }\n);\nDesignOriginalButton.displayName = \"DesignButton\";\n\nexport type DesignButtonProps = {\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void | Promise<void>,\n loading?: boolean,\n loadingStyle?: \"spinner\" | \"disabled\",\n} & DesignOriginalButtonProps;\n\n/**\n * Standard button. Variants: `default | destructive | outline | secondary | ghost | link | plain`.\n * Sizes: `default | sm | lg | icon`.\n *\n * ```tsx\n * <DesignButton variant=\"default\" onClick={handleSave}>Save</DesignButton>\n * <DesignButton variant=\"outline\" size=\"sm\" onClick={handleCancel}>Cancel</DesignButton>\n * <DesignButton variant=\"ghost\" size=\"icon\"><PlusIcon className=\"h-4 w-4\" /></DesignButton>\n * ```\n *\n * Pass an async `onClick` and the button will automatically show a spinner\n * while the promise is pending (set `loadingStyle=\"disabled\"` if you prefer\n * a simple disabled state instead).\n */\nexport const DesignButton = forwardRefIfNeeded<HTMLButtonElement, DesignButtonProps>(\n ({ onClick, loading: loadingProp, loadingStyle = \"spinner\", children, size, ...props }, ref) => {\n const [handleClick, isLoading] = useAsyncCallback(async (e: React.MouseEvent<HTMLButtonElement>) => {\n await onClick?.(e);\n }, [onClick]);\n\n const loading = loadingProp || isLoading;\n\n return (\n <DesignOriginalButton\n {...props}\n ref={ref}\n disabled={props.disabled || loading}\n onClick={(e) => runAsynchronouslyWithAlert(handleClick(e))}\n size={size}\n className={cn(\"relative\", loading && \"[&>:not(.stack-button-do-not-hide-when-siblings-are)]:invisible\", props.className)}\n >\n {loadingStyle === \"spinner\" && <Spinner className={cn(\"absolute inset-0 flex items-center justify-center stack-button-do-not-hide-when-siblings-are\", !loading && \"invisible\")} />}\n <Slottable>\n {typeof children === \"string\" ? <span>{children}</span> : children}\n </Slottable>\n </DesignOriginalButton>\n );\n }\n);\nDesignButton.displayName = \"DesignButton\";\n"],"mappings":";;;;;;;;;AASA,MAAM,uBAAuB,IAC3B,iOACA;CACE,UAAU;EACR,SAAS;GACP,SACE;GACF,aACE;GACF,SACE;GACF,WACE;GACF,OAAO;GACP,MAAM;GACN,OAAO;EACT;EACA,MAAM;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,MAAM;EACR;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CACF;AAMA,MAAM,uBAAuB,oBAC1B,EAAE,WAAW,SAAS,MAAM,UAAU,OAAO,GAAG,SAAS,QAAQ;CAEhE,OACE,oBAFW,UAAU,OAAO,UAE5B;EACE,WAAW,GAAG,qBAAqB;GAAE;GAAS;GAAM;EAAU,CAAC,CAAC;EAC3D;EACL,GAAI;CACL,CAAA;AAEL,CACF;AACA,qBAAqB,cAAc;;;;;;;;;;;;;;;AAsBnC,MAAa,eAAe,oBACzB,EAAE,SAAS,SAAS,aAAa,eAAe,WAAW,UAAU,MAAM,GAAG,SAAS,QAAQ;CAC9F,MAAM,CAAC,aAAa,aAAa,iBAAiB,OAAO,MAA2C;EAClG,MAAM,UAAU,CAAC;CACnB,GAAG,CAAC,OAAO,CAAC;CAEZ,MAAM,UAAU,eAAe;CAE/B,OACE,qBAAC,sBAAD;EACE,GAAI;EACC;EACL,UAAU,MAAM,YAAY;EAC5B,UAAU,MAAM,2BAA2B,YAAY,CAAC,CAAC;EACnD;EACN,WAAW,GAAG,YAAY,WAAW,mEAAmE,MAAM,SAAS;YANzH,CAQG,iBAAiB,aAAa,oBAAC,SAAD,EAAS,WAAW,GAAG,gGAAgG,CAAC,WAAW,WAAW,EAAI,CAAA,GACjL,oBAAC,WAAD,EAAA,UACG,OAAO,aAAa,WAAW,oBAAC,QAAD,EAAO,SAAe,CAAA,IAAI,SACjD,CAAA,CACS;;AAE1B,CACF;AACA,aAAa,cAAc"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Card } from "@hexclave/ui";
|
|
2
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
2
|
import React from "react";
|
|
4
3
|
|
|
5
4
|
//#region src/components/card.d.ts
|
|
@@ -72,7 +71,7 @@ declare function DesignCard({
|
|
|
72
71
|
className,
|
|
73
72
|
contentClassName,
|
|
74
73
|
...props
|
|
75
|
-
}: DesignCardProps):
|
|
74
|
+
}: DesignCardProps): import("react/jsx-runtime").JSX.Element;
|
|
76
75
|
type DesignCardTintProps = {
|
|
77
76
|
gradient: DesignCardGradient;
|
|
78
77
|
} & React.ComponentProps<"div">;
|
|
@@ -81,7 +80,7 @@ declare function DesignCardTint({
|
|
|
81
80
|
className,
|
|
82
81
|
children,
|
|
83
82
|
...props
|
|
84
|
-
}: DesignCardTintProps):
|
|
83
|
+
}: DesignCardTintProps): import("react/jsx-runtime").JSX.Element;
|
|
85
84
|
//#endregion
|
|
86
85
|
export { DesignCard, DesignCardProps, DesignCardTint, DesignCardTintProps, useGlassmorphicDefault, useInsideDesignCard };
|
|
87
86
|
//# sourceMappingURL=card.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.d.ts","names":[],"sources":["../../../src/components/card.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"card.d.ts","names":[],"sources":["../../../src/components/card.tsx"],"mappings":";;;;;;AAiBA;;iBAAgB,mBAAA;;AAAmB;AASnC;;;iBAAgB,sBAAA,CAAuB,QAA6B;AAAA,KAK/D,kBAAA;AAAA,KA6BA,mBAAA;EACH,YAAA;EACA,QAAA,GAAW,kBAAA;EACX,gBAAA;AAAA,IACE,IAAA,CAAK,KAAA,CAAM,cAAA,QAAsB,IAAA;AAAA,KAEhC,cAAA;EACH,KAAA,EAAO,KAAA,CAAM,SAAA;EACb,QAAA,GAAW,KAAA,CAAM,SAAA;EACjB,IAAA,EAAM,KAAA,CAAM,WAAA;EACZ,OAAA,GAAU,KAAA,CAAM,SAAA;AAAA;AAAA,KAGb,iBAAA;EACH,KAAA;EACA,QAAA;EACA,IAAA;EACA,OAAA;AAAA;AAAA,KAGU,eAAA,GAAkB,mBAAA,IAAuB,cAAA,GAAiB,iBAAA;;;;;;AAhB7B;AAAA;;;;;;;;;;;;;;;;;;;;;;iBA8CzB,UAAA;EACd,KAAA;EACA,QAAA;EACA,IAAA,EAAM,IAAA;EACN,OAAA;EACA,YAAA,EAAc,gBAAA;EACd,QAAA;EACA,QAAA;EACA,SAAA;EACA,gBAAA;EAAA,GACG;AAAA,GACF,eAAA,+BAAe,GAAA,CAAA,OAAA;AAAA,KA2GN,mBAAA;EACV,QAAA,EAAU,kBAAA;AAAA,IACR,KAAA,CAAM,cAAc;AAAA,iBAER,cAAA;EACd,QAAA;EACA,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,mBAAA,+BAAmB,GAAA,CAAA,OAAA"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
2
|
import { Card, cn } from "@hexclave/ui";
|
|
4
3
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
4
|
import React from "react";
|
|
6
|
-
|
|
7
5
|
//#region src/components/card.tsx
|
|
8
6
|
const DesignCardNestingContext = React.createContext(false);
|
|
9
7
|
/**
|
|
@@ -22,7 +20,7 @@ function useGlassmorphicDefault(explicit) {
|
|
|
22
20
|
const insideCard = useInsideDesignCard();
|
|
23
21
|
return explicit ?? insideCard;
|
|
24
22
|
}
|
|
25
|
-
const hoverTintClasses = new Map([
|
|
23
|
+
const hoverTintClasses = /* @__PURE__ */ new Map([
|
|
26
24
|
["blue", "group-hover:bg-blue-500/[0.03]"],
|
|
27
25
|
["purple", "group-hover:bg-purple-500/[0.03]"],
|
|
28
26
|
["green", "group-hover:bg-emerald-500/[0.03]"],
|
|
@@ -30,7 +28,7 @@ const hoverTintClasses = new Map([
|
|
|
30
28
|
["default", "group-hover:bg-slate-500/[0.02]"],
|
|
31
29
|
["cyan", "group-hover:bg-cyan-500/[0.03]"]
|
|
32
30
|
]);
|
|
33
|
-
const demoTintClasses = new Map([
|
|
31
|
+
const demoTintClasses = /* @__PURE__ */ new Map([
|
|
34
32
|
["blue", "group-hover/tint:bg-blue-500/[0.02]"],
|
|
35
33
|
["purple", "group-hover/tint:bg-purple-500/[0.02]"],
|
|
36
34
|
["green", "group-hover/tint:bg-emerald-500/[0.02]"],
|
|
@@ -149,7 +147,7 @@ function DesignCardTint({ gradient, className, children, ...props }) {
|
|
|
149
147
|
]
|
|
150
148
|
});
|
|
151
149
|
}
|
|
152
|
-
|
|
153
150
|
//#endregion
|
|
154
151
|
export { DesignCard, DesignCardTint, useGlassmorphicDefault, useInsideDesignCard };
|
|
152
|
+
|
|
155
153
|
//# sourceMappingURL=card.js.map
|