@the-bearded-bear/claude-craft 8.8.1 → 8.8.2

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 (79) hide show
  1. package/Dev/i18n/de/Angular/commands/check-compliance.md +218 -168
  2. package/Dev/i18n/de/Common/agents/refactoring-specialist.md +146 -69
  3. package/Dev/i18n/de/Common/commands/add-technology.md +166 -68
  4. package/Dev/i18n/de/Common/commands/setup-ci.md +216 -33
  5. package/Dev/i18n/de/Laravel/commands/check-compliance.md +223 -115
  6. package/Dev/i18n/de/Python/checklists/new-feature.md +319 -44
  7. package/Dev/i18n/de/React/rules/02-architecture.md +483 -322
  8. package/Dev/i18n/de/React/rules/03-coding-standards.md +584 -368
  9. package/Dev/i18n/de/Symfony/commands/check-compliance.md +186 -114
  10. package/Dev/i18n/de/Symfony/rules/07-testing-symfony.md +679 -10
  11. package/Dev/i18n/de/UIUX/commands/a11y-component.md +284 -26
  12. package/Dev/i18n/de/UIUX/commands/design-tokens.md +199 -35
  13. package/Dev/i18n/de/UIUX/commands/user-flow.md +179 -16
  14. package/Dev/i18n/de/VueJS/commands/check-compliance.md +227 -102
  15. package/Dev/i18n/es/Angular/commands/check-compliance.md +217 -167
  16. package/Dev/i18n/es/Common/commands/add-technology.md +158 -60
  17. package/Dev/i18n/es/Laravel/commands/check-compliance.md +223 -115
  18. package/Dev/i18n/es/React/commands/check-testing.md +263 -169
  19. package/Dev/i18n/es/ReactNative/commands/check-testing.md +256 -198
  20. package/Dev/i18n/es/Symfony/commands/check-compliance.md +189 -117
  21. package/Dev/i18n/es/Symfony/commands/check-testing.md +301 -102
  22. package/Dev/i18n/es/Symfony/commands/migration-plan.md +267 -34
  23. package/Dev/i18n/es/UIUX/commands/a11y-component.md +274 -16
  24. package/Dev/i18n/es/UIUX/commands/design-tokens.md +186 -22
  25. package/Dev/i18n/es/UIUX/commands/user-flow.md +173 -10
  26. package/Dev/i18n/es/VueJS/commands/check-compliance.md +227 -102
  27. package/Dev/i18n/fr/Angular/commands/check-compliance.md +217 -167
  28. package/Dev/i18n/fr/Common/commands/ralph-run.md +138 -60
  29. package/Dev/i18n/fr/Laravel/commands/check-compliance.md +223 -115
  30. package/Dev/i18n/fr/React/commands/check-architecture.md +370 -53
  31. package/Dev/i18n/fr/React/commands/check-code-quality.md +454 -64
  32. package/Dev/i18n/fr/React/commands/check-testing.md +476 -102
  33. package/Dev/i18n/fr/Symfony/commands/check-compliance.md +188 -116
  34. package/Dev/i18n/fr/VueJS/commands/check-compliance.md +227 -102
  35. package/Dev/i18n/pt/Angular/commands/check-compliance.md +225 -175
  36. package/Dev/i18n/pt/Common/agents/ralph-conductor.md +211 -30
  37. package/Dev/i18n/pt/Common/commands/add-technology.md +149 -51
  38. package/Dev/i18n/pt/Common/commands/ralph-run.md +239 -35
  39. package/Dev/i18n/pt/Flutter/commands/analyze-performance.md +331 -46
  40. package/Dev/i18n/pt/Flutter/commands/check-compliance.md +234 -29
  41. package/Dev/i18n/pt/Flutter/commands/generate-feature.md +526 -51
  42. package/Dev/i18n/pt/Flutter/commands/generate-widget.md +515 -27
  43. package/Dev/i18n/pt/Flutter/commands/golden-update.md +322 -46
  44. package/Dev/i18n/pt/Flutter/commands/localization-check.md +278 -37
  45. package/Dev/i18n/pt/Laravel/commands/check-compliance.md +212 -104
  46. package/Dev/i18n/pt/React/commands/accessibility-check.md +151 -42
  47. package/Dev/i18n/pt/React/commands/bundle-analyze.md +300 -25
  48. package/Dev/i18n/pt/React/commands/check-architecture.md +369 -34
  49. package/Dev/i18n/pt/React/commands/check-code-quality.md +440 -34
  50. package/Dev/i18n/pt/React/commands/check-compliance.md +232 -62
  51. package/Dev/i18n/pt/React/commands/check-security.md +370 -31
  52. package/Dev/i18n/pt/React/commands/check-testing.md +473 -43
  53. package/Dev/i18n/pt/React/commands/generate-component.md +454 -19
  54. package/Dev/i18n/pt/React/commands/generate-hook.md +425 -24
  55. package/Dev/i18n/pt/React/commands/storybook-story.md +520 -35
  56. package/Dev/i18n/pt/ReactNative/commands/app-size.md +358 -387
  57. package/Dev/i18n/pt/ReactNative/commands/check-code-quality.md +246 -75
  58. package/Dev/i18n/pt/ReactNative/commands/check-compliance.md +191 -85
  59. package/Dev/i18n/pt/ReactNative/commands/check-security.md +363 -115
  60. package/Dev/i18n/pt/ReactNative/commands/check-testing.md +269 -79
  61. package/Dev/i18n/pt/ReactNative/commands/generate-screen.md +491 -324
  62. package/Dev/i18n/pt/ReactNative/commands/native-module.md +539 -82
  63. package/Dev/i18n/pt/ReactNative/commands/store-prepare.md +429 -185
  64. package/Dev/i18n/pt/ReactNative/rules/02-architecture.md +1084 -31
  65. package/Dev/i18n/pt/Symfony/commands/check-compliance.md +195 -123
  66. package/Dev/i18n/pt/UIUX/commands/a11y-audit.md +208 -24
  67. package/Dev/i18n/pt/UIUX/commands/a11y-component.md +281 -23
  68. package/Dev/i18n/pt/UIUX/commands/design-tokens.md +197 -33
  69. package/Dev/i18n/pt/UIUX/commands/user-flow.md +183 -20
  70. package/Dev/i18n/pt/VueJS/commands/check-compliance.md +228 -103
  71. package/Dev/i18n/pt/Workflow/commands/analyze.md +147 -146
  72. package/Dev/i18n/pt/Workflow/commands/design.md +205 -204
  73. package/Dev/i18n/pt/Workflow/commands/implement.md +184 -184
  74. package/Project/i18n/de/Sprint/commands/dev.md +339 -86
  75. package/Project/i18n/es/Sprint/commands/dev.md +342 -91
  76. package/Project/i18n/pt/Sprint/commands/dev.md +343 -92
  77. package/bundles/cursor/.cursorrules +1 -1
  78. package/bundles/windsurf/.windsurfrules +1 -1
  79. package/package.json +1 -1
