@octavius2929-personal/design-system 0.1.0 → 0.4.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,633 @@
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.14em";
126
+ readonly widest: "0.28em";
127
+ };
128
+ leading: {
129
+ readonly tight: "1.05";
130
+ readonly snug: "1.2";
131
+ readonly normal: "1.5";
132
+ readonly relaxed: "1.7";
133
+ };
134
+ weight: {
135
+ readonly light: "300";
136
+ readonly regular: "400";
137
+ readonly medium: "500";
138
+ readonly semibold: "600";
139
+ readonly bold: "700";
140
+ };
141
+ dur: {
142
+ readonly fast: "120ms";
143
+ readonly base: "200ms";
144
+ readonly slow: "360ms";
145
+ };
146
+ ease: {
147
+ readonly ink: "cubic-bezier(0.2, 0, 0, 1)";
148
+ };
149
+ shadow: {
150
+ readonly sm: "0 1px 0 rgba(20,17,14,0.06)";
151
+ readonly md: "0 2px 10px -4px rgba(20,17,14,0.22)";
152
+ readonly lg: "0 12px 32px -10px rgba(20,17,14,0.34)";
153
+ };
154
+ };
155
+ dark: {
156
+ color: {
157
+ bg1: string;
158
+ bg2: string;
159
+ bg3: string;
160
+ bgInset: string;
161
+ fg1: string;
162
+ fg2: string;
163
+ fg3: string;
164
+ fgOnAccent: string;
165
+ border1: string;
166
+ border2: string;
167
+ borderStrong: string;
168
+ accent: string;
169
+ accentHover: string;
170
+ accentSoft: string;
171
+ ok: string;
172
+ warn: string;
173
+ danger: string;
174
+ info: string;
175
+ focus: string;
176
+ scrim: string;
177
+ };
178
+ font: {
179
+ readonly display: "'DM Serif Display', 'Times New Roman', serif";
180
+ readonly text: "'Newsreader', Georgia, serif";
181
+ readonly mono: "'IBM Plex Mono', 'SFMono-Regular', monospace";
182
+ readonly black: "'UnifrakturMaguntia', 'Grenze Gotisch', serif";
183
+ };
184
+ text: {
185
+ readonly eyebrow: {
186
+ readonly size: "0.694rem";
187
+ readonly lineHeight: "1.2";
188
+ readonly weight: "500";
189
+ readonly letterSpacing: "0.14em";
190
+ };
191
+ readonly display: {
192
+ readonly size: "5.6rem";
193
+ readonly lineHeight: "1.05";
194
+ readonly weight: "600";
195
+ readonly letterSpacing: "-0.01em";
196
+ };
197
+ readonly h1: {
198
+ readonly size: "2.9rem";
199
+ readonly lineHeight: "1.05";
200
+ readonly weight: "600";
201
+ readonly letterSpacing: "-0.01em";
202
+ };
203
+ readonly h2: {
204
+ readonly size: "2.1rem";
205
+ readonly lineHeight: "1.2";
206
+ readonly weight: "600";
207
+ readonly letterSpacing: "0";
208
+ };
209
+ readonly h3: {
210
+ readonly size: "1.563rem";
211
+ readonly lineHeight: "1.2";
212
+ readonly weight: "500";
213
+ readonly letterSpacing: "0";
214
+ };
215
+ readonly h4: {
216
+ readonly size: "1.25rem";
217
+ readonly lineHeight: "1.2";
218
+ readonly weight: "600";
219
+ readonly letterSpacing: "0";
220
+ };
221
+ readonly body: {
222
+ readonly size: "1rem";
223
+ readonly lineHeight: "1.7";
224
+ readonly weight: "400";
225
+ readonly letterSpacing: "0";
226
+ };
227
+ readonly lead: {
228
+ readonly size: "1.25rem";
229
+ readonly lineHeight: "1.7";
230
+ readonly weight: "400";
231
+ readonly letterSpacing: "0";
232
+ };
233
+ readonly small: {
234
+ readonly size: "0.95rem";
235
+ readonly lineHeight: "1.5";
236
+ readonly weight: "400";
237
+ readonly letterSpacing: "0";
238
+ };
239
+ readonly caption: {
240
+ readonly size: "0.833rem";
241
+ readonly lineHeight: "1.5";
242
+ readonly weight: "400";
243
+ readonly letterSpacing: "0.04em";
244
+ };
245
+ };
246
+ space: {
247
+ readonly none: "0";
248
+ readonly xs: "0.25rem";
249
+ readonly sm: "0.5rem";
250
+ readonly md: "0.75rem";
251
+ readonly lg: "1rem";
252
+ readonly xl: "1.5rem";
253
+ readonly "2xl": "2rem";
254
+ readonly "3xl": "3rem";
255
+ readonly "4xl": "4rem";
256
+ readonly "5xl": "6rem";
257
+ };
258
+ radius: {
259
+ readonly none: "0px";
260
+ readonly sm: "3px";
261
+ readonly md: "5px";
262
+ readonly lg: "8px";
263
+ readonly base: "4px";
264
+ readonly full: "999px";
265
+ };
266
+ border: {
267
+ readonly hair: "1px";
268
+ readonly rule: "1.5px";
269
+ readonly heavy: "2px";
270
+ };
271
+ tracking: {
272
+ readonly tight: "-0.01em";
273
+ readonly normal: "0";
274
+ readonly wide: "0.04em";
275
+ readonly wider: "0.14em";
276
+ readonly widest: "0.28em";
277
+ };
278
+ leading: {
279
+ readonly tight: "1.05";
280
+ readonly snug: "1.2";
281
+ readonly normal: "1.5";
282
+ readonly relaxed: "1.7";
283
+ };
284
+ weight: {
285
+ readonly light: "300";
286
+ readonly regular: "400";
287
+ readonly medium: "500";
288
+ readonly semibold: "600";
289
+ readonly bold: "700";
290
+ };
291
+ dur: {
292
+ readonly fast: "120ms";
293
+ readonly base: "200ms";
294
+ readonly slow: "360ms";
295
+ };
296
+ ease: {
297
+ readonly ink: "cubic-bezier(0.2, 0, 0, 1)";
298
+ };
299
+ shadow: {
300
+ readonly sm: "0 1px 0 rgba(20,17,14,0.06)";
301
+ readonly md: "0 2px 10px -4px rgba(20,17,14,0.22)";
302
+ readonly lg: "0 12px 32px -10px rgba(20,17,14,0.34)";
303
+ };
304
+ };
305
+ sepia: {
306
+ color: {
307
+ bg1: string;
308
+ bg2: string;
309
+ bg3: string;
310
+ bgInset: string;
311
+ fg1: string;
312
+ fg2: string;
313
+ fg3: string;
314
+ fgOnAccent: string;
315
+ border1: string;
316
+ border2: string;
317
+ borderStrong: string;
318
+ accent: string;
319
+ accentHover: string;
320
+ accentSoft: string;
321
+ ok: string;
322
+ warn: string;
323
+ danger: string;
324
+ info: string;
325
+ focus: string;
326
+ scrim: string;
327
+ };
328
+ font: {
329
+ readonly display: "'DM Serif Display', 'Times New Roman', serif";
330
+ readonly text: "'Newsreader', Georgia, serif";
331
+ readonly mono: "'IBM Plex Mono', 'SFMono-Regular', monospace";
332
+ readonly black: "'UnifrakturMaguntia', 'Grenze Gotisch', serif";
333
+ };
334
+ text: {
335
+ readonly eyebrow: {
336
+ readonly size: "0.694rem";
337
+ readonly lineHeight: "1.2";
338
+ readonly weight: "500";
339
+ readonly letterSpacing: "0.14em";
340
+ };
341
+ readonly display: {
342
+ readonly size: "5.6rem";
343
+ readonly lineHeight: "1.05";
344
+ readonly weight: "600";
345
+ readonly letterSpacing: "-0.01em";
346
+ };
347
+ readonly h1: {
348
+ readonly size: "2.9rem";
349
+ readonly lineHeight: "1.05";
350
+ readonly weight: "600";
351
+ readonly letterSpacing: "-0.01em";
352
+ };
353
+ readonly h2: {
354
+ readonly size: "2.1rem";
355
+ readonly lineHeight: "1.2";
356
+ readonly weight: "600";
357
+ readonly letterSpacing: "0";
358
+ };
359
+ readonly h3: {
360
+ readonly size: "1.563rem";
361
+ readonly lineHeight: "1.2";
362
+ readonly weight: "500";
363
+ readonly letterSpacing: "0";
364
+ };
365
+ readonly h4: {
366
+ readonly size: "1.25rem";
367
+ readonly lineHeight: "1.2";
368
+ readonly weight: "600";
369
+ readonly letterSpacing: "0";
370
+ };
371
+ readonly body: {
372
+ readonly size: "1rem";
373
+ readonly lineHeight: "1.7";
374
+ readonly weight: "400";
375
+ readonly letterSpacing: "0";
376
+ };
377
+ readonly lead: {
378
+ readonly size: "1.25rem";
379
+ readonly lineHeight: "1.7";
380
+ readonly weight: "400";
381
+ readonly letterSpacing: "0";
382
+ };
383
+ readonly small: {
384
+ readonly size: "0.95rem";
385
+ readonly lineHeight: "1.5";
386
+ readonly weight: "400";
387
+ readonly letterSpacing: "0";
388
+ };
389
+ readonly caption: {
390
+ readonly size: "0.833rem";
391
+ readonly lineHeight: "1.5";
392
+ readonly weight: "400";
393
+ readonly letterSpacing: "0.04em";
394
+ };
395
+ };
396
+ space: {
397
+ readonly none: "0";
398
+ readonly xs: "0.25rem";
399
+ readonly sm: "0.5rem";
400
+ readonly md: "0.75rem";
401
+ readonly lg: "1rem";
402
+ readonly xl: "1.5rem";
403
+ readonly "2xl": "2rem";
404
+ readonly "3xl": "3rem";
405
+ readonly "4xl": "4rem";
406
+ readonly "5xl": "6rem";
407
+ };
408
+ radius: {
409
+ readonly none: "0px";
410
+ readonly sm: "3px";
411
+ readonly md: "5px";
412
+ readonly lg: "8px";
413
+ readonly base: "4px";
414
+ readonly full: "999px";
415
+ };
416
+ border: {
417
+ readonly hair: "1px";
418
+ readonly rule: "1.5px";
419
+ readonly heavy: "2px";
420
+ };
421
+ tracking: {
422
+ readonly tight: "-0.01em";
423
+ readonly normal: "0";
424
+ readonly wide: "0.04em";
425
+ readonly wider: "0.14em";
426
+ readonly widest: "0.28em";
427
+ };
428
+ leading: {
429
+ readonly tight: "1.05";
430
+ readonly snug: "1.2";
431
+ readonly normal: "1.5";
432
+ readonly relaxed: "1.7";
433
+ };
434
+ weight: {
435
+ readonly light: "300";
436
+ readonly regular: "400";
437
+ readonly medium: "500";
438
+ readonly semibold: "600";
439
+ readonly bold: "700";
440
+ };
441
+ dur: {
442
+ readonly fast: "120ms";
443
+ readonly base: "200ms";
444
+ readonly slow: "360ms";
445
+ };
446
+ ease: {
447
+ readonly ink: "cubic-bezier(0.2, 0, 0, 1)";
448
+ };
449
+ shadow: {
450
+ readonly sm: "0 1px 0 rgba(20,17,14,0.06)";
451
+ readonly md: "0 2px 10px -4px rgba(20,17,14,0.22)";
452
+ readonly lg: "0 12px 32px -10px rgba(20,17,14,0.34)";
453
+ };
454
+ };
455
+ contrast: {
456
+ color: {
457
+ bg1: string;
458
+ bg2: string;
459
+ bg3: string;
460
+ bgInset: string;
461
+ fg1: string;
462
+ fg2: string;
463
+ fg3: string;
464
+ fgOnAccent: string;
465
+ border1: string;
466
+ border2: string;
467
+ borderStrong: string;
468
+ accent: string;
469
+ accentHover: string;
470
+ accentSoft: string;
471
+ ok: string;
472
+ warn: string;
473
+ danger: string;
474
+ info: string;
475
+ focus: string;
476
+ scrim: string;
477
+ };
478
+ font: {
479
+ readonly display: "'DM Serif Display', 'Times New Roman', serif";
480
+ readonly text: "'Newsreader', Georgia, serif";
481
+ readonly mono: "'IBM Plex Mono', 'SFMono-Regular', monospace";
482
+ readonly black: "'UnifrakturMaguntia', 'Grenze Gotisch', serif";
483
+ };
484
+ text: {
485
+ readonly eyebrow: {
486
+ readonly size: "0.694rem";
487
+ readonly lineHeight: "1.2";
488
+ readonly weight: "500";
489
+ readonly letterSpacing: "0.14em";
490
+ };
491
+ readonly display: {
492
+ readonly size: "5.6rem";
493
+ readonly lineHeight: "1.05";
494
+ readonly weight: "600";
495
+ readonly letterSpacing: "-0.01em";
496
+ };
497
+ readonly h1: {
498
+ readonly size: "2.9rem";
499
+ readonly lineHeight: "1.05";
500
+ readonly weight: "600";
501
+ readonly letterSpacing: "-0.01em";
502
+ };
503
+ readonly h2: {
504
+ readonly size: "2.1rem";
505
+ readonly lineHeight: "1.2";
506
+ readonly weight: "600";
507
+ readonly letterSpacing: "0";
508
+ };
509
+ readonly h3: {
510
+ readonly size: "1.563rem";
511
+ readonly lineHeight: "1.2";
512
+ readonly weight: "500";
513
+ readonly letterSpacing: "0";
514
+ };
515
+ readonly h4: {
516
+ readonly size: "1.25rem";
517
+ readonly lineHeight: "1.2";
518
+ readonly weight: "600";
519
+ readonly letterSpacing: "0";
520
+ };
521
+ readonly body: {
522
+ readonly size: "1rem";
523
+ readonly lineHeight: "1.7";
524
+ readonly weight: "400";
525
+ readonly letterSpacing: "0";
526
+ };
527
+ readonly lead: {
528
+ readonly size: "1.25rem";
529
+ readonly lineHeight: "1.7";
530
+ readonly weight: "400";
531
+ readonly letterSpacing: "0";
532
+ };
533
+ readonly small: {
534
+ readonly size: "0.95rem";
535
+ readonly lineHeight: "1.5";
536
+ readonly weight: "400";
537
+ readonly letterSpacing: "0";
538
+ };
539
+ readonly caption: {
540
+ readonly size: "0.833rem";
541
+ readonly lineHeight: "1.5";
542
+ readonly weight: "400";
543
+ readonly letterSpacing: "0.04em";
544
+ };
545
+ };
546
+ space: {
547
+ readonly none: "0";
548
+ readonly xs: "0.25rem";
549
+ readonly sm: "0.5rem";
550
+ readonly md: "0.75rem";
551
+ readonly lg: "1rem";
552
+ readonly xl: "1.5rem";
553
+ readonly "2xl": "2rem";
554
+ readonly "3xl": "3rem";
555
+ readonly "4xl": "4rem";
556
+ readonly "5xl": "6rem";
557
+ };
558
+ radius: {
559
+ readonly none: "0px";
560
+ readonly sm: "3px";
561
+ readonly md: "5px";
562
+ readonly lg: "8px";
563
+ readonly base: "4px";
564
+ readonly full: "999px";
565
+ };
566
+ border: {
567
+ readonly hair: "1px";
568
+ readonly rule: "1.5px";
569
+ readonly heavy: "2px";
570
+ };
571
+ tracking: {
572
+ readonly tight: "-0.01em";
573
+ readonly normal: "0";
574
+ readonly wide: "0.04em";
575
+ readonly wider: "0.14em";
576
+ readonly widest: "0.28em";
577
+ };
578
+ leading: {
579
+ readonly tight: "1.05";
580
+ readonly snug: "1.2";
581
+ readonly normal: "1.5";
582
+ readonly relaxed: "1.7";
583
+ };
584
+ weight: {
585
+ readonly light: "300";
586
+ readonly regular: "400";
587
+ readonly medium: "500";
588
+ readonly semibold: "600";
589
+ readonly bold: "700";
590
+ };
591
+ dur: {
592
+ readonly fast: "120ms";
593
+ readonly base: "200ms";
594
+ readonly slow: "360ms";
595
+ };
596
+ ease: {
597
+ readonly ink: "cubic-bezier(0.2, 0, 0, 1)";
598
+ };
599
+ shadow: {
600
+ readonly sm: "0 1px 0 rgba(20,17,14,0.06)";
601
+ readonly md: "0 2px 10px -4px rgba(20,17,14,0.22)";
602
+ readonly lg: "0 12px 32px -10px rgba(20,17,14,0.34)";
603
+ };
604
+ };
605
+ };
606
+
4
607
  type SchemaName = "tinta";
