# `frontend/shared/`

**Status:** Scaffold — code not migrated yet  
**Phase:** Migration Phase 1 (shared architecture creation)

## Purpose

Central **platform layer** for cross-module UI, utilities, and infrastructure. All business modules (Accounting, Beauty, Healthcare, future CRM/Delivery) consume code from here — never the reverse.

## Relationship to legacy paths

Existing shared code remains in place until incremental migration (Phase 2+):

| Shared area | Legacy location today | Target |
|-------------|----------------------|--------|
| UI primitives | `components/ds/`, `components/ui/` | `shared/ui/`, `shared/design-system/` |
| Forms | `components/ds/FormControls.tsx` | `shared/forms/` |
| Layouts | Portal shells in `components/{module}/` | `shared/layouts/` |
| Tables | `components/ds/Page.tsx` (`DataTable`) | `shared/tables/` |
| Charts | (not implemented; `recharts` installed) | `shared/charts/` |
| Calendar | `components/ds/DatePicker.tsx` | `shared/calendar/` |
| Hooks | `hooks/` | `shared/hooks/` |
| Utils | `lib/utils.ts` | `shared/utils/` |
| API core | `lib/auth.ts`, fetch patterns in `lib/*-api.ts` | `shared/api/` |
| Theme | `lib/theme.ts`, `styles/globals.css` | `shared/theme/` |
| Providers | `components/providers/`, `ThemeProvider.tsx` | `shared/providers/` |
| Icons | `lucide-react` direct imports | `shared/icons/` |
| Types | scattered | `shared/types/` |
| Constants | `lib/apps-catalog.ts`, env | `shared/constants/` |
| Design system | `components/ds/` | `shared/design-system/` |

## Subdirectories

| Directory | Documentation |
|-----------|---------------|
| [ui/](./ui/README.md) | Low-level UI atoms |
| [forms/](./forms/README.md) | Form primitives and RHF helpers |
| [layouts/](./layouts/README.md) | Shells, portal chrome, page scaffolding |
| [tables/](./tables/README.md) | Data tables and toolbars |
| [charts/](./charts/README.md) | Chart wrappers |
| [calendar/](./calendar/README.md) | Jalali/Gregorian date pickers |
| [hooks/](./hooks/README.md) | Cross-module React hooks |
| [utils/](./utils/README.md) | Pure utilities |
| [api/](./api/README.md) | Shared fetch client and auth |
| [theme/](./theme/README.md) | White-label theming |
| [providers/](./providers/README.md) | React context providers |
| [icons/](./icons/README.md) | Icon re-exports and mappings |
| [types/](./types/README.md) | Shared TypeScript types |
| [constants/](./constants/README.md) | App-wide constants |
| [design-system/](./design-system/README.md) | Tokens, patterns, composition rules |

## Import rules

```
app/ and modules/  →  shared/*  ✅
shared/*           →  modules/*  ❌
shared/*           →  components/{accounting,beauty,healthcare}/*  ❌
```

Phase 1 does **not** change existing `@/components/ds` imports. New code may optionally use `@/shared/*` once migration begins.

## Path alias (optional, Phase 1)

```json
"@/shared/*": ["./shared/*"]
```

Configured in `tsconfig.json` for future use; legacy `@/*` imports remain valid.
