Schemas / v0.4

Icons

Schema for resolved icon manifests consumed by language servers and tooling.

Minimal example

This manifest declares the minimal resolved icons list. Each icon requires a name and at least one platforms entry, and each platform entry must assert at least one of import, usage, and component, in any combination.

{
  "$schema": "https://designlasagna.recipes/schemas/v0.4/icons.json",
  "schemaVersion": "0.4.0",
  "icons": [
    {
      "name": "lasagna",
      "platforms": {
        "web": {
          "import": "lasagna-icon.js"
        }
      }
    }
  ]
}

Manifest fields

The root object is the resolved icons manifest. Required fields are marked with *.

Field Type Description
string Identifier of the schema that validates the manifest.

Use when: Always set it so editors and validators can find the contract.

Origin: Contract metadata; set by authors or generators.

Example usage

{
  "$schema": "https://designlasagna.recipes/schemas/v0.4/icons.json"
}
string Schema version the manifest conforms to.

Use when: Keep it in sync with the $schema document the manifest is validated against.

Origin: Contract metadata; set by authors or generators.

Related: $schema

Example usage

{
  "schemaVersion": "0.4.0"
}
string ISO 8601 timestamp identifying the generation run that produced the manifest.

Use when: Set by generators so consumers can detect and track stale manifests.

Origin: Computed by analysis or build tooling.

Example usage

{
  "generatedAt": "2026-01-15T08:30:00Z"
}
DesignSystemMeta Identity of the design system the manifest describes.

Use when: Help tooling label, group, and switch between design systems.

Origin: Authored metadata, carried through by generators.

Related: icons

Example usage

{
  "designSystem": {
    "name": "Design Lasagna",
    "version": "1.0.0",
    "package": "@designlasagna/design-system"
  }
}
array Resolved icons in the manifest.

Use when: Provide the icon data that tooling completes, documents, and consumes.

Origin: Resolved by generators from authored icon sources.

Related: designSystem

Example usage

{
  "icons": [
    {
      "name": "lasagna",
      "platforms": {
        "web": {
          "import": "lasagna-icon.js"
        }
      }
    }
  ]
}

Icon fields

Each item in icons follows this shape.

Field Type Description
string Stable icon identifier.

Use when: Always provide it; consumers use it as the durable icon identity.

Origin: Authored metadata.

Related: description, keywords

Example usage

{
  "name": "lasagna"
}
string Human-readable description of the icon.

Use when: Use to give implementers the intent that a name cannot convey.

Origin: Authored metadata.

Related: name, keywords

Example usage

{
  "description": "Layered pasta with ricotta."
}
array Search keywords for autocomplete and AI matching.

Use when: Use to improve discovery in autocomplete and documentation search.

Origin: Authored metadata.

Related: description, name

Example usage

{
  "keywords": [
    "pasta",
    "food"
  ]
}
string The icon's category, for grouping in browsing and autocomplete.

Use when: Use to organise icons into named categories.

Origin: Authored metadata.

Related: name

Example usage

{
  "category": "food"
}
array Available sizes, such as '16', '24', or '32'.

Use when: Use so tooling can offer and validate the icon's size variants.

Origin: Authored metadata.

Related: variants

Example usage

{
  "sizes": [
    "16",
    "24",
    "32"
  ]
}
array Style variants, such as 'outlined', 'filled', or 'rounded'.

Use when: Use so tooling can offer the icon's style variants.

Origin: Authored metadata.

Related: sizes

Example usage

{
  "variants": [
    "outlined",
    "filled"
  ]
}
integer Sort weight for autocomplete, from 0 (lowest) to 100 (highest).

Use when: Use to surface the most common icons first in tooling.

Origin: Authored metadata.

Related: keywords

Example usage

{
  "priority": 80
}
string Version or date when the icon was introduced.

Use when: Use to make compatibility and migration decisions.

Origin: Authored metadata.

Related: status, deprecated

Example usage

{
  "since": "1.2.0"
}
lifecycle.json#/definitions/Status Lifecycle status from the shared v0.4 lifecycle fragment; 'deprecated' and 'removed' are normative, other values are informational.

Use when: Declare the normative lifecycle state of the icon, or carry informational states such as 'stable' or 'experimental'.

Origin: Authored metadata.

