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.
Files changed (187) hide show
  1. package/README.md +167 -0
  2. package/dist/agent/authEnDisco.js +56 -0
  3. package/dist/agent/authEnDisco.js.map +1 -0
  4. package/dist/agent/configEnDisco.js +109 -0
  5. package/dist/agent/configEnDisco.js.map +1 -0
  6. package/dist/agent/crearProyecto.js +34 -0
  7. package/dist/agent/crearProyecto.js.map +1 -0
  8. package/dist/agent/entorno.js +124 -0
  9. package/dist/agent/entorno.js.map +1 -0
  10. package/dist/agent/guionizado.js +53 -0
  11. package/dist/agent/guionizado.js.map +1 -0
  12. package/dist/agent/instantanea.js +129 -0
  13. package/dist/agent/instantanea.js.map +1 -0
  14. package/dist/agent/interrupts.js +83 -0
  15. package/dist/agent/interrupts.js.map +1 -0
  16. package/dist/agent/mensajes.js +24 -0
  17. package/dist/agent/mensajes.js.map +1 -0
  18. package/dist/agent/modelos.js +42 -0
  19. package/dist/agent/modelos.js.map +1 -0
  20. package/dist/agent/normalizar.js +20 -0
  21. package/dist/agent/normalizar.js.map +1 -0
  22. package/dist/agent/perfiles.js +103 -0
  23. package/dist/agent/perfiles.js.map +1 -0
  24. package/dist/agent/proyecto.js +107 -0
  25. package/dist/agent/proyecto.js.map +1 -0
  26. package/dist/agent/puente.js +142 -0
  27. package/dist/agent/puente.js.map +1 -0
  28. package/dist/agent/resumenDeTool.js +48 -0
  29. package/dist/agent/resumenDeTool.js.map +1 -0
  30. package/dist/agent/skills.js +65 -0
  31. package/dist/agent/skills.js.map +1 -0
  32. package/dist/agent/textoDeTool.js +113 -0
  33. package/dist/agent/textoDeTool.js.map +1 -0
  34. package/dist/agent/turnoReal.js +173 -0
  35. package/dist/agent/turnoReal.js.map +1 -0
  36. package/dist/agent/verificador.js +65 -0
  37. package/dist/agent/verificador.js.map +1 -0
  38. package/dist/agent/xoneAgent.js +106 -0
  39. package/dist/agent/xoneAgent.js.map +1 -0
  40. package/dist/bin.js +9 -0
  41. package/dist/bin.js.map +1 -0
  42. package/dist/cli/aprobar.js +82 -0
  43. package/dist/cli/aprobar.js.map +1 -0
  44. package/dist/cli/config.js +133 -0
  45. package/dist/cli/config.js.map +1 -0
  46. package/dist/cli/consola.js +346 -0
  47. package/dist/cli/consola.js.map +1 -0
  48. package/dist/cli/describe.js +53 -0
  49. package/dist/cli/describe.js.map +1 -0
  50. package/dist/cli/doctor.js +45 -0
  51. package/dist/cli/doctor.js.map +1 -0
  52. package/dist/cli/main.js +520 -0
  53. package/dist/cli/main.js.map +1 -0
  54. package/dist/cli/markdown.js +90 -0
  55. package/dist/cli/markdown.js.map +1 -0
  56. package/dist/cli/run.js +164 -0
  57. package/dist/cli/run.js.map +1 -0
  58. package/dist/cli/spinner.js +89 -0
  59. package/dist/cli/spinner.js.map +1 -0
  60. package/dist/cli/stdio.js +193 -0
  61. package/dist/cli/stdio.js.map +1 -0
  62. package/dist/cli/tema.js +40 -0
  63. package/dist/cli/tema.js.map +1 -0
  64. package/dist/cli/verify.js +62 -0
  65. package/dist/cli/verify.js.map +1 -0
  66. package/dist/core/bitacora.js +30 -0
  67. package/dist/core/bitacora.js.map +1 -0
  68. package/dist/core/config.js +236 -0
  69. package/dist/core/config.js.map +1 -0
  70. package/dist/core/contextos.js +56 -0
  71. package/dist/core/contextos.js.map +1 -0
  72. package/dist/core/deps.js +51 -0
  73. package/dist/core/deps.js.map +1 -0
  74. package/dist/core/diff.js +79 -0
  75. package/dist/core/diff.js.map +1 -0
  76. package/dist/core/esqueleto.js +366 -0
  77. package/dist/core/esqueleto.js.map +1 -0
  78. package/dist/core/events.js +2 -0
  79. package/dist/core/events.js.map +1 -0
  80. package/dist/core/modelos.js +85 -0
  81. package/dist/core/modelos.js.map +1 -0
  82. package/dist/core/notify.js +106 -0
  83. package/dist/core/notify.js.map +1 -0
  84. package/dist/core/ports.js +114 -0
  85. package/dist/core/ports.js.map +1 -0
  86. package/dist/core/turno.js +127 -0
  87. package/dist/core/turno.js.map +1 -0
  88. package/dist/vendor/hitl.js +103 -0
  89. package/dist/vendor/hitl.js.map +1 -0
  90. package/dist/vendor/skillLoaders/catalog.js +74 -0
  91. package/dist/vendor/skillLoaders/catalog.js.map +1 -0
  92. package/dist/vendor/tokenTracking.js +58 -0
  93. package/dist/vendor/tokenTracking.js.map +1 -0
  94. package/package.json +41 -0
  95. package/skills/xone-debugging/SKILL.md +52 -0
  96. package/skills/xone-debugging/references/faq.md +561 -0
  97. package/skills/xone-debugging/references/troubleshooting-y-glosario.md +429 -0
  98. package/skills/xone-development/SKILL.md +105 -0
  99. package/skills/xone-development/references/anti-patrones.md +94 -0
  100. package/skills/xone-development/references/css/atributos-por-categoria.md +509 -0
  101. package/skills/xone-development/references/css/buenas-practicas-y-parser.md +419 -0
  102. package/skills/xone-development/references/css/dinamicos-cascada-y-componentes.md +550 -0
  103. package/skills/xone-development/references/css/patrones-material-y-temas.md +1140 -0
  104. package/skills/xone-development/references/css/propiedades-y-herencia.md +885 -0
  105. package/skills/xone-development/references/css/selectores-unidades-colores.md +840 -0
  106. package/skills/xone-development/references/datos/appdata-referencia-ampliada.md +457 -0
  107. package/skills/xone-development/references/datos/appdata.md +611 -0
  108. package/skills/xone-development/references/datos/http-sqlmanager-y-crypto.md +720 -0
  109. package/skills/xone-development/references/datos/http.md +366 -0
  110. package/skills/xone-development/references/datos/oauth2-y-replica.md +156 -0
  111. package/skills/xone-development/references/device/biometria-imagedrawing-y-otros.md +544 -0
  112. package/skills/xone-development/references/device/objetos-de-dispositivo.md +583 -0
  113. package/skills/xone-development/references/device/systemsettings-referencia-ampliada.md +396 -0
  114. package/skills/xone-development/references/device/systemsettings-y-permisos.md +342 -0
  115. package/skills/xone-development/references/fundamentos/conceptos-clave.md +695 -0
  116. package/skills/xone-development/references/fundamentos/configuracion-app-xml-ini-mappings.md +668 -0
  117. package/skills/xone-development/references/fundamentos/errores-comunes.md +312 -0
  118. package/skills/xone-development/references/fundamentos/navegacion-convenciones-y-primer-proyecto.md +576 -0
  119. package/skills/xone-development/references/fundamentos/plataforma-y-anatomia-de-proyecto.md +387 -0
  120. package/skills/xone-development/references/indice-completo.md +77 -0
  121. package/skills/xone-development/references/javascript/coleccion-error-y-usuario.md +260 -0
  122. package/skills/xone-development/references/javascript/debugging-y-best-practices.md +245 -0
  123. package/skills/xone-development/references/javascript/metodos-de-los-controles.md +556 -0
  124. package/skills/xone-development/references/javascript/metodos-nativos-de-la-vista.md +114 -0
  125. package/skills/xone-development/references/javascript/motor-js-y-contexto-de-ejecucion.md +319 -0
  126. package/skills/xone-development/references/javascript/objeto-ai-llm-en-dispositivo.md +358 -0
  127. package/skills/xone-development/references/javascript/objetos-creables-a-m.md +527 -0
  128. package/skills/xone-development/references/javascript/objetos-creables-n-z.md +385 -0
  129. package/skills/xone-development/references/javascript/patrones-criticos-seguridad-y-rendimiento.md +595 -0
  130. package/skills/xone-development/references/javascript/patrones-de-navegacion-datos-y-codigo.md +751 -0
  131. package/skills/xone-development/references/javascript/patrones-de-ui-voz-integracion-y-seguridad.md +701 -0
  132. package/skills/xone-development/references/javascript/plantillas-y-funciones-utilitarias.md +647 -0
  133. package/skills/xone-development/references/javascript/self-y-dataobject.md +449 -0
  134. package/skills/xone-development/references/javascript/singletons-globales.md +361 -0
  135. package/skills/xone-development/references/javascript/ui-catalogo-de-metodos.md +464 -0
  136. package/skills/xone-development/references/javascript/ui-gps-camara-y-multimedia.md +506 -0
  137. package/skills/xone-development/references/javascript/ui-navegacion-mensajes-y-vista.md +422 -0
  138. package/skills/xone-development/references/resumen-js-datos-dispositivo.md +80 -0
  139. package/skills/xone-development/references/resumen-xml-y-css.md +74 -0
  140. package/skills/xone-development/references/tipos-de-prop.md +28 -0
  141. package/skills/xone-development/references/xml-ui/asfilter-visibilidad-eventos-y-macros.md +576 -0
  142. package/skills/xone-development/references/xml-ui/atributos-coll-group-frame.md +235 -0
  143. package/skills/xone-development/references/xml-ui/atributos-method-macro-script-event-app.md +244 -0
  144. package/skills/xone-development/references/xml-ui/atributos-prop.md +439 -0
  145. package/skills/xone-development/references/xml-ui/contents-y-macros.md +392 -0
  146. package/skills/xone-development/references/xml-ui/errores-comunes-xml.md +245 -0
  147. package/skills/xone-development/references/xml-ui/estructura-y-nodo-coll.md +326 -0
  148. package/skills/xone-development/references/xml-ui/eventos-ciclo-de-vida-e-interaccion.md +704 -0
  149. package/skills/xone-development/references/xml-ui/eventos-sistema-login-y-personalizados.md +944 -0
  150. package/skills/xone-development/references/xml-ui/layouts-herencia-y-buenas-practicas.md +618 -0
  151. package/skills/xone-development/references/xml-ui/mapas.md +685 -0
  152. package/skills/xone-development/references/xml-ui/mappings-y-colecciones-separadas.md +148 -0
  153. package/skills/xone-development/references/xml-ui/nodos-group-y-frame.md +666 -0
  154. package/skills/xone-development/references/xml-ui/patrones-de-pantalla.md +643 -0
  155. package/skills/xone-development/references/xml-ui/prop-atributos-y-condiciones.md +298 -0
  156. package/skills/xone-development/references/xml-ui/prop-tipos-basicos.md +493 -0
  157. package/skills/xone-development/references/xml-ui/prop-tipos-combos-y-controles.md +664 -0
  158. package/skills/xone-development/references/xml-ui/prop-tipos-listas-y-mapas.md +412 -0
  159. package/skills/xone-plan-builder/SKILL.md +183 -0
  160. package/skills/xone-plan-builder/agents/openai.yaml +5 -0
  161. package/skills/xone-plan-builder/references/TASKS-FORMAT.md +132 -0
  162. package/skills/xone-project-generator/SKILL.md +111 -0
  163. package/skills/xone-project-generator/references/canonical-sizes.md +292 -0
  164. package/skills/xone-project-generator/references/colecciones-base.md +16 -0
  165. package/skills/xone-project-generator/references/convenciones-de-nombres.md +16 -0
  166. package/skills/xone-project-generator/references/ejemplos-por-sector-y-prohibiciones.md +140 -0
  167. package/skills/xone-project-generator/references/fase-3-estilos-css.md +597 -0
  168. package/skills/xone-project-generator/references/fase-6-colecciones.md +762 -0
  169. package/skills/xone-project-generator/references/fase-7-asfilter-e-integraciones.md +142 -0
  170. package/skills/xone-project-generator/references/fase-7-entidades-y-estructura-de-pantalla.md +494 -0
  171. package/skills/xone-project-generator/references/fase-7-plantilla-consola.md +477 -0
  172. package/skills/xone-project-generator/references/fase-7-plantillas-de-pantalla.md +302 -0
  173. package/skills/xone-project-generator/references/fase-7-viewmodes-graficos-y-listas.md +681 -0
  174. package/skills/xone-project-generator/references/fase-7-viewmodes-mapa-y-calendario.md +479 -0
  175. package/skills/xone-project-generator/references/fases-0-2-analisis-y-modelo-de-datos.md +350 -0
  176. package/skills/xone-project-generator/references/fases-10-12-readmes-y-validacion.md +194 -0
  177. package/skills/xone-project-generator/references/fases-4-5-estructura-y-configuracion.md +587 -0
  178. package/skills/xone-project-generator/references/fases-8-9-eventos-y-javascript.md +861 -0
  179. package/skills/xone-project-generator/references/flujo-de-generacion.md +67 -0
  180. package/skills/xone-project-generator/references/plantillas-estandar.md +98 -0
  181. package/skills/xone-project-generator/references/tamanos-canonicos.md +49 -0
  182. package/skills/xone-review/SKILL.md +189 -0
  183. package/skills/xone-spec-builder/SKILL.md +235 -0
  184. package/skills/xone-spec-builder/agents/openai.yaml +5 -0
  185. package/skills/xone-spec-builder/references/ADR-FORMAT.md +55 -0
  186. package/skills/xone-spec-builder/references/CONTEXT-FORMAT.md +42 -0
  187. package/skills/xone-spec-builder/references/PLAN-FORMAT.md +120 -0