5
608
  type Mode = "light" | "dark" | "sepia" | "contrast";
609
+ declare const colorVars: {
610
+ bg1: `var(--${string})`;
611
+ bg2: `var(--${string})`;
612
+ bg3: `var(--${string})`;
613
+ bgInset: `var(--${string})`;
614
+ fg1: `var(--${string})`;
615
+ fg2: `var(--${string})`;
616
+ fg3: `var(--${string})`;
617
+ fgOnAccent: `var(--${string})`;
618
+ border1: `var(--${string})`;
619
+ border2: `var(--${string})`;
620
+ borderStrong: `var(--${string})`;
621
+ accent: `var(--${string})`;
622
+ accentHover: `var(--${string})`;
623
+ accentSoft: `var(--${string})`;
624
+ ok: `var(--${string})`;
625
+ warn: `var(--${string})`;
626
+ danger: `var(--${string})`;
627
+ info: `var(--${string})`;
628
+ focus: `var(--${string})`;
629
+ scrim: `var(--${string})`;
630
+ };
6
631
  declare const vars: {
7
632
  color: {
8
633
  bg1: `var(--${string})`;
@@ -23,6 +648,7 @@ declare const vars: {
23
648
  warn: `var(--${string})`;
24
649
  danger: `var(--${string})`;
25
650
  info: `var(--${string})`;
651
+ focus: `var(--${string})`;
26
652
  scrim: `var(--${string})`;
27
653
  };
28
654
  font: {
@@ -155,6 +781,10 @@ declare const vars: {
155
781
  declare const themes: Record<SchemaName, Record<Mode, string>>;
156
782
  declare const schemaNames: readonly SchemaName[];
157
783
  declare const modeNames: readonly Mode[];
784
+ type ColorTokens = typeof tintaSchema.light.color;
785
+
786
+ declare function usePrevious<T>(value: T, initial: T): T;
787
+ declare function usePrevious<T>(value: T, initial?: T): T | undefined;
158
788
 
159
789
  declare function useToggle(initial?: boolean): readonly [boolean, () => void, (value: boolean) => void];
160
790
 
@@ -419,7 +1049,7 @@ interface DialogProps {
419
1049
  children?: ReactNode;
420
1050
  }
421
1051
 
422
- declare function Dialog({ open, onClose, title, actions, children }: DialogProps): react.JSX.Element | null;
1052
+ declare function Dialog({ open, onClose, title, actions, children }: DialogProps): react.ReactPortal | null;
423
1053
 
424
1054
  interface SnackbarProps {
425
1055
  open: boolean;
@@ -428,7 +1058,7 @@ interface SnackbarProps {
428
1058
  onClose?: () => void;
429
1059
  }
430
1060
 
431
- declare function Snackbar({ open, message, action, onClose }: SnackbarProps): react.JSX.Element | null;
1061
+ declare function Snackbar({ open, message, action, onClose }: SnackbarProps): react.ReactPortal | null;
432
1062
 
433
1063
  interface TableColumn<Row> {
434
1064
  key: string;
@@ -493,20 +1123,31 @@ declare function MoreHorizontalIcon({ size, strokeWidth, ...rest }: IconProps):
493
1123
 
494
1124
  declare const text: Record<"display" | "eyebrow" | "h1" | "h2" | "h3" | "h4" | "body" | "lead" | "small" | "caption" | "code" | "blackletter", string>;
495
1125
 
1126
+ type ModePreference = Mode | "system";
496
1127
  interface ThemeContextValue {
497
1128
  schema: SchemaName;
1129
+ /** Modo efectivo ya resuelto (nunca "system"). */
498
1130
  mode: Mode;
1131
+ /** La preferencia cruda elegida (puede ser "system"). */
1132
+ preference: ModePreference;
499
1133
  themeClass: string;
500
1134
  setSchema: (schema: SchemaName) => void;
501
- setMode: (mode: Mode) => void;
1135
+ setMode: (mode: ModePreference) => void;
1136
+ /** Alterna binario claro↔oscuro a partir del modo efectivo. */
502
1137
  toggleMode: () => void;
1138
+ /** Rota por los cuatro modos en orden. */
1139
+ cycleMode: () => void;
503
1140
  }
504
1141
  interface ThemeProviderProps {
505
1142
  children: ReactNode;
506
1143
  defaultSchema?: SchemaName;
507
- defaultMode?: Mode;
1144
+ defaultMode?: ModePreference;
1145
+ /** Clave de localStorage donde se persiste la elección. */
1146
+ storageKey?: string;
1147
+ /** Si es false, no persiste ni rehidrata (útil para previews/tests). */
1148
+ persist?: boolean;
508
1149
  }
509
- declare function ThemeProvider({ children, defaultSchema, defaultMode, }: ThemeProviderProps): react.JSX.Element;
1150
+ declare function ThemeProvider({ children, defaultSchema, defaultMode, storageKey, persist, }: ThemeProviderProps): react.JSX.Element;
510
1151
  declare function useTheme(): ThemeContextValue;
511
1152
 
512
- 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, useTheme, useToggle };
1153
+ 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 };