@mimi-ng/cli 0.1.1 → 0.3.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.
Files changed (104) hide show
  1. package/README.md +28 -1
  2. package/dist/init/css.js +17 -0
  3. package/dist/init/index.js +7 -5
  4. package/dist/init/items.js +9 -0
  5. package/dist/registry.json +482 -1
  6. package/dist/templates/components/avatar/avatar.ts +1 -1
  7. package/dist/templates/components/avatar/avatar.variants.ts +4 -4
  8. package/dist/templates/components/badge/badge.ts +41 -6
  9. package/dist/templates/components/badge/badge.variants.ts +105 -11
  10. package/dist/templates/components/button/button.ts +74 -7
  11. package/dist/templates/components/button/button.variants.ts +145 -21
  12. package/dist/templates/components/calendar/calendar-texts.ts +72 -0
  13. package/dist/templates/components/calendar/calendar.ts +588 -0
  14. package/dist/templates/components/calendar/dates.ts +181 -0
  15. package/dist/templates/components/calendar/index.ts +3 -0
  16. package/dist/templates/components/card/card.ts +8 -5
  17. package/dist/templates/components/checkbox/checkbox.ts +3 -3
  18. package/dist/templates/components/chip/chip-texts.ts +40 -0
  19. package/dist/templates/components/chip/chip.ts +116 -0
  20. package/dist/templates/components/chip/index.ts +2 -0
  21. package/dist/templates/components/color-picker/color-picker-texts.ts +57 -0
  22. package/dist/templates/components/color-picker/color-picker.ts +718 -0
  23. package/dist/templates/components/color-picker/color.ts +157 -0
  24. package/dist/templates/components/color-picker/index.ts +3 -0
  25. package/dist/templates/components/combobox/combobox-texts.ts +70 -0
  26. package/dist/templates/components/combobox/combobox.ts +798 -0
  27. package/dist/templates/components/combobox/index.ts +2 -0
  28. package/dist/templates/components/confirm/confirm-texts.ts +46 -0
  29. package/dist/templates/components/confirm/confirm.ts +190 -0
  30. package/dist/templates/components/confirm/index.ts +2 -0
  31. package/dist/templates/components/context-menu/context-menu.ts +378 -0
  32. package/dist/templates/components/context-menu/index.ts +14 -0
  33. package/dist/templates/components/date-picker/date-picker.ts +240 -0
  34. package/dist/templates/components/date-picker/index.ts +3 -0
  35. package/dist/templates/components/date-range/date-range.ts +308 -0
  36. package/dist/templates/components/date-range/index.ts +1 -0
  37. package/dist/templates/components/dialog/dialog-texts.ts +41 -0
  38. package/dist/templates/components/dialog/dialog.ts +701 -0
  39. package/dist/templates/components/dialog/index.ts +18 -0
  40. package/dist/templates/components/dropdown-menu/dropdown-menu.ts +252 -0
  41. package/dist/templates/components/dropdown-menu/index.ts +14 -0
  42. package/dist/templates/components/file-upload/file-upload-texts.ts +77 -0
  43. package/dist/templates/components/file-upload/file-upload.ts +698 -0
  44. package/dist/templates/components/file-upload/index.ts +2 -0
  45. package/dist/templates/components/form-field/form-error.ts +1 -1
  46. package/dist/templates/components/form-field/form-field.ts +3 -2
  47. package/dist/templates/components/input/input.variants.ts +6 -4
  48. package/dist/templates/components/input-mask/index.ts +1 -0
  49. package/dist/templates/components/input-mask/input-mask.ts +319 -0
  50. package/dist/templates/components/input-otp/index.ts +1 -0
  51. package/dist/templates/components/input-otp/input-otp.ts +212 -0
  52. package/dist/templates/components/menu/index.ts +15 -0
  53. package/dist/templates/components/menu/menu.ts +656 -0
  54. package/dist/templates/components/number-input/index.ts +2 -0
  55. package/dist/templates/components/number-input/number-input-texts.ts +46 -0
  56. package/dist/templates/components/number-input/number-input.ts +450 -0
  57. package/dist/templates/components/option-list/index.ts +11 -0
  58. package/dist/templates/components/option-list/option-list.ts +518 -0
  59. package/dist/templates/components/pagination/index.ts +2 -0
  60. package/dist/templates/components/pagination/pagination-page-size.ts +74 -0
  61. package/dist/templates/components/pagination/pagination-texts.ts +69 -0
  62. package/dist/templates/components/pagination/pagination.ts +443 -0
  63. package/dist/templates/components/password/index.ts +2 -0
  64. package/dist/templates/components/password/password-texts.ts +68 -0
  65. package/dist/templates/components/password/password.ts +363 -0
  66. package/dist/templates/components/popover/index.ts +12 -0
  67. package/dist/templates/components/popover/popover.ts +407 -0
  68. package/dist/templates/components/progress/index.ts +1 -0
  69. package/dist/templates/components/progress/progress.ts +217 -0
  70. package/dist/templates/components/select/index.ts +12 -0
  71. package/dist/templates/components/select/select-texts.ts +62 -0
  72. package/dist/templates/components/select/select.ts +1086 -0
  73. package/dist/templates/components/separator/separator.variants.ts +10 -7
  74. package/dist/templates/components/skeleton/skeleton.ts +4 -1
  75. package/dist/templates/components/slider/index.ts +2 -0
  76. package/dist/templates/components/slider/slider-texts.ts +26 -0
  77. package/dist/templates/components/slider/slider.ts +425 -0
  78. package/dist/templates/components/switch/switch.ts +6 -6
  79. package/dist/templates/components/tabs/index.ts +2 -0
  80. package/dist/templates/components/tabs/tabs.ts +426 -0
  81. package/dist/templates/components/tags-input/index.ts +2 -0
  82. package/dist/templates/components/tags-input/tags-input-texts.ts +44 -0
  83. package/dist/templates/components/tags-input/tags-input.ts +303 -0
  84. package/dist/templates/components/textarea/textarea.variants.ts +14 -11
  85. package/dist/templates/components/toast/index.ts +3 -0
  86. package/dist/templates/components/toast/toast-config.ts +45 -0
  87. package/dist/templates/components/toast/toast-texts.ts +46 -0
  88. package/dist/templates/components/toast/toast.ts +1000 -0
  89. package/dist/templates/components/toggle-group/index.ts +1 -0
  90. package/dist/templates/components/toggle-group/toggle-group.ts +406 -0
  91. package/dist/templates/components/toolbar/index.ts +1 -0
  92. package/dist/templates/components/toolbar/toolbar.ts +377 -0
  93. package/dist/templates/components/tooltip/index.ts +7 -0
  94. package/dist/templates/components/tooltip/tooltip.ts +407 -0
  95. package/dist/templates/theme/provider.ts +75 -6
  96. package/dist/templates/theme/theme-base.css +410 -9
  97. package/dist/templates/theme/types.ts +494 -4
  98. package/dist/templates/utils/cn.ts +15 -1
  99. package/dist/templates/utils/control-styles.ts +2 -2
  100. package/dist/templates/utils/overlay.ts +153 -0
  101. package/dist/ui/index.js +184 -8
  102. package/dist/ui/schema.json +100 -0
  103. package/dist/utils/write-files.js +166 -59
  104. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- /* Mimi · tema base (estilo Vivid).
2
- Valores tomados de docs/design/tokens-vivid.css. Nombres según docs/spec.md, sección 6.
1
+ /* Mimi · tema base.
2
+ Valores tomados de docs/design/tokens-mimi.css. Nombres según docs/spec.md, sección 6.
3
3
  Este archivo no importa Tailwind ni carga fuentes: lo hace la app que lo usa. */
