@spatika/react 1.3.1 → 1.5.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/AGENTS.md +6 -3
- package/README.md +1 -1
- package/dist/composites/EventCalendar.d.ts +13 -2
- package/dist/composites/EventCalendar.d.ts.map +1 -1
- package/dist/composites/EventCalendar.js +13 -27
- package/dist/composites/GlassCard.d.ts +1 -1
- package/dist/composites/RichTextEditor.d.ts +1 -4
- package/dist/composites/RichTextEditor.d.ts.map +1 -1
- package/dist/composites/RichTextEditor.js +12 -19
- package/dist/composites/SurfaceCard.d.ts +1 -1
- package/dist/composites/Tag.d.ts +2 -2
- package/dist/composites/cartesian-charts.d.ts +12 -2
- package/dist/composites/cartesian-charts.d.ts.map +1 -1
- package/dist/composites/cartesian-charts.js +27 -13
- package/dist/composites/chart-composition.d.ts +19 -1
- package/dist/composites/chart-composition.d.ts.map +1 -1
- package/dist/composites/chart-composition.js +124 -62
- package/dist/composites/chart-interaction.d.ts +81 -0
- package/dist/composites/chart-interaction.d.ts.map +1 -0
- package/dist/composites/chart-interaction.js +56 -0
- package/dist/composites/chart-ui.d.ts +8 -13
- package/dist/composites/chart-ui.d.ts.map +1 -1
- package/dist/composites/chart-ui.js +9 -6
- package/dist/composites/flow-charts.d.ts +6 -1
- package/dist/composites/flow-charts.d.ts.map +1 -1
- package/dist/composites/flow-charts.js +28 -14
- package/dist/composites/radial-charts.d.ts +11 -1
- package/dist/composites/radial-charts.d.ts.map +1 -1
- package/dist/composites/radial-charts.js +33 -14
- package/dist/composites/scheduler-ui.d.ts +14 -1
- package/dist/composites/scheduler-ui.d.ts.map +1 -1
- package/dist/composites/scheduler-ui.js +23 -2
- package/dist/index.d.ts +14 -26
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -14
- package/dist/lib/breakpoints.d.ts +17 -0
- package/dist/lib/breakpoints.d.ts.map +1 -0
- package/dist/lib/breakpoints.js +23 -0
- package/dist/lib/chips.d.ts +3 -0
- package/dist/lib/chips.d.ts.map +1 -1
- package/dist/lib/chips.js +10 -0
- package/dist/lib/create-theme.d.ts +162 -0
- package/dist/lib/create-theme.d.ts.map +1 -0
- package/dist/lib/create-theme.js +138 -0
- package/dist/lib/scheduler.d.ts +12 -0
- package/dist/lib/scheduler.d.ts.map +1 -1
- package/dist/lib/scheduler.js +24 -2
- package/dist/lib/themes.d.ts +17 -7
- package/dist/lib/themes.d.ts.map +1 -1
- package/dist/lib/themes.js +22 -8
- package/dist/lib/use-media-query.d.ts +9 -0
- package/dist/lib/use-media-query.d.ts.map +1 -1
- package/dist/lib/use-media-query.js +28 -1
- package/dist/primitives/Alert.d.ts +1 -1
- package/dist/primitives/Badge.d.ts +2 -2
- package/dist/primitives/Button.d.ts +2 -2
- package/dist/primitives/Container.d.ts +2 -2
- package/dist/primitives/Fab.d.ts +4 -4
- package/dist/primitives/Grid.d.ts +2 -1
- package/dist/primitives/Grid.d.ts.map +1 -1
- package/dist/primitives/Grid.js +10 -2
- package/dist/primitives/IconButton.d.ts +2 -2
- package/dist/primitives/NativeSelect.d.ts +10 -1
- package/dist/primitives/NativeSelect.d.ts.map +1 -1
- package/dist/primitives/NativeSelect.js +2 -2
- package/dist/primitives/ToggleButton.d.ts +1 -1
- package/dist/theme/SpatikaThemeProvider.d.ts +4 -5
- package/dist/theme/SpatikaThemeProvider.d.ts.map +1 -1
- package/dist/theme/SpatikaThemeProvider.js +28 -13
- package/package.json +4 -2
- package/skills/spatika-ui/SKILL.md +28 -5
- package/src/composites/EventCalendar.test.tsx +293 -0
- package/src/composites/EventCalendar.tsx +38 -27
- package/src/composites/RichTextEditor.test.tsx +51 -0
- package/src/composites/RichTextEditor.tsx +20 -84
- package/src/composites/chart-ui.test.tsx +21 -0
- package/src/composites/scheduler-ui.tsx +128 -26
- package/src/composites/scheduler.test.tsx +0 -219
- package/src/index.test.ts +10 -0
- package/src/index.ts +148 -65
- package/src/lib/breakpoints.test.ts +29 -0
- package/src/lib/breakpoints.ts +28 -0
- package/src/lib/chips.ts +16 -0
- package/src/lib/create-theme.test.ts +79 -0
- package/src/lib/create-theme.ts +249 -0
- package/src/lib/scheduler.test.ts +26 -0
- package/src/lib/scheduler.ts +36 -2
- package/src/lib/themes.test.ts +17 -0
- package/src/lib/themes.ts +43 -12
- package/src/lib/use-media-query.test.tsx +80 -0
- package/src/lib/use-media-query.ts +35 -1
- package/src/primitives/Grid.test.tsx +55 -0
- package/src/primitives/Grid.tsx +13 -3
- package/src/primitives/NativeSelect.test.tsx +28 -0
- package/src/primitives/NativeSelect.tsx +14 -4
- package/src/primitives/mui-more.test.tsx +17 -0
- package/src/theme/SpatikaThemeProvider.test.tsx +38 -0
- package/src/theme/SpatikaThemeProvider.tsx +43 -15
- package/src/composites/ChartDataGrid.test.tsx +0 -57
- package/src/composites/ChartDataGrid.tsx +0 -196
- package/src/composites/MapChart.test.tsx +0 -39
- package/src/composites/MapChart.tsx +0 -130
- package/src/composites/ScatterWebGL.test.tsx +0 -25
- package/src/composites/ScatterWebGL.tsx +0 -79
- package/src/composites/cartesian-charts.test.tsx +0 -52
- package/src/composites/cartesian-charts.tsx +0 -1287
- package/src/composites/chart-composition.test.tsx +0 -53
- package/src/composites/chart-composition.tsx +0 -898
- package/src/composites/chart-ui.tsx +0 -328
- package/src/composites/charts-3d.test.tsx +0 -25
- package/src/composites/charts-3d.tsx +0 -318
- package/src/composites/charts.test.tsx +0 -254
- package/src/composites/flow-charts.test.tsx +0 -79
- package/src/composites/flow-charts.tsx +0 -607
- package/src/composites/radial-charts.test.tsx +0 -74
- package/src/composites/radial-charts.tsx +0 -617
- package/src/lib/chart-export.test.ts +0 -20
- package/src/lib/chart-export.ts +0 -99
- package/src/lib/charts-platform.test.ts +0 -93
- package/src/lib/charts.test.ts +0 -132
- package/src/lib/charts.ts +0 -1021
- package/src/lib/geo.test.ts +0 -42
- package/src/lib/geo.ts +0 -138
- package/src/lib/iso.test.ts +0 -22
- package/src/lib/iso.ts +0 -102
- package/src/lib/webgl-scatter.test.ts +0 -36
- package/src/lib/webgl-scatter.ts +0 -230
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { type BuiltinThemeId, type ThemeId } from "./themes";
|
|
2
|
+
/** Color tokens that map 1:1 onto Spatika CSS variables. */
|
|
3
|
+
export type ThemePalette = {
|
|
4
|
+
background?: string;
|
|
5
|
+
foreground?: string;
|
|
6
|
+
card?: string;
|
|
7
|
+
cardForeground?: string;
|
|
8
|
+
popover?: string;
|
|
9
|
+
popoverForeground?: string;
|
|
10
|
+
primary?: string;
|
|
11
|
+
primaryForeground?: string;
|
|
12
|
+
secondary?: string;
|
|
13
|
+
secondaryForeground?: string;
|
|
14
|
+
muted?: string;
|
|
15
|
+
mutedForeground?: string;
|
|
16
|
+
accent?: string;
|
|
17
|
+
accentForeground?: string;
|
|
18
|
+
destructive?: string;
|
|
19
|
+
destructiveForeground?: string;
|
|
20
|
+
border?: string;
|
|
21
|
+
input?: string;
|
|
22
|
+
inputBackground?: string;
|
|
23
|
+
switchBackground?: string;
|
|
24
|
+
ring?: string;
|
|
25
|
+
sidebar?: string;
|
|
26
|
+
sidebarForeground?: string;
|
|
27
|
+
sidebarPrimary?: string;
|
|
28
|
+
sidebarPrimaryForeground?: string;
|
|
29
|
+
sidebarAccent?: string;
|
|
30
|
+
sidebarAccentForeground?: string;
|
|
31
|
+
sidebarBorder?: string;
|
|
32
|
+
sidebarRing?: string;
|
|
33
|
+
accentInfo?: string;
|
|
34
|
+
accentInfoBg?: string;
|
|
35
|
+
accentHighlight?: string;
|
|
36
|
+
accentHighlightBg?: string;
|
|
37
|
+
accentWarm?: string;
|
|
38
|
+
accentWarmBg?: string;
|
|
39
|
+
accentDangerBg?: string;
|
|
40
|
+
chart1?: string;
|
|
41
|
+
chart2?: string;
|
|
42
|
+
chart3?: string;
|
|
43
|
+
chart4?: string;
|
|
44
|
+
chart5?: string;
|
|
45
|
+
};
|
|
46
|
+
export type ThemeGlass = {
|
|
47
|
+
bg?: string;
|
|
48
|
+
panelBg?: string;
|
|
49
|
+
mutedBg?: string;
|
|
50
|
+
headerBg?: string;
|
|
51
|
+
border?: string;
|
|
52
|
+
blur?: string;
|
|
53
|
+
headerBlur?: string;
|
|
54
|
+
menuBlur?: string;
|
|
55
|
+
saturate?: string;
|
|
56
|
+
shadow?: string;
|
|
57
|
+
highlight?: string;
|
|
58
|
+
overlayBg?: string;
|
|
59
|
+
overlayBlur?: string;
|
|
60
|
+
};
|
|
61
|
+
export type ThemeShape = {
|
|
62
|
+
radius?: string;
|
|
63
|
+
radiusCard?: string;
|
|
64
|
+
radiusControl?: string;
|
|
65
|
+
radiusPill?: string;
|
|
66
|
+
};
|
|
67
|
+
export type ThemeTypography = {
|
|
68
|
+
fontFamily?: string;
|
|
69
|
+
};
|
|
70
|
+
export type CreateThemeOptions = {
|
|
71
|
+
/** Unique id written to `data-spk-theme`. Must not collide with a built-in id. */
|
|
72
|
+
id: string;
|
|
73
|
+
label?: string;
|
|
74
|
+
/** Built-in theme whose CSS variables are inherited, then overlaid. */
|
|
75
|
+
extends?: BuiltinThemeId;
|
|
76
|
+
colorScheme?: "light" | "dark";
|
|
77
|
+
palette?: ThemePalette;
|
|
78
|
+
glass?: ThemeGlass;
|
|
79
|
+
shape?: ThemeShape;
|
|
80
|
+
typography?: ThemeTypography;
|
|
81
|
+
/** Escape hatch: raw CSS custom properties, e.g. `{ "--shadow-soft": "none" }`. */
|
|
82
|
+
vars?: Record<string, string>;
|
|
83
|
+
};
|
|
84
|
+
export type SpatikaTheme = {
|
|
85
|
+
id: string;
|
|
86
|
+
label: string;
|
|
87
|
+
extends: BuiltinThemeId;
|
|
88
|
+
colorScheme: "light" | "dark";
|
|
89
|
+
vars: Record<string, string>;
|
|
90
|
+
};
|
|
91
|
+
export declare const PALETTE_CSS_VARS: {
|
|
92
|
+
readonly background: "--background";
|
|
93
|
+
readonly foreground: "--foreground";
|
|
94
|
+
readonly card: "--card";
|
|
95
|
+
readonly cardForeground: "--card-foreground";
|
|
96
|
+
readonly popover: "--popover";
|
|
97
|
+
readonly popoverForeground: "--popover-foreground";
|
|
98
|
+
readonly primary: "--primary";
|
|
99
|
+
readonly primaryForeground: "--primary-foreground";
|
|
100
|
+
readonly secondary: "--secondary";
|
|
101
|
+
readonly secondaryForeground: "--secondary-foreground";
|
|
102
|
+
readonly muted: "--muted";
|
|
103
|
+
readonly mutedForeground: "--muted-foreground";
|
|
104
|
+
readonly accent: "--accent";
|
|
105
|
+
readonly accentForeground: "--accent-foreground";
|
|
106
|
+
readonly destructive: "--destructive";
|
|
107
|
+
readonly destructiveForeground: "--destructive-foreground";
|
|
108
|
+
readonly border: "--border";
|
|
109
|
+
readonly input: "--input";
|
|
110
|
+
readonly inputBackground: "--input-background";
|
|
111
|
+
readonly switchBackground: "--switch-background";
|
|
112
|
+
readonly ring: "--ring";
|
|
113
|
+
readonly sidebar: "--sidebar";
|
|
114
|
+
readonly sidebarForeground: "--sidebar-foreground";
|
|
115
|
+
readonly sidebarPrimary: "--sidebar-primary";
|
|
116
|
+
readonly sidebarPrimaryForeground: "--sidebar-primary-foreground";
|
|
117
|
+
readonly sidebarAccent: "--sidebar-accent";
|
|
118
|
+
readonly sidebarAccentForeground: "--sidebar-accent-foreground";
|
|
119
|
+
readonly sidebarBorder: "--sidebar-border";
|
|
120
|
+
readonly sidebarRing: "--sidebar-ring";
|
|
121
|
+
readonly accentInfo: "--accent-info";
|
|
122
|
+
readonly accentInfoBg: "--accent-info-bg";
|
|
123
|
+
readonly accentHighlight: "--accent-highlight";
|
|
124
|
+
readonly accentHighlightBg: "--accent-highlight-bg";
|
|
125
|
+
readonly accentWarm: "--accent-warm";
|
|
126
|
+
readonly accentWarmBg: "--accent-warm-bg";
|
|
127
|
+
readonly accentDangerBg: "--accent-danger-bg";
|
|
128
|
+
readonly chart1: "--chart-1";
|
|
129
|
+
readonly chart2: "--chart-2";
|
|
130
|
+
readonly chart3: "--chart-3";
|
|
131
|
+
readonly chart4: "--chart-4";
|
|
132
|
+
readonly chart5: "--chart-5";
|
|
133
|
+
};
|
|
134
|
+
export declare const GLASS_CSS_VARS: {
|
|
135
|
+
readonly bg: "--glass-bg";
|
|
136
|
+
readonly panelBg: "--glass-panel-bg";
|
|
137
|
+
readonly mutedBg: "--glass-muted-bg";
|
|
138
|
+
readonly headerBg: "--glass-header-bg";
|
|
139
|
+
readonly border: "--glass-border";
|
|
140
|
+
readonly blur: "--glass-blur";
|
|
141
|
+
readonly headerBlur: "--glass-header-blur";
|
|
142
|
+
readonly menuBlur: "--glass-menu-blur";
|
|
143
|
+
readonly saturate: "--glass-saturate";
|
|
144
|
+
readonly shadow: "--glass-shadow";
|
|
145
|
+
readonly highlight: "--glass-highlight";
|
|
146
|
+
readonly overlayBg: "--modal-overlay-bg";
|
|
147
|
+
readonly overlayBlur: "--modal-overlay-blur";
|
|
148
|
+
};
|
|
149
|
+
export declare const SHAPE_CSS_VARS: {
|
|
150
|
+
readonly radius: "--radius";
|
|
151
|
+
readonly radiusCard: "--radius-card";
|
|
152
|
+
readonly radiusControl: "--radius-control";
|
|
153
|
+
readonly radiusPill: "--radius-pill";
|
|
154
|
+
};
|
|
155
|
+
/** Build a custom theme that overlays CSS variables on a built-in Spatika theme. */
|
|
156
|
+
export declare function createTheme(options: CreateThemeOptions): SpatikaTheme;
|
|
157
|
+
/** Serialize a custom theme as an attribute selector rule. */
|
|
158
|
+
export declare function themeToCss(theme: SpatikaTheme): string;
|
|
159
|
+
/** Inject (or replace) a single stylesheet for every registered custom theme. */
|
|
160
|
+
export declare function injectCustomThemeStyles(themes: readonly SpatikaTheme[]): void;
|
|
161
|
+
export declare function findCustomTheme(theme: ThemeId, customThemes: readonly SpatikaTheme[] | undefined): SpatikaTheme | undefined;
|
|
162
|
+
//# sourceMappingURL=create-theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-theme.d.ts","sourceRoot":"","sources":["../../src/lib/create-theme.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { isDarkTheme, isThemeId } from "./themes";
|
|
2
|
+
export const PALETTE_CSS_VARS = {
|
|
3
|
+
background: "--background",
|
|
4
|
+
foreground: "--foreground",
|
|
5
|
+
card: "--card",
|
|
6
|
+
cardForeground: "--card-foreground",
|
|
7
|
+
popover: "--popover",
|
|
8
|
+
popoverForeground: "--popover-foreground",
|
|
9
|
+
primary: "--primary",
|
|
10
|
+
primaryForeground: "--primary-foreground",
|
|
11
|
+
secondary: "--secondary",
|
|
12
|
+
secondaryForeground: "--secondary-foreground",
|
|
13
|
+
muted: "--muted",
|
|
14
|
+
mutedForeground: "--muted-foreground",
|
|
15
|
+
accent: "--accent",
|
|
16
|
+
accentForeground: "--accent-foreground",
|
|
17
|
+
destructive: "--destructive",
|
|
18
|
+
destructiveForeground: "--destructive-foreground",
|
|
19
|
+
border: "--border",
|
|
20
|
+
input: "--input",
|
|
21
|
+
inputBackground: "--input-background",
|
|
22
|
+
switchBackground: "--switch-background",
|
|
23
|
+
ring: "--ring",
|
|
24
|
+
sidebar: "--sidebar",
|
|
25
|
+
sidebarForeground: "--sidebar-foreground",
|
|
26
|
+
sidebarPrimary: "--sidebar-primary",
|
|
27
|
+
sidebarPrimaryForeground: "--sidebar-primary-foreground",
|
|
28
|
+
sidebarAccent: "--sidebar-accent",
|
|
29
|
+
sidebarAccentForeground: "--sidebar-accent-foreground",
|
|
30
|
+
sidebarBorder: "--sidebar-border",
|
|
31
|
+
sidebarRing: "--sidebar-ring",
|
|
32
|
+
accentInfo: "--accent-info",
|
|
33
|
+
accentInfoBg: "--accent-info-bg",
|
|
34
|
+
accentHighlight: "--accent-highlight",
|
|
35
|
+
accentHighlightBg: "--accent-highlight-bg",
|
|
36
|
+
accentWarm: "--accent-warm",
|
|
37
|
+
accentWarmBg: "--accent-warm-bg",
|
|
38
|
+
accentDangerBg: "--accent-danger-bg",
|
|
39
|
+
chart1: "--chart-1",
|
|
40
|
+
chart2: "--chart-2",
|
|
41
|
+
chart3: "--chart-3",
|
|
42
|
+
chart4: "--chart-4",
|
|
43
|
+
chart5: "--chart-5",
|
|
44
|
+
};
|
|
45
|
+
export const GLASS_CSS_VARS = {
|
|
46
|
+
bg: "--glass-bg",
|
|
47
|
+
panelBg: "--glass-panel-bg",
|
|
48
|
+
mutedBg: "--glass-muted-bg",
|
|
49
|
+
headerBg: "--glass-header-bg",
|
|
50
|
+
border: "--glass-border",
|
|
51
|
+
blur: "--glass-blur",
|
|
52
|
+
headerBlur: "--glass-header-blur",
|
|
53
|
+
menuBlur: "--glass-menu-blur",
|
|
54
|
+
saturate: "--glass-saturate",
|
|
55
|
+
shadow: "--glass-shadow",
|
|
56
|
+
highlight: "--glass-highlight",
|
|
57
|
+
overlayBg: "--modal-overlay-bg",
|
|
58
|
+
overlayBlur: "--modal-overlay-blur",
|
|
59
|
+
};
|
|
60
|
+
export const SHAPE_CSS_VARS = {
|
|
61
|
+
radius: "--radius",
|
|
62
|
+
radiusCard: "--radius-card",
|
|
63
|
+
radiusControl: "--radius-control",
|
|
64
|
+
radiusPill: "--radius-pill",
|
|
65
|
+
};
|
|
66
|
+
const CUSTOM_THEME_STYLE_ID = "spk-custom-themes";
|
|
67
|
+
function assignMappedVars(vars, source, map) {
|
|
68
|
+
if (!source)
|
|
69
|
+
return;
|
|
70
|
+
for (const [key, cssVar] of Object.entries(map)) {
|
|
71
|
+
const value = source[key];
|
|
72
|
+
if (typeof value === "string" && value.length > 0)
|
|
73
|
+
vars[cssVar] = value;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/** Build a custom theme that overlays CSS variables on a built-in Spatika theme. */
|
|
77
|
+
export function createTheme(options) {
|
|
78
|
+
const id = options.id.trim();
|
|
79
|
+
if (!id) {
|
|
80
|
+
throw new Error("createTheme: `id` is required.");
|
|
81
|
+
}
|
|
82
|
+
if (isThemeId(id)) {
|
|
83
|
+
throw new Error(`createTheme: "${id}" is a built-in theme. Choose a different id.`);
|
|
84
|
+
}
|
|
85
|
+
const base = options.extends ?? "mukta";
|
|
86
|
+
const colorScheme = options.colorScheme ?? (isDarkTheme(base) ? "dark" : "light");
|
|
87
|
+
const vars = {};
|
|
88
|
+
assignMappedVars(vars, options.palette, PALETTE_CSS_VARS);
|
|
89
|
+
assignMappedVars(vars, options.glass, GLASS_CSS_VARS);
|
|
90
|
+
assignMappedVars(vars, options.shape, SHAPE_CSS_VARS);
|
|
91
|
+
if (options.typography?.fontFamily) {
|
|
92
|
+
vars["--font-sans"] = options.typography.fontFamily;
|
|
93
|
+
}
|
|
94
|
+
if (options.vars) {
|
|
95
|
+
for (const [key, value] of Object.entries(options.vars)) {
|
|
96
|
+
if (value)
|
|
97
|
+
vars[key] = value;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
id,
|
|
102
|
+
label: options.label?.trim() || id,
|
|
103
|
+
extends: base,
|
|
104
|
+
colorScheme,
|
|
105
|
+
vars,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/** Serialize a custom theme as an attribute selector rule. */
|
|
109
|
+
export function themeToCss(theme) {
|
|
110
|
+
const entries = Object.entries(theme.vars);
|
|
111
|
+
if (!entries.length) {
|
|
112
|
+
return `[data-spk-theme="${theme.id}"] {\n}\n`;
|
|
113
|
+
}
|
|
114
|
+
const decls = entries.map(([key, value]) => ` ${key}: ${value};`).join("\n");
|
|
115
|
+
const font = theme.vars["--font-sans"]
|
|
116
|
+
? `\n font-family: var(--font-sans);`
|
|
117
|
+
: "";
|
|
118
|
+
return `[data-spk-theme="${theme.id}"] {\n${decls}${font}\n}\n`;
|
|
119
|
+
}
|
|
120
|
+
/** Inject (or replace) a single stylesheet for every registered custom theme. */
|
|
121
|
+
export function injectCustomThemeStyles(themes) {
|
|
122
|
+
if (typeof document === "undefined")
|
|
123
|
+
return;
|
|
124
|
+
let el = document.getElementById(CUSTOM_THEME_STYLE_ID);
|
|
125
|
+
if (!themes.length) {
|
|
126
|
+
el?.remove();
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (!el) {
|
|
130
|
+
el = document.createElement("style");
|
|
131
|
+
el.id = CUSTOM_THEME_STYLE_ID;
|
|
132
|
+
document.head.appendChild(el);
|
|
133
|
+
}
|
|
134
|
+
el.textContent = themes.map(themeToCss).join("\n");
|
|
135
|
+
}
|
|
136
|
+
export function findCustomTheme(theme, customThemes) {
|
|
137
|
+
return customThemes?.find((item) => item.id === theme);
|
|
138
|
+
}
|
package/dist/lib/scheduler.d.ts
CHANGED
|
@@ -73,6 +73,18 @@ export declare function addMs(date: Date, ms: number): Date;
|
|
|
73
73
|
export declare function clampDate(date: Date, min: Date, max: Date): Date;
|
|
74
74
|
export declare function getMonthGrid(date: Date, weekStartsOn?: number): Date[];
|
|
75
75
|
export declare function getWeekDays(date: Date, weekStartsOn?: number): Date[];
|
|
76
|
+
/** Inclusive first instant of the agenda window. */
|
|
77
|
+
export declare const CALENDAR_AGENDA_DAYS = 14;
|
|
78
|
+
export type CalendarVisibleRange = {
|
|
79
|
+
start: Date;
|
|
80
|
+
/** Exclusive end (start of the day after the last visible day). */
|
|
81
|
+
end: Date;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Days the calendar actually paints for a view.
|
|
85
|
+
* Month includes leading/trailing grid days, not just the named month.
|
|
86
|
+
*/
|
|
87
|
+
export declare function calendarVisibleRange(view: CalendarView, date: Date, weekStartsOn?: number): CalendarVisibleRange;
|
|
76
88
|
export declare function weekdayLabels(weekStartsOn?: number, locale?: string): string[];
|
|
77
89
|
export declare function formatMonthYear(date: Date, locale?: string): string;
|
|
78
90
|
export declare function formatWeekRange(date: Date, weekStartsOn?: number, locale?: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/lib/scheduler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/lib/scheduler.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/scheduler.js
CHANGED
|
@@ -99,6 +99,28 @@ export function getWeekDays(date, weekStartsOn = 0) {
|
|
|
99
99
|
const start = startOfWeek(date, weekStartsOn);
|
|
100
100
|
return Array.from({ length: 7 }, (_, i) => addDays(start, i));
|
|
101
101
|
}
|
|
102
|
+
/** Inclusive first instant of the agenda window. */
|
|
103
|
+
export const CALENDAR_AGENDA_DAYS = 14;
|
|
104
|
+
/**
|
|
105
|
+
* Days the calendar actually paints for a view.
|
|
106
|
+
* Month includes leading/trailing grid days, not just the named month.
|
|
107
|
+
*/
|
|
108
|
+
export function calendarVisibleRange(view, date, weekStartsOn = 0) {
|
|
109
|
+
if (view === "month") {
|
|
110
|
+
const grid = getMonthGrid(date, weekStartsOn);
|
|
111
|
+
return { start: grid[0], end: addDays(grid[grid.length - 1], 1) };
|
|
112
|
+
}
|
|
113
|
+
if (view === "week") {
|
|
114
|
+
const days = getWeekDays(date, weekStartsOn);
|
|
115
|
+
return { start: days[0], end: addDays(days[6], 1) };
|
|
116
|
+
}
|
|
117
|
+
if (view === "agenda") {
|
|
118
|
+
const days = agendaDays(date, CALENDAR_AGENDA_DAYS);
|
|
119
|
+
return { start: days[0], end: addDays(days[days.length - 1], 1) };
|
|
120
|
+
}
|
|
121
|
+
const start = startOfDay(date);
|
|
122
|
+
return { start, end: addDays(start, 1) };
|
|
123
|
+
}
|
|
102
124
|
export function weekdayLabels(weekStartsOn = 0, locale) {
|
|
103
125
|
const sunday = new Date(2026, 7, 2);
|
|
104
126
|
return Array.from({ length: 7 }, (_, i) => {
|
|
@@ -482,8 +504,8 @@ export function eventColorStyle(tone, variant) {
|
|
|
482
504
|
return { backgroundColor: color };
|
|
483
505
|
if (variant === "bar") {
|
|
484
506
|
return {
|
|
485
|
-
backgroundColor:
|
|
486
|
-
color: "
|
|
507
|
+
backgroundColor: color,
|
|
508
|
+
color: "#ffffff",
|
|
487
509
|
};
|
|
488
510
|
}
|
|
489
511
|
if (variant === "wash") {
|
package/dist/lib/themes.d.ts
CHANGED
|
@@ -1,16 +1,26 @@
|
|
|
1
|
-
/** Supported theme identifiers applied as classes on a root element. */
|
|
1
|
+
/** Supported built-in theme identifiers applied as classes on a root element. */
|
|
2
2
|
export declare const THEME_IDS: readonly ["mukta", "neelam", "usha", "sandhya"];
|
|
3
|
-
export type
|
|
4
|
-
|
|
3
|
+
export type BuiltinThemeId = (typeof THEME_IDS)[number];
|
|
4
|
+
/**
|
|
5
|
+
* Built-in ids plus custom ids from `createTheme`.
|
|
6
|
+
* Custom strings keep autocomplete for Mukta / Neelam / Usha / Sandhya.
|
|
7
|
+
*/
|
|
8
|
+
export type ThemeId = BuiltinThemeId | (string & {});
|
|
9
|
+
export declare const DEFAULT_THEME: BuiltinThemeId;
|
|
5
10
|
/** Default `localStorage` key used by the docs site and `SpatikaThemeProvider`. */
|
|
6
11
|
export declare const SPATIKA_THEME_STORAGE_KEY = "spk-theme";
|
|
7
|
-
export declare const THEME_LABELS: Record<
|
|
8
|
-
export declare function isThemeId(value: unknown): value is
|
|
12
|
+
export declare const THEME_LABELS: Record<BuiltinThemeId, string>;
|
|
13
|
+
export declare function isThemeId(value: unknown): value is BuiltinThemeId;
|
|
9
14
|
export declare function isDarkTheme(theme: ThemeId): boolean;
|
|
15
|
+
export type ApplyThemeCustom = {
|
|
16
|
+
id: string;
|
|
17
|
+
extends: BuiltinThemeId;
|
|
18
|
+
colorScheme: "light" | "dark";
|
|
19
|
+
};
|
|
10
20
|
/** Read a persisted theme. Returns `null` when missing or invalid. */
|
|
11
|
-
export declare function readStoredTheme(storageKey?: string | false): ThemeId | null;
|
|
21
|
+
export declare function readStoredTheme(storageKey?: string | false, allowed?: readonly string[]): ThemeId | null;
|
|
12
22
|
/** Persist a theme. No-op when `storageKey` is unset. */
|
|
13
23
|
export declare function writeStoredTheme(storageKey: string | false | undefined, theme: ThemeId): void;
|
|
14
24
|
/** Apply a theme class to an element (defaults to `<html>`). */
|
|
15
|
-
export declare function applyTheme(theme: ThemeId, target?: HTMLElement | null): void;
|
|
25
|
+
export declare function applyTheme(theme: ThemeId, target?: HTMLElement | null, custom?: ApplyThemeCustom | null): void;
|
|
16
26
|
//# sourceMappingURL=themes.d.ts.map
|
package/dist/lib/themes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../src/lib/themes.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../src/lib/themes.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,eAAO,MAAM,SAAS,iDAAkD,CAAC;AAEzE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,cAAc,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAErD,eAAO,MAAM,aAAa,EAAE,cAAwB,CAAC;AAErD,mFAAmF;AACnF,eAAO,MAAM,yBAAyB,cAAc,CAAC;AAErD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAKvD,CAAC;AAIF,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAEjE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEnD;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,cAAc,CAAC;IACxB,WAAW,EAAE,OAAO,GAAG,MAAM,CAAC;CAC/B,CAAC;AAEF,sEAAsE;AACtE,wBAAgB,eAAe,CAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,EAC3B,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAC1B,OAAO,GAAG,IAAI,CAWhB;AAED,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAO7F;AAOD,gEAAgE;AAChE,wBAAgB,UAAU,CACxB,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,EAC3B,MAAM,CAAC,EAAE,gBAAgB,GAAG,IAAI,QAcjC"}
|
package/dist/lib/themes.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** Supported theme identifiers applied as classes on a root element. */
|
|
1
|
+
/** Supported built-in theme identifiers applied as classes on a root element. */
|
|
2
2
|
export const THEME_IDS = ["mukta", "neelam", "usha", "sandhya"];
|
|
3
3
|
export const DEFAULT_THEME = "mukta";
|
|
4
4
|
/** Default `localStorage` key used by the docs site and `SpatikaThemeProvider`. */
|
|
@@ -17,12 +17,18 @@ export function isDarkTheme(theme) {
|
|
|
17
17
|
return theme === "neelam" || theme === "sandhya";
|
|
18
18
|
}
|
|
19
19
|
/** Read a persisted theme. Returns `null` when missing or invalid. */
|
|
20
|
-
export function readStoredTheme(storageKey) {
|
|
20
|
+
export function readStoredTheme(storageKey, allowed) {
|
|
21
21
|
if (!storageKey || typeof window === "undefined")
|
|
22
22
|
return null;
|
|
23
23
|
try {
|
|
24
24
|
const value = window.localStorage.getItem(storageKey);
|
|
25
|
-
|
|
25
|
+
if (!value)
|
|
26
|
+
return null;
|
|
27
|
+
if (isThemeId(value))
|
|
28
|
+
return value;
|
|
29
|
+
if (allowed?.includes(value))
|
|
30
|
+
return value;
|
|
31
|
+
return null;
|
|
26
32
|
}
|
|
27
33
|
catch {
|
|
28
34
|
return null;
|
|
@@ -39,15 +45,23 @@ export function writeStoredTheme(storageKey, theme) {
|
|
|
39
45
|
// Private mode / quota — keep the in-memory theme.
|
|
40
46
|
}
|
|
41
47
|
}
|
|
48
|
+
function resolveBase(theme, custom) {
|
|
49
|
+
if (custom)
|
|
50
|
+
return custom.extends;
|
|
51
|
+
return isThemeId(theme) ? theme : DEFAULT_THEME;
|
|
52
|
+
}
|
|
42
53
|
/** Apply a theme class to an element (defaults to `<html>`). */
|
|
43
|
-
export function applyTheme(theme, target) {
|
|
54
|
+
export function applyTheme(theme, target, custom) {
|
|
44
55
|
if (typeof document === "undefined")
|
|
45
56
|
return;
|
|
46
57
|
const root = target ?? document.documentElement;
|
|
58
|
+
const base = resolveBase(theme, custom);
|
|
59
|
+
const id = custom?.id ?? theme;
|
|
47
60
|
root.classList.remove(...THEME_CLASS_LIST);
|
|
48
|
-
if (
|
|
49
|
-
root.classList.add(
|
|
61
|
+
if (base !== DEFAULT_THEME) {
|
|
62
|
+
root.classList.add(base);
|
|
50
63
|
}
|
|
51
|
-
root.setAttribute("data-spk-theme",
|
|
52
|
-
|
|
64
|
+
root.setAttribute("data-spk-theme", id);
|
|
65
|
+
const dark = custom ? custom.colorScheme === "dark" : isDarkTheme(base);
|
|
66
|
+
root.style.colorScheme = dark ? "dark" : "light";
|
|
53
67
|
}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
+
import { BREAKPOINT_KEYS, BREAKPOINTS, breakpointDown, breakpointUp, type Breakpoint } from "./breakpoints";
|
|
1
2
|
/** Subscribe to a CSS media query. Defaults to `false` until mounted. */
|
|
2
3
|
export declare function useMediaQuery(query: string): boolean;
|
|
3
4
|
/** True when the viewport is below the `md` breakpoint (768px). */
|
|
4
5
|
export declare function useIsMobile(): boolean;
|
|
6
|
+
/** True from this breakpoint up (`xs` is always true). */
|
|
7
|
+
export declare function useBreakpointUp(key: Breakpoint): boolean;
|
|
8
|
+
/** True strictly below this breakpoint. */
|
|
9
|
+
export declare function useBreakpointDown(key: Exclude<Breakpoint, "xs">): boolean;
|
|
10
|
+
/** Largest matching breakpoint, starting at `xs`. */
|
|
11
|
+
export declare function useBreakpoint(): Breakpoint;
|
|
12
|
+
export { BREAKPOINTS, BREAKPOINT_KEYS, breakpointDown, breakpointUp };
|
|
13
|
+
export type { Breakpoint };
|
|
5
14
|
//# sourceMappingURL=use-media-query.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-media-query.d.ts","sourceRoot":"","sources":["../../src/lib/use-media-query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-media-query.d.ts","sourceRoot":"","sources":["../../src/lib/use-media-query.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,WAAW,EACX,cAAc,EACd,YAAY,EACZ,KAAK,UAAU,EAChB,MAAM,eAAe,CAAC;AAEvB,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAapD;AAED,mEAAmE;AACnE,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAGxD;AAED,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,OAAO,CAEzE;AAED,qDAAqD;AACrD,wBAAgB,aAAa,IAAI,UAAU,CAU1C;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { useEffect, useState } from "react";
|
|
2
|
+
import { BREAKPOINT_KEYS, BREAKPOINTS, breakpointDown, breakpointUp, } from "./breakpoints";
|
|
2
3
|
/** Subscribe to a CSS media query. Defaults to `false` until mounted. */
|
|
3
4
|
export function useMediaQuery(query) {
|
|
4
5
|
const [matches, setMatches] = useState(false);
|
|
@@ -15,5 +16,31 @@ export function useMediaQuery(query) {
|
|
|
15
16
|
}
|
|
16
17
|
/** True when the viewport is below the `md` breakpoint (768px). */
|
|
17
18
|
export function useIsMobile() {
|
|
18
|
-
return useMediaQuery(
|
|
19
|
+
return useMediaQuery(breakpointDown("md"));
|
|
19
20
|
}
|
|
21
|
+
/** True from this breakpoint up (`xs` is always true). */
|
|
22
|
+
export function useBreakpointUp(key) {
|
|
23
|
+
const matches = useMediaQuery(breakpointUp(key));
|
|
24
|
+
return key === "xs" || matches;
|
|
25
|
+
}
|
|
26
|
+
/** True strictly below this breakpoint. */
|
|
27
|
+
export function useBreakpointDown(key) {
|
|
28
|
+
return useMediaQuery(breakpointDown(key));
|
|
29
|
+
}
|
|
30
|
+
/** Largest matching breakpoint, starting at `xs`. */
|
|
31
|
+
export function useBreakpoint() {
|
|
32
|
+
const sm = useMediaQuery(breakpointUp("sm"));
|
|
33
|
+
const md = useMediaQuery(breakpointUp("md"));
|
|
34
|
+
const lg = useMediaQuery(breakpointUp("lg"));
|
|
35
|
+
const xl = useMediaQuery(breakpointUp("xl"));
|
|
36
|
+
if (xl)
|
|
37
|
+
return "xl";
|
|
38
|
+
if (lg)
|
|
39
|
+
return "lg";
|
|
40
|
+
if (md)
|
|
41
|
+
return "md";
|
|
42
|
+
if (sm)
|
|
43
|
+
return "sm";
|
|
44
|
+
return "xs";
|
|
45
|
+
}
|
|
46
|
+
export { BREAKPOINTS, BREAKPOINT_KEYS, breakpointDown, breakpointUp };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { type VariantProps } from "class-variance-authority";
|
|
3
3
|
declare const alertVariants: (props?: ({
|
|
4
|
-
variant?: "default" | "
|
|
4
|
+
variant?: "default" | "highlight" | "info" | "warm" | "danger" | null | undefined;
|
|
5
5
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
6
|
declare function Alert({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof alertVariants>): React.JSX.Element;
|
|
7
7
|
declare function AlertTitle({ className, ...props }: React.ComponentProps<"h5">): React.JSX.Element;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { type VariantProps } from "class-variance-authority";
|
|
3
3
|
declare const badgeVariants: (props?: ({
|
|
4
|
-
variant?: "default" | "
|
|
4
|
+
variant?: "default" | "secondary" | "destructive" | "highlight" | "outline" | "info" | "warm" | null | undefined;
|
|
5
5
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
6
|
declare const Badge: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLSpanElement> & React.HTMLAttributes<HTMLSpanElement> & VariantProps<(props?: ({
|
|
7
|
-
variant?: "default" | "
|
|
7
|
+
variant?: "default" | "secondary" | "destructive" | "highlight" | "outline" | "info" | "warm" | null | undefined;
|
|
8
8
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
|
|
9
9
|
asChild?: boolean;
|
|
10
10
|
}, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { type VariantProps } from "class-variance-authority";
|
|
3
3
|
declare const buttonVariants: (props?: ({
|
|
4
|
-
variant?: "default" | "
|
|
4
|
+
variant?: "default" | "secondary" | "destructive" | "link" | "outline" | "ghost" | "glass" | "gradient" | null | undefined;
|
|
5
5
|
size?: "default" | "icon" | "touch" | "sm" | "lg" | "xl" | "icon-touch" | null | undefined;
|
|
6
6
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
7
|
declare const Button: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLButtonElement> & React.ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<(props?: ({
|
|
8
|
-
variant?: "default" | "
|
|
8
|
+
variant?: "default" | "secondary" | "destructive" | "link" | "outline" | "ghost" | "glass" | "gradient" | null | undefined;
|
|
9
9
|
size?: "default" | "icon" | "touch" | "sm" | "lg" | "xl" | "icon-touch" | null | undefined;
|
|
10
10
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
|
|
11
11
|
asChild?: boolean;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { type VariantProps } from "class-variance-authority";
|
|
3
3
|
declare const containerVariants: (props?: ({
|
|
4
|
-
maxWidth?: "sm" | "
|
|
4
|
+
maxWidth?: "sm" | "md" | "lg" | "xl" | "full" | null | undefined;
|
|
5
5
|
disableGutters?: boolean | null | undefined;
|
|
6
6
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
7
|
export type ContainerProps = React.ComponentPropsWithoutRef<"div"> & VariantProps<typeof containerVariants>;
|
|
8
8
|
declare const Container: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & VariantProps<(props?: ({
|
|
9
|
-
maxWidth?: "sm" | "
|
|
9
|
+
maxWidth?: "sm" | "md" | "lg" | "xl" | "full" | null | undefined;
|
|
10
10
|
disableGutters?: boolean | null | undefined;
|
|
11
11
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & React.RefAttributes<HTMLDivElement>>;
|
|
12
12
|
export { Container, containerVariants };
|
package/dist/primitives/Fab.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ import * as React from "react";
|
|
|
2
2
|
import { type VariantProps } from "class-variance-authority";
|
|
3
3
|
declare const fabVariants: (props?: ({
|
|
4
4
|
variant?: "circular" | "extended" | null | undefined;
|
|
5
|
-
color?: "default" | "
|
|
6
|
-
size?: "sm" | "
|
|
5
|
+
color?: "default" | "primary" | "glass" | null | undefined;
|
|
6
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
7
7
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
8
8
|
export type FabProps = Omit<React.ComponentPropsWithoutRef<"button">, "color"> & VariantProps<typeof fabVariants> & {
|
|
9
9
|
asChild?: boolean;
|
|
@@ -13,8 +13,8 @@ export type FabProps = Omit<React.ComponentPropsWithoutRef<"button">, "color"> &
|
|
|
13
13
|
*/
|
|
14
14
|
declare const Fab: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref">, "color"> & VariantProps<(props?: ({
|
|
15
15
|
variant?: "circular" | "extended" | null | undefined;
|
|
16
|
-
color?: "default" | "
|
|
17
|
-
size?: "sm" | "
|
|
16
|
+
color?: "default" | "primary" | "glass" | null | undefined;
|
|
17
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
18
18
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
|
|
19
19
|
asChild?: boolean;
|
|
20
20
|
} & React.RefAttributes<HTMLButtonElement>>;
|