@panoboard/core 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cache/cache.d.ts +11 -0
- package/dist/cache/cache.d.ts.map +1 -0
- package/dist/cache/cache.js +42 -0
- package/dist/cache/cache.js.map +1 -0
- package/dist/cache/client.d.ts +9 -0
- package/dist/cache/client.d.ts.map +1 -0
- package/dist/cache/client.js +63 -0
- package/dist/cache/client.js.map +1 -0
- package/dist/cache/index.d.ts +4 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +17 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/keys.d.ts +2 -0
- package/dist/cache/keys.d.ts.map +1 -0
- package/dist/cache/keys.js +26 -0
- package/dist/cache/keys.js.map +1 -0
- package/dist/components/DashboardCard.d.ts +15 -0
- package/dist/components/DashboardCard.d.ts.map +1 -0
- package/dist/components/DashboardCard.js +80 -0
- package/dist/components/DashboardCard.js.map +1 -0
- package/dist/components/DashboardShell.d.ts +11 -0
- package/dist/components/DashboardShell.d.ts.map +1 -0
- package/dist/components/DashboardShell.js +115 -0
- package/dist/components/DashboardShell.js.map +1 -0
- package/dist/components/EmptyState.d.ts +6 -0
- package/dist/components/EmptyState.d.ts.map +1 -0
- package/dist/components/EmptyState.js +29 -0
- package/dist/components/EmptyState.js.map +1 -0
- package/dist/components/ErrorPage.d.ts +14 -0
- package/dist/components/ErrorPage.d.ts.map +1 -0
- package/dist/components/ErrorPage.js +132 -0
- package/dist/components/ErrorPage.js.map +1 -0
- package/dist/components/FilterBar.d.ts +8 -0
- package/dist/components/FilterBar.d.ts.map +1 -0
- package/dist/components/FilterBar.js +70 -0
- package/dist/components/FilterBar.js.map +1 -0
- package/dist/components/PanelGrid.d.ts +9 -0
- package/dist/components/PanelGrid.d.ts.map +1 -0
- package/dist/components/PanelGrid.js +26 -0
- package/dist/components/PanelGrid.js.map +1 -0
- package/dist/components/PanelWrapper.d.ts +8 -0
- package/dist/components/PanelWrapper.d.ts.map +1 -0
- package/dist/components/PanelWrapper.js +154 -0
- package/dist/components/PanelWrapper.js.map +1 -0
- package/dist/components/filters/BooleanFilter.d.ts +8 -0
- package/dist/components/filters/BooleanFilter.d.ts.map +1 -0
- package/dist/components/filters/BooleanFilter.js +36 -0
- package/dist/components/filters/BooleanFilter.js.map +1 -0
- package/dist/components/filters/CalendarGrid.d.ts +8 -0
- package/dist/components/filters/CalendarGrid.d.ts.map +1 -0
- package/dist/components/filters/CalendarGrid.js +159 -0
- package/dist/components/filters/CalendarGrid.js.map +1 -0
- package/dist/components/filters/DateRangeFilter.d.ts +10 -0
- package/dist/components/filters/DateRangeFilter.d.ts.map +1 -0
- package/dist/components/filters/DateRangeFilter.js +80 -0
- package/dist/components/filters/DateRangeFilter.js.map +1 -0
- package/dist/components/filters/FilterChips.d.ts +8 -0
- package/dist/components/filters/FilterChips.d.ts.map +1 -0
- package/dist/components/filters/FilterChips.js +94 -0
- package/dist/components/filters/FilterChips.js.map +1 -0
- package/dist/components/filters/MultiSelectFilter.d.ts +17 -0
- package/dist/components/filters/MultiSelectFilter.d.ts.map +1 -0
- package/dist/components/filters/MultiSelectFilter.js +80 -0
- package/dist/components/filters/MultiSelectFilter.js.map +1 -0
- package/dist/components/filters/NumberFilter.d.ts +10 -0
- package/dist/components/filters/NumberFilter.d.ts.map +1 -0
- package/dist/components/filters/NumberFilter.js +47 -0
- package/dist/components/filters/NumberFilter.js.map +1 -0
- package/dist/components/filters/SelectFilter.d.ts +16 -0
- package/dist/components/filters/SelectFilter.d.ts.map +1 -0
- package/dist/components/filters/SelectFilter.js +71 -0
- package/dist/components/filters/SelectFilter.js.map +1 -0
- package/dist/components/filters/TextFilter.d.ts +8 -0
- package/dist/components/filters/TextFilter.d.ts.map +1 -0
- package/dist/components/filters/TextFilter.js +57 -0
- package/dist/components/filters/TextFilter.js.map +1 -0
- package/dist/components/filters/useDropdown.d.ts +7 -0
- package/dist/components/filters/useDropdown.d.ts.map +1 -0
- package/dist/components/filters/useDropdown.js +41 -0
- package/dist/components/filters/useDropdown.js.map +1 -0
- package/dist/components/filters/useFilterUpdate.d.ts +2 -0
- package/dist/components/filters/useFilterUpdate.d.ts.map +1 -0
- package/dist/components/filters/useFilterUpdate.js +30 -0
- package/dist/components/filters/useFilterUpdate.js.map +1 -0
- package/dist/components/index.d.ts +59 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +75 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/panels/AreaChart.d.ts +7 -0
- package/dist/components/panels/AreaChart.d.ts.map +1 -0
- package/dist/components/panels/AreaChart.js +88 -0
- package/dist/components/panels/AreaChart.js.map +1 -0
- package/dist/components/panels/BarChart.d.ts +7 -0
- package/dist/components/panels/BarChart.d.ts.map +1 -0
- package/dist/components/panels/BarChart.js +99 -0
- package/dist/components/panels/BarChart.js.map +1 -0
- package/dist/components/panels/BoxPlotChart.d.ts +7 -0
- package/dist/components/panels/BoxPlotChart.d.ts.map +1 -0
- package/dist/components/panels/BoxPlotChart.js +41 -0
- package/dist/components/panels/BoxPlotChart.js.map +1 -0
- package/dist/components/panels/BulletChart.d.ts +7 -0
- package/dist/components/panels/BulletChart.d.ts.map +1 -0
- package/dist/components/panels/BulletChart.js +46 -0
- package/dist/components/panels/BulletChart.js.map +1 -0
- package/dist/components/panels/BumpChart.d.ts +7 -0
- package/dist/components/panels/BumpChart.d.ts.map +1 -0
- package/dist/components/panels/BumpChart.js +38 -0
- package/dist/components/panels/BumpChart.js.map +1 -0
- package/dist/components/panels/CalendarHeatmap.d.ts +7 -0
- package/dist/components/panels/CalendarHeatmap.d.ts.map +1 -0
- package/dist/components/panels/CalendarHeatmap.js +41 -0
- package/dist/components/panels/CalendarHeatmap.js.map +1 -0
- package/dist/components/panels/ChartTooltip.d.ts +48 -0
- package/dist/components/panels/ChartTooltip.d.ts.map +1 -0
- package/dist/components/panels/ChartTooltip.js +129 -0
- package/dist/components/panels/ChartTooltip.js.map +1 -0
- package/dist/components/panels/DonutChart.d.ts +7 -0
- package/dist/components/panels/DonutChart.d.ts.map +1 -0
- package/dist/components/panels/DonutChart.js +40 -0
- package/dist/components/panels/DonutChart.js.map +1 -0
- package/dist/components/panels/FunnelChart.d.ts +7 -0
- package/dist/components/panels/FunnelChart.d.ts.map +1 -0
- package/dist/components/panels/FunnelChart.js +32 -0
- package/dist/components/panels/FunnelChart.js.map +1 -0
- package/dist/components/panels/HeatmapChart.d.ts +7 -0
- package/dist/components/panels/HeatmapChart.d.ts.map +1 -0
- package/dist/components/panels/HeatmapChart.js +41 -0
- package/dist/components/panels/HeatmapChart.js.map +1 -0
- package/dist/components/panels/IframePanel.d.ts +6 -0
- package/dist/components/panels/IframePanel.d.ts.map +1 -0
- package/dist/components/panels/IframePanel.js +5 -0
- package/dist/components/panels/IframePanel.js.map +1 -0
- package/dist/components/panels/ImagePanel.d.ts +7 -0
- package/dist/components/panels/ImagePanel.d.ts.map +1 -0
- package/dist/components/panels/ImagePanel.js +9 -0
- package/dist/components/panels/ImagePanel.js.map +1 -0
- package/dist/components/panels/LineChart.d.ts +7 -0
- package/dist/components/panels/LineChart.d.ts.map +1 -0
- package/dist/components/panels/LineChart.js +87 -0
- package/dist/components/panels/LineChart.js.map +1 -0
- package/dist/components/panels/ListPanel.d.ts +7 -0
- package/dist/components/panels/ListPanel.d.ts.map +1 -0
- package/dist/components/panels/ListPanel.js +24 -0
- package/dist/components/panels/ListPanel.js.map +1 -0
- package/dist/components/panels/MarkdownPanel.d.ts +7 -0
- package/dist/components/panels/MarkdownPanel.d.ts.map +1 -0
- package/dist/components/panels/MarkdownPanel.js +39 -0
- package/dist/components/panels/MarkdownPanel.js.map +1 -0
- package/dist/components/panels/MetricPanel.d.ts +7 -0
- package/dist/components/panels/MetricPanel.d.ts.map +1 -0
- package/dist/components/panels/MetricPanel.js +23 -0
- package/dist/components/panels/MetricPanel.js.map +1 -0
- package/dist/components/panels/PanelEmpty.d.ts +2 -0
- package/dist/components/panels/PanelEmpty.d.ts.map +1 -0
- package/dist/components/panels/PanelEmpty.js +27 -0
- package/dist/components/panels/PanelEmpty.js.map +1 -0
- package/dist/components/panels/PanelError.d.ts +7 -0
- package/dist/components/panels/PanelError.d.ts.map +1 -0
- package/dist/components/panels/PanelError.js +21 -0
- package/dist/components/panels/PanelError.js.map +1 -0
- package/dist/components/panels/PanelSkeleton.d.ts +6 -0
- package/dist/components/panels/PanelSkeleton.d.ts.map +1 -0
- package/dist/components/panels/PanelSkeleton.js +24 -0
- package/dist/components/panels/PanelSkeleton.js.map +1 -0
- package/dist/components/panels/PieChart.d.ts +7 -0
- package/dist/components/panels/PieChart.d.ts.map +1 -0
- package/dist/components/panels/PieChart.js +40 -0
- package/dist/components/panels/PieChart.js.map +1 -0
- package/dist/components/panels/RadarChart.d.ts +7 -0
- package/dist/components/panels/RadarChart.d.ts.map +1 -0
- package/dist/components/panels/RadarChart.js +50 -0
- package/dist/components/panels/RadarChart.js.map +1 -0
- package/dist/components/panels/RadialBarChart.d.ts +7 -0
- package/dist/components/panels/RadialBarChart.d.ts.map +1 -0
- package/dist/components/panels/RadialBarChart.js +49 -0
- package/dist/components/panels/RadialBarChart.js.map +1 -0
- package/dist/components/panels/SankeyChart.d.ts +7 -0
- package/dist/components/panels/SankeyChart.d.ts.map +1 -0
- package/dist/components/panels/SankeyChart.js +39 -0
- package/dist/components/panels/SankeyChart.js.map +1 -0
- package/dist/components/panels/ScatterChart.d.ts +7 -0
- package/dist/components/panels/ScatterChart.d.ts.map +1 -0
- package/dist/components/panels/ScatterChart.js +54 -0
- package/dist/components/panels/ScatterChart.js.map +1 -0
- package/dist/components/panels/StatPanel.d.ts +8 -0
- package/dist/components/panels/StatPanel.d.ts.map +1 -0
- package/dist/components/panels/StatPanel.js +40 -0
- package/dist/components/panels/StatPanel.js.map +1 -0
- package/dist/components/panels/StreamChart.d.ts +7 -0
- package/dist/components/panels/StreamChart.d.ts.map +1 -0
- package/dist/components/panels/StreamChart.js +54 -0
- package/dist/components/panels/StreamChart.js.map +1 -0
- package/dist/components/panels/SunburstChart.d.ts +7 -0
- package/dist/components/panels/SunburstChart.d.ts.map +1 -0
- package/dist/components/panels/SunburstChart.js +60 -0
- package/dist/components/panels/SunburstChart.js.map +1 -0
- package/dist/components/panels/TablePanel.d.ts +7 -0
- package/dist/components/panels/TablePanel.d.ts.map +1 -0
- package/dist/components/panels/TablePanel.js +79 -0
- package/dist/components/panels/TablePanel.js.map +1 -0
- package/dist/components/panels/TreemapChart.d.ts +7 -0
- package/dist/components/panels/TreemapChart.d.ts.map +1 -0
- package/dist/components/panels/TreemapChart.js +59 -0
- package/dist/components/panels/TreemapChart.js.map +1 -0
- package/dist/components/panels/VideoPanel.d.ts +15 -0
- package/dist/components/panels/VideoPanel.d.ts.map +1 -0
- package/dist/components/panels/VideoPanel.js +25 -0
- package/dist/components/panels/VideoPanel.js.map +1 -0
- package/dist/components/panels/WaffleChart.d.ts +7 -0
- package/dist/components/panels/WaffleChart.d.ts.map +1 -0
- package/dist/components/panels/WaffleChart.js +46 -0
- package/dist/components/panels/WaffleChart.js.map +1 -0
- package/dist/components/panels/index.d.ts +3 -0
- package/dist/components/panels/index.d.ts.map +1 -0
- package/dist/components/panels/index.js +60 -0
- package/dist/components/panels/index.js.map +1 -0
- package/dist/components/panels/nivo-theme.d.ts +95 -0
- package/dist/components/panels/nivo-theme.d.ts.map +1 -0
- package/dist/components/panels/nivo-theme.js +140 -0
- package/dist/components/panels/nivo-theme.js.map +1 -0
- package/dist/components/panels/semantic-colors.d.ts +7 -0
- package/dist/components/panels/semantic-colors.d.ts.map +1 -0
- package/dist/components/panels/semantic-colors.js +100 -0
- package/dist/components/panels/semantic-colors.js.map +1 -0
- package/dist/components/ui/Button.d.ts +9 -0
- package/dist/components/ui/Button.d.ts.map +1 -0
- package/dist/components/ui/Button.js +40 -0
- package/dist/components/ui/Button.js.map +1 -0
- package/dist/components/ui/Tabs.d.ts +11 -0
- package/dist/components/ui/Tabs.d.ts.map +1 -0
- package/dist/components/ui/Tabs.js +28 -0
- package/dist/components/ui/Tabs.js.map +1 -0
- package/dist/connectors/bigquery.d.ts +26 -0
- package/dist/connectors/bigquery.d.ts.map +1 -0
- package/dist/connectors/bigquery.js +113 -0
- package/dist/connectors/bigquery.js.map +1 -0
- package/dist/connectors/index.d.ts +17 -0
- package/dist/connectors/index.d.ts.map +1 -0
- package/dist/connectors/index.js +23 -0
- package/dist/connectors/index.js.map +1 -0
- package/dist/connectors/params.d.ts +15 -0
- package/dist/connectors/params.d.ts.map +1 -0
- package/dist/connectors/params.js +46 -0
- package/dist/connectors/params.js.map +1 -0
- package/dist/connectors/postgres.d.ts +29 -0
- package/dist/connectors/postgres.d.ts.map +1 -0
- package/dist/connectors/postgres.js +130 -0
- package/dist/connectors/postgres.js.map +1 -0
- package/dist/connectors/redshift-data.d.ts +25 -0
- package/dist/connectors/redshift-data.d.ts.map +1 -0
- package/dist/connectors/redshift-data.js +237 -0
- package/dist/connectors/redshift-data.js.map +1 -0
- package/dist/connectors/redshift.d.ts +29 -0
- package/dist/connectors/redshift.d.ts.map +1 -0
- package/dist/connectors/redshift.js +138 -0
- package/dist/connectors/redshift.js.map +1 -0
- package/dist/connectors/registry.d.ts +7 -0
- package/dist/connectors/registry.d.ts.map +1 -0
- package/dist/connectors/registry.js +30 -0
- package/dist/connectors/registry.js.map +1 -0
- package/dist/connectors/snowflake.d.ts +37 -0
- package/dist/connectors/snowflake.d.ts.map +1 -0
- package/dist/connectors/snowflake.js +181 -0
- package/dist/connectors/snowflake.js.map +1 -0
- package/dist/connectors/types.d.ts +41 -0
- package/dist/connectors/types.d.ts.map +1 -0
- package/dist/connectors/types.js +15 -0
- package/dist/connectors/types.js.map +1 -0
- package/dist/connectors/url-parsers.d.ts +13 -0
- package/dist/connectors/url-parsers.d.ts.map +1 -0
- package/dist/connectors/url-parsers.js +95 -0
- package/dist/connectors/url-parsers.js.map +1 -0
- package/dist/connectors/url.d.ts +36 -0
- package/dist/connectors/url.d.ts.map +1 -0
- package/dist/connectors/url.js +139 -0
- package/dist/connectors/url.js.map +1 -0
- package/dist/filters/cascade.d.ts +13 -0
- package/dist/filters/cascade.d.ts.map +1 -0
- package/dist/filters/cascade.js +32 -0
- package/dist/filters/cascade.js.map +1 -0
- package/dist/filters/daterange.d.ts +8 -0
- package/dist/filters/daterange.d.ts.map +1 -0
- package/dist/filters/daterange.js +119 -0
- package/dist/filters/daterange.js.map +1 -0
- package/dist/filters/index.d.ts +7 -0
- package/dist/filters/index.d.ts.map +1 -0
- package/dist/filters/index.js +18 -0
- package/dist/filters/index.js.map +1 -0
- package/dist/filters/resolver.d.ts +3 -0
- package/dist/filters/resolver.d.ts.map +1 -0
- package/dist/filters/resolver.js +122 -0
- package/dist/filters/resolver.js.map +1 -0
- package/dist/filters/validation.d.ts +17 -0
- package/dist/filters/validation.d.ts.map +1 -0
- package/dist/filters/validation.js +84 -0
- package/dist/filters/validation.js.map +1 -0
- package/dist/formats.d.ts +4 -0
- package/dist/formats.d.ts.map +1 -0
- package/dist/formats.js +127 -0
- package/dist/formats.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/auth-provider.d.ts +22 -0
- package/dist/interfaces/auth-provider.d.ts.map +1 -0
- package/dist/interfaces/auth-provider.js +15 -0
- package/dist/interfaces/auth-provider.js.map +1 -0
- package/dist/interfaces/dashboard-store.d.ts +17 -0
- package/dist/interfaces/dashboard-store.d.ts.map +1 -0
- package/dist/interfaces/dashboard-store.js +15 -0
- package/dist/interfaces/dashboard-store.js.map +1 -0
- package/dist/interfaces/datasource-store.d.ts +6 -0
- package/dist/interfaces/datasource-store.d.ts.map +1 -0
- package/dist/interfaces/datasource-store.js +15 -0
- package/dist/interfaces/datasource-store.js.map +1 -0
- package/dist/interfaces/index.d.ts +4 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +15 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/locale/context.d.ts +6 -0
- package/dist/locale/context.d.ts.map +1 -0
- package/dist/locale/context.js +23 -0
- package/dist/locale/context.js.map +1 -0
- package/dist/locale/index.d.ts +2 -0
- package/dist/locale/index.d.ts.map +1 -0
- package/dist/locale/index.js +15 -0
- package/dist/locale/index.js.map +1 -0
- package/dist/query/array-expansion.d.ts +5 -0
- package/dist/query/array-expansion.d.ts.map +1 -0
- package/dist/query/array-expansion.js +39 -0
- package/dist/query/array-expansion.js.map +1 -0
- package/dist/query/index.d.ts +8 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +20 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/pipeline.d.ts +27 -0
- package/dist/query/pipeline.d.ts.map +1 -0
- package/dist/query/pipeline.js +49 -0
- package/dist/query/pipeline.js.map +1 -0
- package/dist/query/strategy/http.d.ts +7 -0
- package/dist/query/strategy/http.d.ts.map +1 -0
- package/dist/query/strategy/http.js +26 -0
- package/dist/query/strategy/http.js.map +1 -0
- package/dist/query/strategy/index.d.ts +4 -0
- package/dist/query/strategy/index.d.ts.map +1 -0
- package/dist/query/strategy/index.js +32 -0
- package/dist/query/strategy/index.js.map +1 -0
- package/dist/query/strategy/sql.d.ts +7 -0
- package/dist/query/strategy/sql.d.ts.map +1 -0
- package/dist/query/strategy/sql.js +40 -0
- package/dist/query/strategy/sql.js.map +1 -0
- package/dist/query/strategy/types.d.ts +6 -0
- package/dist/query/strategy/types.d.ts.map +1 -0
- package/dist/query/strategy/types.js +15 -0
- package/dist/query/strategy/types.js.map +1 -0
- package/dist/query/template.d.ts +7 -0
- package/dist/query/template.d.ts.map +1 -0
- package/dist/query/template.js +36 -0
- package/dist/query/template.js.map +1 -0
- package/dist/schemas/config.d.ts +74 -0
- package/dist/schemas/config.d.ts.map +1 -0
- package/dist/schemas/config.js +129 -0
- package/dist/schemas/config.js.map +1 -0
- package/dist/schemas/dashboard.d.ts +716 -0
- package/dist/schemas/dashboard.d.ts.map +1 -0
- package/dist/schemas/dashboard.js +314 -0
- package/dist/schemas/dashboard.js.map +1 -0
- package/dist/schemas/datasource.d.ts +252 -0
- package/dist/schemas/datasource.d.ts.map +1 -0
- package/dist/schemas/datasource.js +186 -0
- package/dist/schemas/datasource.js.map +1 -0
- package/dist/schemas/index.d.ts +5 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +18 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/theme.d.ts +36 -0
- package/dist/schemas/theme.d.ts.map +1 -0
- package/dist/schemas/theme.js +48 -0
- package/dist/schemas/theme.js.map +1 -0
- package/dist/startup/index.d.ts +3 -0
- package/dist/startup/index.d.ts.map +1 -0
- package/dist/startup/index.js +15 -0
- package/dist/startup/index.js.map +1 -0
- package/dist/startup/sql-lint.d.ts +13 -0
- package/dist/startup/sql-lint.d.ts.map +1 -0
- package/dist/startup/sql-lint.js +86 -0
- package/dist/startup/sql-lint.js.map +1 -0
- package/dist/theme/builtin.d.ts +5 -0
- package/dist/theme/builtin.d.ts.map +1 -0
- package/dist/theme/builtin.js +102 -0
- package/dist/theme/builtin.js.map +1 -0
- package/dist/theme/context.d.ts +7 -0
- package/dist/theme/context.d.ts.map +1 -0
- package/dist/theme/context.js +26 -0
- package/dist/theme/context.js.map +1 -0
- package/dist/theme/index.d.ts +3 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +16 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/loader-export.d.ts +2 -0
- package/dist/theme/loader-export.d.ts.map +1 -0
- package/dist/theme/loader-export.js +15 -0
- package/dist/theme/loader-export.js.map +1 -0
- package/dist/theme/loader.d.ts +11 -0
- package/dist/theme/loader.d.ts.map +1 -0
- package/dist/theme/loader.js +60 -0
- package/dist/theme/loader.js.map +1 -0
- package/package.json +148 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// Copyright 2026 Mataki Labs LLC
|
|
3
|
+
//
|
|
4
|
+
// Licensed under the Business Source License 1.1 (the "License");
|
|
5
|
+
// you may not use this file except in compliance with the License.
|
|
6
|
+
// You may obtain a copy of the License at
|
|
7
|
+
//
|
|
8
|
+
// https://github.com/panoboard/panoboard/blob/main/LICENSE
|
|
9
|
+
//
|
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
// See the License for the specific language governing permissions and
|
|
14
|
+
// limitations under the License.
|
|
15
|
+
import { ResponsiveTreeMap } from "@nivo/treemap";
|
|
16
|
+
import { buildNivoTheme, getChartPalette } from "./nivo-theme";
|
|
17
|
+
import { useTheme } from "../../theme/context";
|
|
18
|
+
export function TreemapChart({ data, config }) {
|
|
19
|
+
const theme = useTheme();
|
|
20
|
+
const nivoTheme = buildNivoTheme(theme);
|
|
21
|
+
const palette = getChartPalette(theme);
|
|
22
|
+
const idKey = config.id ?? config.x ?? "id";
|
|
23
|
+
const valueKey = config.value ?? config.y ?? "value";
|
|
24
|
+
const parentKey = config.parent;
|
|
25
|
+
// Build hierarchical tree structure
|
|
26
|
+
let root;
|
|
27
|
+
if (parentKey) {
|
|
28
|
+
// Build tree from parent-child rows
|
|
29
|
+
const nodeMap = new Map();
|
|
30
|
+
for (const row of data) {
|
|
31
|
+
const id = String(row[idKey]);
|
|
32
|
+
nodeMap.set(id, { id, value: Number(row[valueKey]) || 0, children: [] });
|
|
33
|
+
}
|
|
34
|
+
const roots = [];
|
|
35
|
+
for (const row of data) {
|
|
36
|
+
const id = String(row[idKey]);
|
|
37
|
+
const parent = row[parentKey] ? String(row[parentKey]) : null;
|
|
38
|
+
if (parent && nodeMap.has(parent)) {
|
|
39
|
+
nodeMap.get(parent).children.push(nodeMap.get(id));
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
roots.push(nodeMap.get(id));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
root = { id: "root", children: roots };
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
// Flat: all rows are leaf nodes under a synthetic root
|
|
49
|
+
root = {
|
|
50
|
+
id: "root",
|
|
51
|
+
children: data.map((row) => ({
|
|
52
|
+
id: String(row[idKey]),
|
|
53
|
+
value: Number(row[valueKey]) || 0,
|
|
54
|
+
})),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
return (_jsx("div", { style: { height: "100%" }, children: _jsx(ResponsiveTreeMap, { data: root, identity: "id", value: "value", colors: palette, theme: nivoTheme, margin: { top: 8, right: 8, bottom: 8, left: 8 }, labelSkipSize: 12, label: "id", parentLabelPosition: "left", parentLabelTextColor: { from: "color", modifiers: [["darker", 2]] }, borderColor: { from: "color", modifiers: [["darker", 0.1]] } }) }));
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=TreemapChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreemapChart.js","sourceRoot":"","sources":["../../../src/components/panels/TreemapChart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface VideoPanelProps {
|
|
2
|
+
panel: {
|
|
3
|
+
video?: {
|
|
4
|
+
src?: string;
|
|
5
|
+
autoplay?: boolean;
|
|
6
|
+
loop?: boolean;
|
|
7
|
+
muted?: boolean;
|
|
8
|
+
poster?: string;
|
|
9
|
+
controls?: boolean;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export declare function VideoPanel({ panel }: VideoPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=VideoPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoPanel.d.ts","sourceRoot":"","sources":["../../../src/components/panels/VideoPanel.tsx"],"names":[],"mappings":"AAgBA,UAAU,eAAe;IACvB,KAAK,EAAE;QACL,KAAK,CAAC,EAAE;YACN,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,IAAI,CAAC,EAAE,OAAO,CAAC;YACf,KAAK,CAAC,EAAE,OAAO,CAAC;YAChB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;SACpB,CAAC;KACH,CAAC;CACH;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,eAAe,2CAiCpD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// Copyright 2026 Mataki Labs LLC
|
|
3
|
+
//
|
|
4
|
+
// Licensed under the Business Source License 1.1 (the "License");
|
|
5
|
+
// you may not use this file except in compliance with the License.
|
|
6
|
+
// You may obtain a copy of the License at
|
|
7
|
+
//
|
|
8
|
+
// https://github.com/panoboard/panoboard/blob/main/LICENSE
|
|
9
|
+
//
|
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
// See the License for the specific language governing permissions and
|
|
14
|
+
// limitations under the License.
|
|
15
|
+
import { useTheme } from "../../theme/context";
|
|
16
|
+
export function VideoPanel({ panel }) {
|
|
17
|
+
const theme = useTheme();
|
|
18
|
+
const cfg = panel.video ?? {};
|
|
19
|
+
const { src, autoplay = false, loop = false, muted = false, poster, controls = true, } = cfg;
|
|
20
|
+
if (!src) {
|
|
21
|
+
return (_jsx("div", { className: `flex items-center justify-center h-full ${theme.typography.muted}`, children: "No video source configured" }));
|
|
22
|
+
}
|
|
23
|
+
return (_jsx("video", { src: src, autoPlay: autoplay, loop: loop, muted: muted, poster: poster, controls: controls, className: "w-full h-full object-contain" }));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=VideoPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoPanel.js","sourceRoot":"","sources":["../../../src/components/panels/VideoPanel.tsx"],"names":[],"mappings":";AAAA,iCAAiC;AACjC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAe/C,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAmB;IACnD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IAC9B,MAAM,EACJ,GAAG,EACH,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,KAAK,EACb,MAAM,EACN,QAAQ,GAAG,IAAI,GAChB,GAAG,GAAG,CAAC;IAER,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CACL,cACE,SAAS,EAAE,2CAA2C,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,2CAG1E,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,gBACE,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,8BAA8B,GACxC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WaffleChart.d.ts","sourceRoot":"","sources":["../../../src/components/panels/WaffleChart.tsx"],"names":[],"mappings":"AAkBA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC;CACb;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,eAAe,2CA6C5D"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// Copyright 2026 Mataki Labs LLC
|
|
3
|
+
//
|
|
4
|
+
// Licensed under the Business Source License 1.1 (the "License");
|
|
5
|
+
// you may not use this file except in compliance with the License.
|
|
6
|
+
// You may obtain a copy of the License at
|
|
7
|
+
//
|
|
8
|
+
// https://github.com/panoboard/panoboard/blob/main/LICENSE
|
|
9
|
+
//
|
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
// See the License for the specific language governing permissions and
|
|
14
|
+
// limitations under the License.
|
|
15
|
+
import { ResponsiveWaffle } from "@nivo/waffle";
|
|
16
|
+
import { buildNivoTheme, getChartPalette } from "./nivo-theme";
|
|
17
|
+
import { useTheme } from "../../theme/context";
|
|
18
|
+
export function WaffleChart({ data, config }) {
|
|
19
|
+
const theme = useTheme();
|
|
20
|
+
const nivoTheme = buildNivoTheme(theme);
|
|
21
|
+
const palette = getChartPalette(theme);
|
|
22
|
+
const idKey = config.id ?? config.x ?? "id";
|
|
23
|
+
const valueKey = config.value ?? config.y ?? "value";
|
|
24
|
+
const labelKey = config.label ?? idKey;
|
|
25
|
+
const chartData = data.map((row) => ({
|
|
26
|
+
id: String(row[idKey]),
|
|
27
|
+
value: Number(row[valueKey]) || 0,
|
|
28
|
+
label: String(row[labelKey]),
|
|
29
|
+
}));
|
|
30
|
+
const total = chartData.reduce((sum, d) => sum + d.value, 0) || 100;
|
|
31
|
+
return (_jsx("div", { style: { height: "100%" }, children: _jsx(ResponsiveWaffle, { data: chartData, total: total, rows: 10, columns: 10, colors: palette, theme: nivoTheme, margin: { top: 16, right: 120, bottom: 16, left: 16 }, padding: 2, legends: [
|
|
32
|
+
{
|
|
33
|
+
anchor: "right",
|
|
34
|
+
direction: "column",
|
|
35
|
+
justify: false,
|
|
36
|
+
translateX: 120,
|
|
37
|
+
translateY: 0,
|
|
38
|
+
itemsSpacing: 4,
|
|
39
|
+
itemWidth: 100,
|
|
40
|
+
itemHeight: 20,
|
|
41
|
+
itemDirection: "left-to-right",
|
|
42
|
+
symbolSize: 12,
|
|
43
|
+
},
|
|
44
|
+
] }) }));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=WaffleChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WaffleChart.js","sourceRoot":"","sources":["../../../src/components/panels/WaffleChart.tsx"],"names":[],"mappings":";AAAA,iCAAiC;AACjC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAO/C,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAmB;IAC3D,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAW,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC;IACpD,MAAM,QAAQ,GAAW,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC;IAC7D,MAAM,QAAQ,GAAW,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;IAE/C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;QACjC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC7B,CAAC,CAAC,CAAC;IAEJ,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC;IAEpE,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAC5B,KAAC,gBAAgB,IACf,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,EAAE,EACR,OAAO,EAAE,EAAE,EACX,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EACrD,OAAO,EAAE,CAAC,EACV,OAAO,EAAE;gBACP;oBACE,MAAM,EAAE,OAAO;oBACf,SAAS,EAAE,QAAQ;oBACnB,OAAO,EAAE,KAAK;oBACd,UAAU,EAAE,GAAG;oBACf,UAAU,EAAE,CAAC;oBACb,YAAY,EAAE,CAAC;oBACf,SAAS,EAAE,GAAG;oBACd,UAAU,EAAE,EAAE;oBACd,aAAa,EAAE,eAAe;oBAC9B,UAAU,EAAE,EAAE;iBACf;aACF,GACD,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/panels/index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAsB/B,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAyBlE,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Copyright 2026 Mataki Labs LLC
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Business Source License 1.1 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://github.com/panoboard/panoboard/blob/main/LICENSE
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { BarChart } from "./BarChart";
|
|
15
|
+
import { LineChart } from "./LineChart";
|
|
16
|
+
import { AreaChart } from "./AreaChart";
|
|
17
|
+
import { PieChart } from "./PieChart";
|
|
18
|
+
import { DonutChart } from "./DonutChart";
|
|
19
|
+
import { ScatterChart } from "./ScatterChart";
|
|
20
|
+
import { HeatmapChart } from "./HeatmapChart";
|
|
21
|
+
import { FunnelChart } from "./FunnelChart";
|
|
22
|
+
import { SankeyChart } from "./SankeyChart";
|
|
23
|
+
import { CalendarHeatmap } from "./CalendarHeatmap";
|
|
24
|
+
import { RadarChart } from "./RadarChart";
|
|
25
|
+
import { TreemapChart } from "./TreemapChart";
|
|
26
|
+
import { BumpChart } from "./BumpChart";
|
|
27
|
+
import { BulletChart } from "./BulletChart";
|
|
28
|
+
import { RadialBarChart } from "./RadialBarChart";
|
|
29
|
+
import { BoxPlotChart } from "./BoxPlotChart";
|
|
30
|
+
import { WaffleChart } from "./WaffleChart";
|
|
31
|
+
import { StreamChart } from "./StreamChart";
|
|
32
|
+
import { SunburstChart } from "./SunburstChart";
|
|
33
|
+
import { VideoPanel } from "./VideoPanel";
|
|
34
|
+
export const panelRegistry = {
|
|
35
|
+
bar: BarChart,
|
|
36
|
+
line: LineChart,
|
|
37
|
+
area: AreaChart,
|
|
38
|
+
pie: PieChart,
|
|
39
|
+
donut: DonutChart,
|
|
40
|
+
scatter: ScatterChart,
|
|
41
|
+
heatmap: HeatmapChart,
|
|
42
|
+
funnel: FunnelChart,
|
|
43
|
+
sankey: SankeyChart,
|
|
44
|
+
calendar: CalendarHeatmap,
|
|
45
|
+
calendar_heatmap: CalendarHeatmap,
|
|
46
|
+
"calendar-heatmap": CalendarHeatmap,
|
|
47
|
+
radar: RadarChart,
|
|
48
|
+
treemap: TreemapChart,
|
|
49
|
+
bump: BumpChart,
|
|
50
|
+
bullet: BulletChart,
|
|
51
|
+
"radial-bar": RadialBarChart,
|
|
52
|
+
radialbar: RadialBarChart,
|
|
53
|
+
boxplot: BoxPlotChart,
|
|
54
|
+
"box-plot": BoxPlotChart,
|
|
55
|
+
waffle: WaffleChart,
|
|
56
|
+
stream: StreamChart,
|
|
57
|
+
sunburst: SunburstChart,
|
|
58
|
+
video: VideoPanel,
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/panels/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAGjC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAA6C;IACrE,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,WAAW;IACnB,QAAQ,EAAE,eAAe;IACzB,gBAAgB,EAAE,eAAe;IACjC,kBAAkB,EAAE,eAAe;IACnC,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,WAAW;IACnB,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,cAAc;IACzB,OAAO,EAAE,YAAY;IACrB,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,WAAW;IACnB,QAAQ,EAAE,aAAa;IACvB,KAAK,EAAE,UAAU;CAClB,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { Theme } from "../../schemas/theme";
|
|
2
|
+
/**
|
|
3
|
+
* Build a Nivo theme configuration object from a Panoboard Theme.
|
|
4
|
+
* Extracts hex colors from Tailwind class strings for use in SVG rendering.
|
|
5
|
+
*/
|
|
6
|
+
export declare function buildNivoTheme(theme: Theme): {
|
|
7
|
+
text: {
|
|
8
|
+
fontSize: number;
|
|
9
|
+
fill: string;
|
|
10
|
+
};
|
|
11
|
+
axis: {
|
|
12
|
+
ticks: {
|
|
13
|
+
text: {
|
|
14
|
+
fill: string;
|
|
15
|
+
fontSize: number;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
legend: {
|
|
19
|
+
text: {
|
|
20
|
+
fill: string;
|
|
21
|
+
fontSize: number;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
grid: {
|
|
26
|
+
line: {
|
|
27
|
+
stroke: string;
|
|
28
|
+
strokeWidth: number;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
tooltip: {
|
|
32
|
+
container: {
|
|
33
|
+
background: string;
|
|
34
|
+
border: string;
|
|
35
|
+
borderRadius: number;
|
|
36
|
+
padding: string;
|
|
37
|
+
color: string;
|
|
38
|
+
fontSize: number;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
legends: {
|
|
42
|
+
text: {
|
|
43
|
+
fill: string;
|
|
44
|
+
fontSize: number;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Get the chart color palette from a Panoboard Theme.
|
|
50
|
+
*/
|
|
51
|
+
export declare function getChartPalette(theme: Theme): string[];
|
|
52
|
+
export declare const nivoDarkTheme: {
|
|
53
|
+
text: {
|
|
54
|
+
fontSize: number;
|
|
55
|
+
fill: string;
|
|
56
|
+
};
|
|
57
|
+
axis: {
|
|
58
|
+
ticks: {
|
|
59
|
+
text: {
|
|
60
|
+
fill: string;
|
|
61
|
+
fontSize: number;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
legend: {
|
|
65
|
+
text: {
|
|
66
|
+
fill: string;
|
|
67
|
+
fontSize: number;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
grid: {
|
|
72
|
+
line: {
|
|
73
|
+
stroke: string;
|
|
74
|
+
strokeWidth: number;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
tooltip: {
|
|
78
|
+
container: {
|
|
79
|
+
background: string;
|
|
80
|
+
border: string;
|
|
81
|
+
borderRadius: number;
|
|
82
|
+
padding: string;
|
|
83
|
+
color: string;
|
|
84
|
+
fontSize: number;
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
legends: {
|
|
88
|
+
text: {
|
|
89
|
+
fill: string;
|
|
90
|
+
fontSize: number;
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
export declare const PALETTE: string[];
|
|
95
|
+
//# sourceMappingURL=nivo-theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nivo-theme.d.ts","sourceRoot":"","sources":["../../../src/components/panels/nivo-theme.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AA+DjD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2B1C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,CAEtD;AAGD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBzB,CAAC;AAEF,eAAO,MAAM,OAAO,UASnB,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
// Copyright 2026 Mataki Labs LLC
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Business Source License 1.1 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://github.com/panoboard/panoboard/blob/main/LICENSE
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
/**
|
|
15
|
+
* Extract a hex color from a Tailwind arbitrary value class.
|
|
16
|
+
* e.g. "text-[#f8f8f2]" → "#f8f8f2", "bg-[#282a36]" → "#282a36"
|
|
17
|
+
* Falls back to the provided default if no hex is found.
|
|
18
|
+
*/
|
|
19
|
+
function extractHex(twClass, fallback) {
|
|
20
|
+
const match = twClass.match(/#[0-9a-fA-F]{3,8}/);
|
|
21
|
+
if (match)
|
|
22
|
+
return match[0];
|
|
23
|
+
// Map common named Tailwind colors to hex values
|
|
24
|
+
const namedColors = {
|
|
25
|
+
"slate-50": "#f8fafc",
|
|
26
|
+
"slate-100": "#f1f5f9",
|
|
27
|
+
"slate-200": "#e2e8f0",
|
|
28
|
+
"slate-300": "#cbd5e1",
|
|
29
|
+
"slate-400": "#94a3b8",
|
|
30
|
+
"slate-500": "#64748b",
|
|
31
|
+
"slate-600": "#475569",
|
|
32
|
+
"slate-700": "#334155",
|
|
33
|
+
"slate-800": "#1e293b",
|
|
34
|
+
"slate-900": "#0f172a",
|
|
35
|
+
"slate-950": "#020617",
|
|
36
|
+
"gray-50": "#f9fafb",
|
|
37
|
+
"gray-100": "#f3f4f6",
|
|
38
|
+
"gray-200": "#e5e7eb",
|
|
39
|
+
"gray-300": "#d1d5db",
|
|
40
|
+
"gray-400": "#9ca3af",
|
|
41
|
+
"gray-500": "#6b7280",
|
|
42
|
+
"gray-600": "#4b5563",
|
|
43
|
+
"gray-700": "#374151",
|
|
44
|
+
"gray-800": "#1f2937",
|
|
45
|
+
"gray-900": "#111827",
|
|
46
|
+
"gray-950": "#030712",
|
|
47
|
+
"zinc-50": "#fafafa",
|
|
48
|
+
"zinc-100": "#f4f4f5",
|
|
49
|
+
"zinc-200": "#e4e4e7",
|
|
50
|
+
"zinc-300": "#d4d4d8",
|
|
51
|
+
"zinc-400": "#a1a1aa",
|
|
52
|
+
"zinc-500": "#71717a",
|
|
53
|
+
"zinc-600": "#52525b",
|
|
54
|
+
"zinc-700": "#3f3f46",
|
|
55
|
+
"zinc-800": "#27272a",
|
|
56
|
+
"zinc-900": "#18181b",
|
|
57
|
+
"zinc-950": "#09090b",
|
|
58
|
+
white: "#ffffff",
|
|
59
|
+
black: "#000000",
|
|
60
|
+
"indigo-300": "#a5b4fc",
|
|
61
|
+
"indigo-400": "#818cf8",
|
|
62
|
+
"indigo-500": "#6366f1",
|
|
63
|
+
"red-400": "#f87171",
|
|
64
|
+
"emerald-400": "#34d399",
|
|
65
|
+
"amber-400": "#fbbf24",
|
|
66
|
+
};
|
|
67
|
+
for (const [name, hex] of Object.entries(namedColors)) {
|
|
68
|
+
if (twClass.includes(name))
|
|
69
|
+
return hex;
|
|
70
|
+
}
|
|
71
|
+
return fallback;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Build a Nivo theme configuration object from a Panoboard Theme.
|
|
75
|
+
* Extracts hex colors from Tailwind class strings for use in SVG rendering.
|
|
76
|
+
*/
|
|
77
|
+
export function buildNivoTheme(theme) {
|
|
78
|
+
const axisText = extractHex(theme.typography.label, "#94a3b8");
|
|
79
|
+
const axisLegend = extractHex(theme.typography.muted, "#94a3b8");
|
|
80
|
+
const gridLine = extractHex(theme.surfaces.panelBorder, "#1e293b");
|
|
81
|
+
const tooltipBg = extractHex(theme.surfaces.panel, "#141b2d");
|
|
82
|
+
const tooltipBorder = extractHex(theme.surfaces.panelBorder, "#334155");
|
|
83
|
+
const tooltipText = extractHex(theme.typography.panelTitle, "#f1f5f9");
|
|
84
|
+
return {
|
|
85
|
+
text: { fontSize: 11, fill: axisText },
|
|
86
|
+
axis: {
|
|
87
|
+
ticks: { text: { fill: axisText, fontSize: 11 } },
|
|
88
|
+
legend: { text: { fill: axisLegend, fontSize: 12 } },
|
|
89
|
+
},
|
|
90
|
+
grid: { line: { stroke: gridLine, strokeWidth: 1 } },
|
|
91
|
+
tooltip: {
|
|
92
|
+
container: {
|
|
93
|
+
background: tooltipBg,
|
|
94
|
+
border: `1px solid ${tooltipBorder}`,
|
|
95
|
+
borderRadius: 8,
|
|
96
|
+
padding: "8px 12px",
|
|
97
|
+
color: tooltipText,
|
|
98
|
+
fontSize: 12,
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
legends: { text: { fill: axisLegend, fontSize: 11 } },
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get the chart color palette from a Panoboard Theme.
|
|
106
|
+
*/
|
|
107
|
+
export function getChartPalette(theme) {
|
|
108
|
+
return theme.palette;
|
|
109
|
+
}
|
|
110
|
+
// Legacy exports for backwards compatibility during migration
|
|
111
|
+
export const nivoDarkTheme = {
|
|
112
|
+
text: { fontSize: 11, fill: "#94a3b8" },
|
|
113
|
+
axis: {
|
|
114
|
+
ticks: { text: { fill: "#64748b", fontSize: 11 } },
|
|
115
|
+
legend: { text: { fill: "#94a3b8", fontSize: 12 } },
|
|
116
|
+
},
|
|
117
|
+
grid: { line: { stroke: "#1e293b", strokeWidth: 1 } },
|
|
118
|
+
tooltip: {
|
|
119
|
+
container: {
|
|
120
|
+
background: "#141b2d",
|
|
121
|
+
border: "1px solid #334155",
|
|
122
|
+
borderRadius: 8,
|
|
123
|
+
padding: "8px 12px",
|
|
124
|
+
color: "#f1f5f9",
|
|
125
|
+
fontSize: 12,
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
legends: { text: { fill: "#94a3b8", fontSize: 11 } },
|
|
129
|
+
};
|
|
130
|
+
export const PALETTE = [
|
|
131
|
+
"#818cf8",
|
|
132
|
+
"#34d399",
|
|
133
|
+
"#f59e0b",
|
|
134
|
+
"#fb7185",
|
|
135
|
+
"#22d3ee",
|
|
136
|
+
"#a78bfa",
|
|
137
|
+
"#2dd4bf",
|
|
138
|
+
"#fb923c",
|
|
139
|
+
];
|
|
140
|
+
//# sourceMappingURL=nivo-theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nivo-theme.js","sourceRoot":"","sources":["../../../src/components/panels/nivo-theme.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Theme } from "../../schemas/theme";
|
|
2
|
+
/**
|
|
3
|
+
* Given a series value string and the current theme, returns a hex color
|
|
4
|
+
* if the value has a known semantic meaning, or undefined otherwise.
|
|
5
|
+
*/
|
|
6
|
+
export declare function extractSemanticColor(value: string, theme: Theme): string | undefined;
|
|
7
|
+
//# sourceMappingURL=semantic-colors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-colors.d.ts","sourceRoot":"","sources":["../../../src/components/panels/semantic-colors.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAmFjD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,GACX,MAAM,GAAG,SAAS,CAOpB"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// Copyright 2026 Mataki Labs LLC
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Business Source License 1.1 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://github.com/panoboard/panoboard/blob/main/LICENSE
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
/**
|
|
15
|
+
* Maps well-known series values (like "critical", "success", "warning")
|
|
16
|
+
* to their semantic theme color. Returns a hex color or undefined if
|
|
17
|
+
* the value has no semantic meaning.
|
|
18
|
+
*
|
|
19
|
+
* Extracts the hex from Tailwind `text-xxx` classes in the theme.
|
|
20
|
+
*/
|
|
21
|
+
const SEMANTIC_MAP = {
|
|
22
|
+
// Negative / danger
|
|
23
|
+
critical: "negative",
|
|
24
|
+
error: "negative",
|
|
25
|
+
failed: "negative",
|
|
26
|
+
failure: "negative",
|
|
27
|
+
down: "negative",
|
|
28
|
+
urgent: "negative",
|
|
29
|
+
// Warning
|
|
30
|
+
warning: "warning",
|
|
31
|
+
warn: "warning",
|
|
32
|
+
degraded: "warning",
|
|
33
|
+
rolled_back: "warning",
|
|
34
|
+
pending: "warning",
|
|
35
|
+
high: "warning",
|
|
36
|
+
// Positive / success
|
|
37
|
+
success: "positive",
|
|
38
|
+
healthy: "positive",
|
|
39
|
+
ok: "positive",
|
|
40
|
+
up: "positive",
|
|
41
|
+
resolved: "positive",
|
|
42
|
+
completed: "positive",
|
|
43
|
+
active: "positive",
|
|
44
|
+
low: "positive",
|
|
45
|
+
// Neutral
|
|
46
|
+
info: "neutral",
|
|
47
|
+
unknown: "neutral",
|
|
48
|
+
stable: "neutral",
|
|
49
|
+
medium: "neutral",
|
|
50
|
+
open: "neutral",
|
|
51
|
+
};
|
|
52
|
+
const HEX_PATTERN = /#[0-9a-fA-F]{3,8}/;
|
|
53
|
+
const NAMED_COLORS = {
|
|
54
|
+
"emerald-400": "#34d399",
|
|
55
|
+
"emerald-500": "#10b981",
|
|
56
|
+
"emerald-600": "#059669",
|
|
57
|
+
"green-400": "#4ade80",
|
|
58
|
+
"green-500": "#22c55e",
|
|
59
|
+
"red-400": "#f87171",
|
|
60
|
+
"red-500": "#ef4444",
|
|
61
|
+
"red-600": "#dc2626",
|
|
62
|
+
"rose-400": "#fb7185",
|
|
63
|
+
"rose-500": "#f43f5e",
|
|
64
|
+
"amber-400": "#fbbf24",
|
|
65
|
+
"amber-500": "#f59e0b",
|
|
66
|
+
"amber-600": "#d97706",
|
|
67
|
+
"orange-400": "#fb923c",
|
|
68
|
+
"orange-500": "#f97316",
|
|
69
|
+
"yellow-400": "#facc15",
|
|
70
|
+
"yellow-500": "#eab308",
|
|
71
|
+
"slate-400": "#94a3b8",
|
|
72
|
+
"slate-500": "#64748b",
|
|
73
|
+
"gray-400": "#9ca3af",
|
|
74
|
+
"gray-500": "#6b7280",
|
|
75
|
+
"blue-400": "#60a5fa",
|
|
76
|
+
"blue-500": "#3b82f6",
|
|
77
|
+
};
|
|
78
|
+
function extractHex(twClass) {
|
|
79
|
+
const hexMatch = twClass.match(HEX_PATTERN);
|
|
80
|
+
if (hexMatch)
|
|
81
|
+
return hexMatch[0];
|
|
82
|
+
for (const [name, hex] of Object.entries(NAMED_COLORS)) {
|
|
83
|
+
if (twClass.includes(name))
|
|
84
|
+
return hex;
|
|
85
|
+
}
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Given a series value string and the current theme, returns a hex color
|
|
90
|
+
* if the value has a known semantic meaning, or undefined otherwise.
|
|
91
|
+
*/
|
|
92
|
+
export function extractSemanticColor(value, theme) {
|
|
93
|
+
const key = value.toLowerCase().replace(/[\s-]/g, "_");
|
|
94
|
+
const statusKey = SEMANTIC_MAP[key];
|
|
95
|
+
if (!statusKey)
|
|
96
|
+
return undefined;
|
|
97
|
+
const twClass = theme.status[statusKey];
|
|
98
|
+
return extractHex(twClass);
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=semantic-colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-colors.js","sourceRoot":"","sources":["../../../src/components/panels/semantic-colors.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAIjC;;;;;;GAMG;AAEH,MAAM,YAAY,GAA0C;IAC1D,oBAAoB;IACpB,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,UAAU;IAElB,UAAU;IACV,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,SAAS;IACtB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IAEf,qBAAqB;IACrB,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,UAAU;IACnB,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,UAAU;IACd,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,UAAU;IACrB,MAAM,EAAE,UAAU;IAClB,GAAG,EAAE,UAAU;IAEf,UAAU;IACV,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF,MAAM,WAAW,GAAG,mBAAmB,CAAC;AACxC,MAAM,YAAY,GAA2B;IAC3C,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;CACtB,CAAC;AAEF,SAAS,UAAU,CAAC,OAAe;IACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEjC,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACvD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC;IACzC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,KAAY;IAEZ,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACxC,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ButtonHTMLAttributes } from "react";
|
|
2
|
+
export type ButtonVariant = "primary" | "secondary" | "outline" | "ghost";
|
|
3
|
+
export type ButtonSize = "sm" | "md" | "lg";
|
|
4
|
+
export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
5
|
+
variant?: ButtonVariant;
|
|
6
|
+
size?: ButtonSize;
|
|
7
|
+
}
|
|
8
|
+
export declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
9
|
+
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Button.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAGlD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;AAC1E,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C,MAAM,WAAW,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAQD,eAAO,MAAM,MAAM,2GA+BlB,CAAC"}
|