Colores
Nuestro Sistema de Diseño utiliza una paleta de colores cuidadosamente seleccionada que garantiza consistencia y accesibilidad en todas las plataformas.
Los colores de marca también componen los cuatro colourways del logomark (primary, reverse, neon y mono). Ver Logomark.
Colores Primarios
- Natura:
#00D47E- Color principal de la marca (uso limitado por alta saturación) - Forrest:
#1B434C- Color secundario de uso constante en UI- Dark Forrest:
#243838 - Light Forrest:
#E4ECE3
- Dark Forrest:
- Trust:
#FFFFFF- Blanco - Green Neon:
#C6F54F- Verde neón- Light Green Neon:
#F7F8F1
- Light Green Neon:
Natura es el color principal de la marca, pero debido a su alta saturación debe usarse con moderación (botones destacados, acentos, elementos activos). Forrest es el color de trabajo constante para interfaces, ideal para texto, navegación, bordes y elementos que requieren mayor presencia visual.
Colores Secundarios
- Lavender:
#9687F2- Lavanda- Light Lavender:
#EBE8FF
- Light Lavender:
- Sun:
#FF7834- Naranja- Light Sun:
#FFDECC
- Light Sun:
- Sky:
#75DBD2- Celeste- Light Sky:
#D6F5F2
- Light Sky:
Colores Semánticos
- Success:
#C6F54F- Acciones exitosas (Green Neon)- Success Light:
#F7F8F1
- Success Light:
- Warning:
#FF7834- Advertencias (Sun)- Warning Light:
#FFDECC
- Warning Light:
- Error:
#F54F4F- Errores- Error Light:
#FFDDDD
- Error Light:
- Info:
#9687F2- Información (Lavender)- Info Light:
#EBE8FF
- Info Light:
Colores Neutros (Grises)
- Gray 600:
#384152- Más oscuro (títulos) - Gray 500:
#6B7380- Call to actions - Gray 400:
#9CA2AE- Párrafos - Gray 300:
#E1E8F0- Bordes de tarjetas - Gray 200:
#E6E7EB- Fondos - Gray 100:
#F6F6F6- Más claro (fondos)
Colores de Superficie (Elevación)
Cuatro niveles de superficie (--bg-0dp a --bg-3dp) con valores propios para modo claro y oscuro; usa el nivel según el rol del elemento, no por luminosidad.
Modo Claro
- bg-0dp:
#f5fafb- Fondo base (nivel más bajo) - bg-1dp:
#ffffff- Tarjetas, superficies elevadas - bg-2dp:
#f3f3f3- Modales, diálogos - bg-3dp:
#e8e8e8- Menús desplegables, tooltips
Modo Oscuro
- bg-0dp:
#1e1e1e- Fondo base (nivel más bajo) - bg-1dp:
#303030- Tarjetas, superficies elevadas - bg-2dp:
#3e3e3e- Modales, diálogos - bg-3dp:
#272727- Menús desplegables, tooltips
Usa bg-0dp para el fondo principal de la aplicación, bg-1dp para tarjetas y paneles, bg-2dp para elementos flotantes como modales, y bg-3dp para menús y tooltips. Las variables cambian automáticamente entre modo claro y oscuro.
Colores de Formularios
Tokens específicos para elementos de formulario que mantienen consistencia entre modo claro y oscuro.
Modo Claro
- input-bg:
var(--bg-1dp)- Fondo de inputs - input-border:
#c3c3c3- Borde de inputs
Modo Oscuro
- input-bg:
var(--bg-1dp)- Fondo de inputs (se adapta automáticamente) - input-border:
#616161- Borde de inputs
Uso
- CSS/HTML
- Angular
- Flutter
Variables CSS
:root {
/* Colores Primarios */
--color-forrest: #1B434C;
--color-dark-forrest: #243838;
--color-light-forrest: #E4ECE3;
--color-natura: #00D47E;
--color-trust: #FFFFFF;
--color-green-neon: #C6F54F;
--color-light-green-neon: #F7F8F1;
/* Colores Secundarios */
--color-lavender: #9687F2;
--color-light-lavender: #EBE8FF;
--color-sun: #FF7834;
--color-light-sun: #FFDECC;
--color-sky: #75DBD2;
--color-light-sky: #D6F5F2;
/* Colores Semánticos */
--color-success: #C6F54F;
--color-success-light: #F7F8F1;
--color-warning: #FF7834;
--color-warning-light: #FFDECC;
--color-error: #F54F4F;
--color-error-light: #FFDDDD;
--color-info: #9687F2;
--color-info-light: #EBE8FF;
/* Grises */
--color-gray-600: #384152;
--color-gray-500: #6B7380;
--color-gray-400: #9CA2AE;
--color-gray-300: #E1E8F0;
--color-gray-200: #E6E7EB;
--color-gray-100: #F6F6F6;
/* Superficie / Elevación */
--bg-0dp: #f5fafb; /* Fondo base */
--bg-1dp: #ffffff; /* Tarjetas */
--bg-2dp: #f3f3f3; /* Modales */
--bg-3dp: #e8e8e8; /* Menús, tooltips */
/* Formularios */
--input-bg: var(--bg-1dp);
--input-border: #c3c3c3;
--select-bg: var(--bg-1dp);
}
/* Modo Oscuro */
body.scheme-dark {
--bg-0dp: #1e1e1e;
--bg-1dp: #303030;
--bg-2dp: #3e3e3e;
--bg-3dp: #272727;
--input-border: #616161;
}
Ejemplos de uso
/* Usa variables CSS de WebFoundation */
.my-component {
background-color: var(--color-natura);
border-color: var(--color-forrest);
color: var(--color-gray-600);
}
.success-message {
background-color: var(--color-success-light);
color: var(--color-success);
border: 1px solid var(--color-success);
}
/* Usar colores semánticos */
.error-box {
background-color: var(--color-error-light);
border: 1px solid var(--color-error);
color: var(--color-error);
}
/* Usar colores secundarios */
.info-panel {
background-color: var(--color-light-lavender);
color: var(--color-lavender);
}
/* Usar tokens de superficie */
.card {
background-color: var(--bg-1dp);
border: 1px solid var(--color-gray-300);
}
.modal {
background-color: var(--bg-2dp);
}
.dropdown-menu {
background-color: var(--bg-3dp);
}
/* Formularios - se adaptan automáticamente al modo oscuro */
.custom-input {
background-color: var(--input-bg);
border: 1px solid var(--input-border);
}
Variables CSS
WebFoundation exporta todas las variables CSS automáticamente. Están disponibles en cualquier componente Angular:
:root {
/* Superficie / Elevación */
--bg-0dp: #f5fafb; /* Fondo base */
--bg-1dp: #ffffff; /* Tarjetas, inputs */
--bg-2dp: #f3f3f3; /* Modales */
--bg-3dp: #e8e8e8; /* Menús, tooltips */
/* Formularios */
--input-bg: var(--bg-1dp);
--input-border: #c3c3c3;
--select-bg: var(--bg-1dp);
}
Ejemplos de uso
// Usa variables CSS de WebFoundation en estilos de componentes
@Component({
selector: 'app-my-component',
styles: [`
.my-component {
background-color: var(--color-natura);
border-color: var(--color-forrest);
}
.success-message {
background-color: var(--color-success-light);
color: var(--color-success);
}
`]
})
export class MyComponent {}
// O en archivos SCSS
.my-component {
background-color: var(--color-natura);
border-color: var(--color-forrest);
color: var(--color-gray-600);
}
.success-message {
background-color: var(--color-success-light);
color: var(--color-success);
border: 1px solid var(--color-success);
}
.error-box {
background-color: var(--color-error-light);
border: 1px solid var(--color-error);
color: var(--color-error);
}
// Usar tokens de superficie
.card {
background-color: var(--bg-1dp);
}
.modal-overlay {
background-color: var(--bg-2dp);
}
// Formularios personalizados
.custom-input {
background-color: var(--input-bg);
border: 1px solid var(--input-border);
}
class TiendanaColors {
// Primarios
static const Color forrest = Color(0xFF1B434C);
static const Color darkForrest = Color(0xFF243838);
static const Color lightForrest = Color(0xFFE4ECE3);
static const Color natura = Color(0xFF00D47E);
static const Color trust = Color(0xFFFFFFFF);
static const Color greenNeon = Color(0xFFC6F54F);
static const Color lightGreenNeon = Color(0xFFF7F8F1);
// Secundarios
static const Color lavender = Color(0xFF9687F2);
static const Color lightLavender = Color(0xFFEBE8FF);
static const Color sun = Color(0xFFFF7834);
static const Color lightSun = Color(0xFFFFDECC);
static const Color sky = Color(0xFF75DBD2);
static const Color lightSky = Color(0xFFD6F5F2);
// Semánticos
static const Color success = Color(0xFFC6F54F);
static const Color warning = Color(0xFFFF7834);
static const Color error = Color(0xFFF54F4F);
static const Color info = Color(0xFF9687F2);
// Grises
static const Color gray600 = Color(0xFF384152);
static const Color gray500 = Color(0xFF6B7380);
static const Color gray400 = Color(0xFF9CA2AE);
static const Color gray300 = Color(0xFFE1E8F0);
static const Color gray200 = Color(0xFFE6E7EB);
static const Color gray100 = Color(0xFFF6F6F6);
// Superficie / Elevación (Modo Claro)
static const Color bg0dp = Color(0xFFF5FAFB);
static const Color bg1dp = Color(0xFFFFFFFF);
static const Color bg2dp = Color(0xFFF3F3F3);
static const Color bg3dp = Color(0xFFE8E8E8);
// Superficie / Elevación (Modo Oscuro)
static const Color bg0dpDark = Color(0xFF1E1E1E);
static const Color bg1dpDark = Color(0xFF303030);
static const Color bg2dpDark = Color(0xFF3E3E3E);
static const Color bg3dpDark = Color(0xFF272727);
// Formularios
static const Color inputBorder = Color(0xFFC3C3C3);
static const Color inputBorderDark = Color(0xFF616161);
}
// Uso en widgets
Container(
color: TiendanaColors.bg1dp, // Fondo de tarjeta
child: Text(
'Hola',
style: TextStyle(color: TiendanaColors.forrest),
),
)
// Card con elevación
Card(
color: TiendanaColors.bg1dp,
child: Padding(
padding: EdgeInsets.all(16),
child: Text('Contenido'),
),
)
Accesibilidad
Todas las combinaciones de colores cumplen con los estándares WCAG 2.1 AA para proporciones de contraste:
- Texto normal: mínimo 4.5:1
- Texto grande: mínimo 3:1