- Extrae helpers asLingRec/asHotspotMode/asLingRecOpt para evitar `as` en template
- Corrige select: elimina value={}, usa selected={} en cada option
- Añade for/id en todos los pares label-input y aria-label en color picker
- Añade variant="dark" al LingInput de tooltip (evita fondo blanco en editor oscuro)
- Incluye renombrados de componentes y demás cambios de la sesión
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Nuevos componentes:
- InputEntityID: campo de ID normalizado con modo new/display, bindable slug y error externo
- EntityIdName: bloque combinado ID + Nombre para uso canónico en formularios de entidad
- InputEntityIDDemo: página de demo para pruebas del componente
- TemplateBuilder: constructor de templates de URL con referencias a atributos
VisualPanel — estrategia API:
- endpoint cambiado a ViewTemplate (TemplateBuilder), resolución por interpolación
- método GET/POST: GET muestra solo TemplateBuilder de endpoint, POST añade param builder
- preview API: muestra imagen resuelta desde el endpoint interpolado
Fixes AttDetail / catalog-editor:
- editId ya no se resetea al mutar el store (guard _syncedAttId)
- cat-level att ID ahora se guarda correctamente (updateCatAttId)
- isAttSlugTaken separado en isCatAttSlugTaken e isAttSlugTaken(objId, secId) por scope
- select de valor por defecto para dominios list (string/number/option)
- clave duplicada en each solucionada con índice
Fixes view.ts / tipos:
- ApiParam { key, value: ViewTemplate } — endpoint y params como templates
- resolveAttCode: soporte prefijo cat/, domain.mode fixed, option/list
- resolveApi interpola endpoint como template
CSS — field-input y section-title movidos de CatalogEditor.svelte a app.css
para que estén disponibles en cualquier contexto (demos, tests visuales)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Nuevo VisualPanel: editor completo de vistas y hotspots con sidebar, formulario y preview
- Botón diana para posicionar hotspots haciendo click en la imagen de preview
- Posición X/Y de hotspots como número 0-100 (porcentaje), con validación
- Preview de imagen con markers de hotspots superpuestos y aspect-ratio dinámico
- IDs editables en creación de vistas y hotspots (patrón newEntityId)
- Corrección de newEntityId en addAtt/addCatAtt para edición de ID en creación
- Tabs en mayúsculas en ObjPanel, SecPanel y CatMetaPanel
- Mejora contraste botones de locale secundario en modo light (LingInput)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- IconPicker: selector visual en grid con position:fixed para evitar clipping
- IssueSection: confirmación antes de eliminar, ordenación con ↑/↓ a la izquierda
- RuleList: formulario borrador antes de crear (igual que IssueSection)
- RuleEditor: estado efectivo (AttState actual) en lugar de activa/inactiva
- Tabs: reglas movidas al tab Reglas/Incidencias con headers consistentes
- Botones: sistema unificado ve-action-btn/ve-btn/ve-card-btn/ve-btn-link a 12px
- Flechas: ↑/↓ normalizadas en CatalogSidebar e IssueSection
- Tipografía: fuente Ge (Gellix) desde /f/ge/ aplicada en todo el editor
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Añade lang/langs a Cat y label:LingRecord a Obj, Sec, Att
- Crea EditorGlob con createGlobState + createLing para traducciones/moneda/fecha
- CatMetaPanel con selección de idioma principal y lista de idiomas soportados
- Store: setObjLabel, setSecLabel, setAttLabel, setCatAttLabel (LingRecord completo)
- LingInput.svelte local adaptado al tema oscuro del editor (sin bg-white)
- ObjInfoPanel, SecInfoPanel, AttDetail usan LingInput con tabs por locale
- helper labelOf para resolver LingRecord en listas y cabeceras
- Mueve catalog-editor al directorio stores y elimina el fichero antiguo
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>