@@ -18,7 +18,7 @@ Ejemplo: `/uiux:a11y-component Modal` o `/uiux:a11y-component "Selector de Fecha
18
18
 
19
19
  ## Modo Plan
20
20
 
21
- > **El modo plan es obligatorio.** Antes de ejecutar, Claude activa el modo plan para analizar el código impactado, proponer un plan de implementación y esperar tu validación antes de realizar cualquier cambio.
21
+ > **El modo plan es obligatorio.** Antes de ejecutar, Claude activa el modo plan para analizar el código afectado, proponer un plan de implementación y esperar tu validación antes de realizar cualquier cambio.
22
22
 
23
23
  ## MISIÓN
24
24
 
@@ -30,7 +30,7 @@ Consultar las ARIA Authoring Practices Guide (APG) para el patrón correspondien
30
30
 
31
31
  ```
32
32
  ══════════════════════════════════════════════════════════════
33
- ♿ ESPECIFICACIÓN ACCESIBILIDAD: {NOMBRE_COMPONENTE}
33
+ ♿ ESPECIFICACIÓN DE ACCESIBILIDAD: {NOMBRE_COMPONENTE}
34
34
  ══════════════════════════════════════════════════════════════
35
35
 
36
36
  Tipo: {Button | Input | Dialog | Listbox | Tabs | ...}
@@ -42,14 +42,24 @@ Fecha: {fecha}
42
42
  ──────────────────────────────────────────────────────────────
43
43
 
44
44
  ### Elemento nativo recomendado
45
+
45
46
  ```html
46
- <!-- Siempre preferir elemento nativo -->
47
+ <!-- Siempre preferir el elemento nativo -->
47
48
  <{elemento} ...>
48
49
  {contenido}
49
50
  </{elemento}>
50
51
  ```
51
52
 
53
+ ### Si se requiere un componente personalizado
54
+
55
+ ```html
56
+ <div role="{role}" ...>
57
+ {contenido}
58
+ </div>
59
+ ```
60
+
52
61
  ### Estructura completa
62
+
53
63
  ```html
54
64
  <!-- Ejemplo completo con ARIA -->
55
65
  <div
@@ -57,7 +67,8 @@ Fecha: {fecha}
57
67
  aria-{atributo}="{valor}"
58
68
  tabindex="0"
59
69
  >
60
- <span id="{id}-label">{Label}</span>
70
+ <span id="{id}-label">{Etiqueta}</span>
71
+ <div id="{id}-description">{Descripción}</div>
61
72
  {contenido}
62
73
  </div>
63
74
  ```
@@ -67,76 +78,323 @@ Fecha: {fecha}
67
78
  ──────────────────────────────────────────────────────────────
68
79
 
69
80
  ### Atributos requeridos
81
+
70
82
  | Atributo | Valor | Cuándo | Descripción |
71
83
  |----------|-------|--------|-------------|
