# Public Module Pages

Registre runtime pour les pages publiques `/zen/<module>/<...>` ajoutées par les modules externes.

## Concept

Tout chemin `/zen/<segment>/...` (sauf `/zen/api/...` réservé aux routes API) est résolu vers le composant enregistré sous `<segment>`. Le module gère son routage interne.

## API

```js
import { registerPublicModulePage } from '@zen/core/public-pages';

registerPublicModulePage({
  moduleName: 'billing',
  Component: BillingRouter,
  title: 'Facturation',
});
```

Le composant reçoit `{ params, segments }` :

| Prop | Type | Description |
|------|------|-------------|
| `params` | `object` | Paramètres Next.js résolus (incluant `path`). |
| `segments` | `string[]` | Segments d'URL après `/zen/<moduleName>/`. Le module fait son propre routage. |

Exemple : `/zen/billing/invoice/abc-123` → `segments = ['invoice', 'abc-123']`.

## Câblage côté projet consommateur

Le scaffolder `@zen/start` génère automatiquement `app/zen/[...path]/page.js` qui ré-exporte le composant serveur. Aucune action manuelle requise.

## Restrictions

- Le moduleName `api` est réservé et lève une exception à l'enregistrement.
- Un seul composant par moduleName ; un appel ultérieur écrase le précédent.