4
4
 
5
5
  @custom-variant dark (&:where(.dark, .dark *));
@@ -26,8 +26,34 @@
26
26
  --mimi-border: oklch(0.922 0 0);
27
27
  --mimi-input: oklch(0.88 0 0);
28
28
  --mimi-input-background: oklch(1 0 0);
29
+ /* Borde de un campo con el puntero encima (tokens-mimi.css; lo usa Pagination desde la G1.11). */
30
+ --mimi-input-hover: color-mix(in oklab, var(--mimi-foreground) 30%, var(--mimi-input));
29
31
  --mimi-ring: oklch(0.708 0 0);
30
- --mimi-overlay: oklch(0 0 0 / 50%);
32
+
33
+ /* Tonos (contraste AA verificado en el diseño) */
34
+ --mimi-success: oklch(0.527 0.137 150);
35
+ --mimi-success-foreground: oklch(0.985 0 0);
36
+ --mimi-success-soft-foreground: oklch(0.42 0.115 150);
37
+ --mimi-warning: oklch(0.795 0.162 75);
38
+ --mimi-warning-foreground: oklch(0.28 0.07 55);
39
+ --mimi-warning-soft-foreground: oklch(0.45 0.11 60);
40
+ --mimi-info: oklch(0.546 0.19 255);
41
+ --mimi-info-foreground: oklch(0.985 0 0);
42
+ --mimi-info-soft-foreground: oklch(0.45 0.17 255);
43
+ --mimi-destructive-soft-foreground: oklch(0.5 0.2 27);
44
+ /* Cuánto tono lleva el fondo suave (-soft) */
45
+ --mimi-soft-mix: 12%;
46
+
47
+ /* Superficies */
48
+ --mimi-tooltip: oklch(0.205 0 0);
49
+ --mimi-tooltip-foreground: oklch(0.985 0 0);
50
+ --mimi-overlay: oklch(0.145 0 0 / 0.38);
51
+ --mimi-glass: oklch(1 0 0 / 0.72);
52
+ --mimi-glass-border: oklch(0 0 0 / 0.08);
53
+
54
+ /* Efectos (iguales en claro y oscuro) */
55
+ --mimi-overlay-blur: 6px;
56
+ --mimi-glass-blur: 16px;
31
57
 
32
58
  /* Fuentes (sin cargar: la app decide si trae Outfit) */
33
59
  --mimi-font-sans: 'Outfit', ui-sans-serif, system-ui, sans-serif;
@@ -42,6 +68,14 @@
42
68
  --mimi-control-height-sm: 2rem;
43
69
  --mimi-control-height-lg: 3rem;
44
70
 
