create-lexy 0.6.1 → 0.6.3

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 (93) hide show
  1. package/README.md +7 -2
  2. package/assets/fonts/{OFL-NotoSans.txt → LICENSE-Geist.txt} +4 -5
  3. package/assets/fonts/geist-mono-variable-italic.woff2 +0 -0
  4. package/assets/fonts/geist-mono-variable.woff2 +0 -0
  5. package/assets/fonts/geist-sans-variable-italic.woff2 +0 -0
  6. package/assets/fonts/geist-sans-variable.woff2 +0 -0
  7. package/assets/r/accordion.json +3 -3
  8. package/assets/r/alert-dialog.json +3 -3
  9. package/assets/r/app-accordion.json +1 -1
  10. package/assets/r/app-dialog.json +3 -3
  11. package/assets/r/app-header-bar.json +2 -2
  12. package/assets/r/app-sidebar.json +2 -2
  13. package/assets/r/avatar.json +3 -3
  14. package/assets/r/badge.json +3 -3
  15. package/assets/r/brand-background.json +1 -1
  16. package/assets/r/breadcrumb.json +3 -3
  17. package/assets/r/button-group.json +3 -3
  18. package/assets/r/button.json +3 -3
  19. package/assets/r/calendar.json +2 -2
  20. package/assets/r/card.json +3 -3
  21. package/assets/r/chart.json +2 -2
  22. package/assets/r/checkbox.json +2 -2
  23. package/assets/r/combobox.json +3 -3
  24. package/assets/r/command.json +3 -3
  25. package/assets/r/confirmacion.json +1 -1
  26. package/assets/r/counter-badge.json +3 -3
  27. package/assets/r/crm-desk.json +1 -1
  28. package/assets/r/crm-detalle-caso.json +5 -5
  29. package/assets/r/date-picker.json +1 -1
  30. package/assets/r/dialog.json +3 -3
  31. package/assets/r/dropdown-menu.json +3 -3
  32. package/assets/r/empty.json +2 -2
  33. package/assets/r/feature-card.json +3 -3
  34. package/assets/r/form.json +3 -3
  35. package/assets/r/header-bar.json +2 -2
  36. package/assets/r/input.json +3 -3
  37. package/assets/r/intake-wizard.json +1 -1
  38. package/assets/r/label.json +3 -3
  39. package/assets/r/logo.json +2 -2
  40. package/assets/r/menubar.json +3 -3
  41. package/assets/r/navigation-menu.json +3 -3
  42. package/assets/r/pagination.json +2 -2
  43. package/assets/r/popover.json +3 -3
  44. package/assets/r/profile-card.json +3 -3
  45. package/assets/r/progress.json +2 -2
  46. package/assets/r/radio-group.json +2 -2
  47. package/assets/r/registry.json +47 -47
  48. package/assets/r/scroll-area.json +2 -2
  49. package/assets/r/searchbox.json +3 -3
  50. package/assets/r/select.json +3 -3
  51. package/assets/r/separator.json +2 -2
  52. package/assets/r/sheet.json +2 -2
  53. package/assets/r/sidebar.json +3 -3
  54. package/assets/r/skeleton.json +2 -2
  55. package/assets/r/slider.json +3 -3
  56. package/assets/r/snippet.json +3 -3
  57. package/assets/r/spinner.json +2 -2
  58. package/assets/r/status-dot.json +3 -3
  59. package/assets/r/switch.json +3 -3
  60. package/assets/r/table.json +3 -3
  61. package/assets/r/tabs.json +3 -3
  62. package/assets/r/tag.json +3 -3
  63. package/assets/r/textarea.json +3 -3
  64. package/assets/r/toaster.json +3 -3
  65. package/assets/r/tooltip.json +3 -3
  66. package/assets/r/tree.json +3 -3
  67. package/assets/registry-version +1 -1
  68. package/assets/theme/lexy-theme.css +562 -112
  69. package/dist/index.js +590 -276
  70. package/package.json +4 -2
  71. package/templates/.claude/skills/lexy-design/SKILL.md +189 -0
  72. package/templates/.claude/skills/lexy-dev/SKILL.md +168 -0
  73. package/templates/.claude/skills/lexy-mock-data/SKILL.md +50 -0
  74. package/templates/.github/copilot-instructions.md +50 -0
  75. package/templates/.mcp.json +8 -0
  76. package/templates/AGENTS.md +243 -0
  77. package/templates/CLAUDE.md +61 -0
  78. package/templates/ai/IMPLEMENTATION-PROTOCOL.md +148 -0
  79. package/templates/ai/PRODUCTION-CLEANUP.md +17 -0
  80. package/templates/ai/PROJECT-CONTEXT.md +65 -0
  81. package/templates/ai/README.md +19 -0
  82. package/templates/ai/TECHNICAL-USAGE.md +220 -0
  83. package/templates/ai/pautas/arquitectura-informacion-ux.md +243 -0
  84. package/templates/ai/pautas/buenas-practicas.md +236 -0
  85. package/templates/ai/pautas/calidad-industria.md +109 -0
  86. package/templates/ai/pautas/diseno-cliente.md +136 -0
  87. package/templates/ai/pautas/diseno-crm-lexy.md +109 -0
  88. package/templates/ai/pautas/patrones-de-codigo.md +234 -0
  89. package/templates/ai/pautas/recetas-layout.md +419 -0
  90. package/templates/ai/pautas/sistema-visual.md +197 -0
  91. package/templates/ai/pautas/ux-writing.md +214 -0
  92. package/templates/scripts/check-geometry.mjs +139 -0
  93. package/assets/fonts/noto-sans-latin.woff2 +0 -0
