@hexclave/dashboard-ui-components 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +5 -0
- package/dist/chunk-BE-pF4vm.js +34 -0
- package/dist/components/alert.d.ts +22 -0
- package/dist/components/alert.d.ts.map +1 -0
- package/dist/components/alert.js +75 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/analytics-chart/analytics-chart-pie.d.ts +67 -0
- package/dist/components/analytics-chart/analytics-chart-pie.d.ts.map +1 -0
- package/dist/components/analytics-chart/analytics-chart-pie.js +253 -0
- package/dist/components/analytics-chart/analytics-chart-pie.js.map +1 -0
- package/dist/components/analytics-chart/analytics-chart.d.ts +554 -0
- package/dist/components/analytics-chart/analytics-chart.d.ts.map +1 -0
- package/dist/components/analytics-chart/analytics-chart.js +1021 -0
- package/dist/components/analytics-chart/analytics-chart.js.map +1 -0
- package/dist/components/analytics-chart/default-analytics-chart-tooltip.d.ts +66 -0
- package/dist/components/analytics-chart/default-analytics-chart-tooltip.d.ts.map +1 -0
- package/dist/components/analytics-chart/default-analytics-chart-tooltip.js +179 -0
- package/dist/components/analytics-chart/default-analytics-chart-tooltip.js.map +1 -0
- package/dist/components/analytics-chart/format.d.ts +13 -0
- package/dist/components/analytics-chart/format.d.ts.map +1 -0
- package/dist/components/analytics-chart/format.js +138 -0
- package/dist/components/analytics-chart/format.js.map +1 -0
- package/dist/components/analytics-chart/index.d.ts +8 -0
- package/dist/components/analytics-chart/index.js +184 -0
- package/dist/components/analytics-chart/palette.d.ts +15 -0
- package/dist/components/analytics-chart/palette.d.ts.map +1 -0
- package/dist/components/analytics-chart/palette.js +60 -0
- package/dist/components/analytics-chart/palette.js.map +1 -0
- package/dist/components/analytics-chart/render-data-series.d.ts +28 -0
- package/dist/components/analytics-chart/render-data-series.d.ts.map +1 -0
- package/dist/components/analytics-chart/render-data-series.js +109 -0
- package/dist/components/analytics-chart/render-data-series.js.map +1 -0
- package/dist/components/analytics-chart/state.d.ts +54 -0
- package/dist/components/analytics-chart/state.d.ts.map +1 -0
- package/dist/components/analytics-chart/state.js +142 -0
- package/dist/components/analytics-chart/state.js.map +1 -0
- package/dist/components/analytics-chart/strings.d.ts +33 -0
- package/dist/components/analytics-chart/strings.d.ts.map +1 -0
- package/dist/components/analytics-chart/strings.js +37 -0
- package/dist/components/analytics-chart/strings.js.map +1 -0
- package/dist/components/analytics-chart/types.d.ts +157 -0
- package/dist/components/analytics-chart/types.d.ts.map +1 -0
- package/dist/components/analytics-chart/types.js +21 -0
- package/dist/components/analytics-chart/types.js.map +1 -0
- package/dist/components/badge.d.ts +40 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +75 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/button.d.ts +46 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +82 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/card.d.ts +87 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +161 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/chart-card.d.ts +50 -0
- package/dist/components/chart-card.d.ts.map +1 -0
- package/dist/components/chart-card.js +83 -0
- package/dist/components/chart-card.js.map +1 -0
- package/dist/components/chart-container.d.ts +51 -0
- package/dist/components/chart-container.d.ts.map +1 -0
- package/dist/components/chart-container.js +77 -0
- package/dist/components/chart-container.js.map +1 -0
- package/dist/components/chart-legend.d.ts +11 -0
- package/dist/components/chart-legend.d.ts.map +1 -0
- package/dist/components/chart-legend.js +37 -0
- package/dist/components/chart-legend.js.map +1 -0
- package/dist/components/chart-theme.d.ts +26 -0
- package/dist/components/chart-theme.d.ts.map +1 -0
- package/dist/components/chart-theme.js +64 -0
- package/dist/components/chart-theme.js.map +1 -0
- package/dist/components/chart-tooltip.d.ts +41 -0
- package/dist/components/chart-tooltip.d.ts.map +1 -0
- package/dist/components/chart-tooltip.js +89 -0
- package/dist/components/chart-tooltip.js.map +1 -0
- package/dist/components/cursor-blast-effect.d.ts +27 -0
- package/dist/components/cursor-blast-effect.d.ts.map +1 -0
- package/dist/components/cursor-blast-effect.js +244 -0
- package/dist/components/cursor-blast-effect.js.map +1 -0
- package/dist/components/data-grid/data-grid-sizing.d.ts +13 -0
- package/dist/components/data-grid/data-grid-sizing.d.ts.map +1 -0
- package/dist/components/data-grid/data-grid-sizing.js +44 -0
- package/dist/components/data-grid/data-grid-sizing.js.map +1 -0
- package/dist/components/data-grid/data-grid-toolbar.d.ts +31 -0
- package/dist/components/data-grid/data-grid-toolbar.d.ts.map +1 -0
- package/dist/components/data-grid/data-grid-toolbar.js +229 -0
- package/dist/components/data-grid/data-grid-toolbar.js.map +1 -0
- package/dist/components/data-grid/data-grid.d.ts +47 -0
- package/dist/components/data-grid/data-grid.d.ts.map +1 -0
- package/dist/components/data-grid/data-grid.js +927 -0
- package/dist/components/data-grid/data-grid.js.map +1 -0
- package/dist/components/data-grid/data-grid.test.d.ts +1 -0
- package/dist/components/data-grid/data-grid.test.js +297 -0
- package/dist/components/data-grid/data-grid.test.js.map +1 -0
- package/dist/components/data-grid/index.d.ts +9 -0
- package/dist/components/data-grid/index.js +148 -0
- package/dist/components/data-grid/state.d.ts +34 -0
- package/dist/components/data-grid/state.d.ts.map +1 -0
- package/dist/components/data-grid/state.js +199 -0
- package/dist/components/data-grid/state.js.map +1 -0
- package/dist/components/data-grid/strings.d.ts +8 -0
- package/dist/components/data-grid/strings.d.ts.map +1 -0
- package/dist/components/data-grid/strings.js +42 -0
- package/dist/components/data-grid/strings.js.map +1 -0
- package/dist/components/data-grid/types.d.ts +278 -0
- package/dist/components/data-grid/types.d.ts.map +1 -0
- package/dist/components/data-grid/types.js +0 -0
- package/dist/components/data-grid/use-data-source.d.ts +85 -0
- package/dist/components/data-grid/use-data-source.d.ts.map +1 -0
- package/dist/components/data-grid/use-data-source.js +244 -0
- package/dist/components/data-grid/use-data-source.js.map +1 -0
- package/dist/components/data-grid/use-url-state.d.ts +38 -0
- package/dist/components/data-grid/use-url-state.d.ts.map +1 -0
- package/dist/components/data-grid/use-url-state.js +214 -0
- package/dist/components/data-grid/use-url-state.js.map +1 -0
- package/dist/components/data-grid/use-url-state.test.d.ts +1 -0
- package/dist/components/data-grid/use-url-state.test.js +91 -0
- package/dist/components/data-grid/use-url-state.test.js.map +1 -0
- package/dist/components/dialog.d.ts +67 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +100 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/edit-mode.d.ts +12 -0
- package/dist/components/edit-mode.d.ts.map +1 -0
- package/dist/components/edit-mode.js +23 -0
- package/dist/components/edit-mode.js.map +1 -0
- package/dist/components/empty-state.d.ts +37 -0
- package/dist/components/empty-state.d.ts.map +1 -0
- package/dist/components/empty-state.js +53 -0
- package/dist/components/empty-state.js.map +1 -0
- package/dist/components/input.d.ts +18 -0
- package/dist/components/input.d.ts.map +1 -0
- package/dist/components/input.js +53 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/metric-card.d.ts +55 -0
- package/dist/components/metric-card.d.ts.map +1 -0
- package/dist/components/metric-card.js +112 -0
- package/dist/components/metric-card.js.map +1 -0
- package/dist/components/pill-toggle.d.ts +33 -0
- package/dist/components/pill-toggle.d.ts.map +1 -0
- package/dist/components/pill-toggle.js +86 -0
- package/dist/components/pill-toggle.js.map +1 -0
- package/dist/components/progress-bar.d.ts +35 -0
- package/dist/components/progress-bar.d.ts.map +1 -0
- package/dist/components/progress-bar.js +54 -0
- package/dist/components/progress-bar.js.map +1 -0
- package/dist/components/separator.d.ts +23 -0
- package/dist/components/separator.d.ts.map +1 -0
- package/dist/components/separator.js +29 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/skeleton.d.ts +24 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +30 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/table.d.ts +49 -0
- package/dist/components/table.d.ts.map +1 -0
- package/dist/components/table.js +84 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +38 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +113 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/dashboard-ui-components.global.js +25539 -0
- package/dist/dashboard-ui-components.global.js.map +7 -0
- package/dist/esm/components/alert.d.ts +22 -0
- package/dist/esm/components/alert.d.ts.map +1 -0
- package/dist/esm/components/alert.js +73 -0
- package/dist/esm/components/alert.js.map +1 -0
- package/dist/esm/components/analytics-chart/analytics-chart-pie.d.ts +67 -0
- package/dist/esm/components/analytics-chart/analytics-chart-pie.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/analytics-chart-pie.js +251 -0
- package/dist/esm/components/analytics-chart/analytics-chart-pie.js.map +1 -0
- package/dist/esm/components/analytics-chart/analytics-chart.d.ts +554 -0
- package/dist/esm/components/analytics-chart/analytics-chart.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/analytics-chart.js +1019 -0
- package/dist/esm/components/analytics-chart/analytics-chart.js.map +1 -0
- package/dist/esm/components/analytics-chart/default-analytics-chart-tooltip.d.ts +66 -0
- package/dist/esm/components/analytics-chart/default-analytics-chart-tooltip.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/default-analytics-chart-tooltip.js +176 -0
- package/dist/esm/components/analytics-chart/default-analytics-chart-tooltip.js.map +1 -0
- package/dist/esm/components/analytics-chart/format.d.ts +13 -0
- package/dist/esm/components/analytics-chart/format.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/format.js +133 -0
- package/dist/esm/components/analytics-chart/format.js.map +1 -0
- package/dist/esm/components/analytics-chart/index.d.ts +8 -0
- package/dist/esm/components/analytics-chart/index.js +9 -0
- package/dist/esm/components/analytics-chart/palette.d.ts +15 -0
- package/dist/esm/components/analytics-chart/palette.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/palette.js +55 -0
- package/dist/esm/components/analytics-chart/palette.js.map +1 -0
- package/dist/esm/components/analytics-chart/render-data-series.d.ts +28 -0
- package/dist/esm/components/analytics-chart/render-data-series.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/render-data-series.js +107 -0
- package/dist/esm/components/analytics-chart/render-data-series.js.map +1 -0
- package/dist/esm/components/analytics-chart/state.d.ts +54 -0
- package/dist/esm/components/analytics-chart/state.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/state.js +126 -0
- package/dist/esm/components/analytics-chart/state.js.map +1 -0
- package/dist/esm/components/analytics-chart/strings.d.ts +33 -0
- package/dist/esm/components/analytics-chart/strings.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/strings.js +34 -0
- package/dist/esm/components/analytics-chart/strings.js.map +1 -0
- package/dist/esm/components/analytics-chart/types.d.ts +157 -0
- package/dist/esm/components/analytics-chart/types.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/types.js +18 -0
- package/dist/esm/components/analytics-chart/types.js.map +1 -0
- package/dist/esm/components/badge.d.ts +40 -0
- package/dist/esm/components/badge.d.ts.map +1 -0
- package/dist/esm/components/badge.js +73 -0
- package/dist/esm/components/badge.js.map +1 -0
- package/dist/esm/components/button.d.ts +46 -0
- package/dist/esm/components/button.d.ts.map +1 -0
- package/dist/esm/components/button.js +79 -0
- package/dist/esm/components/button.js.map +1 -0
- package/dist/esm/components/card.d.ts +87 -0
- package/dist/esm/components/card.d.ts.map +1 -0
- package/dist/esm/components/card.js +155 -0
- package/dist/esm/components/card.js.map +1 -0
- package/dist/esm/components/chart-card.d.ts +50 -0
- package/dist/esm/components/chart-card.d.ts.map +1 -0
- package/dist/esm/components/chart-card.js +80 -0
- package/dist/esm/components/chart-card.js.map +1 -0
- package/dist/esm/components/chart-container.d.ts +51 -0
- package/dist/esm/components/chart-container.d.ts.map +1 -0
- package/dist/esm/components/chart-container.js +70 -0
- package/dist/esm/components/chart-container.js.map +1 -0
- package/dist/esm/components/chart-legend.d.ts +11 -0
- package/dist/esm/components/chart-legend.d.ts.map +1 -0
- package/dist/esm/components/chart-legend.js +34 -0
- package/dist/esm/components/chart-legend.js.map +1 -0
- package/dist/esm/components/chart-theme.d.ts +26 -0
- package/dist/esm/components/chart-theme.d.ts.map +1 -0
- package/dist/esm/components/chart-theme.js +59 -0
- package/dist/esm/components/chart-theme.js.map +1 -0
- package/dist/esm/components/chart-tooltip.d.ts +41 -0
- package/dist/esm/components/chart-tooltip.d.ts.map +1 -0
- package/dist/esm/components/chart-tooltip.js +84 -0
- package/dist/esm/components/chart-tooltip.js.map +1 -0
- package/dist/esm/components/cursor-blast-effect.d.ts +27 -0
- package/dist/esm/components/cursor-blast-effect.d.ts.map +1 -0
- package/dist/esm/components/cursor-blast-effect.js +242 -0
- package/dist/esm/components/cursor-blast-effect.js.map +1 -0
- package/dist/esm/components/data-grid/data-grid-sizing.d.ts +13 -0
- package/dist/esm/components/data-grid/data-grid-sizing.d.ts.map +1 -0
- package/dist/esm/components/data-grid/data-grid-sizing.js +38 -0
- package/dist/esm/components/data-grid/data-grid-sizing.js.map +1 -0
- package/dist/esm/components/data-grid/data-grid-toolbar.d.ts +31 -0
- package/dist/esm/components/data-grid/data-grid-toolbar.d.ts.map +1 -0
- package/dist/esm/components/data-grid/data-grid-toolbar.js +226 -0
- package/dist/esm/components/data-grid/data-grid-toolbar.js.map +1 -0
- package/dist/esm/components/data-grid/data-grid.d.ts +47 -0
- package/dist/esm/components/data-grid/data-grid.d.ts.map +1 -0
- package/dist/esm/components/data-grid/data-grid.js +923 -0
- package/dist/esm/components/data-grid/data-grid.js.map +1 -0
- package/dist/esm/components/data-grid/data-grid.test.d.ts +1 -0
- package/dist/esm/components/data-grid/data-grid.test.js +297 -0
- package/dist/esm/components/data-grid/data-grid.test.js.map +1 -0
- package/dist/esm/components/data-grid/index.d.ts +9 -0
- package/dist/esm/components/data-grid/index.js +9 -0
- package/dist/esm/components/data-grid/state.d.ts +34 -0
- package/dist/esm/components/data-grid/state.d.ts.map +1 -0
- package/dist/esm/components/data-grid/state.js +187 -0
- package/dist/esm/components/data-grid/state.js.map +1 -0
- package/dist/esm/components/data-grid/strings.d.ts +8 -0
- package/dist/esm/components/data-grid/strings.d.ts.map +1 -0
- package/dist/esm/components/data-grid/strings.js +39 -0
- package/dist/esm/components/data-grid/strings.js.map +1 -0
- package/dist/esm/components/data-grid/types.d.ts +278 -0
- package/dist/esm/components/data-grid/types.d.ts.map +1 -0
- package/dist/esm/components/data-grid/types.js +1 -0
- package/dist/esm/components/data-grid/use-data-source.d.ts +85 -0
- package/dist/esm/components/data-grid/use-data-source.d.ts.map +1 -0
- package/dist/esm/components/data-grid/use-data-source.js +242 -0
- package/dist/esm/components/data-grid/use-data-source.js.map +1 -0
- package/dist/esm/components/data-grid/use-url-state.d.ts +38 -0
- package/dist/esm/components/data-grid/use-url-state.d.ts.map +1 -0
- package/dist/esm/components/data-grid/use-url-state.js +212 -0
- package/dist/esm/components/data-grid/use-url-state.js.map +1 -0
- package/dist/esm/components/data-grid/use-url-state.test.d.ts +1 -0
- package/dist/esm/components/data-grid/use-url-state.test.js +91 -0
- package/dist/esm/components/data-grid/use-url-state.test.js.map +1 -0
- package/dist/esm/components/dialog.d.ts +67 -0
- package/dist/esm/components/dialog.d.ts.map +1 -0
- package/dist/esm/components/dialog.js +92 -0
- package/dist/esm/components/dialog.js.map +1 -0
- package/dist/esm/components/edit-mode.d.ts +12 -0
- package/dist/esm/components/edit-mode.d.ts.map +1 -0
- package/dist/esm/components/edit-mode.js +20 -0
- package/dist/esm/components/edit-mode.js.map +1 -0
- package/dist/esm/components/empty-state.d.ts +37 -0
- package/dist/esm/components/empty-state.d.ts.map +1 -0
- package/dist/esm/components/empty-state.js +50 -0
- package/dist/esm/components/empty-state.js.map +1 -0
- package/dist/esm/components/input.d.ts +18 -0
- package/dist/esm/components/input.d.ts.map +1 -0
- package/dist/esm/components/input.js +50 -0
- package/dist/esm/components/input.js.map +1 -0
- package/dist/esm/components/metric-card.d.ts +55 -0
- package/dist/esm/components/metric-card.d.ts.map +1 -0
- package/dist/esm/components/metric-card.js +109 -0
- package/dist/esm/components/metric-card.js.map +1 -0
- package/dist/esm/components/pill-toggle.d.ts +33 -0
- package/dist/esm/components/pill-toggle.d.ts.map +1 -0
- package/dist/esm/components/pill-toggle.js +84 -0
- package/dist/esm/components/pill-toggle.js.map +1 -0
- package/dist/esm/components/progress-bar.d.ts +35 -0
- package/dist/esm/components/progress-bar.d.ts.map +1 -0
- package/dist/esm/components/progress-bar.js +52 -0
- package/dist/esm/components/progress-bar.js.map +1 -0
- package/dist/esm/components/separator.d.ts +23 -0
- package/dist/esm/components/separator.d.ts.map +1 -0
- package/dist/esm/components/separator.js +27 -0
- package/dist/esm/components/separator.js.map +1 -0
- package/dist/esm/components/skeleton.d.ts +24 -0
- package/dist/esm/components/skeleton.d.ts.map +1 -0
- package/dist/esm/components/skeleton.js +28 -0
- package/dist/esm/components/skeleton.js.map +1 -0
- package/dist/esm/components/table.d.ts +49 -0
- package/dist/esm/components/table.d.ts.map +1 -0
- package/dist/esm/components/table.js +76 -0
- package/dist/esm/components/table.js.map +1 -0
- package/dist/esm/components/tabs.d.ts +38 -0
- package/dist/esm/components/tabs.d.ts.map +1 -0
- package/dist/esm/components/tabs.js +111 -0
- package/dist/esm/components/tabs.js.map +1 -0
- package/dist/esm/index.d.ts +24 -0
- package/dist/esm/index.js +27 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.js +291 -0
- package/package.json +73 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/components/pill-toggle.d.ts
|
|
4
|
+
type DesignPillToggleSize = "sm" | "md" | "lg";
|
|
5
|
+
type DesignPillToggleGradient = "blue" | "cyan" | "purple" | "green" | "orange" | "default";
|
|
6
|
+
type DesignPillToggleOption = {
|
|
7
|
+
id: string;
|
|
8
|
+
label: string;
|
|
9
|
+
icon?: React.ElementType;
|
|
10
|
+
};
|
|
11
|
+
type DesignPillToggleProps = {
|
|
12
|
+
options: DesignPillToggleOption[];
|
|
13
|
+
selected: string;
|
|
14
|
+
onSelect: (id: string) => void | Promise<void>;
|
|
15
|
+
size?: DesignPillToggleSize;
|
|
16
|
+
glassmorphic?: boolean;
|
|
17
|
+
gradient?: DesignPillToggleGradient; /** When false, hides labels and shows a tooltip on hover instead. Defaults to true. */
|
|
18
|
+
showLabels?: boolean;
|
|
19
|
+
className?: string;
|
|
20
|
+
};
|
|
21
|
+
declare function DesignPillToggle({
|
|
22
|
+
options,
|
|
23
|
+
selected,
|
|
24
|
+
onSelect,
|
|
25
|
+
size,
|
|
26
|
+
glassmorphic: glassmorphicProp,
|
|
27
|
+
gradient,
|
|
28
|
+
showLabels,
|
|
29
|
+
className
|
|
30
|
+
}: DesignPillToggleProps): react_jsx_runtime0.JSX.Element;
|
|
31
|
+
//#endregion
|
|
32
|
+
export { DesignPillToggle, DesignPillToggleOption, DesignPillToggleProps };
|
|
33
|
+
//# sourceMappingURL=pill-toggle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pill-toggle.d.ts","names":[],"sources":["../../../src/components/pill-toggle.tsx"],"mappings":";;;KAQK,oBAAA;AAAA,KACA,wBAAA;AAAA,KAEO,sBAAA;EACV,EAAA;EACA,KAAA;EACA,IAAA,GAAO,KAAA,CAAM,WAAA;AAAA;AAAA,KAGH,qBAAA;EACV,OAAA,EAAS,sBAAA;EACT,QAAA;EACA,QAAA,GAAW,EAAA,oBAAsB,OAAA;EACjC,IAAA,GAAO,oBAAA;EACP,YAAA;EACA,QAAA,GAAW,wBAAA,EAZqB;EAchC,UAAA;EACA,SAAA;AAAA;AAAA,iBA+Bc,gBAAA,CAAA;EACd,OAAA;EACA,QAAA;EACA,QAAA;EACA,IAAA;EACA,YAAA,EAAc,gBAAA;EACd,QAAA;EACA,UAAA;EACA;AAAA,GACC,qBAAA,GAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { Spinner, Tooltip, TooltipContent, TooltipTrigger, cn } from "@hexclave/ui";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { useState } from "react";
|
|
6
|
+
import { runAsynchronouslyWithAlert } from "@hexclave/shared/dist/utils/promises";
|
|
7
|
+
import { TooltipPortal } from "@radix-ui/react-tooltip";
|
|
8
|
+
import { useGlassmorphicDefault } from "./card.js";
|
|
9
|
+
|
|
10
|
+
//#region src/components/pill-toggle.tsx
|
|
11
|
+
const sizeClasses = new Map([
|
|
12
|
+
["sm", {
|
|
13
|
+
button: "px-3 py-1.5 text-xs",
|
|
14
|
+
icon: "h-3.5 w-3.5"
|
|
15
|
+
}],
|
|
16
|
+
["md", {
|
|
17
|
+
button: "px-4 py-2 text-sm",
|
|
18
|
+
icon: "h-4 w-4"
|
|
19
|
+
}],
|
|
20
|
+
["lg", {
|
|
21
|
+
button: "px-5 py-2.5 text-sm",
|
|
22
|
+
icon: "h-4 w-4"
|
|
23
|
+
}]
|
|
24
|
+
]);
|
|
25
|
+
const gradientClasses = new Map([
|
|
26
|
+
["blue", "ring-blue-500/20 dark:ring-blue-400/20"],
|
|
27
|
+
["cyan", "ring-cyan-500/20 dark:ring-cyan-400/20"],
|
|
28
|
+
["purple", "ring-purple-500/20 dark:ring-purple-400/20"],
|
|
29
|
+
["green", "ring-emerald-500/20 dark:ring-emerald-400/20"],
|
|
30
|
+
["orange", "ring-amber-500/20 dark:ring-amber-400/20"],
|
|
31
|
+
["default", "ring-black/[0.12] dark:ring-white/[0.06]"]
|
|
32
|
+
]);
|
|
33
|
+
function getMapValueOrThrow(map, key, mapName) {
|
|
34
|
+
const value = map.get(key);
|
|
35
|
+
if (!value) throw new Error(`Missing ${mapName} entry for key "${String(key)}"`);
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
function DesignPillToggle({ options, selected, onSelect, size = "md", glassmorphic: glassmorphicProp, gradient = "default", showLabels = true, className }) {
|
|
39
|
+
const glassmorphic = useGlassmorphicDefault(glassmorphicProp);
|
|
40
|
+
const sizeClass = getMapValueOrThrow(sizeClasses, size, "sizeClasses");
|
|
41
|
+
const activeRingClass = getMapValueOrThrow(gradientClasses, gradient, "gradientClasses");
|
|
42
|
+
const [loadingOptionId, setLoadingOptionId] = useState(null);
|
|
43
|
+
const handleClick = (optionId) => {
|
|
44
|
+
const result = onSelect(optionId);
|
|
45
|
+
if (result && typeof result.then === "function") {
|
|
46
|
+
setLoadingOptionId(optionId);
|
|
47
|
+
runAsynchronouslyWithAlert(Promise.resolve(result).finally(() => setLoadingOptionId(null)));
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
return /* @__PURE__ */ jsx("div", {
|
|
51
|
+
className: cn("inline-flex items-center gap-1 p-1 rounded-xl", glassmorphic ? "bg-foreground/[0.04] backdrop-blur-sm" : "bg-black/[0.08] dark:bg-white/[0.04]", className),
|
|
52
|
+
children: options.map((option) => {
|
|
53
|
+
const isActive = selected === option.id;
|
|
54
|
+
const Icon = option.icon;
|
|
55
|
+
const pill = /* @__PURE__ */ jsxs("button", {
|
|
56
|
+
onClick: () => handleClick(option.id),
|
|
57
|
+
disabled: loadingOptionId !== null,
|
|
58
|
+
className: cn("relative flex items-center gap-2 font-medium rounded-lg transition-all duration-150 hover:transition-none", sizeClass.button, isActive ? cn("bg-background text-foreground shadow-sm ring-1", glassmorphic ? "ring-foreground/[0.06] dark:bg-[hsl(240,71%,70%)]/10 dark:text-[hsl(240,71%,90%)] dark:ring-[hsl(240,71%,70%)]/20" : activeRingClass) : cn("text-muted-foreground hover:text-foreground", glassmorphic ? "hover:bg-background/50" : "hover:bg-black/[0.06] dark:hover:bg-white/[0.04]")),
|
|
59
|
+
children: [loadingOptionId === option.id && /* @__PURE__ */ jsx(Spinner, {
|
|
60
|
+
size: 12,
|
|
61
|
+
className: "absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 pointer-events-none"
|
|
62
|
+
}), /* @__PURE__ */ jsxs("span", {
|
|
63
|
+
className: cn("flex items-center gap-2", loadingOptionId === option.id && "invisible"),
|
|
64
|
+
children: [Icon && /* @__PURE__ */ jsx(Icon, { className: sizeClass.icon }), showLabels && option.label]
|
|
65
|
+
})]
|
|
66
|
+
}, option.id);
|
|
67
|
+
if (!showLabels) return /* @__PURE__ */ jsxs(Tooltip, {
|
|
68
|
+
delayDuration: 0,
|
|
69
|
+
children: [/* @__PURE__ */ jsx(TooltipTrigger, {
|
|
70
|
+
asChild: true,
|
|
71
|
+
children: pill
|
|
72
|
+
}), /* @__PURE__ */ jsx(TooltipPortal, { children: /* @__PURE__ */ jsx(TooltipContent, {
|
|
73
|
+
side: "top",
|
|
74
|
+
children: option.label
|
|
75
|
+
}) })]
|
|
76
|
+
}, option.id);
|
|
77
|
+
return pill;
|
|
78
|
+
})
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
//#endregion
|
|
83
|
+
export { DesignPillToggle };
|
|
84
|
+
//# sourceMappingURL=pill-toggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pill-toggle.js","names":[],"sources":["../../../src/components/pill-toggle.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport { cn, Spinner, Tooltip, TooltipContent, TooltipTrigger } from \"@stackframe/stack-ui\";\nimport { TooltipPortal } from \"@radix-ui/react-tooltip\";\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { useGlassmorphicDefault } from \"./card\";\n\ntype DesignPillToggleSize = \"sm\" | \"md\" | \"lg\";\ntype DesignPillToggleGradient = \"blue\" | \"cyan\" | \"purple\" | \"green\" | \"orange\" | \"default\";\n\nexport type DesignPillToggleOption = {\n id: string,\n label: string,\n icon?: React.ElementType,\n};\n\nexport type DesignPillToggleProps = {\n options: DesignPillToggleOption[],\n selected: string,\n onSelect: (id: string) => void | Promise<void>,\n size?: DesignPillToggleSize,\n glassmorphic?: boolean,\n gradient?: DesignPillToggleGradient,\n /** When false, hides labels and shows a tooltip on hover instead. Defaults to true. */\n showLabels?: boolean,\n className?: string,\n};\n\ntype SizeClass = {\n button: string,\n icon: string,\n};\n\nconst sizeClasses = new Map<DesignPillToggleSize, SizeClass>([\n [\"sm\", { button: \"px-3 py-1.5 text-xs\", icon: \"h-3.5 w-3.5\" }],\n [\"md\", { button: \"px-4 py-2 text-sm\", icon: \"h-4 w-4\" }],\n [\"lg\", { button: \"px-5 py-2.5 text-sm\", icon: \"h-4 w-4\" }],\n]);\n\nconst gradientClasses = new Map<DesignPillToggleGradient, string>([\n [\"blue\", \"ring-blue-500/20 dark:ring-blue-400/20\"],\n [\"cyan\", \"ring-cyan-500/20 dark:ring-cyan-400/20\"],\n [\"purple\", \"ring-purple-500/20 dark:ring-purple-400/20\"],\n [\"green\", \"ring-emerald-500/20 dark:ring-emerald-400/20\"],\n [\"orange\", \"ring-amber-500/20 dark:ring-amber-400/20\"],\n [\"default\", \"ring-black/[0.12] dark:ring-white/[0.06]\"],\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 function DesignPillToggle({\n options,\n selected,\n onSelect,\n size = \"md\",\n glassmorphic: glassmorphicProp,\n gradient = \"default\",\n showLabels = true,\n className,\n}: DesignPillToggleProps) {\n const glassmorphic = useGlassmorphicDefault(glassmorphicProp);\n const sizeClass = getMapValueOrThrow(sizeClasses, size, \"sizeClasses\");\n const activeRingClass = getMapValueOrThrow(gradientClasses, gradient, \"gradientClasses\");\n\n const [loadingOptionId, setLoadingOptionId] = useState<string | null>(null);\n\n const handleClick = (optionId: string) => {\n const result = onSelect(optionId);\n if (result && typeof (result as Promise<void>).then === \"function\") {\n setLoadingOptionId(optionId);\n runAsynchronouslyWithAlert(\n Promise.resolve(result).finally(() => setLoadingOptionId(null))\n );\n }\n };\n\n return (\n <div\n className={cn(\n \"inline-flex items-center gap-1 p-1 rounded-xl\",\n glassmorphic\n ? \"bg-foreground/[0.04] backdrop-blur-sm\"\n : \"bg-black/[0.08] dark:bg-white/[0.04]\",\n className\n )}\n >\n {options.map((option) => {\n const isActive = selected === option.id;\n const Icon = option.icon;\n\n const pill = (\n <button\n key={option.id}\n onClick={() => handleClick(option.id)}\n disabled={loadingOptionId !== null}\n className={cn(\n \"relative flex items-center gap-2 font-medium rounded-lg transition-all duration-150 hover:transition-none\",\n sizeClass.button,\n isActive\n ? cn(\n \"bg-background text-foreground shadow-sm ring-1\",\n glassmorphic\n ? \"ring-foreground/[0.06] dark:bg-[hsl(240,71%,70%)]/10 dark:text-[hsl(240,71%,90%)] dark:ring-[hsl(240,71%,70%)]/20\"\n : activeRingClass\n )\n : cn(\n \"text-muted-foreground hover:text-foreground\",\n glassmorphic\n ? \"hover:bg-background/50\"\n : \"hover:bg-black/[0.06] dark:hover:bg-white/[0.04]\"\n )\n )}\n >\n {loadingOptionId === option.id && (\n <Spinner\n size={12}\n className=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 pointer-events-none\"\n />\n )}\n <span className={cn(\n \"flex items-center gap-2\",\n loadingOptionId === option.id && \"invisible\"\n )}>\n {Icon && <Icon className={sizeClass.icon} />}\n {showLabels && option.label}\n </span>\n </button>\n );\n\n if (!showLabels) {\n return (\n <Tooltip key={option.id} delayDuration={0}>\n <TooltipTrigger asChild>\n {pill}\n </TooltipTrigger>\n <TooltipPortal>\n <TooltipContent side=\"top\">\n {option.label}\n </TooltipContent>\n </TooltipPortal>\n </Tooltip>\n );\n }\n\n return pill;\n })}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;AAkCA,MAAM,cAAc,IAAI,IAAqC;CAC3D,CAAC,MAAM;EAAE,QAAQ;EAAuB,MAAM;EAAe,CAAC;CAC9D,CAAC,MAAM;EAAE,QAAQ;EAAqB,MAAM;EAAW,CAAC;CACxD,CAAC,MAAM;EAAE,QAAQ;EAAuB,MAAM;EAAW,CAAC;CAC3D,CAAC;AAEF,MAAM,kBAAkB,IAAI,IAAsC;CAChE,CAAC,QAAQ,yCAAyC;CAClD,CAAC,QAAQ,yCAAyC;CAClD,CAAC,UAAU,6CAA6C;CACxD,CAAC,SAAS,+CAA+C;CACzD,CAAC,UAAU,2CAA2C;CACtD,CAAC,WAAW,2CAA2C;CACxD,CAAC;AAEF,SAAS,mBAAiC,KAAwB,KAAW,SAAiB;CAC5F,MAAM,QAAQ,IAAI,IAAI,IAAI;AAC1B,KAAI,CAAC,MACH,OAAM,IAAI,MAAM,WAAW,QAAQ,kBAAkB,OAAO,IAAI,CAAC,GAAG;AAEtE,QAAO;;AAGT,SAAgB,iBAAiB,EAC/B,SACA,UACA,UACA,OAAO,MACP,cAAc,kBACd,WAAW,WACX,aAAa,MACb,aACwB;CACxB,MAAM,eAAe,uBAAuB,iBAAiB;CAC7D,MAAM,YAAY,mBAAmB,aAAa,MAAM,cAAc;CACtE,MAAM,kBAAkB,mBAAmB,iBAAiB,UAAU,kBAAkB;CAExF,MAAM,CAAC,iBAAiB,sBAAsB,SAAwB,KAAK;CAE3E,MAAM,eAAe,aAAqB;EACxC,MAAM,SAAS,SAAS,SAAS;AACjC,MAAI,UAAU,OAAQ,OAAyB,SAAS,YAAY;AAClE,sBAAmB,SAAS;AAC5B,8BACE,QAAQ,QAAQ,OAAO,CAAC,cAAc,mBAAmB,KAAK,CAAC,CAChE;;;AAIL,QACE,oBAAC;EACC,WAAW,GACT,iDACA,eACI,0CACA,wCACJ,UACD;YAEA,QAAQ,KAAK,WAAW;GACvB,MAAM,WAAW,aAAa,OAAO;GACrC,MAAM,OAAO,OAAO;GAEpB,MAAM,OACJ,qBAAC;IAEC,eAAe,YAAY,OAAO,GAAG;IACrC,UAAU,oBAAoB;IAC9B,WAAW,GACT,6GACA,UAAU,QACV,WACI,GACA,kDACA,eACI,sHACA,gBACL,GACC,GACA,+CACA,eACI,2BACA,mDACL,CACJ;eAEA,oBAAoB,OAAO,MAC1B,oBAAC;KACC,MAAM;KACN,WAAU;MACV,EAEJ,qBAAC;KAAK,WAAW,GACf,2BACA,oBAAoB,OAAO,MAAM,YAClC;gBACE,QAAQ,oBAAC,QAAK,WAAW,UAAU,OAAQ,EAC3C,cAAc,OAAO;MACjB;MAjCF,OAAO,GAkCL;AAGX,OAAI,CAAC,WACH,QACE,qBAAC;IAAwB,eAAe;eACtC,oBAAC;KAAe;eACb;MACc,EACjB,oBAAC,2BACC,oBAAC;KAAe,MAAK;eAClB,OAAO;MACO,GACH;MARJ,OAAO,GASX;AAId,UAAO;IACP;GACE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/components/progress-bar.d.ts
|
|
4
|
+
type DesignProgressBarGradient = "blue" | "cyan" | "purple" | "green" | "orange" | "default";
|
|
5
|
+
type DesignProgressBarProps = {
|
|
6
|
+
value: number;
|
|
7
|
+
max?: number;
|
|
8
|
+
gradient?: DesignProgressBarGradient;
|
|
9
|
+
label?: string;
|
|
10
|
+
showPercentage?: boolean;
|
|
11
|
+
size?: "sm" | "md" | "lg";
|
|
12
|
+
className?: string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Horizontal progress bar for quota / fill-level indicators. Takes a
|
|
16
|
+
* `value` and optional `max` (defaults to 100 — pass raw values, the
|
|
17
|
+
* component computes the percentage). Optional label + percentage display.
|
|
18
|
+
*
|
|
19
|
+
* ```tsx
|
|
20
|
+
* <DesignProgressBar value={usedSeats} max={totalSeats} label="Seats used" showPercentage />
|
|
21
|
+
* <DesignProgressBar value={75} gradient="green" />
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
declare function DesignProgressBar({
|
|
25
|
+
value,
|
|
26
|
+
max,
|
|
27
|
+
gradient,
|
|
28
|
+
label,
|
|
29
|
+
showPercentage,
|
|
30
|
+
size,
|
|
31
|
+
className
|
|
32
|
+
}: DesignProgressBarProps): react_jsx_runtime0.JSX.Element;
|
|
33
|
+
//#endregion
|
|
34
|
+
export { DesignProgressBar, DesignProgressBarProps };
|
|
35
|
+
//# sourceMappingURL=progress-bar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-bar.d.ts","names":[],"sources":["../../../src/components/progress-bar.tsx"],"mappings":";;;KAIK,yBAAA;AAAA,KAWO,sBAAA;EACV,KAAA;EACA,GAAA;EACA,QAAA,GAAW,yBAAA;EACX,KAAA;EACA,cAAA;EACA,IAAA;EACA,SAAA;AAAA;;;;;;;;;;;iBAac,iBAAA,CAAA;EACd,KAAA;EACA,GAAA;EACA,QAAA;EACA,KAAA;EACA,cAAA;EACA,IAAA;EACA;AAAA,GACC,sBAAA,GAAsB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { cn } from "@hexclave/ui";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
|
|
6
|
+
//#region src/components/progress-bar.tsx
|
|
7
|
+
const fillClasses = new Map([
|
|
8
|
+
["blue", "bg-blue-500 dark:bg-blue-400"],
|
|
9
|
+
["cyan", "bg-cyan-500 dark:bg-cyan-400"],
|
|
10
|
+
["purple", "bg-purple-500 dark:bg-purple-400"],
|
|
11
|
+
["green", "bg-emerald-500 dark:bg-emerald-400"],
|
|
12
|
+
["orange", "bg-amber-500 dark:bg-amber-400"],
|
|
13
|
+
["default", "bg-foreground/60"]
|
|
14
|
+
]);
|
|
15
|
+
/**
|
|
16
|
+
* Horizontal progress bar for quota / fill-level indicators. Takes a
|
|
17
|
+
* `value` and optional `max` (defaults to 100 — pass raw values, the
|
|
18
|
+
* component computes the percentage). Optional label + percentage display.
|
|
19
|
+
*
|
|
20
|
+
* ```tsx
|
|
21
|
+
* <DesignProgressBar value={usedSeats} max={totalSeats} label="Seats used" showPercentage />
|
|
22
|
+
* <DesignProgressBar value={75} gradient="green" />
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
function DesignProgressBar({ value, max = 100, gradient = "default", label, showPercentage = false, size = "md", className }) {
|
|
26
|
+
const percentage = max > 0 ? Math.min(Math.max(value / max * 100, 0), 100) : 0;
|
|
27
|
+
const fillClass = fillClasses.get(gradient) ?? "bg-foreground/60";
|
|
28
|
+
const trackHeight = size === "sm" ? "h-1.5" : size === "lg" ? "h-3" : "h-2";
|
|
29
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
30
|
+
className: cn("w-full", className),
|
|
31
|
+
children: [(label || showPercentage) && /* @__PURE__ */ jsxs("div", {
|
|
32
|
+
className: "flex items-center justify-between mb-2",
|
|
33
|
+
children: [label && /* @__PURE__ */ jsx("span", {
|
|
34
|
+
className: "text-xs font-medium text-muted-foreground",
|
|
35
|
+
children: label
|
|
36
|
+
}), showPercentage && /* @__PURE__ */ jsxs("span", {
|
|
37
|
+
className: "text-xs font-medium tabular-nums text-foreground",
|
|
38
|
+
children: [Math.round(percentage), "%"]
|
|
39
|
+
})]
|
|
40
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
41
|
+
className: cn("w-full rounded-full bg-black/[0.06] dark:bg-white/[0.06] overflow-hidden", trackHeight),
|
|
42
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
43
|
+
className: cn("h-full rounded-full transition-all duration-300 ease-out", fillClass),
|
|
44
|
+
style: { width: `${percentage}%` }
|
|
45
|
+
})
|
|
46
|
+
})]
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
//#endregion
|
|
51
|
+
export { DesignProgressBar };
|
|
52
|
+
//# sourceMappingURL=progress-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-bar.js","names":[],"sources":["../../../src/components/progress-bar.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@stackframe/stack-ui\";\n\ntype DesignProgressBarGradient = \"blue\" | \"cyan\" | \"purple\" | \"green\" | \"orange\" | \"default\";\n\nconst fillClasses = new Map<DesignProgressBarGradient, string>([\n [\"blue\", \"bg-blue-500 dark:bg-blue-400\"],\n [\"cyan\", \"bg-cyan-500 dark:bg-cyan-400\"],\n [\"purple\", \"bg-purple-500 dark:bg-purple-400\"],\n [\"green\", \"bg-emerald-500 dark:bg-emerald-400\"],\n [\"orange\", \"bg-amber-500 dark:bg-amber-400\"],\n [\"default\", \"bg-foreground/60\"],\n]);\n\nexport type DesignProgressBarProps = {\n value: number,\n max?: number,\n gradient?: DesignProgressBarGradient,\n label?: string,\n showPercentage?: boolean,\n size?: \"sm\" | \"md\" | \"lg\",\n className?: string,\n};\n\n/**\n * Horizontal progress bar for quota / fill-level indicators. Takes a\n * `value` and optional `max` (defaults to 100 — pass raw values, the\n * component computes the percentage). Optional label + percentage display.\n *\n * ```tsx\n * <DesignProgressBar value={usedSeats} max={totalSeats} label=\"Seats used\" showPercentage />\n * <DesignProgressBar value={75} gradient=\"green\" />\n * ```\n */\nexport function DesignProgressBar({\n value,\n max = 100,\n gradient = \"default\",\n label,\n showPercentage = false,\n size = \"md\",\n className,\n}: DesignProgressBarProps) {\n const percentage = max > 0 ? Math.min(Math.max((value / max) * 100, 0), 100) : 0;\n const fillClass = fillClasses.get(gradient) ?? \"bg-foreground/60\";\n\n const trackHeight = size === \"sm\" ? \"h-1.5\" : size === \"lg\" ? \"h-3\" : \"h-2\";\n\n return (\n <div className={cn(\"w-full\", className)}>\n {(label || showPercentage) && (\n <div className=\"flex items-center justify-between mb-2\">\n {label && (\n <span className=\"text-xs font-medium text-muted-foreground\">\n {label}\n </span>\n )}\n {showPercentage && (\n <span className=\"text-xs font-medium tabular-nums text-foreground\">\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n )}\n <div\n className={cn(\n \"w-full rounded-full bg-black/[0.06] dark:bg-white/[0.06] overflow-hidden\",\n trackHeight\n )}\n >\n <div\n className={cn(\n \"h-full rounded-full transition-all duration-300 ease-out\",\n fillClass\n )}\n style={{ width: `${percentage}%` }}\n />\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AAMA,MAAM,cAAc,IAAI,IAAuC;CAC7D,CAAC,QAAQ,+BAA+B;CACxC,CAAC,QAAQ,+BAA+B;CACxC,CAAC,UAAU,mCAAmC;CAC9C,CAAC,SAAS,qCAAqC;CAC/C,CAAC,UAAU,iCAAiC;CAC5C,CAAC,WAAW,mBAAmB;CAChC,CAAC;;;;;;;;;;;AAsBF,SAAgB,kBAAkB,EAChC,OACA,MAAM,KACN,WAAW,WACX,OACA,iBAAiB,OACjB,OAAO,MACP,aACyB;CACzB,MAAM,aAAa,MAAM,IAAI,KAAK,IAAI,KAAK,IAAK,QAAQ,MAAO,KAAK,EAAE,EAAE,IAAI,GAAG;CAC/E,MAAM,YAAY,YAAY,IAAI,SAAS,IAAI;CAE/C,MAAM,cAAc,SAAS,OAAO,UAAU,SAAS,OAAO,QAAQ;AAEtE,QACE,qBAAC;EAAI,WAAW,GAAG,UAAU,UAAU;cACnC,SAAS,mBACT,qBAAC;GAAI,WAAU;cACZ,SACC,oBAAC;IAAK,WAAU;cACb;KACI,EAER,kBACC,qBAAC;IAAK,WAAU;eACb,KAAK,MAAM,WAAW,EAAC;KACnB;IAEL,EAER,oBAAC;GACC,WAAW,GACT,4EACA,YACD;aAED,oBAAC;IACC,WAAW,GACT,4DACA,UACD;IACD,OAAO,EAAE,OAAO,GAAG,WAAW,IAAI;KAClC;IACE;GACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/components/separator.d.ts
|
|
4
|
+
type DesignSeparatorProps = {
|
|
5
|
+
orientation?: "horizontal" | "vertical";
|
|
6
|
+
} & React.HTMLAttributes<HTMLDivElement>;
|
|
7
|
+
/**
|
|
8
|
+
* Thin divider line. Use `orientation="vertical"` inside a flex row to
|
|
9
|
+
* separate inline groups, or omit for a horizontal rule between sections.
|
|
10
|
+
*
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <DesignSeparator />
|
|
13
|
+
* <DesignSeparator orientation="vertical" className="h-6" />
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare function DesignSeparator({
|
|
17
|
+
orientation,
|
|
18
|
+
className,
|
|
19
|
+
...props
|
|
20
|
+
}: DesignSeparatorProps): react_jsx_runtime0.JSX.Element;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { DesignSeparator, DesignSeparatorProps };
|
|
23
|
+
//# sourceMappingURL=separator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"separator.d.ts","names":[],"sources":["../../../src/components/separator.tsx"],"mappings":";;;KAIY,oBAAA;EACV,WAAA;AAAA,IACE,KAAA,CAAM,cAAA,CAAe,cAAA;AAFzB;;;;;;;;;AAAA,iBAagB,eAAA,CAAA;EACd,WAAA;EACA,SAAA;EAAA,GACG;AAAA,GACF,oBAAA,GAAoB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { cn } from "@hexclave/ui";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
|
|
6
|
+
//#region src/components/separator.tsx
|
|
7
|
+
/**
|
|
8
|
+
* Thin divider line. Use `orientation="vertical"` inside a flex row to
|
|
9
|
+
* separate inline groups, or omit for a horizontal rule between sections.
|
|
10
|
+
*
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <DesignSeparator />
|
|
13
|
+
* <DesignSeparator orientation="vertical" className="h-6" />
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
function DesignSeparator({ orientation = "horizontal", className, ...props }) {
|
|
17
|
+
return /* @__PURE__ */ jsx("div", {
|
|
18
|
+
role: "separator",
|
|
19
|
+
"aria-orientation": orientation,
|
|
20
|
+
className: cn(orientation === "horizontal" ? "h-[1px] w-full bg-black/[0.08] dark:bg-white/[0.06]" : "w-[1px] h-full bg-black/[0.08] dark:bg-white/[0.06]", className),
|
|
21
|
+
...props
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
//#endregion
|
|
26
|
+
export { DesignSeparator };
|
|
27
|
+
//# sourceMappingURL=separator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"separator.js","names":[],"sources":["../../../src/components/separator.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@stackframe/stack-ui\";\n\nexport type DesignSeparatorProps = {\n orientation?: \"horizontal\" | \"vertical\",\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Thin divider line. Use `orientation=\"vertical\"` inside a flex row to\n * separate inline groups, or omit for a horizontal rule between sections.\n *\n * ```tsx\n * <DesignSeparator />\n * <DesignSeparator orientation=\"vertical\" className=\"h-6\" />\n * ```\n */\nexport function DesignSeparator({\n orientation = \"horizontal\",\n className,\n ...props\n}: DesignSeparatorProps) {\n return (\n <div\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(\n orientation === \"horizontal\"\n ? \"h-[1px] w-full bg-black/[0.08] dark:bg-white/[0.06]\"\n : \"w-[1px] h-full bg-black/[0.08] dark:bg-white/[0.06]\",\n className\n )}\n {...props}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;AAiBA,SAAgB,gBAAgB,EAC9B,cAAc,cACd,WACA,GAAG,SACoB;AACvB,QACE,oBAAC;EACC,MAAK;EACL,oBAAkB;EAClB,WAAW,GACT,gBAAgB,eACZ,wDACA,uDACJ,UACD;EACD,GAAI;GACJ"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/components/skeleton.d.ts
|
|
5
|
+
type DesignSkeletonProps = React.HTMLAttributes<HTMLDivElement>;
|
|
6
|
+
/**
|
|
7
|
+
* Animated placeholder block. Use while data is loading — size it via
|
|
8
|
+
* `className` to match the content it's standing in for.
|
|
9
|
+
*
|
|
10
|
+
* ```tsx
|
|
11
|
+
* <DesignSkeleton className="h-4 w-[200px]" />
|
|
12
|
+
* <DesignSkeleton className="h-24 w-full rounded-lg" />
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* Rule: always show a skeleton during initial load, not a spinner or
|
|
16
|
+
* "Loading..." text. Skeletons preserve layout and feel faster.
|
|
17
|
+
*/
|
|
18
|
+
declare function DesignSkeleton({
|
|
19
|
+
className,
|
|
20
|
+
...props
|
|
21
|
+
}: DesignSkeletonProps): react_jsx_runtime0.JSX.Element;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { DesignSkeleton, DesignSkeletonProps };
|
|
24
|
+
//# sourceMappingURL=skeleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton.d.ts","names":[],"sources":["../../../src/components/skeleton.tsx"],"mappings":";;;;KAKY,mBAAA,GAAsB,KAAA,CAAM,cAAA,CAAe,cAAA;;;AAAvD;;;;;;;;;AAcA;iBAAgB,cAAA,CAAA;EAAiB,SAAA;EAAA,GAAc;AAAA,GAAS,mBAAA,GAAmB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { cn } from "@hexclave/ui";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
|
|
6
|
+
//#region src/components/skeleton.tsx
|
|
7
|
+
/**
|
|
8
|
+
* Animated placeholder block. Use while data is loading — size it via
|
|
9
|
+
* `className` to match the content it's standing in for.
|
|
10
|
+
*
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <DesignSkeleton className="h-4 w-[200px]" />
|
|
13
|
+
* <DesignSkeleton className="h-24 w-full rounded-lg" />
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Rule: always show a skeleton during initial load, not a spinner or
|
|
17
|
+
* "Loading..." text. Skeletons preserve layout and feel faster.
|
|
18
|
+
*/
|
|
19
|
+
function DesignSkeleton({ className, ...props }) {
|
|
20
|
+
return /* @__PURE__ */ jsx("div", {
|
|
21
|
+
className: cn("animate-pulse rounded-md bg-black/[0.06] dark:bg-white/[0.06]", className),
|
|
22
|
+
...props
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//#endregion
|
|
27
|
+
export { DesignSkeleton };
|
|
28
|
+
//# sourceMappingURL=skeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton.js","names":[],"sources":["../../../src/components/skeleton.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@stackframe/stack-ui\";\nimport type React from \"react\";\n\nexport type DesignSkeletonProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Animated placeholder block. Use while data is loading — size it via\n * `className` to match the content it's standing in for.\n *\n * ```tsx\n * <DesignSkeleton className=\"h-4 w-[200px]\" />\n * <DesignSkeleton className=\"h-24 w-full rounded-lg\" />\n * ```\n *\n * Rule: always show a skeleton during initial load, not a spinner or\n * \"Loading...\" text. Skeletons preserve layout and feel faster.\n */\nexport function DesignSkeleton({ className, ...props }: DesignSkeletonProps) {\n return (\n <div\n className={cn(\n \"animate-pulse rounded-md bg-black/[0.06] dark:bg-white/[0.06]\",\n className\n )}\n {...props}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAmBA,SAAgB,eAAe,EAAE,WAAW,GAAG,SAA8B;AAC3E,QACE,oBAAC;EACC,WAAW,GACT,iEACA,UACD;EACD,GAAI;GACJ"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/components/table.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Simple static table — header + rows + cells. Use this for small,
|
|
6
|
+
* read-only lists (< 20 rows, no interaction). For anything that needs
|
|
7
|
+
* sorting, filtering, pagination, or virtualization, use `DataGrid` +
|
|
8
|
+
* `useDataSource` instead.
|
|
9
|
+
*
|
|
10
|
+
* ```tsx
|
|
11
|
+
* <DesignTable>
|
|
12
|
+
* <DesignTableHeader>
|
|
13
|
+
* <DesignTableRow>
|
|
14
|
+
* <DesignTableHead>Name</DesignTableHead>
|
|
15
|
+
* <DesignTableHead>Email</DesignTableHead>
|
|
16
|
+
* </DesignTableRow>
|
|
17
|
+
* </DesignTableHeader>
|
|
18
|
+
* <DesignTableBody>
|
|
19
|
+
* {rows.map(row => (
|
|
20
|
+
* <DesignTableRow key={row.id}>
|
|
21
|
+
* <DesignTableCell>{row.name}</DesignTableCell>
|
|
22
|
+
* <DesignTableCell>{row.email}</DesignTableCell>
|
|
23
|
+
* </DesignTableRow>
|
|
24
|
+
* ))}
|
|
25
|
+
* </DesignTableBody>
|
|
26
|
+
* </DesignTable>
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
declare const DesignTable: React.FC<React.HTMLAttributes<HTMLTableElement> & {
|
|
30
|
+
ref?: React.Ref<HTMLTableElement> | undefined;
|
|
31
|
+
}>;
|
|
32
|
+
declare const DesignTableHeader: React.FC<React.HTMLAttributes<HTMLTableSectionElement> & {
|
|
33
|
+
ref?: React.Ref<HTMLTableSectionElement> | undefined;
|
|
34
|
+
}>;
|
|
35
|
+
declare const DesignTableBody: React.FC<React.HTMLAttributes<HTMLTableSectionElement> & {
|
|
36
|
+
ref?: React.Ref<HTMLTableSectionElement> | undefined;
|
|
37
|
+
}>;
|
|
38
|
+
declare const DesignTableRow: React.FC<React.HTMLAttributes<HTMLTableRowElement> & {
|
|
39
|
+
ref?: React.Ref<HTMLTableRowElement> | undefined;
|
|
40
|
+
}>;
|
|
41
|
+
declare const DesignTableHead: React.FC<React.ThHTMLAttributes<HTMLTableCellElement> & {
|
|
42
|
+
ref?: React.Ref<HTMLTableCellElement> | undefined;
|
|
43
|
+
}>;
|
|
44
|
+
declare const DesignTableCell: React.FC<React.TdHTMLAttributes<HTMLTableCellElement> & {
|
|
45
|
+
ref?: React.Ref<HTMLTableCellElement> | undefined;
|
|
46
|
+
}>;
|
|
47
|
+
//#endregion
|
|
48
|
+
export { DesignTable, DesignTableBody, DesignTableCell, DesignTableHead, DesignTableHeader, DesignTableRow };
|
|
49
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","names":[],"sources":["../../../src/components/table.tsx"],"mappings":";;;;;AA+BA;;;;;;;;;;;;;;;;;;;;;AAcA;;cAda,WAAA,EAAW,KAAA,CAAA,EAAA,CAAA,KAAA,CAAA,cAAA,CAAA,gBAAA;;;cAcX,iBAAA,EAAiB,KAAA,CAAA,EAAA,CAAA,KAAA,CAAA,cAAA,CAAA,uBAAA;;;cAYjB,eAAA,EAAe,KAAA,CAAA,EAAA,CAAA,KAAA,CAAA,cAAA,CAAA,uBAAA;;;cAYf,cAAA,EAAc,KAAA,CAAA,EAAA,CAAA,KAAA,CAAA,cAAA,CAAA,mBAAA;;;cAed,eAAA,EAAe,KAAA,CAAA,EAAA,CAAA,KAAA,CAAA,gBAAA,CAAA,oBAAA;;;cAef,eAAA,EAAe,KAAA,CAAA,EAAA,CAAA,KAAA,CAAA,gBAAA,CAAA,oBAAA"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { cn } from "@hexclave/ui";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import { forwardRefIfNeeded } from "@hexclave/shared/dist/utils/react";
|
|
6
|
+
import React from "react";
|
|
7
|
+
|
|
8
|
+
//#region src/components/table.tsx
|
|
9
|
+
/**
|
|
10
|
+
* Simple static table — header + rows + cells. Use this for small,
|
|
11
|
+
* read-only lists (< 20 rows, no interaction). For anything that needs
|
|
12
|
+
* sorting, filtering, pagination, or virtualization, use `DataGrid` +
|
|
13
|
+
* `useDataSource` instead.
|
|
14
|
+
*
|
|
15
|
+
* ```tsx
|
|
16
|
+
* <DesignTable>
|
|
17
|
+
* <DesignTableHeader>
|
|
18
|
+
* <DesignTableRow>
|
|
19
|
+
* <DesignTableHead>Name</DesignTableHead>
|
|
20
|
+
* <DesignTableHead>Email</DesignTableHead>
|
|
21
|
+
* </DesignTableRow>
|
|
22
|
+
* </DesignTableHeader>
|
|
23
|
+
* <DesignTableBody>
|
|
24
|
+
* {rows.map(row => (
|
|
25
|
+
* <DesignTableRow key={row.id}>
|
|
26
|
+
* <DesignTableCell>{row.name}</DesignTableCell>
|
|
27
|
+
* <DesignTableCell>{row.email}</DesignTableCell>
|
|
28
|
+
* </DesignTableRow>
|
|
29
|
+
* ))}
|
|
30
|
+
* </DesignTableBody>
|
|
31
|
+
* </DesignTable>
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
const DesignTable = forwardRefIfNeeded(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", {
|
|
35
|
+
className: "relative w-full overflow-auto",
|
|
36
|
+
children: /* @__PURE__ */ jsx("table", {
|
|
37
|
+
ref,
|
|
38
|
+
className: cn("w-full caption-bottom text-sm", className),
|
|
39
|
+
...props
|
|
40
|
+
})
|
|
41
|
+
}));
|
|
42
|
+
DesignTable.displayName = "DesignTable";
|
|
43
|
+
const DesignTableHeader = forwardRefIfNeeded(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", {
|
|
44
|
+
ref,
|
|
45
|
+
className: cn("bg-foreground/[0.02] [&_tr]:border-b [&_tr]:border-black/[0.06] dark:[&_tr]:border-white/[0.06]", className),
|
|
46
|
+
...props
|
|
47
|
+
}));
|
|
48
|
+
DesignTableHeader.displayName = "DesignTableHeader";
|
|
49
|
+
const DesignTableBody = forwardRefIfNeeded(({ className, ...props }, ref) => /* @__PURE__ */ jsx("tbody", {
|
|
50
|
+
ref,
|
|
51
|
+
className: cn("[&_tr:last-child]:border-0", className),
|
|
52
|
+
...props
|
|
53
|
+
}));
|
|
54
|
+
DesignTableBody.displayName = "DesignTableBody";
|
|
55
|
+
const DesignTableRow = forwardRefIfNeeded(({ className, ...props }, ref) => /* @__PURE__ */ jsx("tr", {
|
|
56
|
+
ref,
|
|
57
|
+
className: cn("border-b border-black/[0.06] dark:border-white/[0.06] transition-colors duration-150 hover:transition-none hover:bg-foreground/[0.04] data-[state=selected]:bg-foreground/[0.06]", className),
|
|
58
|
+
...props
|
|
59
|
+
}));
|
|
60
|
+
DesignTableRow.displayName = "DesignTableRow";
|
|
61
|
+
const DesignTableHead = forwardRefIfNeeded(({ className, ...props }, ref) => /* @__PURE__ */ jsx("th", {
|
|
62
|
+
ref,
|
|
63
|
+
className: cn("h-10 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", className),
|
|
64
|
+
...props
|
|
65
|
+
}));
|
|
66
|
+
DesignTableHead.displayName = "DesignTableHead";
|
|
67
|
+
const DesignTableCell = forwardRefIfNeeded(({ className, ...props }, ref) => /* @__PURE__ */ jsx("td", {
|
|
68
|
+
ref,
|
|
69
|
+
className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", className),
|
|
70
|
+
...props
|
|
71
|
+
}));
|
|
72
|
+
DesignTableCell.displayName = "DesignTableCell";
|
|
73
|
+
|
|
74
|
+
//#endregion
|
|
75
|
+
export { DesignTable, DesignTableBody, DesignTableCell, DesignTableHead, DesignTableHeader, DesignTableRow };
|
|
76
|
+
//# sourceMappingURL=table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.js","names":[],"sources":["../../../src/components/table.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRefIfNeeded } from \"@stackframe/stack-shared/dist/utils/react\";\nimport { cn } from \"@stackframe/stack-ui\";\nimport React from \"react\";\n\n/**\n * Simple static table — header + rows + cells. Use this for small,\n * read-only lists (< 20 rows, no interaction). For anything that needs\n * sorting, filtering, pagination, or virtualization, use `DataGrid` +\n * `useDataSource` instead.\n *\n * ```tsx\n * <DesignTable>\n * <DesignTableHeader>\n * <DesignTableRow>\n * <DesignTableHead>Name</DesignTableHead>\n * <DesignTableHead>Email</DesignTableHead>\n * </DesignTableRow>\n * </DesignTableHeader>\n * <DesignTableBody>\n * {rows.map(row => (\n * <DesignTableRow key={row.id}>\n * <DesignTableCell>{row.name}</DesignTableCell>\n * <DesignTableCell>{row.email}</DesignTableCell>\n * </DesignTableRow>\n * ))}\n * </DesignTableBody>\n * </DesignTable>\n * ```\n */\nexport const DesignTable = forwardRefIfNeeded<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n));\nDesignTable.displayName = \"DesignTable\";\n\nexport const DesignTableHeader = forwardRefIfNeeded<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(\"bg-foreground/[0.02] [&_tr]:border-b [&_tr]:border-black/[0.06] dark:[&_tr]:border-white/[0.06]\", className)}\n {...props}\n />\n));\nDesignTableHeader.displayName = \"DesignTableHeader\";\n\nexport const DesignTableBody = forwardRefIfNeeded<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n));\nDesignTableBody.displayName = \"DesignTableBody\";\n\nexport const DesignTableRow = forwardRefIfNeeded<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b border-black/[0.06] dark:border-white/[0.06] transition-colors duration-150 hover:transition-none hover:bg-foreground/[0.04] data-[state=selected]:bg-foreground/[0.06]\",\n className\n )}\n {...props}\n />\n));\nDesignTableRow.displayName = \"DesignTableRow\";\n\nexport const DesignTableHead = forwardRefIfNeeded<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-10 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n));\nDesignTableHead.displayName = \"DesignTableHead\";\n\nexport const DesignTableCell = forwardRefIfNeeded<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n \"p-4 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n));\nDesignTableCell.displayName = \"DesignTableCell\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,MAAa,cAAc,oBAGxB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC;CAAI,WAAU;WACb,oBAAC;EACM;EACL,WAAW,GAAG,iCAAiC,UAAU;EACzD,GAAI;GACJ;EACE,CACN;AACF,YAAY,cAAc;AAE1B,MAAa,oBAAoB,oBAG9B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC;CACM;CACL,WAAW,GAAG,mGAAmG,UAAU;CAC3H,GAAI;EACJ,CACF;AACF,kBAAkB,cAAc;AAEhC,MAAa,kBAAkB,oBAG5B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC;CACM;CACL,WAAW,GAAG,8BAA8B,UAAU;CACtD,GAAI;EACJ,CACF;AACF,gBAAgB,cAAc;AAE9B,MAAa,iBAAiB,oBAG3B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC;CACM;CACL,WAAW,GACT,oLACA,UACD;CACD,GAAI;EACJ,CACF;AACF,eAAe,cAAc;AAE7B,MAAa,kBAAkB,oBAG5B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC;CACM;CACL,WAAW,GACT,0IACA,UACD;CACD,GAAI;EACJ,CACF;AACF,gBAAgB,cAAc;AAE9B,MAAa,kBAAkB,oBAG5B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC;CACM;CACL,WAAW,GACT,wFACA,UACD;CACD,GAAI;EACJ,CACF;AACF,gBAAgB,cAAc"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/components/tabs.d.ts
|
|
5
|
+
type DesignTabsSize = "sm" | "md";
|
|
6
|
+
type DesignTabsGradient = "blue" | "cyan" | "purple" | "green" | "orange" | "default";
|
|
7
|
+
type DesignCategoryTabItem = {
|
|
8
|
+
id: string;
|
|
9
|
+
label: string;
|
|
10
|
+
count?: number;
|
|
11
|
+
badgeCount?: number;
|
|
12
|
+
icon?: React.ComponentType<React.SVGProps<SVGSVGElement>>;
|
|
13
|
+
};
|
|
14
|
+
type DesignCategoryTabsProps = Omit<React.ComponentProps<"div">, "onSelect"> & {
|
|
15
|
+
categories: DesignCategoryTabItem[];
|
|
16
|
+
selectedCategory: string;
|
|
17
|
+
onSelect: (id: string) => void | Promise<void>;
|
|
18
|
+
showBadge?: boolean;
|
|
19
|
+
size?: DesignTabsSize;
|
|
20
|
+
glassmorphic?: boolean;
|
|
21
|
+
gradient?: DesignTabsGradient; /** Renders inside the tab bar after the tab buttons (not a tab). */
|
|
22
|
+
trailing?: ReactNode;
|
|
23
|
+
};
|
|
24
|
+
declare function DesignCategoryTabs({
|
|
25
|
+
categories,
|
|
26
|
+
selectedCategory,
|
|
27
|
+
onSelect,
|
|
28
|
+
showBadge,
|
|
29
|
+
size,
|
|
30
|
+
glassmorphic: glassmorphicProp,
|
|
31
|
+
gradient,
|
|
32
|
+
trailing,
|
|
33
|
+
className,
|
|
34
|
+
...props
|
|
35
|
+
}: DesignCategoryTabsProps): react_jsx_runtime0.JSX.Element;
|
|
36
|
+
//#endregion
|
|
37
|
+
export { DesignCategoryTabItem, DesignCategoryTabs, DesignCategoryTabsProps };
|
|
38
|
+
//# sourceMappingURL=tabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","names":[],"sources":["../../../src/components/tabs.tsx"],"mappings":";;;;KAOK,cAAA;AAAA,KACA,kBAAA;AAAA,KAEO,qBAAA;EACV,EAAA;EACA,KAAA;EACA,KAAA;EACA,UAAA;EACA,IAAA,GAAO,KAAA,CAAM,aAAA,CAAc,KAAA,CAAM,QAAA,CAAS,aAAA;AAAA;AAAA,KAGhC,uBAAA,GAA0B,IAAA,CAAK,KAAA,CAAM,cAAA;EAC/C,UAAA,EAAY,qBAAA;EACZ,gBAAA;EACA,QAAA,GAAW,EAAA,oBAAsB,OAAA;EACjC,SAAA;EACA,IAAA,GAAO,cAAA;EACP,YAAA;EACA,QAAA,GAAW,kBAAA,EAVgB;EAY3B,QAAA,GAAW,SAAA;AAAA;AAAA,iBA8EG,kBAAA,CAAA;EACd,UAAA;EACA,gBAAA;EACA,QAAA;EACA,SAAA;EACA,IAAA;EACA,YAAA,EAAc,gBAAA;EACd,QAAA;EACA,QAAA;EACA,SAAA;EAAA,GACG;AAAA,GACF,uBAAA,GAAuB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|