@octavius2929-personal/design-system 0.3.0 → 0.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/dist/index.d.ts CHANGED
@@ -1,8 +1,609 @@
1
1
  import * as react from 'react';
2
2
  import { SVGProps, ReactElement, ButtonHTMLAttributes, HTMLAttributes, ReactNode, InputHTMLAttributes, TableHTMLAttributes } from 'react';
3
3
 
4
+ declare const tintaSchema: {
5
+ light: {
6
+ color: {
7
+ bg1: string;
8
+ bg2: string;
9
+ bg3: string;
10
+ bgInset: string;
11
+ fg1: string;
12
+ fg2: string;
13
+ fg3: string;
14
+ fgOnAccent: string;
15
+ border1: string;
16
+ border2: string;
17
+ borderStrong: string;
18
+ accent: string;
19
+ accentHover: string;
20
+ accentSoft: string;
21
+ ok: string;
22
+ warn: string;
23
+ danger: string;
24
+ info: string;
25
+ focus: string;
26
+ scrim: string;
27
+ };
28
+ font: {
29
+ readonly display: "'DM Serif Display', 'Times New Roman', serif";
30
+ readonly text: "'Newsreader', Georgia, serif";
31
+ readonly mono: "'IBM Plex Mono', 'SFMono-Regular', monospace";
32
+ readonly black: "'UnifrakturMaguntia', 'Grenze Gotisch', serif";
33
+ };
34
+ text: {
35
+ readonly eyebrow: {
36
+ readonly size: "0.694rem";
37
+ readonly lineHeight: "1.2";
38
+ readonly weight: "500";
39
+ readonly letterSpacing: "0.14em";
40
+ };
41
+ readonly display: {
42
+ readonly size: "5.6rem";
43
+ readonly lineHeight: "1.05";
44
+ readonly weight: "600";
45
+ readonly letterSpacing: "-0.01em";
46
+ };
47
+ readonly h1: {
48
+ readonly size: "2.9rem";
49
+ readonly lineHeight: "1.05";
50
+ readonly weight: "600";
51
+ readonly letterSpacing: "-0.01em";
52
+ };
53
+ readonly h2: {
54
+ readonly size: "2.1rem";
55
+ readonly lineHeight: "1.2";
56
+ readonly weight: "600";
57
+ readonly letterSpacing: "0";
58
+ };
59
+ readonly h3: {
60
+ readonly size: "1.563rem";
61
+ readonly lineHeight: "1.2";
62
+ readonly weight: "500";
63
+ readonly letterSpacing: "0";
64
+ };
65
+ readonly h4: {
66
+ readonly size: "1.25rem";
67
+ readonly lineHeight: "1.2";
68
+ readonly weight: "600";
69
+ readonly letterSpacing: "0";
70
+ };
71
+ readonly body: {
72
+ readonly size: "1rem";
73
+ readonly lineHeight: "1.7";
74
+ readonly weight: "400";
75
+ readonly letterSpacing: "0";
76
+ };
77
+ readonly lead: {
78
+ readonly size: "1.25rem";
79
+ readonly lineHeight: "1.7";
80
+ readonly weight: "400";
81
+ readonly letterSpacing: "0";
82
+ };
83
+ readonly small: {
84
+ readonly size: "0.95rem";
85
+ readonly lineHeight: "1.5";
86
+ readonly weight: "400";
87
+ readonly letterSpacing: "0";
88
+ };
89
+ readonly caption: {
90
+ readonly size: "0.833rem";
91
+ readonly lineHeight: "1.5";
92
+ readonly weight: "400";
93
+ readonly letterSpacing: "0.04em";
94
+ };
95
+ };
96
+ space: {
97
+ readonly none: "0";
98
+ readonly xs: "0.25rem";
99
+ readonly sm: "0.5rem";
100
+ readonly md: "0.75rem";
101
+ readonly lg: "1rem";
102
+ readonly xl: "1.5rem";
103
+ readonly "2xl": "2rem";
104
+ readonly "3xl": "3rem";
105
+ readonly "4xl": "4rem";
106
+ readonly "5xl": "6rem";
107
+ };
108
+ radius: {
109
+ readonly none: "0px";
110
+ readonly sm: "3px";
111
+ readonly md: "5px";
112
+ readonly lg: "8px";
113
+ readonly base: "4px";
114
+ readonly full: "999px";
115
+ };
116
+ border: {
117
+ readonly hair: "1px";
118
+ readonly rule: "1.5px";
119
+ readonly heavy: "2px";
120
+ };
121
+ tracking: {
122
+ readonly tight: "-0.01em";
123
+ readonly normal: "0";
124
+ readonly wide: "0.04em";
125
+ readonly wider: "0.1em";
126
+ readonly widest: "0.14em";
127
+ };
128
+ weight: {
129
+ readonly light: "300";
130
+ readonly regular: "400";
131
+ readonly medium: "500";
132
+ readonly semibold: "600";
133
+ readonly bold: "700";
134
+ };
135
+ dur: {
136
+ readonly fast: "120ms";
137
+ readonly base: "200ms";
138
+ readonly slow: "360ms";
139
+ };
140
+ ease: {
141
+ readonly ink: "cubic-bezier(0.2, 0, 0, 1)";
142
+ };
143
+ shadow: {
144
+ readonly sm: "0 1px 0 rgba(20,17,14,0.06)";
145
+ readonly md: "0 2px 10px -4px rgba(20,17,14,0.22)";
146
+ readonly lg: "0 12px 32px -10px rgba(20,17,14,0.34)";
147
+ };
148
+ };
149
+ dark: {
150
+ color: {
151
+ bg1: string;
152
+ bg2: string;
153
+ bg3: string;
154
+ bgInset: string;
155
+ fg1: string;
156
+ fg2: string;
157
+ fg3: string;
158
+ fgOnAccent: string;
159
+ border1: string;
160
+ border2: string;
161
+ borderStrong: string;
162
+ accent: string;
163
+ accentHover: string;
164
+ accentSoft: string;
165
+ ok: string;
166
+ warn: string;
167
+ danger: string;
168
+ info: string;
169
+ focus: string;
170
+ scrim: string;
171
+ };
172
+ font: {
173
+ readonly display: "'DM Serif Display', 'Times New Roman', serif";
174
+ readonly text: "'Newsreader', Georgia, serif";
175
+ readonly mono: "'IBM Plex Mono', 'SFMono-Regular', monospace";
176
+ readonly black: "'UnifrakturMaguntia', 'Grenze Gotisch', serif";
177
+ };
178
+ text: {
179
+ readonly eyebrow: {
180
+ readonly size: "0.694rem";
181
+ readonly lineHeight: "1.2";
182
+ readonly weight: "500";
183
+ readonly letterSpacing: "0.14em";
184
+ };
185
+ readonly display: {
186
+ readonly size: "5.6rem";
187
+ readonly lineHeight: "1.05";
188
+ readonly weight: "600";
189
+ readonly letterSpacing: "-0.01em";
190
+ };
191
+ readonly h1: {
192
+ readonly size: "2.9rem";
193
+ readonly lineHeight: "1.05";
194
+ readonly weight: "600";
195
+ readonly letterSpacing: "-0.01em";
196
+ };
197
+ readonly h2: {
198
+ readonly size: "2.1rem";
199
+ readonly lineHeight: "1.2";
200
+ readonly weight: "600";
201
+ readonly letterSpacing: "0";
202
+ };
203
+ readonly h3: {
204
+ readonly size: "1.563rem";
205
+ readonly lineHeight: "1.2";
206
+ readonly weight: "500";
207
+ readonly letterSpacing: "0";
208
+ };
209
+ readonly h4: {
210
+ readonly size: "1.25rem";
211
+ readonly lineHeight: "1.2";
212
+ readonly weight: "600";
213
+ readonly letterSpacing: "0";
214
+ };
215
+ readonly body: {
216
+ readonly size: "1rem";
217
+ readonly lineHeight: "1.7";
218
+ readonly weight: "400";
219
+ readonly letterSpacing: "0";
220
+ };
221
+ readonly lead: {
222
+ readonly size: "1.25rem";
223
+ readonly lineHeight: "1.7";
224
+ readonly weight: "400";
225
+ readonly letterSpacing: "0";
226
+ };
227
+ readonly small: {
228
+ readonly size: "0.95rem";
229
+ readonly lineHeight: "1.5";
230
+ readonly weight: "400";
231
+ readonly letterSpacing: "0";
232
+ };
233
+ readonly caption: {
234
+ readonly size: "0.833rem";
235
+ readonly lineHeight: "1.5";
236
+ readonly weight: "400";
237
+ readonly letterSpacing: "0.04em";
238
+ };
239
+ };
240
+ space: {
241
+ readonly none: "0";
242
+ readonly xs: "0.25rem";
243
+ readonly sm: "0.5rem";
244
+ readonly md: "0.75rem";
245
+ readonly lg: "1rem";
246
+ readonly xl: "1.5rem";
247
+ readonly "2xl": "2rem";
248
+ readonly "3xl": "3rem";
249
+ readonly "4xl": "4rem";
250
+ readonly "5xl": "6rem";
251
+ };
252
+ radius: {
253
+ readonly none: "0px";
254
+ readonly sm: "3px";
255
+ readonly md: "5px";
256
+ readonly lg: "8px";
257
+ readonly base: "4px";
258
+ readonly full: "999px";
259
+ };
260
+ border: {
261
+ readonly hair: "1px";
262
+ readonly rule: "1.5px";
263
+ readonly heavy: "2px";
264
+ };
265
+ tracking: {
266
+ readonly tight: "-0.01em";
267
+ readonly normal: "0";
268
+ readonly wide: "0.04em";
269
+ readonly wider: "0.1em";
270
+ readonly widest: "0.14em";
271
+ };
272
+ weight: {
273
+ readonly light: "300";
274
+ readonly regular: "400";
275
+ readonly medium: "500";
276
+ readonly semibold: "600";
277
+ readonly bold: "700";
278
+ };
279
+ dur: {
280
+ readonly fast: "120ms";
281
+ readonly base: "200ms";
282
+ readonly slow: "360ms";
283
+ };
284
+ ease: {
285
+ readonly ink: "cubic-bezier(0.2, 0, 0, 1)";
286
+ };
287
+ shadow: {
288
+ readonly sm: "0 1px 0 rgba(20,17,14,0.06)";
289
+ readonly md: "0 2px 10px -4px rgba(20,17,14,0.22)";
290
+ readonly lg: "0 12px 32px -10px rgba(20,17,14,0.34)";
291
+ };
292
+ };
293
+ sepia: {
294
+ color: {
295
+ bg1: string;
296
+ bg2: string;
297
+ bg3: string;
298
+ bgInset: string;
299
+ fg1: string;
300
+ fg2: string;
301
+ fg3: string;
302
+ fgOnAccent: string;
303
+ border1: string;
304
+ border2: string;
305
+ borderStrong: string;
306
+ accent: string;
307
+ accentHover: string;
308
+ accentSoft: string;
309
+ ok: string;
310
+ warn: string;
311
+ danger: string;
312
+ info: string;
313
+ focus: string;
314
+ scrim: string;
315
+ };
316
+ font: {
317
+ readonly display: "'DM Serif Display', 'Times New Roman', serif";
318
+ readonly text: "'Newsreader', Georgia, serif";
319
+ readonly mono: "'IBM Plex Mono', 'SFMono-Regular', monospace";
320
+ readonly black: "'UnifrakturMaguntia', 'Grenze Gotisch', serif";
321
+ };
322
+ text: {
323
+ readonly eyebrow: {
324
+ readonly size: "0.694rem";
325
+ readonly lineHeight: "1.2";
326
+ readonly weight: "500";
327
+ readonly letterSpacing: "0.14em";
328
+ };
329
+ readonly display: {
330
+ readonly size: "5.6rem";
331
+ readonly lineHeight: "1.05";
332
+ readonly weight: "600";
333
+ readonly letterSpacing: "-0.01em";
334
+ };
335
+ readonly h1: {
336
+ readonly size: "2.9rem";
337
+ readonly lineHeight: "1.05";
338
+ readonly weight: "600";
339
+ readonly letterSpacing: "-0.01em";
340
+ };
341
+ readonly h2: {
342
+ readonly size: "2.1rem";
343
+ readonly lineHeight: "1.2";
344
+ readonly weight: "600";
345
+ readonly letterSpacing: "0";
346
+ };
347
+ readonly h3: {
348
+ readonly size: "1.563rem";
349
+ readonly lineHeight: "1.2";
350
+ readonly weight: "500";
351
+ readonly letterSpacing: "0";
352
+ };
353
+ readonly h4: {
354
+ readonly size: "1.25rem";
355
+ readonly lineHeight: "1.2";
356
+ readonly weight: "600";
357
+ readonly letterSpacing: "0";
358
+ };
359
+ readonly body: {
360
+ readonly size: "1rem";
361
+ readonly lineHeight: "1.7";
362
+ readonly weight: "400";
363
+ readonly letterSpacing: "0";
364
+ };
365
+ readonly lead: {
366
+ readonly size: "1.25rem";
367
+ readonly lineHeight: "1.7";
368
+ readonly weight: "400";
369
+ readonly letterSpacing: "0";
370
+ };
371
+ readonly small: {
372
+ readonly size: "0.95rem";
373
+ readonly lineHeight: "1.5";
374
+ readonly weight: "400";
375
+ readonly letterSpacing: "0";
376
+ };
377
+ readonly caption: {
378
+ readonly size: "0.833rem";
379
+ readonly lineHeight: "1.5";
380
+ readonly weight: "400";
381
+ readonly letterSpacing: "0.04em";
382
+ };
383
+ };
384
+ space: {
385
+ readonly none: "0";
386
+ readonly xs: "0.25rem";
387
+ readonly sm: "0.5rem";
388
+ readonly md: "0.75rem";
389
+ readonly lg: "1rem";
390
+ readonly xl: "1.5rem";
391
+ readonly "2xl": "2rem";
392
+ readonly "3xl": "3rem";
393
+ readonly "4xl": "4rem";
394
+ readonly "5xl": "6rem";
395
+ };
396
+ radius: {
397
+ readonly none: "0px";
398
+ readonly sm: "3px";
399
+ readonly md: "5px";
400
+ readonly lg: "8px";
401
+ readonly base: "4px";
402
+ readonly full: "999px";
403
+ };
404
+ border: {
405
+ readonly hair: "1px";
406
+ readonly rule: "1.5px";
407
+ readonly heavy: "2px";
408
+ };
409
+ tracking: {
410
+ readonly tight: "-0.01em";
411
+ readonly normal: "0";
412
+ readonly wide: "0.04em";
413
+ readonly wider: "0.1em";
414
+ readonly widest: "0.14em";
415
+ };
416
+ weight: {
417
+ readonly light: "300";
418
+ readonly regular: "400";
419
+ readonly medium: "500";
420
+ readonly semibold: "600";
421
+ readonly bold: "700";
422
+ };
423
+ dur: {
424
+ readonly fast: "120ms";
425
+ readonly base: "200ms";
426
+ readonly slow: "360ms";
427
+ };
428
+ ease: {
429
+ readonly ink: "cubic-bezier(0.2, 0, 0, 1)";
430
+ };
431
+ shadow: {
432
+ readonly sm: "0 1px 0 rgba(20,17,14,0.06)";
433
+ readonly md: "0 2px 10px -4px rgba(20,17,14,0.22)";
434
+ readonly lg: "0 12px 32px -10px rgba(20,17,14,0.34)";
435
+ };
436
+ };
437
+ contrast: {
438
+ color: {
439
+ bg1: string;
440
+ bg2: string;
441
+ bg3: string;
442
+ bgInset: string;
443
+ fg1: string;
444
+ fg2: string;
445
+ fg3: string;
446
+ fgOnAccent: string;
447
+ border1: string;
448
+ border2: string;
449
+ borderStrong: string;
450
+ accent: string;
451
+ accentHover: string;
452
+ accentSoft: string;
453
+ ok: string;
454
+ warn: string;
455
+ danger: string;
456
+ info: string;
457
+ focus: string;
458
+ scrim: string;
459
+ };
460
+ font: {
461
+ readonly display: "'DM Serif Display', 'Times New Roman', serif";
462
+ readonly text: "'Newsreader', Georgia, serif";
463
+ readonly mono: "'IBM Plex Mono', 'SFMono-Regular', monospace";
464
+ readonly black: "'UnifrakturMaguntia', 'Grenze Gotisch', serif";
465
+ };
466
+ text: {
467
+ readonly eyebrow: {
468
+ readonly size: "0.694rem";
469
+ readonly lineHeight: "1.2";
470
+ readonly weight: "500";
471
+ readonly letterSpacing: "0.14em";
472
+ };
473
+ readonly display: {
474
+ readonly size: "5.6rem";
475
+ readonly lineHeight: "1.05";
476
+ readonly weight: "600";
477
+ readonly letterSpacing: "-0.01em";
478
+ };
479
+ readonly h1: {
480
+ readonly size: "2.9rem";
481
+ readonly lineHeight: "1.05";
482
+ readonly weight: "600";
483
+ readonly letterSpacing: "-0.01em";
484
+ };
485
+ readonly h2: {
486
+ readonly size: "2.1rem";
487
+ readonly lineHeight: "1.2";
488
+ readonly weight: "600";
489
+ readonly letterSpacing: "0";
490
+ };
491
+ readonly h3: {
492
+ readonly size: "1.563rem";
493
+ readonly lineHeight: "1.2";
494
+ readonly weight: "500";
495
+ readonly letterSpacing: "0";
496
+ };
497
+ readonly h4: {
498
+ readonly size: "1.25rem";
499
+ readonly lineHeight: "1.2";
500
+ readonly weight: "600";
501
+ readonly letterSpacing: "0";
502
+ };
503
+ readonly body: {
504
+ readonly size: "1rem";
505
+ readonly lineHeight: "1.7";
506
+ readonly weight: "400";
507
+ readonly letterSpacing: "0";
508
+ };
509
+ readonly lead: {
510
+ readonly size: "1.25rem";
511
+ readonly lineHeight: "1.7";
512
+ readonly weight: "400";
513
+ readonly letterSpacing: "0";
514
+ };
515
+ readonly small: {
516
+ readonly size: "0.95rem";
517
+ readonly lineHeight: "1.5";
518
+ readonly weight: "400";
519
+ readonly letterSpacing: "0";
520
+ };
521
+ readonly caption: {
522
+ readonly size: "0.833rem";
523
+ readonly lineHeight: "1.5";
524
+ readonly weight: "400";
525
+ readonly letterSpacing: "0.04em";
526
+ };
527
+ };
528
+ space: {
529
+ readonly none: "0";
530
+ readonly xs: "0.25rem";
531
+ readonly sm: "0.5rem";
532
+ readonly md: "0.75rem";
533
+ readonly lg: "1rem";
534
+ readonly xl: "1.5rem";
535
+ readonly "2xl": "2rem";
536
+ readonly "3xl": "3rem";
537
+ readonly "4xl": "4rem";
538
+ readonly "5xl": "6rem";
539
+ };
540
+ radius: {
541
+ readonly none: "0px";
542
+ readonly sm: "3px";
543
+ readonly md: "5px";
544
+ readonly lg: "8px";
545
+ readonly base: "4px";
546
+ readonly full: "999px";
547
+ };
548
+ border: {
549
+ readonly hair: "1px";
550
+ readonly rule: "1.5px";
551
+ readonly heavy: "2px";
552
+ };
553
+ tracking: {
554
+ readonly tight: "-0.01em";
555
+ readonly normal: "0";
556
+ readonly wide: "0.04em";
557
+ readonly wider: "0.1em";
558
+ readonly widest: "0.14em";
559
+ };
560
+ weight: {
561
+ readonly light: "300";
562
+ readonly regular: "400";
563
+ readonly medium: "500";
564
+ readonly semibold: "600";
565
+ readonly bold: "700";
566
+ };
567
+ dur: {
568
+ readonly fast: "120ms";
569
+ readonly base: "200ms";
570
+ readonly slow: "360ms";
571
+ };
572
+ ease: {
573
+ readonly ink: "cubic-bezier(0.2, 0, 0, 1)";
574
+ };
575
+ shadow: {
576
+ readonly sm: "0 1px 0 rgba(20,17,14,0.06)";
577
+ readonly md: "0 2px 10px -4px rgba(20,17,14,0.22)";
578
+ readonly lg: "0 12px 32px -10px rgba(20,17,14,0.34)";
579
+ };
580
+ };
581
+ };
582
+
4
583
  type SchemaName = "tinta";
