xonecode 0.1.0
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.
- package/README.md +167 -0
- package/dist/agent/authEnDisco.js +56 -0
- package/dist/agent/authEnDisco.js.map +1 -0
- package/dist/agent/configEnDisco.js +109 -0
- package/dist/agent/configEnDisco.js.map +1 -0
- package/dist/agent/crearProyecto.js +34 -0
- package/dist/agent/crearProyecto.js.map +1 -0
- package/dist/agent/entorno.js +124 -0
- package/dist/agent/entorno.js.map +1 -0
- package/dist/agent/guionizado.js +53 -0
- package/dist/agent/guionizado.js.map +1 -0
- package/dist/agent/instantanea.js +129 -0
- package/dist/agent/instantanea.js.map +1 -0
- package/dist/agent/interrupts.js +83 -0
- package/dist/agent/interrupts.js.map +1 -0
- package/dist/agent/mensajes.js +24 -0
- package/dist/agent/mensajes.js.map +1 -0
- package/dist/agent/modelos.js +42 -0
- package/dist/agent/modelos.js.map +1 -0
- package/dist/agent/normalizar.js +20 -0
- package/dist/agent/normalizar.js.map +1 -0
- package/dist/agent/perfiles.js +103 -0
- package/dist/agent/perfiles.js.map +1 -0
- package/dist/agent/proyecto.js +107 -0
- package/dist/agent/proyecto.js.map +1 -0
- package/dist/agent/puente.js +142 -0
- package/dist/agent/puente.js.map +1 -0
- package/dist/agent/resumenDeTool.js +48 -0
- package/dist/agent/resumenDeTool.js.map +1 -0
- package/dist/agent/skills.js +65 -0
- package/dist/agent/skills.js.map +1 -0
- package/dist/agent/textoDeTool.js +113 -0
- package/dist/agent/textoDeTool.js.map +1 -0
- package/dist/agent/turnoReal.js +173 -0
- package/dist/agent/turnoReal.js.map +1 -0
- package/dist/agent/verificador.js +65 -0
- package/dist/agent/verificador.js.map +1 -0
- package/dist/agent/xoneAgent.js +106 -0
- package/dist/agent/xoneAgent.js.map +1 -0
- package/dist/bin.js +9 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli/aprobar.js +82 -0
- package/dist/cli/aprobar.js.map +1 -0
- package/dist/cli/config.js +133 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/consola.js +346 -0
- package/dist/cli/consola.js.map +1 -0
- package/dist/cli/describe.js +53 -0
- package/dist/cli/describe.js.map +1 -0
- package/dist/cli/doctor.js +45 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/main.js +520 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/markdown.js +90 -0
- package/dist/cli/markdown.js.map +1 -0
- package/dist/cli/run.js +164 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/spinner.js +89 -0
- package/dist/cli/spinner.js.map +1 -0
- package/dist/cli/stdio.js +193 -0
- package/dist/cli/stdio.js.map +1 -0
- package/dist/cli/tema.js +40 -0
- package/dist/cli/tema.js.map +1 -0
- package/dist/cli/verify.js +62 -0
- package/dist/cli/verify.js.map +1 -0
- package/dist/core/bitacora.js +30 -0
- package/dist/core/bitacora.js.map +1 -0
- package/dist/core/config.js +236 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/contextos.js +56 -0
- package/dist/core/contextos.js.map +1 -0
- package/dist/core/deps.js +51 -0
- package/dist/core/deps.js.map +1 -0
- package/dist/core/diff.js +79 -0
- package/dist/core/diff.js.map +1 -0
- package/dist/core/esqueleto.js +366 -0
- package/dist/core/esqueleto.js.map +1 -0
- package/dist/core/events.js +2 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/modelos.js +85 -0
- package/dist/core/modelos.js.map +1 -0
- package/dist/core/notify.js +106 -0
- package/dist/core/notify.js.map +1 -0
- package/dist/core/ports.js +114 -0
- package/dist/core/ports.js.map +1 -0
- package/dist/core/turno.js +127 -0
- package/dist/core/turno.js.map +1 -0
- package/dist/vendor/hitl.js +103 -0
- package/dist/vendor/hitl.js.map +1 -0
- package/dist/vendor/skillLoaders/catalog.js +74 -0
- package/dist/vendor/skillLoaders/catalog.js.map +1 -0
- package/dist/vendor/tokenTracking.js +58 -0
- package/dist/vendor/tokenTracking.js.map +1 -0
- package/package.json +41 -0
- package/skills/xone-debugging/SKILL.md +52 -0
- package/skills/xone-debugging/references/faq.md +561 -0
- package/skills/xone-debugging/references/troubleshooting-y-glosario.md +429 -0
- package/skills/xone-development/SKILL.md +105 -0
- package/skills/xone-development/references/anti-patrones.md +94 -0
- package/skills/xone-development/references/css/atributos-por-categoria.md +509 -0
- package/skills/xone-development/references/css/buenas-practicas-y-parser.md +419 -0
- package/skills/xone-development/references/css/dinamicos-cascada-y-componentes.md +550 -0
- package/skills/xone-development/references/css/patrones-material-y-temas.md +1140 -0
- package/skills/xone-development/references/css/propiedades-y-herencia.md +885 -0
- package/skills/xone-development/references/css/selectores-unidades-colores.md +840 -0
- package/skills/xone-development/references/datos/appdata-referencia-ampliada.md +457 -0
- package/skills/xone-development/references/datos/appdata.md +611 -0
- package/skills/xone-development/references/datos/http-sqlmanager-y-crypto.md +720 -0
- package/skills/xone-development/references/datos/http.md +366 -0
- package/skills/xone-development/references/datos/oauth2-y-replica.md +156 -0
- package/skills/xone-development/references/device/biometria-imagedrawing-y-otros.md +544 -0
- package/skills/xone-development/references/device/objetos-de-dispositivo.md +583 -0
- package/skills/xone-development/references/device/systemsettings-referencia-ampliada.md +396 -0
- package/skills/xone-development/references/device/systemsettings-y-permisos.md +342 -0
- package/skills/xone-development/references/fundamentos/conceptos-clave.md +695 -0
- package/skills/xone-development/references/fundamentos/configuracion-app-xml-ini-mappings.md +668 -0
- package/skills/xone-development/references/fundamentos/errores-comunes.md +312 -0
- package/skills/xone-development/references/fundamentos/navegacion-convenciones-y-primer-proyecto.md +576 -0
- package/skills/xone-development/references/fundamentos/plataforma-y-anatomia-de-proyecto.md +387 -0
- package/skills/xone-development/references/indice-completo.md +77 -0
- package/skills/xone-development/references/javascript/coleccion-error-y-usuario.md +260 -0
- package/skills/xone-development/references/javascript/debugging-y-best-practices.md +245 -0
- package/skills/xone-development/references/javascript/metodos-de-los-controles.md +556 -0
- package/skills/xone-development/references/javascript/metodos-nativos-de-la-vista.md +114 -0
- package/skills/xone-development/references/javascript/motor-js-y-contexto-de-ejecucion.md +319 -0
- package/skills/xone-development/references/javascript/objeto-ai-llm-en-dispositivo.md +358 -0
- package/skills/xone-development/references/javascript/objetos-creables-a-m.md +527 -0
- package/skills/xone-development/references/javascript/objetos-creables-n-z.md +385 -0
- package/skills/xone-development/references/javascript/patrones-criticos-seguridad-y-rendimiento.md +595 -0
- package/skills/xone-development/references/javascript/patrones-de-navegacion-datos-y-codigo.md +751 -0
- package/skills/xone-development/references/javascript/patrones-de-ui-voz-integracion-y-seguridad.md +701 -0
- package/skills/xone-development/references/javascript/plantillas-y-funciones-utilitarias.md +647 -0
- package/skills/xone-development/references/javascript/self-y-dataobject.md +449 -0
- package/skills/xone-development/references/javascript/singletons-globales.md +361 -0
- package/skills/xone-development/references/javascript/ui-catalogo-de-metodos.md +464 -0
- package/skills/xone-development/references/javascript/ui-gps-camara-y-multimedia.md +506 -0
- package/skills/xone-development/references/javascript/ui-navegacion-mensajes-y-vista.md +422 -0
- package/skills/xone-development/references/resumen-js-datos-dispositivo.md +80 -0
- package/skills/xone-development/references/resumen-xml-y-css.md +74 -0
- package/skills/xone-development/references/tipos-de-prop.md +28 -0
- package/skills/xone-development/references/xml-ui/asfilter-visibilidad-eventos-y-macros.md +576 -0
- package/skills/xone-development/references/xml-ui/atributos-coll-group-frame.md +235 -0
- package/skills/xone-development/references/xml-ui/atributos-method-macro-script-event-app.md +244 -0
- package/skills/xone-development/references/xml-ui/atributos-prop.md +439 -0
- package/skills/xone-development/references/xml-ui/contents-y-macros.md +392 -0
- package/skills/xone-development/references/xml-ui/errores-comunes-xml.md +245 -0
- package/skills/xone-development/references/xml-ui/estructura-y-nodo-coll.md +326 -0
- package/skills/xone-development/references/xml-ui/eventos-ciclo-de-vida-e-interaccion.md +704 -0
- package/skills/xone-development/references/xml-ui/eventos-sistema-login-y-personalizados.md +944 -0
- package/skills/xone-development/references/xml-ui/layouts-herencia-y-buenas-practicas.md +618 -0
- package/skills/xone-development/references/xml-ui/mapas.md +685 -0
- package/skills/xone-development/references/xml-ui/mappings-y-colecciones-separadas.md +148 -0
- package/skills/xone-development/references/xml-ui/nodos-group-y-frame.md +666 -0
- package/skills/xone-development/references/xml-ui/patrones-de-pantalla.md +643 -0
- package/skills/xone-development/references/xml-ui/prop-atributos-y-condiciones.md +298 -0
- package/skills/xone-development/references/xml-ui/prop-tipos-basicos.md +493 -0
- package/skills/xone-development/references/xml-ui/prop-tipos-combos-y-controles.md +664 -0
- package/skills/xone-development/references/xml-ui/prop-tipos-listas-y-mapas.md +412 -0
- package/skills/xone-plan-builder/SKILL.md +183 -0
- package/skills/xone-plan-builder/agents/openai.yaml +5 -0
- package/skills/xone-plan-builder/references/TASKS-FORMAT.md +132 -0
- package/skills/xone-project-generator/SKILL.md +111 -0
- package/skills/xone-project-generator/references/canonical-sizes.md +292 -0
- package/skills/xone-project-generator/references/colecciones-base.md +16 -0
- package/skills/xone-project-generator/references/convenciones-de-nombres.md +16 -0
- package/skills/xone-project-generator/references/ejemplos-por-sector-y-prohibiciones.md +140 -0
- package/skills/xone-project-generator/references/fase-3-estilos-css.md +597 -0
- package/skills/xone-project-generator/references/fase-6-colecciones.md +762 -0
- package/skills/xone-project-generator/references/fase-7-asfilter-e-integraciones.md +142 -0
- package/skills/xone-project-generator/references/fase-7-entidades-y-estructura-de-pantalla.md +494 -0
- package/skills/xone-project-generator/references/fase-7-plantilla-consola.md +477 -0
- package/skills/xone-project-generator/references/fase-7-plantillas-de-pantalla.md +302 -0
- package/skills/xone-project-generator/references/fase-7-viewmodes-graficos-y-listas.md +681 -0
- package/skills/xone-project-generator/references/fase-7-viewmodes-mapa-y-calendario.md +479 -0
- package/skills/xone-project-generator/references/fases-0-2-analisis-y-modelo-de-datos.md +350 -0
- package/skills/xone-project-generator/references/fases-10-12-readmes-y-validacion.md +194 -0
- package/skills/xone-project-generator/references/fases-4-5-estructura-y-configuracion.md +587 -0
- package/skills/xone-project-generator/references/fases-8-9-eventos-y-javascript.md +861 -0
- package/skills/xone-project-generator/references/flujo-de-generacion.md +67 -0
- package/skills/xone-project-generator/references/plantillas-estandar.md +98 -0
- package/skills/xone-project-generator/references/tamanos-canonicos.md +49 -0
- package/skills/xone-review/SKILL.md +189 -0
- package/skills/xone-spec-builder/SKILL.md +235 -0
- package/skills/xone-spec-builder/agents/openai.yaml +5 -0
- package/skills/xone-spec-builder/references/ADR-FORMAT.md +55 -0
- package/skills/xone-spec-builder/references/CONTEXT-FORMAT.md +42 -0
- package/skills/xone-spec-builder/references/PLAN-FORMAT.md +120 -0
|
@@ -0,0 +1,1140 @@
|
|
|
1
|
+
# XOne CSS — Patrones Material Design, temas y CSS de ejemplo
|
|
2
|
+
|
|
3
|
+
> Fuente: `xone/v2/xone-help-docs/topics/04-css-styling-guide.md` §14–§16. Referencia de la skill; el índice está en [../../SKILL.md](../../SKILL.md).
|
|
4
|
+
|
|
5
|
+
Contenido: §14 patrones Material (header/body/footer, botones, inputs, tarjetas, FAB, toolbar, item de lista) · §15 temas light/dark y cambio dinámico · §16 default.css y colors.css completos y comentados
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 14. Patrones de Diseño Material Design
|
|
10
|
+
|
|
11
|
+
Esta sección presenta los patrones de diseño más comunes utilizados en los proyectos XOne reales, siguiendo los principios de Material Design.
|
|
12
|
+
|
|
13
|
+
### 14.1 Esqueleto base (coll + prop globales)
|
|
14
|
+
|
|
15
|
+
Todo proyecto XOne debe definir los selectores globales `coll` y `prop` como base. Este es el esqueleto mínimo presente en **todos** los proyectos de ejemplo:
|
|
16
|
+
|
|
17
|
+
```css
|
|
18
|
+
/* Configuración global de propiedades */
|
|
19
|
+
prop {
|
|
20
|
+
fontname: Roboto-Regular.ttf;
|
|
21
|
+
fontsize: 11;
|
|
22
|
+
labelbox: false;
|
|
23
|
+
label-wrap: true;
|
|
24
|
+
text-border: false;
|
|
25
|
+
forecolor: #212121;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* Configuración global de colecciones */
|
|
29
|
+
coll {
|
|
30
|
+
notab: true;
|
|
31
|
+
show-toolbar: false;
|
|
32
|
+
group-swipe: false;
|
|
33
|
+
editmask: 0;
|
|
34
|
+
bgcolor: #FFFFFF;
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 14.2 Clase de header (.frameHeader)
|
|
39
|
+
|
|
40
|
+
El header es el frame superior de cada pantalla. Suele contener el título, botones de navegación y acciones.
|
|
41
|
+
|
|
42
|
+
```css
|
|
43
|
+
/* Header estandar */
|
|
44
|
+
.frameHeader {
|
|
45
|
+
width: 100%;
|
|
46
|
+
height: 140p;
|
|
47
|
+
bgcolor: #1565C0; /* Color primario de marca */
|
|
48
|
+
align: center;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* Header secundario (mas bajo) */
|
|
52
|
+
.frameHeaderSecundario {
|
|
53
|
+
width: 100%;
|
|
54
|
+
height: 120p;
|
|
55
|
+
bgcolor: #1976D2;
|
|
56
|
+
align: center;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* Header transparente (para pantallas con mapa) */
|
|
60
|
+
.frameHeaderTransparente {
|
|
61
|
+
width: 100%;
|
|
62
|
+
height: 100p;
|
|
63
|
+
bgcolor: #00FFFFFF;
|
|
64
|
+
align: center;
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 14.3 Clase de body (.frameBody con scroll)
|
|
69
|
+
|
|
70
|
+
El body es el área principal de contenido, normalmente con scroll habilitado.
|
|
71
|
+
|
|
72
|
+
```css
|
|
73
|
+
/* Body con scroll (el mas comun) */
|
|
74
|
+
.frameBody {
|
|
75
|
+
width: 100%;
|
|
76
|
+
height: 100%;
|
|
77
|
+
scroll: true;
|
|
78
|
+
bgcolor: #F5F5F5;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* Body sin scroll */
|
|
82
|
+
.frameBodyFijo {
|
|
83
|
+
width: 100%;
|
|
84
|
+
height: 100%;
|
|
85
|
+
scroll: false;
|
|
86
|
+
bgcolor: #FFFFFF;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* Body para pantallas con mapa */
|
|
90
|
+
.frameBodyMapa {
|
|
91
|
+
width: 100%;
|
|
92
|
+
height: 100%;
|
|
93
|
+
scroll: false;
|
|
94
|
+
bgcolor: #E3F2FD;
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 14.4 Clase de footer (.frameFooter)
|
|
99
|
+
|
|
100
|
+
El footer es el frame inferior, normalmente con botones de acción.
|
|
101
|
+
|
|
102
|
+
```css
|
|
103
|
+
/* Footer estandar con borde superior */
|
|
104
|
+
.frameFooter {
|
|
105
|
+
width: 100%;
|
|
106
|
+
height: 120p;
|
|
107
|
+
bgcolor: #FFFFFF;
|
|
108
|
+
align: center;
|
|
109
|
+
border-top: true;
|
|
110
|
+
border-top-color: #E0E0E0;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* Footer fijo (no se mueve con el scroll) */
|
|
114
|
+
.frameFooterFijo {
|
|
115
|
+
width: 100%;
|
|
116
|
+
height: 120p;
|
|
117
|
+
bgcolor: #FFFFFF;
|
|
118
|
+
align: center;
|
|
119
|
+
fixed: true;
|
|
120
|
+
orientation: bottom;
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### 14.5 Botones (.btnPrimario, .btnSecundario, .btnPeligro)
|
|
125
|
+
|
|
126
|
+
Los botones siguen el patron de Material Design con esquinas redondeadas y colores por estado:
|
|
127
|
+
|
|
128
|
+
```css
|
|
129
|
+
/* Boton primario - Accion principal */
|
|
130
|
+
.btnPrimario {
|
|
131
|
+
width: 90%;
|
|
132
|
+
height: 56p;
|
|
133
|
+
bgcolor: #1565C0;
|
|
134
|
+
forecolor: #FFFFFF;
|
|
135
|
+
border-corner-radius: 28;
|
|
136
|
+
text-align: center;
|
|
137
|
+
fontsize: 16;
|
|
138
|
+
fontname: Roboto-Bold.ttf;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* Boton secundario - Outline */
|
|
142
|
+
.btnSecundario {
|
|
143
|
+
width: 90%;
|
|
144
|
+
height: 56p;
|
|
145
|
+
bgcolor: #FFFFFF;
|
|
146
|
+
forecolor: #1565C0;
|
|
147
|
+
border: true;
|
|
148
|
+
border-color: #1565C0;
|
|
149
|
+
border-corner-radius: 28;
|
|
150
|
+
text-align: center;
|
|
151
|
+
fontsize: 16;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/* Boton de peligro - Accion destructiva */
|
|
155
|
+
.btnPeligro {
|
|
156
|
+
width: 90%;
|
|
157
|
+
height: 56p;
|
|
158
|
+
bgcolor: #F44336;
|
|
159
|
+
forecolor: #FFFFFF;
|
|
160
|
+
border-corner-radius: 28;
|
|
161
|
+
text-align: center;
|
|
162
|
+
fontsize: 16;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/* Boton de exito - Confirmacion */
|
|
166
|
+
.btnExito {
|
|
167
|
+
width: 90%;
|
|
168
|
+
height: 56p;
|
|
169
|
+
bgcolor: #4CAF50;
|
|
170
|
+
forecolor: #FFFFFF;
|
|
171
|
+
border-corner-radius: 28;
|
|
172
|
+
text-align: center;
|
|
173
|
+
fontsize: 16;
|
|
174
|
+
fontname: Roboto-Bold.ttf;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/* Boton de acento */
|
|
178
|
+
.btnAcento {
|
|
179
|
+
width: 90%;
|
|
180
|
+
height: 56p;
|
|
181
|
+
bgcolor: #00BCD4;
|
|
182
|
+
forecolor: #FFFFFF;
|
|
183
|
+
border-corner-radius: 28;
|
|
184
|
+
text-align: center;
|
|
185
|
+
fontsize: 16;
|
|
186
|
+
fontname: Roboto-Bold.ttf;
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### 14.6 Campos de texto (.textoEditable)
|
|
191
|
+
|
|
192
|
+
```css
|
|
193
|
+
/* Campo con borde inferior (Material Design) */
|
|
194
|
+
.textoEditable {
|
|
195
|
+
width: 95%;
|
|
196
|
+
height: 56p;
|
|
197
|
+
labelwidth: 0;
|
|
198
|
+
text-border: true;
|
|
199
|
+
text-border-bottom: true;
|
|
200
|
+
text-border-left: false;
|
|
201
|
+
text-border-right: false;
|
|
202
|
+
text-border-top: false;
|
|
203
|
+
text-border-color: #BDBDBD;
|
|
204
|
+
fontsize: 14;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/* Campo enfocado - Color del borde cambia */
|
|
208
|
+
.textoEditableEnfocado {
|
|
209
|
+
extends: .textoEditable;
|
|
210
|
+
text-border-color: #1565C0;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/* Campo con fondo gris (sin borde) */
|
|
214
|
+
.inputTexto {
|
|
215
|
+
width: 95%;
|
|
216
|
+
height: 56p;
|
|
217
|
+
bgcolor: #F5F5F5;
|
|
218
|
+
border-corner-radius: 8;
|
|
219
|
+
text-border: false;
|
|
220
|
+
fontsize: 14;
|
|
221
|
+
lmargin: 15p;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* Campo de busqueda redondeado */
|
|
225
|
+
.inputBusqueda {
|
|
226
|
+
width: 95%;
|
|
227
|
+
height: 56p;
|
|
228
|
+
bgcolor: #FFFFFF;
|
|
229
|
+
border-corner-radius: 28;
|
|
230
|
+
border: true;
|
|
231
|
+
border-color: #E0E0E0;
|
|
232
|
+
lmargin: 15p;
|
|
233
|
+
fontsize: 14;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/* Campo multilinea */
|
|
237
|
+
.textoEditableMulti {
|
|
238
|
+
extends: .textoEditable;
|
|
239
|
+
lines: 5;
|
|
240
|
+
fixed-lines: false;
|
|
241
|
+
text-border: true;
|
|
242
|
+
text-border-bottom: true;
|
|
243
|
+
text-border-left: true;
|
|
244
|
+
text-border-right: true;
|
|
245
|
+
text-border-top: true;
|
|
246
|
+
border-corner-radius: 8;
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### 14.7 Tarjetas (.frameCard)
|
|
251
|
+
|
|
252
|
+
Las tarjetas son contenedores blancos elevados que agrupan información relacionada:
|
|
253
|
+
|
|
254
|
+
```css
|
|
255
|
+
/* Tarjeta estandar */
|
|
256
|
+
.tarjeta {
|
|
257
|
+
width: 95%;
|
|
258
|
+
bgcolor: #FFFFFF;
|
|
259
|
+
border-corner-radius: 12;
|
|
260
|
+
tmargin: 10p;
|
|
261
|
+
bmargin: 5p;
|
|
262
|
+
lmargin: 10p;
|
|
263
|
+
rmargin: 10p;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/* Tarjeta con borde */
|
|
267
|
+
.tarjetaConBorde {
|
|
268
|
+
width: 95%;
|
|
269
|
+
bgcolor: #FFFFFF;
|
|
270
|
+
border-corner-radius: 16;
|
|
271
|
+
border: true;
|
|
272
|
+
border-color: #E0E0E0;
|
|
273
|
+
tmargin: 10p;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/* Tarjeta seleccionada */
|
|
277
|
+
.tarjetaSeleccionada {
|
|
278
|
+
width: 95%;
|
|
279
|
+
bgcolor: #E3F2FD;
|
|
280
|
+
border-corner-radius: 12;
|
|
281
|
+
border: true;
|
|
282
|
+
border-color: #1565C0;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/* Tarjeta con padding interno (proyecto SocialNetwork) */
|
|
286
|
+
.frameCard {
|
|
287
|
+
width: 96%;
|
|
288
|
+
lmargin: 2%;
|
|
289
|
+
bgcolor: #FFFFFF;
|
|
290
|
+
border-corner-radius: 12;
|
|
291
|
+
tmargin: 10p;
|
|
292
|
+
tpadding: 15p;
|
|
293
|
+
bpadding: 15p;
|
|
294
|
+
lpadding: 15p;
|
|
295
|
+
rpadding: 15p;
|
|
296
|
+
}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### 14.8 FAB (Floating Action Button)
|
|
300
|
+
|
|
301
|
+
El FAB es un botón circular flotante que representa la acción principal de la pantalla:
|
|
302
|
+
|
|
303
|
+
```css
|
|
304
|
+
/* FAB estandar (56p) */
|
|
305
|
+
.btnFAB {
|
|
306
|
+
width: 56p;
|
|
307
|
+
height: 56p;
|
|
308
|
+
bgcolor: #1565C0;
|
|
309
|
+
border-corner-radius: 28;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/* FAB grande (64p) */
|
|
313
|
+
.btnFlotante {
|
|
314
|
+
width: 64p;
|
|
315
|
+
height: 64p;
|
|
316
|
+
bgcolor: #1565C0;
|
|
317
|
+
border-corner-radius: 32;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/* FAB extragrande con floating (proyecto SocialNetwork - 112p) */
|
|
321
|
+
.btnFABGrande {
|
|
322
|
+
width: 112p;
|
|
323
|
+
height: 112p;
|
|
324
|
+
bgcolor: #FFC107;
|
|
325
|
+
border-corner-radius: 56;
|
|
326
|
+
labelwidth: 0;
|
|
327
|
+
img-width: 48p;
|
|
328
|
+
img-height: 48p;
|
|
329
|
+
floating: true;
|
|
330
|
+
}
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### 14.9 Toolbar / Tab Bar
|
|
334
|
+
|
|
335
|
+
```css
|
|
336
|
+
/* Grupo sin tabs (el mas comun) */
|
|
337
|
+
.groupNoTab {
|
|
338
|
+
tab-visible: false;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/* Grupo con tabs de navegacion */
|
|
342
|
+
.groupConTab {
|
|
343
|
+
tab-visible: true;
|
|
344
|
+
tab-height: 56p;
|
|
345
|
+
tab-fontsize: 14;
|
|
346
|
+
tab-bgcolor: #0D47A1;
|
|
347
|
+
tab-forecolor: #BBDEFB;
|
|
348
|
+
tab-selected-forecolor: #FFFFFF;
|
|
349
|
+
tab-indicator-color: #FFFFFF;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/* Barra de navegacion inferior (proyecto SocialNetwork) */
|
|
353
|
+
.frameNavBar {
|
|
354
|
+
width: 100%;
|
|
355
|
+
height: 100p;
|
|
356
|
+
bgcolor: #FFFFFF;
|
|
357
|
+
align: center;
|
|
358
|
+
fixed: true;
|
|
359
|
+
orientation: bottom;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
/* Item de navegacion */
|
|
363
|
+
.btnNavItem {
|
|
364
|
+
width: 25%;
|
|
365
|
+
height: 100%;
|
|
366
|
+
bgcolor: #FFFFFF;
|
|
367
|
+
labelwidth: 0;
|
|
368
|
+
img-width: 48p;
|
|
369
|
+
img-height: 48p;
|
|
370
|
+
newline: false;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
.btnNavItemActive {
|
|
374
|
+
extends: .btnNavItem;
|
|
375
|
+
bgcolor: #FFECB3;
|
|
376
|
+
}
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
### 14.10 Item de lista
|
|
380
|
+
|
|
381
|
+
```css
|
|
382
|
+
/* Item de lista estandar */
|
|
383
|
+
.itemLista {
|
|
384
|
+
width: 100%;
|
|
385
|
+
height: 72p;
|
|
386
|
+
bgcolor: #FFFFFF;
|
|
387
|
+
border-bottom: true;
|
|
388
|
+
border-bottom-color: #EEEEEE;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/* Item de lista seleccionado */
|
|
392
|
+
.itemListaSeleccionado {
|
|
393
|
+
width: 100%;
|
|
394
|
+
height: 72p;
|
|
395
|
+
bgcolor: #E3F2FD;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/* Separador de lista */
|
|
399
|
+
.separador {
|
|
400
|
+
width: 100%;
|
|
401
|
+
height: 1p;
|
|
402
|
+
bgcolor: #EEEEEE;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/* Separador con margen lateral */
|
|
406
|
+
.separadorConMargen {
|
|
407
|
+
width: 90%;
|
|
408
|
+
height: 1p;
|
|
409
|
+
bgcolor: #E0E0E0;
|
|
410
|
+
align: center;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
/* Separador con indentacion (estilo MiMensajeria) */
|
|
414
|
+
.frameDivider {
|
|
415
|
+
width: 100%;
|
|
416
|
+
height: 1p;
|
|
417
|
+
bgcolor: #E0E0E0;
|
|
418
|
+
lmargin: 72p;
|
|
419
|
+
}
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
## 15. Temas (Light y Dark)
|
|
425
|
+
|
|
426
|
+
### 15.1 Como estructurar temas
|
|
427
|
+
|
|
428
|
+
XOne soporta cambio de tema mediante archivos CSS separados que se cargan automáticamente según el tema activo del dispositivo:
|
|
429
|
+
|
|
430
|
+
- `default.css` - Tema base (normalmente light)
|
|
431
|
+
- `default_night.css` - Sobreescrituras para tema oscuro
|
|
432
|
+
- `default_day.css` - Sobreescrituras para tema claro (si el base es oscuro)
|
|
433
|
+
|
|
434
|
+
El sistema de cascada de XOne aplica automáticamente el archivo de tema sobre los estilos base. Solo es necesario sobreescribir los atributos de color que cambian.
|
|
435
|
+
|
|
436
|
+
### 15.2 Variables de color centralizadas
|
|
437
|
+
|
|
438
|
+
XOne admite variables CSS reales (`:root { --color: red; }` + `var(--color)`). Para temas el patrón recomendado es declarar la paleta en `:root` dentro de `colors.css` y referenciarla con `var(--...)` en el resto de hojas. Como alternativa equivalente — más antigua pero todavía válida — se pueden usar clases de color que encapsulan el valor:
|
|
439
|
+
|
|
440
|
+
**Patrón con variables CSS (recomendado):**
|
|
441
|
+
|
|
442
|
+
```css
|
|
443
|
+
/* default-colors.css */
|
|
444
|
+
:root {
|
|
445
|
+
--color-primario: #1565C0;
|
|
446
|
+
--color-fondo: #FFFFFF;
|
|
447
|
+
--color-texto: #212121;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
/* default.css */
|
|
451
|
+
.frameHeader {
|
|
452
|
+
bgcolor: var(--color-primario);
|
|
453
|
+
forecolor: var(--color-fondo);
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
/* default_night.css — solo redefine las variables */
|
|
457
|
+
:root {
|
|
458
|
+
--color-primario: #0D47A1;
|
|
459
|
+
--color-fondo: #121212;
|
|
460
|
+
--color-texto: #E0E0E0;
|
|
461
|
+
}
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
**Patrón clásico con clases (sigue funcionando):**
|
|
465
|
+
|
|
466
|
+
```css
|
|
467
|
+
/* default-colors.css - Tema Light */
|
|
468
|
+
.xnDarkBgcolor {
|
|
469
|
+
bgcolor: #1565C0;
|
|
470
|
+
forecolor: #FFFFFF;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
.xnLightBgcolor {
|
|
474
|
+
bgcolor: #F5F5F5;
|
|
475
|
+
forecolor: #212121;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
.xnTransparentBgcolor {
|
|
479
|
+
bgcolor: #00000000;
|
|
480
|
+
}
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
### 15.3 Ejemplo de tema oscuro
|
|
484
|
+
|
|
485
|
+
**`default_night.css`:**
|
|
486
|
+
|
|
487
|
+
```css
|
|
488
|
+
/* Sobreescribir coleccion */
|
|
489
|
+
coll {
|
|
490
|
+
bgcolor: #121212;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
/* Sobreescribir propiedades globales */
|
|
494
|
+
prop {
|
|
495
|
+
forecolor: #E0E0E0;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
/* Sobreescribir layout */
|
|
499
|
+
.frameHeader {
|
|
500
|
+
bgcolor: #1E1E1E;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
.frameBody {
|
|
504
|
+
bgcolor: #121212;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
.frameFooter {
|
|
508
|
+
bgcolor: #1E1E1E;
|
|
509
|
+
border-top-color: #333333;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
/* Sobreescribir tarjetas */
|
|
513
|
+
.tarjeta {
|
|
514
|
+
bgcolor: #1E1E1E;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
/* Sobreescribir inputs */
|
|
518
|
+
.inputTexto {
|
|
519
|
+
bgcolor: #2C2C2C;
|
|
520
|
+
text-forecolor: #E0E0E0;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
/* Sobreescribir textos */
|
|
524
|
+
.textoTitulo {
|
|
525
|
+
forecolor: #FFFFFF;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
.textoSecundario {
|
|
529
|
+
forecolor: #9E9E9E;
|
|
530
|
+
}
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
**`default_day.css` (ejemplo de la knowledgebase):**
|
|
534
|
+
|
|
535
|
+
```css
|
|
536
|
+
.cssDemo {
|
|
537
|
+
bgcolor: #F8C471;
|
|
538
|
+
forecolor: #000000;
|
|
539
|
+
title: Modo dia;
|
|
540
|
+
}
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
**`default_night.css` (ejemplo de la knowledgebase):**
|
|
544
|
+
|
|
545
|
+
```css
|
|
546
|
+
.cssDemo {
|
|
547
|
+
bgcolor: #000000;
|
|
548
|
+
forecolor: #FFFFFF;
|
|
549
|
+
title: Modo noche;
|
|
550
|
+
}
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
### 15.4 Cambio dinámico de CSS
|
|
554
|
+
|
|
555
|
+
Desde JavaScript se puede cargar un archivo CSS diferente en tiempo de ejecución, lo que permite implementar un cambio de tema manual por el usuario. Consultar la API JavaScript para los métodos disponibles.
|
|
556
|
+
|
|
557
|
+
> **Referencia cruzada:** Para los métodos JavaScript de cambio de CSS, consultar el tópico 03 - API JavaScript.
|
|
558
|
+
|
|
559
|
+
---
|
|
560
|
+
|
|
561
|
+
## 16. CSS Completo de Ejemplo
|
|
562
|
+
|
|
563
|
+
### Archivo `default.css` completo comentado
|
|
564
|
+
|
|
565
|
+
El siguiente ejemplo es un `default.css` completo para un proyecto XOne generico, basado en los patrones reales encontrados en los proyectos UseCars, XOneDelivery, MiMensajeria, SocialNetwork y GestionTareas:
|
|
566
|
+
|
|
567
|
+
```css
|
|
568
|
+
/* ============================================
|
|
569
|
+
PROYECTO EJEMPLO - Estilos Globales
|
|
570
|
+
Paleta: Azul #1565C0
|
|
571
|
+
============================================ */
|
|
572
|
+
|
|
573
|
+
/* ============================================
|
|
574
|
+
CONFIGURACION GLOBAL
|
|
575
|
+
Estos selectores aplican a TODOS los elementos
|
|
576
|
+
============================================ */
|
|
577
|
+
|
|
578
|
+
/* Tipografia y estilo base de todos los campos */
|
|
579
|
+
prop {
|
|
580
|
+
fontname: Roboto-Regular.ttf;
|
|
581
|
+
fontsize: 11;
|
|
582
|
+
labelbox: false;
|
|
583
|
+
label-wrap: true;
|
|
584
|
+
text-border: false;
|
|
585
|
+
forecolor: #212121;
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
/* Configuración base de todas las colecciones */
|
|
589
|
+
coll {
|
|
590
|
+
notab: true;
|
|
591
|
+
show-toolbar: false;
|
|
592
|
+
group-swipe: false;
|
|
593
|
+
editmask: 0;
|
|
594
|
+
bgcolor: #FFFFFF;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
/* ============================================
|
|
598
|
+
ICONOS DEL SISTEMA
|
|
599
|
+
Iconos para combos, busquedas, etc.
|
|
600
|
+
============================================ */
|
|
601
|
+
|
|
602
|
+
prop {
|
|
603
|
+
img-spinner: ic_arrow_drop_down.png;
|
|
604
|
+
img-spinner-sel: ic_arrow_drop_down.png;
|
|
605
|
+
img-search: ic_search.png;
|
|
606
|
+
img-search-sel: ic_search.png;
|
|
607
|
+
img-delete: ic_delete.png;
|
|
608
|
+
img-delete-sel: ic_delete.png;
|
|
609
|
+
img-checked: ic_check_box.png;
|
|
610
|
+
img-unchecked: ic_check_box_outline_blank.png;
|
|
611
|
+
img-camera: ic_photo_camera.png;
|
|
612
|
+
img-camera-sel: ic_photo_camera.png;
|
|
613
|
+
img-date: ic_date_range.png;
|
|
614
|
+
img-date-sel: ic_date_range.png;
|
|
615
|
+
img-time: ic_access_time.png;
|
|
616
|
+
img-time-sel: ic_access_time.png;
|
|
617
|
+
img-att: ic_attach_file.png;
|
|
618
|
+
img-att-sel: ic_attach_file.png;
|
|
619
|
+
img-height: 28;
|
|
620
|
+
img-width: 28;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
/* ============================================
|
|
624
|
+
FRAMES DE LAYOUT
|
|
625
|
+
Estructura Header / Body / Footer
|
|
626
|
+
============================================ */
|
|
627
|
+
|
|
628
|
+
/* Header principal */
|
|
629
|
+
.frameHeader {
|
|
630
|
+
width: 100%;
|
|
631
|
+
height: 140p;
|
|
632
|
+
bgcolor: #1565C0;
|
|
633
|
+
align: center;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
/* Body con scroll */
|
|
637
|
+
.frameBody {
|
|
638
|
+
width: 100%;
|
|
639
|
+
height: 100%;
|
|
640
|
+
scroll: true;
|
|
641
|
+
bgcolor: #F5F5F5;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
/* Body sin scroll */
|
|
645
|
+
.frameBodyFijo {
|
|
646
|
+
width: 100%;
|
|
647
|
+
height: 100%;
|
|
648
|
+
scroll: false;
|
|
649
|
+
bgcolor: #FFFFFF;
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
/* Footer fijo */
|
|
653
|
+
.frameFooter {
|
|
654
|
+
width: 100%;
|
|
655
|
+
height: 120p;
|
|
656
|
+
bgcolor: #FFFFFF;
|
|
657
|
+
align: center;
|
|
658
|
+
border-top: true;
|
|
659
|
+
border-top-color: #E0E0E0;
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
/* ============================================
|
|
663
|
+
TARJETAS
|
|
664
|
+
============================================ */
|
|
665
|
+
|
|
666
|
+
.tarjeta {
|
|
667
|
+
width: 95%;
|
|
668
|
+
bgcolor: #FFFFFF;
|
|
669
|
+
border-corner-radius: 12;
|
|
670
|
+
tmargin: 10p;
|
|
671
|
+
bmargin: 5p;
|
|
672
|
+
lmargin: 10p;
|
|
673
|
+
rmargin: 10p;
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
.tarjetaSeleccionada {
|
|
677
|
+
width: 95%;
|
|
678
|
+
bgcolor: #E3F2FD;
|
|
679
|
+
border-corner-radius: 12;
|
|
680
|
+
border: true;
|
|
681
|
+
border-color: #1565C0;
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
/* Panel inferior (modal) */
|
|
685
|
+
.panelInferior {
|
|
686
|
+
width: 100%;
|
|
687
|
+
bgcolor: #FFFFFF;
|
|
688
|
+
border-corner-radius-top-left: 24;
|
|
689
|
+
border-corner-radius-top-right: 24;
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
/* ============================================
|
|
693
|
+
BOTONES
|
|
694
|
+
============================================ */
|
|
695
|
+
|
|
696
|
+
/* Primario */
|
|
697
|
+
.btnPrimario {
|
|
698
|
+
width: 90%;
|
|
699
|
+
height: 56p;
|
|
700
|
+
bgcolor: #1565C0;
|
|
701
|
+
forecolor: #FFFFFF;
|
|
702
|
+
border-corner-radius: 28;
|
|
703
|
+
text-align: center;
|
|
704
|
+
fontsize: 16;
|
|
705
|
+
fontname: Roboto-Bold.ttf;
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
/* Secundario (outline) */
|
|
709
|
+
.btnSecundario {
|
|
710
|
+
width: 90%;
|
|
711
|
+
height: 56p;
|
|
712
|
+
bgcolor: #FFFFFF;
|
|
713
|
+
forecolor: #1565C0;
|
|
714
|
+
border: true;
|
|
715
|
+
border-color: #1565C0;
|
|
716
|
+
border-corner-radius: 28;
|
|
717
|
+
text-align: center;
|
|
718
|
+
fontsize: 16;
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
/* Peligro */
|
|
722
|
+
.btnPeligro {
|
|
723
|
+
width: 90%;
|
|
724
|
+
height: 56p;
|
|
725
|
+
bgcolor: #F44336;
|
|
726
|
+
forecolor: #FFFFFF;
|
|
727
|
+
border-corner-radius: 28;
|
|
728
|
+
text-align: center;
|
|
729
|
+
fontsize: 16;
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
/* Exito */
|
|
733
|
+
.btnExito {
|
|
734
|
+
width: 90%;
|
|
735
|
+
height: 56p;
|
|
736
|
+
bgcolor: #4CAF50;
|
|
737
|
+
forecolor: #FFFFFF;
|
|
738
|
+
border-corner-radius: 28;
|
|
739
|
+
text-align: center;
|
|
740
|
+
fontsize: 16;
|
|
741
|
+
fontname: Roboto-Bold.ttf;
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
/* Icono circular */
|
|
745
|
+
.btnIcono {
|
|
746
|
+
width: 56p;
|
|
747
|
+
height: 56p;
|
|
748
|
+
bgcolor: #FFFFFF;
|
|
749
|
+
border-corner-radius: 28;
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
/* FAB */
|
|
753
|
+
.btnFlotante {
|
|
754
|
+
width: 64p;
|
|
755
|
+
height: 64p;
|
|
756
|
+
bgcolor: #1565C0;
|
|
757
|
+
border-corner-radius: 32;
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
/* Chip */
|
|
761
|
+
.btnChip {
|
|
762
|
+
height: 40p;
|
|
763
|
+
bgcolor: #E3F2FD;
|
|
764
|
+
forecolor: #1565C0;
|
|
765
|
+
border-corner-radius: 20;
|
|
766
|
+
text-align: center;
|
|
767
|
+
fontsize: 14;
|
|
768
|
+
lmargin: 5p;
|
|
769
|
+
rmargin: 5p;
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
.btnChipSeleccionado {
|
|
773
|
+
height: 40p;
|
|
774
|
+
bgcolor: #1565C0;
|
|
775
|
+
forecolor: #FFFFFF;
|
|
776
|
+
border-corner-radius: 20;
|
|
777
|
+
text-align: center;
|
|
778
|
+
fontsize: 14;
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
/* ============================================
|
|
782
|
+
CAMPOS DE TEXTO
|
|
783
|
+
============================================ */
|
|
784
|
+
|
|
785
|
+
/* Con borde inferior (Material Design) */
|
|
786
|
+
.inputTextoLinea {
|
|
787
|
+
width: 95%;
|
|
788
|
+
height: 56p;
|
|
789
|
+
bgcolor: #FFFFFF;
|
|
790
|
+
text-border: true;
|
|
791
|
+
text-border-bottom: true;
|
|
792
|
+
text-border-left: false;
|
|
793
|
+
text-border-right: false;
|
|
794
|
+
text-border-top: false;
|
|
795
|
+
text-border-color: #BDBDBD;
|
|
796
|
+
fontsize: 14;
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
/* Enfocado */
|
|
800
|
+
.inputTextoLineaEnfocado {
|
|
801
|
+
extends: .inputTextoLinea;
|
|
802
|
+
text-border-color: #1565C0;
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
/* Con fondo gris */
|
|
806
|
+
.inputTexto {
|
|
807
|
+
width: 95%;
|
|
808
|
+
height: 56p;
|
|
809
|
+
bgcolor: #F5F5F5;
|
|
810
|
+
border-corner-radius: 8;
|
|
811
|
+
text-border: false;
|
|
812
|
+
fontsize: 14;
|
|
813
|
+
lmargin: 15p;
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
/* Busqueda redondeada */
|
|
817
|
+
.inputBusqueda {
|
|
818
|
+
width: 95%;
|
|
819
|
+
height: 56p;
|
|
820
|
+
bgcolor: #FFFFFF;
|
|
821
|
+
border-corner-radius: 28;
|
|
822
|
+
border: true;
|
|
823
|
+
border-color: #E0E0E0;
|
|
824
|
+
lmargin: 15p;
|
|
825
|
+
fontsize: 14;
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
/* ============================================
|
|
829
|
+
TEXTOS Y ETIQUETAS
|
|
830
|
+
============================================ */
|
|
831
|
+
|
|
832
|
+
.textoTituloGrande {
|
|
833
|
+
fontsize: 28;
|
|
834
|
+
fontname: Roboto-Bold.ttf;
|
|
835
|
+
forecolor: #FFFFFF;
|
|
836
|
+
text-align: center;
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
.textoTitulo {
|
|
840
|
+
fontsize: 20;
|
|
841
|
+
fontname: Roboto-Bold.ttf;
|
|
842
|
+
forecolor: #212121;
|
|
843
|
+
text-align: left;
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
.textoSubtitulo {
|
|
847
|
+
fontsize: 16;
|
|
848
|
+
forecolor: #616161;
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
.textoNormal {
|
|
852
|
+
fontsize: 14;
|
|
853
|
+
forecolor: #212121;
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
.textoSecundario {
|
|
857
|
+
fontsize: 14;
|
|
858
|
+
forecolor: #9E9E9E;
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
.textoPequeno {
|
|
862
|
+
fontsize: 12;
|
|
863
|
+
forecolor: #9E9E9E;
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
/* ============================================
|
|
867
|
+
BADGES DE ESTADO
|
|
868
|
+
============================================ */
|
|
869
|
+
|
|
870
|
+
.badgeEstado {
|
|
871
|
+
height: 28p;
|
|
872
|
+
fontsize: 12;
|
|
873
|
+
fontname: Roboto-Bold.ttf;
|
|
874
|
+
forecolor: #FFFFFF;
|
|
875
|
+
text-align: center;
|
|
876
|
+
border-corner-radius: 14;
|
|
877
|
+
lmargin: 10p;
|
|
878
|
+
rmargin: 10p;
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
.badgePendiente {
|
|
882
|
+
extends: .badgeEstado;
|
|
883
|
+
bgcolor: #FFC107;
|
|
884
|
+
forecolor: #212121;
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
.badgeAsignado {
|
|
888
|
+
extends: .badgeEstado;
|
|
889
|
+
bgcolor: #2196F3;
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
.badgeEntregado {
|
|
893
|
+
extends: .badgeEstado;
|
|
894
|
+
bgcolor: #4CAF50;
|
|
895
|
+
}
|
|
896
|
+
|
|
897
|
+
.badgeCancelado {
|
|
898
|
+
extends: .badgeEstado;
|
|
899
|
+
bgcolor: #9E9E9E;
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
.badgeError {
|
|
903
|
+
extends: .badgeEstado;
|
|
904
|
+
bgcolor: #F44336;
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
/* ============================================
|
|
908
|
+
AVATARES
|
|
909
|
+
============================================ */
|
|
910
|
+
|
|
911
|
+
.avatar {
|
|
912
|
+
width: 64p;
|
|
913
|
+
height: 64p;
|
|
914
|
+
border-corner-radius: 32;
|
|
915
|
+
}
|
|
916
|
+
|
|
917
|
+
.avatarGrande {
|
|
918
|
+
width: 96p;
|
|
919
|
+
height: 96p;
|
|
920
|
+
border-corner-radius: 48;
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
.avatarPequeno {
|
|
924
|
+
width: 48p;
|
|
925
|
+
height: 48p;
|
|
926
|
+
border-corner-radius: 24;
|
|
927
|
+
}
|
|
928
|
+
|
|
929
|
+
/* ============================================
|
|
930
|
+
ICONOS
|
|
931
|
+
============================================ */
|
|
932
|
+
|
|
933
|
+
.iconoAccion {
|
|
934
|
+
width: 48p;
|
|
935
|
+
height: 48p;
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
.iconoPequeno {
|
|
939
|
+
width: 24p;
|
|
940
|
+
height: 24p;
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
/* ============================================
|
|
944
|
+
LISTAS
|
|
945
|
+
============================================ */
|
|
946
|
+
|
|
947
|
+
.itemLista {
|
|
948
|
+
width: 100%;
|
|
949
|
+
height: 72p;
|
|
950
|
+
bgcolor: #FFFFFF;
|
|
951
|
+
border-bottom: true;
|
|
952
|
+
border-bottom-color: #EEEEEE;
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
.separador {
|
|
956
|
+
width: 100%;
|
|
957
|
+
height: 1p;
|
|
958
|
+
bgcolor: #EEEEEE;
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
/* ============================================
|
|
962
|
+
GRUPOS Y TABS
|
|
963
|
+
============================================ */
|
|
964
|
+
|
|
965
|
+
.groupNoTab {
|
|
966
|
+
tab-visible: false;
|
|
967
|
+
}
|
|
968
|
+
|
|
969
|
+
.groupConTab {
|
|
970
|
+
tab-visible: true;
|
|
971
|
+
tab-height: 56p;
|
|
972
|
+
tab-fontsize: 14;
|
|
973
|
+
tab-bgcolor: #1565C0;
|
|
974
|
+
tab-forecolor: #BBDEFB;
|
|
975
|
+
tab-selected-forecolor: #FFFFFF;
|
|
976
|
+
tab-indicator-color: #FFFFFF;
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
/* ============================================
|
|
980
|
+
FIRMA Y FOTO
|
|
981
|
+
============================================ */
|
|
982
|
+
|
|
983
|
+
.areaFirma {
|
|
984
|
+
width: 100%;
|
|
985
|
+
height: 200p;
|
|
986
|
+
bgcolor: #FAFAFA;
|
|
987
|
+
border: true;
|
|
988
|
+
border-color: #E0E0E0;
|
|
989
|
+
border-corner-radius: 8;
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
.fotoPreview {
|
|
993
|
+
width: 100%;
|
|
994
|
+
height: 200p;
|
|
995
|
+
border-corner-radius: 8;
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
/* ============================================
|
|
999
|
+
ANIMACIONES
|
|
1000
|
+
============================================ */
|
|
1001
|
+
|
|
1002
|
+
.animSlideRight {
|
|
1003
|
+
animation-in: ##RIGHT_IN##;
|
|
1004
|
+
animation-in-delay: 200;
|
|
1005
|
+
animation-out: ##LEFT_OUT##;
|
|
1006
|
+
animation-out-delay: 200;
|
|
1007
|
+
}
|
|
1008
|
+
|
|
1009
|
+
.animFadeIn {
|
|
1010
|
+
animation-in: ##ALPHA_IN##;
|
|
1011
|
+
animation-in-delay: 300;
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
.animSlideUp {
|
|
1015
|
+
animation-in: ##PUSH_IN##;
|
|
1016
|
+
animation-in-delay: 200;
|
|
1017
|
+
}
|
|
1018
|
+
```
|
|
1019
|
+
|
|
1020
|
+
### Archivo `colors.css` completo
|
|
1021
|
+
|
|
1022
|
+
```css
|
|
1023
|
+
/* ============================================
|
|
1024
|
+
PROYECTO EJEMPLO - Paleta de Colores
|
|
1025
|
+
Tema basado en tonos de azul
|
|
1026
|
+
============================================ */
|
|
1027
|
+
|
|
1028
|
+
/* ============================================
|
|
1029
|
+
COLORES PRIMARIOS
|
|
1030
|
+
============================================ */
|
|
1031
|
+
|
|
1032
|
+
.colorPrimario {
|
|
1033
|
+
bgcolor: #0D47A1;
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
.colorPrimarioAccion {
|
|
1037
|
+
bgcolor: #1565C0;
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
.colorPrimarioMedio {
|
|
1041
|
+
bgcolor: #1976D2;
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
.colorPrimarioClaro {
|
|
1045
|
+
bgcolor: #1E88E5;
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1048
|
+
.colorPrimarioSuave {
|
|
1049
|
+
bgcolor: #42A5F5;
|
|
1050
|
+
}
|
|
1051
|
+
|
|
1052
|
+
.colorPrimarioPastel {
|
|
1053
|
+
bgcolor: #64B5F6;
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
.colorPrimarioHielo {
|
|
1057
|
+
bgcolor: #BBDEFB;
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1060
|
+
.colorPrimarioNieve {
|
|
1061
|
+
bgcolor: #E3F2FD;
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
/* ============================================
|
|
1065
|
+
COLORES DE ACENTO
|
|
1066
|
+
============================================ */
|
|
1067
|
+
|
|
1068
|
+
.colorAcento {
|
|
1069
|
+
bgcolor: #00BCD4;
|
|
1070
|
+
}
|
|
1071
|
+
|
|
1072
|
+
.colorAcentoClaro {
|
|
1073
|
+
bgcolor: #4DD0E1;
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1076
|
+
/* ============================================
|
|
1077
|
+
COLORES DE ESTADO
|
|
1078
|
+
============================================ */
|
|
1079
|
+
|
|
1080
|
+
.colorExito {
|
|
1081
|
+
bgcolor: #4CAF50;
|
|
1082
|
+
}
|
|
1083
|
+
|
|
1084
|
+
.colorAdvertencia {
|
|
1085
|
+
bgcolor: #FFC107;
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
.colorError {
|
|
1089
|
+
bgcolor: #F44336;
|
|
1090
|
+
}
|
|
1091
|
+
|
|
1092
|
+
.colorProgreso {
|
|
1093
|
+
bgcolor: #FF9800;
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1096
|
+
.colorInfo {
|
|
1097
|
+
bgcolor: #2196F3;
|
|
1098
|
+
}
|
|
1099
|
+
|
|
1100
|
+
/* ============================================
|
|
1101
|
+
COLORES NEUTROS
|
|
1102
|
+
============================================ */
|
|
1103
|
+
|
|
1104
|
+
.colorFondoBlanco {
|
|
1105
|
+
bgcolor: #FFFFFF;
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1108
|
+
.colorFondoGrisClaro {
|
|
1109
|
+
bgcolor: #F5F5F5;
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
.colorFondoGris {
|
|
1113
|
+
bgcolor: #EEEEEE;
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
.colorTextoOscuro {
|
|
1117
|
+
forecolor: #212121;
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
.colorTextoMedio {
|
|
1121
|
+
forecolor: #616161;
|
|
1122
|
+
}
|
|
1123
|
+
|
|
1124
|
+
.colorTextoClaro {
|
|
1125
|
+
forecolor: #9E9E9E;
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
.colorTextoBlanco {
|
|
1129
|
+
forecolor: #FFFFFF;
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
.colorBorde {
|
|
1133
|
+
border-color: #E0E0E0;
|
|
1134
|
+
}
|
|
1135
|
+
|
|
1136
|
+
.colorSeparador {
|
|
1137
|
+
bgcolor: #BDBDBD;
|
|
1138
|
+
}
|
|
1139
|
+
```
|
|
1140
|
+
|