@idealyst/navigation 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.
@@ -0,0 +1,584 @@
1
+ import {
2
+ createTheme,
3
+ type ThemeConfig,
4
+ } from '@idealyst/components/src/theme';
5
+
6
+ // High contrast color palettes - designed for maximum accessibility
7
+ export const highContrastLightPalettes = {
8
+ // Pure high contrast colors
9
+ red: {
10
+ 50: '#ffffff',
11
+ 100: '#ffe5e5',
12
+ 200: '#ffcccc',
13
+ 300: '#ff9999',
14
+ 400: '#ff6666',
15
+ 500: '#ff0000', // Pure red
16
+ 600: '#cc0000',
17
+ 700: '#990000',
18
+ 800: '#660000',
19
+ 900: '#330000',
20
+ },
21
+
22
+ orange: {
23
+ 50: '#ffffff',
24
+ 100: '#fff3e0',
25
+ 200: '#ffe0b3',
26
+ 300: '#ffcc80',
27
+ 400: '#ffb74d',
28
+ 500: '#ff8f00', // High contrast orange
29
+ 600: '#cc7200',
30
+ 700: '#995500',
31
+ 800: '#663900',
32
+ 900: '#331c00',
33
+ },
34
+
35
+ yellow: {
36
+ 50: '#ffffff',
37
+ 100: '#fffde7',
38
+ 200: '#fff9c4',
39
+ 300: '#fff59d',
40
+ 400: '#fff176',
41
+ 500: '#ffeb3b', // High contrast yellow
42
+ 600: '#ccbc2e',
43
+ 700: '#998d22',
44
+ 800: '#665e17',
45
+ 900: '#332f0b',
46
+ },
47
+
48
+ green: {
49
+ 50: '#ffffff',
50
+ 100: '#e8f5e8',
51
+ 200: '#c8e6c8',
52
+ 300: '#a5d6a5',
53
+ 400: '#81c784',
54
+ 500: '#4caf50', // High contrast green
55
+ 600: '#388e3c',
56
+ 700: '#2e7d32',
57
+ 800: '#1b5e20',
58
+ 900: '#0d2f10',
59
+ },
60
+
61
+ blue: {
62
+ 50: '#ffffff',
63
+ 100: '#e3f2fd',
64
+ 200: '#bbdefb',
65
+ 300: '#90caf9',
66
+ 400: '#64b5f6',
67
+ 500: '#2196f3', // High contrast blue
68
+ 600: '#1976d2',
69
+ 700: '#1565c0',
70
+ 800: '#0d47a1',
71
+ 900: '#0a2472',
72
+ },
73
+
74
+ purple: {
75
+ 50: '#ffffff',
76
+ 100: '#f3e5f5',
77
+ 200: '#e1bee7',
78
+ 300: '#ce93d8',
79
+ 400: '#ba68c8',
80
+ 500: '#9c27b0', // High contrast purple
81
+ 600: '#7b1fa2',
82
+ 700: '#6a1b9a',
83
+ 800: '#4a148c',
84
+ 900: '#3d1178',
85
+ },
86
+
87
+ black: {
88
+ 50: '#ffffff',
89
+ 100: '#f5f5f5',
90
+ 200: '#eeeeee',
91
+ 300: '#e0e0e0',
92
+ 400: '#bdbdbd',
93
+ 500: '#9e9e9e',
94
+ 600: '#757575',
95
+ 700: '#616161',
96
+ 800: '#424242',
97
+ 900: '#000000', // Pure black
98
+ },
99
+
100
+ gray: {
101
+ 50: '#ffffff', // Pure white
102
+ 100: '#f8f8f8',
103
+ 200: '#e8e8e8',
104
+ 300: '#d0d0d0',
105
+ 400: '#b0b0b0',
106
+ 500: '#808080',
107
+ 600: '#606060',
108
+ 700: '#404040',
109
+ 800: '#202020',
110
+ 900: '#000000', // Pure black
111
+ },
112
+
113
+ white: {
114
+ 50: '#ffffff', // Pure white
115
+ 100: '#ffffff',
116
+ 200: '#ffffff',
117
+ 300: '#ffffff',
118
+ 400: '#ffffff',
119
+ 500: '#ffffff',
120
+ 600: '#ffffff',
121
+ 700: '#ffffff',
122
+ 800: '#ffffff',
123
+ 900: '#ffffff',
124
+ },
125
+ } as const;
126
+
127
+ // High contrast dark palettes
128
+ export const highContrastDarkPalettes = {
129
+ // Pure high contrast colors for dark mode
130
+ red: {
131
+ 50: '#000000',
132
+ 100: '#330000',
133
+ 200: '#660000',
134
+ 300: '#990000',
135
+ 400: '#cc0000',
136
+ 500: '#ff0000', // Pure red
137
+ 600: '#ff3333',
138
+ 700: '#ff6666',
139
+ 800: '#ff9999',
140
+ 900: '#ffffff',
141
+ },
142
+
143
+ orange: {
144
+ 50: '#000000',
145
+ 100: '#331c00',
146
+ 200: '#663900',
147
+ 300: '#995500',
148
+ 400: '#cc7200',
149
+ 500: '#ff8f00', // High contrast orange
150
+ 600: '#ffab40',
151
+ 700: '#ffcc80',
152
+ 800: '#ffe0b3',
153
+ 900: '#ffffff',
154
+ },
155
+
156
+ yellow: {
157
+ 50: '#000000',
158
+ 100: '#332f0b',
159
+ 200: '#665e17',
160
+ 300: '#998d22',
161
+ 400: '#ccbc2e',
162
+ 500: '#ffeb3b', // High contrast yellow
163
+ 600: '#fff176',
164
+ 700: '#fff59d',
165
+ 800: '#fff9c4',
166
+ 900: '#ffffff',
167
+ },
168
+
169
+ green: {
170
+ 50: '#000000',
171
+ 100: '#0d2f10',
172
+ 200: '#1b5e20',
173
+ 300: '#2e7d32',
174
+ 400: '#388e3c',
175
+ 500: '#4caf50', // High contrast green
176
+ 600: '#81c784',
177
+ 700: '#a5d6a5',
178
+ 800: '#c8e6c8',
179
+ 900: '#ffffff',
180
+ },
181
+
182
+ blue: {
183
+ 50: '#000000',
184
+ 100: '#0a2472',
185
+ 200: '#0d47a1',
186
+ 300: '#1565c0',
187
+ 400: '#1976d2',
188
+ 500: '#2196f3', // High contrast blue
189
+ 600: '#64b5f6',
190
+ 700: '#90caf9',
191
+ 800: '#bbdefb',
192
+ 900: '#ffffff',
193
+ },
194
+
195
+ purple: {
196
+ 50: '#000000',
197
+ 100: '#3d1178',
198
+ 200: '#4a148c',
199
+ 300: '#6a1b9a',
200
+ 400: '#7b1fa2',
201
+ 500: '#9c27b0', // High contrast purple
202
+ 600: '#ba68c8',
203
+ 700: '#ce93d8',
204
+ 800: '#e1bee7',
205
+ 900: '#ffffff',
206
+ },
207
+
208
+ black: {
209
+ 50: '#000000', // Pure black
210
+ 100: '#000000',
211
+ 200: '#000000',
212
+ 300: '#000000',
213
+ 400: '#000000',
214
+ 500: '#000000',
215
+ 600: '#000000',
216
+ 700: '#000000',
217
+ 800: '#000000',
218
+ 900: '#000000',
219
+ },
220
+
221
+ gray: {
222
+ 50: '#000000', // Pure black
223
+ 100: '#111111',
224
+ 200: '#222222',
225
+ 300: '#333333',
226
+ 400: '#555555',
227
+ 500: '#777777',
228
+ 600: '#aaaaaa',
229
+ 700: '#cccccc',
230
+ 800: '#eeeeee',
231
+ 900: '#ffffff', // Pure white
232
+ },
233
+
234
+ white: {
235
+ 50: '#000000',
236
+ 100: '#202020',
237
+ 200: '#404040',
238
+ 300: '#606060',
239
+ 400: '#808080',
240
+ 500: '#a0a0a0',
241
+ 600: '#c0c0c0',
242
+ 700: '#e0e0e0',
243
+ 800: '#f0f0f0',
244
+ 900: '#ffffff', // Pure white
245
+ },
246
+ } as const;
247
+
248
+ // High contrast light intents
249
+ function createHighContrastLightIntents(palettes: typeof highContrastLightPalettes) {
250
+ return {
251
+ primary: {
252
+ main: palettes.blue[500], // Pure blue
253
+ on: '#ffffff', // Pure white text
254
+ container: palettes.blue[50], // White container
255
+ onContainer: palettes.blue[900], // Very dark blue text
256
+ light: palettes.blue[200],
257
+ dark: palettes.blue[800],
258
+ border: palettes.blue[500], // Strong border
259
+ },
260
+ success: {
261
+ main: palettes.green[500], // Pure green
262
+ on: '#ffffff', // Pure white text
263
+ container: palettes.green[50], // White container
264
+ onContainer: palettes.green[900], // Very dark green text
265
+ light: palettes.green[200],
266
+ dark: palettes.green[800],
267
+ border: palettes.green[500], // Strong border
268
+ },
269
+ error: {
270
+ main: palettes.red[500], // Pure red
271
+ on: '#ffffff', // Pure white text
272
+ container: palettes.red[50], // White container
273
+ onContainer: palettes.red[900], // Very dark red text
274
+ light: palettes.red[200],
275
+ dark: palettes.red[800],
276
+ border: palettes.red[500], // Strong border
277
+ },
278
+ warning: {
279
+ main: palettes.orange[500], // High contrast orange
280
+ on: '#000000', // Black text for better contrast
281
+ container: palettes.orange[50], // White container
282
+ onContainer: palettes.orange[900], // Very dark orange text
283
+ light: palettes.orange[200],
284
+ dark: palettes.orange[800],
285
+ border: palettes.orange[500], // Strong border
286
+ },
287
+ neutral: {
288
+ main: palettes.gray[500], // Medium gray
289
+ on: '#ffffff', // Pure white text
290
+ container: palettes.gray[50], // White container
291
+ onContainer: palettes.gray[900], // Pure black text
292
+ light: palettes.gray[200],
293
+ dark: palettes.gray[800],
294
+ border: palettes.gray[500], // Strong border
295
+ },
296
+ info: {
297
+ main: palettes.blue[500], // Pure blue
298
+ on: '#ffffff', // Pure white text
299
+ container: palettes.blue[50], // White container
300
+ onContainer: palettes.blue[900], // Very dark blue text
301
+ light: palettes.blue[200],
302
+ dark: palettes.blue[800],
303
+ border: palettes.blue[500], // Strong border
304
+ },
305
+ } as any;
306
+ }
307
+
308
+ // High contrast dark intents
309
+ function createHighContrastDarkIntents(palettes: typeof highContrastDarkPalettes) {
310
+ return {
311
+ primary: {
312
+ main: palettes.blue[500], // Pure blue
313
+ on: '#000000', // Pure black text
314
+ container: palettes.blue[50], // Black container
315
+ onContainer: palettes.blue[900], // Pure white text
316
+ light: palettes.blue[700],
317
+ dark: palettes.blue[300],
318
+ border: palettes.blue[500], // Strong border
319
+ },
320
+ success: {
321
+ main: palettes.green[500], // Pure green
322
+ on: '#000000', // Pure black text
323
+ container: palettes.green[50], // Black container
324
+ onContainer: palettes.green[900], // Pure white text
325
+ light: palettes.green[700],
326
+ dark: palettes.green[300],
327
+ border: palettes.green[500], // Strong border
328
+ },
329
+ error: {
330
+ main: palettes.red[500], // Pure red
331
+ on: '#000000', // Pure black text
332
+ container: palettes.red[50], // Black container
333
+ onContainer: palettes.red[900], // Pure white text
334
+ light: palettes.red[700],
335
+ dark: palettes.red[300],
336
+ border: palettes.red[500], // Strong border
337
+ },
338
+ warning: {
339
+ main: palettes.orange[500], // High contrast orange
340
+ on: '#000000', // Pure black text
341
+ container: palettes.orange[50], // Black container
342
+ onContainer: palettes.orange[900], // Pure white text
343
+ light: palettes.orange[700],
344
+ dark: palettes.orange[300],
345
+ border: palettes.orange[500], // Strong border
346
+ },
347
+ neutral: {
348
+ main: palettes.gray[500], // Medium gray
349
+ on: '#000000', // Pure black text
350
+ container: palettes.gray[50], // Black container
351
+ onContainer: palettes.gray[900], // Pure white text
352
+ light: palettes.gray[700],
353
+ dark: palettes.gray[300],
354
+ border: palettes.gray[500], // Strong border
355
+ },
356
+ info: {
357
+ main: palettes.blue[500], // Pure blue
358
+ on: '#000000', // Pure black text
359
+ container: palettes.blue[50], // Black container
360
+ onContainer: palettes.blue[900], // Pure white text
361
+ light: palettes.blue[700],
362
+ dark: palettes.blue[300],
363
+ border: palettes.blue[500], // Strong border
364
+ },
365
+ } as any;
366
+ }
367
+
368
+ // High contrast light colors
369
+ function createHighContrastLightColors(palettes: typeof highContrastLightPalettes) {
370
+ return {
371
+ text: {
372
+ primary: palettes.gray[900], // Pure black text
373
+ secondary: palettes.gray[800], // Very dark gray
374
+ disabled: palettes.gray[600], // Medium gray
375
+ inverse: palettes.gray[50], // Pure white
376
+ muted: palettes.gray[700], // Dark gray
377
+ placeholder: palettes.gray[600], // Medium gray
378
+ },
379
+ surface: {
380
+ primary: palettes.gray[50], // Pure white surface
381
+ secondary: palettes.gray[100], // Light gray surface
382
+ tertiary: palettes.gray[200], // Medium light surface
383
+ elevated: palettes.gray[50], // Pure white elevated
384
+ overlay: 'rgba(0, 0, 0, 0.8)', // Strong overlay
385
+ inverse: palettes.gray[900], // Pure black inverse
386
+ },
387
+ border: {
388
+ primary: palettes.gray[900], // Pure black border
389
+ secondary: palettes.gray[800], // Very dark border
390
+ strong: palettes.gray[900], // Pure black strong border
391
+ focus: palettes.blue[500], // Pure blue focus
392
+ disabled: palettes.gray[600], // Medium gray disabled
393
+ },
394
+ interactive: {
395
+ hover: palettes.gray[200], // Light gray hover
396
+ pressed: palettes.gray[300], // Medium light pressed
397
+ focus: palettes.blue[500], // Pure blue focus
398
+ disabled: palettes.gray[200], // Light gray disabled
399
+ },
400
+ };
401
+ }
402
+
403
+ // High contrast dark colors
404
+ function createHighContrastDarkColors(palettes: typeof highContrastDarkPalettes) {
405
+ return {
406
+ text: {
407
+ primary: palettes.gray[900], // Pure white text
408
+ secondary: palettes.gray[800], // Very light gray
409
+ disabled: palettes.gray[600], // Medium gray
410
+ inverse: palettes.gray[50], // Pure black
411
+ muted: palettes.gray[700], // Light gray
412
+ placeholder: palettes.gray[600], // Medium gray
413
+ },
414
+ surface: {
415
+ primary: palettes.gray[50], // Pure black surface
416
+ secondary: palettes.gray[100], // Very dark surface
417
+ tertiary: palettes.gray[200], // Dark surface
418
+ elevated: palettes.gray[100], // Very dark elevated
419
+ overlay: 'rgba(0, 0, 0, 0.9)', // Very strong overlay
420
+ inverse: palettes.gray[900], // Pure white inverse
421
+ },
422
+ border: {
423
+ primary: palettes.gray[900], // Pure white border
424
+ secondary: palettes.gray[800], // Very light border
425
+ strong: palettes.gray[900], // Pure white strong border
426
+ focus: palettes.blue[500], // Pure blue focus
427
+ disabled: palettes.gray[600], // Medium gray disabled
428
+ },
429
+ interactive: {
430
+ hover: palettes.gray[200], // Dark hover
431
+ pressed: palettes.gray[300], // Medium dark pressed
432
+ focus: palettes.blue[500], // Pure blue focus
433
+ disabled: palettes.gray[200], // Dark disabled
434
+ },
435
+ };
436
+ }
437
+
438
+ // Create high contrast themes
439
+ export const highContrastThemes = {
440
+ lightHighContrast: createTheme({
441
+ name: 'LightHighContrast',
442
+ mode: 'light',
443
+ palettes: highContrastLightPalettes,
444
+ intents: createHighContrastLightIntents(highContrastLightPalettes),
445
+ colors: createHighContrastLightColors(highContrastLightPalettes),
446
+
447
+ typography: {
448
+ fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
449
+ fontWeight: {
450
+ light: '400', // No ultra-light weights for better readability
451
+ regular: '500', // Slightly heavier for better contrast
452
+ medium: '600', // Medium weight
453
+ semibold: '700', // Bold
454
+ bold: '800', // Extra bold
455
+ extrabold: '900', // Black
456
+ },
457
+ },
458
+
459
+ borderRadius: {
460
+ sm: 2, // Sharper corners for high contrast
461
+ md: 4,
462
+ lg: 6,
463
+ xl: 8,
464
+ xxl: 12,
465
+ },
466
+
467
+ spacing: {
468
+ xs: 4,
469
+ sm: 8,
470
+ md: 16,
471
+ lg: 24,
472
+ xl: 32,
473
+ xxl: 40,
474
+ xxxl: 48,
475
+ },
476
+
477
+ shadows: {
478
+ sm: {
479
+ shadowColor: '#000',
480
+ shadowOffset: { width: 0, height: 2 },
481
+ shadowOpacity: 0.25, // Stronger shadows
482
+ shadowRadius: 4,
483
+ elevation: 2,
484
+ },
485
+ md: {
486
+ shadowColor: '#000',
487
+ shadowOffset: { width: 0, height: 4 },
488
+ shadowOpacity: 0.3, // Stronger shadows
489
+ shadowRadius: 8,
490
+ elevation: 4,
491
+ },
492
+ lg: {
493
+ shadowColor: '#000',
494
+ shadowOffset: { width: 0, height: 8 },
495
+ shadowOpacity: 0.35, // Stronger shadows
496
+ shadowRadius: 16,
497
+ elevation: 8,
498
+ },
499
+ },
500
+
501
+ transitions: {
502
+ fast: '0.1s ease', // Faster transitions
503
+ base: '0.15s ease',
504
+ slow: '0.2s ease',
505
+ button: 'all 0.15s ease',
506
+ fade: 'opacity 0.15s ease',
507
+ slide: 'transform 0.2s ease',
508
+ },
509
+ }),
510
+
511
+ darkHighContrast: createTheme({
512
+ name: 'DarkHighContrast',
513
+ mode: 'dark',
514
+ palettes: highContrastDarkPalettes,
515
+ intents: createHighContrastDarkIntents(highContrastDarkPalettes),
516
+ colors: createHighContrastDarkColors(highContrastDarkPalettes),
517
+
518
+ typography: {
519
+ fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
520
+ fontWeight: {
521
+ light: '400', // No ultra-light weights for better readability
522
+ regular: '500', // Slightly heavier for better contrast
523
+ medium: '600', // Medium weight
524
+ semibold: '700', // Bold
525
+ bold: '800', // Extra bold
526
+ extrabold: '900', // Black
527
+ },
528
+ },
529
+
530
+ borderRadius: {
531
+ sm: 2, // Sharper corners for high contrast
532
+ md: 4,
533
+ lg: 6,
534
+ xl: 8,
535
+ xxl: 12,
536
+ },
537
+
538
+ spacing: {
539
+ xs: 4,
540
+ sm: 8,
541
+ md: 16,
542
+ lg: 24,
543
+ xl: 32,
544
+ xxl: 40,
545
+ xxxl: 48,
546
+ },
547
+
548
+ shadows: {
549
+ sm: {
550
+ shadowColor: '#000',
551
+ shadowOffset: { width: 0, height: 2 },
552
+ shadowOpacity: 0.5, // Much stronger shadows for dark mode
553
+ shadowRadius: 4,
554
+ elevation: 2,
555
+ },
556
+ md: {
557
+ shadowColor: '#000',
558
+ shadowOffset: { width: 0, height: 4 },
559
+ shadowOpacity: 0.6, // Much stronger shadows for dark mode
560
+ shadowRadius: 8,
561
+ elevation: 4,
562
+ },
563
+ lg: {
564
+ shadowColor: '#000',
565
+ shadowOffset: { width: 0, height: 8 },
566
+ shadowOpacity: 0.7, // Much stronger shadows for dark mode
567
+ shadowRadius: 16,
568
+ elevation: 8,
569
+ },
570
+ },
571
+
572
+ transitions: {
573
+ fast: '0.1s ease', // Faster transitions
574
+ base: '0.15s ease',
575
+ slow: '0.2s ease',
576
+ button: 'all 0.15s ease',
577
+ fade: 'opacity 0.15s ease',
578
+ slide: 'transform 0.2s ease',
579
+ },
580
+ }),
581
+ } as const;
582
+
583
+ // Extended type definitions for TypeScript
584
+ export type HighContrastThemeVariant = 'lightHighContrast' | 'darkHighContrast';
@@ -0,0 +1,3 @@
1
+ export { default as ExampleStackRouter } from './ExampleStackRouter';
2
+ export { default as ExampleTabRouter } from './ExampleTabRouter';
3
+ export { default as ExampleDrawerRouter } from './ExampleDrawerRouter';
@@ -0,0 +1,84 @@
1
+ import { breakpoints, extendedThemes } from '@idealyst/components/src/theme';
2
+ import { highContrastThemes } from './highContrastThemes';
3
+ import { StyleSheet } from 'react-native-unistyles';
4
+
5
+ // Extend UnistylesThemes to include high contrast themes
6
+ // This overrides the more limited declaration from the components package
7
+ declare module 'react-native-unistyles' {
8
+ export interface UnistylesThemes {
9
+ light: typeof extendedThemes.light;
10
+ dark: typeof extendedThemes.dark;
11
+ lightHighContrast: typeof highContrastThemes.lightHighContrast;
12
+ darkHighContrast: typeof highContrastThemes.darkHighContrast;
13
+ }
14
+ }
15
+
16
+ // Configure with all themes, including high contrast variants
17
+ // This will override any previous configuration
18
+ StyleSheet.configure({
19
+ themes: {
20
+ light: extendedThemes.light,
21
+ dark: extendedThemes.dark,
22
+ lightHighContrast: highContrastThemes.lightHighContrast,
23
+ darkHighContrast: highContrastThemes.darkHighContrast,
24
+ },
25
+ settings: {
26
+ initialTheme: 'light',
27
+ },
28
+ breakpoints,
29
+ });
30
+
31
+ // Export theme names for easy reference
32
+ export const availableThemes = [
33
+ 'light',
34
+ 'dark',
35
+ 'lightHighContrast',
36
+ 'darkHighContrast'
37
+ ] as const;
38
+
39
+ export type AvailableTheme = typeof availableThemes[number];
40
+
41
+ // Helper function to get next theme in rotation
42
+ export function getNextTheme(currentTheme: string): AvailableTheme {
43
+ const currentIndex = availableThemes.indexOf(currentTheme as AvailableTheme);
44
+ const nextIndex = (currentIndex + 1) % availableThemes.length;
45
+ return availableThemes[nextIndex];
46
+ }
47
+
48
+ // Helper function to get theme display name
49
+ export function getThemeDisplayName(theme: string): string {
50
+ switch (theme) {
51
+ case 'light':
52
+ return 'Light';
53
+ case 'dark':
54
+ return 'Dark';
55
+ case 'lightHighContrast':
56
+ return 'Light High Contrast';
57
+ case 'darkHighContrast':
58
+ return 'Dark High Contrast';
59
+ default:
60
+ return theme;
61
+ }
62
+ }
63
+
64
+ // Helper function to check if theme is high contrast
65
+ export function isHighContrastTheme(theme: string): boolean {
66
+ return theme.includes('HighContrast');
67
+ }
68
+
69
+ // Helper function to get matching theme mode
70
+ export function getThemeMode(theme: string): 'light' | 'dark' {
71
+ return theme.includes('dark') ? 'dark' : 'light';
72
+ }
73
+
74
+ // Helper function to get high contrast variant of current theme
75
+ export function getHighContrastVariant(theme: string): AvailableTheme {
76
+ const mode = getThemeMode(theme);
77
+ return mode === 'dark' ? 'darkHighContrast' : 'lightHighContrast';
78
+ }
79
+
80
+ // Helper function to get standard variant of current theme
81
+ export function getStandardVariant(theme: string): AvailableTheme {
82
+ const mode = getThemeMode(theme);
83
+ return mode === 'dark' ? 'dark' : 'light';
84
+ }
package/src/index.ts ADDED
@@ -0,0 +1,5 @@
1
+ // Web-specific exports
2
+ export * from './context';
3
+
4
+ // Layout components
5
+ export * from './layouts';