# `angular-enterprise` preset

> Primary Angular frontend foundation. Phase 3 fills in the actual source under `templates/`.

## What you get

- **`apps/web-angular/`** — Standalone Angular 19 + Signals app with:
  - `ChangeDetectionStrategy.OnPush` everywhere
  - Lazy-loaded feature routes
  - Tailwind + Angular Material baseline
  - Transloco for TH/EN i18n
  - Strict TypeScript (`@loma-portal/tsconfig/angular.json`)
- **Core services:** `auth`, `current-user`, `loading`, `toast`, `permission`, `base-api`, `theme`, `i18n`
- **Interceptors:** `api`, `auth`, `error`, `loading`, `correlation-id`
- **Guards:** `auth`, `permission`, `unsaved-changes`
- **Models:** `api-response`, `paged-response`, `current-user`, `lookup`, `problem-details`
- **Utilities + constants:** standardized `form`, `validation`, `date`, `string`, `file`; constants for endpoints/roles/permissions/routes/local-storage.
- **Shared UI components:** `page-header`, `section-card`, `loading`, `empty-state`, `status-badge`, `glass-card`, `data-table`, `confirm-dialog`, `breadcrumbs`.
- **`packages/ui-angular/`** — a sibling library for cross-app reusable components.

## When it applies

This preset is materialized when:

- `extends` contains `angular-enterprise`, **and**
- `frontend.primary === "angular"`

## Composes with

| Preset              | Notes                                                                        |
| ------------------- | ---------------------------------------------------------------------------- |
| `premium-theme`     | Token overlay binds via the design-tokens package — no component edits       |
| `portal-platform`   | Adds portal-specific routes/features into `apps/web-angular/`                |
| `dotnet-enterprise` | API consumed via `BaseApiService`; types synced via `packages/api-contracts` |

## Phase mapping

- Phase 2 (this phase): preset manifest + README + (planned) `templates/` directory layout
- Phase 3: full source materialization (`apps/web-angular/`)
