FIOCoreBlocks
FIOCoreBlocks es un Swift Package escrito en SwiftUI para iOS 15+ y Swift 5.9. Interpreta el template con una factory de cadena de responsabilidad: cada nodo se resuelve al bloque nativo correspondiente mediante parsing Codable, contra un registro de bloques extensible.
- Sin dependencias de WebView
- SwiftUI + Swift 5.9, iOS 15+
- Registro de bloques extensible
Contrato de presentación
Cada pantalla es un template que describe estructura, bloques y eventos — no código ejecutable. El renderer lo interpreta contra el registro de bloques nativos conocidos por tu app.
Datos dinámicos
El contrato declara qué datos necesita cada bloque; tu backend resuelve esos valores en el momento. La estructura es reutilizable, los datos cambian por pantalla y por cliente.
Fractal-io presenta. Tu backend decide.
Fractal-io resuelve
- Traducción de diseño a template nativo
- Renderer de bloques y presentación móvil
- Contrato de datos para la pantalla
Tu backend conserva
- Datos y fuentes de verdad
- Permisos y autorización
- Reglas de negocio
Arma la pantalla, exporta el contrato
El Composer (este mismo panel, disponible en /composer) ofrece un canvas de arrastrar y soltar, una paleta con los 26 bloques, un panel de capas y un panel de propiedades para editar cada bloque seleccionado.
Al terminar, el Composer exporta el template versionado de la pantalla, listo para tu equipo mobile.
Eventos declarativos
Cualquier bloque puede declarar eventos en el contrato. Tu app host recibe el event_id y el event_data y decide qué hacer.
on_tapToque simple sobre el bloqueon_large_tapToque prolongadoon_double_tapDoble toqueon_changeCambio de valor (campos, checks, dropdowns)on_completeFinalización de una acción (por ejemplo, pin input)
Theming a nivel de app
El tema se define una vez y se aplica a todos los bloques que renderiza el contrato.
- Modo claro / oscuro
- Tipografía de la app
- Color primario y secundario
El contrato describe UI, no ejecuta código
El JSON solo declara estructura, datos y eventos; no incluye lógica ejecutable. El motor lo resuelve contra un registro cerrado de bloques nativos conocidos por la app, y cada evento se procesa en el código de tu app host — el contrato nunca ejecuta nada por sí mismo.
El contrato, bloque por bloque
Para quien quiera ver la forma exacta del template: un documento JSON con 26 bloques nativos, organizados en cinco familias.
{
"type": "card",
"data": {
"title": "Tu saldo",
"value": "$2,430",
"padding": 16,
"cornerRadius": 12,
"on_tap": {
"event_id": "balance_card_tap",
"event_data": { "accountId": "abc123" }
}
}
}Layout
- Container
- Column
- Row
- Grid
- Expanded
- Padding
- Scroll
Display
- Text
- Image
- Icon
- Card
- Divider
- Spacer
Interacción
- Text Button
- Icon Button
- Text Field
- Check Box
- Dropdown Menu
- Pin Input
- Search
- Gesture Detector
Datos y listas
- List
- List Section
- List Row
Feedback
- Alert Banner
- Stat Progress Track