
# Référence des types

Au-delà d'[`AppConfig`](/fr/docs/typescript#appconfig), Sovrium exporte un type par section de configuration. Chacun est le type d'élément de son tableau — `PageConfig` est ce qui va dans `AppConfig['pages']` — vous pouvez donc construire une section dans un module et l'assembler dans un autre sans aucun cast.

```typescript
import type { PageConfig, TableConfig, ThemeConfig } from 'sovrium'
```

## `SimpleServer`

Retourné par [`start()`](/fr/docs/typescript-start). Une poignée à deux propriétés sur le serveur en cours.

| Propriété | Description                                                                    |
| --------- | ------------------------------------------------------------------------------ |
| `url`     | URL du serveur, protocole et port compris (par ex. `"http://localhost:3000"`). |
| `stop()`  | Arrête proprement le serveur. Se résout lorsque l'arrêt est terminé.           |

```typescript
import { start } from 'sovrium'
import type { SimpleServer } from 'sovrium'

const server: SimpleServer = await start({ name: 'my-app' })
console.log(server.url)
await server.stop()
```

Relisez le port depuis `url` plutôt que depuis les options passées — avec `port: 0`, ou lorsque le port demandé était pris, les deux diffèrent.

## `PageConfig`

Une page : sa route, ses métadonnées et son arbre de composants. Élément de `AppConfig['pages']`. Seuls `name` et `path` sont obligatoires.

```typescript
const page: PageConfig = {
  name: 'Home',
  path: '/',
  components: [
    { type: 'hero', content: 'Build apps from config' },
    { type: 'text', content: 'Get started in minutes.' },
  ],
}
```

## `TableConfig`

Une table de données et ses champs. Élément de `AppConfig['tables']`.

```typescript
const table: TableConfig = {
  id: 1,
  name: 'tasks',
  fields: [{ id: 1, name: 'title', type: 'single-line-text', required: true }],
}
```

## `ComponentConfig`

Un modèle de composant réutilisable, avec des variables préfixées par `$` remplies à chaque site d'utilisation. Élément de `AppConfig['components']`.

```typescript
const sectionHeader: ComponentConfig = {
  name: 'section-header',
  type: 'container',
  props: { className: 'text-center mb-12' },
  children: [
    { type: 'text', props: { level: 'h2' }, content: '$title' },
    { type: 'text', props: { level: 'p' }, content: '$subtitle' },
  ],
}
```

## `ThemeConfig`

Les tokens de design — couleurs, typographie, espacements, ombres, rayons, points de rupture, animations. Ils compilent vers des variables CSS : un token défini ici est donc utilisable partout dans la configuration.

```typescript
const theme: ThemeConfig = {
  colors: { primary: '#3b82f6' },
  fonts: { sans: 'Inter, sans-serif' },
}
```

## `AuthConfig`

Les stratégies de connexion, les rôles et les plugins qu'ils activent.

```typescript
const auth: AuthConfig = {
  strategies: [{ type: 'emailAndPassword' }],
  roles: [{ name: 'admin' }, { name: 'member' }],
}
```

## `LanguageConfig`

Langues prises en charge, langue par défaut et traductions. Contrairement aux autres, c'est un objet et non un élément de tableau — il correspond à `AppConfig['languages']` en entier. Chaque entrée de `supported` est un objet, pas un simple code : le `code` court pilote les URLs et les clés de traduction, tandis que `locale` alimente l'attribut HTML `lang`.

```typescript
const languages: LanguageConfig = {
  default: 'en',
  supported: [
    { code: 'en', locale: 'en-US', label: 'English', direction: 'ltr' },
    { code: 'fr', locale: 'fr-FR', label: 'Français', direction: 'ltr' },
  ],
}
```

## `AnalyticsConfig`

L'analytique intégrée respectueuse de la vie privée. Une union : `true` prend les défauts, un objet les personnalise.

```typescript
const analytics: AnalyticsConfig = true

const custom: AnalyticsConfig = { retentionDays: 90, excludedPaths: ['/admin'] }
```

## Pages associées

- [Aperçu de l'API TypeScript](/fr/docs/typescript) — `AppConfig` et les fonctions exportées.
- [`start()`](/fr/docs/typescript-start) — d'où vient `SimpleServer`.
- [Vue d'ensemble du schéma](/fr/docs/schema-overview) — les mêmes sections en YAML.