5
584
  type Mode = "light" | "dark" | "sepia" | "contrast";
585
+ declare const colorVars: {
586
+ bg1: `var(--${string})`;
587
+ bg2: `var(--${string})`;
588
+ bg3: `var(--${string})`;
589
+ bgInset: `var(--${string})`;
590
+ fg1: `var(--${string})`;
591
+ fg2: `var(--${string})`;
592
+ fg3: `var(--${string})`;
593
+ fgOnAccent: `var(--${string})`;
594
+ border1: `var(--${string})`;
595
+ border2: `var(--${string})`;
596
+ borderStrong: `var(--${string})`;
597
+ accent: `var(--${string})`;
598
+ accentHover: `var(--${string})`;
599
+ accentSoft: `var(--${string})`;
600
+ ok: `var(--${string})`;
601
+ warn: `var(--${string})`;
602
+ danger: `var(--${string})`;
603
+ info: `var(--${string})`;
604
+ focus: `var(--${string})`;
605
+ scrim: `var(--${string})`;
606
+ };
6
607
  declare const vars: {
7
608
  color: {
8
609
  bg1: `var(--${string})`;
@@ -23,6 +624,7 @@ declare const vars: {
23
624
  warn: `var(--${string})`;
24
625
  danger: `var(--${string})`;
25
626
  info: `var(--${string})`;
627
+ focus: `var(--${string})`;
26
628
  scrim: `var(--${string})`;
27
629
  };
28
630
  font: {
@@ -132,12 +734,6 @@ declare const vars: {
132
734
  readonly wider: `var(--${string})`;
133
735
  readonly widest: `var(--${string})`;
134
736
  };
135
- leading: {
136
- readonly tight: `var(--${string})`;
137
- readonly snug: `var(--${string})`;
138
- readonly normal: `var(--${string})`;
139
- readonly relaxed: `var(--${string})`;
140
- };
141
737
  dur: {
142
738
  readonly fast: `var(--${string})`;
143
739
  readonly base: `var(--${string})`;
@@ -155,6 +751,7 @@ declare const vars: {
155
751
  declare const themes: Record<SchemaName, Record<Mode, string>>;
156
752
  declare const schemaNames: readonly SchemaName[];
157
753
  declare const modeNames: readonly Mode[];
754
+ type ColorTokens = typeof tintaSchema.light.color;
158
755
 
159
756
  declare function usePrevious<T>(value: T, initial: T): T;
160
757
  declare function usePrevious<T>(value: T, initial?: T): T | undefined;
@@ -422,7 +1019,7 @@ interface DialogProps {
422
1019
  children?: ReactNode;
423
1020
  }
424
1021
 
425
- declare function Dialog({ open, onClose, title, actions, children }: DialogProps): react.JSX.Element | null;
1022
+ declare function Dialog({ open, onClose, title, actions, children }: DialogProps): react.ReactPortal | null;
426
1023
 
427
1024
  interface SnackbarProps {
428
1025
  open: boolean;
@@ -431,7 +1028,7 @@ interface SnackbarProps {
431
1028
  onClose?: () => void;
432
1029
  }
433
1030
 
434
- declare function Snackbar({ open, message, action, onClose }: SnackbarProps): react.JSX.Element | null;
1031
+ declare function Snackbar({ open, message, action, onClose }: SnackbarProps): react.ReactPortal | null;
435
1032
 
436
1033
  interface TableColumn<Row> {
437
1034
  key: string;
@@ -496,20 +1093,31 @@ declare function MoreHorizontalIcon({ size, strokeWidth, ...rest }: IconProps):
496
1093
 
497
1094
  declare const text: Record<"display" | "eyebrow" | "h1" | "h2" | "h3" | "h4" | "body" | "lead" | "small" | "caption" | "code" | "blackletter", string>;
498
1095
 
1096
+ type ModePreference = Mode | "system";
499
1097
  interface ThemeContextValue {
500
1098
  schema: SchemaName;
1099
+ /** Modo efectivo ya resuelto (nunca "system"). */
501
1100
  mode: Mode;
1101
+ /** La preferencia cruda elegida (puede ser "system"). */
1102
+ preference: ModePreference;
502
1103
  themeClass: string;
503
1104
  setSchema: (schema: SchemaName) => void;
504
- setMode: (mode: Mode) => void;
1105
+ setMode: (mode: ModePreference) => void;
1106
+ /** Alterna binario claro↔oscuro a partir del modo efectivo. */
505
1107
  toggleMode: () => void;
1108
+ /** Rota por los cuatro modos en orden. */
1109
+ cycleMode: () => void;
506
1110
  }
507
1111
  interface ThemeProviderProps {
508
1112
  children: ReactNode;
509
1113
  defaultSchema?: SchemaName;
510
- defaultMode?: Mode;
1114
+ defaultMode?: ModePreference;
1115
+ /** Clave de localStorage donde se persiste la elección. */
1116
+ storageKey?: string;
1117
+ /** Si es false, no persiste ni rehidrata (útil para previews/tests). */
1118
+ persist?: boolean;
511
1119
  }
512
- declare function ThemeProvider({ children, defaultSchema, defaultMode, }: ThemeProviderProps): react.JSX.Element;
1120
+ declare function ThemeProvider({ children, defaultSchema, defaultMode, storageKey, persist, }: ThemeProviderProps): react.JSX.Element;
513
1121
  declare function useTheme(): ThemeContextValue;
514
1122
 
515
- export { Accordion, type AccordionItem, type AccordionProps, Alert, type AlertProps, type AlertSeverity, AppBar, type AppBarProps, Avatar, type AvatarProps, type AvatarSize, Badge, type BadgeProps, type BadgeTone, Breadcrumbs, type BreadcrumbsProps, Button, type ButtonProps, type ButtonSize, type ButtonTone, type ButtonVariant, Card, type CardProps, type CardSectionProps, CheckIcon, Checkbox, type CheckboxProps, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, Chip, type ChipProps, type ChipTone, CircleCheckIcon, CircleXIcon, type Crumb, Dialog, type DialogProps, Divider, type DividerProps, EyeIcon, EyeOffIcon, type Icon, IconButton, type IconButtonProps, type IconButtonTone, type IconProps, InfoIcon, ListItem, type ListItemProps, Menu, type MenuItemDef, type MenuProps, MinusIcon, type Mode, MoreHorizontalIcon, Pagination, type PaginationProps, PlusIcon, Progress, type ProgressProps, type ProgressVariant, Radio, type RadioProps, type SchemaName, SearchIcon, Select, type SelectOption, type SelectProps, Slider, type SliderProps, Snackbar, type SnackbarProps, type Step, Stepper, type StepperProps, Switch, type SwitchProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, TextField, type TextFieldProps, ThemeProvider, type ThemeProviderProps, Tooltip, type TooltipPlacement, type TooltipProps, TriangleAlertIcon, XIcon, modeNames, schemaNames, text, vars as theme, themes, usePrevious, useTheme, useToggle };
1123
+ export { Accordion, type AccordionItem, type AccordionProps, Alert, type AlertProps, type AlertSeverity, AppBar, type AppBarProps, Avatar, type AvatarProps, type AvatarSize, Badge, type BadgeProps, type BadgeTone, Breadcrumbs, type BreadcrumbsProps, Button, type ButtonProps, type ButtonSize, type ButtonTone, type ButtonVariant, Card, type CardProps, type CardSectionProps, CheckIcon, Checkbox, type CheckboxProps, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, Chip, type ChipProps, type ChipTone, CircleCheckIcon, CircleXIcon, type ColorTokens, type Crumb, Dialog, type DialogProps, Divider, type DividerProps, EyeIcon, EyeOffIcon, type Icon, IconButton, type IconButtonProps, type IconButtonTone, type IconProps, InfoIcon, ListItem, type ListItemProps, Menu, type MenuItemDef, type MenuProps, MinusIcon, type Mode, type ModePreference, MoreHorizontalIcon, Pagination, type PaginationProps, PlusIcon, Progress, type ProgressProps, type ProgressVariant, Radio, type RadioProps, type SchemaName, SearchIcon, Select, type SelectOption, type SelectProps, Slider, type SliderProps, Snackbar, type SnackbarProps, type Step, Stepper, type StepperProps, Switch, type SwitchProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, TextField, type TextFieldProps, ThemeProvider, type ThemeProviderProps, Tooltip, type TooltipPlacement, type TooltipProps, TriangleAlertIcon, XIcon, colorVars, modeNames, schemaNames, text, vars as theme, themes, usePrevious, useTheme, useToggle };