@grundtone/core 2.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/README.md ADDED
@@ -0,0 +1,78 @@
1
+ # @grundtone/core
2
+
3
+ Core package for the Grundtone design system. This package contains the fundamental building blocks,
4
+ types, and utilities that form the foundation of the design system.
5
+
6
+ ## Installation
7
+
8
+ ```bash
9
+ pnpm add @grundtone/core
10
+ ```
11
+
12
+ ## Usage
13
+
14
+ ```typescript
15
+ import { DEFAULT_THEME, type ThemeConfig } from '@grundtone/core';
16
+
17
+ // Use the default theme
18
+ const theme: ThemeConfig = DEFAULT_THEME;
19
+ ```
20
+
21
+ ## Exports
22
+
23
+ ### Types
24
+
25
+ - `ComponentProps` - Base interface for component props
26
+ - `ThemeConfig` - Theme configuration interface
27
+ - `Size` - Common size variants ('sm' | 'md' | 'lg')
28
+ - `Variant` - Common component variants ('primary' | 'secondary' | 'tertiary')
29
+
30
+ ### Constants
31
+
32
+ - `DEFAULT_THEME` - Default theme configuration
33
+
34
+ ## Development
35
+
36
+ 1. Install dependencies:
37
+
38
+ ```bash
39
+ pnpm install
40
+ ```
41
+
42
+ 2. Start development server:
43
+
44
+ ```bash
45
+ pnpm dev
46
+ ```
47
+
48
+ 3. Build package:
49
+
50
+ ```bash
51
+ pnpm build
52
+ ```
53
+
54
+ 4. Run tests:
55
+
56
+ ```bash
57
+ pnpm test
58
+ ```
59
+
60
+ ## Contributing
61
+
62
+ Please refer to the main project README for contribution guidelines.
63
+
64
+ ## TypeScript-konfiguration
65
+
66
+ Denne pakke bruger en specifik `tsconfig.json`, som udvider rodens `tsconfig.build.json`.
67
+ Konfigurationen sikrer at kildekoden i `src/` og types i `types/` bliver korrekt transpileret og at
68
+ types genereres i `dist/types`.
69
+
70
+ - outDir: `dist`
71
+ - rootDir: `src`
72
+ - Types genereres automatisk ved build
73
+
74
+ Byg pakken med:
75
+
76
+ ```sh
77
+ pnpm build
78
+ ```
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,305 @@
1
+ import { InjectionKey, Ref } from 'vue';
2
+
3
+ interface ComponentProps {
4
+ class?: string;
5
+ style?: string | Record<string, string>;
6
+ }
7
+ type Size = 'sm' | 'md' | 'lg';
8
+ type Variant = 'primary' | 'secondary' | 'tertiary';
9
+
10
+ type ThemeMode = 'light' | 'dark' | 'auto';
11
+ interface ThemeColors {
12
+ primary: string;
13
+ primaryLight: string;
14
+ primaryDark: string;
15
+ onPrimary: string;
16
+ secondary: string;
17
+ secondaryLight: string;
18
+ secondaryDark: string;
19
+ success: string;
20
+ successLight: string;
21
+ successDark: string;
22
+ warning: string;
23
+ warningLight: string;
24
+ warningDark: string;
25
+ error: string;
26
+ errorLight: string;
27
+ errorDark: string;
28
+ info: string;
29
+ infoLight: string;
30
+ infoDark: string;
31
+ background: string;
32
+ backgroundAlt: string;
33
+ surface: string;
34
+ surfaceAlt: string;
35
+ surfaceRaised: string;
36
+ surfaceOverlay: string;
37
+ modalBackdrop: string;
38
+ text: string;
39
+ textSecondary: string;
40
+ textTertiary: string;
41
+ textInverse: string;
42
+ textPlaceholder: string;
43
+ textDisabled: string;
44
+ borderLight: string;
45
+ borderMedium: string;
46
+ borderStrong: string;
47
+ borderInverse: string;
48
+ focus: string;
49
+ focusRing: string;
50
+ neutral: string;
51
+ }
52
+ interface ThemeSpacing {
53
+ xs: string;
54
+ sm: string;
55
+ md: string;
56
+ lg: string;
57
+ xl: string;
58
+ '2xl': string;
59
+ '3xl': string;
60
+ '4xl': string;
61
+ }
62
+ interface ThemeTypography {
63
+ fontFamily: {
64
+ base: string;
65
+ heading: string;
66
+ mono: string;
67
+ };
68
+ fontSize: {
69
+ xs: string;
70
+ sm: string;
71
+ base: string;
72
+ lg: string;
73
+ xl: string;
74
+ '2xl': string;
75
+ '3xl': string;
76
+ '4xl': string;
77
+ '5xl': string;
78
+ };
79
+ fontWeight: {
80
+ thin: number;
81
+ light: number;
82
+ normal: number;
83
+ medium: number;
84
+ semibold: number;
85
+ bold: number;
86
+ extrabold: number;
87
+ };
88
+ lineHeight: {
89
+ none: number;
90
+ tight: number;
91
+ snug: number;
92
+ normal: number;
93
+ relaxed: number;
94
+ loose: number;
95
+ };
96
+ }
97
+ interface ThemeShadows {
98
+ xs: string;
99
+ sm: string;
100
+ md: string;
101
+ lg: string;
102
+ xl: string;
103
+ '2xl': string;
104
+ inner: string;
105
+ none: string;
106
+ }
107
+ interface ShadowLayer {
108
+ x: number;
109
+ y: number;
110
+ blur: number;
111
+ spread: number;
112
+ color: string;
113
+ opacity: number;
114
+ inset?: boolean;
115
+ }
116
+ interface ThemeRadius {
117
+ none: string;
118
+ xs: string;
119
+ sm: string;
120
+ md: string;
121
+ lg: string;
122
+ xl: string;
123
+ '2xl': string;
124
+ '3xl': string;
125
+ full: string;
126
+ }
127
+ interface ThemeTransitions {
128
+ duration: {
129
+ fast: string;
130
+ base: string;
131
+ slow: string;
132
+ };
133
+ timing: {
134
+ ease: string;
135
+ easeIn: string;
136
+ easeOut: string;
137
+ easeInOut: string;
138
+ linear: string;
139
+ };
140
+ }
141
+ interface ThemeZIndex {
142
+ dropdown: number;
143
+ sticky: number;
144
+ fixed: number;
145
+ modalBackdrop: number;
146
+ modal: number;
147
+ popover: number;
148
+ tooltip: number;
149
+ toast: number;
150
+ }
151
+ interface Theme {
152
+ mode: ThemeMode;
153
+ colors: ThemeColors;
154
+ spacing: ThemeSpacing;
155
+ typography: ThemeTypography;
156
+ shadows: ThemeShadows;
157
+ shadowDefinitions: Record<string, ShadowLayer[]>;
158
+ radius: ThemeRadius;
159
+ transitions: ThemeTransitions;
160
+ zIndex: ThemeZIndex;
161
+ }
162
+ interface ThemeProviderContext {
163
+ theme: Readonly<Ref<Theme>>;
164
+ mode: Readonly<Ref<ThemeMode>>;
165
+ isDark: Readonly<Ref<boolean>>;
166
+ isLight: Readonly<Ref<boolean>>;
167
+ setMode: (mode: ThemeMode) => void;
168
+ toggleMode: () => void;
169
+ applyTheme: () => void;
170
+ }
171
+ declare const THEME_INJECTION_KEY: InjectionKey<ThemeProviderContext>;
172
+ type ThemeConfig = Partial<Theme> | {
173
+ light?: Partial<Theme>;
174
+ dark?: Partial<Theme>;
175
+ };
176
+ interface ThemeProviderProps {
177
+ mode?: ThemeMode;
178
+ theme?: ThemeConfig;
179
+ enableTransitions?: boolean;
180
+ persistMode?: boolean;
181
+ storageKey?: string;
182
+ }
183
+
184
+ type ColorPreset = Theme['colors'];
185
+ declare const SEMANTIC_COLOR_KEYS: readonly ["primary", "primaryLight", "primaryDark", "onPrimary", "secondary", "secondaryLight", "secondaryDark", "success", "successLight", "successDark", "warning", "warningLight", "warningDark", "error", "errorLight", "errorDark", "info", "infoLight", "infoDark", "background", "backgroundAlt", "surface", "surfaceAlt", "surfaceRaised", "surfaceOverlay", "modalBackdrop", "text", "textSecondary", "textTertiary", "textInverse", "textPlaceholder", "textDisabled", "borderLight", "borderMedium", "borderStrong", "borderInverse", "focus", "focusRing", "neutral"];
186
+ declare const defaultColorPreset: ColorPreset;
187
+ declare const defaultColorPresetDark: ColorPreset;
188
+ declare const defaultSpacing: {
189
+ readonly xs: "0.25rem";
190
+ readonly sm: "0.5rem";
191
+ readonly md: "1rem";
192
+ readonly lg: "1.5rem";
193
+ readonly xl: "2rem";
194
+ readonly '2xl': "3rem";
195
+ readonly '3xl': "4rem";
196
+ readonly '4xl': "6rem";
197
+ };
198
+ declare const defaultTypography: {
199
+ readonly fontFamily: {
200
+ readonly base: "'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif";
201
+ readonly heading: "'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif";
202
+ readonly mono: "'IBM Plex Mono', 'Courier New', monospace";
203
+ };
204
+ readonly fontSize: {
205
+ readonly xs: "0.75rem";
206
+ readonly sm: "0.875rem";
207
+ readonly base: "1rem";
208
+ readonly lg: "1.125rem";
209
+ readonly xl: "1.25rem";
210
+ readonly '2xl': "1.5rem";
211
+ readonly '3xl': "1.875rem";
212
+ readonly '4xl': "2.25rem";
213
+ readonly '5xl': "3rem";
214
+ };
215
+ readonly fontWeight: {
216
+ readonly thin: 100;
217
+ readonly light: 300;
218
+ readonly normal: 400;
219
+ readonly medium: 500;
220
+ readonly semibold: 600;
221
+ readonly bold: 700;
222
+ readonly extrabold: 800;
223
+ };
224
+ readonly lineHeight: {
225
+ readonly none: 1;
226
+ readonly tight: 1.25;
227
+ readonly snug: 1.375;
228
+ readonly normal: 1.5;
229
+ readonly relaxed: 1.625;
230
+ readonly loose: 2;
231
+ };
232
+ };
233
+ declare const defaultShadowDefinitions: Record<string, ShadowLayer[]>;
234
+ declare function hexToRgb(hex: string): {
235
+ r: number;
236
+ g: number;
237
+ b: number;
238
+ };
239
+ declare function shadowLayersToCSS(layers: ShadowLayer[]): string;
240
+ declare const defaultShadows: ThemeShadows;
241
+ declare const defaultRadius: {
242
+ readonly none: "0";
243
+ readonly xs: "0.125rem";
244
+ readonly sm: "0.25rem";
245
+ readonly md: "0.375rem";
246
+ readonly lg: "0.5rem";
247
+ readonly xl: "0.75rem";
248
+ readonly '2xl': "1rem";
249
+ readonly '3xl': "1.5rem";
250
+ readonly full: "9999px";
251
+ };
252
+ declare const defaultTransitions: {
253
+ readonly duration: {
254
+ readonly fast: "150ms";
255
+ readonly base: "300ms";
256
+ readonly slow: "500ms";
257
+ };
258
+ readonly timing: {
259
+ readonly ease: "cubic-bezier(0.4, 0, 0.2, 1)";
260
+ readonly easeIn: "cubic-bezier(0.4, 0, 1, 1)";
261
+ readonly easeOut: "cubic-bezier(0, 0, 0.2, 1)";
262
+ readonly easeInOut: "cubic-bezier(0.4, 0, 0.2, 1)";
263
+ readonly linear: "linear";
264
+ };
265
+ };
266
+ declare const defaultZIndex: {
267
+ readonly dropdown: 1000;
268
+ readonly sticky: 1020;
269
+ readonly fixed: 1030;
270
+ readonly modalBackdrop: 1040;
271
+ readonly modal: 1050;
272
+ readonly popover: 1060;
273
+ readonly tooltip: 1070;
274
+ readonly toast: 1080;
275
+ };
276
+ declare function createTheme(overrides: {
277
+ light?: Partial<ColorPreset>;
278
+ dark?: Partial<ColorPreset>;
279
+ }): {
280
+ light: Theme;
281
+ dark: Theme;
282
+ };
283
+ declare const defaultTheme: Theme;
284
+
285
+ interface LogoVariants {
286
+ primary: string;
287
+ favicon32: string;
288
+ favicon16: string;
289
+ appleTouchIcon: string;
290
+ pwa192: string;
291
+ pwa512: string;
292
+ }
293
+ interface BrandingConfig {
294
+ name: string;
295
+ tagline: string;
296
+ logos: LogoVariants;
297
+ }
298
+ declare const LOGO_VARIANT_SIZES: Record<keyof LogoVariants, {
299
+ width: number;
300
+ height: number;
301
+ }>;
302
+ declare const defaultBranding: BrandingConfig;
303
+ declare function createBranding(overrides?: Partial<BrandingConfig>): BrandingConfig;
304
+
305
+ export { type BrandingConfig, type ColorPreset, type ComponentProps, LOGO_VARIANT_SIZES, type LogoVariants, SEMANTIC_COLOR_KEYS, type ShadowLayer, type Size, THEME_INJECTION_KEY, type Theme, type ThemeColors, type ThemeConfig, type ThemeMode, type ThemeProviderContext, type ThemeProviderProps, type ThemeRadius, type ThemeShadows, type ThemeSpacing, type ThemeTransitions, type ThemeTypography, type ThemeZIndex, type Variant, createBranding, createTheme, defaultBranding, defaultColorPreset, defaultColorPresetDark, defaultRadius, defaultShadowDefinitions, defaultShadows, defaultSpacing, defaultTheme, defaultTransitions, defaultTypography, defaultZIndex, hexToRgb, shadowLayersToCSS };
@@ -0,0 +1,305 @@
1
+ import { InjectionKey, Ref } from 'vue';
2
+
3
+ interface ComponentProps {
4
+ class?: string;
5
+ style?: string | Record<string, string>;
6
+ }
7
+ type Size = 'sm' | 'md' | 'lg';
8
+ type Variant = 'primary' | 'secondary' | 'tertiary';
9
+
10
+ type ThemeMode = 'light' | 'dark' | 'auto';
11
+ interface ThemeColors {
12
+ primary: string;
13
+ primaryLight: string;
14
+ primaryDark: string;
15
+ onPrimary: string;
16
+ secondary: string;
17
+ secondaryLight: string;
18
+ secondaryDark: string;
19
+ success: string;
20
+ successLight: string;
21
+ successDark: string;
22
+ warning: string;
23
+ warningLight: string;
24
+ warningDark: string;
25
+ error: string;
26
+ errorLight: string;
27
+ errorDark: string;
28
+ info: string;
29
+ infoLight: string;
30
+ infoDark: string;
31
+ background: string;
32
+ backgroundAlt: string;
33
+ surface: string;
34
+ surfaceAlt: string;
35
+ surfaceRaised: string;
36
+ surfaceOverlay: string;
37
+ modalBackdrop: string;
38
+ text: string;
39
+ textSecondary: string;
40
+ textTertiary: string;
41
+ textInverse: string;
42
+ textPlaceholder: string;
43
+ textDisabled: string;
44
+ borderLight: string;
45
+ borderMedium: string;
46
+ borderStrong: string;
47
+ borderInverse: string;
48
+ focus: string;
49
+ focusRing: string;
50
+ neutral: string;
51
+ }
52
+ interface ThemeSpacing {
53
+ xs: string;
54
+ sm: string;
55
+ md: string;
56
+ lg: string;
57
+ xl: string;
58
+ '2xl': string;
59
+ '3xl': string;
60
+ '4xl': string;
61
+ }
62
+ interface ThemeTypography {
63
+ fontFamily: {
64
+ base: string;
65
+ heading: string;
66
+ mono: string;
67
+ };
68
+ fontSize: {
69
+ xs: string;
70
+ sm: string;
71
+ base: string;
72
+ lg: string;
73
+ xl: string;
74
+ '2xl': string;
75
+ '3xl': string;
76
+ '4xl': string;
77
+ '5xl': string;
78
+ };
79
+ fontWeight: {
80
+ thin: number;
81
+ light: number;
82
+ normal: number;
83
+ medium: number;
84
+ semibold: number;
85
+ bold: number;
86
+ extrabold: number;
87
+ };
88
+ lineHeight: {
89
+ none: number;
90
+ tight: number;
91
+ snug: number;
92
+ normal: number;
93
+ relaxed: number;
94
+ loose: number;
95
+ };
96
+ }
97
+ interface ThemeShadows {
98
+ xs: string;
99
+ sm: string;
100
+ md: string;
101
+ lg: string;
102
+ xl: string;
103
+ '2xl': string;
104
+ inner: string;
105
+ none: string;
106
+ }
107
+ interface ShadowLayer {
108
+ x: number;
109
+ y: number;
110
+ blur: number;
111
+ spread: number;
112
+ color: string;
113
+ opacity: number;
114
+ inset?: boolean;
115
+ }
116
+ interface ThemeRadius {
117
+ none: string;
118
+ xs: string;
119
+ sm: string;
120
+ md: string;
121
+ lg: string;
122
+ xl: string;
123
+ '2xl': string;
124
+ '3xl': string;
125
+ full: string;
126
+ }
127
+ interface ThemeTransitions {
128
+ duration: {
129
+ fast: string;
130
+ base: string;
131
+ slow: string;
132
+ };
133
+ timing: {
134
+ ease: string;
135
+ easeIn: string;
136
+ easeOut: string;
137
+ easeInOut: string;
138
+ linear: string;
139
+ };
140
+ }
141
+ interface ThemeZIndex {
142
+ dropdown: number;
143
+ sticky: number;
144
+ fixed: number;
145
+ modalBackdrop: number;
146
+ modal: number;
147
+ popover: number;
148
+ tooltip: number;
149
+ toast: number;
150
+ }
151
+ interface Theme {
152
+ mode: ThemeMode;
153
+ colors: ThemeColors;
154
+ spacing: ThemeSpacing;
155
+ typography: ThemeTypography;
156
+ shadows: ThemeShadows;
157
+ shadowDefinitions: Record<string, ShadowLayer[]>;
158
+ radius: ThemeRadius;
159
+ transitions: ThemeTransitions;
160
+ zIndex: ThemeZIndex;
161
+ }
162
+ interface ThemeProviderContext {
163
+ theme: Readonly<Ref<Theme>>;
164
+ mode: Readonly<Ref<ThemeMode>>;
165
+ isDark: Readonly<Ref<boolean>>;
166
+ isLight: Readonly<Ref<boolean>>;
167
+ setMode: (mode: ThemeMode) => void;
168
+ toggleMode: () => void;
169
+ applyTheme: () => void;
170
+ }
171
+ declare const THEME_INJECTION_KEY: InjectionKey<ThemeProviderContext>;
172
+ type ThemeConfig = Partial<Theme> | {
173
+ light?: Partial<Theme>;
174
+ dark?: Partial<Theme>;
175
+ };
176
+ interface ThemeProviderProps {
177
+ mode?: ThemeMode;
178
+ theme?: ThemeConfig;
179
+ enableTransitions?: boolean;
180
+ persistMode?: boolean;
181
+ storageKey?: string;
182
+ }
183
+
184
+ type ColorPreset = Theme['colors'];
185
+ declare const SEMANTIC_COLOR_KEYS: readonly ["primary", "primaryLight", "primaryDark", "onPrimary", "secondary", "secondaryLight", "secondaryDark", "success", "successLight", "successDark", "warning", "warningLight", "warningDark", "error", "errorLight", "errorDark", "info", "infoLight", "infoDark", "background", "backgroundAlt", "surface", "surfaceAlt", "surfaceRaised", "surfaceOverlay", "modalBackdrop", "text", "textSecondary", "textTertiary", "textInverse", "textPlaceholder", "textDisabled", "borderLight", "borderMedium", "borderStrong", "borderInverse", "focus", "focusRing", "neutral"];
186
+ declare const defaultColorPreset: ColorPreset;
187
+ declare const defaultColorPresetDark: ColorPreset;
188
+ declare const defaultSpacing: {
189
+ readonly xs: "0.25rem";
190
+ readonly sm: "0.5rem";
191
+ readonly md: "1rem";
192
+ readonly lg: "1.5rem";
193
+ readonly xl: "2rem";
194
+ readonly '2xl': "3rem";
195
+ readonly '3xl': "4rem";
196
+ readonly '4xl': "6rem";
197
+ };
198
+ declare const defaultTypography: {
199
+ readonly fontFamily: {
200
+ readonly base: "'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif";
201
+ readonly heading: "'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif";
202
+ readonly mono: "'IBM Plex Mono', 'Courier New', monospace";
203
+ };
204
+ readonly fontSize: {
205
+ readonly xs: "0.75rem";
206
+ readonly sm: "0.875rem";
207
+ readonly base: "1rem";
208
+ readonly lg: "1.125rem";
209
+ readonly xl: "1.25rem";
210
+ readonly '2xl': "1.5rem";
211
+ readonly '3xl': "1.875rem";
212
+ readonly '4xl': "2.25rem";
213
+ readonly '5xl': "3rem";
214
+ };
215
+ readonly fontWeight: {
216
+ readonly thin: 100;
217
+ readonly light: 300;
218
+ readonly normal: 400;
219
+ readonly medium: 500;
220
+ readonly semibold: 600;
221
+ readonly bold: 700;
222
+ readonly extrabold: 800;
223
+ };
224
+ readonly lineHeight: {
225
+ readonly none: 1;
226
+ readonly tight: 1.25;
227
+ readonly snug: 1.375;
228
+ readonly normal: 1.5;
229
+ readonly relaxed: 1.625;
230
+ readonly loose: 2;
231
+ };
232
+ };
233
+ declare const defaultShadowDefinitions: Record<string, ShadowLayer[]>;
234
+ declare function hexToRgb(hex: string): {
235
+ r: number;
236
+ g: number;
237
+ b: number;
238
+ };
239
+ declare function shadowLayersToCSS(layers: ShadowLayer[]): string;
240
+ declare const defaultShadows: ThemeShadows;
241
+ declare const defaultRadius: {
242
+ readonly none: "0";
243
+ readonly xs: "0.125rem";
244
+ readonly sm: "0.25rem";
245
+ readonly md: "0.375rem";
246
+ readonly lg: "0.5rem";
247
+ readonly xl: "0.75rem";
248
+ readonly '2xl': "1rem";
249
+ readonly '3xl': "1.5rem";
250
+ readonly full: "9999px";
251
+ };
252
+ declare const defaultTransitions: {
253
+ readonly duration: {
254
+ readonly fast: "150ms";
255
+ readonly base: "300ms";
256
+ readonly slow: "500ms";
257
+ };
258
+ readonly timing: {
259
+ readonly ease: "cubic-bezier(0.4, 0, 0.2, 1)";
260
+ readonly easeIn: "cubic-bezier(0.4, 0, 1, 1)";
261
+ readonly easeOut: "cubic-bezier(0, 0, 0.2, 1)";
262
+ readonly easeInOut: "cubic-bezier(0.4, 0, 0.2, 1)";
263
+ readonly linear: "linear";
264
+ };
265
+ };
266
+ declare const defaultZIndex: {
267
+ readonly dropdown: 1000;
268
+ readonly sticky: 1020;
269
+ readonly fixed: 1030;
270
+ readonly modalBackdrop: 1040;
271
+ readonly modal: 1050;
272
+ readonly popover: 1060;
273
+ readonly tooltip: 1070;
274
+ readonly toast: 1080;
275
+ };
276
+ declare function createTheme(overrides: {
277
+ light?: Partial<ColorPreset>;
278
+ dark?: Partial<ColorPreset>;
279
+ }): {
280
+ light: Theme;
281
+ dark: Theme;
282
+ };
283
+ declare const defaultTheme: Theme;
284
+
285
+ interface LogoVariants {
286
+ primary: string;
287
+ favicon32: string;
288
+ favicon16: string;
289
+ appleTouchIcon: string;
290
+ pwa192: string;
291
+ pwa512: string;
292
+ }
293
+ interface BrandingConfig {
294
+ name: string;
295
+ tagline: string;
296
+ logos: LogoVariants;
297
+ }
298
+ declare const LOGO_VARIANT_SIZES: Record<keyof LogoVariants, {
299
+ width: number;
300
+ height: number;
301
+ }>;
302
+ declare const defaultBranding: BrandingConfig;
303
+ declare function createBranding(overrides?: Partial<BrandingConfig>): BrandingConfig;
304
+
305
+ export { type BrandingConfig, type ColorPreset, type ComponentProps, LOGO_VARIANT_SIZES, type LogoVariants, SEMANTIC_COLOR_KEYS, type ShadowLayer, type Size, THEME_INJECTION_KEY, type Theme, type ThemeColors, type ThemeConfig, type ThemeMode, type ThemeProviderContext, type ThemeProviderProps, type ThemeRadius, type ThemeShadows, type ThemeSpacing, type ThemeTransitions, type ThemeTypography, type ThemeZIndex, type Variant, createBranding, createTheme, defaultBranding, defaultColorPreset, defaultColorPresetDark, defaultRadius, defaultShadowDefinitions, defaultShadows, defaultSpacing, defaultTheme, defaultTransitions, defaultTypography, defaultZIndex, hexToRgb, shadowLayersToCSS };