72
- | role | {role} | Siempre (si custom) | Define el tipo |
73
- | aria-label | "{texto}" | Si no hay label visible | Label accesible |
84
+ | role | {role} | Siempre (si personalizado) | Define el tipo |
85
+ | aria-label | "{texto}" | Si no hay etiqueta visible | Etiqueta accesible |
86
+ | aria-labelledby | "{id}" | Si hay etiqueta visible | Referencia a la etiqueta |
74
87
 
75
88
  ### Atributos condicionales
89
+
76
90
  | Atributo | Valor | Cuándo | Descripción |
77
91
  |----------|-------|--------|-------------|
78
- | aria-expanded | "true"/"false" | Si expandible | Estado abierto/cerrado |
79
- | aria-disabled | "true" | Si deshabilitado | Estado deshabilitado |
92
+ | aria-describedby | "{id}" | Si hay descripción | Referencia a la descripción |
93
+ | aria-expanded | "true"/"false" | Si es expandible | Estado abierto/cerrado |
94
+ | aria-controls | "{id}" | Si controla otro elemento | ID del elemento controlado |
95
+ | aria-owns | "{id}" | Si está separado en el DOM | Relación de parentesco |
96
+ | aria-haspopup | "dialog"/"menu"/"listbox" | Si tiene popup | Tipo de popup |
97
+ | aria-pressed | "true"/"false" | Si es toggle | Estado presionado |
98
+ | aria-selected | "true"/"false" | Si es seleccionable | Estado seleccionado |
99
+ | aria-checked | "true"/"false"/"mixed" | Si es checkbox | Estado marcado |
100
+ | aria-disabled | "true" | Si está deshabilitado | Estado deshabilitado |
101
+ | aria-invalid | "true" | Si hay error | Estado inválido |
102
+ | aria-required | "true" | Si es obligatorio | Campo requerido |
103
+ | aria-busy | "true" | Si está cargando | En progreso |
104
+ | aria-live | "polite"/"assertive" | Si es dinámico | Anunciar cambio |
105
+ | aria-atomic | "true" | Con aria-live | Anunciar todo |
106
+
107
+ ### Estados por interacción
108
+
109
+ | Estado | Atributos ARIA |
110
+ |--------|----------------|
111
+ | Por defecto | {atributos base} |
112
+ | Hover | Sin cambio ARIA |
113
+ | Foco | Sin cambio ARIA |
114
+ | Expandido | aria-expanded="true" |
115
+ | Contraído | aria-expanded="false" |
116
+ | Seleccionado | aria-selected="true" |
117
+ | Deshabilitado | aria-disabled="true" |
118
+ | Cargando | aria-busy="true" |
119
+ | Error | aria-invalid="true", aria-errormessage="{id}" |
80
120
 
81
121
  ──────────────────────────────────────────────────────────────
82
122
  ⌨️ NAVEGACIÓN POR TECLADO
83
123
  ──────────────────────────────────────────────────────────────
84
124
 
125
+ ### Teclas principales
126
+
85
127
  | Tecla | Acción | Detalle |
86
128
  |-------|--------|---------|
87
129
  | Tab | Foco en el componente | Entra al componente |
130
+ | Shift+Tab | Foco anterior | Sale del componente |
88
131
  | Enter | Activar | Acción principal |
89
132
  | Space | Activar (toggle) | Para botones toggle |
90
133
  | Escape | Cerrar/Cancelar | Si popup/modal |
91
- | Flechas | Navegación interna | En listas |
134
+ | Flecha arriba | Elemento anterior | Navegación en lista |
135
+ | ↓ Flecha abajo | Elemento siguiente | Navegación en lista |
136
+ | ← Flecha izquierda | Elemento anterior (horizontal) | Pestañas, slider |
137
+ | → Flecha derecha | Elemento siguiente (horizontal) | Pestañas, slider |
138
+ | Home | Primer elemento | Navegación rápida |
139
+ | End | Último elemento | Navegación rápida |
140
+
141
+ ### Gestión del foco
142
+
143
+ | Situación | Comportamiento |
144
+ |-----------|----------------|
145
+ | Al abrir | Foco en {primer elemento enfocable} |
146
+ | Al cerrar | Foco vuelve a {elemento disparador} |
147
+ | Navegación interna | Roving tabindex O aria-activedescendant |
148
+ | Trampa de foco | {Sí para modal / No para desplegable} |
149
+
150
+ ### Roving tabindex (si aplica)
151
+
152
+ ```html
153
+ <!-- Solo un elemento enfocable a la vez -->
154
+ <div role="tablist">
155
+ <button role="tab" tabindex="0" aria-selected="true">Pestaña 1</button>
156
+ <button role="tab" tabindex="-1" aria-selected="false">Pestaña 2</button>
157
+ <button role="tab" tabindex="-1" aria-selected="false">Pestaña 3</button>
158
+ </div>
159
+ ```
160
+
161
+ ──────────────────────────────────────────────────────────────
162
+ 🎯 FOCO VISIBLE
163
+ ──────────────────────────────────────────────────────────────
164
+
165
+ ### Estilo requerido (WCAG 2.4.11 AAA)
166
+
167
+ ```css
168
+ .{componente}:focus-visible {
169
+ /* Contorno visible */
170
+ outline: 2px solid var(--color-focus);
171
+ outline-offset: 2px;
172
+
173
+ /* Relación de contraste ≥ 3:1 */
174
+ /* Área de foco ≥ perímetro visible */
175
+ }
176
+
177
+ /* Resetear para ratón */
178
+ .{componente}:focus:not(:focus-visible) {
179
+ outline: none;
180
+ }
181
+ ```
182
+
183
+ ### Verificaciones
184
+
185
+ | Criterio | Valor | Estado |
186
+ |----------|-------|--------|
187
+ | Grosor del contorno | ≥ 2px | ✅ |
188
+ | Contraste del contorno | ≥ 3:1 | ✅ |
189
+ | Área visible | ≥ perímetro | ✅ |
190
+ | Visible sobre todos los fondos | Sí | ✅ |
92
191
 