Related: deprecated

Example usage

{
  "status": "stable"
}
Docs Links to the icon's supporting documentation.

Use when: Use when readers need to continue to design-system guidance outside the manifest.

Origin: Authored metadata.

Related: description

Example usage

{
  "docs": {
    "url": "https://designlasagna.recipes/docs/icons/lasagna"
  }
}
object
values: PlatformIcon
Platform-specific icon references, keyed by platform identifier; at least one platform is required.

Use when: Always provide at least one platform so tooling can realise the icon.

Origin: Generated or authored mapping.

Related: name

Example usage

{
  "platforms": {
    "web": {
      "import": "lasagna-icon.js"
    }
  }
}
lifecycle.json#/definitions/NativeDeprecation Native deprecation record from the shared v0.4 lifecycle fragment; may be false, null, or a record with a required message.

Use when: Guide consumers away from an icon while it remains available, recording its replacement and removal target.

Origin: Authored metadata.

Related: status, since

Example usage

{
  "deprecated": {
    "message": "Use the flat lasagna icon instead.",
    "replacement": "lasagna-flat"
  }
}
array Arbitrary classification labels for the icon.

Use when: Use to classify icons for targeted lint rules and filtering.

Origin: Authored metadata.

Related: keywords, category

Example usage

{
  "tags": [
    "brand"
  ]
}

Nested definitions

Reusable shapes referenced by the fields above.

Deprecated

Deprecation record for a native manifest entity; defined in the shared lifecycle fragment (lifecycle.json) and referenced from this schema, permissive of unknown properties.

lifecycle.json#/definitions/Deprecated

DesignSystemMeta

Identity and discovery metadata for the design system that produced the manifest.

Field Type Description
string Display name of the design system.

Use when: Identify the design system in documentation and tooling.

Origin: Authored metadata.

Example usage

{
  "name": "Design Lasagna"
}
string Version of the design system.

Use when: Track which design-system version a manifest describes.

Origin: Authored metadata; maintained with releases.

Example usage

{
  "version": "1.0.0"
}
string Documentation links for the design system.

Use when: Point consumers to the design system's documentation.

Origin: Authored metadata.

Example usage

{
  "documentation": "https://designlasagna.recipes/docs"
}
string Package identifier of the design system.

Use when: Map the manifest to its published package.

Origin: Authored metadata.

Example usage

{
  "package": "@designlasagna/design-system"
}
object URL templates for generating documentation links.

Use when: Configure how tooling builds documentation links for icons.

Origin: Authored metadata.

Example usage

{
  "docsTemplates": {
    "url": "/docs/icons/{name}"
  }
}

Docs

Documentation and design-tool links for an icon.

Field Type Description
string Primary documentation page for this item.

Use when: Provide it as the canonical destination for detailed guidance.

Origin: Authored metadata.

Related: figma, storybook

Example usage

{
  "url": "https://designlasagna.recipes/docs/icons/lasagna"
}
string Figma reference for the design or component.

Use when: Use when implementers need to compare the rendered result with the design source.

Origin: Authored metadata.

Related: url

Example usage

{
  "figma": "https://figma.com/file/designlasagna/icons"
}
string Storybook reference for live component states.

Use when: Use when readers benefit from interactive examples.

Origin: Authored metadata.

Related: url

Example usage

{
  "storybook": "https://storybook.designlasagna.recipes/?path=/story/icons--lasagna"
}

PlatformIcon

How one icon is realised on a specific platform: at least one of an import path, a usage snippet, and a component name, in any combination.

Field Type Description
string Module or asset path that imports the icon on this platform.

Use when: Use when the platform consumes the icon through an import or module reference.

Origin: Generated or authored mapping.

Related: usage, component

Example usage

{
  "import": "lasagna-icon.js"
}
string Usage snippet that renders the icon on this platform.

Use when: Use when the platform expresses the icon as ready-to-paste usage rather than an import.

Origin: Generated or authored mapping.

Related: import, component

Example usage

{
  "usage": "LasagnaIcon({ name: 'lasagna' })"
}
string Component name that renders the icon on this platform.

Use when: Use when the platform exposes the icon as a named component.

Origin: Generated or authored mapping.

Related: import, usage

Example usage

{
  "component": "LasagnaIcon"
}

All schemas