feat(web): app Angular, librería compartida sap-types y sistema de temas
- apps/web: Angular 22 standalone, zoneless, OnPush, vitest; proxy /api hacia el backend; presupuesto de bundle (aviso 260 kB, error 400 kB). - libs/sap-types: tipos de auth/permisos/Service Layer y el evaluador de patrones de menú, compartidos por api y web (se compila en postinstall). El backend deja de tener su propia copia del evaluador. - Temas por variables CSS: claro por defecto con la paleta del mockup de Oferta de ventas, oscuro incluido; ThemeService + selector, con el tema guardado aplicado antes del primer pintado. Agregar un tema = 1 css + 1 import + 1 entrada. - Criterios de interfaz ligera en CLAUDE.md y README. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c0990ca83e
commit
f1156929c7
40 files changed
+6231
-5
No files matched your search
@@ -0,0 +1,34 @@
|
||||
# web
|
||||
|
||||
Frontend Angular (standalone, zoneless, señales) del ERP base. Interfaz densa y ligera estilo SAP Business One.
|
||||
|
||||
```bash
|
||||
npm run dev:web # desde la raíz; http://localhost:4200 (proxy /api -> localhost:3000)
|
||||
npm run build -w apps/web
|
||||
npm test -w apps/web
|
||||
```
|
||||
|
||||
## Criterios de rendimiento
|
||||
|
||||
Es un ERP, no un sitio publicitario: rápido y ligero.
|
||||
|
||||
- Sin librerías de UI (nada de Material/PrimeNG): componentes propios, densos (13 px).
|
||||
- Fuentes del sistema, sin webfonts; sin animaciones.
|
||||
- Zoneless + `OnPush`; rutas con `loadComponent` para cargar solo lo que se usa.
|
||||
- Presupuesto del bundle inicial: aviso a 260 kB, error a 400 kB (`angular.json`). Hoy: ~200 kB (56 kB comprimido).
|
||||
- Listas largas con paginación del servidor (`$top/$skip`) o virtualización.
|
||||
|
||||
## Temas
|
||||
|
||||
El color sale solo de variables CSS (`src/styles/themes/*.css`). Tema por defecto: **claro**, con la paleta del mockup de Oferta de ventas.
|
||||
|
||||
Agregar un tema:
|
||||
1. `src/styles/themes/<id>.css` con un bloque `:root[data-theme='<id>']` (copiar los tokens de `light.css`).
|
||||
2. `@import` en `src/styles.css`.
|
||||
3. Una entrada en `src/app/core/theme/themes.ts`.
|
||||
|
||||
Tokens: `--app --shell --shell-ink --shell-quiet --win --panel --line --line-soft --ink --quiet --field --field-ro --field-b --focus --gold --grid-head --row-sel --row-alt --ok --ok-bg --warn --warn-bg --err --err-bg --btn --btn-b --btn-h --overlay --shadow-pop`.
|
||||
|
||||
## Tipos compartidos
|
||||
|
||||
`@basic-erp/sap-types` (`libs/sap-types`): usuario, respuestas de la API y el evaluador de permisos de menú, los mismos que usa el backend.
|
||||
Reference in new issue
Block a user