71
+ /* Compartidos por los controles */
72
+ --mimi-focus-ring: 0 0 0 3px var(--mimi-ring-soft);
73
+ --mimi-focus-outline: 2px solid var(--mimi-ring);
74
+ --mimi-focus-offset: 2px;
75
+ --mimi-disabled-opacity: 0.5;
76
+ --mimi-icon-size: 1rem;
77
+ --mimi-icon-size-sm: 0.875rem;
78
+
45
79
  /* Movimiento. `translate` mueve el pulgar del Switch (y --mimi-lift si se usa). */
46
80
  --mimi-lift: 0px;
47
81
  --mimi-press-scale: 0.975;
@@ -71,18 +105,130 @@
71
105
  --mimi-shadow-neutral-hover: 0 2px 4px oklch(0 0 0 / 0.06), 0 10px 20px -8px oklch(0 0 0 / 0.14);
72
106
  /* Pulgar del Switch (igual en claro y oscuro) */
73
107
  --mimi-shadow-thumb: 0 1px 3px oklch(0 0 0 / 0.2);
108
+ --mimi-shadow-success:
109
+ 0 1px 2px color-mix(in oklch, var(--mimi-success) 25%, transparent),
110
+ 0 4px 12px -4px color-mix(in oklch, var(--mimi-success) 35%, transparent);
111
+ --mimi-shadow-success-hover:
112
+ 0 1px 2px color-mix(in oklch, var(--mimi-success) 30%, transparent),
113
+ 0 8px 18px -6px color-mix(in oklch, var(--mimi-success) 42%, transparent);
114
+ --mimi-shadow-warning:
115
+ 0 1px 2px color-mix(in oklch, var(--mimi-warning) 30%, transparent),
116
+ 0 4px 12px -4px color-mix(in oklch, var(--mimi-warning) 45%, transparent);
117
+ --mimi-shadow-warning-hover:
118
+ 0 1px 2px color-mix(in oklch, var(--mimi-warning) 35%, transparent),
119
+ 0 8px 18px -6px color-mix(in oklch, var(--mimi-warning) 52%, transparent);
120
+ --mimi-shadow-info:
121
+ 0 1px 2px color-mix(in oklch, var(--mimi-info) 25%, transparent),
122
+ 0 4px 12px -4px color-mix(in oklch, var(--mimi-info) 35%, transparent);
123
+ --mimi-shadow-info-hover:
124
+ 0 1px 2px color-mix(in oklch, var(--mimi-info) 30%, transparent),
125
+ 0 8px 18px -6px color-mix(in oklch, var(--mimi-info) 42%, transparent);
126
+ /* Menús, diálogos, toasts y píldoras flotantes */
127
+ --mimi-shadow-popover:
128
+ 0 0 0 1px oklch(0 0 0 / 0.04), 0 4px 8px -2px oklch(0 0 0 / 0.06),
129
+ 0 16px 32px -8px oklch(0 0 0 / 0.16);
130
+ /* Glow: brillo de color alrededor del componente (opción glow) */
131
+ --mimi-glow-primary:
132
+ 0 0 0 1px color-mix(in oklch, var(--mimi-primary) 22%, transparent),
133
+ 0 0 14px 0 color-mix(in oklch, var(--mimi-primary) 30%, transparent),
134
+ 0 0 32px 4px color-mix(in oklch, var(--mimi-primary) 16%, transparent);
135
+ --mimi-glow-success:
136
+ 0 0 0 1px color-mix(in oklch, var(--mimi-success) 30%, transparent),
137
+ 0 0 14px 0 color-mix(in oklch, var(--mimi-success) 45%, transparent),
138
+ 0 0 32px 4px color-mix(in oklch, var(--mimi-success) 25%, transparent);
139
+ --mimi-glow-warning:
140
+ 0 0 0 1px color-mix(in oklch, var(--mimi-warning) 35%, transparent),
141
+ 0 0 14px 0 color-mix(in oklch, var(--mimi-warning) 55%, transparent),
142
+ 0 0 32px 4px color-mix(in oklch, var(--mimi-warning) 30%, transparent);
143
+ --mimi-glow-info:
144
+ 0 0 0 1px color-mix(in oklch, var(--mimi-info) 30%, transparent),
145
+ 0 0 14px 0 color-mix(in oklch, var(--mimi-info) 45%, transparent),
146
+ 0 0 32px 4px color-mix(in oklch, var(--mimi-info) 25%, transparent);
147
+ --mimi-glow-destructive:
148
+ 0 0 0 1px color-mix(in oklch, var(--mimi-destructive) 30%, transparent),
149
+ 0 0 14px 0 color-mix(in oklch, var(--mimi-destructive) 45%, transparent),
150
+ 0 0 32px 4px color-mix(in oklch, var(--mimi-destructive) 25%, transparent);
151
+ --mimi-glow: var(--mimi-glow-primary);
74
152
 
75
153
  /* Derivados */
76
154
  --mimi-primary-hover: color-mix(in oklch, var(--mimi-primary) 88%, var(--mimi-background));
77
155
  --mimi-secondary-hover: color-mix(in oklch, var(--mimi-secondary) 80%, var(--mimi-foreground) 6%);
156
+ /* Hover de los sólidos con texto blanco: se aleja del texto, hacia foreground (AA, V.1). En
157
+ oscuro el texto es oscuro y el hover sigue yendo hacia el fondo. */
78
158
  --mimi-destructive-hover: color-mix(
79
159
  in oklch,
80
160
  var(--mimi-destructive) 88%,
81
- var(--mimi-background)
161
+ var(--mimi-foreground)
82
162
  );