93
192
  ──────────────────────────────────────────────────────────────
94
193
  🔊 ANUNCIOS DEL LECTOR DE PANTALLA
95
194
  ──────────────────────────────────────────────────────────────
96
195
 
97
- ### Al entrar (foco)
196
+ ### Al recibir el foco
197
+
98
198
  ```
99
- "{Label}, {rol}, {estado}"
199
+ "{Etiqueta}, {rol}, {estado}"
200
+
100
201
  Ejemplos:
101
202
  - "Enviar, botón"
102
203
  - "Menú principal, menú, contraído"
204
+ - "Nombre, campo de texto, requerido"
205
+ - "Boletín, casilla de verificación, no marcada"
103
206
  ```
104
207
 
105
- ### Durante interacción
208
+ ### Durante la interacción
209
+
106
210
  | Acción | Anuncio |
107
211
  |--------|---------|
108
212
  | Expansión | "expandido" / "contraído" |
213
+ | Selección | "seleccionado" |
214
+ | Toggle | "activado" / "desactivado" |
215
+ | Cargando | "Cargando" |
216
+ | Éxito | "{mensaje de éxito}" |
109
217
  | Error | "Error: {mensaje}" |
110
218
 
219
+ ### Contenido dinámico (aria-live)
220
+
221
+ ```html
222
+ <!-- Notificaciones no urgentes (polite) -->
223
+ <div aria-live="polite" aria-atomic="true">
224
+ {mensaje toast}
225
+ </div>
226
+
227
+ <!-- Notificaciones urgentes (errores) -->
228
+ <div aria-live="assertive" aria-atomic="true">
229
+ {mensaje de error}
230
+ </div>
231
+ ```
232
+
233
+ ──────────────────────────────────────────────────────────────
234
+ 📏 CONTRASTE (WCAG AAA)
235
+ ──────────────────────────────────────────────────────────────
236
+
237
+ ### Texto
238
+
239
+ | Tipo | Relación requerida | Verificación |
240
+ |------|--------------------|--------------|
241
+ | Texto normal (< 18px) | ≥ 7:1 | {color} / {fondo} = {relación} |
242
+ | Texto grande (≥ 18px o 14px negrita) | ≥ 4.5:1 | {color} / {fondo} = {relación} |
243
+
244
+ ### Elementos UI
245
+
246
+ | Elemento | Relación requerida | Verificación |
247
+ |----------|--------------------|--------------|
248
+ | Bordes | ≥ 3:1 | {color} / {fondo} = {relación} |
249
+ | Iconos | ≥ 3:1 | {color} / {fondo} = {relación} |
250
+ | Contorno de foco | ≥ 3:1 | {color} / {fondo} = {relación} |
251
+
252
+ ### Estados
253
+
254
+ | Estado | Verificación de contraste |
255
+ |--------|--------------------------|
256
+ | Por defecto | ✅ {relación} |
257
+ | Hover | ✅ {relación} |
258
+ | Foco | ✅ {relación} |
259
+ | Deshabilitado | ⚠️ No requerido pero recomendado |
260
+
111
261
  ──────────────────────────────────────────────────────────────
112
262
  📐 OBJETIVOS TÁCTILES (WCAG 2.5.5 AAA)
113
263
  ──────────────────────────────────────────────────────────────
114
264
 
265
+ ### Dimensiones mínimas
266
+
115
267
  | Criterio | Valor | Estado |
116
268
  |----------|-------|--------|
117
269
  | Tamaño mínimo | 44 × 44 píxeles CSS | ✅/❌ |
118
270
  | Espaciado entre objetivos | ≥ 8px | ✅/❌ |
119
271
 
