{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://unpkg.com/waybetter/icons.schema.json", "title": "wayBetter icon pack", "description": "Glyphs by semantic name, drawn over a site's own icons. Path data, colored layers of path data, or small PNGs: never an SVG document.", "type": "object", "required": [ "id", "name", "license", "glyphs" ], "additionalProperties": false, "properties": { "$schema": { "type": "string" }, "id": { "type": "string", "pattern": "^[a-z0-9-]{1,40}$" }, "name": { "type": "string", "minLength": 1, "maxLength": 60 }, "description": { "type": "string", "maxLength": 200 }, "author": { "type": "string", "maxLength": 60 }, "license": { "type": "string", "minLength": 1, "maxLength": 60, "description": "SPDX id, \"own\" for the author's own drawings, or a plain name for artwork under other terms." }, "source": { "type": "string", "maxLength": 200 }, "credits": { "type": "string", "maxLength": 400 }, "version": { "const": 1 }, "style": { "type": "object", "additionalProperties": false, "properties": { "stroke": { "type": "number", "minimum": 1, "maximum": 2.5 }, "cap": { "enum": [ "round", "square", "butt" ] }, "join": { "enum": [ "round", "miter", "bevel" ] }, "scale": { "type": "number", "minimum": 0.8, "maximum": 1.25 } } }, "glyphs": { "type": "object", "additionalProperties": false, "properties": { "home": { "$ref": "#/$defs/glyph" }, "home.active": { "$ref": "#/$defs/glyph" }, "explore": { "$ref": "#/$defs/glyph" }, "explore.active": { "$ref": "#/$defs/glyph" }, "notifications": { "$ref": "#/$defs/glyph" }, "notifications.active": { "$ref": "#/$defs/glyph" }, "messages": { "$ref": "#/$defs/glyph" }, "messages.active": { "$ref": "#/$defs/glyph" }, "grok": { "$ref": "#/$defs/glyph" }, "bookmarks": { "$ref": "#/$defs/glyph" }, "bookmarks.active": { "$ref": "#/$defs/glyph" }, "lists": { "$ref": "#/$defs/glyph" }, "communities": { "$ref": "#/$defs/glyph" }, "premium": { "$ref": "#/$defs/glyph" }, "profile": { "$ref": "#/$defs/glyph" }, "profile.active": { "$ref": "#/$defs/glyph" }, "more": { "$ref": "#/$defs/glyph" }, "compose": { "$ref": "#/$defs/glyph" }, "reply": { "$ref": "#/$defs/glyph" }, "repost": { "$ref": "#/$defs/glyph" }, "repost.on": { "$ref": "#/$defs/glyph" }, "like": { "$ref": "#/$defs/glyph" }, "like.on": { "$ref": "#/$defs/glyph" }, "views": { "$ref": "#/$defs/glyph" }, "bookmark": { "$ref": "#/$defs/glyph" }, "bookmark.on": { "$ref": "#/$defs/glyph" }, "share": { "$ref": "#/$defs/glyph" }, "verified": { "$ref": "#/$defs/glyph" }, "logo": { "$ref": "#/$defs/glyph" }, "caret": { "$ref": "#/$defs/glyph" }, "back": { "$ref": "#/$defs/glyph" }, "close": { "$ref": "#/$defs/glyph" }, "search": { "$ref": "#/$defs/glyph" }, "settings": { "$ref": "#/$defs/glyph" }, "media": { "$ref": "#/$defs/glyph" }, "gif": { "$ref": "#/$defs/glyph" }, "poll": { "$ref": "#/$defs/glyph" }, "emoji": { "$ref": "#/$defs/glyph" }, "schedule": { "$ref": "#/$defs/glyph" }, "location": { "$ref": "#/$defs/glyph" }, "pinned": { "$ref": "#/$defs/glyph" }, "repostContext": { "$ref": "#/$defs/glyph" }, "lock": { "$ref": "#/$defs/glyph" }, "history": { "$ref": "#/$defs/glyph" }, "studio": { "$ref": "#/$defs/glyph" }, "articles": { "$ref": "#/$defs/glyph" } }, "maxProperties": 64, "minProperties": 1 }, "symbols": { "type": "object", "additionalProperties": false, "properties": { "like": { "enum": [ "heart", "star", "custom" ] }, "separator": { "enum": [ "dot", "bullet", "slash", "dash", "pipe", "none" ] } } }, "labels": { "type": "object", "additionalProperties": false, "properties": { "reply": { "type": "string", "minLength": 1, "maxLength": 12, "pattern": "^[^\\u0000-\\u001f\"\\\\<>&{};'`]+$" }, "repost": { "type": "string", "minLength": 1, "maxLength": 12, "pattern": "^[^\\u0000-\\u001f\"\\\\<>&{};'`]+$" }, "like": { "type": "string", "minLength": 1, "maxLength": 12, "pattern": "^[^\\u0000-\\u001f\"\\\\<>&{};'`]+$" }, "views": { "type": "string", "minLength": 1, "maxLength": 12, "pattern": "^[^\\u0000-\\u001f\"\\\\<>&{};'`]+$" }, "bookmark": { "type": "string", "minLength": 1, "maxLength": 12, "pattern": "^[^\\u0000-\\u001f\"\\\\<>&{};'`]+$" }, "share": { "type": "string", "minLength": 1, "maxLength": 12, "pattern": "^[^\\u0000-\\u001f\"\\\\<>&{};'`]+$" } } } }, "$defs": { "hex": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" }, "role": { "description": "A color role of the theme. Components never carry a color literal.", "enum": [ "bg", "surface", "elevated", "page", "border", "text", "muted", "accent", "onAccent", "inverse", "onInverse" ] }, "fontRoleName": { "enum": [ "interface", "post", "heading", "numbers", "mono", "chrome", "dialog" ] }, "shadow": { "enum": [ "none", "soft", "deep", "hard", "inset", "glow" ] }, "fill": { "oneOf": [ { "$ref": "#/$defs/role" }, { "const": "transparent" } ] }, "state": { "type": "object", "additionalProperties": false, "properties": { "fill": { "$ref": "#/$defs/fill" }, "text": { "$ref": "#/$defs/role" }, "borderColor": { "$ref": "#/$defs/role" }, "shadow": { "$ref": "#/$defs/shadow" }, "lift": { "type": "number", "minimum": 0, "maximum": 4 }, "scale": { "type": "number", "minimum": 0.96, "maximum": 1.04 }, "underline": { "type": "boolean" } } }, "fillGlass": { "oneOf": [ { "$ref": "#/$defs/role" }, { "const": "transparent" }, { "const": "glass" } ] }, "stateGlass": { "type": "object", "additionalProperties": false, "properties": { "fill": { "$ref": "#/$defs/fillGlass" }, "text": { "$ref": "#/$defs/role" }, "borderColor": { "$ref": "#/$defs/role" }, "shadow": { "$ref": "#/$defs/shadow" }, "lift": { "type": "number", "minimum": 0, "maximum": 4 }, "scale": { "type": "number", "minimum": 0.96, "maximum": 1.04 }, "underline": { "type": "boolean" } } }, "fillGradient": { "oneOf": [ { "$ref": "#/$defs/role" }, { "const": "transparent" }, { "type": "object", "additionalProperties": false, "properties": { "from": { "$ref": "#/$defs/role" }, "to": { "$ref": "#/$defs/role" }, "angle": { "type": "number", "minimum": 0, "maximum": 360 } }, "required": [ "from", "to" ] } ] }, "stateGradient": { "type": "object", "additionalProperties": false, "properties": { "fill": { "$ref": "#/$defs/fillGradient" }, "text": { "$ref": "#/$defs/role" }, "borderColor": { "$ref": "#/$defs/role" }, "shadow": { "$ref": "#/$defs/shadow" }, "lift": { "type": "number", "minimum": 0, "maximum": 4 }, "scale": { "type": "number", "minimum": 0.96, "maximum": 1.04 }, "underline": { "type": "boolean" } } }, "fillGlassGradient": { "oneOf": [ { "$ref": "#/$defs/role" }, { "const": "transparent" }, { "const": "glass" }, { "type": "object", "additionalProperties": false, "properties": { "from": { "$ref": "#/$defs/role" }, "to": { "$ref": "#/$defs/role" }, "angle": { "type": "number", "minimum": 0, "maximum": 360 } }, "required": [ "from", "to" ] } ] }, "stateGlassGradient": { "type": "object", "additionalProperties": false, "properties": { "fill": { "$ref": "#/$defs/fillGlassGradient" }, "text": { "$ref": "#/$defs/role" }, "borderColor": { "$ref": "#/$defs/role" }, "shadow": { "$ref": "#/$defs/shadow" }, "lift": { "type": "number", "minimum": 0, "maximum": 4 }, "scale": { "type": "number", "minimum": 0.96, "maximum": 1.04 }, "underline": { "type": "boolean" } } }, "pathData": { "type": "string", "minLength": 1, "maxLength": 4000, "pattern": "^[MmLlHhVvCcSsQqTtAaZz0-9eE\\s,.+-]+$" }, "glyph": { "oneOf": [ { "type": "object", "additionalProperties": false, "properties": { "d": { "$ref": "#/$defs/pathData" }, "rule": { "const": "evenodd" }, "stroke": { "type": "boolean" } }, "required": [ "d" ] }, { "type": "object", "additionalProperties": false, "properties": { "layers": { "type": "array", "minItems": 1, "maxItems": 6, "items": { "type": "object", "additionalProperties": false, "properties": { "d": { "$ref": "#/$defs/pathData" }, "fill": { "oneOf": [ { "$ref": "#/$defs/role" }, { "$ref": "#/$defs/hex" }, { "type": "object", "additionalProperties": false, "properties": { "from": { "$ref": "#/$defs/hex" }, "to": { "$ref": "#/$defs/hex" } }, "required": [ "from", "to" ] } ] }, "opacity": { "type": "number", "minimum": 0, "maximum": 1 }, "rule": { "const": "evenodd" } }, "required": [ "d", "fill" ] } } }, "required": [ "layers" ] }, { "type": "object", "additionalProperties": false, "properties": { "png": { "type": "string", "maxLength": 6022, "pattern": "^data:image/png;base64,[A-Za-z0-9+/]+={0,2}$" }, "pixel": { "type": "boolean" } }, "required": [ "png" ] } ] } } }