83
163
  --mimi-ring-soft: color-mix(in oklch, var(--mimi-ring) 32%, transparent);
84
- --mimi-destructive-soft: color-mix(in oklch, var(--mimi-destructive) 24%, transparent);
85
164
  --mimi-switch-off: color-mix(in oklch, var(--mimi-foreground) 20%, transparent);
165
+ /* Tonos: <tono>-soft = fondo suave, <tono>-hover = hover, <tono>-ring = anillo */
166
+ --mimi-success-soft: color-mix(
167
+ in oklab,
168
+ var(--mimi-success) var(--mimi-soft-mix),
169
+ var(--mimi-background)
170
+ );
171
+ --mimi-warning-soft: color-mix(
172
+ in oklab,
173
+ var(--mimi-warning) var(--mimi-soft-mix),
174
+ var(--mimi-background)
175
+ );
176
+ --mimi-info-soft: color-mix(
177
+ in oklab,
178
+ var(--mimi-info) var(--mimi-soft-mix),
179
+ var(--mimi-background)
180
+ );
181
+ --mimi-success-hover: color-mix(in oklab, var(--mimi-success) 88%, var(--mimi-foreground));
182
+ --mimi-warning-hover: color-mix(in oklab, var(--mimi-warning) 88%, var(--mimi-background));
183
+ --mimi-info-hover: color-mix(in oklab, var(--mimi-info) 88%, var(--mimi-foreground));
184
+ --mimi-success-ring: color-mix(in oklch, var(--mimi-success) 30%, transparent);
185
+ --mimi-warning-ring: color-mix(in oklch, var(--mimi-warning) 34%, transparent);
186
+ --mimi-info-ring: color-mix(in oklch, var(--mimi-info) 30%, transparent);
187
+ --mimi-destructive-ring: color-mix(in oklch, var(--mimi-destructive) 24%, transparent);
188
+ /* Fondo suave de destructive. En la 1.0 pasa a llamarse destructive-soft (spec 12). */
189
+ --mimi-destructive-soft-bg: color-mix(
190
+ in oklab,
191
+ var(--mimi-destructive) var(--mimi-soft-mix),
192
+ var(--mimi-background)
193
+ );
194
+ /* Alias de la 0.1.0 (era el anillo). Se quita en la 1.0: usar destructive-ring (spec 12). */
195
+ --mimi-destructive-soft: var(--mimi-destructive-ring);
196
+ /* Variantes con tono (fórmulas de F2 Tokens y Tonos): hover de soft, borde y hover de outline */
197
+ --mimi-primary-soft-hover: color-mix(in oklab, var(--mimi-primary) 22%, var(--mimi-background));
198
+ --mimi-primary-border: color-mix(in oklch, var(--mimi-primary) 55%, transparent);
199
+ --mimi-primary-subtle: color-mix(in oklch, var(--mimi-primary) 10%, transparent);
200
+ --mimi-success-soft-hover: color-mix(in oklab, var(--mimi-success) 22%, var(--mimi-background));
201
+ --mimi-success-border: color-mix(in oklch, var(--mimi-success) 55%, transparent);
202
+ --mimi-success-subtle: color-mix(in oklch, var(--mimi-success) 10%, transparent);
203
+ --mimi-warning-soft-hover: color-mix(in oklab, var(--mimi-warning) 22%, var(--mimi-background));
204
+ --mimi-warning-border: color-mix(in oklch, var(--mimi-warning) 55%, transparent);
205
+ --mimi-warning-subtle: color-mix(in oklch, var(--mimi-warning) 10%, transparent);
206
+ --mimi-info-soft-hover: color-mix(in oklab, var(--mimi-info) 22%, var(--mimi-background));
207
+ --mimi-info-border: color-mix(in oklch, var(--mimi-info) 55%, transparent);
208
+ --mimi-info-subtle: color-mix(in oklch, var(--mimi-info) 10%, transparent);
209
+ --mimi-destructive-soft-hover: color-mix(
210
+ in oklab,
211
+ var(--mimi-destructive) 22%,
212
+ var(--mimi-background)
213
+ );
214
+ --mimi-destructive-border: color-mix(in oklch, var(--mimi-destructive) 55%, transparent);
215
+ --mimi-destructive-subtle: color-mix(in oklch, var(--mimi-destructive) 10%, transparent);
216
+
217
+ /* Entradas avanzadas, Grupo 2 (tokens-mimi.css; G2.0b). Los componentes los leen con valor
218
+ de respaldo, var(--mimi-track, …), para funcionar con un tema anterior a la 0.3.0. */
219
+ --mimi-range: color-mix(in oklab, var(--mimi-primary) 9%, var(--mimi-background));
220
+ --mimi-track: color-mix(in oklab, var(--mimi-foreground) 12%, var(--mimi-background));
221
+ --mimi-track-fill: var(--mimi-primary);
222
+ --mimi-thumb: oklch(1 0 0);
223
+ --mimi-chip: var(--mimi-secondary);
224
+ --mimi-chip-foreground: var(--mimi-secondary-foreground);
225
+ --mimi-dropzone: color-mix(in oklab, var(--mimi-muted) 55%, var(--mimi-background));
226
+ --mimi-dropzone-active: var(--mimi-info-soft);
227
+ --mimi-dropzone-active-border: var(--mimi-info);
228
+ --mimi-strength-weak: var(--mimi-destructive);
229
+ --mimi-strength-medium: var(--mimi-warning);
230
+ --mimi-strength-strong: var(--mimi-success);
231
+ --mimi-selection: var(--mimi-info);
86
232
 