@@ -0,0 +1,132 @@
1
+ # TASKS.md Format
2
+
3
+ `TASKS.md` es el entregable de `xone-plan-builder`: el plan de ejecución que `xone-project-generator` (app nueva) o `xone-development` (sobre existente) consumen una tarea a la vez.
4
+
5
+ ## Estructura
6
+
7
+ ```md
8
+ # Plan de ejecución — {Título del desarrollo}
9
+
10
+ **Spec de origen:** PLAN.md
11
+ **Tipo:** {app nueva | feature | refactor | integración de dispositivo | cambio de modelo de datos | rediseño de pantalla}
12
+ **Proyecto:** {nombre del proyecto XOne; "nuevo" si es app nueva}
13
+
14
+ ## Tareas
15
+
16
+ ### 01 — {Título}
17
+
18
+ **Qué entrega:** {comportamiento end-to-end, desde la perspectiva del usuario — no una lista de capas. Qué se puede demostrar o verificar al cerrar esta tarea.}
19
+ **Bloqueada por:** Ninguna — puede empezar ya
20
+ **Notas:** {opcional: si el spec dejó algo pendiente que afecta a esta tarea, o si hay una decisión de prefactor que conviene señalar}
21
+
22
+ - [ ] Criterio de aceptación 1
23
+ - [ ] Criterio de aceptación 2
24
+
25
+ ### 02 — {Título}
26
+
27
+ **Qué entrega:** …
28
+ **Bloqueada por:** 01
29
+ **Notas:** …
30
+
31
+ - [ ] Criterio de aceptación 1
32
+ - [ ] Criterio de aceptación 2
33
+
34
+ ## Orden de ejecución
35
+
36
+ {lista numerada en orden de dependencias, o un grafo simple. Ejemplo:}
37
+
38
+ 1. 01 — Estructura base y mappings
39
+ 2. 02 — Coll Clientes + pantalla lista + edición
40
+ 3. 03 — Coll Pedidos + pantalla lista + edición (bloqueada por 01, 02)
41
+ 4. 04 — Contents de LineasPedido en Pedidos edición (bloqueada por 03)
42
+ 5. 05 — Login + EntradaApp + MenuPrincipal (bloqueada por 01)
43
+ 6. 06 — Integración GPS + ClientesMapa (bloqueada por 02)
44
+ 7. 07 — Firma DR en Pedidos (bloqueada por 03)
45
+ 8. 08 — Estilo: default.css completo + variantes (en paralelo desde 01)
46
+ 9. 09 — Validación xone-review (bloqueada por 02-08)
47
+
48
+ ## Hitos
49
+
50
+ {si aplica: qué conjunto de tareas forma un hito verificable. Ejemplo:}
51
+
52
+ - **Hito 1 — CRUD básico:** tareas 01-04. Al cerrar, validar con xone-review.
53
+ - **Hito 2 — App completa:** tareas 05-09. Validación final.
54
+ ```
55
+
56
+ ## Plantilla por tarea
57
+
58
+ ```md
59
+ ### NN — {Título}
60
+
61
+ **Qué entrega:** el comportamiento end-to-end que esta tarea hace funcionar, desde la perspectiva del usuario — no una lista de capas a implementar.
62
+
63
+ **Bloqueada por:** los números/títulos de las tareas que gatean ésta, o "Ninguna — puede empezar ya".
64
+
65
+ **Notas:** (opcional) algo que el spec dejó pendiente que afecta a esta tarea, o una decisión de prefactor.
66
+
67
+ - [ ] Criterio de aceptación 1
68
+ - [ ] Criterio de aceptación 2
69
+ ```
70
+
71
+ ## Reglas
72
+
73
+ - **Una tarea = un context window.** Si una tarea no cabe en una sesión de agente fresca, pártela en dos.
74
+ - **Qué entrega, no cómo.** Describe el comportamiento logrado, no la lista de archivos a tocar. El ejecutor (`xone-project-generator` o `xone-development`) decide cómo.
75
+ - **Bloqueada por, no "después de".** Las dependencias son gateadores: una tarea no puede empezar hasta que todas las que la bloquean están cerradas.
76
+ - **Decisiones, no código.** Sin XML/JS/CSS pegado. Excepción: si un snippet codifica una decisión más preciso que prosa (esquema, state machine), inclúyelo y nota su origen.
77
+ - **Nombres consistentes con el spec**, y el `MAP_` según `xone-development`.
78
+ - **Evita rutas de archivo específicas.** Envejecen rápido. El ejecutor las infiere del spec y del proyecto.
79
+ - **Criterios de aceptación verificables.** Cada criterio debe poder comprobarse —con `xone-review`, con un smoke, o con un comportamiento observable.
80
+ - **La validación es una tarea.** Cada hito cierra con una tarea `xone-review`, o al menos una al final del plan.
81
+
82
+ ## Ejemplo: feature sobre existente
83
+
84
+ ```md
85
+ # Plan de ejecución — Firma de entrega en Pedidos
86
+
87
+ **Spec de origen:** PLAN.md
88
+ **Tipo:** feature
89
+ **Proyecto:** GestiónComercial (existente)
90
+
91
+ ## Tareas
92
+
93
+ ### 01 — Prefactor: migrar inicialización de Pedidos de load a before-edit
94
+
95
+ **Qué entrega:** Pedidos se inicializa con before-edit en vez de load, sin cambio de comportamiento visible. Desbloquea añadir la firma sin mezclar con el anti-patrón existente.
96
+ **Bloqueada por:** Ninguna — puede empezar ya
97
+ **Notas:** El spec señala que el proyecto usa load en Pedidos; conviene migrar antes de tocar la coll.
98
+
99
+ - [ ] Pedidos inicializa en before-edit, no en load
100
+ - [ ] xone-simulator validate pasa sin warnings de ANTIPATTERN_LOAD_EVENT
101
+ - [ ] Comportamiento de edición de Pedidos sin regresión
102
+
103
+ ### 02 — Añadir prop DR de firma en Pedidos edición
104
+
105
+ **Qué entrega:** La pantalla de edición de Pedidos muestra un campo de firma digital (type="DR") que el usuario puede firmar y guardar.
106
+ **Bloqueada por:** 01
107
+
108
+ - [ ] Prop type="DR" visible en edición de Pedidos
109
+ - [ ] ui.saveDrawing guarda la firma en el campo
110
+ - [ ] ui.clearDrawing limpia la firma
111
+ - [ ] La firma persiste al guardar el pedido
112
+
113
+ ### 03 — Validación
114
+
115
+ **Qué entrega:** El cambio pasa xone-simulator limpio y el smoke renderiza la firma correctamente.
116
+ **Bloqueada por:** 02
117
+
118
+ - [ ] xone-simulator validate sin errores
119
+ - [ ] xone-simulator smoke renderiza Pedidos edición con el campo DR
120
+ ```
121
+
122
+ ## Checklist de cierre
123
+
124
+ Antes de entregar el plan:
125
+
126
+ - [ ] Cada tarea es un corte vertical completo y verificable.
127
+ - [ ] Cada tarea declara sus dependencias correctamente.
128
+ - [ ] El orden respeta las dependencias naturales de XOne (mappings → colls → pantallas → integraciones → estilo → validación).
129
+ - [ ] No hay tareas que dependan de cosas que el spec no especifica —o están marcadas como notas.
130
+ - [ ] El usuario aprobó el desglose.
131
+ - [ ] Las tareas de validación xone-review están en su sitio.
132
+ - [ ] Los hitos (si los hay) están definidos y cierran con validación.
@@ -0,0 +1,111 @@
1
+ ---
2
+ name: xone-project-generator
3
+ description: Generación de proyectos XOne completos a partir de descripciones en lenguaje natural. Usar al crear un proyecto XOne desde cero (estructura de carpetas bd/icons/files/fonts, app.xml, app.ini, mappings.xne con Empresas y Usuarios, colecciones .xne, pantallas, default.css, functions.js, splash), seguir el flujo de generación de 12 fases o elegir tamaños canónicos width/height/fontsize. Las reglas y anti-patrones de XML, JavaScript y CSS viven en xone-development.
4
+ ---
5
+
6
+ # XOne Project Generator & Development Assistant
7
+
8
+ Eres un experto en la plataforma XOne para desarrollo de aplicaciones móviles nativas (Android e iOS). Tu conocimiento se basa EXCLUSIVAMENTE en los archivos de recursos incluidos en este skill.
9
+
10
+ ---
11
+
12
+ ## Capacidades
13
+
14
+
15
+ ### 1. Generación de Proyectos
16
+ Creas proyectos XOne completos a partir de descripciones en lenguaje natural:
17
+ - Estructura de carpetas completa (`bd/`, `icons/`, `files/`, `fonts/`)
18
+ - Archivos de configuración (`app.xml`, `app.ini`, `mappings.xne`)
19
+ - Modelo de datos con colecciones y relaciones
20
+ - Pantallas con layout, navegación y eventos
21
+ - Estilos CSS propietarios de XOne
22
+ - Funciones JavaScript globales y especificas
23
+ - Documentación README en cada carpeta
24
+
25
+ ### 2. Asistencia en Desarrollo
26
+ Respondes preguntas, depuras problemas y guías el desarrollo en XOne:
27
+ - Estructura y atributos de archivos XML (.xne)
28
+ - API JavaScript de XOne (`ui`, `self`, `appData`, `$http`, `deviceInfo`, `systemSettings`)
29
+ - CSS propietario de XOne
30
+ - Patrones de navegación y flujo de pantallas
31
+ - Integraciones con hardware (camara, GPS, firma digital DR, escaner)
32
+ - Modelo de datos y persistencia en SQLite
33
+
34
+ ---
35
+
36
+ ## Archivos de Referencia
37
+
38
+
39
+ Consulta SIEMPRE estos archivos antes de responder. **Este `SKILL.md` es la referencia CORTA**: una lectura por omisión trae ~100 líneas (`DEFAULT_READ_LIMIT`), así que aquí solo van las capacidades, este índice y las reglas críticas; todo lo demás —flujo, plantillas, tamaños y nombres— vive abajo y cada fichero cabe entero. Están incluidos en la carpeta `references/` de este skill:
40
+
41
+ | Fase / tema | Archivo |
42
+ |---|---|
43
+ | **Tamaños canónicos.** Consultar **antes** de poner cualquier `width`, `height` o `fontsize` | [references/canonical-sizes.md](references/canonical-sizes.md) |
44
+ | Fases 0-2: diagrama de flujo, análisis de requisitos, diseño del modelo de datos | [references/fases-0-2-analisis-y-modelo-de-datos.md](references/fases-0-2-analisis-y-modelo-de-datos.md) |
45
+ | Fase 3: estilos CSS, plantillas `default.css` y `colors.css`, transparencias alpha | [references/fase-3-estilos-css.md](references/fase-3-estilos-css.md) |
46
+ | Fases 4-5: estructura de carpetas, ficheros raíz, splash, `app.xml`, escalado y resoluciones, `app.ini`, `license.ini`, `mappings.xne` | [references/fases-4-5-estructura-y-configuracion.md](references/fases-4-5-estructura-y-configuracion.md) |
47
+ | Fase 6: generación de colecciones, prefijo `MAP_`, atributos de `coll` y `prop`, `inherits`, `include-layout`, relaciones y modos de edición | [references/fase-6-colecciones.md](references/fase-6-colecciones.md) |
48
+ | Fase 7: plantillas de pantalla base (`EntradaApp`, `MenuPrincipal`, `Login`) | [references/fase-7-plantillas-de-pantalla.md](references/fase-7-plantillas-de-pantalla.md) |
49
+ | Fase 7: plantilla `Consola.xne` completa | [references/fase-7-plantilla-consola.md](references/fase-7-plantilla-consola.md) |
50
+ | Fase 7: pantallas de entidad (lista, detalle, mapa, configuración) y estructura con `group` y `frame` | [references/fase-7-entidades-y-estructura-de-pantalla.md](references/fase-7-entidades-y-estructura-de-pantalla.md) |
51
+ | Fase 7: viewmodes de mapa y calendario | [references/fase-7-viewmodes-mapa-y-calendario.md](references/fase-7-viewmodes-mapa-y-calendario.md) |
52
+ | Fase 7: viewmodes de gráficos, picturemap, slideview, expanview, gridview y `contentselitem` | [references/fase-7-viewmodes-graficos-y-listas.md](references/fase-7-viewmodes-graficos-y-listas.md) |
53
+ | Fase 7: `asfilter` y objetos complementarios de integración | [references/fase-7-asfilter-e-integraciones.md](references/fase-7-asfilter-e-integraciones.md) |
54
+ | Fases 8-9: eventos, permisos Android, `functions.js` | [references/fases-8-9-eventos-y-javascript.md](references/fases-8-9-eventos-y-javascript.md) |
55
+ | Fases 10-12: READMEs, base de datos, datos iniciales, iconos y checklist de validación | [references/fases-10-12-readmes-y-validacion.md](references/fases-10-12-readmes-y-validacion.md) |
56
+ | **El flujo de generación**, paso a paso | [references/flujo-de-generacion.md](references/flujo-de-generacion.md) |
57
+ | **Las TRES plantillas estándar**: pantalla, **colección de DATOS** y `mappings.xne` | [references/plantillas-estandar.md](references/plantillas-estandar.md) |
58
+ | **Campos mínimos y `progid` de las colecciones base** (`Empresas`, `Usuarios`) | [references/colecciones-base.md](references/colecciones-base.md) |
59
+ | Convenciones de nombres de colls, props y ficheros | [references/convenciones-de-nombres.md](references/convenciones-de-nombres.md) |
60
+ | Ejemplos por sector y prohibiciones explícitas | [references/ejemplos-por-sector-y-prohibiciones.md](references/ejemplos-por-sector-y-prohibiciones.md) |
61
+
62
+ ---
63
+
64
+ ## REGLAS CRITICAS
65
+
66
+
67
+ ### Regla Fundamental
68
+
69
+ > **TODAS las decisiones de desarrollo DEBEN basarse en los archivos de referencia de este skill, NUNCA en conocimiento externo o suposiciones.**
70
+
71
+ ### Proceso de Decisión Obligatorio
72
+
73
+ Antes de escribir cualquier código:
74
+
75
+ 1. ¿Existe documentación sobre esto en los archivos de referencia? **SI** -> Seguir la documentación exactamente. **NO** -> Preguntar al usuario.
76
+ 2. ¿El atributo/función/propiedad esta documentado? **SI** -> Usar solo los valores documentados. **NO** -> NO inventar, buscar alternativas documentadas o preguntar.
77
+
78
+ ### Prohibiciones Explicitas
79
+
80
+ Las prohibiciones de generación no se repiten aquí: viven en `xone-development/SKILL.md` (secciones «Siempre» y «Nunca», sintaxis JS soportada, tipos de prop, unicidad de nombres y anti-patrones). Léelas allí antes de generar una línea de XML, JS o CSS — un proyecto generado que las viole falla igual que uno escrito a mano.
81
+
82
+ ### Herencia entre Colecciones (`inherits`) y Composición XML (`<include-layout>`)
83
+
84
+ Antes de duplicar estructura entre varias colecciones (header, footer, botones comunes, eventos compartidos), evaluar si usar uno de los dos mecanismos de reutilización XML de XOne:
85
+
86
+ - **`inherits`** en `<coll>`: la coleccion hija hereda grupos, frames, props y eventos del padre. En duplicidad prevalece la hija. Admite cadenas (A->B->C) pero NO herencia multiple. Uso típico: scaffolding visual compartido en una coll `special="true"` reutilizada por varias pantallas.
87
+ - **`<include-layout file="..." group="..." frame="..." />`**: nodo hijo de `<coll>` que inyecta el contenido de un XML externo (raiz `<xml>`, encoding `utf-8`, estructura plana). Útil para factorizar botoneras o fragmentos repetidos. No se pueden anidar.
88
+
89
+ Regla de decisión rápida:
90
+ - **3+ pantallas comparten estructura** -> crear coll base `special="true"` y usar `inherits`.
91
+ - **Fragmentos repetidos (botoneras, bloques de props)** -> extraer a fichero XML externo con `<include-layout>`.
92
+ - **1-2 pantallas parecidas** -> normalmente duplicar es más claro; no sobre-abstraer.
93
+
94
+ Prohibiciones:
95
+ - **NO** usar `inherits` multiple (sintaxis `inherits="A,B"` no existe).
96
+ - **NO** anidar `<include-layout>` dentro de un fichero incluido.
97
+ - **NO** usar encoding `iso-8859-15` en ficheros de `<include-layout>` — usar `utf-8`. (Los `.xne` siguen siendo `iso-8859-15`; solo los ficheros incluidos por `<include-layout>` usan `utf-8`.)
98
+ - **NO** poner `<coll>` como raiz del fichero incluido — la raiz debe ser `<xml>`.
99
+
100
+ Referencia completa: [references/fase-6-colecciones.md](references/fase-6-colecciones.md) §6.5b.
101
+
102
+ **Los campos mínimos obligatorios de las colecciones base** (`Empresas`, `Usuarios`
103
+ y el resto, con su `progid`) están en
104
+ [`references/colecciones-base.md`](references/colecciones-base.md).
105
+ ## Recursos adicionales
106
+
107
+
108
+ El índice completo de referencias está en la sección «Archivos de Referencia» de este mismo fichero.
109
+
110
+ Para el detalle de cualquier atributo, API o regla durante la generación, usa `xone-development` (fundamentos y reglas transversales) y su índice de referencias. Al terminar, valida y audita con `xone-review`.
111
+
@@ -0,0 +1,292 @@
1
+ # Tamaños canónicos por tipo de elemento
2
+
3
+ Valores de referencia para `width`, `height`, `fieldsize` y dimensiones de iconos en XOne. **Calibrados para el dispositivo de referencia por defecto: `resolution-width="1080"` / `resolution-height="1920"`.**
4
+
5
+ > **REGLA CRÍTICA:** En XOne **`p` ≠ `dp`**. 1p = 1px en el dispositivo de referencia. Material 56dp en 1080×1920 (xxhdpi, density 3×) son **168p**, no 56p. Todos los valores de esta tabla están en `p` reales para 1080×1920. Si el proyecto usa otra `resolution-width`, escalar proporcionalmente.
6
+
7
+ **Úsalos como punto de partida, no como verdad absoluta.** Sin captura del render real es imposible afinar al píxel — pero estos valores cubren el ~80% de los casos y evitan los errores típicos (frames que desbordan, botones por debajo del touch target, imágenes distorsionadas).
8
+
9
+ ---
10
+
11
+ ## 1. Reglas heurísticas (decidir el valor)
12
+
13
+ Antes de poner un número, aplica estas reglas en orden:
14
+
15
+ 1. **Header, footer, toolbar, drawer fijos** → `height` en `Np` (absoluto, calibrado para 1920).
16
+ 2. **Frame body principal entre header y footer fijos** → `height="-2"` (wrap content) **o** `height="100%"` con `scroll="true"`. NUNCA un `%` calculado a mano restando los fijos — el motor no garantiza el cálculo.
17
+ 3. **Contenido vertical apilado dentro de un frame** → `height="-2"` y dejar que el contenido mande. Solo fijar `Np` si necesitas una altura mínima visual.
18
+ 4. **Imágenes, avatares, iconos** → `Np` fijos en **ambos** ejes para preservar aspecto. NUNCA `width="100%" height="100%"` en una imagen.
19
+ 5. **Botones** → `width` en `%`, `height` en `Np`. El touch target mínimo es **144p** (Material 48dp × 3 para xxhdpi).
20
+ 6. **Inputs de texto** → `width="95%"` o `"100%"`, `height` en `Np` (mínimo 144p).
21
+ 7. **Si dos elementos van en la misma fila** → cada uno con `width` `%` que sume ≤ 100%, el segundo con `newline="false"`.
22
+ 8. **Los `%` se refieren al padre directo**, no a la pantalla. Tres frames hermanos con `height="40%"` desbordan (120%).
23
+ 9. **`<prop>` tiene 2 columnas internas (label + valor)**: si `labelwidth="50"` y `width="50%"`, el valor queda con la mitad del 50% disponible, no con el 50% de la fila.
24
+
25
+ ---
26
+
27
+ ## 2. Frames estructurales
28
+
29
+ | Elemento | width | height | Notas |
30
+ |---|---|---|---|
31
+ | TopBar / BottomBar | `100%` | `164p` | Toolbar Material 56dp |
32
+ | Header fijo completo (TopBar + tabs) | `100%` | `404p` | Workflow estándar |
33
+ | Header con avatar + texto (2 líneas) | `100%` | `240p` | |
34
+ | Header pantalla de perfil (con foto grande) | `100%` | `600p`–`720p` | Avatar XL 360p–480p |
35
+ | Body de pantalla (entre header/footer fijos) | `100%` | `-2` o `100%` con `scroll="true"` | |
36
+ | Footer fijo con 1 botón principal | `100%` | `216p`–`288p` | Botón 124p + márgenes |
37
+ | Footer con 2-3 botones en fila | `100%` | `216p` | |
38
+ | Footer barra de navegación (bottom nav) | `100%` | `168p` | Material 56dp |
39
+ | Drawer lateral (menú) | `840p`–`960p` | `100%` | Material 280-320dp |
40
+ | Bottom sheet (peek collapsed) | `100%` | `300p`–`600p` | Atributo `peek-height` |
41
+ | Bottom sheet (expanded) | `100%` | `60%`–`80%` | |
42
+ | Tarjeta (card) | `95%` o `100%` | `-2` | Altura por contenido |
43
+ | Tarjeta de métrica (KPI numérico) | `48%` (2 cols) o `31%` (3 cols) | `360p`–`480p` | |
44
+ | Modal / diálogo flotante | `840p` (= 78%) | `-2` o `60%` | Valor workflow |
45
+ | Snackbar / banner | `100%` | `144p`–`168p` | |
46
+
47
+ ---
48
+
49
+ ## 3. Botones
50
+
51
+ | Elemento | width | height | Notas |
52
+ |---|---|---|---|
53
+ | Botón primario / CTA grande | `90%`–`100%` | `124p` | Workflow "pill" |
54
+ | Botón secundario | `90%`–`100%` | `124p` | Borde, sin relleno |
55
+ | Botón compacto en fila | `-2` o `Np` (360-480p) | `120p`–`144p` | |
56
+ | Botón texto pequeño (estilo link) | `-2` | `108p`–`120p` | |
57
+ | Botón "Atrás" / "Cancelar" en footer | `30%`–`40%` | `124p` | Combinado con `Aceptar` 60% |
58
+ | FAB circular estándar | `168p` | `168p` | Material 56dp; `border-corner-radius: 84` |
59
+ | FAB mini | `120p` | `120p` | Material 40dp |
60
+ | FAB grande | `288p`–`336p` | igual | |
61
+ | FAB extendido (texto + icono) | `-2` (mín 240p) | `168p` | |
62
+ | Chip / etiqueta seleccionable | `-2` | `96p`–`120p` | `border-corner-radius` ≈ height/2 |
63
+ | Icon button (toolbar) | `104p` | `104p` | Workflow icono cuadrado; `labelwidth: 0` |
64
+ | Botón pestaña (tab) | reparto `%` igual | `144p` | Si 3 tabs: 33% cada uno |
65
+ | Toggle / switch | `-2` | `144p` | |
66
+ | Botón de menú hamburguesa | `104p` | `104p` | |
67
+
68
+ ---
69
+
70
+ ## 4. Inputs y campos de formulario
71
+
72
+ | Elemento | width | height | fieldsize | Notas |
73
+ |---|---|---|---|---|
74
+ | Input texto línea (1 por fila) | `95%`–`100%` | `144p` | según `size` | Workflow Campo T |
75
+ | Input texto compacto (2 por fila) | `48%` | `144p` | 15-20 | |
76
+ | Input numérico corto | `30%`–`50%` | `144p` | 8-10 | |
77
+ | Área de texto multilínea (notas) | `95%`–`100%` | `360p`–`600p` o `-2` | | `multiline="true"` |
78
+ | Checkbox / switch (tipo `NC`) | `100%` o `-2` | `144p` | | `labelwidth` 70-80% |
79
+ | Combo / selector (`mapcol`) | `95%`–`100%` | `144p` | | |
80
+ | Date picker (`type="D"`) | `95%`–`100%` o `48%` | `144p` | | `img-date-width: 72p` |
81
+ | Time picker (`type="TT"`) | `48%` | `144p` | | |
82
+ | DateTime picker (`type="DT"`) | `95%`–`100%` | `144p` | | |
83
+ | Stepper numérico (`viewmode="stepper"`) | `360p`–`480p` | `144p` | | |
84
+ | OTP 4 dígitos (`viewmode="otp"`) | `-2` | `192p` | | `box-size: 144p` |
85
+ | OTP 6 dígitos | `-2` | `192p` | | `box-size: 120p`–`144p` |
86
+ | Slider (`viewmode="slider"`) | `90%` | `144p` | | |
87
+ | Firma (`type="DR"`) | `95%`–`100%` | `600p`–`720p` | | `stroke-width: 4`–`8` |
88
+ | Búsqueda (search bar) | `100%` | `144p` | | En header o como prop con `is-search="true"` |
89
+ | Etiqueta (`type="L"`) sobre input | `100%` o `-2` | `-2` o `96p` | | Workflow Label L: 96p; `fontsize` 5-6 |
90
+
91
+ ---
92
+
93
+ ## 5. Listas e items (dentro de `<contents>`)
94
+
95
+ | Elemento | width | height | Notas |
96
+ |---|---|---|---|
97
+ | Item lista 1 línea (solo título) | `100%` | `144p` | Material 48dp |
98
+ | Item lista 2 líneas (título + subtítulo) | `100%` | `192p`–`216p` | Material 64-72dp |
99
+ | Item lista 3 líneas | `100%` | `264p` | |
100
+ | Item lista con avatar pequeño | `100%` | `192p` | Avatar 120p–144p |
101
+ | Item lista con avatar + 2 líneas | `100%` | `216p` | |
102
+ | Item lista con thumbnail (imagen lateral) | `100%` | `240p`–`288p` | Thumbnail 192p–216p |
103
+ | Item con foto destacada (estilo card) | `95%` | `-2` o `600p` | |
104
+ | Item de chat (burbuja) | `-2` (máx 75%) | `-2` | Saliente con `lmargin`/`rmargin` |
105
+ | Card en grid 2 columnas | `48%` | `-2` o `480p`–`600p` | + `newline="false"` |
106
+ | Card en grid 3 columnas | `31%` | `-2` o `360p` | |
107
+ | Card en grid 4 columnas | `23%` | `-2` o `300p` | |
108
+ | Item de Kanban (card en columna) | `100%` (de la columna) | `-2` | |
109
+
110
+ ---
111
+
112
+ ## 6. Imágenes, avatares e iconos
113
+
114
+ | Elemento | width | height | Notas |
115
+ |---|---|---|---|
116
+ | Avatar XS (chip, lista muy densa) | `72p` | `72p` | Material 24dp |
117
+ | Avatar S (lista densa, header compacto) | `96p` | `96p` | Material 32dp |
118
+ | Avatar M (lista normal) | `120p`–`144p` | igual | Material 40-48dp |
119
+ | Avatar L (header grande, detalle) | `192p`–`240p` | igual | Material 64-80dp |
120
+ | Avatar XL (perfil principal) | `288p`–`360p` | igual | Material 96-120dp |
121
+ | Avatar XXL (pantalla de perfil) | `420p`–`600p` | igual | |
122
+ | Logo en splash (fichero `splash.png`) | gestionado por framework | — | NO se controla con CSS |
123
+ | Logo en header | `360p`–`600p` | proporcional o `120p`–`164p` alto | |
124
+ | Icono en toolbar (icon button) | `72p` | `72p` | Material 24dp; `img-width`/`img-height` |
125
+ | Icono en FAB | `72p`–`84p` | igual | |
126
+ | Icono en botón con texto | `54p`–`72p` | igual | |
127
+ | Icono en bottom nav | `72p` | `72p` | |
128
+ | Icono en item de lista | `72p`–`96p` | igual | |
129
+ | Icono grande (estado vacío, ilustración) | `288p`–`480p` | igual | |
130
+ | Foto preview (full width) | `100%` | `600p`–`720p` o `40%` | |
131
+ | Foto preview (hero / cabecera) | `100%` | `600p`–`840p` | |
132
+ | Foto miniatura cuadrada | `192p`–`288p` | igual | |
133
+ | Foto en grid (galería 3 cols) | `31%` | igual al width | Cuadrada |
134
+ | Tipo `PH` (foto cámara) | `95%`–`100%` | `600p`–`840p` o `30%`–`40%` | |
135
+ | Tipo `VD` (vídeo / scanner QR) | `95%`–`100%` | `600p`–`840p` o `40%` | |
136
+
137
+ ---
138
+
139
+ ## 7. Separadores, badges y elementos auxiliares
140
+
141
+ | Elemento | width | height | Notas |
142
+ |---|---|---|---|
143
+ | Separador horizontal (línea fina) | `100%` | `4p` | Workflow; `bgcolor` gris claro `#E0E0E0` |
144
+ | Separador medio (indicador de pestaña) | `100%` | `8p` | Workflow |
145
+ | Separador con texto centrado | `100%` | `120p`–`144p` | |
146
+ | Espaciador vertical pequeño | `100%` | `24p` | |
147
+ | Espaciador vertical medio | `100%` | `48p` | |
148
+ | Espaciador vertical grande | `100%` | `72p`–`96p` | |
149
+ | Badge / contador numérico | `-2` (mín 60p) | `60p`–`84p` | `border-corner-radius` ≈ height/2 |
150
+ | Indicador de progreso (barra) | `90%`–`100%` | `12p`–`24p` | |
151
+ | Indicador de progreso circular | `96p`–`144p` | igual | |
152
+ | Divider de sección (con título) | `100%` | `-2` | Solo texto + tmargin/bmargin |
153
+
154
+ ---
155
+
156
+ ## 8. Tipografía (`fontsize`) — escala XOne 1-12
157
+
158
+ > **`fontsize` en XOne NO está en puntos tipográficos ni en `dp`.** Es una **escala propia 1-12** a la que el runtime SUMA el factor de la plataforma (`puntos = fontsize + factor`; en iPad, `+4` más). El factor va en `app.xml`, **uno por plataforma**: `ios-font-factor` y `android-font-factor`. **Valores del proyecto: `android-font-factor="7"`, `ios-font-factor="8"`.** NO mapear directamente a Material `10sp`–`32sp`.
159
+
160
+ | Rango | Uso típico |
161
+ |---|---|
162
+ | 1–2 | Mínimos, contadores, marcas de tiempo |
163
+ | 3–4 | Textos secundarios, metadatos, fechas |
164
+ | **5** | **Texto estándar de campos y labels — el más usado** |
165
+ | 6–7 | Títulos de sección, pestañas, números destacados |
166
+ | 8–9 | Títulos de tarjeta, subtítulos de pantalla |
167
+ | 10–11 | Títulos de topbar, cabeceras de modal |
168
+ | 12 | Títulos grandes, nombre de la app |
169
+
170
+ Recomendado: definir clases CSS reutilizables `.font5`, `.font7`, `.font10` y aplicar con `class="font7 font-bold"`.
171
+
172
+ ---
173
+
174
+ ## 9. Áreas especiales
175
+
176
+ | Elemento | width | height | Notas |
177
+ |---|---|---|---|
178
+ | Mapa (`type="Z" viewmode="mapview"`) | `100%` | `600p`–`1200p` o `40%`–`60%` | |
179
+ | Calendario (`viewmode="calendarview"`) | `100%` | `900p`–`1200p` o `50%` | |
180
+ | Gráfico (chart) | `95%`–`100%` | `600p`–`900p` o `40%` | |
181
+ | WebView (`type="WEB"`) | `100%` | `100%` con scroll o `Np` fijo | |
182
+ | HTML embebido (`type="THTML"`) | `100%` | `-2` o `Np` según contenido | |
183
+ | Stepper de progreso horizontal | `100%` | `144p`–`192p` | |
184
+ | CoverFlow (`viewmode="coverflow"`) | `100%` | `600p`–`960p` | |
185
+ | Lista de propiedades multinivel | `100%` | `-2` con `scroll="true"` en el padre | |
186
+ | Tab bar (`<group>` con tabs) | `100%` | `144p` para la barra de tabs | |
187
+
188
+ ---
189
+
190
+ ## 10. Márgenes y padding (`tmargin`, `bmargin`, `lmargin`, `rmargin`)
191
+
192
+ Valores autoritativos del workflow §5.1b:
193
+
194
+ | Caso | Valor |
195
+ |---|---|
196
+ | Margen entre elementos del **mismo bloque** | `tmargin="30p"` |
197
+ | Margen entre **bloques distintos** | `tmargin="50p"` |
198
+ | Margen lateral del contenido respecto al borde | `lmargin="50p"` / `rmargin="50p"` |
199
+ | Padding interno de tarjeta | `tpadding`/`bpadding`/`lpadding`/`rpadding` `30p`–`50p` |
200
+ | Margen vertical entre cards en grid | `tmargin="30p"` `bmargin="30p"` |
201
+
202
+ ---
203
+
204
+ ## 11. Wearable (Wear OS)
205
+
206
+ Para `default_wear.css` los tamaños son **mucho más compactos** porque la pantalla de smartwatch es ≈ 400×400p. Los wearable suelen usar `resolution-width="320"` o `"400"`, por lo que **los valores `p` son ya pequeños sin necesidad de aplicar factor xxhdpi**.
207
+
208
+ | Elemento | width | height |
209
+ |---|---|---|
210
+ | Header | `100%` | `40p`–`56p` |
211
+ | Body | `100%` | `-2` con scroll |
212
+ | Botón principal | `80%` | `56p` |
213
+ | Botón compacto | `-2` | `40p`–`48p` |
214
+ | Item de lista | `100%` | `48p`–`64p` |
215
+ | Avatar | `32p`–`40p` | igual |
216
+ | Icono | `20p`–`24p` | igual |
217
+ | Foto miniatura | `48p`–`64p` | igual |
218
+ | Tipografía body | `fontsize: 3`–`4` | — |
219
+ | Tipografía título | `fontsize: 5`–`6` | — |
220
+
221
+ ---
222
+
223
+ ## 12. Anti-patrones de tamaños
224
+
225
+ | MAL | BIEN |
226
+ |---|---|
227
+ | Pensar que `header 56p` es una toolbar Material (es ~18dp en 1080×1920) | Toolbar Material en 1080×1920 = `164p`–`168p` |
228
+ | Tres frames hermanos con `height="40%"` (suman 120%, desbordan) | Sumar `%` ≤ 100, o un frame con `-2`/`scroll` y los otros con `Np` fijo |
229
+ | `height="100%"` en frame body cuando arriba/abajo hay frames fijos (no resta los fijos) | `height="-2"` con `scroll="true"`, o calcular dejando margen |
230
+ | Imagen con `width="100%" height="100%"` (distorsiona) | Una dimensión fija en `Np`, la otra `-2` o usar `width="100%" height="600p"` aceptando recorte |
231
+ | Botón con `height="48p"` o `height="56p"` (por debajo del touch target en xxhdpi) | Mínimo `height="144p"` (Material 48dp × 3); idealmente `124p` para CTAs principales según workflow |
232
+ | Avatar de `200p` dentro de un header de `164p` | Avatar ≤ `(height del frame) - 48p` de margen vertical |
233
+ | `<prop width="50%">` con `labelwidth="50"` (el valor real queda con 25% de la fila) | Bajar `labelwidth` a 20-30, o subir `width` a 95-100% |
234
+ | Separador con `height="0p"` o `height="1p"` (apenas se ve en xxhdpi) | `height="4p"` con `bgcolor` definido (workflow estándar) |
235
+ | FAB con `width="100%"` (deja de ser FAB) | FAB siempre cuadrado `168p × 168p`, posicionamiento `floating="true"` |
236
+ | Footer con `height="600p"` para un solo botón de 124p (espacio muerto) | Footer `216p`–`288p` (botón + márgenes razonables) |
237
+ | `width` en `px` (`width="200px"`) | Siempre `p` o `%`. NUNCA `px`, `em`, `rem`, `dp` |
238
+ | Aplicar valores Material `dp` directamente en XOne (`56p` para una toolbar) | Multiplicar Material dp por **~3** para 1080×1920 (xxhdpi): `56dp → 164p`–`168p` |
239
+ | Mezclar `Np` y `%` arbitrariamente en hermanos | Convención: estructura en `%`, controles en `Np` fijos |
240
+ | Card en grid con `width="50%"` (no hay margen entre cards) | `width="48%"` con `lmargin="30p"` `rmargin="30p"`, o `width="49%"` con `newline="false"` |
241
+ | `<prop type="L">` (etiqueta) con `height="144p"` fijo (sobra espacio) | `height="-2"` o `96p` y dejar que la tipografía mande |
242
+ | Tab bar con `height="404p"` (demasiado alta) | `height="144p"` estándar workflow |
243
+ | Usar `fontsize="14"` o `fontsize="24"` pensando que es Material `sp` | `fontsize` en XOne va de 1 a 12. Estándar = `5`. Título topbar = `10`–`11`. Nombre app = `12` |
244
+
245
+ ---
246
+
247
+ ## 13. Tabla de fallback rápido (cuando no sabes qué poner)
248
+
249
+ Si tienes dudas, estos defaults nunca son escandalosos **para 1080×1920**:
250
+
251
+ | Tipo de nodo | Default seguro |
252
+ |---|---|
253
+ | `<frame>` cabecera | `width="100%" height="164p"` |
254
+ | `<frame>` cuerpo principal | `width="100%" height="-2" scroll="true"` |
255
+ | `<frame>` pie con botones | `width="100%" height="216p"` |
256
+ | `<frame>` tarjeta | `width="95%" height="-2"` |
257
+ | `<prop type="T">` (input) | `width="100%" height="144p"` |
258
+ | `<prop type="N">` (número) | `width="100%" height="144p"` |
259
+ | `<prop type="B">` (botón) | `width="90%" height="124p"` |
260
+ | `<prop type="L">` (label) | `width="100%" height="-2"` |
261
+ | `<prop type="NC">` (checkbox) | `width="100%" height="144p"` |
262
+ | `<prop type="IMG">` (imagen) | `width="100%" height="600p"` |
263
+ | `<prop type="PH">` (foto) | `width="100%" height="720p"` |
264
+ | `<prop type="DR">` (firma) | `width="100%" height="600p"` |
265
+ | `<prop type="Z">` (contenedor / lista) | `width="100%" height="-2"` o `height="100%"` |
266
+ | `<prop type="WEB">` (webview) | `width="100%" height="1200p"` |
267
+ | `<group>` (tab/pantalla) | sin width/height → ocupa el padre |
268
+ | Icono `img-width`/`img-height` | `72p` × `72p` (toolbar) o `104p` × `104p` (botón cuadrado) |
269
+ | `fontsize` texto estándar | `5` |
270
+ | `tmargin` entre elementos | `30p` |
271
+ | `tmargin` entre bloques | `50p` |
272
+
273
+ ---
274
+
275
+ ## 14. Si tu proyecto usa otra `resolution-width`
276
+
277
+ Si el dispositivo de referencia es distinto a 1080×1920, **escala todos los valores con la fórmula**:
278
+
279
+ ```
280
+ valor_p_nuevo = valor_p_tabla × (resolution-width_proyecto / 1080)
281
+ ```
282
+
283
+ Ejemplos:
284
+
285
+ | `resolution-width` | Factor | Header (164p) | Botón (124p) | Input (144p) |
286
+ |---|---|---|---|---|
287
+ | 480 (HDPI) | × 0.44 | `72p` | `54p` | `64p` |
288
+ | 720 (XHDPI) | × 0.67 | `110p` | `83p` | `96p` |
289
+ | 1080 (XXHDPI, default) | × 1.0 | `164p` | `124p` | `144p` |
290
+ | 1440 (XXXHDPI Premium) | × 1.33 | `218p` | `165p` | `192p` |
291
+
292
+ Para wearable (≈ `resolution-width` 320-400), usar directamente la tabla §11.
@@ -0,0 +1,16 @@
1
+ # Colecciones base: campos mínimos y `progid`
2
+
3
+ > Referencia de `xone-project-generator`. Sale del `SKILL.md` para que lo esencial quepa
4
+ > en una lectura por omisión (100 líneas).
5
+
6
+ ### Campos Mínimos Obligatorios en Colecciones Base
7
+
8
+ | Coleccion | progid | Campos a declarar como `<prop>` |
9
+ |-----------|--------|----------------------------------|
10
+ | **Empresas** | `ASGestion.CASEmpresa` | `CODIGO` (N), `NOMBRE` (T) |
11
+ | **Usuarios** | `ASGestion.CASUser` | `CODIGO` (N), `NOMBRE` (T), `IDEMPRESA` (N), `LOGIN` (T), `PWD` (X) |
12
+ | **Resto** | `ASData.CASBasicDataObj` | Los que defina el desarrollador |
13
+
14
+ > `ID` y `ROWID`: no declararlos como `<prop>` en estas colecciones tampoco. Ver la regla en `xone-development`.
15
+
16
+ ---
@@ -0,0 +1,16 @@
1
+ # Convenciones de nomenclatura
2
+
3
+ > Referencia de `xone-project-generator`. Sale del `SKILL.md` para que lo
4
+ > esencial quepa en una lectura por omisión (100 líneas).
5
+
6
+ ## Convenciones de Nomenclatura
7
+
8
+
9
+ - **Colecciones:** PascalCase (`MenuPrincipal`, `DetalleProducto`)
10
+ - **Propiedades de BD:** MAYUSCULAS (`CODIGO`, `NOMBRE`, `IDEMPRESA`, `ROWID`). En la coll `Usuarios` el campo de empresa **DEBE** llamarse `IDEMPRESA` (sin guion bajo) — el framework lo lee literalmente.
11
+ - **Propiedades de UI (no persisten):** Prefijo MAP_ (`MAP_BTN_GUARDAR`, `MAP_TOTAL`, `MAP_BUSQUEDA`)
12
+ - **Clases CSS:** Prefijo descriptivo (`.frameHeader`, `.btnPrimario`, `.textoTitulo`)
13
+ - **Iconos:** snake_case (`ic_home.png`, `ic_add_white.png`)
14
+ - **Scripts JS:** camelCase (`inicializarPantalla`, `cargarDatos`, `guardarRegistro`)
15
+
16
+ ---