272
+ ### Implementación
273
+
274
+ ```css
275
+ .{componente} {
276
+ min-width: 44px;
277
+ min-height: 44px;
278
+ /* O padding para alcanzar 44px */
279
+ padding: 10px 16px; /* si la altura del texto es ~24px */
280
+ }
281
+
282
+ /* Botones con icono */
283
+ .{componente}-icono {
284
+ width: 44px;
285
+ height: 44px;
286
+ display: flex;
287
+ align-items: center;
288
+ justify-content: center;
289
+ }
290
+ ```
291
+
292
+ ──────────────────────────────────────────────────────────────
293
+ 🧪 PRUEBAS A REALIZAR
294
+ ──────────────────────────────────────────────────────────────
295
+
296
+ ### Automatizadas
297
+
298
+ - [ ] axe DevTools: 0 violaciones
299
+ - [ ] Lighthouse Accessibility: 100/100
300
+ - [ ] ESLint jsx-a11y: 0 errores
301
+
302
+ ### Manuales
303
+
304
+ - [ ] Navegación completa por teclado
305
+ - [ ] Foco visible en cada paso
306
+ - [ ] Sin trampa de teclado
307
+ - [ ] Orden de foco lógico
308
+
309
+ ### Lector de pantalla
310
+
311
+ - [ ] VoiceOver (macOS/iOS): anuncios correctos
312
+ - [ ] NVDA (Windows): navegación en listas/tablas
313
+ - [ ] TalkBack (Android): si es móvil
314
+
315
+ ### Casos límite
316
+
317
+ - [ ] Zoom al 400%: sin pérdida de contenido
318
+ - [ ] Modo de alto contraste: visible
319
+ - [ ] Movimiento reducido: animaciones respetadas
320
+
321
+ ──────────────────────────────────────────────────────────────
322
+ 💻 EJEMPLO DE IMPLEMENTACIÓN
323
+ ──────────────────────────────────────────────────────────────
324
+
325
+ ```tsx
326
+ // {Componente}.tsx
327
+ import { forwardRef, useId } from 'react';
328
+
329
+ interface {Componente}Props {
330
+ label: string;
331
+ description?: string;
332
+ disabled?: boolean;
333
+ // ...otras props
334
+ }
335
+
336
+ export const {Componente} = forwardRef<HTML{Elemento}Element, {Componente}Props>(
337
+ ({ label, description, disabled, ...props }, ref) => {
338
+ const id = useId();
339
+ const descriptionId = description ? `${id}-description` : undefined;
340
+
341
+ return (
342
+ <{elemento}
343
+ ref={ref}
344
+ id={id}
345
+ role="{role}"
346
+ aria-label={label}
347
+ aria-describedby={descriptionId}
348
+ aria-disabled={disabled}
349
+ tabIndex={disabled ? -1 : 0}
350
+ {...props}
351
+ >
352
+ {/* Contenido */}
353
+
354
+ {description && (
355
+ <span id={descriptionId} className="sr-only">
356
+ {description}
357
+ </span>
358
+ )}
359
+ </{elemento}>
360
+ );
361
+ }
362
+ );
363
+
364
+ {Componente}.displayName = '{Componente}';
365
+ ```
366
+
120
367
  ──────────────────────────────────────────────────────────────
121
368
  ✅ CHECKLIST DE VALIDACIÓN
122
369
  ──────────────────────────────────────────────────────────────
123
370
 
124
371
  ### Semántica
125
372
  - [ ] Elemento HTML nativo usado si es posible
126
- - [ ] Rol ARIA correcto si es custom
373
+ - [ ] Rol ARIA correcto si es personalizado
127
374
  - [ ] Estructura DOM lógica
128
375
 
129
376
  ### ARIA
130
377
  - [ ] Atributos requeridos presentes
131
- - [ ] Sin sobre-ARIA (nativo > ARIA)
378
+ - [ ] Atributos condicionales correctos
379
+ - [ ] Sin sobrecarga de ARIA (nativo > ARIA)
132
380
 
133
381
  ### Teclado
134
- - [ ] Focusable (tabindex apropiado)
135
- - [ ] Todas las acciones vía teclado
382
+ - [ ] Enfocable (tabindex apropiado)
383
+ - [ ] Todas las acciones disponibles por teclado
136
384
  - [ ] Sin trampa de teclado
137
385
  - [ ] Foco visible conforme
138
386
 
387
+ ### Anuncios
388
+ - [ ] Etiqueta anunciada al recibir foco
389
+ - [ ] Estados anunciados al cambiar
390
+ - [ ] Errores con aria-live assertive
391
+
139
392
  ### Contraste
140
393
  - [ ] Texto ≥ 7:1 (AAA)
141
394
  - [ ] UI ≥ 3:1
395
+ - [ ] Foco ≥ 3:1
396
+
397
+ ### Táctil
398
+ - [ ] Objetivos ≥ 44×44px
399
+ - [ ] Espaciado ≥ 8px
142
400
  ```
@@ -5,7 +5,7 @@ argument-hint: [arguments]
5
5
 
6
6
  # Definición de Design Tokens
7
7
 
8
- Eres un Lead UI Designer. Debes definir los design tokens para un design system coherente y mantenible.
8
+ Eres un Lead UI Designer. Debes definir los design tokens para un sistema de diseño coherente y mantenible.
9
9
 
10
10
  ## Argumentos
11
11
  $ARGUMENTS
@@ -19,15 +19,15 @@ Ejemplo: `/uiux:design-tokens all #3B82F6 both`
19
19
 