87
233
  color-scheme: light;
88
234
  }
@@ -93,7 +239,7 @@
93
239
  --mimi-foreground: oklch(0.985 0 0);
94
240
  --mimi-card: oklch(0.175 0 0);
95
241
  --mimi-card-foreground: oklch(0.985 0 0);
96
- --mimi-popover: oklch(0.175 0 0);
242
+ --mimi-popover: oklch(0.205 0 0);
97
243
  --mimi-popover-foreground: oklch(0.985 0 0);
98
244
  --mimi-primary: oklch(0.922 0 0);
99
245
  --mimi-primary-foreground: oklch(0.205 0 0);
@@ -108,8 +254,26 @@
108
254
  --mimi-border: oklch(1 0 0 / 10%);
109
255
  --mimi-input: oklch(1 0 0 / 15%);
110
256
  --mimi-input-background: oklch(1 0 0 / 4.5%);
257
+ --mimi-input-hover: color-mix(in oklab, var(--mimi-foreground) 30%, var(--mimi-input));
111
258
  --mimi-ring: oklch(0.556 0 0);
112
- --mimi-overlay: oklch(0 0 0 / 50%);
259
+
260
+ --mimi-success: oklch(0.72 0.15 150);
261
+ --mimi-success-foreground: oklch(0.2 0.05 150);
262
+ --mimi-success-soft-foreground: oklch(0.84 0.12 150);
263
+ --mimi-warning: oklch(0.81 0.15 78);
264
+ --mimi-warning-foreground: oklch(0.22 0.05 60);
265
+ --mimi-warning-soft-foreground: oklch(0.87 0.12 80);
266
+ --mimi-info: oklch(0.72 0.14 250);
267
+ --mimi-info-foreground: oklch(0.2 0.05 250);
268
+ --mimi-info-soft-foreground: oklch(0.84 0.1 250);
269
+ --mimi-destructive-soft-foreground: oklch(0.82 0.12 22);
270
+ --mimi-soft-mix: 18%;
271
+
272
+ --mimi-tooltip: oklch(0.922 0 0);
273
+ --mimi-tooltip-foreground: oklch(0.205 0 0);
274
+ --mimi-overlay: oklch(0 0 0 / 0.6);
275
+ --mimi-glass: oklch(0.205 0 0 / 0.7);
276
+ --mimi-glass-border: oklch(1 0 0 / 0.09);
113
277
 
114
278
  --mimi-shadow-card:
115
279
  inset 0 1px 0 oklch(1 0 0 / 0.04), 0 1px 2px oklch(0 0 0 / 0.5),
@@ -132,6 +296,48 @@
132
296
  --mimi-shadow-neutral-hover:
133
297
  inset 0 1px 0 oklch(1 0 0 / 0.06), 0 2px 4px oklch(0 0 0 / 0.5),
134
298
  0 10px 20px -8px oklch(0 0 0 / 0.75);
299
+ --mimi-shadow-success:
300
+ 0 1px 2px oklch(0 0 0 / 0.5),
301
+ 0 4px 12px -4px color-mix(in oklch, var(--mimi-success) 30%, transparent);
302
+ --mimi-shadow-success-hover:
303
+ 0 1px 2px oklch(0 0 0 / 0.5),
304
+ 0 8px 18px -6px color-mix(in oklch, var(--mimi-success) 40%, transparent);
305
+ --mimi-shadow-warning:
306
+ 0 1px 2px oklch(0 0 0 / 0.5),
307
+ 0 4px 12px -4px color-mix(in oklch, var(--mimi-warning) 30%, transparent);
308
+ --mimi-shadow-warning-hover:
309
+ 0 1px 2px oklch(0 0 0 / 0.5),
310
+ 0 8px 18px -6px color-mix(in oklch, var(--mimi-warning) 40%, transparent);
311
+ --mimi-shadow-info:
312
+ 0 1px 2px oklch(0 0 0 / 0.5),
313
+ 0 4px 12px -4px color-mix(in oklch, var(--mimi-info) 30%, transparent);
314
+ --mimi-shadow-info-hover:
315
+ 0 1px 2px oklch(0 0 0 / 0.5),
316
+ 0 8px 18px -6px color-mix(in oklch, var(--mimi-info) 40%, transparent);
317
+ --mimi-shadow-popover:
318
+ inset 0 1px 0 oklch(1 0 0 / 0.05), 0 0 0 1px oklch(0 0 0 / 0.6),
319
+ 0 16px 40px -8px oklch(0 0 0 / 0.8);
320
+ --mimi-glow-primary:
321
+ 0 0 0 1px color-mix(in oklch, var(--mimi-primary) 30%, transparent),
322
+ 0 0 16px 0 color-mix(in oklch, var(--mimi-primary) 32%, transparent),
323
+ 0 0 40px 6px color-mix(in oklch, var(--mimi-primary) 16%, transparent);
324
+ --mimi-glow-success:
325
+ 0 0 0 1px color-mix(in oklch, var(--mimi-success) 40%, transparent),
326
+ 0 0 16px 0 color-mix(in oklch, var(--mimi-success) 50%, transparent),
327
+ 0 0 40px 6px color-mix(in oklch, var(--mimi-success) 26%, transparent);
328
+ --mimi-glow-warning:
329
+ 0 0 0 1px color-mix(in oklch, var(--mimi-warning) 40%, transparent),
330
+ 0 0 16px 0 color-mix(in oklch, var(--mimi-warning) 50%, transparent),
331
+ 0 0 40px 6px color-mix(in oklch, var(--mimi-warning) 26%, transparent);
332
+ --mimi-glow-info:
333
+ 0 0 0 1px color-mix(in oklch, var(--mimi-info) 40%, transparent),
334
+ 0 0 16px 0 color-mix(in oklch, var(--mimi-info) 50%, transparent),
335
+ 0 0 40px 6px color-mix(in oklch, var(--mimi-info) 26%, transparent);
336
+ --mimi-glow-destructive:
337
+ 0 0 0 1px color-mix(in oklch, var(--mimi-destructive) 40%, transparent),
338
+ 0 0 16px 0 color-mix(in oklch, var(--mimi-destructive) 50%, transparent),
339
+ 0 0 40px 6px color-mix(in oklch, var(--mimi-destructive) 26%, transparent);
340
+ --mimi-glow: var(--mimi-glow-primary);
135
341
 
