# place.mode.standard.defs

> Published by [mode.place](https://lexicon.garden/identity/did:plc:rvraq37xlwydvov7laldai6a)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:rvraq37xlwydvov7laldai6a/place.mode.standard.defs)
- [Documentation](https://lexicon.garden/lexicon/did:plc:rvraq37xlwydvov7laldai6a/place.mode.standard.defs/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:rvraq37xlwydvov7laldai6a/place.mode.standard.defs/examples)

## Definitions

### `place.mode.standard.defs#aspects`

**Type**: `object`

A theme's renderable style, grouped by aspect. Each aspect is optional but complete when present; a theme SHOULD carry at least one.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `color` | `ref` → `lex:place.mode.standard.defs#colorAspect` | No | The color aspect (21 intents). Optional, but complete when present. |
| `typography` | `ref` → `lex:place.mode.standard.defs#typographyAspect` | No | The typography aspect (12 text intents). Optional, but complete when present. |

### `place.mode.standard.defs#textIntent`

**Type**: `object`

Typography metrics for a single text priority. Color is intentionally excluded (it belongs to the containing surface).

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `size` | `string` | Yes | A valid CSS <length-percentage> font size (e.g. '1.25rem'). |
| `family` | `string` | Yes | A CSS font-family value; should match a `family` in the theme's `fonts` array. |
| `weight` | `string` | Yes | A valid CSS <font-weight> (e.g. '400', '600'). |
| `lineHeight` | `string` | Yes | A valid CSS line-height value (e.g. '1.4'). |

### `place.mode.standard.defs#colorAspect`

**Type**: `object`

The complete color aspect of a theme: control + action + surface (21 intents).

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `action` | `ref` → `lex:place.mode.standard.defs#actionPriorities` | Yes | Interactive element (button/link) color, by priority. |
| `control` | `ref` → `lex:place.mode.standard.defs#colorIntent` | Yes | Form fields. No priority — all controls are peers. |
| `surface` | `ref` → `lex:place.mode.standard.defs#surfacePriorities` | Yes | Non-interactive container (surface) color, by how far above the page the surface sits. |

### `place.mode.standard.defs#colorIntent`

**Type**: `object`

The three color values for a single intent (a purpose, or a purpose+priority).

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `border` | `string` | Yes | Any valid CSS <color> for the element's border. |
| `background` | `string` | Yes | Any valid CSS <color> for the element's background. |
| `foreground` | `string` | Yes | Any valid CSS <color> for the element's foreground (text/icon). |

### `place.mode.standard.defs#fontDescriptor`

**Type**: `object`

One @font-face declaration. Only `family` is schema-required; a source (`src` or `file`) is required by the standard.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `src` | `string` | No | A URL to the font file, or a CSS `src` value (e.g. 'url(https://...) format(woff2)'). Alternative to `file`. |
| `file` | `blob` | No | A font file stored as a blob on the author's PDS. Takes precedence over `src` when both are present. |
| `style` | `string` | No | CSS font-style descriptor (e.g. 'normal', 'italic', 'oblique 0deg 20deg'). |
| `family` | `string` | Yes | The font-family name as it should appear in CSS (e.g. 'Inter'). |
| `weight` | `string` | No | CSS font-weight descriptor or range (e.g. '400', '100 900'). |
| `display` | `string` | No | CSS font-display descriptor (e.g. 'swap', 'fallback'). |
| `stretch` | `string` | No | CSS font-stretch/font-width descriptor or range (e.g. 'normal', '75% 125%'). |
| `unicodeRange` | `string` | No | CSS unicode-range descriptor (e.g. 'U+0000-00FF, U+0131'). Lets several entries share one `family` for subsetting. |

### `place.mode.standard.defs#textPriorities`

**Type**: `object`

The three Mise en Mode priorities for `text`, counting down from the text that claims most of a reader's attention to the text that claims least.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `primary` | `ref` → `lex:place.mode.standard.defs#textIntent` | Yes | Headlines and titles. |
| `auxiliary` | `ref` → `lex:place.mode.standard.defs#textIntent` | Yes | Detail and help: captions, hints, legal. |
| `secondary` | `ref` → `lex:place.mode.standard.defs#textIntent` | Yes | Body copy — the text a page is mostly made of. |

### `place.mode.standard.defs#actionPriorities`

**Type**: `object`

The three Mise en Mode priorities for `action`, counting down from the thing a screen most wants you to do to the thing it least insists on.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `primary` | `ref` → `lex:place.mode.standard.defs#colorIntent` | Yes | The one thing the screen most wants you to do. |
| `auxiliary` | `ref` → `lex:place.mode.standard.defs#colorIntent` | Yes | The quietest choice. |
| `secondary` | `ref` → `lex:place.mode.standard.defs#colorIntent` | Yes | A supporting choice. |

### `place.mode.standard.defs#typographyAspect`

**Type**: `object`

The typography aspect of a theme: text (12 intents), complete when present.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `text` | `ref` → `lex:place.mode.standard.defs#textPriorities` | Yes | Typography by priority. |

### `place.mode.standard.defs#surfacePriorities`

**Type**: `object`

The three Mise en Mode priorities for `surface`, counting down from the layer that claims most of a reader's attention to the one that claims least. Because priority counts down, the page is `auxiliary` and not `primary`: a page is what a modal interrupts.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `primary` | `ref` → `lex:place.mode.standard.defs#colorIntent` | Yes | A surface that interrupts the page: modal, dialog, alert, sheet. |
| `auxiliary` | `ref` → `lex:place.mode.standard.defs#colorIntent` | Yes | The page itself, and everything sitting on it rather than above it — cards, bars, panels. The layer a theme is mostly made of. |
| `secondary` | `ref` → `lex:place.mode.standard.defs#colorIntent` | Yes | A surface over the page, not instead of it: flyout, menu, popover. |

## Raw Schema

```json
{
  "id": "place.mode.standard.defs",
  "defs": {
    "aspects": {
      "type": "object",
      "properties": {
        "color": {
          "ref": "lex:place.mode.standard.defs#colorAspect",
          "type": "ref",
          "description": "The color aspect (21 intents). Optional, but complete when present."
        },
        "typography": {
          "ref": "lex:place.mode.standard.defs#typographyAspect",
          "type": "ref",
          "description": "The typography aspect (12 text intents). Optional, but complete when present."
        }
      },
      "description": "A theme's renderable style, grouped by aspect. Each aspect is optional but complete when present; a theme SHOULD carry at least one."
    },
    "textIntent": {
      "type": "object",
      "required": [
        "size",
        "weight",
        "family",
        "lineHeight"
      ],
      "properties": {
        "size": {
          "type": "string",
          "maxLength": 128,
          "description": "A valid CSS <length-percentage> font size (e.g. '1.25rem')."
        },
        "family": {
          "type": "string",
          "maxLength": 256,
          "description": "A CSS font-family value; should match a `family` in the theme's `fonts` array."
        },
        "weight": {
          "type": "string",
          "maxLength": 128,
          "description": "A valid CSS <font-weight> (e.g. '400', '600')."
        },
        "lineHeight": {
          "type": "string",
          "maxLength": 128,
          "description": "A valid CSS line-height value (e.g. '1.4')."
        }
      },
      "description": "Typography metrics for a single text priority. Color is intentionally excluded (it belongs to the containing surface)."
    },
    "colorAspect": {
      "type": "object",
      "required": [
        "control",
        "action",
        "surface"
      ],
      "properties": {
        "action": {
          "ref": "lex:place.mode.standard.defs#actionPriorities",
          "type": "ref",
          "description": "Interactive element (button/link) color, by priority."
        },
        "control": {
          "ref": "lex:place.mode.standard.defs#colorIntent",
          "type": "ref",
          "description": "Form fields. No priority — all controls are peers."
        },
        "surface": {
          "ref": "lex:place.mode.standard.defs#surfacePriorities",
          "type": "ref",
          "description": "Non-interactive container (surface) color, by how far above the page the surface sits."
        }
      },
      "description": "The complete color aspect of a theme: control + action + surface (21 intents)."
    },
    "colorIntent": {
      "type": "object",
      "required": [
        "background",
        "foreground",
        "border"
      ],
      "properties": {
        "border": {
          "type": "string",
          "maxLength": 128,
          "description": "Any valid CSS <color> for the element's border."
        },
        "background": {
          "type": "string",
          "maxLength": 128,
          "description": "Any valid CSS <color> for the element's background."
        },
        "foreground": {
          "type": "string",
          "maxLength": 128,
          "description": "Any valid CSS <color> for the element's foreground (text/icon)."
        }
      },
      "description": "The three color values for a single intent (a purpose, or a purpose+priority)."
    },
    "fontDescriptor": {
      "type": "object",
      "required": [
        "family"
      ],
      "properties": {
        "src": {
          "type": "string",
          "maxLength": 1024,
          "description": "A URL to the font file, or a CSS `src` value (e.g. 'url(https://...) format(woff2)'). Alternative to `file`."
        },
        "file": {
          "type": "blob",
          "accept": [
            "font/woff2",
            "font/woff",
            "font/ttf",
            "font/otf",
            "application/octet-stream"
          ],
          "maxSize": 5000000,
          "description": "A font file stored as a blob on the author's PDS. Takes precedence over `src` when both are present."
        },
        "style": {
          "type": "string",
          "maxLength": 32,
          "description": "CSS font-style descriptor (e.g. 'normal', 'italic', 'oblique 0deg 20deg')."
        },
        "family": {
          "type": "string",
          "maxLength": 256,
          "description": "The font-family name as it should appear in CSS (e.g. 'Inter')."
        },
        "weight": {
          "type": "string",
          "maxLength": 32,
          "description": "CSS font-weight descriptor or range (e.g. '400', '100 900')."
        },
        "display": {
          "type": "string",
          "maxLength": 32,
          "description": "CSS font-display descriptor (e.g. 'swap', 'fallback')."
        },
        "stretch": {
          "type": "string",
          "maxLength": 64,
          "description": "CSS font-stretch/font-width descriptor or range (e.g. 'normal', '75% 125%')."
        },
        "unicodeRange": {
          "type": "string",
          "maxLength": 2048,
          "description": "CSS unicode-range descriptor (e.g. 'U+0000-00FF, U+0131'). Lets several entries share one `family` for subsetting."
        }
      },
      "description": "One @font-face declaration. Only `family` is schema-required; a source (`src` or `file`) is required by the standard."
    },
    "textPriorities": {
      "type": "object",
      "required": [
        "primary",
        "secondary",
        "auxiliary"
      ],
      "properties": {
        "primary": {
          "ref": "lex:place.mode.standard.defs#textIntent",
          "type": "ref",
          "description": "Headlines and titles."
        },
        "auxiliary": {
          "ref": "lex:place.mode.standard.defs#textIntent",
          "type": "ref",
          "description": "Detail and help: captions, hints, legal."
        },
        "secondary": {
          "ref": "lex:place.mode.standard.defs#textIntent",
          "type": "ref",
          "description": "Body copy — the text a page is mostly made of."
        }
      },
      "description": "The three Mise en Mode priorities for `text`, counting down from the text that claims most of a reader's attention to the text that claims least."
    },
    "actionPriorities": {
      "type": "object",
      "required": [
        "primary",
        "secondary",
        "auxiliary"
      ],
      "properties": {
        "primary": {
          "ref": "lex:place.mode.standard.defs#colorIntent",
          "type": "ref",
          "description": "The one thing the screen most wants you to do."
        },
        "auxiliary": {
          "ref": "lex:place.mode.standard.defs#colorIntent",
          "type": "ref",
          "description": "The quietest choice."
        },
        "secondary": {
          "ref": "lex:place.mode.standard.defs#colorIntent",
          "type": "ref",
          "description": "A supporting choice."
        }
      },
      "description": "The three Mise en Mode priorities for `action`, counting down from the thing a screen most wants you to do to the thing it least insists on."
    },
    "typographyAspect": {
      "type": "object",
      "required": [
        "text"
      ],
      "properties": {
        "text": {
          "ref": "lex:place.mode.standard.defs#textPriorities",
          "type": "ref",
          "description": "Typography by priority."
        }
      },
      "description": "The typography aspect of a theme: text (12 intents), complete when present."
    },
    "surfacePriorities": {
      "type": "object",
      "required": [
        "primary",
        "secondary",
        "auxiliary"
      ],
      "properties": {
        "primary": {
          "ref": "lex:place.mode.standard.defs#colorIntent",
          "type": "ref",
          "description": "A surface that interrupts the page: modal, dialog, alert, sheet."
        },
        "auxiliary": {
          "ref": "lex:place.mode.standard.defs#colorIntent",
          "type": "ref",
          "description": "The page itself, and everything sitting on it rather than above it — cards, bars, panels. The layer a theme is mostly made of."
        },
        "secondary": {
          "ref": "lex:place.mode.standard.defs#colorIntent",
          "type": "ref",
          "description": "A surface over the page, not instead of it: flyout, menu, popover."
        }
      },
      "description": "The three Mise en Mode priorities for `surface`, counting down from the layer that claims most of a reader's attention to the one that claims least. Because priority counts down, the page is `auxiliary` and not `primary`: a page is what a modal interrupts."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