20
20
  ## Modo Plan
21
21
 
22
- > **El modo plan es obligatorio.** Antes de ejecutar, Claude activa el modo plan para analizar el código impactado, proponer un plan de implementación y esperar tu validación antes de realizar cualquier cambio.
22
+ > **El modo plan es obligatorio.** Antes de ejecutar, Claude activa el modo plan para analizar el código afectado, proponer un plan de implementación y esperar tu validación antes de realizar cualquier cambio.
23
23
 
24
24
  ## MISIÓN
25
25
 
26
26
  ### Paso 1: Analizar el contexto
27
27
 
28
28
  - Stack frontend (React, Vue, Tailwind, CSS vars...)
29
- - ¿Design system existente?
30
- - ¿Guía de marca proporcionada?
29
+ - ¿Existe un sistema de diseño previo?
30
+ - ¿Se han proporcionado directrices de marca?
31
31
 
32
32
  ### Paso 2: Definir los tokens
33
33
 
@@ -46,21 +46,54 @@ Formato: CSS Custom Properties
46
46
 
47
47
  ### Paleta Semántica
48
48
 
49
- #### Primary (Acción principal)
49
+ #### Primario (Acción principal)
50
50
  | Token | Light | Dark | Uso |
51
51
  |-------|-------|------|-----|
52
52
  | --color-primary-50 | #eff6ff | #1e3a5f | Fondo sutil |
53
+ | --color-primary-100 | #dbeafe | #1e40af | Fondo |
54
+ | --color-primary-200 | #bfdbfe | #1d4ed8 | Borde |
55
+ | --color-primary-300 | #93c5fd | #2563eb | Borde hover |
56
+ | --color-primary-400 | #60a5fa | #3b82f6 | Icono |
53
57
  | --color-primary-500 | #3b82f6 | #60a5fa | Texto |
54
58
  | --color-primary-600 | #2563eb | #93c5fd | Texto hover |
59
+ | --color-primary-700 | #1d4ed8 | #bfdbfe | - |
60
+ | --color-primary-800 | #1e40af | #dbeafe | - |
61
+ | --color-primary-900 | #1e3a5f | #eff6ff | - |
55
62
 
56
- #### Success / Warning / Error
57
- {Escalas similares}
63
+ #### Éxito
64
+ | Token | Light | Dark |
65
+ |-------|-------|------|
66
+ | --color-success-50 | #f0fdf4 | #14532d |
67
+ | --color-success-500 | #22c55e | #4ade80 |
68
+ | --color-success-700 | #15803d | #86efac |
58
69
 
59
- #### Neutral (Texto, Fondos)
70
+ #### Advertencia
71
+ | Token | Light | Dark |
72
+ |-------|-------|------|
73
+ | --color-warning-50 | #fffbeb | #78350f |
74
+ | --color-warning-500 | #f59e0b | #fbbf24 |
75
+ | --color-warning-700 | #b45309 | #fcd34d |
76
+
77
+ #### Error
78
+ | Token | Light | Dark |
79
+ |-------|-------|------|
80
+ | --color-error-50 | #fef2f2 | #7f1d1d |
81
+ | --color-error-500 | #ef4444 | #f87171 |
82
+ | --color-error-700 | #b91c1c | #fca5a5 |
83
+
84
+ #### Neutro (Texto, Fondos)
60
85
  | Token | Light | Dark | Uso |
61
86
  |-------|-------|------|-----|
62
87
  | --color-neutral-0 | #ffffff | #0a0a0a | Fondo |
63
- | --color-neutral-500 | #737373 | #a3a3a3 | Texto muted |
88
+ | --color-neutral-50 | #fafafa | #171717 | Fondo sutil |
89
+ | --color-neutral-100 | #f5f5f5 | #262626 | Fondo atenuado |
90
+ | --color-neutral-200 | #e5e5e5 | #404040 | Borde |
91
+ | --color-neutral-300 | #d4d4d4 | #525252 | Borde hover |
92
+ | --color-neutral-400 | #a3a3a3 | #737373 | Placeholder |
93
+ | --color-neutral-500 | #737373 | #a3a3a3 | Texto atenuado |
94
+ | --color-neutral-600 | #525252 | #d4d4d4 | Texto secundario |
95
+ | --color-neutral-700 | #404040 | #e5e5e5 | Texto primario |
96
+ | --color-neutral-800 | #262626 | #f5f5f5 | Texto enfatizado |
64
97
  | --color-neutral-900 | #171717 | #fafafa | Texto fuerte |
65
98
 
66
99
  ### Tokens Alias (Semánticos)
@@ -68,14 +101,25 @@ Formato: CSS Custom Properties
68
101
  /* Fondos */
69
102
  --color-bg-primary: var(--color-neutral-0);
70
103
  --color-bg-secondary: var(--color-neutral-50);
104
+ --color-bg-tertiary: var(--color-neutral-100);
105
+ --color-bg-inverse: var(--color-neutral-900);
71
106
 
