Files
lucide/icon.schema.json
T

239 lines
6.1 KiB
JSON

{
"$id": "https://lucide.dev/icons.schema.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$vocabulary": {
"https://json-schema.org/draft/2020-12/vocab/core": true,
"https://json-schema.org/draft/2020-12/vocab/applicator": true,
"https://json-schema.org/draft/2020-12/vocab/unevaluated": true,
"https://json-schema.org/draft/2020-12/vocab/validation": true,
"https://json-schema.org/draft/2020-12/vocab/meta-data": true,
"https://json-schema.org/draft/2020-12/vocab/format-annotation": true,
"https://json-schema.org/draft/2020-12/vocab/content": true
},
"title": "Lucide Icons icon schema",
"type": "object",
"additionalProperties": false,
"required": ["$schema", "contributors", "categories", "tags", "use-cases"],
"properties": {
"$schema": {
"type": "string"
},
"aliases": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["name"],
"properties": {
"name": {
"type": "string"
},
"deprecated": {
"const": true
},
"deprecationReason": {
"$ref": "#/$defs/aliasDeprecationReasons"
},
"toBeRemovedInVersion": {
"$ref": "#/$defs/versionNumber",
"description": "The version this icon will be removed in."
}
},
"dependentRequired": {
"deprecated": ["deprecationReason"],
"deprecationReason": ["deprecated"],
"toBeRemovedInVersion": ["deprecated"]
}
},
"uniqueItems": true
},
"categories": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"enum": [
"accessibility",
"account",
"animals",
"arrows",
"buildings",
"charts",
"communication",
"connectivity",
"cursors",
"design",
"development",
"devices",
"emoji",
"files",
"finance",
"food-beverage",
"gaming",
"home",
"layout",
"letters-digits",
"mail",
"math",
"medical",
"multimedia",
"nature",
"navigation",
"notifications",
"people",
"photography",
"science",
"seasons",
"security",
"shapes",
"shopping",
"social",
"sports",
"sustainability",
"text",
"time",
"tools",
"transportation",
"travel",
"weather"
]
},
{
"type": "string",
"pattern": "^\\$extends:[a-z0-9]+(-[a-z0-9]+)*$"
}
]
},
"uniqueItems": true
},
"contributors": {
"type": "array",
"items": {
"type": "string",
"if": {
"pattern": "^\\$[a-zA-Z]"
},
"then": {
"pattern": "^\\$extends:[a-z0-9]+(-[a-z0-9]+)*$"
}
},
"minItems": 1,
"uniqueItems": true
},
"tags": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"not": {
"pattern": "^\\$[a-zA-Z]"
}
},
{
"type": "string",
"pattern": "^\\$extends:[a-z0-9]+(-[a-z0-9]+)*$"
},
{
"$ref": "#/$defs/groupMarker"
}
]
},
"minItems": 1,
"uniqueItems": true
},
"use-cases": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 0,
"uniqueItems": true
},
"deprecated": {
"const": true
},
"deprecationReason": {
"$ref": "#/$defs/iconDeprecationReasons"
},
"toBeRemovedInVersion": {
"$ref": "#/$defs/versionNumber",
"description": "The version this icon will be removed in."
}
},
"dependentRequired": {
"deprecated": ["deprecationReason"],
"deprecationReason": ["deprecated"],
"toBeRemovedInVersion": ["deprecated"]
},
"$defs": {
"iconDeprecationReasons": {
"type": "string",
"enum": ["icon.design", "icon.use-case"]
},
"aliasDeprecationReasons": {
"type": "string",
"enum": ["alias.typo", "alias.name", "alias.duplicate"]
},
"versionNumber": {
"type": "string",
"pattern": "v[0-9]+(\\.[0-9]+)+"
},
"groupMarker": {
"type": "string",
"description": "Pulls in the tags of groups/<name>.json.",
"enum": [
"$group:chart",
"$group:check",
"$group:clock",
"$group:code",
"$group:cog",
"$group:currency",
"$group:digit",
"$group:direction-down",
"$group:direction-down-left",
"$group:direction-down-right",
"$group:direction-left",
"$group:direction-right",
"$group:direction-up",
"$group:direction-up-left",
"$group:direction-up-right",
"$group:dot",
"$group:exclamation-mark",
"$group:graph",
"$group:heart",
"$group:key",
"$group:letter",
"$group:lock",
"$group:minus",
"$group:navigation-first",
"$group:navigation-last",
"$group:navigation-next",
"$group:navigation-previous",
"$group:off",
"$group:pause",
"$group:pen",
"$group:percent",
"$group:play",
"$group:plus",
"$group:position-bottom",
"$group:position-left",
"$group:position-right",
"$group:position-top",
"$group:question-mark",
"$group:search",
"$group:shield",
"$group:sort",
"$group:sparkles",
"$group:star",
"$group:stop",
"$group:sync",
"$group:user",
"$group:x"
]
}
},
"description": "A JSON Schema for icons defined by Lucide Icons."
}