136
342
  /* Los derivados se redeclaran para que tomen la paleta oscura */
137
343
  --mimi-primary-hover: color-mix(in oklch, var(--mimi-primary) 88%, var(--mimi-background));
@@ -142,8 +348,73 @@
142
348
  var(--mimi-background)
143
349
  );
144
350
  --mimi-ring-soft: color-mix(in oklch, var(--mimi-ring) 32%, transparent);
145
- --mimi-destructive-soft: color-mix(in oklch, var(--mimi-destructive) 24%, transparent);
146
351
  --mimi-switch-off: color-mix(in oklch, var(--mimi-foreground) 20%, transparent);
352
+ /* Tonos: <tono>-soft = fondo suave, <tono>-hover = hover, <tono>-ring = anillo */
353
+ --mimi-success-soft: color-mix(
354
+ in oklab,
355
+ var(--mimi-success) var(--mimi-soft-mix),
356
+ var(--mimi-background)
357
+ );
358
+ --mimi-warning-soft: color-mix(
359
+ in oklab,
360
+ var(--mimi-warning) var(--mimi-soft-mix),
361
+ var(--mimi-background)
362
+ );
363
+ --mimi-info-soft: color-mix(
364
+ in oklab,
365
+ var(--mimi-info) var(--mimi-soft-mix),
366
+ var(--mimi-background)
367
+ );
368
+ --mimi-success-hover: color-mix(in oklab, var(--mimi-success) 88%, var(--mimi-background));
369
+ --mimi-warning-hover: color-mix(in oklab, var(--mimi-warning) 88%, var(--mimi-background));
370
+ --mimi-info-hover: color-mix(in oklab, var(--mimi-info) 88%, var(--mimi-background));
371
+ --mimi-success-ring: color-mix(in oklch, var(--mimi-success) 30%, transparent);
372
+ --mimi-warning-ring: color-mix(in oklch, var(--mimi-warning) 34%, transparent);
373
+ --mimi-info-ring: color-mix(in oklch, var(--mimi-info) 30%, transparent);
374
+ --mimi-destructive-ring: color-mix(in oklch, var(--mimi-destructive) 24%, transparent);
375
+ /* Fondo suave de destructive. En la 1.0 pasa a llamarse destructive-soft (spec 12). */
376
+ --mimi-destructive-soft-bg: color-mix(
377
+ in oklab,
378
+ var(--mimi-destructive) var(--mimi-soft-mix),
379
+ var(--mimi-background)
380
+ );
381
+ /* Alias de la 0.1.0 (era el anillo). Se quita en la 1.0: usar destructive-ring (spec 12). */
382
+ --mimi-destructive-soft: var(--mimi-destructive-ring);
383
+ /* Variantes con tono (fórmulas de F2 Tokens y Tonos): hover de soft, borde y hover de outline */
384
+ --mimi-primary-soft-hover: color-mix(in oklab, var(--mimi-primary) 22%, var(--mimi-background));
385
+ --mimi-primary-border: color-mix(in oklch, var(--mimi-primary) 55%, transparent);
386
+ --mimi-primary-subtle: color-mix(in oklch, var(--mimi-primary) 10%, transparent);
387
+ --mimi-success-soft-hover: color-mix(in oklab, var(--mimi-success) 22%, var(--mimi-background));
388
+ --mimi-success-border: color-mix(in oklch, var(--mimi-success) 55%, transparent);
389
+ --mimi-success-subtle: color-mix(in oklch, var(--mimi-success) 10%, transparent);
390
+ --mimi-warning-soft-hover: color-mix(in oklab, var(--mimi-warning) 22%, var(--mimi-background));
391
+ --mimi-warning-border: color-mix(in oklch, var(--mimi-warning) 55%, transparent);
392
+ --mimi-warning-subtle: color-mix(in oklch, var(--mimi-warning) 10%, transparent);
393
+ --mimi-info-soft-hover: color-mix(in oklab, var(--mimi-info) 22%, var(--mimi-background));
394
+ --mimi-info-border: color-mix(in oklch, var(--mimi-info) 55%, transparent);
395
+ --mimi-info-subtle: color-mix(in oklch, var(--mimi-info) 10%, transparent);
396
+ --mimi-destructive-soft-hover: color-mix(
397
+ in oklab,
398
+ var(--mimi-destructive) 22%,
399
+ var(--mimi-background)
400
+ );
401
+ --mimi-destructive-border: color-mix(in oklch, var(--mimi-destructive) 55%, transparent);
402
+ --mimi-destructive-subtle: color-mix(in oklch, var(--mimi-destructive) 10%, transparent);
403
+
404
+ /* Entradas avanzadas: se repiten las que mezclan otros tokens, por si .dark no está en <html>. */
405
+ --mimi-range: color-mix(in oklab, var(--mimi-primary) 14%, var(--mimi-background));
406
+ --mimi-track: color-mix(in oklab, var(--mimi-foreground) 16%, var(--mimi-background));
407
+ --mimi-track-fill: var(--mimi-primary);
408
+ --mimi-thumb: oklch(0.985 0 0);
409
+ --mimi-chip: var(--mimi-secondary);
410
+ --mimi-chip-foreground: var(--mimi-secondary-foreground);
411
+ --mimi-dropzone: color-mix(in oklab, var(--mimi-muted) 50%, var(--mimi-background));
412
+ --mimi-dropzone-active: var(--mimi-info-soft);
413
+ --mimi-dropzone-active-border: var(--mimi-info);
414
+ --mimi-strength-weak: var(--mimi-destructive);
415
+ --mimi-strength-medium: var(--mimi-warning);
416
+ --mimi-strength-strong: var(--mimi-success);
417
+ --mimi-selection: var(--mimi-info);
147
418
 
