Sistema de Diseno - MedTime
Identificador: MTS-UI-DESIGN-SYSTEM
Version: 1.0.0
Fecha: 2025-12-05
Autor: SpecQueen (Consolidacion FASE 5)
Estado: Aprobado
1. Proposito
Este documento define el Sistema de Diseno oficial de MedTime. Establece los tokens de diseno, paletas de colores, tipografia, espaciado, iconografia y grid system que garantizan consistencia visual y funcional en toda la aplicacion.
2. Principios de Diseno
2.1. Principios Fundamentales
| Principio |
Descripcion |
Aplicacion |
| Claridad |
Informacion medica debe ser inequivoca |
Sin ambiguedad en alertas, dosis, horarios |
| Confianza |
Transmitir profesionalismo y seguridad |
Colores sobrios, tipografia legible |
| Control |
Usuario siempre en control de sus datos |
Acciones explicitas, confirmaciones |
| Accesibilidad |
Usable por todos, sin excepciones |
WCAG 2.1 AA minimo |
| Eficiencia |
Tareas criticas con minimo esfuerzo |
One-tap actions, smart defaults |
2.2. Personalidad de Marca
MedTime es:
- Profesional pero accesible
- Serio sin ser frio
- Confiable y predecible
- Respetuoso del tiempo del usuario
- Empoderador, no paternalista
MedTime NO es:
- Gamificado en exceso (salud es seria)
- Infantil o condescendiente
- Alarmista innecesariamente
- Complejo o abrumador
3. Tokens de Diseno
3.1. Colores Primarios
| Token |
Valor Hex |
RGB |
Uso |
primary.main |
#2196F3 |
33, 150, 243 |
Acciones principales, links, estados activos |
primary.light |
#64B5F6 |
100, 181, 246 |
Hover states, fondos suaves |
primary.dark |
#1976D2 |
25, 118, 210 |
Pressed states, texto sobre fondo claro |
primary.contrast |
#FFFFFF |
255, 255, 255 |
Texto sobre primary |
3.2. Colores Secundarios
| Token |
Valor Hex |
RGB |
Uso |
secondary.main |
#9C27B0 |
156, 39, 176 |
Tier Perfect, acciones secundarias |
secondary.light |
#CE93D8 |
206, 147, 216 |
Fondos secundarios |
secondary.dark |
#7B1FA2 |
123, 31, 162 |
Pressed states |
secondary.contrast |
#FFFFFF |
255, 255, 255 |
Texto sobre secondary |
3.3. Colores Semanticos
| Token |
Valor Hex |
Ratio vs White |
Uso |
success.main |
#4CAF50 |
3.0:1 |
Tomas completadas, confirmaciones |
success.dark |
#388E3C |
5.1:1 |
Texto success |
success.light |
#C8E6C9 |
- |
Backgrounds success |
warning.main |
#FF9800 |
3.0:1 |
Alertas moderadas, inventario bajo |
warning.dark |
#F57C00 |
3.5:1 |
Texto warning |
warning.light |
#FFE0B2 |
- |
Backgrounds warning |
error.main |
#F44336 |
4.0:1 |
Errores, alertas criticas |
error.dark |
#D32F2F |
5.0:1 |
Texto error |
error.light |
#FFCDD2 |
- |
Backgrounds error |
info.main |
#2196F3 |
4.5:1 |
Informacion general |
info.dark |
#1976D2 |
5.5:1 |
Texto info |
info.light |
#BBDEFB |
- |
Backgrounds info |
3.4. Colores Neutrales
| Token |
Valor Hex |
Uso |
neutral.50 |
#FAFAFA |
Backgrounds claros |
neutral.100 |
#F5F5F5 |
Cards filled, dividers light |
neutral.200 |
#EEEEEE |
Borders disabled |
neutral.300 |
#E0E0E0 |
Borders, dividers |
neutral.400 |
#BDBDBD |
Placeholder text, disabled icons |
neutral.500 |
#9E9E9E |
Secondary text light |
neutral.600 |
#757575 |
Secondary text, icons |
neutral.700 |
#616161 |
Body text secundario |
neutral.800 |
#424242 |
Body text, headers |
neutral.900 |
#212121 |
Primary text, headings |
4. Paleta por Severidad (Interacciones Medicamentosas)
4.1. Escala de Severidad
| Nivel |
Color Principal |
Background |
Border |
Icono |
| CONTRAINDICADO |
#D32F2F |
#FFEBEE |
2dp solid |
error |
| SERIO |
#F57C00 |
#FFF3E0 |
2dp solid |
warning |
| MODERADO |
#FFC107 |
#FFFDE7 |
1dp solid |
info |
| MENOR |
#4CAF50 |
#E8F5E9 |
1dp dashed |
check |
4.2. Guia de Aplicacion
CONTRAINDICADO (Critical):
- Modal bloqueante obligatorio
- Border pulsing (si reduce motion = false)
- Requiere accion explicita para continuar
- Icono: error (X en circulo)
SERIO (Serious):
- Modal importante, dismissable con confirmacion
- Border solido naranja oscuro
- Recomendacion de consultar medico
- Icono: warning (triangulo)
MODERADO (Moderate):
- Card inline expandible
- Border amarillo
- Informativo, usuario decide
- Icono: info (i en circulo)
MENOR (Minor):
- Texto informativo simple
- Border verde punteado (opcional)
- Solo informativo
- Icono: check (opcional)
5. Paleta por Tier de Suscripcion
5.1. Colores de Tier
| Tier |
Color Principal |
Badge BG |
Text |
Acento |
| Free |
#9E9E9E |
#F5F5F5 |
#616161 |
neutral.500 |
| Pro |
#2196F3 |
#E3F2FD |
#1976D2 |
primary.main |
| Perfect |
#9C27B0 |
#F3E5F5 |
#7B1FA2 |
secondary.main |
5.2. Indicadores de Tier en UI
Badge de Tier:
+------------------------------------------+
| [Crown] PERFECT | <- Solo Perfect tiene crown
| [Star] PRO | <- Pro tiene star
| [O] FREE | <- Free tiene circulo vacio
+------------------------------------------+
Uso en cards de comparacion:
- Border del tier actual: 2dp solid [tier color]
- "MAS POPULAR" ribbon: secondary.main background
Paywall indicators:
- Icono de lock en features bloqueadas
- Tooltip con "Disponible en Pro/Perfect"
- Link a pantalla de upgrade
5.3. Feature Availability Visual
Feature disponible:
[v] Texto de feature <- Check en success.main
Feature no disponible:
[x] Texto de feature (grayed) <- X en neutral.400, texto opacity 50%
Feature limitada:
[~] Hasta 3 medicamentos <- Tilde en warning.main
6. Tipografia
6.1. Font Family
iOS:
- Primary: SF Pro Display (headings)
- Secondary: SF Pro Text (body)
- Monospace: SF Mono (codes, PIN)
Android:
- Primary: Roboto (all)
- Monospace: Roboto Mono (codes, PIN)
Fallbacks:
- System font stack
- -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial
6.2. Escala Tipografica
| Token |
Size |
Weight |
Line Height |
Uso |
display.large |
57sp |
400 |
64sp |
Hero sections (raro) |
display.medium |
45sp |
400 |
52sp |
Titulos de seccion principal |
display.small |
36sp |
400 |
44sp |
Stats grandes |
headline.large |
32sp |
400 |
40sp |
Titulos de pantalla |
headline.medium |
28sp |
400 |
36sp |
Titulos de seccion |
headline.small |
24sp |
400 |
32sp |
Subtitulos destacados |
title.large |
22sp |
500 |
28sp |
Card headers |
title.medium |
16sp |
500 |
24sp |
List item titles |
title.small |
14sp |
500 |
20sp |
Labels importantes |
body.large |
16sp |
400 |
24sp |
Body principal |
body.medium |
14sp |
400 |
20sp |
Body secundario |
body.small |
12sp |
400 |
16sp |
Captions, helpers |
label.large |
14sp |
500 |
20sp |
Button labels |
label.medium |
12sp |
500 |
16sp |
Chips, tabs |
label.small |
11sp |
500 |
16sp |
Timestamps, badges |
6.3. Text Scaling Support
| Base Size |
100% |
150% |
200% |
| 12sp |
12sp |
18sp |
24sp |
| 14sp |
14sp |
21sp |
28sp |
| 16sp |
16sp |
24sp |
32sp |
| 20sp |
20sp |
30sp |
40sp |
REQUISITOS:
- Soportar escalado hasta 200%
- Texto hace wrap, no truncate
- Contenedores se expanden verticalmente
- No scroll horizontal a 320dp de ancho
- Respeta preferencias de sistema
7. Espaciado
7.1. Escala de Espaciado
| Token |
Valor |
Uso |
spacing.none |
0dp |
Sin espacio |
spacing.xs |
4dp |
Micro-espacios, entre iconos y texto |
spacing.sm |
8dp |
Padding interno de chips, badges |
spacing.md |
16dp |
Padding estandar de cards, inputs |
spacing.lg |
24dp |
Margenes entre secciones |
spacing.xl |
32dp |
Margenes de pantalla |
spacing.2xl |
48dp |
Separacion de bloques mayores |
spacing.3xl |
64dp |
Hero sections |
7.2. Aplicacion de Espaciado
Pantalla:
+------------------------------------------+
| <- 16dp padding horizontal -> |
| |
| [Section 1] |
| |
| <- 24dp entre secciones -> |
| |
| [Section 2] |
| |
+------------------------------------------+
Card:
+------------------------------------------+
| <- 16dp -> <- 16dp -> |
| |
| ^ |
| 16dp |
| v |
| |
+------------------------------------------+
8. Border Radius
8.1. Escala de Radios
| Token |
Valor |
Uso |
radius.none |
0dp |
Elementos cuadrados |
radius.xs |
2dp |
Micro-elementos |
radius.sm |
4dp |
Chips, badges, small buttons |
radius.md |
8dp |
Buttons, inputs, small cards |
radius.lg |
12dp |
Cards estandar |
radius.xl |
16dp |
Bottom sheets, modales |
radius.2xl |
24dp |
Dialogs |
radius.full |
9999dp |
Circles (avatars, FABs) |
8.2. Aplicacion
Button: 8dp (radius.md)
Input: 8dp (radius.md)
Card: 12dp (radius.lg)
Bottom Sheet: 16dp top-left/right only
Modal: 24dp (radius.2xl)
Avatar: 9999dp (circle)
FAB: 9999dp (circle)
9. Elevacion y Sombras
9.1. Niveles de Elevacion
| Level |
Shadow |
Uso |
elevation.0 |
none |
Flat surfaces |
elevation.1 |
0 1dp 3dp rgba(0,0,0,0.12) |
Cards, buttons |
elevation.2 |
0 2dp 6dp rgba(0,0,0,0.16) |
Cards hover, FAB |
elevation.3 |
0 4dp 12dp rgba(0,0,0,0.20) |
Bottom sheets |
elevation.4 |
0 8dp 24dp rgba(0,0,0,0.24) |
Modals, dialogs |
elevation.5 |
0 16dp 48dp rgba(0,0,0,0.28) |
Tooltips flotantes |
9.2. Dark Mode Considerations
En Dark Mode:
- Elevacion representada por surface color, no sombra
- elevation.0: surface.main
- elevation.1: surface + 5% white
- elevation.2: surface + 8% white
- elevation.3: surface + 11% white
- elevation.4: surface + 14% white
10. Iconografia
10.1. Sistema de Iconos
Set principal: Material Symbols
Estilo: Outlined (default), Filled (estados activos)
Tamanos: 16dp, 20dp, 24dp, 32dp, 48dp
Consideraciones:
- Iconos consistentes en toda la app
- Siempre acompanados de texto cuando sea critico
- Touch target minimo: 44x44dp (icono puede ser menor)
| Forma |
Icono |
Descripcion |
| Tableta/Pastilla |
pill |
Ovalo horizontal |
| Capsula |
capsule |
Forma capsula dos tonos |
| Liquido |
water_drop |
Gota |
| Inyeccion |
syringe |
Jeringa |
| Gotas |
eye_drops |
Gotero |
| Crema/Topico |
cream |
Tubo |
| Inhalador |
air |
Inhalador |
| Parche |
healing |
Parche cuadrado |
| Supositorio |
suppository |
Forma ojiva |
10.3. Iconos de Estado
| Estado |
Icono |
Color |
| Completado |
check_circle |
success.main |
| Pendiente |
schedule |
warning.main |
| Omitido |
cancel |
neutral.400 |
| Vencido |
error |
error.main |
| Emergencia |
emergency |
error.main |
| Pospuesto |
snooze |
info.main |
10.4. Iconos de Navegacion
| Destino |
Icono Inactivo |
Icono Activo |
| Inicio |
home_outline |
home_filled |
| Medicamentos |
medication_outline |
medication_filled |
| Agregar (+) |
add |
add |
| Calendario |
calendar_outline |
calendar_filled |
| Mas |
more_horiz |
more_horiz |
11. Grid System
11.1. Mobile Grid (< 600dp)
+------------------------------------------+
| M | Content Area | M |
+------------------------------------------+
^ ^
16dp 16dp
- Columnas: 4
- Gutter: 16dp
- Margin: 16dp
- Max content width: 100%
11.2. Tablet Grid (600-840dp)
+------------------------------------------------------+
| M | Content Area | M |
+------------------------------------------------------+
^ ^
24dp 24dp
- Columnas: 8
- Gutter: 24dp
- Margin: 24dp
- Max content width: 100%
11.3. Large Tablet / Desktop (> 840dp)
+----------------------------------------------------------------------+
| | Content Area (max 1200dp) | |
+----------------------------------------------------------------------+
^ ^
Fluid Fluid
- Columnas: 12
- Gutter: 24dp
- Margin: 24dp min
- Max content width: 1200dp
- Contenido centrado
11.4. Breakpoints
| Name |
Min Width |
Columns |
Margin |
Gutter |
| compact |
0dp |
4 |
16dp |
16dp |
| medium |
600dp |
8 |
24dp |
24dp |
| expanded |
840dp |
12 |
24dp |
24dp |
| large |
1200dp |
12 |
24dp |
24dp |
12. Motion y Animaciones
12.1. Duraciones Estandar
| Token |
Duracion |
Uso |
duration.instant |
0ms |
Cambios inmediatos |
duration.fast |
100ms |
Micro-interacciones |
duration.normal |
200ms |
Transiciones estandar |
duration.slow |
300ms |
Transiciones de pantalla |
duration.slower |
500ms |
Animaciones complejas |
12.2. Easing Curves
| Token |
Curve |
Uso |
easing.standard |
cubic-bezier(0.4, 0, 0.2, 1) |
Movimiento general |
easing.decelerate |
cubic-bezier(0, 0, 0.2, 1) |
Entradas |
easing.accelerate |
cubic-bezier(0.4, 0, 1, 1) |
Salidas |
easing.sharp |
cubic-bezier(0.4, 0, 0.6, 1) |
Movimiento rapido |
12.3. Reduce Motion Support
Cuando prefers-reduced-motion: reduce
- Transiciones de pantalla: instant o 100ms fade
- Spinners: estaticos con cambio de opacidad
- Parallax: deshabilitado
- Auto-scroll: deshabilitado
- Haptic feedback: mantenido
Deteccion:
iOS: UIAccessibility.isReduceMotionEnabled
Android: Settings.Global.ANIMATOR_DURATION_SCALE
13. Temas (Light / Dark)
13.1. Light Theme (Default)
| Surface |
Value |
| Background |
#FFFFFF |
| Surface |
#FFFFFF |
| Surface Variant |
#F5F5F5 |
| On Background |
#212121 |
| On Surface |
#212121 |
| Outline |
#E0E0E0 |
13.2. Dark Theme
| Surface |
Value |
| Background |
#121212 |
| Surface |
#1E1E1E |
| Surface Variant |
#2D2D2D |
| On Background |
#E0E0E0 |
| On Surface |
#E0E0E0 |
| Outline |
#424242 |
13.3. Semantic Colors en Dark
Los colores semanticos se ajustan para dark mode:
Error:
- Light: #D32F2F
- Dark: #EF5350 (mas claro para contraste)
Success:
- Light: #388E3C
- Dark: #66BB6A
Warning:
- Light: #F57C00
- Dark: #FFB74D
Info:
- Light: #1976D2
- Dark: #42A5F5
14. Touch Targets y Hit Areas
14.1. Tamanos Minimos
| Elemento |
Tamano Minimo |
Recomendado |
| Botones |
44x44dp |
48x48dp |
| Iconos interactivos |
44x44dp |
48x48dp |
| List items |
44dp height |
56dp height |
| Checkboxes/Radios |
44x44dp |
48x48dp |
| Links inline |
44dp height |
- |
14.2. Espaciado Entre Targets
+------------------------------------------+
| [Button 1] 8dp [Button 2] |
| ^^^ |
| Minimo 8dp entre targets |
+------------------------------------------+
Esto previene toques accidentales y cumple
con guidelines de accesibilidad.
15. Referencias
15.1. Documentos Relacionados
15.2. Referencias Externas
16. Historial de Cambios
| Version |
Fecha |
Cambios |
| 1.0.0 |
2025-12-05 |
Version inicial - Consolidacion FASE 5 |
Documento generado por SpecQueen
"Un sistema de diseno es el lenguaje comun que permite escalar sin perder identidad."