# `packages/` — Cross-app shared TypeScript libraries

Reusable code for apps written in TypeScript (Angular, Next.js, NestJS, workers, tools).

| Package          | Materialized in | Purpose                                   |
| ---------------- | --------------- | ----------------------------------------- |
| `tsconfig/`      | Phase 1         | Shared `tsconfig.json` presets            |
| `eslint-config/` | Phase 1         | Shared ESLint flat-config presets         |
| `design-tokens/` | Phase 2/3       | Style Dictionary tokens → CSS vars        |
| `ui-angular/`    | Phase 3         | Angular UI component library              |
| `ui-react/`      | Phase 3         | React UI component library (shadcn-based) |
| `types/`         | Phase 4         | Shared TS types (cross-app DTOs)          |
| `api-contracts/` | Phase 4         | OpenAPI/Zod shared contracts              |
| `auth-client/`   | Phase 4         | JWT/refresh client (browser + node)       |
| `telemetry/`     | Phase 8         | Shared OpenTelemetry baseline             |
| `utils/`         | Phase 3         | Pure utility functions                    |

## Rules

- Each package has its own `package.json` and `tsconfig.json` extending `@loma-portal/tsconfig`.
- No package imports from `apps/`. Direction is always **app → package**.
- Public exports defined explicitly; no barrel re-export of internals.