148
419
  color-scheme: dark;
149
420
  }
@@ -179,14 +450,69 @@
179
450
  --color-destructive: var(--mimi-destructive);
180
451
  --color-destructive-foreground: var(--mimi-destructive-foreground);
181
452
  --color-destructive-hover: var(--mimi-destructive-hover);
182
- --color-destructive-soft: var(--mimi-destructive-soft);
453
+ --color-destructive-ring: var(--mimi-destructive-ring);
454
+ --color-destructive-soft-bg: var(--mimi-destructive-soft-bg);
455
+ --color-destructive-soft-foreground: var(--mimi-destructive-soft-foreground);
456
+ /* Alias de la 0.1.0: ring-destructive-soft sigue funcionando hasta la 1.0 (spec 12) */
457
+ --color-destructive-soft: var(--mimi-destructive-ring);
458
+ --color-success: var(--mimi-success);
459
+ --color-success-foreground: var(--mimi-success-foreground);
460
+ --color-success-soft: var(--mimi-success-soft);
461
+ --color-success-soft-foreground: var(--mimi-success-soft-foreground);
462
+ --color-success-hover: var(--mimi-success-hover);
463
+ --color-success-ring: var(--mimi-success-ring);
464
+ --color-warning: var(--mimi-warning);
465
+ --color-warning-foreground: var(--mimi-warning-foreground);
466
+ --color-warning-soft: var(--mimi-warning-soft);
467
+ --color-warning-soft-foreground: var(--mimi-warning-soft-foreground);
468
+ --color-warning-hover: var(--mimi-warning-hover);
469
+ --color-warning-ring: var(--mimi-warning-ring);
470
+ --color-info: var(--mimi-info);
471
+ --color-info-foreground: var(--mimi-info-foreground);
472
+ --color-info-soft: var(--mimi-info-soft);
473
+ --color-info-soft-foreground: var(--mimi-info-soft-foreground);
474
+ --color-info-hover: var(--mimi-info-hover);
475
+ --color-info-ring: var(--mimi-info-ring);
476
+ --color-primary-soft-hover: var(--mimi-primary-soft-hover);
477
+ --color-primary-border: var(--mimi-primary-border);
478
+ --color-primary-subtle: var(--mimi-primary-subtle);
479
+ --color-success-soft-hover: var(--mimi-success-soft-hover);
480
+ --color-success-border: var(--mimi-success-border);
481
+ --color-success-subtle: var(--mimi-success-subtle);
482
+ --color-warning-soft-hover: var(--mimi-warning-soft-hover);
483
+ --color-warning-border: var(--mimi-warning-border);
484
+ --color-warning-subtle: var(--mimi-warning-subtle);
485
+ --color-info-soft-hover: var(--mimi-info-soft-hover);
486
+ --color-info-border: var(--mimi-info-border);
487
+ --color-info-subtle: var(--mimi-info-subtle);
488
+ --color-destructive-soft-hover: var(--mimi-destructive-soft-hover);
489
+ --color-destructive-border: var(--mimi-destructive-border);
490
+ --color-destructive-subtle: var(--mimi-destructive-subtle);
491
+ --color-tooltip: var(--mimi-tooltip);
492
+ --color-tooltip-foreground: var(--mimi-tooltip-foreground);
493
+ --color-glass: var(--mimi-glass);
494
+ --color-glass-border: var(--mimi-glass-border);
183
495
  --color-border: var(--mimi-border);
