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};