@@ -0,0 +1,220 @@
1
+ # Guía técnica de uso del proyecto Lexy
2
+
3
+ Esta guía es para devs y agentes de IA que trabajan dentro de un proyecto Lexy
4
+ (creado con `create-lexy`). Es el **anexo técnico que ejecuta la skill `lexy-dev`**;
5
+ el flujo de trabajo lo define esa skill, no este documento.
6
+
7
+ ## El modelo registry (léelo primero)
8
+
9
+ **Los componentes viven en tu proyecto.** No hay librería npm de componentes: el
10
+ catálogo Lexy es un registry versionado (`@lexydesign/registry`) y el CLI
11
+ `create-lexy` trae cada componente como código local — tuyo y editable.
12
+
13
+ - **Míralo** antes de instalar: `npx create-lexy view button` (código + doc + metadata).
14
+ - **Instálalo**: `npx create-lexy add button` (con sus dependencias, en la ruta de `.lexy`).
15
+ - **Edítalo localmente con libertad**: es código del proyecto, no hay internals prohibidos.
16
+ - **Mantén la divergencia visible**: `diff` y `doctor` comparan tu copia con el registry vigente.
17
+
18
+ ## Archivos de referencia
19
+
20
+ - `.lexy`: configuración generada del proyecto. Define arquitectura, rutas reales y componentes instalados (con la versión del registry con la que entraron).
21
+ - [ai/lexy-ai-manifest.json](lexy-ai-manifest.json): índice técnico generado — comandos del registry, patrón de import local (`componentImportPattern`) y rutas del prototipo.
22
+ - `src/prototype/data-contract/prototype-data-contract.ts`: fuente de verdad de entidades, campos, relaciones, estados y proyecciones usados por la experiencia. Confirma la ruta exacta en el manifest.
23
+ - `src/prototype/ports/`: interfaces y adapters mock/producción para cargas de datos y eventos publicados.
24
+ - `src/prototype/mock-store/fixtures.ts`: registros sintéticos iniciales.
25
+ - `src/prototype/mock-store/mock-store.ts`: estado mock compartido y persistente.
26
+ - [ai/IMPLEMENTATION-PROTOCOL.md](IMPLEMENTATION-PROTOCOL.md): protocolo para implementar interfaces con componentes del registry.
27
+ - [AGENTS.md](../AGENTS.md): prompt base para agentes.
28
+ - [ai/pautas/](pautas/): criterios de diseño y UX writing.
29
+
30
+ Antes de crear archivos propios o escribir imports, lee `.lexy` y usa sus rutas como fuente de verdad.
31
+ Antes de implementar UI, lee `ai/IMPLEMENTATION-PROTOCOL.md`.
32
+
33
+ ## Comandos del proyecto
34
+
35
+ ```bash
36
+ pnpm dev # vista previa
37
+ pnpm check:data-contract # valida el contrato de datos
38
+ pnpm check:prototype # valida el contrato del prototipo
39
+ pnpm build # valida el prototipo y crea el build de producción
40
+ pnpm build:app # build de aplicación sin repetir el chequeo explícito
41
+ pnpm preview # revisar el build
42
+ pnpm lint:geometry # contrato de geometría Lexy (espaciado, radios, sombras)
43
+ ```
44
+
45
+ ## Contrato de datos
46
+
47
+ Antes de agregar un dato visible, editable, calculado o filtrable a una pantalla:
48
+
49
+ 1. revisa el contrato indicado por `prototype.dataContractPath` en el manifest;
50
+ 2. declara el dato y sus relaciones o proyecciones;
51
+ 3. usa IDs frontend `camelCase`;
52
+ 4. conserva nombres backend `snake_case` únicamente en `source.reference`;
53
+ 5. marca como `generatedByUsability` + `pendingTi` lo que aún deba validar TI;
54
+ 6. ejecuta `pnpm check:data-contract`.
55
+
56
+ El contrato no contiene registros mock, datos personales reales, eventos ni
57
+ persistencia. Describe qué datos existen y qué significan para la experiencia.
58
+
59
+ ## Ports de lectura y escritura
60
+
61
+ Los componentes importan `read` y `write` desde `src/prototype/ports`:
62
+
63
+ ```ts
64
+ const leads = await read.load("Crm_Leads-ListaLeads_V1", params, {
65
+ description: "Carga el listado de leads.",
66
+ reads: { entities: ["lead"] },
67
+ });
68
+
69
+ const receipt = await write.publish("Crm_Leads-LeadCreado_V1", payload, {
70
+ description: "Publica la creación de un lead.",
71
+ writes: { entities: ["lead"], fields: ["lead.nombre"] },
72
+ });
73
+ ```
74
+
75
+ Una lectura devuelve datos o lanza un error. Una publicación devuelve
76
+ `{ eventId, status }`, donde `status` es un código HTTP. Un filtro sobre datos ya
77
+ cargados es local y no requiere `read.load`.
78
+
79
+ En diseño, `ports/index.ts` usa los adapters mock; en producción se conecta
80
+ `productionRead` al GET real y `productionWrite` a la publicación/worker. No
81
+ cambies los componentes para hacer ese swap.
82
+
83
+ ## Mock-store persistente
84
+
85
+ La data mock no vive en componentes. Vive en:
86
+
87
+ - `src/prototype/mock-store/fixtures.ts`: dataset inicial;
88
+ - `src/prototype/mock-store/mock-store.ts`: estado compartido, suscripciones y
89
+ persistencia local;
90
+ - `src/prototype/ports/mock-read.ts`: lecturas genéricas por metadata `reads`;
91
+ - `src/prototype/ports/mock-write.ts`: publicaciones, receipt y mutación genérica
92
+ por metadata `writes`.
93
+
94
+ Los datos deben ser sintéticos, explícitos y deterministas. Usa RUT, teléfonos,
95
+ fechas, CLP y correos con formato chileno. Incrementa `datasetVersion` cuando
96
+ cambies fixtures persistibles y ejecuta `pnpm check:prototype`.
97
+
98
+ ## Comandos del registry
99
+
100
+ ```bash
101
+ npx create-lexy view --list # catálogo completo
102
+ npx create-lexy view button # ver un componente antes de instalar
103
+ npx create-lexy view button --installed # ver la copia local
104
+ npx create-lexy add button # instalar (resuelve dependencias internas)
105
+ npx create-lexy add button --overwrite # re-instalar pisando cambios locales
106
+ npx create-lexy diff button # copia local vs registry vigente (exit 1 si difiere)
107
+ npx create-lexy doctor # salud del proyecto + drift de lo instalado
108
+ npx create-lexy doctor --strict # las ediciones locales también fallan (CI)
109
+ ```
110
+
111
+ ## Crear un proyecto nuevo
112
+
113
+ ```bash
114
+ npx create-lexy create mi-app # interactivo
115
+ npx create-lexy create mi-app -t feature -w crm # automatizado (feature, CRM)
116
+ npx create-lexy create mi-app -t layer -w cliente # automatizado (layer, cliente)
117
+ ```
118
+
119
+ ## Arquitecturas y paths
120
+
121
+ El import local depende de la arquitectura de `.lexy`. El patrón exacto vive en
122
+ `componentImportPattern` del manifest; estos son los dos casos:
123
+
124
+ ### Feature
125
+
126
+ - Componentes: `src/shared/components/base`
127
+ - Hooks: `src/shared/hooks` · Servicios: `src/shared/services` · Utilidades: `src/shared/lib` · Vistas: `src/features`
128
+ - Helper `cn`: `@/shared/lib/utils/cn`
129
+ - Import: `import { Button } from "@/shared/components/base/Button";`
130
+
131
+ ### Layer
132
+
133
+ - Componentes: `src/components/base`
134
+ - Hooks: `src/hooks` · Servicios: `src/services` · Utilidades: `src/lib` · Vistas: `src/views`
135
+ - Helper `cn`: `@/lib/utils/cn`
136
+ - Import: `import { Button } from "@/components/base/Button";`
137
+
138
+ ## Qué hace `add` exactamente
139
+
140
+ - Resuelve el componente y sus **dependencias internas transitivas** (por ejemplo, un combobox trae también su popover y su botón).
141
+ - Copia los archivos a la ruta de componentes definida en `.lexy`, **incluida la guía `{Component}.md`** (viaja junto al código para que un agente la lea al trabajar).
142
+ - Adapta el import del helper `cn` a la arquitectura del proyecto.
143
+ - Instala **solo** las dependencias npm que el proyecto aún no tiene.
144
+ - Anota la versión en `.lexy` → `installed`, para que `diff`/`doctor` puedan razonar el drift.
145
+ - Si tu copia local tiene cambios, **pide confirmación** antes de sobrescribir (`--overwrite` para CI/agentes).
146
+
147
+ ## Editar componentes instalados
148
+
149
+ Editar la copia local es el flujo normal del modelo — no hay "internals" prohibidos.
150
+ Reglas de oficio:
151
+
152
+ - Mantén `pnpm lint:geometry` en verde: el contrato de geometría se fiscaliza en cada repo.
153
+ - Actualiza el `{Component}.md` local si cambias la API o el comportamiento.
154
+ - La divergencia queda visible en `doctor` como _"editado localmente"_: es información, no error. Si más adelante quieres volver a la versión del registry, `add --overwrite`.
155
+
156
+ ## Diagnosticar el proyecto
157
+
158
+ Comando de solo lectura. No modifica ni instala nada:
159
+
160
+ ```bash
161
+ npx create-lexy doctor
162
+ ```
163
+
164
+ Verifica:
165
+
166
+ - `.lexy` existe y es JSON válido (arquitectura, rutas, instalados).
167
+ - El theme (`src/lexy-theme.css`) y el helper `cn` están presentes.
168
+ - Por cada componente instalado: archivos presentes y su estado frente al registry vigente — **al día**, **desactualizado** (el registry avanzó; exit 1) o **editado localmente** (aviso; con `--strict`, exit 1).
169
+ - La capa de IA instalada (este directorio) está completa según el manifest.
170
+
171
+ Exit code `0` si todo está OK y `1` si hay algo roto o desactualizado, por lo que sirve en CI.
172
+
173
+ ## Componentes disponibles
174
+
175
+ El catálogo vivo es el registry: `npx create-lexy view --list` lo consulta
176
+ (no se duplica aquí ni en el manifest — así no puede driftar). La guía de uso de
177
+ cada componente es su companion doc `{Component}.md`: instalada junto al
178
+ componente, o visible con `view` antes de instalar.
179
+
180
+ Regla rápida para componer: para sidebar, header, diálogo y acordeón usa las
181
+ versiones **data-driven** (`AppSidebar`, `AppHeaderBar`, `AppDialog`,
182
+ `AppAccordion`); para el layout de una app interna, `SidebarProvider` +
183
+ `AppSidebar` + `SidebarInset`. Las primitivas equivalentes son para
184
+ composiciones a medida.
185
+
186
+ ## Reglas para agentes de IA
187
+
188
+ 1. Antes de implementar una interfaz, descubre los componentes con `npx create-lexy view --list` y revisa los elegidos con `view {component}`.
189
+ 2. Si un componente existe en el registry, **instálalo** (`add`) — no lo reescribas a mano ni lo reemplaces con HTML/CSS propio.
190
+ 3. La ausencia de componentes locales no significa ausencia de sistema; significa que aún no los has instalado.
191
+ 4. Usa el import local que corresponde a `.lexy` (`componentImportPattern` del manifest). No inventes rutas.
192
+ 5. Edita los componentes instalados cuando el diseño lo pida — esa libertad es el modelo. Mantén `lint:geometry` en verde y el `{Component}.md` al día.
193
+ 6. Si necesitas un componente que no está en el catálogo, confirma con `view` que no hay equivalente y créalo siguiendo los patrones del proyecto (o propónlo para el registry).
194
+ 7. Todo lo de **diseño** (qué componente elegir y por qué, cliente vs CRM, densidad y espaciado, accesibilidad, jerarquía y landmarks, UX writing, progressive disclosure) tiene su fuente de verdad en las pautas de `ai/pautas/`. Léelas según el tema; no infieras estas reglas desde este documento ni desde el manifest.
195
+ 8. Antes de cerrar, valida contra el `## Criterio final` de `ai/IMPLEMENTATION-PROTOCOL.md`: contratos de experiencia, técnico, accesibilidad, jerarquía, microcopy y arquitectura de información.
196
+ 9. No agregues a la UI datos que no estén declarados en el contrato cuando
197
+ `prototype.enabled` sea `true`.
198
+ 10. No pegues fixtures mock en componentes; usa `prototype.fixturesPath`.
199
+ 11. No llames evento a una lectura remota; usa `read.load`.
200
+ 12. No llames al backend directamente desde componentes; conserva el límite de
201
+ los ports.
202
+
203
+ ## Cuando implementes desde Figma
204
+
205
+ La referencia visual es un **contrato de patrón**. Las reglas de lectura (qué
206
+ observar y conservar) viven en
207
+ [ai/pautas/arquitectura-informacion-ux.md](pautas/arquitectura-informacion-ux.md)
208
+ («Referencias visuales») y el detalle de implementación en
209
+ [ai/IMPLEMENTATION-PROTOCOL.md](IMPLEMENTATION-PROTOCOL.md) («Cuando hay
210
+ referencia Figma»). En corto: identifica el patrón antes de escribir código,
211
+ materialízalo con componentes del registry y no agregues secciones que la
212
+ referencia no muestra.
213
+
214
+ ## Retirar la infraestructura de IA
215
+
216
+ Los archivos de contexto de IA no son necesarios para ejecutar la aplicación y
217
+ pueden retirarse antes de producción. El comando exacto y la verificación de
218
+ referencias residuales viven **solo** en
219
+ [ai/PRODUCTION-CLEANUP.md](PRODUCTION-CLEANUP.md); síguelo desde ahí para no
220
+ borrar de más ni de menos.
@@ -0,0 +1,243 @@
1
+ # Arquitectura de informacion y carga visual
2
+
3
+ Esta pauta guía cómo ordenar información en interfaces Lexy para que sean claras, progresivas y fáciles de leer. Úsala junto con la filosofía de cliente o CRM y la guía de UX writing.
4
+
5
+ ## Regla base
6
+
7
+ La interfaz no debe mostrar todo al mismo tiempo para parecer completa. Debe mostrar primero lo que permite avanzar, y revelar el resto cuando el usuario lo necesita.
8
+
9
+ Una buena pantalla Lexy tiene:
10
+
11
+ - Un foco principal evidente.
12
+ - Un título que explica la tarea o el estado, no una etiqueta decorativa.
13
+ - Secciones agrupadas por decisión o acción.
14
+ - Jerarquía visual suficiente para escanear sin leer todo.
15
+ - Contenido secundario disponible, pero no compitiendo con la acción principal.
16
+ - Accesibilidad resuelta desde la estructura: orden lógico, etiquetas claras, foco visible y estados que no dependan solo del color.
17
+
18
+ ## Jerarquía
19
+
20
+ La jerarquía ayuda a que la persona entienda dónde está, qué es importante y qué puede hacer. Debe existir en dos niveles al mismo tiempo:
21
+
22
+ - **Jerarquía visual:** tamaño, peso, espaciado, contraste, color, forma, iconos, movimiento y posición.
23
+ - **Jerarquía semántica:** orden del HTML, landmarks, headings, labels y foco.
24
+
25
+ La jerarquía visual y la semántica deben coincidir. Si la pantalla se ve como un flujo claro pero el HTML se lee desordenado, la interfaz falla para tecnologías asistivas y también aumenta el riesgo de errores de implementación.
26
+
27
+ ### Feedback y disponibilidad
28
+
29
+ Usa feedback visual, textual y de interacción para mostrar qué está disponible:
30
+
31
+ - Labels visibles para controles y campos.
32
+ - Estados claros: activo, seleccionado, deshabilitado, error, éxito, pendiente.
33
+ - Iconos como apoyo, no como única explicación.
34
+ - Color con texto o forma adicional cuando comunica estado.
35
+ - Feedback de foco, hover, active y loading cuando corresponda.
36
+
37
+ ### Reducir complejidad
38
+
39
+ Cada botón, imagen, icono, línea de texto, card y separador aumenta la complejidad de la UI. Antes de agregar algo, pregunta:
40
+
41
+ - ¿Ayuda a ubicar a la persona?
42
+ - ¿Aclara qué es importante?
43
+ - ¿Permite actuar o decidir?
44
+ - ¿Reduce riesgo, error o ansiedad?
45
+
46
+ Si no cumple ninguna, elimínalo.
47
+
48
+ ### Niveles de importancia
49
+
50
+ Para expresar importancia relativa:
51
+
52
+ - Coloca acciones principales arriba o abajo de la pantalla, en zonas fáciles de encontrar.
53
+ - Mantén juntas las acciones relacionadas.
54
+ - Agrupa elementos de jerarquía similar.
55
+ - Evita que acciones secundarias compitan con la acción principal.
56
+ - Usa contraste, tamaño y espaciado para dirigir la mirada, no solo color.
57
+
58
+ ### Landmarks y headings web
59
+
60
+ Las tecnologías asistivas transforman la pantalla en una experiencia lineal. Por eso el orden del DOM, landmarks y headings importan tanto como el layout visual.
61
+
62
+ Usa estos landmarks cuando correspondan:
63
+
64
+ - `nav`: listas o grupos de navegación. Si hay más de uno, usa `aria-label` para diferenciarlos.
65
+ - `search`: búsqueda principal o contextual.
66
+ - `main`: contenido principal de la página. Debe haber solo uno.
67
+ - `header`: cabecera o banner repetido de la página.
68
+ - `aside`: contenido complementario que puede entenderse por separado.
69
+ - `footer`: información final o legal del sitio.
70
+ - `section`: región importante dentro de `main`, etiquetada con heading claro.
71
+ - `form`: bloque que captura o envía información.
72
+
73
+ Reglas:
74
+
75
+ - Un solo `h1` para el propósito principal de la página.
76
+ - Usa `h2` para secciones principales y `h3` para subsecciones.
77
+ - No saltes niveles de heading solo para conseguir un tamaño visual.
78
+ - El orden del DOM debe seguir el orden de lectura esperado.
79
+ - En grillas, el orden debe leerse de izquierda a derecha y de arriba abajo.
80
+ - Si una región es importante, su nombre debe ser claro para navegación asistiva.
81
+
82
+ ## Accesibilidad y carga cognitiva
83
+
84
+ La accesibilidad ayuda a todas las personas, no solo a quienes tienen una discapacidad permanente. Una persona puede estar con baja visión, usando lector de pantalla, con una lesión temporal, con poca concentración, en una pantalla pequeña o bajo presión.
85
+
86
+ Diseña la arquitectura de información considerando:
87
+
88
+ - Orden de lectura lógico, de arriba hacia abajo y de lo general a lo específico.
89
+ - Encabezados reales y jerárquicos, no texto grande usado como decoración.
90
+ - Agrupación con `fieldset`/`legend` o secciones claras cuando los campos pertenecen a una misma decisión.
91
+ - Acciones cercanas al contenido que afectan.
92
+ - Ayuda contextual en el punto de necesidad.
93
+ - Estados, errores y avisos expresados con texto además de color.
94
+ - Progressive disclosure que reduzca carga cognitiva sin esconder información crítica.
95
+
96
+ Honrar necesidades individuales significa permitir que la interfaz tolere distintas formas de uso: teclado, zoom, lectura pausada, revisión antes de enviar, cambios de preferencia y corrección sin perder trabajo.
97
+
98
+ ## Evita eyebrows
99
+
100
+ Evita usar eyebrows como recurso por defecto. Un eyebrow es una etiqueta pequeña arriba del título, por ejemplo `PASO 1`, `NUEVA SOLICITUD`, `CLIENTE`, `LEGAL TECH`, `RESUMEN`.
101
+
102
+ En Lexy suelen agregar ruido porque:
103
+
104
+ - Repiten información que ya puede decir el título.
105
+ - Hacen que la pantalla se sienta más marketera que útil.
106
+ - Crean una capa visual extra antes del contenido real.
107
+ - Empujan a usar jerarquía decorativa en vez de jerarquía funcional.
108
+
109
+ ### Qué usar en vez de eyebrows
110
+
111
+ Prefiere:
112
+
113
+ - Títulos informativos: `Completa tus datos para revisar tu caso`.
114
+ - Subtítulos con próximo paso: `Usaremos esta información para preparar la primera revisión`.
115
+ - Estados integrados al componente: badges, tags, status dots o texto de estado cerca del dato.
116
+ - Breadcrumbs o tabs cuando la navegación lo requiere.
117
+ - Stepper o progreso cuando el flujo realmente tiene pasos.
118
+
119
+ ### Cuándo sí puede existir una etiqueta superior
120
+
121
+ Solo úsala si cumple una función real:
122
+
123
+ - Estado operativo: `En revisión`, `Pendiente`, `Vence hoy`.
124
+ - Ubicación en un flujo: `Paso 2 de 4`, si el paso ayuda a orientarse.
125
+ - Tipo de caso o categoría que cambia decisiones: `Deuda`, `Despido`, `Salud`.
126
+
127
+ Si la etiqueta no cambia comprensión, prioridad o acción, elimínala.
128
+
129
+ ## Progressive disclosure
130
+
131
+ Progressive disclosure significa mostrar primero lo esencial y revelar detalles, excepciones o acciones secundarias cuando sean necesarias.
132
+
133
+ Úsalo para manejar carga visual sin esconder información importante.
134
+
135
+ ### Orden recomendado
136
+
137
+ 1. Qué está pasando o qué debe hacer la persona.
138
+ 2. Por qué importa o qué pasará después.
139
+ 3. Acción principal.
140
+ 4. Campos o datos mínimos para avanzar.
141
+ 5. Información secundaria agrupada.
142
+ 6. Ayuda contextual, detalles legales, ejemplos o excepciones.
143
+
144
+ ### Patrones útiles
145
+
146
+ - Pasos cortos para flujos largos.
147
+ - Secciones colapsables para detalles no críticos.
148
+ - Tabs cuando hay categorías pares que no se necesitan ver al mismo tiempo.
149
+ - Dialog o sheet para acciones puntuales que no deben romper contexto.
150
+ - Ayuda contextual cerca del campo, no en bloques largos al inicio.
151
+ - Resúmenes progresivos: mostrar lo capturado y permitir editar por sección.
152
+
153
+ ### No ocultes
154
+
155
+ No uses progressive disclosure para esconder:
156
+
157
+ - Costos, consecuencias o riesgos.
158
+ - Errores que bloquean el avance.
159
+ - Datos necesarios para tomar una decisión.
160
+ - Próximos pasos después de enviar información.
161
+ - Plazos relevantes.
162
+
163
+ ## Referencias visuales
164
+
165
+ Si el encargo incluye Figma, screenshot o un diseño anterior, primero extrae el patrón antes de proponer mejoras.
166
+
167
+ Observa y conserva:
168
+
169
+ - Tipo de pantalla: ficha, wizard, desk, tabla, formulario, carga de documentos, detalle.
170
+ - Navegación: stepper, tabs, sidebar, header, footer o ninguna.
171
+ - Densidad: compacta, media, espaciosa.
172
+ - Contenedores: continuidad del formulario, cards, tabla, paneles, sheets.
173
+ - Posición del CTA principal.
174
+ - Ayuda: inline, tooltip, floating help, banner.
175
+ - Ancho del contenido y alineación general.
176
+
177
+ No cambies el tipo de pantalla por iniciativa propia. Si la referencia es una ficha web con stepper y una sola etapa visible, no la conviertas en una página con hero, sidebar, cards, resumen sticky o todas las etapas abiertas.
178
+
179
+ ## Patrón: ficha web cliente
180
+
181
+ Usa este patrón para formularios de antecedentes, intake legal, fichas de litigios o cualquier flujo donde una persona debe entregar datos para revisión.
182
+
183
+ Estructura recomendada:
184
+
185
+ 1. Stepper superior cuando hay varias etapas.
186
+ 2. Fondo calmo y continuo.
187
+ 3. Contenido principal en una columna de ancho controlado.
188
+ 4. Título de la etapa, no frase de marketing.
189
+ 5. Texto breve de contexto.
190
+ 6. Nota de obligatorios si aplica.
191
+ 7. Campos agrupados por relación natural.
192
+ 8. CTA principal al final del paso.
193
+ 9. Ayuda flotante o contextual si reduce ansiedad.
194
+
195
+ Evita:
196
+
197
+ - Hero.
198
+ - Eyebrow.
199
+ - Card lateral de próximos pasos.
200
+ - Cards por cada sección del formulario.
201
+ - Iconos de sección como decoración.
202
+ - Mostrar deudas, bienes, sociedades y confirmación en la misma pantalla si el patrón tiene pasos.
203
+
204
+ ## Cliente vs CRM
205
+
206
+ ### Interfaces de cliente
207
+
208
+ Prioriza calma y claridad:
209
+
210
+ - Una idea principal por pantalla o sección.
211
+ - Copy corto que explique el beneficio y el siguiente paso.
212
+ - Menos campos visibles cuando el flujo pueda dividirse.
213
+ - Ayuda contextual que reduzca ansiedad.
214
+ - Confirmaciones claras después de enviar información.
215
+
216
+ Evita dashboards densos, muchas tarjetas compitiendo y bloques largos de explicación antes de la acción.
217
+
218
+ ### Interfaces CRM o internas
219
+
220
+ Prioriza tarea y escaneo:
221
+
222
+ - La información que se consulta junta debe vivir junta.
223
+ - Muestra más densidad solo si está jerarquizada.
224
+ - Usa tablas, listas, filtros y estados visibles cuando aceleran el trabajo.
225
+ - Lleva acciones frecuentes cerca del dato o fila correspondiente.
226
+ - Oculta detalles secundarios, no acciones frecuentes.
227
+
228
+ Evita esconder contexto operativo en modales innecesarios o colapsar información que el abogado necesita comparar.
229
+
230
+ ## Checklist UX antes de entregar
231
+
232
+ 1. ¿El título dice la tarea, estado o beneficio real sin necesitar un eyebrow?
233
+ 2. ¿La primera pantalla deja claro qué hacer y qué pasará después?
234
+ 3. ¿Cada sección agrupa información que se usa junta?
235
+ 4. ¿La información secundaria está disponible sin competir con lo principal?
236
+ 5. ¿Hay algún bloque, tarjeta o etiqueta que solo decora? Elimínalo.
237
+ 6. ¿Los campos aparecen en el orden en que la persona puede responderlos?
238
+ 7. ¿Los errores y estados aparecen cerca de donde se corrigen?
239
+ 8. ¿La acción principal es visible sin buscarla?
240
+ 9. ¿La pantalla se puede escanear en diagonal?
241
+ 10. ¿La composición reduce carga visual sin esconder consecuencias importantes?
242
+ 11. ¿El orden del HTML coincide con el orden visual y de lectura?
243
+ 12. ¿Hay landmarks y headings suficientes para navegar la página con lector de pantalla?