Files
roi-theme/_planificacion/01-design-system/02-FILOSOFIA-DE-DISENO.md
FrankZamora 0f6387ab46 refactor: reorganizar openspec y planificacion con spec recaptcha
- renombrar openspec/ a _openspec/ (carpeta auxiliar)
- mover specs de features a changes/
- crear specs base: arquitectura-limpia, estandares-codigo, nomenclatura
- migrar _planificacion/ con design-system y roi-theme-template
- agregar especificacion recaptcha anti-spam (proposal, tasks, spec)
- corregir rutas y referencias en todas las specs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 15:30:45 -06:00

200 lines
4.5 KiB
Markdown

# 🎯 FILOSOFÍA DE DISEÑO
## Principios Clave
### 1. Consistencia Visual
Todos los componentes deben verse parte del mismo sistema.
**Implementación:**
- Paleta de colores unificada (Navy + Orange)
- Tipografía consistente (Poppins)
- Iconos del mismo sistema (Bootstrap Icons)
- Espaciado coherente entre componentes
### 2. Espaciado Compacto
Diseño eficiente que maximiza el espacio sin sacrificar usabilidad.
**Implementación:**
- Uso de `.form-control-sm` y `.btn-sm`
- Padding ajustado en cards (`.p-3`)
- Margins reducidos entre campos (`.mb-2`)
- Grid compacto con `.g-3`
### 3. Jerarquía Clara
Uso de colores, tamaños y pesos para guiar la atención.
**Jerarquía visual:**
1. Header del Tab (Navy gradient + Orange icon)
2. Títulos de Card (Navy + Bold)
3. Labels de Campos (Neutral + Semibold + Orange icon)
4. Texto de ayuda (Muted + Small)
### 4. Feedback Instantáneo
Vista previa en tiempo real de todos los cambios.
**Implementación:**
- Event listeners en todos los campos
- Función `updatePreview()` conectada
- Preview con HTML idéntico al front-end
- Sin delay en la actualización
### 5. Mobile-First
Diseño responsive que funciona en todos los dispositivos.
**Implementación:**
- Grid con breakpoint `col-lg-6`
- Stack vertical en mobile (<992px)
- Headers responsive con `flex-wrap`
- Botones full-width en mobile
---
## Características Comunes
Todos los componentes admin DEBEN incluir:
-**Vista previa en tiempo real**
- Card con border-left orange
- HTML idéntico al front-end
- Botones Desktop/Mobile
-**Validación de formularios**
- Campos requeridos marcados con `*`
- Validación en JavaScript
- Mensajes de error claros
-**Contador de caracteres en campos de texto**
- Display: `<span id="fieldCount">0</span>/250`
- Progress bar orange
- Actualización en tiempo real
-**Botón de reseteo a valores por defecto**
- En el header del tab
- Confirmación con `confirm()`
- Restaura todos los campos
-**Tooltips informativos**
- Links a documentación externa
- Hints con `<small class="text-muted">`
- Badges para información adicional
-**Iconos descriptivos en cada campo**
- Color orange (#FF8600)
- Bootstrap Icons
- Clase `.me-2` para espaciado
-**Feedback visual inmediato**
- Cambios reflejados sin delay
- Console.logs informativos
- Notificaciones de guardado
---
## Flujo de Interacción
### 1. Carga Inicial
```
Usuario abre admin panel
loadConfig() carga valores guardados
updatePreview() renderiza preview
Panel listo para edición
```
### 2. Edición de Campo
```
Usuario modifica campo
Event listener detecta cambio
updatePreview() actualiza preview
saveConfig() guarda en localStorage (opcional)
```
### 3. Guardado Final
```
Usuario confirma cambios (si hay botón guardar)
validateForm() verifica datos
saveConfig() guarda en config.json
showNotification() confirma guardado
```
### 4. Reset
```
Usuario presiona "Restaurar valores por defecto"
confirm() pide confirmación
resetToDefaults() aplica valores default
updatePreview() actualiza preview
saveConfig() guarda cambios
```
---
## Principios de Accesibilidad
### Labels y Formularios
- Todos los inputs tienen `<label for="id">`
- Labels descriptivos y claros
- Campos requeridos marcados visualmente
### Navegación por Teclado
- Tab order lógico
- Focus visible en elementos interactivos
- Enter para submit (si aplica)
### Contraste de Color
- Texto principal: #495057 sobre fondo blanco (AAA)
- Texto en headers: Blanco sobre navy (#0E2337) (AAA)
- Links: Orange (#FF8600) con hover (#FF6B35)
### ARIA Attributes
- Progress bars con `role="progressbar"`, `aria-valuenow`, etc.
- Button groups con `role="group"`
- Inputs con `aria-label` o `<label>`
---
## Mensajes y Comunicación
### Console.logs
```javascript
// ✅ USAR para debugging
console.log('✅ [ComponentName] Admin Panel cargado');
console.log('💾 Configuración guardada:', config);
console.log('📂 Configuración cargada:', config);
console.log('🔄 Valores por defecto restaurados');
// ❌ NO USAR en producción excesivamente
console.log('Campo actualizado'); // Demasiado verboso
```
### Notificaciones al Usuario
```javascript
// Success
showNotification('Cambios guardados', 'success');
// Error
showNotification('Error al guardar cambios', 'error');
// Confirmaciones
if (!confirm('¿Estás seguro de restaurar los valores por defecto?')) {
return;
}
```
---
## Volver al Índice
[← Volver al README](README.md)