@hexclave/dashboard-ui-components 1.0.41 → 1.0.43
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 +4 -7
- 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 +3 -5
- 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 +6 -8
- 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 +5 -7
- 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 +8 -10
- 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 +247 -258
- package/dist/dashboard-ui-components.global.js.map +3 -3
- 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 +3 -5
- 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 +2 -3
- 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 +2 -4
- 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 +2 -4
- 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 +6 -8
- 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/src/components/analytics-chart/analytics-chart.tsx +2 -3
- package/src/components/analytics-chart/default-analytics-chart-tooltip.tsx +1 -1
- package/src/components/chart-tooltip.tsx +1 -1
- package/src/components/data-grid/data-grid-toolbar.tsx +1 -1
- package/src/components/data-grid/data-grid.tsx +2 -2
- 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
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { w as DataGridProps } from "./types-1-eOd1JF.js";
|
|
2
|
+
|
|
3
|
+
//#region src/components/data-grid/data-grid.d.ts
|
|
4
|
+
declare function isDataGridInteractiveRowClickTarget(target: EventTarget | null): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Interactive table built on TanStack Table v8. Sorting, column sizing,
|
|
7
|
+
* visibility, ordering, and pinning are owned by the table instance; we
|
|
8
|
+
* layer virtualization, sticky toolbar/header/footer, infinite scroll,
|
|
9
|
+
* quick search, CSV export, and date-format toggling on top.
|
|
10
|
+
*
|
|
11
|
+
* The grid is display-only — it does not fetch or page data itself. Pair
|
|
12
|
+
* with `useDataSource` for client- or server-side data and pass the
|
|
13
|
+
* already-processed slice through `rows`.
|
|
14
|
+
*
|
|
15
|
+
* ```tsx
|
|
16
|
+
* const columns = useMemo(() => [...], []);
|
|
17
|
+
* const [gridState, setGridState] = useState(() => createDefaultDataGridState(columns));
|
|
18
|
+
* const gridData = useDataSource({
|
|
19
|
+
* data: users, columns, getRowId: (r) => r.id,
|
|
20
|
+
* sorting: gridState.sorting,
|
|
21
|
+
* quickSearch: gridState.quickSearch,
|
|
22
|
+
* pagination: gridState.pagination,
|
|
23
|
+
* paginationMode: "client",
|
|
24
|
+
* });
|
|
25
|
+
*
|
|
26
|
+
* <DataGrid
|
|
27
|
+
* columns={columns}
|
|
28
|
+
* rows={gridData.rows}
|
|
29
|
+
* getRowId={(r) => r.id}
|
|
30
|
+
* totalRowCount={gridData.totalRowCount}
|
|
31
|
+
* isLoading={gridData.isLoading}
|
|
32
|
+
* state={gridState}
|
|
33
|
+
* onChange={setGridState}
|
|
34
|
+
* />
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* Iron rules:
|
|
38
|
+
* - `rows` is always `gridData.rows`, never your raw array.
|
|
39
|
+
* - Columns must be stable (define outside the component or wrap in `useMemo`).
|
|
40
|
+
* - Initialize state with `createDefaultDataGridState(columns)`.
|
|
41
|
+
* - `renderCell` must be a pure function — no React hooks inside.
|
|
42
|
+
*/
|
|
43
|
+
declare function DataGrid<TRow>(props: DataGridProps<TRow>): import("react/jsx-runtime").JSX.Element;
|
|
44
|
+
//#endregion
|
|
45
|
+
export { isDataGridInteractiveRowClickTarget as n, DataGrid as t };
|
|
46
|
+
//# sourceMappingURL=data-grid-AJi1TNDa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-grid-AJi1TNDa.d.ts","names":[],"sources":["../src/components/data-grid/data-grid.tsx"],"mappings":";;;iBAoEgB,mCAAA,CAAoC,MAA0B,EAAlB,WAAW;;AAAvE;;;;AAA8E;AAqhB9E;;;;;;;;;;;AAAyD;;;;;;;;;;;;;;;;;;;;;iBAAzC,QAAA,OAAe,KAAA,EAAO,aAAa,CAAC,IAAA,gCAAK,GAAA,CAAA,OAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { i as DataGridColumnDef } from "./types-1-eOd1JF.js";
|
|
2
|
+
|
|
3
|
+
//#region src/components/data-grid/data-grid-sizing.d.ts
|
|
4
|
+
declare const DEFAULT_MAX_COL_WIDTH = 800;
|
|
5
|
+
declare const DEFAULT_COL_WIDTH = 150;
|
|
6
|
+
/** Effective minimum column width. When `col.minWidth` is unset, derive
|
|
7
|
+
* one from the header label so it never gets clipped during resize. */
|
|
8
|
+
declare function getEffectiveMinWidth<TRow>(col: DataGridColumnDef<TRow>): number;
|
|
9
|
+
declare function getEffectiveMaxWidth<TRow>(col: DataGridColumnDef<TRow>): number;
|
|
10
|
+
declare function clampColumnWidth<TRow>(col: DataGridColumnDef<TRow>, width: number): number;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { getEffectiveMinWidth as a, getEffectiveMaxWidth as i, DEFAULT_MAX_COL_WIDTH as n, clampColumnWidth as r, DEFAULT_COL_WIDTH as t };
|
|
13
|
+
//# sourceMappingURL=data-grid-sizing-S1ixcZKo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-grid-sizing-S1ixcZKo.d.ts","names":[],"sources":["../src/components/data-grid/data-grid-sizing.ts"],"mappings":";;;cAIa,qBAAA;AAAA,cACA,iBAAA;AADb;;AAAA,iBA+BgB,oBAAA,OAA2B,GAAA,EAAK,iBAAiB,CAAC,IAAA;AAAA,iBASlD,oBAAA,OAA2B,GAAA,EAAK,iBAAiB,CAAC,IAAA;AAAA,iBAIlD,gBAAA,OAAuB,GAAA,EAAK,iBAAiB,CAAC,IAAA,GAAO,KAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { M as DataGridToolbarContext } from "./types-1-eOd1JF.js";
|
|
2
|
+
import React from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/components/data-grid/data-grid-toolbar.d.ts
|
|
5
|
+
declare function DataGridToolbar<TRow>({
|
|
6
|
+
ctx,
|
|
7
|
+
extra,
|
|
8
|
+
extraLeading,
|
|
9
|
+
hideQuickSearch
|
|
10
|
+
}: {
|
|
11
|
+
ctx: DataGridToolbarContext<TRow>;
|
|
12
|
+
/** Extra content rendered inside the toolbar row, to the left of the
|
|
13
|
+
* built-in columns / export actions. Use this to add table-specific
|
|
14
|
+
* affordances (refresh, custom toggles, row counts) without giving up
|
|
15
|
+
* the default actions. */
|
|
16
|
+
extra?: React.ReactNode;
|
|
17
|
+
/** Extra content rendered at the START of the toolbar row — occupies
|
|
18
|
+
* the same position as the built-in quick search (after it, if the
|
|
19
|
+
* quick search is visible). Use this together with `hideQuickSearch`
|
|
20
|
+
* to fully replace the quick search with a custom input, e.g. an
|
|
21
|
+
* AI-powered search bar. */
|
|
22
|
+
extraLeading?: React.ReactNode;
|
|
23
|
+
/** Whether to hide the built-in quick-search input. When `true`,
|
|
24
|
+
* callers are expected to provide their own search UI via
|
|
25
|
+
* `extraLeading`. */
|
|
26
|
+
hideQuickSearch?: boolean;
|
|
27
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
//#endregion
|
|
29
|
+
export { DataGridToolbar as t };
|
|
30
|
+
//# sourceMappingURL=data-grid-toolbar-BGSNGDpT.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-grid-toolbar-BGSNGDpT.d.ts","names":[],"sources":["../src/components/data-grid/data-grid-toolbar.tsx"],"mappings":";;;;iBA6QgB,eAAA;EACd,GAAA;EACA,KAAA;EACA,YAAA;EACA;AAAA;EAEA,GAAA,EAAK,sBAAA,CAAuB,IAAA;EANd;;;;EAWd,KAAA,GAAQ,KAAA,CAAM,SAAA;EARd;;;;;EAcA,YAAA,GAAe,KAAA,CAAM,SAAA;EAAS;;;EAI9B,eAAA;AAAA,gCACD,GAAA,CAAA,OAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { n as AnalyticsChartStrings } from "./strings-D-t58Uol.js";
|
|
2
|
+
import { O as Point, a as AnalyticsChartDelta } from "./types-NyzRTEfi.js";
|
|
3
|
+
|
|
4
|
+
//#region src/components/analytics-chart/default-analytics-chart-tooltip.d.ts
|
|
5
|
+
/** Trend pill — small rounded badge with an up/down/flat arrow, a signed
|
|
6
|
+
* percentage, and an optional trailing label. Shared between the default
|
|
7
|
+
* tooltip, the pie view, and the demo panels (which re-export it). */
|
|
8
|
+
declare function TrendPill({
|
|
9
|
+
delta,
|
|
10
|
+
label,
|
|
11
|
+
size
|
|
12
|
+
}: {
|
|
13
|
+
delta: AnalyticsChartDelta;
|
|
14
|
+
label?: string;
|
|
15
|
+
size?: "sm" | "md";
|
|
16
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
type AnalyticsChartTooltipSegmentRow = {
|
|
18
|
+
key: string;
|
|
19
|
+
label: string;
|
|
20
|
+
value: number; /** Light-theme color for the dot / swatch. */
|
|
21
|
+
color: string; /** Dark-theme color for the dot / swatch. */
|
|
22
|
+
colorDark: string;
|
|
23
|
+
};
|
|
24
|
+
type AnalyticsChartTooltipLayerView = {
|
|
25
|
+
/** Stable layer id (e.g. `"signups"`, `"previous"`). */id: string; /** Consumer-provided layer label. */
|
|
26
|
+
label: string; /** Resolved layer color (light theme). */
|
|
27
|
+
color: string; /** Resolved layer color (dark theme). */
|
|
28
|
+
colorDark: string;
|
|
29
|
+
/** Flat total for this layer at the hovered index. Populated regardless
|
|
30
|
+
* of segmentation so consumers can render the same number in either mode. */
|
|
31
|
+
total: number; /** True iff this layer is rendered as a stacked breakdown. */
|
|
32
|
+
segmented: boolean;
|
|
33
|
+
/** Per-segment rows — empty when `segmented === false`. Order matches
|
|
34
|
+
* `segmentSeries`. */
|
|
35
|
+
segments: AnalyticsChartTooltipSegmentRow[];
|
|
36
|
+
};
|
|
37
|
+
type AnalyticsChartTooltipContext = {
|
|
38
|
+
/** Index into the visible window. */activeIndex: number; /** Raw point at `activeIndex` — convenient for `.ts` access. */
|
|
39
|
+
point: Point; /** True when the tooltip is pinned (via click) and stable under hover. */
|
|
40
|
+
isPinned: boolean; /** Primary layer view or null when the primary layer is hidden. */
|
|
41
|
+
primary: AnalyticsChartTooltipLayerView | null; /** Compare layer view or null when the compare layer is hidden. */
|
|
42
|
+
compare: AnalyticsChartTooltipLayerView | null;
|
|
43
|
+
/** Flat-mode delta between primary and compare totals. Null when either
|
|
44
|
+
* side is hidden. Consumers should feed this into their trend pill. */
|
|
45
|
+
delta: AnalyticsChartDelta | null; /** Pre-bound value formatter for y-axis values. */
|
|
46
|
+
formatValue: (v: number) => string; /** Pre-bound formatter for x-axis values. */
|
|
47
|
+
formatDate: (ts: number) => string; /** Resolved strings — already merged with defaults. */
|
|
48
|
+
strings: AnalyticsChartStrings;
|
|
49
|
+
};
|
|
50
|
+
type DefaultAnalyticsChartTooltipProps = {
|
|
51
|
+
ctx: AnalyticsChartTooltipContext;
|
|
52
|
+
};
|
|
53
|
+
/** The default tooltip body. The tooltip is rendered as an
|
|
54
|
+
* absolutely-positioned sibling of `<ChartContainer>`, which means it sits
|
|
55
|
+
* OUTSIDE the `[data-chart=…]` subtree that scopes shadcn's `--color-${key}`
|
|
56
|
+
* CSS variables. We therefore cannot reference those variables for segment
|
|
57
|
+
* swatches — instead, every swatch uses a single span with `--c-l`/`--c-d`
|
|
58
|
+
* custom properties + Tailwind arbitrary variants so one DOM element covers
|
|
59
|
+
* both themes. */
|
|
60
|
+
declare function DefaultAnalyticsChartTooltip({
|
|
61
|
+
ctx
|
|
62
|
+
}: DefaultAnalyticsChartTooltipProps): import("react/jsx-runtime").JSX.Element;
|
|
63
|
+
//#endregion
|
|
64
|
+
export { DefaultAnalyticsChartTooltipProps as a, DefaultAnalyticsChartTooltip as i, AnalyticsChartTooltipLayerView as n, TrendPill as o, AnalyticsChartTooltipSegmentRow as r, AnalyticsChartTooltipContext as t };
|
|
65
|
+
//# sourceMappingURL=default-analytics-chart-tooltip-PrLoMaC1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-analytics-chart-tooltip-PrLoMaC1.d.ts","names":[],"sources":["../src/components/analytics-chart/default-analytics-chart-tooltip.tsx"],"mappings":";;;;;;AAeA;iBAAgB,SAAA;EACd,KAAA;EACA,KAAA;EACA;AAAA;EAEA,KAAA,EAAO,mBAAA;EACP,KAAA;EACA,IAAA;AAAA,gCACD,GAAA,CAAA,OAAA;AAAA,KAqBW,+BAAA;EACV,GAAA;EACA,KAAA;EACA,KAAA,UA/BA;EAiCA,KAAA,UAhCA;EAkCA,SAAA;AAAA;AAAA,KAGU,8BAAA;EAlCH,wDAoCP,EAAA,UAlCA;EAoCA,KAAA,UAnCD;EAqCC,KAAA,UArCD;EAuCC,SAAA;EAlByC;;EAqBzC,KAAA,UApBA;EAsBA,SAAA;EApBA;;EAuBA,QAAA,EAAU,+BAA+B;AAAA;AAAA,KAG/B,4BAAA;EAnBA,qCAqBV,WAAA;EAEA,KAAA,EAAO,KAAA,EArBP;EAuBA,QAAA,WAnBA;EAqBA,OAAA,EAAS,8BAAA,SAhBT;EAkBA,OAAA,EAAS,8BAAA;EAbT;;EAgBA,KAAA,EAAO,mBAAA,SAhBkC;EAkBzC,WAAA,GAAc,CAAA,qBAfwB;EAiBtC,UAAA,GAAa,EAAA,qBAbN;EAeP,OAAA,EAAS,qBAAA;AAAA;AAAA,KAGC,iCAAA;EACV,GAAA,EAAK,4BAA4B;AAAA;;;;;;;;iBAUnB,4BAAA;EAA+B;AAAA,GAAO,iCAAiC,+BAAA,GAAA,CAAA,OAAA"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import * as React$1 from "react";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Dialog, DialogContent } from "@hexclave/ui";
|
|
4
|
+
|
|
5
|
+
//#region ../../node_modules/.pnpm/@radix-ui+react-primitive@2.1.3_@types+react-dom@19.2.3_@types+react@19.2.7__@types+rea_5f3d28fea11cf58eed3830d0189b6e2d/node_modules/@radix-ui/react-primitive/dist/index.d.mts
|
|
6
|
+
declare const NODES: readonly ["a", "button", "div", "form", "h2", "h3", "img", "input", "label", "li", "nav", "ol", "p", "select", "span", "svg", "ul"];
|
|
7
|
+
type Primitives = { [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E> };
|
|
8
|
+
type PrimitivePropsWithRef<E extends React$1.ElementType> = React$1.ComponentPropsWithRef<E> & {
|
|
9
|
+
asChild?: boolean;
|
|
10
|
+
};
|
|
11
|
+
interface PrimitiveForwardRefComponent<E extends React$1.ElementType> extends React$1.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}
|
|
12
|
+
declare const Primitive: Primitives;
|
|
13
|
+
/**
|
|
14
|
+
* Flush custom event dispatch
|
|
15
|
+
* https://github.com/radix-ui/primitives/pull/1378
|
|
16
|
+
*
|
|
17
|
+
* React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.
|
|
18
|
+
*
|
|
19
|
+
* Internally, React prioritises events in the following order:
|
|
20
|
+
* - discrete
|
|
21
|
+
* - continuous
|
|
22
|
+
* - default
|
|
23
|
+
*
|
|
24
|
+
* https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350
|
|
25
|
+
*
|
|
26
|
+
* `discrete` is an important distinction as updates within these events are applied immediately.
|
|
27
|
+
* React however, is not able to infer the priority of custom event types due to how they are detected internally.
|
|
28
|
+
* Because of this, it's possible for updates from custom events to be unexpectedly batched when
|
|
29
|
+
* dispatched by another `discrete` event.
|
|
30
|
+
*
|
|
31
|
+
* In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.
|
|
32
|
+
* This utility should be used when dispatching a custom event from within another `discrete` event, this utility
|
|
33
|
+
* is not necessary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.
|
|
34
|
+
* For example:
|
|
35
|
+
*
|
|
36
|
+
* dispatching a known click 👎
|
|
37
|
+
* target.dispatchEvent(new Event(‘click’))
|
|
38
|
+
*
|
|
39
|
+
* dispatching a custom type within a non-discrete event 👎
|
|
40
|
+
* onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}
|
|
41
|
+
*
|
|
42
|
+
* dispatching a custom type within a `discrete` event 👍
|
|
43
|
+
* onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}
|
|
44
|
+
*
|
|
45
|
+
* Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use
|
|
46
|
+
* this utility with them. This is because it's possible for those handlers to be called implicitly during render
|
|
47
|
+
* e.g. when focus is within a component as it is unmounted, or when managing focus on mount.
|
|
48
|
+
*/
|
|
49
|
+
//#endregion
|
|
50
|
+
//#region ../../node_modules/.pnpm/@radix-ui+react-dialog@1.1.15_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react_66d7d575cbd072ce29e52afb89085e9d/node_modules/@radix-ui/react-dialog/dist/index.d.mts
|
|
51
|
+
interface DialogProps {
|
|
52
|
+
children?: React$1.ReactNode;
|
|
53
|
+
open?: boolean;
|
|
54
|
+
defaultOpen?: boolean;
|
|
55
|
+
onOpenChange?(open: boolean): void;
|
|
56
|
+
modal?: boolean;
|
|
57
|
+
}
|
|
58
|
+
type PrimitiveButtonProps = React$1.ComponentPropsWithoutRef<typeof Primitive.button>;
|
|
59
|
+
interface DialogTriggerProps extends PrimitiveButtonProps {}
|
|
60
|
+
type PrimitiveHeading2Props = React$1.ComponentPropsWithoutRef<typeof Primitive.h2>;
|
|
61
|
+
interface DialogTitleProps extends PrimitiveHeading2Props {}
|
|
62
|
+
type PrimitiveParagraphProps = React$1.ComponentPropsWithoutRef<typeof Primitive.p>;
|
|
63
|
+
interface DialogDescriptionProps extends PrimitiveParagraphProps {}
|
|
64
|
+
interface DialogCloseProps extends PrimitiveButtonProps {}
|
|
65
|
+
//#endregion
|
|
66
|
+
//#region src/components/dialog.d.ts
|
|
67
|
+
type DesignDialogSize = "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "full";
|
|
68
|
+
type DesignDialogVariant = "glassmorphic" | "plain";
|
|
69
|
+
declare const designDialogGlassmorphicSurfaceClass: string;
|
|
70
|
+
declare const designDialogGlassmorphicOverlayClass = "bg-black/50 backdrop-blur-sm";
|
|
71
|
+
type DesignDialogIcon = React.ElementType<{
|
|
72
|
+
className?: string;
|
|
73
|
+
}>;
|
|
74
|
+
type DesignDialogRootProps = Omit<React.ComponentProps<typeof Dialog>, "children">;
|
|
75
|
+
type DesignDialogProps = {
|
|
76
|
+
trigger?: React.ReactElement;
|
|
77
|
+
size?: DesignDialogSize;
|
|
78
|
+
variant?: DesignDialogVariant;
|
|
79
|
+
icon?: DesignDialogIcon | null;
|
|
80
|
+
title?: React.ReactNode;
|
|
81
|
+
description?: React.ReactNode;
|
|
82
|
+
headerContent?: React.ReactNode;
|
|
83
|
+
customHeader?: React.ReactNode;
|
|
84
|
+
footer?: React.ReactNode;
|
|
85
|
+
noBodyPadding?: boolean;
|
|
86
|
+
hideTopCloseButton?: boolean;
|
|
87
|
+
className?: string;
|
|
88
|
+
overlayClassName?: string;
|
|
89
|
+
headerClassName?: string;
|
|
90
|
+
bodyClassName?: string;
|
|
91
|
+
footerClassName?: string;
|
|
92
|
+
children?: React.ReactNode;
|
|
93
|
+
contentProps?: Omit<React.ComponentPropsWithoutRef<typeof DialogContent>, "className" | "children" | "overlayProps" | "noCloseButton">;
|
|
94
|
+
} & DesignDialogRootProps;
|
|
95
|
+
/**
|
|
96
|
+
* Canonical dashboard modal surface. This wraps the base dialog primitives with
|
|
97
|
+
* a reusable glassmorphic shell and consistent header/body/footer regions.
|
|
98
|
+
*/
|
|
99
|
+
declare function DesignDialog({
|
|
100
|
+
trigger,
|
|
101
|
+
size,
|
|
102
|
+
variant,
|
|
103
|
+
icon: Icon,
|
|
104
|
+
title,
|
|
105
|
+
description,
|
|
106
|
+
headerContent,
|
|
107
|
+
customHeader,
|
|
108
|
+
footer,
|
|
109
|
+
noBodyPadding,
|
|
110
|
+
hideTopCloseButton,
|
|
111
|
+
className,
|
|
112
|
+
overlayClassName,
|
|
113
|
+
headerClassName,
|
|
114
|
+
bodyClassName,
|
|
115
|
+
footerClassName,
|
|
116
|
+
contentProps,
|
|
117
|
+
children,
|
|
118
|
+
...dialogRootProps
|
|
119
|
+
}: DesignDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
120
|
+
declare const DesignDialogRoot: React.FC<DialogProps>;
|
|
121
|
+
declare const DesignDialogTrigger: React.ForwardRefExoticComponent<DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
122
|
+
declare const DesignDialogClose: React.ForwardRefExoticComponent<DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
|
|
123
|
+
declare const DesignDialogTitle: React.FC<Omit<DialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & {
|
|
124
|
+
ref?: React.Ref<HTMLHeadingElement> | undefined;
|
|
125
|
+
}>;
|
|
126
|
+
declare const DesignDialogDescription: React.FC<Omit<DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & {
|
|
127
|
+
ref?: React.Ref<HTMLParagraphElement> | undefined;
|
|
128
|
+
}>;
|
|
129
|
+
//#endregion
|
|
130
|
+
export { DesignDialogRoot as a, DesignDialogTrigger as c, designDialogGlassmorphicSurfaceClass as d, DesignDialogProps as i, DesignDialogVariant as l, DesignDialogClose as n, DesignDialogSize as o, DesignDialogDescription as r, DesignDialogTitle as s, DesignDialog as t, designDialogGlassmorphicOverlayClass as u };
|
|
131
|
+
//# sourceMappingURL=dialog-CCtTH7s6.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog-CCtTH7s6.d.ts","names":["E","NODES","PrimitiveForwardRefComponent","React","ElementType","ComponentPropsWithRef","asChild","ForwardRefExoticComponent","PrimitivePropsWithRef","Primitives","CustomEvent","target","event","_radix_ui_react_context","CreateScope","children","React","ReactNode","open","defaultOpen","onOpenChange","modal","FC","DialogProps","ComponentPropsWithoutRef","Primitive","button","PrimitiveButtonProps","ForwardRefExoticComponent","DialogTriggerProps","RefAttributes","HTMLButtonElement","Portal$1","container","PortalProps","forceMount","DialogPortalProps","DialogOverlayImplProps","DialogOverlayProps","HTMLDivElement","div","PrimitiveDivProps","DialogContentTypeProps","DialogContentProps","Omit","DialogContentImplProps","DismissableLayer","FocusScope","DismissableLayerProps","trapFocus","FocusScopeProps","onOpenAutoFocus","onCloseAutoFocus","h2","PrimitiveHeading2Props","DialogTitleProps","HTMLHeadingElement","p","PrimitiveParagraphProps","DialogDescriptionProps","HTMLParagraphElement","DialogCloseProps","contentName","titleName","docsSlug"],"sources":["../../../node_modules/.pnpm/@radix-ui+react-primitive@2.1.3_@types+react-dom@19.2.3_@types+react@19.2.7__@types+rea_5f3d28fea11cf58eed3830d0189b6e2d/node_modules/@radix-ui/react-primitive/dist/index.d.mts","../../../node_modules/.pnpm/@radix-ui+react-dialog@1.1.15_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react_66d7d575cbd072ce29e52afb89085e9d/node_modules/@radix-ui/react-dialog/dist/index.d.mts","../src/components/dialog.tsx"],"x_google_ignoreList":[0,1],"mappings":";;;;;cAEc,KAAA;AAAA,KACT,UAAA,mBACa,KAAA,YAAiB,4BAAA,CAA6B,CAAA;AAAA,KAE3D,qBAAA,WAAgC,OAAA,CAAM,WAAA,IAAe,OAAA,CAAM,qBAAA,CAAsB,CAAA;EAClFM,OAAAA;AAAAA;AAAAA,UAEM,4BAAA,WAAuC,OAAA,CAAM,WAAA,UAAqB,OAAA,CAAM,yBAAA,CAA0B,qBAAA,CAAsB,CAAA;AAAA,cAEpH,SAAA,EAAW,UAAU;;;;;;;;;;;;AAP8B;AAAA;;;;;;;;;;;;;;;;AAGtD;AAAA;;;;;;;;;UCCD,WAAA;EACNS,QAAAA,GAAW,OAAA,CAAM,SAAS;EAC1BG,IAAAA;EACAC,WAAAA;EACAC,YAAAA,EAAcF,IAAAA;EACdG,KAAAA;AAAAA;AAAAA,KAGC,oBAAA,GAAuB,OAAA,CAAM,wBAAwB,QAAQ,SAAA,CAAU,MAAA;AAAA,UAClE,kBAAA,SAA2B,oBAAoB;AAAA,KA0DpD,sBAAA,GAAyB,OAAA,CAAM,wBAAwB,QAAQ,SAAA,CAAU,EAAA;AAAA,UACpE,gBAAA,SAAyB,sBAAsB;AAAA,KAGpD,uBAAA,GAA0B,OAAA,CAAM,wBAAwB,QAAQ,SAAA,CAAU,CAAA;AAAA,UACrE,sBAAA,SAA+B,uBAAuB;AAAA,UAGtD,gBAAA,SAAyB,oBAAoB;;;KCnE3C,gBAAA;AAAA,KAaA,mBAAA;AAAA,cAqBC,oCAAA;AAAA,cACA,oCAAA;AAAA,KAER,gBAAA,GAAmB,KAAA,CAAM,WAAW;EAAG,SAAA;AAAA;AAAA,KAEvC,qBAAA,GAAwB,IAAA,CAAK,KAAA,CAAM,cAAA,QAAsB,MAAA;AAAA,KAElD,iBAAA;EACV,OAAA,GAAU,KAAA,CAAM,YAAA;EAChB,IAAA,GAAO,gBAAA;EACP,OAAA,GAAU,mBAAA;EACV,IAAA,GAAO,gBAAA;EACP,KAAA,GAAQ,KAAA,CAAM,SAAA;EACd,WAAA,GAAc,KAAA,CAAM,SAAA;EACpB,aAAA,GAAgB,KAAA,CAAM,SAAA;EACtB,YAAA,GAAe,KAAA,CAAM,SAAA;EACrB,MAAA,GAAS,KAAA,CAAM,SAAA;EACf,aAAA;EACA,kBAAA;EACA,SAAA;EACA,gBAAA;EACA,eAAA;EACA,aAAA;EACA,eAAA;EACA,QAAA,GAAW,KAAA,CAAM,SAAA;EACjB,YAAA,GAAe,IAAA,CACb,KAAA,CAAM,wBAAA,QAAgC,aAAA;AAAA,IAGtC,qBAAA;;;;;iBAMY,YAAA;EACd,OAAA;EACA,IAAA;EACA,OAAA;EACA,IAAA,EAAM,IAAA;EACN,KAAA;EACA,WAAA;EACA,aAAA;EACA,YAAA;EACA,MAAA;EACA,aAAA;EACA,kBAAA;EACA,SAAA;EACA,gBAAA;EACA,eAAA;EACA,aAAA;EACA,eAAA;EACA,YAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,iBAAA,+BAAiB,GAAA,CAAA,OAAA;AAAA,cA4GP,gBAAA,EAAgB,KAAA,CAAA,EAAA,CAAS,WAAA;AAAA,cACzB,mBAAA,EAAmB,KAAA,CAAA,yBAAA,CAAgB,kBAAA,GAAhB,KAAA,CAAA,aAAA,CAAA,iBAAA;AAAA,cACnB,iBAAA,EAAiB,KAAA,CAAA,yBAAA,CAAc,gBAAA,GAAd,KAAA,CAAA,aAAA,CAAA,iBAAA;AAAA,cACjB,iBAAA,EAAiB,KAAA,CAAA,EAAA,CAAA,IAAA,CAAc,gBAAA,GAAd,KAAA,CAAA,aAAA,CAAA,kBAAA;;;cACjB,uBAAA,EAAuB,KAAA,CAAA,EAAA,CAAA,IAAA,CAAoB,sBAAA,GAApB,KAAA,CAAA,aAAA,CAAA,oBAAA"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
-
|
|
3
1
|
//#region src/components/alert.d.ts
|
|
4
2
|
type DesignAlertVariant = "default" | "success" | "error" | "warning" | "info";
|
|
5
3
|
type DesignAlertProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
@@ -16,7 +14,7 @@ declare function DesignAlert({
|
|
|
16
14
|
className,
|
|
17
15
|
children,
|
|
18
16
|
...props
|
|
19
|
-
}: DesignAlertProps):
|
|
17
|
+
}: DesignAlertProps): import("react/jsx-runtime").JSX.Element;
|
|
20
18
|
//#endregion
|
|
21
19
|
export { DesignAlert, DesignAlertProps };
|
|
22
20
|
//# sourceMappingURL=alert.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.d.ts","names":[],"sources":["../../../src/components/alert.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"alert.d.ts","names":[],"sources":["../../../src/components/alert.tsx"],"mappings":";KAKK,kBAAA;AAAA,KAmEO,gBAAA,GAAmB,KAAA,CAAM,cAAA,CAAe,cAAA;EAClD,OAAA,GAAU,kBAAA;EACV,KAAA,GAAQ,KAAA,CAAM,SAAA;EACd,WAAA,GAAc,KAAA,CAAM,SAAA;EACpB,YAAA;AAAA;AAAA,iBAGc,WAAA;EACd,OAAA;EACA,KAAA;EACA,WAAA;EACA,YAAA;EACA,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,gBAAA,+BAAgB,GAAA,CAAA,OAAA"}
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
2
|
import { CheckCircle, Info, WarningCircle, XCircle } from "@phosphor-icons/react";
|
|
4
3
|
import { cn } from "@hexclave/ui";
|
|
5
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
-
|
|
7
5
|
//#region src/components/alert.tsx
|
|
8
|
-
const variantIconMap = new Map([
|
|
6
|
+
const variantIconMap = /* @__PURE__ */ new Map([
|
|
9
7
|
["default", Info],
|
|
10
8
|
["success", CheckCircle],
|
|
11
9
|
["error", XCircle],
|
|
12
10
|
["warning", WarningCircle],
|
|
13
11
|
["info", Info]
|
|
14
12
|
]);
|
|
15
|
-
const variantStyles = new Map([
|
|
13
|
+
const variantStyles = /* @__PURE__ */ new Map([
|
|
16
14
|
["default", {
|
|
17
15
|
container: "border-black/[0.08] bg-white/90 ring-1 ring-black/[0.06] dark:border-border dark:bg-background dark:ring-0",
|
|
18
16
|
icon: "text-foreground",
|
|
@@ -67,7 +65,7 @@ function DesignAlert({ variant = "default", title, description, glassmorphic = f
|
|
|
67
65
|
})]
|
|
68
66
|
});
|
|
69
67
|
}
|
|
70
|
-
|
|
71
68
|
//#endregion
|
|
72
69
|
export { DesignAlert };
|
|
70
|
+
|
|
73
71
|
//# sourceMappingURL=alert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.js","names":[],"sources":["../../../src/components/alert.tsx"],"sourcesContent":["\"use client\";\n\nimport { CheckCircle, Info, WarningCircle, XCircle } from \"@phosphor-icons/react\";\nimport { cn } from \"@hexclave/ui\";\n\ntype DesignAlertVariant = \"default\" | \"success\" | \"error\" | \"warning\" | \"info\";\n\nconst variantIconMap = new Map<DesignAlertVariant, React.ElementType>([\n [\"default\", Info],\n [\"success\", CheckCircle],\n [\"error\", XCircle],\n [\"warning\", WarningCircle],\n [\"info\", Info],\n]);\n\ntype VariantStyles = {\n container: string,\n icon: string,\n title: string,\n};\n\nconst variantStyles = new Map<DesignAlertVariant, VariantStyles>([\n [\n \"default\",\n {\n container: \"border-black/[0.08] bg-white/90 ring-1 ring-black/[0.06] dark:border-border dark:bg-background dark:ring-0\",\n icon: \"text-foreground\",\n title: \"text-foreground\",\n },\n ],\n [\n \"success\",\n {\n container: \"bg-green-500/[0.06] border-green-500/30\",\n icon: \"text-green-500\",\n title: \"text-green-600 dark:text-green-400\",\n },\n ],\n [\n \"error\",\n {\n container: \"bg-red-500/[0.06] border-red-500/30\",\n icon: \"text-red-500\",\n title: \"text-red-600 dark:text-red-400\",\n },\n ],\n [\n \"warning\",\n {\n container: \"bg-amber-500/[0.08] border-amber-500/40\",\n icon: \"text-amber-600 dark:text-amber-400\",\n title: \"text-amber-700 dark:text-amber-300\",\n },\n ],\n [\n \"info\",\n {\n container: \"border-blue-500/20 bg-blue-50/90 ring-1 ring-blue-500/10 dark:border-blue-500/30 dark:bg-blue-500/[0.06] dark:ring-0\",\n icon: \"text-blue-600 dark:text-blue-400\",\n title: \"text-blue-700 dark:text-blue-400\",\n },\n ],\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\nexport type DesignAlertProps = React.HTMLAttributes<HTMLDivElement> & {\n variant?: DesignAlertVariant,\n title?: React.ReactNode,\n description?: React.ReactNode,\n glassmorphic?: boolean,\n};\n\nexport function DesignAlert({\n variant = \"default\",\n title,\n description,\n glassmorphic = false,\n className,\n children,\n ...props\n}: DesignAlertProps) {\n const styles = getMapValueOrThrow(variantStyles, variant, \"variantStyles\");\n const Icon = getMapValueOrThrow(variantIconMap, variant, \"variantIconMap\");\n\n return (\n <div\n role=\"alert\"\n className={cn(\n \"relative w-full rounded-2xl border p-4 text-sm\",\n \"flex gap-3 items-start\",\n styles.container,\n glassmorphic && \"backdrop-blur-xl\",\n className\n )}\n {...props}\n >\n <Icon className={cn(\"h-4 w-4 mt-0.5 flex-shrink-0\", styles.icon)} />\n <div className=\"min-w-0\">\n {title && (\n <h5 className={cn(\"mb-1 font-medium leading-none tracking-tight\", styles.title)}>\n {title}\n </h5>\n )}\n {description && (\n <div className=\"text-sm text-foreground/80 dark:text-muted-foreground [&_p]:leading-relaxed\">\n {description}\n </div>\n )}\n {children}\n </div>\n </div>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"alert.js","names":[],"sources":["../../../src/components/alert.tsx"],"sourcesContent":["\"use client\";\n\nimport { CheckCircle, Info, WarningCircle, XCircle } from \"@phosphor-icons/react\";\nimport { cn } from \"@hexclave/ui\";\n\ntype DesignAlertVariant = \"default\" | \"success\" | \"error\" | \"warning\" | \"info\";\n\nconst variantIconMap = new Map<DesignAlertVariant, React.ElementType>([\n [\"default\", Info],\n [\"success\", CheckCircle],\n [\"error\", XCircle],\n [\"warning\", WarningCircle],\n [\"info\", Info],\n]);\n\ntype VariantStyles = {\n container: string,\n icon: string,\n title: string,\n};\n\nconst variantStyles = new Map<DesignAlertVariant, VariantStyles>([\n [\n \"default\",\n {\n container: \"border-black/[0.08] bg-white/90 ring-1 ring-black/[0.06] dark:border-border dark:bg-background dark:ring-0\",\n icon: \"text-foreground\",\n title: \"text-foreground\",\n },\n ],\n [\n \"success\",\n {\n container: \"bg-green-500/[0.06] border-green-500/30\",\n icon: \"text-green-500\",\n title: \"text-green-600 dark:text-green-400\",\n },\n ],\n [\n \"error\",\n {\n container: \"bg-red-500/[0.06] border-red-500/30\",\n icon: \"text-red-500\",\n title: \"text-red-600 dark:text-red-400\",\n },\n ],\n [\n \"warning\",\n {\n container: \"bg-amber-500/[0.08] border-amber-500/40\",\n icon: \"text-amber-600 dark:text-amber-400\",\n title: \"text-amber-700 dark:text-amber-300\",\n },\n ],\n [\n \"info\",\n {\n container: \"border-blue-500/20 bg-blue-50/90 ring-1 ring-blue-500/10 dark:border-blue-500/30 dark:bg-blue-500/[0.06] dark:ring-0\",\n icon: \"text-blue-600 dark:text-blue-400\",\n title: \"text-blue-700 dark:text-blue-400\",\n },\n ],\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\nexport type DesignAlertProps = React.HTMLAttributes<HTMLDivElement> & {\n variant?: DesignAlertVariant,\n title?: React.ReactNode,\n description?: React.ReactNode,\n glassmorphic?: boolean,\n};\n\nexport function DesignAlert({\n variant = \"default\",\n title,\n description,\n glassmorphic = false,\n className,\n children,\n ...props\n}: DesignAlertProps) {\n const styles = getMapValueOrThrow(variantStyles, variant, \"variantStyles\");\n const Icon = getMapValueOrThrow(variantIconMap, variant, \"variantIconMap\");\n\n return (\n <div\n role=\"alert\"\n className={cn(\n \"relative w-full rounded-2xl border p-4 text-sm\",\n \"flex gap-3 items-start\",\n styles.container,\n glassmorphic && \"backdrop-blur-xl\",\n className\n )}\n {...props}\n >\n <Icon className={cn(\"h-4 w-4 mt-0.5 flex-shrink-0\", styles.icon)} />\n <div className=\"min-w-0\">\n {title && (\n <h5 className={cn(\"mb-1 font-medium leading-none tracking-tight\", styles.title)}>\n {title}\n </h5>\n )}\n {description && (\n <div className=\"text-sm text-foreground/80 dark:text-muted-foreground [&_p]:leading-relaxed\">\n {description}\n </div>\n )}\n {children}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAOA,MAAM,iCAAiB,IAAI,IAA2C;CACpE,CAAC,WAAW,IAAI;CAChB,CAAC,WAAW,WAAW;CACvB,CAAC,SAAS,OAAO;CACjB,CAAC,WAAW,aAAa;CACzB,CAAC,QAAQ,IAAI;AACf,CAAC;AAQD,MAAM,gCAAgB,IAAI,IAAuC;CAC/D,CACE,WACA;EACE,WAAW;EACX,MAAM;EACN,OAAO;CACT,CACF;CACA,CACE,WACA;EACE,WAAW;EACX,MAAM;EACN,OAAO;CACT,CACF;CACA,CACE,SACA;EACE,WAAW;EACX,MAAM;EACN,OAAO;CACT,CACF;CACA,CACE,WACA;EACE,WAAW;EACX,MAAM;EACN,OAAO;CACT,CACF;CACA,CACE,QACA;EACE,WAAW;EACX,MAAM;EACN,OAAO;CACT,CACF;AACF,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;AASA,SAAgB,YAAY,EAC1B,UAAU,WACV,OACA,aACA,eAAe,OACf,WACA,UACA,GAAG,SACgB;CACnB,MAAM,SAAS,mBAAmB,eAAe,SAAS,eAAe;CACzE,MAAM,OAAO,mBAAmB,gBAAgB,SAAS,gBAAgB;CAEzE,OACE,qBAAC,OAAD;EACE,MAAK;EACL,WAAW,GACT,kDACA,0BACA,OAAO,WACP,gBAAgB,oBAChB,SACF;EACA,GAAI;YATN,CAWE,oBAAC,MAAD,EAAM,WAAW,GAAG,gCAAgC,OAAO,IAAI,EAAI,CAAA,GACnE,qBAAC,OAAD;GAAK,WAAU;aAAf;IACG,SACC,oBAAC,MAAD;KAAI,WAAW,GAAG,gDAAgD,OAAO,KAAK;eAC3E;IACC,CAAA;IAEL,eACC,oBAAC,OAAD;KAAK,WAAU;eACZ;IACE,CAAA;IAEN;GACE;IACF;;AAET"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
1
|
import { Ref } from "react";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { AnalyticsChartPieProps, AnalyticsChartSeries, FormatKind, Point } from "./types.js";
|
|
3
|
+
import { AnalyticsChartStrings } from "./strings.js";
|
|
5
4
|
|
|
6
5
|
//#region src/components/analytics-chart/analytics-chart-pie.d.ts
|
|
7
6
|
type SegmentColors = {
|
|
@@ -61,7 +60,7 @@ declare function AnalyticsChartPie({
|
|
|
61
60
|
strings,
|
|
62
61
|
fmtValue,
|
|
63
62
|
pie
|
|
64
|
-
}: AnalyticsChartPieBodyProps):
|
|
63
|
+
}: AnalyticsChartPieBodyProps): import("react/jsx-runtime").JSX.Element;
|
|
65
64
|
//#endregion
|
|
66
65
|
export { AnalyticsChartPie };
|
|
67
66
|
//# sourceMappingURL=analytics-chart-pie.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-chart-pie.d.ts","names":[],"sources":["../../../../src/components/analytics-chart/analytics-chart-pie.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"analytics-chart-pie.d.ts","names":[],"sources":["../../../../src/components/analytics-chart/analytics-chart-pie.tsx"],"mappings":";;;;;KAgBK,aAAA;EACH,OAAA;IAAW,KAAA;IAAiB,IAAA;EAAA;EAC5B,OAAA;IAAW,KAAA;IAAiB,IAAA;EAAA;AAAA;AAAA,KAGzB,0BAAA;EACH,UAAA,EAAY,GAAA,CAAI,cAAA;EAChB,oBAAA,WAA+B,oBAAA;EAC/B,oBAAA,WAA+B,oBAAA;EAC/B,yBAAA;EACA,yBAAA;EACA,sBAAA;EACA,sBAAA;EACA,aAAA,EAAe,aAAA;EACf,WAAA;EACA,WAAA;EACA,WAAA,EAAa,UAAA;EACb,WAAA,EAAa,UAAA;EACb,QAAA;EACA,WAAA,GAAc,CAAA;EACd,SAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,QAAA,EAAU,KAAA;EACV,OAAA,EAAS,qBAAA;EACT,QAAA,GAAW,KAAA,UAAe,IAAA,EAAM,UAAA;EAChC,GAAA,EAAK,sBAAA;AAAA;AAAA,iBAKS,iBAAA;EACd,UAAA;EACA,oBAAA;EACA,oBAAA;EACA,yBAAA;EACA,yBAAA;EACA,sBAAA;EACA,sBAAA;EACA,aAAA;EACA,WAAA;EACA,WAAA;EACA,WAAA;EACA,WAAA;EACA,QAAA;EACA,WAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,QAAA;EACA,OAAA;EACA,QAAA;EACA;AAAA,GACC,0BAAA,+BAA0B,GAAA,CAAA,OAAA"}
|
|
@@ -7,7 +7,6 @@ import { DesignChartContainer } from "../chart-container.js";
|
|
|
7
7
|
import { TrendPill } from "./default-analytics-chart-tooltip.js";
|
|
8
8
|
import { formatDelta } from "./format.js";
|
|
9
9
|
import { cssIdent } from "./types.js";
|
|
10
|
-
|
|
11
10
|
//#region src/components/analytics-chart/analytics-chart-pie.tsx
|
|
12
11
|
const DEFAULT_PIE_CLASSNAME = "aspect-square h-[220px] w-[220px] sm:h-[240px] sm:w-[240px]";
|
|
13
12
|
function AnalyticsChartPie({ wrapperRef, primarySegmentSeries, compareSegmentSeries, aggregatedPrimarySegments, aggregatedCompareSegments, aggregatedPrimaryTotal, aggregatedCompareTotal, segmentColors, showPrimary, showCompare, xFormatKind, yFormatKind, hoverKey, setHoverKey, zoomRange, onResetZoom, visibleStart, visibleEnd, fullData, strings, fmtValue, pie }) {
|
|
@@ -267,7 +266,7 @@ function AnalyticsChartPie({ wrapperRef, primarySegmentSeries, compareSegmentSer
|
|
|
267
266
|
})]
|
|
268
267
|
});
|
|
269
268
|
}
|
|
270
|
-
|
|
271
269
|
//#endregion
|
|
272
270
|
export { AnalyticsChartPie };
|
|
271
|
+
|
|
273
272
|
//# sourceMappingURL=analytics-chart-pie.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-chart-pie.js","names":[],"sources":["../../../../src/components/analytics-chart/analytics-chart-pie.tsx"],"sourcesContent":["import { MagnifyingGlassMinusIcon } from \"@phosphor-icons/react\";\nimport { cn } from \"@hexclave/ui\";\nimport { type DesignChartConfig, DesignChartContainer } from \"../chart-container\";\nimport { type CSSProperties, type Ref, useEffect, useMemo, useState } from \"react\";\nimport { Cell, Pie, PieChart } from \"recharts\";\nimport { TrendPill } from \"./default-analytics-chart-tooltip\";\nimport { formatDelta } from \"./format\";\nimport type { AnalyticsChartStrings } from \"./strings\";\nimport {\n cssIdent,\n type AnalyticsChartPieProps,\n type AnalyticsChartSeries,\n type FormatKind,\n type Point,\n} from \"./types\";\n\ntype SegmentColors = {\n primary: { light: string[], dark: string[] },\n compare: { light: string[], dark: string[] },\n};\n\ntype AnalyticsChartPieBodyProps = {\n wrapperRef: Ref<HTMLDivElement>,\n primarySegmentSeries: readonly AnalyticsChartSeries[],\n compareSegmentSeries: readonly AnalyticsChartSeries[],\n aggregatedPrimarySegments: number[],\n aggregatedCompareSegments: number[],\n aggregatedPrimaryTotal: number,\n aggregatedCompareTotal: number,\n segmentColors: SegmentColors,\n showPrimary: boolean,\n showCompare: boolean,\n xFormatKind: FormatKind,\n yFormatKind: FormatKind,\n hoverKey: string | null,\n setHoverKey: (k: string | null) => void,\n zoomRange: [number, number] | null,\n onResetZoom: () => void,\n visibleStart: number,\n visibleEnd: number,\n fullData: Point[],\n strings: AnalyticsChartStrings,\n fmtValue: (value: number, kind: FormatKind) => string,\n pie: AnalyticsChartPieProps | undefined,\n};\n\nconst DEFAULT_PIE_CLASSNAME = \"aspect-square h-[220px] w-[220px] sm:h-[240px] sm:w-[240px]\";\n\nexport function AnalyticsChartPie({\n wrapperRef,\n primarySegmentSeries,\n compareSegmentSeries,\n aggregatedPrimarySegments,\n aggregatedCompareSegments,\n aggregatedPrimaryTotal,\n aggregatedCompareTotal,\n segmentColors,\n showPrimary,\n showCompare,\n xFormatKind,\n yFormatKind,\n hoverKey,\n setHoverKey,\n zoomRange,\n onResetZoom,\n visibleStart,\n visibleEnd,\n fullData,\n strings,\n fmtValue,\n pie,\n}: AnalyticsChartPieBodyProps) {\n const innerRadius = pie?.innerRadius ?? 60;\n const outerRadius = pie?.outerRadius ?? 84;\n const compareInnerRadius = pie?.compareInnerRadius ?? 36;\n const compareOuterRadius = pie?.compareOuterRadius ?? 52;\n const containerClassName = pie?.className ?? DEFAULT_PIE_CLASSNAME;\n const showDateRange = pie?.showDateRange ?? true;\n const centerTextMaxWidth = Math.max(64, innerRadius * 2 - 28);\n const segmentTransitionStyle: CSSProperties = {\n transition: \"opacity 180ms ease-out\",\n };\n\n const canonicalSeries = primarySegmentSeries.length > 0\n ? primarySegmentSeries\n : compareSegmentSeries;\n const usePrimaryForCanonical = primarySegmentSeries.length > 0;\n\n const compareValueByKey = useMemo(() => {\n const m = new Map<string, number>();\n compareSegmentSeries.forEach((s, sIdx) => {\n m.set(s.key, aggregatedCompareSegments[sIdx] ?? 0);\n });\n return m;\n }, [compareSegmentSeries, aggregatedCompareSegments]);\n const primaryValueByKey = useMemo(() => {\n const m = new Map<string, number>();\n primarySegmentSeries.forEach((s, sIdx) => {\n m.set(s.key, aggregatedPrimarySegments[sIdx] ?? 0);\n });\n return m;\n }, [primarySegmentSeries, aggregatedPrimarySegments]);\n\n const canonicalTotal = usePrimaryForCanonical\n ? aggregatedPrimaryTotal\n : aggregatedCompareTotal;\n\n const legendRows = useMemo(\n () =>\n canonicalSeries\n .map((s, sIdx) => {\n const value = usePrimaryForCanonical\n ? (aggregatedPrimarySegments[sIdx] ?? 0)\n : (aggregatedCompareSegments[sIdx] ?? 0);\n const prevValue = usePrimaryForCanonical\n ? (compareValueByKey.get(s.key) ?? 0)\n : (primaryValueByKey.get(s.key) ?? 0);\n return {\n key: s.key,\n label: s.label,\n sIdx,\n value,\n prevValue,\n pct: canonicalTotal > 0 ? value / canonicalTotal : 0,\n fill: segmentColors.primary.light[sIdx],\n fillDark: segmentColors.primary.dark[sIdx],\n fillCompare: segmentColors.compare.light[sIdx],\n fillCompareDark: segmentColors.compare.dark[sIdx],\n };\n })\n .sort((a, b) => b.value - a.value),\n [\n canonicalSeries,\n usePrimaryForCanonical,\n aggregatedPrimarySegments,\n aggregatedCompareSegments,\n compareValueByKey,\n primaryValueByKey,\n canonicalTotal,\n segmentColors,\n ],\n );\n\n const chartConfig = useMemo<DesignChartConfig>(() => {\n const config: DesignChartConfig = {};\n canonicalSeries.forEach((s, sIdx) => {\n config[cssIdent(s.key)] = {\n label: s.label,\n theme: {\n light: segmentColors.primary.light[sIdx],\n dark: segmentColors.primary.dark[sIdx],\n },\n };\n config[`compare-${cssIdent(s.key)}`] = {\n label: s.label,\n theme: {\n light: segmentColors.compare.light[sIdx],\n dark: segmentColors.compare.dark[sIdx],\n },\n };\n });\n return config;\n }, [canonicalSeries, segmentColors]);\n\n const activeRow = hoverKey != null\n ? legendRows.find((r) => r.key === hoverKey) ?? null\n : null;\n const [centerDisplayKey, setCenterDisplayKey] = useState<string | null>(null);\n const [centerDisplayVisible, setCenterDisplayVisible] = useState(true);\n const centerDisplayRow = centerDisplayKey != null\n ? legendRows.find((r) => r.key === centerDisplayKey) ?? null\n : null;\n useEffect(() => {\n const nextKey = activeRow?.key ?? null;\n if (nextKey === centerDisplayKey) {\n return;\n }\n\n setCenterDisplayVisible(false);\n const timeoutId = window.setTimeout(() => {\n setCenterDisplayKey(nextKey);\n setCenterDisplayVisible(true);\n }, 120);\n\n return () => {\n window.clearTimeout(timeoutId);\n };\n }, [activeRow?.key, centerDisplayKey]);\n\n const activeDelta = activeRow\n ? formatDelta(activeRow.value, activeRow.prevValue)\n : formatDelta(aggregatedPrimaryTotal, aggregatedCompareTotal);\n\n const windowDays = visibleEnd - visibleStart + 1;\n const startLabel = fmtValue(fullData[visibleStart]!.ts, xFormatKind);\n const endLabel = fmtValue(fullData[visibleEnd]!.ts, xFormatKind);\n\n const outerData = legendRows.map((r) => ({ name: cssIdent(r.key), hoverKey: r.key, value: r.value, fill: r.fill }));\n const innerData = legendRows.map((r) => ({ name: cssIdent(r.key), hoverKey: r.key, value: r.prevValue, fill: r.fillCompare }));\n const activeIdx = hoverKey != null ? legendRows.findIndex((r) => r.key === hoverKey) : -1;\n\n return (\n <div\n ref={wrapperRef}\n className=\"relative flex h-full min-h-0 w-full min-w-0 flex-1 flex-col select-none\"\n onClick={(e) => e.stopPropagation()}\n >\n {zoomRange && (\n <div className=\"absolute right-2 top-2 z-20\">\n <button\n type=\"button\"\n onClick={onResetZoom}\n className=\"inline-flex items-center gap-1.5 rounded-full bg-blue-500/10 px-2.5 py-1 font-mono text-[10px] font-semibold uppercase tracking-wider text-blue-600 ring-1 ring-blue-500/30 transition-colors duration-150 hover:bg-blue-500/15 hover:transition-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/50 dark:text-blue-300 dark:ring-blue-400/30\"\n >\n <MagnifyingGlassMinusIcon weight=\"bold\" className=\"size-3\" aria-hidden=\"true\" />\n <span>{strings.resetZoom}</span>\n </button>\n </div>\n )}\n\n <div className=\"flex h-full min-h-0 w-full flex-1 flex-wrap content-center items-center justify-center gap-x-10 gap-y-6\">\n <div className=\"flex shrink-0 flex-col items-center gap-3\">\n <div className=\"relative\">\n <DesignChartContainer config={chartConfig} className={containerClassName}>\n <PieChart\n role=\"img\"\n aria-label={strings.pieAriaLabel({\n segmentCount: canonicalSeries.length,\n windowDays,\n })}\n >\n {showPrimary && (\n <Pie\n data={outerData}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n paddingAngle={1}\n startAngle={90}\n endAngle={-270}\n isAnimationActive={false}\n stroke=\"none\"\n >\n {outerData.map((d, i) => {\n const inactive = activeIdx >= 0 && activeIdx !== i;\n return (\n <Cell\n key={`outer-${d.name}`}\n fill={`var(--color-${d.name})`}\n opacity={inactive ? 0.22 : 1}\n style={segmentTransitionStyle}\n onMouseEnter={() => setHoverKey(d.hoverKey)}\n onMouseLeave={() => setHoverKey(null)}\n />\n );\n })}\n </Pie>\n )}\n {showCompare && (\n <Pie\n data={innerData}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={compareInnerRadius}\n outerRadius={compareOuterRadius}\n paddingAngle={1}\n startAngle={90}\n endAngle={-270}\n isAnimationActive={false}\n stroke=\"none\"\n >\n {innerData.map((d, i) => {\n const inactive = activeIdx >= 0 && activeIdx !== i;\n return (\n <Cell\n key={`inner-${d.name}`}\n fill={`var(--color-compare-${d.name})`}\n opacity={inactive ? 0.22 : 0.95}\n style={segmentTransitionStyle}\n onMouseEnter={() => setHoverKey(d.hoverKey)}\n onMouseLeave={() => setHoverKey(null)}\n />\n );\n })}\n </Pie>\n )}\n </PieChart>\n </DesignChartContainer>\n\n <div\n className={cn(\n \"pointer-events-none absolute inset-0 flex flex-col items-center justify-center text-center transition-opacity duration-200 ease-out\",\n centerDisplayVisible ? \"opacity-100\" : \"opacity-35\",\n )}\n >\n <span className=\"block truncate font-mono text-[9px] uppercase tracking-wider text-muted-foreground\" style={{ maxWidth: centerTextMaxWidth }}>\n {centerDisplayRow ? centerDisplayRow.label : strings.pieTotalCenter}\n </span>\n <span className=\"mt-0.5 block truncate font-mono text-xl font-semibold leading-none tabular-nums text-foreground\" style={{ maxWidth: centerTextMaxWidth }}>\n {fmtValue(centerDisplayRow ? centerDisplayRow.value : canonicalTotal, yFormatKind)}\n </span>\n </div>\n </div>\n\n {(showDateRange || showCompare) && (\n <div className=\"flex items-center gap-2 text-center\">\n {showDateRange && (\n <span className=\"font-mono text-[10px] uppercase tracking-wider text-muted-foreground/80\">\n {startLabel} – {endLabel}\n </span>\n )}\n {showCompare && (\n <TrendPill delta={activeDelta} size=\"sm\" label={strings.pieVsPrev} />\n )}\n </div>\n )}\n </div>\n\n <ul className=\"flex min-w-[200px] max-w-[300px] flex-col gap-1\">\n {legendRows.map((r) => {\n const isActive = hoverKey === r.key;\n const dimmed = hoverKey != null && !isActive;\n const rowDelta = formatDelta(r.value, r.prevValue);\n return (\n <li key={r.key}>\n <button\n type=\"button\"\n onMouseEnter={() => setHoverKey(r.key)}\n onMouseLeave={() => setHoverKey(null)}\n onFocus={() => setHoverKey(r.key)}\n onBlur={() => setHoverKey(null)}\n className={cn(\n \"flex w-full items-center gap-2.5 rounded-md px-2 py-1.5 text-left transition-[background-color,opacity] duration-200 ease-out hover:bg-foreground/[0.04] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-foreground/20\",\n isActive && \"bg-foreground/[0.05]\",\n dimmed && \"opacity-50\",\n )}\n >\n <span\n className=\"size-2.5 shrink-0 rounded-[3px] bg-[var(--c-l)] dark:bg-[var(--c-d)]\"\n style={{ \"--c-l\": r.fill, \"--c-d\": r.fillDark } as CSSProperties}\n />\n <span className=\"min-w-0 flex-1 truncate text-[12px] font-medium text-foreground\">\n {r.label}\n </span>\n <span className=\"shrink-0 font-mono text-[11px] tabular-nums text-muted-foreground\">\n {(r.pct * 100).toFixed(1)}%\n </span>\n <span className=\"shrink-0 min-w-[48px] text-right font-mono text-[11px] font-semibold tabular-nums text-foreground\">\n {fmtValue(r.value, yFormatKind)}\n </span>\n {showCompare && (\n <span className=\"shrink-0\">\n <TrendPill delta={rowDelta} size=\"sm\" />\n </span>\n )}\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analytics-chart-pie.js","names":[],"sources":["../../../../src/components/analytics-chart/analytics-chart-pie.tsx"],"sourcesContent":["import { MagnifyingGlassMinusIcon } from \"@phosphor-icons/react\";\nimport { cn } from \"@hexclave/ui\";\nimport { type DesignChartConfig, DesignChartContainer } from \"../chart-container\";\nimport { type CSSProperties, type Ref, useEffect, useMemo, useState } from \"react\";\nimport { Cell, Pie, PieChart } from \"recharts\";\nimport { TrendPill } from \"./default-analytics-chart-tooltip\";\nimport { formatDelta } from \"./format\";\nimport type { AnalyticsChartStrings } from \"./strings\";\nimport {\n cssIdent,\n type AnalyticsChartPieProps,\n type AnalyticsChartSeries,\n type FormatKind,\n type Point,\n} from \"./types\";\n\ntype SegmentColors = {\n primary: { light: string[], dark: string[] },\n compare: { light: string[], dark: string[] },\n};\n\ntype AnalyticsChartPieBodyProps = {\n wrapperRef: Ref<HTMLDivElement>,\n primarySegmentSeries: readonly AnalyticsChartSeries[],\n compareSegmentSeries: readonly AnalyticsChartSeries[],\n aggregatedPrimarySegments: number[],\n aggregatedCompareSegments: number[],\n aggregatedPrimaryTotal: number,\n aggregatedCompareTotal: number,\n segmentColors: SegmentColors,\n showPrimary: boolean,\n showCompare: boolean,\n xFormatKind: FormatKind,\n yFormatKind: FormatKind,\n hoverKey: string | null,\n setHoverKey: (k: string | null) => void,\n zoomRange: [number, number] | null,\n onResetZoom: () => void,\n visibleStart: number,\n visibleEnd: number,\n fullData: Point[],\n strings: AnalyticsChartStrings,\n fmtValue: (value: number, kind: FormatKind) => string,\n pie: AnalyticsChartPieProps | undefined,\n};\n\nconst DEFAULT_PIE_CLASSNAME = \"aspect-square h-[220px] w-[220px] sm:h-[240px] sm:w-[240px]\";\n\nexport function AnalyticsChartPie({\n wrapperRef,\n primarySegmentSeries,\n compareSegmentSeries,\n aggregatedPrimarySegments,\n aggregatedCompareSegments,\n aggregatedPrimaryTotal,\n aggregatedCompareTotal,\n segmentColors,\n showPrimary,\n showCompare,\n xFormatKind,\n yFormatKind,\n hoverKey,\n setHoverKey,\n zoomRange,\n onResetZoom,\n visibleStart,\n visibleEnd,\n fullData,\n strings,\n fmtValue,\n pie,\n}: AnalyticsChartPieBodyProps) {\n const innerRadius = pie?.innerRadius ?? 60;\n const outerRadius = pie?.outerRadius ?? 84;\n const compareInnerRadius = pie?.compareInnerRadius ?? 36;\n const compareOuterRadius = pie?.compareOuterRadius ?? 52;\n const containerClassName = pie?.className ?? DEFAULT_PIE_CLASSNAME;\n const showDateRange = pie?.showDateRange ?? true;\n const centerTextMaxWidth = Math.max(64, innerRadius * 2 - 28);\n const segmentTransitionStyle: CSSProperties = {\n transition: \"opacity 180ms ease-out\",\n };\n\n const canonicalSeries = primarySegmentSeries.length > 0\n ? primarySegmentSeries\n : compareSegmentSeries;\n const usePrimaryForCanonical = primarySegmentSeries.length > 0;\n\n const compareValueByKey = useMemo(() => {\n const m = new Map<string, number>();\n compareSegmentSeries.forEach((s, sIdx) => {\n m.set(s.key, aggregatedCompareSegments[sIdx] ?? 0);\n });\n return m;\n }, [compareSegmentSeries, aggregatedCompareSegments]);\n const primaryValueByKey = useMemo(() => {\n const m = new Map<string, number>();\n primarySegmentSeries.forEach((s, sIdx) => {\n m.set(s.key, aggregatedPrimarySegments[sIdx] ?? 0);\n });\n return m;\n }, [primarySegmentSeries, aggregatedPrimarySegments]);\n\n const canonicalTotal = usePrimaryForCanonical\n ? aggregatedPrimaryTotal\n : aggregatedCompareTotal;\n\n const legendRows = useMemo(\n () =>\n canonicalSeries\n .map((s, sIdx) => {\n const value = usePrimaryForCanonical\n ? (aggregatedPrimarySegments[sIdx] ?? 0)\n : (aggregatedCompareSegments[sIdx] ?? 0);\n const prevValue = usePrimaryForCanonical\n ? (compareValueByKey.get(s.key) ?? 0)\n : (primaryValueByKey.get(s.key) ?? 0);\n return {\n key: s.key,\n label: s.label,\n sIdx,\n value,\n prevValue,\n pct: canonicalTotal > 0 ? value / canonicalTotal : 0,\n fill: segmentColors.primary.light[sIdx],\n fillDark: segmentColors.primary.dark[sIdx],\n fillCompare: segmentColors.compare.light[sIdx],\n fillCompareDark: segmentColors.compare.dark[sIdx],\n };\n })\n .sort((a, b) => b.value - a.value),\n [\n canonicalSeries,\n usePrimaryForCanonical,\n aggregatedPrimarySegments,\n aggregatedCompareSegments,\n compareValueByKey,\n primaryValueByKey,\n canonicalTotal,\n segmentColors,\n ],\n );\n\n const chartConfig = useMemo<DesignChartConfig>(() => {\n const config: DesignChartConfig = {};\n canonicalSeries.forEach((s, sIdx) => {\n config[cssIdent(s.key)] = {\n label: s.label,\n theme: {\n light: segmentColors.primary.light[sIdx],\n dark: segmentColors.primary.dark[sIdx],\n },\n };\n config[`compare-${cssIdent(s.key)}`] = {\n label: s.label,\n theme: {\n light: segmentColors.compare.light[sIdx],\n dark: segmentColors.compare.dark[sIdx],\n },\n };\n });\n return config;\n }, [canonicalSeries, segmentColors]);\n\n const activeRow = hoverKey != null\n ? legendRows.find((r) => r.key === hoverKey) ?? null\n : null;\n const [centerDisplayKey, setCenterDisplayKey] = useState<string | null>(null);\n const [centerDisplayVisible, setCenterDisplayVisible] = useState(true);\n const centerDisplayRow = centerDisplayKey != null\n ? legendRows.find((r) => r.key === centerDisplayKey) ?? null\n : null;\n useEffect(() => {\n const nextKey = activeRow?.key ?? null;\n if (nextKey === centerDisplayKey) {\n return;\n }\n\n setCenterDisplayVisible(false);\n const timeoutId = window.setTimeout(() => {\n setCenterDisplayKey(nextKey);\n setCenterDisplayVisible(true);\n }, 120);\n\n return () => {\n window.clearTimeout(timeoutId);\n };\n }, [activeRow?.key, centerDisplayKey]);\n\n const activeDelta = activeRow\n ? formatDelta(activeRow.value, activeRow.prevValue)\n : formatDelta(aggregatedPrimaryTotal, aggregatedCompareTotal);\n\n const windowDays = visibleEnd - visibleStart + 1;\n const startLabel = fmtValue(fullData[visibleStart]!.ts, xFormatKind);\n const endLabel = fmtValue(fullData[visibleEnd]!.ts, xFormatKind);\n\n const outerData = legendRows.map((r) => ({ name: cssIdent(r.key), hoverKey: r.key, value: r.value, fill: r.fill }));\n const innerData = legendRows.map((r) => ({ name: cssIdent(r.key), hoverKey: r.key, value: r.prevValue, fill: r.fillCompare }));\n const activeIdx = hoverKey != null ? legendRows.findIndex((r) => r.key === hoverKey) : -1;\n\n return (\n <div\n ref={wrapperRef}\n className=\"relative flex h-full min-h-0 w-full min-w-0 flex-1 flex-col select-none\"\n onClick={(e) => e.stopPropagation()}\n >\n {zoomRange && (\n <div className=\"absolute right-2 top-2 z-20\">\n <button\n type=\"button\"\n onClick={onResetZoom}\n className=\"inline-flex items-center gap-1.5 rounded-full bg-blue-500/10 px-2.5 py-1 font-mono text-[10px] font-semibold uppercase tracking-wider text-blue-600 ring-1 ring-blue-500/30 transition-colors duration-150 hover:bg-blue-500/15 hover:transition-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/50 dark:text-blue-300 dark:ring-blue-400/30\"\n >\n <MagnifyingGlassMinusIcon weight=\"bold\" className=\"size-3\" aria-hidden=\"true\" />\n <span>{strings.resetZoom}</span>\n </button>\n </div>\n )}\n\n <div className=\"flex h-full min-h-0 w-full flex-1 flex-wrap content-center items-center justify-center gap-x-10 gap-y-6\">\n <div className=\"flex shrink-0 flex-col items-center gap-3\">\n <div className=\"relative\">\n <DesignChartContainer config={chartConfig} className={containerClassName}>\n <PieChart\n role=\"img\"\n aria-label={strings.pieAriaLabel({\n segmentCount: canonicalSeries.length,\n windowDays,\n })}\n >\n {showPrimary && (\n <Pie\n data={outerData}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n paddingAngle={1}\n startAngle={90}\n endAngle={-270}\n isAnimationActive={false}\n stroke=\"none\"\n >\n {outerData.map((d, i) => {\n const inactive = activeIdx >= 0 && activeIdx !== i;\n return (\n <Cell\n key={`outer-${d.name}`}\n fill={`var(--color-${d.name})`}\n opacity={inactive ? 0.22 : 1}\n style={segmentTransitionStyle}\n onMouseEnter={() => setHoverKey(d.hoverKey)}\n onMouseLeave={() => setHoverKey(null)}\n />\n );\n })}\n </Pie>\n )}\n {showCompare && (\n <Pie\n data={innerData}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={compareInnerRadius}\n outerRadius={compareOuterRadius}\n paddingAngle={1}\n startAngle={90}\n endAngle={-270}\n isAnimationActive={false}\n stroke=\"none\"\n >\n {innerData.map((d, i) => {\n const inactive = activeIdx >= 0 && activeIdx !== i;\n return (\n <Cell\n key={`inner-${d.name}`}\n fill={`var(--color-compare-${d.name})`}\n opacity={inactive ? 0.22 : 0.95}\n style={segmentTransitionStyle}\n onMouseEnter={() => setHoverKey(d.hoverKey)}\n onMouseLeave={() => setHoverKey(null)}\n />\n );\n })}\n </Pie>\n )}\n </PieChart>\n </DesignChartContainer>\n\n <div\n className={cn(\n \"pointer-events-none absolute inset-0 flex flex-col items-center justify-center text-center transition-opacity duration-200 ease-out\",\n centerDisplayVisible ? \"opacity-100\" : \"opacity-35\",\n )}\n >\n <span className=\"block truncate font-mono text-[9px] uppercase tracking-wider text-muted-foreground\" style={{ maxWidth: centerTextMaxWidth }}>\n {centerDisplayRow ? centerDisplayRow.label : strings.pieTotalCenter}\n </span>\n <span className=\"mt-0.5 block truncate font-mono text-xl font-semibold leading-none tabular-nums text-foreground\" style={{ maxWidth: centerTextMaxWidth }}>\n {fmtValue(centerDisplayRow ? centerDisplayRow.value : canonicalTotal, yFormatKind)}\n </span>\n </div>\n </div>\n\n {(showDateRange || showCompare) && (\n <div className=\"flex items-center gap-2 text-center\">\n {showDateRange && (\n <span className=\"font-mono text-[10px] uppercase tracking-wider text-muted-foreground/80\">\n {startLabel} – {endLabel}\n </span>\n )}\n {showCompare && (\n <TrendPill delta={activeDelta} size=\"sm\" label={strings.pieVsPrev} />\n )}\n </div>\n )}\n </div>\n\n <ul className=\"flex min-w-[200px] max-w-[300px] flex-col gap-1\">\n {legendRows.map((r) => {\n const isActive = hoverKey === r.key;\n const dimmed = hoverKey != null && !isActive;\n const rowDelta = formatDelta(r.value, r.prevValue);\n return (\n <li key={r.key}>\n <button\n type=\"button\"\n onMouseEnter={() => setHoverKey(r.key)}\n onMouseLeave={() => setHoverKey(null)}\n onFocus={() => setHoverKey(r.key)}\n onBlur={() => setHoverKey(null)}\n className={cn(\n \"flex w-full items-center gap-2.5 rounded-md px-2 py-1.5 text-left transition-[background-color,opacity] duration-200 ease-out hover:bg-foreground/[0.04] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-foreground/20\",\n isActive && \"bg-foreground/[0.05]\",\n dimmed && \"opacity-50\",\n )}\n >\n <span\n className=\"size-2.5 shrink-0 rounded-[3px] bg-[var(--c-l)] dark:bg-[var(--c-d)]\"\n style={{ \"--c-l\": r.fill, \"--c-d\": r.fillDark } as CSSProperties}\n />\n <span className=\"min-w-0 flex-1 truncate text-[12px] font-medium text-foreground\">\n {r.label}\n </span>\n <span className=\"shrink-0 font-mono text-[11px] tabular-nums text-muted-foreground\">\n {(r.pct * 100).toFixed(1)}%\n </span>\n <span className=\"shrink-0 min-w-[48px] text-right font-mono text-[11px] font-semibold tabular-nums text-foreground\">\n {fmtValue(r.value, yFormatKind)}\n </span>\n {showCompare && (\n <span className=\"shrink-0\">\n <TrendPill delta={rowDelta} size=\"sm\" />\n </span>\n )}\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
1
|
import { ReactNode } from "react";
|
|
3
|
-
import {
|
|
4
|
-
import { AnalyticsChartPalette, AnalyticsChartPieProps, AnalyticsChartState, Annotation, FormatKind, Point } from "./types";
|
|
5
|
-
import {
|
|
2
|
+
import { AnalyticsChartTooltipContext } from "./default-analytics-chart-tooltip.js";
|
|
3
|
+
import { AnalyticsChartPalette, AnalyticsChartPieProps, AnalyticsChartState, Annotation, FormatKind, Point } from "./types.js";
|
|
4
|
+
import { AnalyticsChartStrings } from "./strings.js";
|
|
6
5
|
|
|
7
6
|
//#region src/components/analytics-chart/analytics-chart.d.ts
|
|
8
7
|
/** Mirrors Recharts' internal `Margin` shape (not exported from their typings). */
|
|
@@ -548,7 +547,7 @@ declare function AnalyticsChart({
|
|
|
548
547
|
yDomainPadding,
|
|
549
548
|
pie,
|
|
550
549
|
valueFormatter
|
|
551
|
-
}: AnalyticsChartProps):
|
|
550
|
+
}: AnalyticsChartProps): import("react/jsx-runtime").JSX.Element;
|
|
552
551
|
//#endregion
|
|
553
552
|
export { AnalyticsChart, AnalyticsChartProps, Margin };
|
|
554
553
|
//# sourceMappingURL=analytics-chart.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-chart.d.ts","names":[],"sources":["../../../../src/components/analytics-chart/analytics-chart.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"analytics-chart.d.ts","names":[],"sources":["../../../../src/components/analytics-chart/analytics-chart.tsx"],"mappings":";;;;;;;KAyEY,MAAA;EACV,GAAA;EACA,KAAA;EACA,MAAA;EACA,IAAA;AAAA;;;;;AAAI;AA6SN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCmD;AAwQnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA1TV,mBAAA;;;EAGV,IAAA,EAAM,KAAA;EAEN,WAAA,GAAc,UAAA;;;;;EAKd,KAAA,EAAO,mBAAA;EACP,QAAA,EAAU,KAAA,CAAM,QAAA,CAAS,KAAA,CAAM,cAAA,CAAe,mBAAA;;;EAG9C,kBAAA,IAAsB,UAAA,EAAY,UAAA;EAElC,OAAA,GAAU,OAAA,CAAQ,qBAAA;;;EAGlB,OAAA,GAAU,OAAA,CAAQ,qBAAA;;;;EAIlB,aAAA,IAAiB,GAAA,EAAK,4BAAA,KAAiC,SAAA;;;;EAIvD,UAAA,GAAa,MAAA;EAEb,UAAA;EAEA,cAAA;EAEA,GAAA,GAAM,sBAAA;;;EAGN,cAAA,IAAkB,KAAA,UAAe,IAAA,EAAM,UAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwQzB,cAAA;EACd,IAAA,EAAM,QAAA;EACN,WAAA,EAAa,eAAA;EACb,KAAA;EACA,QAAA;EACA,kBAAA;EACA,OAAA,EAAS,eAAA;EACT,OAAA,EAAS,eAAA;EACT,aAAA;EACA,UAAA;EACA,UAAA;EACA,cAAA;EACA,GAAA;EACA;AAAA,GACC,mBAAA,+BAAmB,GAAA,CAAA,OAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
2
|
import { FlagIcon, MagnifyingGlassMinusIcon, MagnifyingGlassPlusIcon, XIcon } from "@phosphor-icons/react";
|
|
4
3
|
import { cn } from "@hexclave/ui";
|
|
5
4
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -15,7 +14,6 @@ import { buildRampColors, resolveAnalyticsChartPalette } from "./palette.js";
|
|
|
15
14
|
import { renderDataSeries } from "./render-data-series.js";
|
|
16
15
|
import { EMPTY_MATRIX, EMPTY_SERIES, STROKE_DASHARRAY, computeLocalInProgressIdx, findAnnotationsLayer, findCompareLayer, findPrimaryLayer, isAnalyticsChartDataLayer, isTimeseriesState, resolveDataLayerStyle } from "./state.js";
|
|
17
16
|
import { resolveAnalyticsChartStrings } from "./strings.js";
|
|
18
|
-
|
|
19
17
|
//#region src/components/analytics-chart/analytics-chart.tsx
|
|
20
18
|
const FALLBACK_PRIMARY_STYLE = {
|
|
21
19
|
color: "#2563eb",
|
|
@@ -752,7 +750,7 @@ function AnalyticsChart({ data: fullData, annotations: fullAnnotations = [], sta
|
|
|
752
750
|
const hi = Math.max(brushStart, brushEnd);
|
|
753
751
|
const days = hi - lo + 1;
|
|
754
752
|
return /* @__PURE__ */ jsx("div", {
|
|
755
|
-
className: "pointer-events-none absolute -top-1 z-30 -translate-x-1/2 -translate-y-full rounded-lg border border-blue-500/30 bg-
|
|
753
|
+
className: "pointer-events-none absolute -top-1 z-30 -translate-x-1/2 -translate-y-full rounded-lg border border-blue-500/30 bg-white/95 px-3 py-1.5 text-[11px] shadow-lg backdrop-blur-xl dark:border-blue-400/30 dark:bg-background/95",
|
|
756
754
|
style: { left: indexToCss((lo + hi) / 2) },
|
|
757
755
|
children: /* @__PURE__ */ jsxs("div", {
|
|
758
756
|
className: "flex items-center gap-2",
|
|
@@ -813,7 +811,7 @@ function AnalyticsChart({ data: fullData, annotations: fullAnnotations = [], sta
|
|
|
813
811
|
className: "absolute top-2 z-30",
|
|
814
812
|
style: anchorStyle,
|
|
815
813
|
children: /* @__PURE__ */ jsx("div", {
|
|
816
|
-
className: "flex items-center gap-1 rounded-full border border-
|
|
814
|
+
className: "flex items-center gap-1 rounded-full border border-black/[0.08] bg-white/95 py-1 pl-2 pr-1 shadow-[0_10px_28px_rgba(15,23,42,0.18)] ring-1 ring-black/[0.06] backdrop-blur-xl dark:border-white/[0.08] dark:bg-background/95 dark:ring-white/[0.08] dark:shadow-[0_10px_28px_rgba(0,0,0,0.55)]",
|
|
817
815
|
children: draft == null ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
818
816
|
/* @__PURE__ */ jsxs("span", {
|
|
819
817
|
className: "flex items-center gap-1.5 whitespace-nowrap px-1 font-mono text-[10px] tabular-nums text-muted-foreground",
|
|
@@ -1013,7 +1011,7 @@ function AnalyticsChart({ data: fullData, annotations: fullAnnotations = [], sta
|
|
|
1013
1011
|
]
|
|
1014
1012
|
});
|
|
1015
1013
|
}
|
|
1016
|
-
|
|
1017
1014
|
//#endregion
|
|
1018
1015
|
export { AnalyticsChart };
|
|
1016
|
+
|
|
1019
1017
|
//# sourceMappingURL=analytics-chart.js.map
|