a tool for shared writing and social publishing
1import { LexiconDoc, LexRefUnion } from "@atproto/lexicon"; 2 3export const PubLeafletThemeBackgroundImage = { 4 lexicon: 1, 5 id: "pub.leaflet.theme.backgroundImage", 6 defs: { 7 main: { 8 type: "object", 9 required: ["image"], 10 properties: { 11 image: { 12 type: "blob", 13 accept: ["image/*"], 14 maxSize: 1000000, 15 }, 16 width: { type: "integer" }, 17 repeat: { type: "boolean" }, 18 }, 19 }, 20 }, 21}; 22export const PubLeafletThemeColor: LexiconDoc = { 23 lexicon: 1, 24 id: "pub.leaflet.theme.color", 25 defs: { 26 rgba: { 27 type: "object", 28 required: ["r", "g", "b", "a"], 29 properties: { 30 r: { type: "integer", maximum: 255, minimum: 0 }, 31 g: { type: "integer", maximum: 255, minimum: 0 }, 32 b: { type: "integer", maximum: 255, minimum: 0 }, 33 a: { type: "integer", maximum: 100, minimum: 0 }, 34 }, 35 }, 36 rgb: { 37 type: "object", 38 required: ["r", "g", "b"], 39 properties: { 40 r: { type: "integer", maximum: 255, minimum: 0 }, 41 g: { type: "integer", maximum: 255, minimum: 0 }, 42 b: { type: "integer", maximum: 255, minimum: 0 }, 43 }, 44 }, 45 }, 46}; 47 48export const ThemeLexicons = [ 49 PubLeafletThemeBackgroundImage, 50 PubLeafletThemeColor, 51]; 52 53export const ColorUnion: LexRefUnion = { 54 type: "union", 55 refs: Object.keys(PubLeafletThemeColor.defs).map( 56 (key) => `${PubLeafletThemeColor.id}#${key}`, 57 ), 58};