# site.mochott.comic.defs

> Published by [tokimeki.blue](https://lexicon.garden/identity/did:plc:4tr5dqti7nmu6g2czpthntak)

✓ This is the authoritative definition for this NSID.

## Description

Shared definitions for mochott comic records. A superset of the work.sequential.defs shapes, so a work published with work.sequential.* can be reproduced in the site.mochott.comic.* namespace.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:4tr5dqti7nmu6g2czpthntak/site.mochott.comic.defs)
- [Documentation](https://lexicon.garden/lexicon/did:plc:4tr5dqti7nmu6g2czpthntak/site.mochott.comic.defs/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:4tr5dqti7nmu6g2czpthntak/site.mochott.comic.defs/examples)

## Definitions

### `site.mochott.comic.defs#aspectRatio`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `height` | `integer` | Yes |  |
| `width` | `integer` | Yes |  |

### `site.mochott.comic.defs#bounds`

**Type**: `object`

Rectangle on an image in ten-thousandths of its width and height (0-10000), origin top left.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `height` | `integer` | Yes |  |
| `width` | `integer` | Yes |  |
| `x` | `integer` | Yes |  |
| `y` | `integer` | Yes |  |

### `site.mochott.comic.defs#category`

**Type**: `string`

Series category, e.g. fantasy or sliceOfLife.

**Constraints**: maxLength: 640

### `site.mochott.comic.defs#credit`

**Type**: `object`

A person credited on the work.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `did` | `string` (did) | No |  |
| `displayName` | `string` | Yes |  |
| `role` | `string` | Yes |  |

### `site.mochott.comic.defs#localizedAlt`

**Type**: `object`

Alt text in one language: describes the art and transcribes dialogue, captions and sound effects.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `lang` | `string` (language) | Yes | BCP-47 language tag. |
| `text` | `string` | Yes |  |

### `site.mochott.comic.defs#localizedDescription`

**Type**: `object`

A description in one language.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `lang` | `string` (language) | Yes | BCP-47 language tag. |
| `text` | `string` | Yes |  |

### `site.mochott.comic.defs#localizedImage`

**Type**: `object`

An image in one language.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `image` | `blob` | Yes | The image. |
| `lang` | `string` (language) | Yes | BCP-47 language tag. |

### `site.mochott.comic.defs#localizedShortDescription`

**Type**: `object`

A short blurb in one language.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `lang` | `string` (language) | Yes | BCP-47 language tag. |
| `text` | `string` | Yes |  |

### `site.mochott.comic.defs#localizedText`

**Type**: `object`

Text in one language.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `lang` | `string` (language) | Yes | BCP-47 language tag. |
| `text` | `string` | Yes |  |

### `site.mochott.comic.defs#localizedTitle`

**Type**: `object`

A title in one language.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `lang` | `string` (language) | Yes | BCP-47 language tag. |
| `text` | `string` | Yes |  |

### `site.mochott.comic.defs#minisiteCategory`

**Type**: `object`

A reference to a category defined in a site.mochott.minisite record.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `minisite` | `string` (at-uri) | Yes | AT URI of the site.mochott.minisite record. |
| `slug` | `string` | Yes | Slug of a category in that minisite. |

### `site.mochott.comic.defs#panel`

**Type**: `object`

A panel on a page or strip, in reading order. All fields are optional; a panel without bounds carries alt text for the whole image.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `alt` | `array` | No | Alt text for the panel. |
| `background` | `ref` → `site.mochott.comic.defs#rgba` | No | Fill around the panel when reading panel by panel. |
| `bounds` | `ref` → `site.mochott.comic.defs#bounds` | No |  |
| `mask` | `blob` | No | Black and white PNG of the exact panel shape, covering its bounds. |
| `transition` | `string` | No | How a panel-by-panel reader moves to this panel. |

### `site.mochott.comic.defs#rgba`

**Type**: `object`

Color; a is opacity from 0 to 100.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `a` | `integer` | Yes |  |
| `b` | `integer` | Yes |  |
| `g` | `integer` | Yes |  |
| `r` | `integer` | Yes |  |

### `site.mochott.comic.defs#sequentialWork`

**Type**: `object`

Points a site.standard.document (content union) at the canonical comic it announces.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `series` | `string` (at-uri) | No | AT URI of the work.sequential.series. |
| `work` | `string` (at-uri) | Yes | AT URI of the work.sequential.chapter or work.sequential.strip. |

### `site.mochott.comic.defs#tag`

**Type**: `string`

Free-form tag without a leading #.

**Constraints**: maxLength: 640

### `site.mochott.comic.defs#version`

**Type**: `object`

Another version of the same artwork.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `image` | `blob` | Yes | The version image. |
| `kind` | `string` | Yes | Production stage or treatment. |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "aspectRatio": {
      "properties": {
        "height": {
          "minimum": 1,
          "type": "integer"
        },
        "width": {
          "minimum": 1,
          "type": "integer"
        }
      },
      "required": [
        "width",
        "height"
      ],
      "type": "object"
    },
    "bounds": {
      "description": "Rectangle on an image in ten-thousandths of its width and height (0-10000), origin top left.",
      "properties": {
        "height": {
          "maximum": 10000,
          "minimum": 1,
          "type": "integer"
        },
        "width": {
          "maximum": 10000,
          "minimum": 1,
          "type": "integer"
        },
        "x": {
          "maximum": 10000,
          "minimum": 0,
          "type": "integer"
        },
        "y": {
          "maximum": 10000,
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "x",
        "y",
        "width",
        "height"
      ],
      "type": "object"
    },
    "category": {
      "description": "Series category, e.g. fantasy or sliceOfLife.",
      "maxGraphemes": 64,
      "maxLength": 640,
      "type": "string"
    },
    "credit": {
      "description": "A person credited on the work.",
      "properties": {
        "did": {
          "format": "did",
          "type": "string"
        },
        "displayName": {
          "maxGraphemes": 100,
          "maxLength": 1000,
          "type": "string"
        },
        "role": {
          "knownValues": [
            "writer",
            "penciler",
            "inker",
            "colorist",
            "flats",
            "letterer",
            "cover",
            "creator",
            "editor",
            "editorInChief",
            "associateEditor",
            "assistantEditor",
            "designer",
            "artist",
            "translator",
            "painter",
            "backgrounds"
          ],
          "maxGraphemes": 64,
          "maxLength": 640,
          "type": "string"
        }
      },
      "required": [
        "displayName",
        "role"
      ],
      "type": "object"
    },
    "localizedAlt": {
      "description": "Alt text in one language: describes the art and transcribes dialogue, captions and sound effects.",
      "properties": {
        "lang": {
          "description": "BCP-47 language tag.",
          "format": "language",
          "type": "string"
        },
        "text": {
          "maxGraphemes": 10000,
          "maxLength": 100000,
          "type": "string"
        }
      },
      "required": [
        "lang",
        "text"
      ],
      "type": "object"
    },
    "localizedDescription": {
      "description": "A description in one language.",
      "properties": {
        "lang": {
          "description": "BCP-47 language tag.",
          "format": "language",
          "type": "string"
        },
        "text": {
          "maxGraphemes": 3000,
          "maxLength": 30000,
          "type": "string"
        }
      },
      "required": [
        "lang",
        "text"
      ],
      "type": "object"
    },
    "localizedImage": {
      "description": "An image in one language.",
      "properties": {
        "image": {
          "accept": [
            "image/jpeg",
            "image/png",
            "image/webp",
            "image/avif"
          ],
          "description": "The image.",
          "maxSize": 4194304,
          "type": "blob"
        },
        "lang": {
          "description": "BCP-47 language tag.",
          "format": "language",
          "type": "string"
        }
      },
      "required": [
        "image",
        "lang"
      ],
      "type": "object"
    },
    "localizedShortDescription": {
      "description": "A short blurb in one language.",
      "properties": {
        "lang": {
          "description": "BCP-47 language tag.",
          "format": "language",
          "type": "string"
        },
        "text": {
          "maxGraphemes": 255,
          "maxLength": 2550,
          "type": "string"
        }
      },
      "required": [
        "lang",
        "text"
      ],
      "type": "object"
    },
    "localizedText": {
      "description": "Text in one language.",
      "properties": {
        "lang": {
          "description": "BCP-47 language tag.",
          "format": "language",
          "type": "string"
        },
        "text": {
          "maxGraphemes": 1000,
          "maxLength": 10000,
          "type": "string"
        }
      },
      "required": [
        "lang",
        "text"
      ],
      "type": "object"
    },
    "localizedTitle": {
      "description": "A title in one language.",
      "properties": {
        "lang": {
          "description": "BCP-47 language tag.",
          "format": "language",
          "type": "string"
        },
        "text": {
          "maxGraphemes": 100,
          "maxLength": 1000,
          "type": "string"
        }
      },
      "required": [
        "lang",
        "text"
      ],
      "type": "object"
    },
    "minisiteCategory": {
      "description": "A reference to a category defined in a site.mochott.minisite record.",
      "properties": {
        "minisite": {
          "description": "AT URI of the site.mochott.minisite record.",
          "format": "at-uri",
          "type": "string"
        },
        "slug": {
          "description": "Slug of a category in that minisite.",
          "maxLength": 64,
          "type": "string"
        }
      },
      "required": [
        "minisite",
        "slug"
      ],
      "type": "object"
    },
    "panel": {
      "description": "A panel on a page or strip, in reading order. All fields are optional; a panel without bounds carries alt text for the whole image.",
      "properties": {
        "alt": {
          "description": "Alt text for the panel.",
          "items": {
            "ref": "site.mochott.comic.defs#localizedAlt",
            "type": "ref"
          },
          "maxLength": 100,
          "type": "array"
        },
        "background": {
          "description": "Fill around the panel when reading panel by panel.",
          "ref": "site.mochott.comic.defs#rgba",
          "type": "ref"
        },
        "bounds": {
          "ref": "site.mochott.comic.defs#bounds",
          "type": "ref"
        },
        "mask": {
          "accept": [
            "image/png"
          ],
          "description": "Black and white PNG of the exact panel shape, covering its bounds.",
          "maxSize": 4194304,
          "type": "blob"
        },
        "transition": {
          "description": "How a panel-by-panel reader moves to this panel.",
          "knownValues": [
            "none",
            "pan",
            "fade",
            "zoom"
          ],
          "maxLength": 64,
          "type": "string"
        }
      },
      "type": "object"
    },
    "rgba": {
      "description": "Color; a is opacity from 0 to 100.",
      "properties": {
        "a": {
          "maximum": 100,
          "minimum": 0,
          "type": "integer"
        },
        "b": {
          "maximum": 255,
          "minimum": 0,
          "type": "integer"
        },
        "g": {
          "maximum": 255,
          "minimum": 0,
          "type": "integer"
        },
        "r": {
          "maximum": 255,
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "r",
        "g",
        "b",
        "a"
      ],
      "type": "object"
    },
    "sequentialWork": {
      "description": "Points a site.standard.document (content union) at the canonical comic it announces.",
      "properties": {
        "series": {
          "description": "AT URI of the work.sequential.series.",
          "format": "at-uri",
          "type": "string"
        },
        "work": {
          "description": "AT URI of the work.sequential.chapter or work.sequential.strip.",
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "work"
      ],
      "type": "object"
    },
    "tag": {
      "description": "Free-form tag without a leading #.",
      "maxGraphemes": 64,
      "maxLength": 640,
      "type": "string"
    },
    "version": {
      "description": "Another version of the same artwork.",
      "properties": {
        "image": {
          "accept": [
            "image/jpeg",
            "image/png",
            "image/webp",
            "image/avif"
          ],
          "description": "The version image.",
          "maxSize": 4194304,
          "type": "blob"
        },
        "kind": {
          "description": "Production stage or treatment.",
          "knownValues": [
            "thumbnails",
            "layout",
            "roughs",
            "pencils",
            "lineart",
            "inks",
            "flats",
            "colors",
            "letters"
          ],
          "maxGraphemes": 64,
          "maxLength": 640,
          "type": "string"
        }
      },
      "required": [
        "image",
        "kind"
      ],
      "type": "object"
    }
  },
  "description": "Shared definitions for mochott comic records. A superset of the work.sequential.defs shapes, so a work published with work.sequential.* can be reproduced in the site.mochott.comic.* namespace.",
  "id": "site.mochott.comic.defs",
  "lexicon": 1
}
```
