# Figma-First Manifest

This manifest keeps Figma naming as the canonical source of truth for the design system.

## Principles

1. Preserve Figma component names exactly in `figmaName`.
2. Preserve Figma variant labels and values exactly in `figmaVariantName` and `props`.
3. Only normalize names enough to make them safe for code:
   - component names -> PascalCase `codeName`
   - variant axes -> camelCase `propName`
4. Do not translate Figma semantics into new frontend semantics in the canonical layer.

## Example

Figma component:

`input box/line`

Canonical code component:

`InputBoxLine`

Figma variant:

`dark theme=on, status=default, enable=on, UX=default, size=M, feature=no`

Canonical props:

```json
{
  "darkTheme": "on",
  "status": "default",
  "enable": "on",
  "ux": "default",
  "size": "M",
  "feature": "no"
}
```

## Current Coverage

- `input box/line`
- `input box/filled`
- `check box`

The current manifest is intended to be consumed by:

- Code Connect mappings
- canonical component generation
- design system documentation generation
- variant test fixture generation

## Generation

Run:

```bash
pnpm generate:manifest
```

This scans `figma-data/raw/components/*.json` and rebuilds
`figma-data/normalized/components.manifest.json`.