72
- /* Textos */
107
+ /* Texto */
73
108
  --color-text-primary: var(--color-neutral-900);
74
109
  --color-text-secondary: var(--color-neutral-600);
110
+ --color-text-muted: var(--color-neutral-500);
111
+ --color-text-inverse: var(--color-neutral-0);
75
112
 
76
113
  /* Bordes */
77
114
  --color-border-default: var(--color-neutral-200);
115
+ --color-border-hover: var(--color-neutral-300);
78
116
  --color-border-focus: var(--color-primary-500);
117
+
118
+ /* Estados */
119
+ --color-state-focus: var(--color-primary-500);
120
+ --color-state-error: var(--color-error-500);
121
+ --color-state-success: var(--color-success-500);
122
+ --color-state-warning: var(--color-warning-500);
79
123
  ```
80
124
 
81
125
  ──────────────────────────────────────────────────────────────
@@ -84,39 +128,159 @@ Formato: CSS Custom Properties
84
128
 
85
129
  ### Familias
86
130
  ```css
87
- --font-family-sans: 'Inter', system-ui, sans-serif;
88
- --font-family-mono: 'JetBrains Mono', monospace;
131
+ --font-family-sans: 'Inter', system-ui, -apple-system, sans-serif;
132
+ --font-family-mono: 'JetBrains Mono', 'Fira Code', monospace;
89
133
  ```
90
134
 
91
135
  ### Tamaños (base 16px)
92
- | Token | Tamaño | Line Height | Uso |
93
- |-------|--------|-------------|-----|
94
- | --font-size-xs | 0.75rem | 1rem | Labels |
95
- | --font-size-base | 1rem | 1.5rem | Body |
96
- | --font-size-4xl | 2.25rem | 2.5rem | H1 |
136
+ | Token | Tamaño | Altura de línea | Uso |
137
+ |-------|--------|-----------------|-----|
138
+ | --font-size-xs | 0.75rem (12px) | 1rem | Etiquetas, badges |
139
+ | --font-size-sm | 0.875rem (14px) | 1.25rem | Cuerpo pequeño |
140
+ | --font-size-base | 1rem (16px) | 1.5rem | Cuerpo |
141
+ | --font-size-lg | 1.125rem (18px) | 1.75rem | Texto destacado |
142
+ | --font-size-xl | 1.25rem (20px) | 1.75rem | H4 |
143
+ | --font-size-2xl | 1.5rem (24px) | 2rem | H3 |
144
+ | --font-size-3xl | 1.875rem (30px) | 2.25rem | H2 |
145
+ | --font-size-4xl | 2.25rem (36px) | 2.5rem | H1 |
146
+ | --font-size-5xl | 3rem (48px) | 1 | Display |
147
+
148
+ ### Pesos
149
+ | Token | Valor | Uso |
150
+ |-------|-------|-----|
151
+ | --font-weight-normal | 400 | Cuerpo |
152
+ | --font-weight-medium | 500 | Etiquetas, nav |
153
+ | --font-weight-semibold | 600 | Subencabezados |
154
+ | --font-weight-bold | 700 | Encabezados |
155
+
156
+ ### Alturas de línea
157
+ ```css
158
+ --line-height-none: 1;
159
+ --line-height-tight: 1.25;
160
+ --line-height-snug: 1.375;
161
+ --line-height-normal: 1.5;
162
+ --line-height-relaxed: 1.625;
163
+ --line-height-loose: 2;
164
+ ```
165
+
166
+ ### Espaciado entre letras
167
+ ```css
168
+ --letter-spacing-tighter: -0.05em;
169
+ --letter-spacing-tight: -0.025em;
170
+ --letter-spacing-normal: 0;
171
+ --letter-spacing-wide: 0.025em;
172
+ --letter-spacing-wider: 0.05em;
173
+ ```
97
174
 
98
175
  ──────────────────────────────────────────────────────────────
99
- 📐 ESPACIADOS
176
+ 📐 ESPACIADO
100
177
  ──────────────────────────────────────────────────────────────
101
178
 
102
179
  ### Escala (base 4px)
103
180
  | Token | Valor | Píxeles | Uso |
104
181
  |-------|-------|---------|-----|
182
+ | --spacing-0 | 0 | 0px | - |
183
+ | --spacing-px | 1px | 1px | Bordes |
184
+ | --spacing-0.5 | 0.125rem | 2px | Ajustado |
105
185
  | --spacing-1 | 0.25rem | 4px | XS |
186
+ | --spacing-1.5 | 0.375rem | 6px | - |
187
+ | --spacing-2 | 0.5rem | 8px | S |
188
+ | --spacing-2.5 | 0.625rem | 10px | - |
189
+ | --spacing-3 | 0.75rem | 12px | - |
106
190
  | --spacing-4 | 1rem | 16px | M (base) |
191
+ | --spacing-5 | 1.25rem | 20px | - |
192
+ | --spacing-6 | 1.5rem | 24px | L |
107
193
  | --spacing-8 | 2rem | 32px | XL |
194
+ | --spacing-10 | 2.5rem | 40px | - |
195
+ | --spacing-12 | 3rem | 48px | 2XL |
196
+ | --spacing-16 | 4rem | 64px | 3XL |
197
+ | --spacing-20 | 5rem | 80px | - |
198
+ | --spacing-24 | 6rem | 96px | 4XL |
199
+
200
+ ──────────────────────────────────────────────────────────────
201
+ 🌗 SOMBRAS
202
+ ──────────────────────────────────────────────────────────────
203
+
204
+ | Token | Valor | Uso |
205
+ |-------|-------|-----|
206
+ | --shadow-xs | 0 1px 2px 0 rgb(0 0 0 / 0.05) | Sutil |
207
+ | --shadow-sm | 0 1px 3px 0 rgb(0 0 0 / 0.1) | Tarjetas |
208
+ | --shadow-md | 0 4px 6px -1px rgb(0 0 0 / 0.1) | Desplegables |
209
+ | --shadow-lg | 0 10px 15px -3px rgb(0 0 0 / 0.1) | Modales |
210
+ | --shadow-xl | 0 20px 25px -5px rgb(0 0 0 / 0.1) | Diálogos |
211
+ | --shadow-2xl | 0 25px 50px -12px rgb(0 0 0 / 0.25) | Superposiciones |
212
+ | --shadow-inner | inset 0 2px 4px 0 rgb(0 0 0 / 0.05) | Inputs |
213
+ | --shadow-none | none | Resetear |
108
214
 
109
215
  ──────────────────────────────────────────────────────────────
110
- 🌗 SOMBRAS / ⭕ RADIOS / ⏱️ TRANSICIONES
216
+ ⭕ RADIOS (Border Radius)
111
217
  ──────────────────────────────────────────────────────────────
112
218
 
113
- {Tablas similares con tokens}
219
+ | Token | Valor | Uso |
220
+ |-------|-------|-----|
221
+ | --radius-none | 0 | Afilado |
222
+ | --radius-sm | 0.125rem (2px) | Sutil |
223
+ | --radius-md | 0.375rem (6px) | Botones, inputs |
224
+ | --radius-lg | 0.5rem (8px) | Tarjetas |
225
+ | --radius-xl | 0.75rem (12px) | Modales |
226
+ | --radius-2xl | 1rem (16px) | Tarjetas grandes |
227
+ | --radius-full | 9999px | Pills, avatares |
228
+
229
+ ──────────────────────────────────────────────────────────────
230
+ ⏱️ TRANSICIONES
231
+ ──────────────────────────────────────────────────────────────
232
+
233
+ ### Duraciones
234
+ | Token | Valor | Uso |
235
+ |-------|-------|-----|
236
+ | --duration-75 | 75ms | Micro |
237
+ | --duration-100 | 100ms | Rápida |
238
+ | --duration-150 | 150ms | Por defecto |
239
+ | --duration-200 | 200ms | Normal |
240
+ | --duration-300 | 300ms | Lenta |
241
+ | --duration-500 | 500ms | Énfasis |
242
+
243
+ ### Curvas de aceleración
244
+ ```css
245
+ --ease-linear: linear;
246
+ --ease-in: cubic-bezier(0.4, 0, 1, 1);
247
+ --ease-out: cubic-bezier(0, 0, 0.2, 1);
248
+ --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
249
+ --ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
250
+ ```
251
+
252
+ ### Transiciones compuestas
253
+ ```css
254
+ --transition-none: none;
255
+ --transition-all: all 150ms ease-out;
256
+ --transition-colors: color, background-color, border-color 150ms ease-out;
257
+ --transition-opacity: opacity 150ms ease-out;
258
+ --transition-shadow: box-shadow 150ms ease-out;
259
+ --transition-transform: transform 150ms ease-out;
260
+ ```
261
+
262
+ ──────────────────────────────────────────────────────────────
263
+ 📦 Z-INDEX
264
+ ──────────────────────────────────────────────────────────────
114
265
 
266
+ | Token | Valor | Uso |
267
+ |-------|-------|-----|
268
+ | --z-0 | 0 | Base |
269
+ | --z-10 | 10 | Elevado |
270
+ | --z-20 | 20 | Desplegables |
271
+ | --z-30 | 30 | Sticky |
272
+ | --z-40 | 40 | Fijo |
273
+ | --z-50 | 50 | Fondo modal |
274
+ | --z-60 | 60 | Modal |
275
+ | --z-70 | 70 | Popover |
276
+ | --z-80 | 80 | Toast |
277
+ | --z-90 | 90 | Tooltip |
278
+ | --z-max | 9999 | Máximo |
115
279
  ```
116
280
 
117
281
  ### Paso 3: Exportar
118
282
 
119
- Generar archivos:
283
+ Generar los archivos:
120
284
  - `tokens.css` - CSS Custom Properties
121
285
  - `tokens.json` - Formato Style Dictionary
122
- - `tailwind.config.js` - Extensión Tailwind (si aplica)
286
+ - `tailwind.config.js` - Extensión de Tailwind (si aplica)