184
496
  --color-input: var(--mimi-input);
497
+ --color-input-hover: var(--mimi-input-hover);
185
498
  --color-input-background: var(--mimi-input-background);
186
499
  --color-ring: var(--mimi-ring);
187
500
  --color-ring-soft: var(--mimi-ring-soft);
188
501
  --color-overlay: var(--mimi-overlay);
189
502
  --color-switch-off: var(--mimi-switch-off);
503
+ --color-range: var(--mimi-range);
504
+ --color-track: var(--mimi-track);
505
+ --color-track-fill: var(--mimi-track-fill);
506
+ --color-thumb: var(--mimi-thumb);
507
+ --color-chip: var(--mimi-chip);
508
+ --color-chip-foreground: var(--mimi-chip-foreground);
509
+ --color-dropzone: var(--mimi-dropzone);
510
+ --color-dropzone-active: var(--mimi-dropzone-active);
511
+ --color-dropzone-active-border: var(--mimi-dropzone-active-border);
512
+ --color-strength-weak: var(--mimi-strength-weak);
513
+ --color-strength-medium: var(--mimi-strength-medium);
514
+ --color-strength-strong: var(--mimi-strength-strong);
515
+ --color-selection: var(--mimi-selection);
190
516
 
191
517
  --radius-sm: var(--mimi-radius-sm);
192
518
  --radius-md: calc(var(--mimi-radius) - 2px);
@@ -203,6 +529,22 @@
203
529
  --shadow-neutral: var(--mimi-shadow-neutral);
204
530
  --shadow-neutral-hover: var(--mimi-shadow-neutral-hover);
205
531
  --shadow-thumb: var(--mimi-shadow-thumb);
532
+ --shadow-success: var(--mimi-shadow-success);
533
+ --shadow-success-hover: var(--mimi-shadow-success-hover);
534
+ --shadow-warning: var(--mimi-shadow-warning);
535
+ --shadow-warning-hover: var(--mimi-shadow-warning-hover);
536
+ --shadow-info: var(--mimi-shadow-info);
537
+ --shadow-info-hover: var(--mimi-shadow-info-hover);
538
+ --shadow-popover: var(--mimi-shadow-popover);
539
+ --shadow-glow: var(--mimi-glow);
540
+ --shadow-glow-primary: var(--mimi-glow-primary);
541
+ --shadow-glow-success: var(--mimi-glow-success);
542
+ --shadow-glow-warning: var(--mimi-glow-warning);
543
+ --shadow-glow-info: var(--mimi-glow-info);
544
+ --shadow-glow-destructive: var(--mimi-glow-destructive);
545
+
546
+ --blur-glass: var(--mimi-glass-blur);
547
+ --blur-overlay: var(--mimi-overlay-blur);
206
548
 
207
549
  --font-sans: var(--mimi-font-sans);
208
550
  --font-mono: var(--mimi-font-mono);
@@ -228,6 +570,32 @@
228
570
  }
229
571
  }
230
572
 
573
+ /* Texto solo para lectores de pantalla del CDK: el LiveAnnouncer (Pagination, Toast, Password,
574
+ File Upload, Tags Input y Combobox múltiple) crea al final del body un elemento con esta clase,
575
+ pero no carga su CSS (el CDK solo lo inyecta con Dialog y las trampas de foco): sin esta
576
+ regla, el anuncio («Página 2 de 12») se ve al final de la página. Igual que
577
+ @angular/cdk/a11y-prebuilt.css, y sin capa, como la inyecta el CDK. */
578
+ .cdk-visually-hidden {
579
+ border: 0;
580
+ clip: rect(0 0 0 0);
581
+ height: 1px;
582
+ margin: -1px;
583
+ overflow: hidden;
584
+ padding: 0;
585
+ position: absolute;
586
+ width: 1px;
587
+ white-space: nowrap;
588
+ outline: 0;
589
+ -webkit-appearance: none;
590
+ -moz-appearance: none;
591
+ left: 0;
592
+ }
593
+
594
+ [dir='rtl'] .cdk-visually-hidden {
595
+ left: auto;
596
+ right: 0;
597
+ }
598
+
231
599
  @keyframes mimi-spin {
232
600
  to {
233
601
  transform: rotate(360deg);
@@ -239,3 +607,36 @@
239
607
  opacity: 0.45;
240
608
  }
241
609
  }
610
+
611
+ /* Grupo 2 (tokens-mimi.css y, mimi-indet, F5 Estructura; G2.0b) */
612
+ @keyframes mimi-caret {
613
+ 50% {
614
+ opacity: 0;
615
+ }
616
+ }
617
+
618
+ @keyframes mimi-bob {
619
+ 50% {
620
+ transform: translateY(-4px);
621
+ }
622
+ }
623
+
624
+ @keyframes mimi-shake {
625
+ 20%,
626
+ 60% {
627
+ transform: translateX(-4px);
628
+ }
629
+ 40%,
630
+ 80% {
631
+ transform: translateX(4px);
632
+ }
633
+ }
634
+
635
+ @keyframes mimi-indet {
636
+ 0% {
637
+ transform: translateX(-100%);
638
+ }
639
+ 100% {
640
+ transform: translateX(260%);
641
+ }
642
+ }