sveltekit-ui 1.0.76 → 1.0.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,5 @@
1
+ import { time_formats } from "$lib/Components/TimeInput/index.js"
2
+
1
3
  export const mime_type_extensions = {
2
4
  "image/webp": "webp",
3
5
  "image/jpeg": "jpeg",
@@ -73,2055 +75,90 @@ export const acceptable_storage_mime_types = [
73
75
  "text/markdown",
74
76
  ]
75
77
 
76
- const array_literal = {
77
- kind: "literal",
78
- category: "variables",
79
- name: "Array",
80
- postgres_type: "jsonb",
81
- json_schema: { type: "array" },
82
- validator: (input) => {
83
- // validate tbd
84
- },
85
- }
86
- const array_uniform_literal = {
87
- kind: "literal",
88
- category: "variables",
89
- name: "Array Uniform",
90
- postgres_type: "jsonb",
91
- json_schema: { type: "array" },
92
- validator: (input) => {
93
- // validate tbd
94
- },
95
- }
96
- const object_literal = {
97
- kind: "literal",
98
- category: "variables",
99
- name: "Object",
100
- postgres_type: "jsonb",
101
- json_schema: { type: "object" },
102
- validator: (input) => {
103
- // validate here
104
- },
105
- }
106
- const object_uniform_literal = {
107
- kind: "literal",
108
- category: "variables",
109
- name: "Object Uniform",
110
- postgres_type: "jsonb",
111
- json_schema: { type: "object" },
112
- validator: (input) => {
113
- // validate here
114
- },
115
- }
116
- const text_literal = {
117
- kind: "literal",
118
- category: "variables",
119
- name: "Text",
120
- postgres_type: "text",
121
- json_schema: { type: "string" },
122
- validator: (input) => {
123
- // validate here
124
- },
125
- }
126
- const boolean_literal = {
127
- kind: "literal",
128
- category: "variables",
129
- name: "Boolean",
130
- postgres_type: "boolean",
131
- json_schema: { type: "boolean" },
132
- validator: (input) => {
133
- // validate here
134
- },
135
- }
136
- const int_literal = {
137
- kind: "literal",
138
- category: "variables",
139
- name: "Integer",
140
- postgres_type: "int",
141
- json_schema: { type: "number" },
142
- validator: (input) => {
143
- // validate here
144
- },
145
- }
146
- const bigint_literal = {
147
- kind: "literal",
148
- category: "variables",
149
- name: "Big Integer",
150
- postgres_type: "bigint",
151
- json_schema: { type: "number" },
152
- validator: (input) => {
153
- // validate here
154
- },
155
- }
156
- const null_literal = {
157
- kind: "literal",
158
- category: "variables",
159
- name: "Null",
160
- postgres_type: "jsonb",
161
- json_schema: { type: "null" },
162
- validator: (input) => {
163
- // validate here
164
- },
165
- }
166
- const epoch_literal = {
167
- kind: "literal",
168
- category: "variables",
169
- name: "Epoch",
170
- postgres_type: "bigint",
171
- json_schema: { type: "number", description: "Epoch in seconds" },
172
- validator: (input) => {
173
- // validate here
174
- },
175
- }
176
- const float_literal = {
177
- kind: "literal",
178
- category: "variables",
179
- name: "Float",
180
- postgres_type: "float",
181
- json_schema: { type: "number" },
182
- validator: (input) => {
183
- // validate here
184
- },
185
- }
186
- const color_literal = {
187
- kind: "literal",
188
- category: "variables",
189
- name: "Color",
190
- postgres_type: "jsonb",
191
- json_schema: {
192
- type: "object",
193
- description:
194
- "color parts l (lightness), c (chroma), h (hue), o (opacity) can range from 0-24. An example of a solid black that flips to white in dark mode would be { c: 0, l: 0, h: 0, o: 24, is_dark_theme_invert: true }. Generally use is_dark_theme_invert true, opacity 24, c is chroma and gets probably too vibrant over 14 so 10 is probably a standard amount and 3 if want softer or 0 for white, l is lightness and 0 is black and 24 full light typcally we assume a light backround so you might use something like l 8 for a header text. h is hue and the 0-24 range can be understood as 0: 0 oklch h val, red (pure red), 1: 14 oklch h val, orange-red (red with an orange tint), 2: 29 oklch h val, orange (warm orange), 3: 43 oklch h val, yellow-orange (a deep orange, close to golden), 4: 58 oklch h val, yellow (bright yellow), 5: 72 oklch h val, greenish-yellow (yellow with a slight green tint), 6: 87 oklch h val, yellow-green (green with strong yellow undertones), 7: 101 oklch h val, green (pure green), 8: 116 oklch h val, green-cyan (green shifting toward cyan), 9: 130 oklch h val, cyan (a strong cyan-green color), 10: 145 oklch h val, blue-green (cyan with a blue shift), 11: 159 oklch h val, cyan-blue (a cool blue-leaning cyan), 12: 174 oklch h val, light blue (sky blue, soft and light), 13: 188 oklch h val, blue (pure blue), 14: 203 oklch h val, indigo (a deep blue with hints of purple), 15: 217 oklch h val, blue-violet (a blue shifting toward purple), 16: 232 oklch h val, violet (violet with a blue tint), 17: 246 oklch h val, purple (deep purple), 18: 261 oklch h val, magenta-purple (purple with magenta tones), 19: 275 oklch h val, magenta (deep, vivid magenta), 20: 290 oklch h val, pink-magenta (magenta with a pink hue), 21: 304 oklch h val, pink (a soft, warm pink), 22: 319 oklch h val, pinkish-red (pink leaning toward red), 23: 333 oklch h val, red-pink (vivid red with pink tones), 24: 348 oklch h val, bright red (bright red, slightly pinkish) ",
195
- properties: {
196
- l: { type: "number" },
197
- c: { type: "number" },
198
- h: { type: "number" },
199
- o: { type: "number" },
200
- is_dark_theme_invert: { type: "boolean" },
201
- },
202
- additionalProperties: false,
203
- required: ["l", "c", "h", "o", "is_dark_theme_invert"],
204
- },
205
- validator: (input) => {
206
- // validate here
207
- },
208
- }
209
- const domain_literal = {
210
- kind: "literal",
211
- category: "variables",
212
- name: "Domain",
213
- postgres_type: "text",
214
- json_schema: {
215
- type: "string",
216
- },
217
- validator: (input) => {
218
- // validate here
219
- },
220
- }
221
- const email_address_literal = {
222
- kind: "literal",
223
- category: "variables",
224
- name: "Email Address",
225
- postgres_type: "text",
226
- json_schema: {
227
- type: "string",
228
- // format: "email",
229
- },
230
- validator: (input) => {
231
- // validate here
232
- },
233
- }
234
- const email_address_full_literal = {
235
- kind: "literal",
236
- category: "variables",
237
- name: "Email Address Full",
238
- postgres_type: "jsonb",
239
- json_schema: {
240
- type: "object",
241
- properties: {
242
- domain: domain_literal?.json_schema,
243
- domain_id: text_literal?.json_schema,
244
- account_id: text_literal?.json_schema,
245
- root_domain: domain_literal?.json_schema,
246
- display_name: text_literal?.json_schema,
247
- mailbox_hash: text_literal?.json_schema,
248
- email_address: email_address_literal?.json_schema,
249
- root_email_address: email_address_literal?.json_schema,
250
- epoch_email_address_verified: epoch_literal?.json_schema,
251
- },
252
- additionalProperties: false,
253
- required: ["domain", "root_domain", "mailbox_hash", "email_address", "root_email_address"],
254
- },
255
- validator: (input) => {
256
- // validate here
257
- },
258
- }
259
- const email_attachment_literal = {
260
- kind: "literal",
261
- category: "variables",
262
- name: "Email Attachment",
263
- postgres_type: "jsonb",
264
- json_schema: {
265
- type: "object",
266
- properties: {
267
- name: text_literal?.json_schema,
268
- content: text_literal?.json_schema,
269
- content_id: text_literal?.json_schema,
270
- content_type: text_literal?.json_schema,
271
- },
272
- additionalProperties: false,
273
- required: ["name", "content", "content_id", "content_type"],
274
- },
275
- validator: (input) => {
276
- // validate here
277
- },
278
- }
279
- const json_literal = {
280
- kind: "literal",
281
- category: "variables",
282
- name: "JSON",
283
- postgres_type: "jsonb",
284
- json_schema: {
285
- anyOf: [
286
- { type: "null" },
287
- { type: "boolean" },
288
- { type: "number" },
289
- { type: "string" },
290
- {
291
- type: "array",
292
- items: { $ref: "#/$defs/json_literal" },
293
- },
294
- {
295
- type: "object",
296
- additionalProperties: { $ref: "#/$defs/json_literal" },
297
- },
298
- ],
299
- },
300
- validator: (input) => {
301
- // validate here
302
- },
303
- }
304
- const storage_item_literal = {
305
- kind: "literal",
306
- category: "variables",
307
- name: "Storage Item",
308
- postgres_type: "jsonb",
309
- json_schema: {
310
- type: "object",
311
- properties: {
312
- id: text_literal?.json_schema,
313
- db_epoch_created: epoch_literal?.json_schema,
314
- db_epoch_updated: epoch_literal?.json_schema,
315
- account_id: text_literal?.json_schema,
316
- folder_path: { type: "array", items: text_literal?.json_schema },
317
- file_name: text_literal?.json_schema,
318
- file_extension: text_literal?.json_schema,
319
- mime_type: text_literal?.json_schema,
320
- size_kb: int_literal?.json_schema,
321
- metadata: json_literal?.json_schema,
322
- is_temporary: boolean_literal?.json_schema,
323
- set_to_delete_initiated_at: epoch_literal?.json_schema,
324
- is_public: boolean_literal?.json_schema,
325
- transcription: text_literal?.json_schema,
326
- },
327
- additionalProperties: false,
328
- required: [],
329
- },
330
- validator: (input) => {
331
- // validate here
332
- },
333
- }
334
- const html_literal = {
335
- kind: "literal",
336
- category: "variables",
337
- name: "HTML",
338
- postgres_type: "text",
339
- json_schema: text_literal?.json_schema,
340
- validator: (input) => {
341
- // validate here
342
- },
343
- }
344
- const phone_literal = {
345
- kind: "literal",
346
- category: "variables",
347
- name: "Phone Number",
348
- postgres_type: "jsonb",
349
- json_schema: {
350
- // type: "object",
351
- },
352
- validator: (input) => {
353
- // validate here
354
- },
355
- }
356
- const vector_literal = {
357
- kind: "literal",
358
- category: "variables",
359
- name: "Vector",
360
- postgres_type: "vector",
361
- json_schema: {
362
- type: "array",
363
- items: { type: "number" },
364
- },
365
- validator: (input) => {
366
- // validate here
367
- },
368
- }
369
- const icon_literal = {
370
- kind: "literal",
371
- category: "variables",
372
- name: "Icon",
373
- postgres_type: "jsonb",
374
- json_schema: {
375
- type: "object",
376
- properties: {
377
- icon: text_literal?.json_schema,
378
- color: color_literal?.json_schema,
379
- },
380
- additionalProperties: false,
381
- required: ["icon", "color"],
382
- },
383
- validator: (input) => {
384
- // validate here
385
- },
386
- }
387
- const time_literal = {
388
- kind: "literal",
389
- category: "variables",
390
- name: "Time",
391
- postgres_type: "jsonb",
392
- json_schema: {
393
- type: "object",
394
- properties: {
395
- epoch: { type: "number" },
396
- granularity: { type: "string", enum: ["year", "month", "week", "day", "hour", "minute", "second"] },
397
- year: { type: "number" },
398
- month: { type: "number", enum: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] },
399
- day_of_month: { type: "number", minimum: 1, maximum: 31 },
400
- day_of_week: { type: "number", enum: [0, 1, 2, 3, 4, 5, 6] },
401
- day_of_year: { type: "number", minimum: 1, maximum: 365 },
402
- week_of_year: { type: "number", minimum: 1, maximum: 52 },
403
- hour: { type: "number", minimum: 1, maximum: 24 },
404
- minute: { type: "number", minimum: 1, maximum: 60 },
405
- timezone: { type: "string" },
406
- content: { type: "string" },
407
- datetime: { type: "string" },
408
- },
409
- additionalProperties: false,
410
- required: ["epoch"],
411
- },
412
- validator: (input) => {
413
- // validate here
414
- },
415
- }
416
- const time_zone_literal = {
417
- kind: "literal",
418
- category: "variables",
419
- name: "Time Zone",
420
- postgres_type: "text",
421
- json_schema: text_literal?.json_schema,
422
- validator: (input) => {
423
- // validate here
424
- },
425
- }
426
- const location_literal = {
427
- kind: "literal",
428
- category: "variables",
429
- name: "Location Apple",
430
- postgres_type: "jsonb",
431
- json_schema: {
432
- type: "object",
433
- properties: {
434
- place_id: { type: "string" },
435
- name: { type: "string" },
436
- muid: { type: "string" },
437
- latitude: { type: "number" },
438
- longitude: { type: "number" },
439
- formatted_address: { type: "string" },
440
- country: { type: "string" },
441
- country_code: { type: "string" },
442
- administrative_area: { type: "string" },
443
- administrative_area_code: { type: "string" },
444
- locality: { type: "string" },
445
- sub_locality: { type: "string" },
446
- full_thoroughfare: { type: "string" },
447
- },
448
- required: ["latitude", "longitude", "name"],
449
- additionalProperties: false,
450
- },
451
- validator: (input) => {
452
- // validate here
453
- },
454
- }
455
- const cron_literal = {
456
- kind: "literal",
457
- category: "variables",
458
- name: "Cron",
459
- postgres_type: "jsonb",
460
- json_schema: {
461
- type: "object",
462
- properties: {
463
- content: { type: "string" },
464
- cron: { type: "string" },
465
- minute: { type: "string" },
466
- hour: { type: "string" },
467
- day_of_month: { type: "string" },
468
- month: { type: "string" },
469
- day_of_week: { type: "string" },
470
- },
471
- additionalProperties: false,
472
- required: [],
473
- },
474
- validator: (input) => {
475
- // validate here
476
- },
477
- }
478
- const variable_path_literal = {
479
- kind: "literal",
480
- category: "variables",
481
- name: "Variable Path",
482
- postgres_type: "jsonb",
483
- json_schema: {
484
- type: "array",
485
- description: "The path to the value within variables.",
486
- items: {
487
- anyOf: [
488
- {
489
- type: "string",
490
- },
491
- {
492
- type: "number",
493
- },
494
- {
495
- type: "array",
496
- items: {
497
- anyOf: [
498
- {
499
- type: "string",
500
- },
501
- {
502
- type: "number",
503
- },
504
- ],
505
- },
506
- },
507
- ],
508
- },
509
- },
510
- validator: (input) => {
511
- // validate here
512
- },
513
- }
514
- const content_literal = {
515
- kind: "literal",
516
- category: "variables",
517
- name: "Content",
518
- postgres_type: "jsonb",
519
- // json_schema: get_content_node_json_schema("content_literal"),
520
- validator: (input) => {
521
- // validate here
522
- },
523
- }
524
- const table_id_for_foreign_row_literal = {
525
- kind: "literal",
526
- category: "variables",
527
- name: "Table ID for Foreign Row",
528
- postgres_type: "text",
529
- // json_schema: get_content_node_json_schema("content_literal"),
530
- validator: (input) => {
531
- // validate here
532
- },
533
- }
534
- // image_literal
535
- // audio_literal
536
- // file_literal
537
- // dropdown_literal
538
- // text_array_literal
539
- // function_literal
78
+ export const language_options = [
79
+ { key: "en", name: "English", english_name: "English", emoji: "🇺🇸" },
80
+ { key: "es", name: "Español", english_name: "Spanish", emoji: "🇪🇸" },
81
+ { key: "zh", name: "中文", english_name: "Chinese", emoji: "🇨🇳" },
82
+ { key: "fr", name: "Français", english_name: "French", emoji: "🇫🇷" },
83
+ { key: "de", name: "Deutsch", english_name: "German", emoji: "🇩🇪" },
84
+ { key: "ja", name: "日本語", english_name: "Japanese", emoji: "🇯🇵" },
85
+ { key: "pt", name: "Português", english_name: "Portuguese", emoji: "🇵🇹" },
86
+ { key: "it", name: "Italiano", english_name: "Italian", emoji: "🇮🇹" },
87
+ { key: "ru", name: "Русский", english_name: "Russian", emoji: "🇷🇺" },
88
+ { key: "ko", name: "한국어", english_name: "Korean", emoji: "🇰🇷" },
89
+ { key: "ar", name: "العربية", english_name: "Arabic", emoji: "🇸🇦" },
90
+ { key: "hi", name: "हिन्दी", english_name: "Hindi", emoji: "🇮🇳" },
91
+ { key: "nl", name: "Nederlands", english_name: "Dutch", emoji: "🇳🇱" },
92
+ { key: "sv", name: "Svenska", english_name: "Swedish", emoji: "🇸🇪" },
93
+ { key: "da", name: "Dansk", english_name: "Danish", emoji: "🇩🇰" },
94
+ { key: "fi", name: "Suomi", english_name: "Finnish", emoji: "🇫🇮" },
95
+ { key: "no", name: "Norsk", english_name: "Norwegian", emoji: "🇳🇴" },
96
+ { key: "pl", name: "Polski", english_name: "Polish", emoji: "🇵🇱" },
97
+ { key: "cs", name: "Čeština", english_name: "Czech", emoji: "🇨🇿" },
98
+ { key: "tr", name: "Türkçe", english_name: "Turkish", emoji: "🇹🇷" },
99
+ { key: "el", name: "Ελληνικά", english_name: "Greek", emoji: "🇬🇷" },
100
+ { key: "hu", name: "Magyar", english_name: "Hungarian", emoji: "🇭🇺" },
101
+ { key: "th", name: "ไทย", english_name: "Thai", emoji: "🇹🇭" },
102
+ { key: "id", name: "Bahasa Indonesia", english_name: "Indonesian", emoji: "🇮🇩" },
103
+ { key: "ro", name: "Română", english_name: "Romanian", emoji: "🇷🇴" },
104
+ { key: "bg", name: "Български", english_name: "Bulgarian", emoji: "🇧🇬" },
105
+ { key: "vi", name: "Tiếng Việt", english_name: "Vietnamese", emoji: "🇻🇳" },
106
+ { key: "sk", name: "Slovenčina", english_name: "Slovak", emoji: "🇸🇰" },
107
+ { key: "sl", name: "Slovenščina", english_name: "Slovenian", emoji: "🇸🇮" },
108
+ { key: "hr", name: "Hrvatski", english_name: "Croatian", emoji: "🇭🇷" },
109
+ { key: "sr", name: "Српски", english_name: "Serbian", emoji: "🇷🇸" },
110
+ { key: "bs", name: "Bosanski", english_name: "Bosnian", emoji: "🇧🇦" },
111
+ { key: "mk", name: "Македонски", english_name: "Macedonian", emoji: "🇲🇰" },
112
+ { key: "uk", name: "Українська", english_name: "Ukrainian", emoji: "🇺🇦" },
113
+ { key: "he", name: "עברית", english_name: "Hebrew", emoji: "🇮🇱" },
114
+ { key: "fa", name: "فارسی", english_name: "Persian", emoji: "🇮🇷" },
115
+ { key: "bn", name: "বাংলা", english_name: "Bengali", emoji: "🇧🇩" },
116
+ { key: "ta", name: "தமிழ்", english_name: "Tamil", emoji: "🇮🇳" },
117
+ { key: "te", name: "తెలుగు", english_name: "Telugu", emoji: "🇮🇳" },
118
+ ]
540
119
 
541
- export const literal_types = {
542
- array_literal,
543
- array_uniform_literal,
544
- object_literal,
545
- object_uniform_literal,
546
- text_literal,
547
- boolean_literal,
548
- int_literal,
549
- bigint_literal,
550
- null_literal,
551
- epoch_literal,
552
- float_literal,
553
- color_literal,
554
- json_literal,
555
- domain_literal,
556
- email_address_literal,
557
- email_address_full_literal,
558
- email_attachment_literal,
559
- storage_item_literal,
560
- html_literal,
561
- phone_literal,
562
- vector_literal,
563
- icon_literal,
564
- time_literal,
565
- time_zone_literal,
566
- location_literal,
567
- cron_literal,
568
- content_literal,
569
- table_id_for_foreign_row_literal,
570
- variable_path_literal,
571
- }
572
-
573
- export const main_child_element_options = {
574
- slot: { display_order: 0, child_min_limit: 0, child_max_limit: 99 },
575
- loop: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
576
- div: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
577
- section: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
578
- show_conditions: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
579
- header: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
580
- footer: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
581
- h1: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
582
- h2: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
583
- h3: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
584
- h4: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
585
- h5: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
586
- h6: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
587
- p: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
588
- br: { display_order: 16, child_min_limit: 0, child_max_limit: 99 },
589
- base_text: { display_order: 17, child_min_limit: 0, child_max_limit: 99 },
590
- span: { display_order: 18, child_min_limit: 0, child_max_limit: 99 },
591
- strong: { display_order: 19, child_min_limit: 0, child_max_limit: 99 },
592
- em: { display_order: 20, child_min_limit: 0, child_max_limit: 99 },
593
- strong_em: { display_order: 21, child_min_limit: 0, child_max_limit: 99 },
594
- link: { display_order: 22, child_min_limit: 0, child_max_limit: 99 },
595
- q: { display_order: 23, child_min_limit: 0, child_max_limit: 99 },
596
- mark: { display_order: 24, child_min_limit: 0, child_max_limit: 99 },
597
- s: { display_order: 25, child_min_limit: 0, child_max_limit: 99 },
598
- blockquote: { display_order: 26, child_min_limit: 0, child_max_limit: 99 },
599
- ul: { display_order: 27, child_min_limit: 0, child_max_limit: 99 },
600
- ol: { display_order: 28, child_min_limit: 0, child_max_limit: 99 },
601
- figure: { display_order: 29, child_min_limit: 0, child_max_limit: 99 },
602
- picture: { display_order: 30, child_min_limit: 0, child_max_limit: 99 },
603
- image: { display_order: 32, child_min_limit: 0, child_max_limit: 99 },
604
- audio: { display_order: 34, child_min_limit: 0, child_max_limit: 99 },
605
- video: { display_order: 35, child_min_limit: 0, child_max_limit: 99 },
606
- youtube_video: { display_order: 36, child_min_limit: 0, child_max_limit: 99 },
607
- x_post: { display_order: 37, child_min_limit: 0, child_max_limit: 99 },
608
- table: { display_order: 38, child_min_limit: 0, child_max_limit: 99 },
609
- table_advanced: { display_order: 39, child_min_limit: 0, child_max_limit: 99 },
610
- hr: { display_order: 40, child_min_limit: 0, child_max_limit: 99 },
611
- qr: { display_order: 41, child_min_limit: 0, child_max_limit: 99 },
612
- code: { display_order: 42, child_min_limit: 0, child_max_limit: 99 },
613
- code_inline: { display_order: 43, child_min_limit: 0, child_max_limit: 99 },
614
- pre: { display_order: 44, child_min_limit: 0, child_max_limit: 99 },
615
- json: { display_order: 45, child_min_limit: 0, child_max_limit: 99 },
616
- email_address: { display_order: 46, child_min_limit: 0, child_max_limit: 99 },
617
- email_address_input: { display_order: 47, child_min_limit: 0, child_max_limit: 99 },
618
- phone_number: { display_order: 48, child_min_limit: 0, child_max_limit: 99 },
619
- phone_number_input: { display_order: 49, child_min_limit: 0, child_max_limit: 99 },
620
- time: { display_order: 50, child_min_limit: 0, child_max_limit: 99 },
621
- time_input: { display_order: 51, child_min_limit: 0, child_max_limit: 99 },
622
- text_input: { display_order: 52, child_min_limit: 0, child_max_limit: 99 },
623
- location: { display_order: 53, child_min_limit: 0, child_max_limit: 99 },
624
- location_input: { display_order: 54, child_min_limit: 0, child_max_limit: 99 },
625
- slider: { display_order: 55, child_min_limit: 0, child_max_limit: 99 },
626
- checkbox: { display_order: 56, child_min_limit: 0, child_max_limit: 99 },
627
- number: { display_order: 57, child_min_limit: 0, child_max_limit: 99 },
628
- icon: { display_order: 58, child_min_limit: 0, child_max_limit: 99 },
629
- icon_input: { display_order: 59, child_min_limit: 0, child_max_limit: 99 },
630
- dropdown: { display_order: 60, child_min_limit: 0, child_max_limit: 99 },
631
- file: { display_order: 61, child_min_limit: 0, child_max_limit: 99 },
632
- file_input: { display_order: 62, child_min_limit: 0, child_max_limit: 99 },
633
- cron: { display_order: 64, child_min_limit: 0, child_max_limit: 99 },
634
- cron_input: { display_order: 65, child_min_limit: 0, child_max_limit: 99 },
635
- color: { display_order: 67, child_min_limit: 0, child_max_limit: 99 },
636
- color_input: { display_order: 68, child_min_limit: 0, child_max_limit: 99 },
637
- tag: { display_order: 69, child_min_limit: 0, child_max_limit: 99 },
638
- }
639
-
640
- export const content_types = {
641
- slot: {
642
- kind: "content",
643
- category: "content",
644
- name: "Slot",
645
- display_order: 0,
646
- attributes: {
647
- val: { type: "text_literal" },
648
- },
649
- child_elements: {},
650
- },
651
- loop: {
652
- kind: "content",
653
- category: "variables",
654
- name: "Loop",
655
- display_order: 0,
656
- child_elements: {
657
- ...main_child_element_options,
658
- },
659
- validator: (input) => {
660
- // validate tbd
661
- },
662
- },
663
- div: {
664
- kind: "content",
665
- category: "content",
666
- name: "Div",
667
- display_order: 1,
668
- attributes: {
669
- background_color: {
670
- type: "color_literal",
671
- display_name: "Background Color",
672
- },
673
- border_color: {
674
- type: "color_literal",
675
- display_name: "Border Color",
676
- },
677
- border_radius: {
678
- type: "float_literal",
679
- display_name: "Border Radius",
680
- },
681
- padding: {
682
- type: "float_literal",
683
- display_name: "Padding",
684
- },
685
- align_content: {
686
- type: "text_literal",
687
- display_name: "Align Content",
688
- },
689
- justify_content: {
690
- type: "text_literal",
691
- display_name: "Justify Content",
692
- },
693
- gap: {
694
- type: "float_literal",
695
- display_name: "Gap",
696
- },
697
- },
698
- child_elements: {
699
- ...main_child_element_options,
700
- },
701
- },
702
- section: {
703
- kind: "content",
704
- category: "content",
705
- name: "Section",
706
- display_order: 2,
707
- attributes: {
708
- background_color: {
709
- type: "color_literal",
710
- display_name: "Background Color",
711
- },
712
- border_color: {
713
- type: "color_literal",
714
- display_name: "Border Color",
715
- },
716
- border_radius: {
717
- display_name: "Border Radius",
718
- json_schema: {
719
- description: "border radius number used as rem units. Typically 1 should be good",
720
- type: "number",
721
- },
722
- },
723
- padding: {
724
- display_name: "Padding",
725
- json_schema: {
726
- description: "padding number used as rem units. Typically 1 should be good",
727
- type: "number",
728
- },
729
- },
730
- },
731
- child_elements: {
732
- div: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
733
- header: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
734
- h1: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
735
- h2: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
736
- h3: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
737
- h4: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
738
- h5: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
739
- h6: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
740
- p: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
741
- ul: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
742
- ol: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
743
- table: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
744
- table_advanced: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
745
- figure: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
746
- image: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
747
- audio: { display_order: 16, child_min_limit: 0, child_max_limit: 99 },
748
- video: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
749
- code: { display_order: 17, child_min_limit: 0, child_max_limit: 99 },
750
- blockquote: { display_order: 18, child_min_limit: 0, child_max_limit: 99 },
751
- pre: { display_order: 19, child_min_limit: 0, child_max_limit: 99 },
752
- hr: { display_order: 20, child_min_limit: 0, child_max_limit: 99 },
753
- footer: { display_order: 21, child_min_limit: 0, child_max_limit: 99 },
754
- youtube_video: { display_order: 22, child_min_limit: 0, child_max_limit: 99 },
755
- x_post: { display_order: 23, child_min_limit: 0, child_max_limit: 99 },
756
- time: { display_order: 24, child_min_limit: 0, child_max_limit: 99 },
757
- location: { display_order: 25, child_min_limit: 0, child_max_limit: 99 },
758
- json: { display_order: 26, child_min_limit: 0, child_max_limit: 99 },
759
- },
760
- },
761
- show_conditions: {
762
- kind: "content",
763
- category: "content",
764
- name: "Show Conditions",
765
- display_order: 1,
766
- attributes: {
767
- is_run_serverside: {
768
- type: "boolean_literal",
769
- display_name: "Is Run Serverside",
770
- default: false,
771
- },
772
- },
773
- child_elements: {
774
- show_conditions_item: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
775
- show_conditions_item_else: { display_order: 1, child_min_limit: 0, child_max_limit: 1 },
776
- },
777
- },
778
- show_conditions_item: {
779
- kind: "content",
780
- category: "content",
781
- name: "Show Conditions Item",
782
- display_order: 1,
783
- attributes: {
784
- is_show: {
785
- type: "boolean_literal",
786
- display_name: "Is Show",
787
- },
788
- },
789
- child_elements: {
790
- ...main_child_element_options,
791
- },
792
- },
793
- show_conditions_item_else: {
794
- kind: "content",
795
- category: "content",
796
- name: "Show Conditions Item Else",
797
- display_order: 1,
798
- attributes: {},
799
- child_elements: {
800
- ...main_child_element_options,
801
- },
802
- },
803
- header: {
804
- kind: "content",
805
- category: "content",
806
- name: "Header",
807
- display_order: 3,
808
- attributes: {},
809
- child_elements: {
810
- h1: { display_order: 1, child_min_limit: 1, child_max_limit: 1 },
811
- h2: { display_order: 2, child_min_limit: 0, child_max_limit: 1 },
812
- },
813
- },
814
- h1: {
815
- kind: "content",
816
- category: "content",
817
- name: "Heading 1",
818
- display_order: 4,
819
- attributes: {},
820
- child_elements: {
821
- base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
822
- strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
823
- em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
824
- strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
825
- },
826
- },
827
- h2: {
828
- kind: "content",
829
- category: "content",
830
- name: "Heading 2",
831
- display_order: 5,
832
- attributes: {},
833
- child_elements: {
834
- base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
835
- strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
836
- em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
837
- strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
838
- },
839
- },
840
- h3: {
841
- kind: "content",
842
- category: "content",
843
- name: "Heading 3",
844
- display_order: 6,
845
- attributes: {},
846
- child_elements: {
847
- base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
848
- strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
849
- em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
850
- strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
851
- },
852
- },
853
- h4: {
854
- kind: "content",
855
- category: "content",
856
- name: "Heading 4",
857
- display_order: 7,
858
- attributes: {},
859
- child_elements: {
860
- base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
861
- strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
862
- em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
863
- strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
864
- },
865
- },
866
- h5: {
867
- kind: "content",
868
- category: "content",
869
- name: "Heading 5",
870
- display_order: 8,
871
- attributes: {},
872
- child_elements: {
873
- base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
874
- strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
875
- em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
876
- strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
877
- },
878
- },
879
- h6: {
880
- kind: "content",
881
- category: "content",
882
- name: "Heading 6",
883
- display_order: 9,
884
- attributes: {},
885
- child_elements: {
886
- base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
887
- strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
888
- em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
889
- strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
890
- },
891
- },
892
- p: {
893
- kind: "content",
894
- category: "content",
895
- name: "Paragraph",
896
- display_order: 10,
897
- attributes: {},
898
- child_elements: {
899
- base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
900
- strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
901
- em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
902
- strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
903
- link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
904
- ref: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
905
- q: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
906
- span: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
907
- sub: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
908
- sup: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
909
- s: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
910
- mark: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
911
- code_inline: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
912
- br: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
913
- time: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
914
- location: { display_order: 16, child_min_limit: 0, child_max_limit: 99 },
915
- number: { display_order: 17, child_min_limit: 0, child_max_limit: 99 },
916
- color: { display_order: 18, child_min_limit: 0, child_max_limit: 99 },
917
- },
918
- },
919
- base_text: {
920
- kind: "content",
921
- category: "content",
922
- name: "Base Text",
923
- display_order: 11,
924
- attributes: {
925
- content: { type: "text_literal" },
926
- text_color: { type: "color_literal" },
927
- },
928
- child_elements: {},
929
- },
930
- span: {
931
- kind: "content",
932
- category: "content",
933
- name: "Span",
934
- display_order: 12,
935
- attributes: {},
936
- child_elements: {},
937
- },
938
- strong: {
939
- kind: "content",
940
- category: "content",
941
- name: "Strong Text",
942
- display_order: 13,
943
- attributes: {
944
- content: { type: "text_literal" },
945
- text_color: { type: "color_literal" },
946
- },
947
- child_elements: {},
948
- },
949
- em: {
950
- kind: "content",
951
- category: "content",
952
- name: "Emphasized Text",
953
- display_order: 14,
954
- attributes: {
955
- content: { type: "text_literal" },
956
- text_color: { type: "color_literal" },
957
- },
958
- child_elements: {},
959
- },
960
- strong_em: {
961
- kind: "content",
962
- category: "content",
963
- name: "Strong Emphasized Text",
964
- display_order: 15,
965
- attributes: {
966
- content: { type: "text_literal" },
967
- text_color: { type: "color_literal" },
968
- },
969
- child_elements: {},
970
- },
971
- link: {
972
- kind: "content",
973
- category: "content",
974
- name: "Link",
975
- display_order: 16,
976
- attributes: {
977
- href: { type: "text_literal" },
978
- display_text: { type: "text_literal" },
979
- text_color: { type: "color_literal" },
980
- is_show_preview: { type: "boolean_literal" },
981
- },
982
- child_elements: {
983
- base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
984
- strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
985
- em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
986
- strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
987
- ref: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
988
- q: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
989
- span: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
990
- sub: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
991
- sup: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
992
- s: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
993
- mark: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
994
- code_inline: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
995
- br: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
996
- time: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
997
- location: { display_order: 16, child_min_limit: 0, child_max_limit: 99 },
998
- number: { display_order: 17, child_min_limit: 0, child_max_limit: 99 },
999
- color: { display_order: 18, child_min_limit: 0, child_max_limit: 99 },
1000
- },
1001
- },
1002
- q: {
1003
- kind: "content",
1004
- category: "content",
1005
- name: "Quotation",
1006
- display_order: 17,
1007
- attributes: {
1008
- href: { type: "text_literal" },
1009
- content: { type: "text_literal" },
1010
- text_color: { type: "color_literal" },
1011
- },
1012
- child_elements: {},
1013
- },
1014
- mark: {
1015
- kind: "content",
1016
- category: "content",
1017
- name: "Mark",
1018
- display_order: 18,
1019
- attributes: {},
1020
- child_elements: {
1021
- base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1022
- strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1023
- em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1024
- strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1025
- link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
1026
- ref: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
1027
- q: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
1028
- span: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
1029
- code_inline: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
1030
- sub: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
1031
- sup: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
1032
- s: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
1033
- },
1034
- },
1035
- s: {
1036
- kind: "content",
1037
- category: "content",
1038
- name: "Strikethrough",
1039
- display_order: 19,
1040
- attributes: {},
1041
- child_elements: {
1042
- base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1043
- strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1044
- em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1045
- strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1046
- link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
1047
- q: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
1048
- span: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
1049
- code_inline: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
1050
- sub: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
1051
- sup: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
1052
- },
1053
- },
1054
- blockquote: {
1055
- kind: "content",
1056
- category: "content",
1057
- name: "Blockquote",
1058
- display_order: 20,
1059
- attributes: {
1060
- cite: { type: "text_literal", display_name: "cite", default_value: null, display_order: 0 },
1061
- },
1062
- child_elements: {
1063
- base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1064
- strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1065
- em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1066
- strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1067
- link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
1068
- ref: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
1069
- q: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
1070
- span: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
1071
- sub: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
1072
- sup: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
1073
- s: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
1074
- mark: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
1075
- p: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
1076
- ul: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
1077
- ol: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
1078
- code_inline: { display_order: 16, child_min_limit: 0, child_max_limit: 9 },
1079
- },
1080
- },
1081
- ul: {
1082
- kind: "content",
1083
- category: "content",
1084
- name: "Unordered List",
1085
- display_order: 21,
1086
- attributes: {},
1087
- child_elements: {
1088
- li: { display_order: 1, child_min_limit: 1, child_max_limit: 999 },
1089
- },
1090
- },
1091
- ol: {
1092
- kind: "content",
1093
- category: "content",
1094
- name: "Ordered List",
1095
- display_order: 22,
1096
- attributes: {},
1097
- child_elements: {
1098
- li: { display_order: 1, child_min_limit: 1, child_max_limit: 999 },
1099
- },
1100
- },
1101
- li: {
1102
- kind: "content",
1103
- category: "content",
1104
- name: "List Item",
1105
- display_order: 23,
1106
- attributes: {},
1107
- child_elements: {
1108
- base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1109
- em: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1110
- strong: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1111
- strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1112
- link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
1113
- image: { display_order: 6, child_min_limit: 0, child_max_limit: 9 },
1114
- audio: { display_order: 6, child_min_limit: 0, child_max_limit: 9 },
1115
- br: { display_order: 7, child_min_limit: 0, child_max_limit: 9 },
1116
- q: { display_order: 8, child_min_limit: 0, child_max_limit: 9 },
1117
- s: { display_order: 9, child_min_limit: 0, child_max_limit: 9 },
1118
- mark: { display_order: 10, child_min_limit: 0, child_max_limit: 9 },
1119
- span: { display_order: 11, child_min_limit: 0, child_max_limit: 9 },
1120
- code_inline: { display_order: 12, child_min_limit: 0, child_max_limit: 9 },
1121
- time: { display_order: 13, child_min_limit: 0, child_max_limit: 9 },
1122
- location: { display_order: 14, child_min_limit: 0, child_max_limit: 9 },
1123
- ...main_child_element_options, // tbd
1124
- },
1125
- },
1126
- figure: {
1127
- kind: "content",
1128
- category: "content",
1129
- name: "Figure",
1130
- display_order: 24,
1131
- attributes: {
1132
- caption: { type: "text_literal" },
1133
- },
1134
- child_elements: {
1135
- picture: { display_order: 1, child_min_limit: 0, child_max_limit: 1 },
1136
- video: { display_order: 2, child_min_limit: 0, child_max_limit: 1 },
1137
- audio: { display_order: 3, child_min_limit: 0, child_max_limit: 1 },
1138
- blockquote: { display_order: 4, child_min_limit: 0, child_max_limit: 1 },
1139
- },
1140
- },
1141
- picture: {
1142
- kind: "content",
1143
- category: "content",
1144
- name: "Picture",
1145
- display_order: 25,
1146
- attributes: {},
1147
- child_elements: {
1148
- source: { display_order: 1, child_min_limit: 1, child_max_limit: 9 },
1149
- },
1150
- },
1151
- source: {
1152
- kind: "content",
1153
- category: "content",
1154
- name: "Source",
1155
- display_order: 26,
1156
- attributes: {
1157
- alt: { type: "text_literal" },
1158
- name: { type: "text_literal" },
1159
- width: { type: "int_literal" },
1160
- height: { type: "int_literal" },
1161
- file_type: { type: "text_literal" },
1162
- storage_id: { type: "text_literal" },
1163
- aspect_ratio: { type: "float_literal" },
1164
- },
1165
- child_elements: {},
1166
- },
1167
- image: {
1168
- kind: "content",
1169
- category: "content",
1170
- name: "Image",
1171
- display_order: 27,
1172
- attributes: {
1173
- alt: { type: "text_literal" },
1174
- name: { type: "text_literal" },
1175
- width: { type: "int_literal" },
1176
- height: { type: "int_literal" },
1177
- mime_type: { type: "text_literal" },
1178
- storage_id: { type: "text_literal" },
1179
- aspect_ratio: { type: "float_literal" },
1180
- is_storage_id_public: { type: "boolean_literal" },
1181
- src: { type: "text_literal" },
1182
- src_quick: { type: "text_literal" },
1183
- display_max_height: { type: "int_literal" },
1184
- display_max_width: { type: "int_literal" },
1185
- border_radius: { type: "float_literal" },
1186
- bg_img_blur: { type: "float_literal" },
1187
- bg_img_opacity: { type: "float_literal" },
1188
- },
1189
- child_elements: {},
1190
- },
1191
- audio: {
1192
- kind: "content",
1193
- category: "content",
1194
- name: "Audio",
1195
- display_order: 29,
1196
- attributes: {
1197
- ui_type: { type: "text_literal" },
1198
- storage_id: { type: "text_literal" },
1199
- is_storage_id_public: { type: "boolean_literal" },
1200
- src: { type: "text_literal" },
1201
- mime_type: { type: "text_literal" },
1202
- title: { type: "text_literal" },
1203
- album: { type: "text_literal" },
1204
- artist: { type: "text_literal" },
1205
- image_storage_id: { type: "text_literal" },
1206
- image_is_storage_id_public: { type: "boolean_literal" },
1207
- image_src: { type: "text_literal" },
1208
- image_src_quick: { type: "text_literal" },
1209
- image_mime_type: { type: "text_literal" },
1210
- image_width: { type: "int_literal" },
1211
- image_height: { type: "int_literal" },
1212
- image_aspect_ratio: { type: "float_literal" },
1213
- },
1214
- child_elements: {},
1215
- },
1216
- video: {
1217
- // tbd
1218
- kind: "content",
1219
- category: "content",
1220
- name: "Video",
1221
- display_order: 28,
1222
- attributes: {},
1223
- child_elements: {},
1224
- },
1225
- qr: {
1226
- kind: "content",
1227
- category: "content",
1228
- name: "QR",
1229
- display_order: 29,
1230
- attributes: {
1231
- margin: {
1232
- type: "int_literal",
1233
- minimum: 0,
1234
- maximum: 50,
1235
- default: 10,
1236
- },
1237
- size: {
1238
- type: "int_literal",
1239
- minimum: 50,
1240
- maximum: 500,
1241
- default: 200,
1242
- },
1243
- image_size: {
1244
- type: "float_literal",
1245
- minimum: 0.1,
1246
- maximum: 1,
1247
- default: 0.5,
1248
- },
1249
- type_number: {
1250
- type: "int_literal",
1251
- minimum: 0,
1252
- maximum: 4,
1253
- default: 0,
1254
- },
1255
- error_correction_level: {
1256
- type: "text_literal",
1257
- enum: ["L", "M", "Q", "H"],
1258
- default: "M",
1259
- },
1260
- color: { type: "color_literal", default: "var(--primary-t)" },
1261
- corner_color: {
1262
- type: "color_literal",
1263
- default: "color-mix(in oklab, var(--primary-t), var(--bg) 20%)",
1264
- },
1265
- background_color: {
1266
- type: "color_literal",
1267
- default: "var(--shadow1-t)",
1268
- },
1269
- border_color: {
1270
- type: "color_literal",
1271
- default: "var(--shadow7-t)",
1272
- },
1273
- border_radius: {
1274
- type: "int_literal",
1275
- minimum: 0,
1276
- maximum: 10,
1277
- default: 5,
1278
- },
1279
- border_width: {
1280
- type: "int_literal",
1281
- minimum: 0,
1282
- maximum: 3,
1283
- default: 5,
1284
- },
1285
- data: { type: "text_literal" },
1286
- image: {
1287
- type: "image_literal",
1288
- },
1289
- extension: {
1290
- type: "text_literal",
1291
- enum: ["svg", "png", "jpeg"],
1292
- default: "svg",
1293
- },
1294
- quality: {
1295
- type: "float_literal",
1296
- minimum: 0,
1297
- maximum: 1,
1298
- default: 0.8,
1299
- },
1300
- },
1301
- child_elements: {},
1302
- },
1303
- table: {
1304
- kind: "content",
1305
- category: "content",
1306
- name: "Table",
1307
- display_order: 30,
1308
- attributes: {
1309
- caption: { type: "text_literal" },
1310
- },
1311
- child_elements: {
1312
- thead: { display_order: 1, child_min_limit: 1, child_max_limit: 1 },
1313
- tbody: { display_order: 2, child_min_limit: 1, child_max_limit: 1 },
1314
- tfoot: { display_order: 3, child_min_limit: 0, child_max_limit: 1 },
1315
- },
1316
- },
1317
- thead: {
1318
- kind: "content",
1319
- category: "content",
1320
- name: "Table Header",
1321
- display_order: 31,
1322
- attributes: {},
1323
- child_elements: {
1324
- tr: { display_order: 1, child_min_limit: 1, child_max_limit: 1 },
1325
- },
1326
- },
1327
- tbody: {
1328
- kind: "content",
1329
- category: "content",
1330
- name: "Table Body",
1331
- display_order: 32,
1332
- attributes: {},
1333
- child_elements: {
1334
- tr: { display_order: 1, child_min_limit: 1, child_max_limit: 999 },
1335
- },
1336
- },
1337
- tfoot: {
1338
- kind: "content",
1339
- category: "content",
1340
- name: "Table Footer",
1341
- display_order: 33,
1342
- attributes: {},
1343
- child_elements: {
1344
- tr: { display_order: 1, child_min_limit: 0, child_max_limit: 1 },
1345
- },
1346
- },
1347
- tr: {
1348
- kind: "content",
1349
- category: "content",
1350
- name: "Table Row",
1351
- display_order: 34,
1352
- attributes: {},
1353
- child_elements: {
1354
- th: { display_order: 1, child_min_limit: 1, child_max_limit: 999 },
1355
- td: { display_order: 2, child_min_limit: 1, child_max_limit: 999 },
1356
- },
1357
- },
1358
- th: {
1359
- kind: "content",
1360
- category: "content",
1361
- name: "Table Head Cell",
1362
- display_order: 35,
1363
- attributes: {},
1364
- child_elements: {
1365
- base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1366
- strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1367
- em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1368
- strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1369
- },
1370
- },
1371
- td: {
1372
- kind: "content",
1373
- category: "content",
1374
- name: "Table Body Cell",
1375
- display_order: 36,
1376
- attributes: {},
1377
- child_elements: {
1378
- base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1379
- strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1380
- em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1381
- strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1382
- link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
1383
- ref: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
1384
- q: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
1385
- span: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
1386
- br: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
1387
- sub: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
1388
- sup: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
1389
- s: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
1390
- mark: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
1391
- p: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
1392
- ul: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
1393
- ol: { display_order: 16, child_min_limit: 0, child_max_limit: 99 },
1394
- code_inline: { display_order: 17, child_min_limit: 0, child_max_limit: 99 },
1395
- code: { display_order: 18, child_min_limit: 0, child_max_limit: 99 },
1396
- figure: { display_order: 19, child_min_limit: 0, child_max_limit: 99 },
1397
- image: { display_order: 20, child_min_limit: 0, child_max_limit: 99 },
1398
- time: { display_order: 21, child_min_limit: 0, child_max_limit: 99 },
1399
- location: { display_order: 22, child_min_limit: 0, child_max_limit: 99 },
1400
- },
1401
- },
1402
- nav: {
1403
- kind: "content",
1404
- category: "content",
1405
- name: "Navigation",
1406
- display_order: 37,
1407
- attributes: {},
1408
- child_elements: {},
1409
- },
1410
- code: {
1411
- kind: "content",
1412
- category: "content",
1413
- name: "Code Block",
1414
- display_order: 38,
1415
- attributes: {
1416
- content: { type: "text_literal" },
1417
- language: { type: "text_literal" },
1418
- },
1419
- child_elements: {},
1420
- },
1421
- code_inline: {
1422
- kind: "content",
1423
- category: "content",
1424
- name: "Code Inline",
1425
- display_order: 39,
1426
- attributes: {
1427
- content: { type: "text_literal" },
1428
- color: { type: "color_literal" },
1429
- },
1430
- child_elements: {},
1431
- },
1432
- br: {
1433
- kind: "content",
1434
- category: "content",
1435
- name: "Line Break",
1436
- display_order: 40,
1437
- attributes: {},
1438
- child_elements: {},
1439
- },
1440
- spacer: {
1441
- kind: "content",
1442
- category: "content",
1443
- name: "Spacer",
1444
- display_order: 40,
1445
- attributes: {
1446
- mt: { type: "float_literal" },
1447
- mb: { type: "float_literal" },
1448
- ml: { type: "float_literal" },
1449
- mr: { type: "float_literal" },
1450
- is_vert: { type: "boolean_literal" },
1451
- color: { type: "color_literal" },
1452
- },
1453
- child_elements: {},
1454
- },
1455
- hr: {
1456
- kind: "content",
1457
- category: "content",
1458
- name: "Horizontal Rule",
1459
- display_order: 41,
1460
- attributes: {},
1461
- child_elements: {},
1462
- },
1463
- sub: {
1464
- kind: "content",
1465
- category: "content",
1466
- name: "Subscript",
1467
- display_order: 42,
1468
- attributes: {},
1469
- child_elements: {
1470
- base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1471
- strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1472
- em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1473
- strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1474
- link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
1475
- q: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
1476
- span: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
1477
- s: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
1478
- mark: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
1479
- },
1480
- },
1481
- sup: {
1482
- kind: "content",
1483
- category: "content",
1484
- name: "Superscript",
1485
- display_order: 43,
1486
- attributes: {},
1487
- child_elements: {
1488
- base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1489
- strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1490
- em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1491
- strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1492
- link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
1493
- q: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
1494
- span: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
1495
- s: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
1496
- mark: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
1497
- },
1498
- },
1499
- pre: {
1500
- kind: "content",
1501
- category: "content",
1502
- name: "Preformatted Text",
1503
- display_order: 44,
1504
- attributes: {},
1505
- child_elements: {},
1506
- },
1507
- ref: {
1508
- kind: "content",
1509
- category: "content",
1510
- name: "Reference",
1511
- display_order: 45,
1512
- attributes: {
1513
- href: { type: "text_literal" },
1514
- content: { type: "text_literal" },
1515
- text_color: { type: "color_literal" },
1516
- },
1517
- child_elements: {},
1518
- },
1519
- footer: {
1520
- kind: "content",
1521
- category: "content",
1522
- name: "Footer",
1523
- display_order: 46,
1524
- attributes: {},
1525
- child_elements: {
1526
- ol: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1527
- ul: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1528
- p: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1529
- h4: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1530
- h5: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
1531
- h6: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
1532
- },
1533
- },
1534
- youtube_video: {
1535
- kind: "content",
1536
- category: "content",
1537
- name: "YouTube Video",
1538
- display_order: 47,
1539
- attributes: {
1540
- id: { type: "text_literal" },
1541
- video_id: { type: "text_literal" },
1542
- is_dark_theme: { type: "boolean_literal" },
1543
- },
1544
- child_elements: {},
1545
- },
1546
- x_post: {
1547
- kind: "content",
1548
- category: "content",
1549
- name: "X Post",
1550
- display_order: 48,
1551
- attributes: {
1552
- post_id: { type: "text_literal" },
1553
- },
1554
- child_elements: {},
1555
- },
1556
- table_advanced: {
1557
- kind: "content",
1558
- category: "content",
1559
- name: "Table Advanced",
1560
- display_order: 51,
1561
- attributes: {
1562
- // obviously this is way off just pasted in to start
1563
- columns: {
1564
- type: "object",
1565
- properties: {
1566
- id: { type: "text_literal" },
1567
- description: { type: "text_literal" },
1568
- header_content: { type: "text_literal" },
1569
- body_content: { type: "text_literal" },
1570
- is_shown: { type: "text_literal" },
1571
- is_fixed: { type: "text_literal" },
1572
- alignment: { type: "text_literal" },
1573
- min_width: { type: "text_literal" },
1574
- max_width: { type: "text_literal" },
1575
- display_order: { type: "text_literal" },
1576
- is_use_in_short_display: { type: "boolean_literal" },
1577
- is_autogenerated: { type: "boolean_literal" },
1578
- is_updatable: { type: "boolean_literal" },
1579
- is_db_column: { type: "boolean_literal" },
1580
- db_data_type: { type: "text_literal" },
1581
- postgres_type: { type: "text_literal" },
1582
- default_value: { type: "text_literal" },
1583
- quick_sort_variable_path: { type: "text_literal" },
1584
- is_primary_key: { type: "boolean_literal" },
1585
- is_nullable: { type: "boolean_literal" },
1586
- is_force_uniqueness: { type: "boolean_literal" },
1587
- foreign_table_id: { type: "text_literal" },
1588
- is_cascade: { type: "text_literal" },
1589
- },
1590
- additionalProperties: false,
1591
- required: [],
1592
- },
1593
- rows_data_from_variable_path: { type: "text_literal" },
1594
- is_data_editable: { type: "text_literal" },
1595
- is_paginate: { type: "text_literal" },
1596
- nav_items: { type: "text_literal" },
1597
- sort_by: { type: "text_literal" },
1598
- filter: { type: "text_literal" },
1599
- row_searchable_content: { type: "text_literal" },
1600
- row_input_content: { type: "text_literal" },
1601
- table_header_max_height: { type: "text_literal" },
1602
- table_row_max_height: { type: "text_literal" },
1603
- },
1604
- child_elements: {},
1605
- },
1606
- number: {
1607
- kind: "content",
1608
- category: "content",
1609
- name: "Number",
1610
- display_order: 51,
1611
- attributes: {
1612
- val: { type: ["float_literal", "int_literal", "bigint_literal"] },
1613
- },
1614
- child_elements: {},
1615
- },
1616
- color: {
1617
- kind: "content",
1618
- category: "content",
1619
- name: "Color",
1620
- display_order: 52,
1621
- attributes: {
1622
- val: { type: "color_literal" },
1623
- },
1624
- child_elements: {},
1625
- },
1626
- json: {
1627
- kind: "content",
1628
- category: "content",
1629
- name: "JSON",
1630
- display_order: 53,
1631
- attributes: {
1632
- is_show_buttons: { type: "boolean_literal" },
1633
- val: { type: "json_literal" },
1634
- },
1635
- child_elements: {},
1636
- },
1637
- email_address: {
1638
- kind: "content",
1639
- category: "content",
1640
- name: "Email Address",
1641
- attributes: {
1642
- is_full: { type: "boolean_literal" },
1643
- is_show_copy_to_clipboard: { type: "boolean_literal" },
1644
- is_show_mail_to: { type: "boolean_literal", default: false },
1645
- },
1646
- },
1647
- email_address_input: {
1648
- kind: "content",
1649
- category: "content",
1650
- name: "Email Address Input",
1651
- attributes: {
1652
- placeholder: { type: "text_literal" },
1653
- maximum_length: { type: "int_literal" },
1654
- },
1655
- },
1656
- phone: {
1657
- kind: "content",
1658
- category: "content",
1659
- name: "Phone",
1660
- attributes: {
1661
- is_full: { type: "boolean_literal" },
1662
- is_show_country_code: { type: "boolean_literal", default: true },
1663
- is_show_call_button: { type: "boolean_literal", default: true },
1664
- is_show_local: { type: "boolean_literal", default: true },
1665
- is_show_main_number: { type: "boolean_literal", default: true },
1666
- is_show_type: { type: "boolean_literal", default: true },
1667
- },
1668
- },
1669
- phone_input: {
1670
- kind: "content",
1671
- category: "content",
1672
- name: "Phone",
1673
- attributes: {
1674
- placeholder: { type: "text_literal" },
1675
- },
1676
- },
1677
- time_input: {
1678
- kind: "content",
1679
- category: "content",
1680
- name: "Time Input",
1681
- attributes: {
1682
- val_from_variable_path: {
1683
- type: "variable_path_literal",
1684
- allowed_types: ["time_literal"],
1685
- },
1686
- granularity: {
1687
- type: "text_literal",
1688
- enum: ["year", "month", "week", "day", "hour", "minute", "second"],
1689
- default: "day",
1690
- },
1691
- },
1692
- },
1693
- time: {
1694
- kind: "content",
1695
- category: "content",
1696
- name: "Time",
1697
- display_order: 49,
1698
- attributes: {
1699
- hour: { type: "int_literal" },
1700
- year: { type: "int_literal" },
1701
- color: { type: "color_literal" },
1702
- epoch: { type: "bigint_literal" },
1703
- month: { type: "int_literal" },
1704
- minute: { type: "int_literal" },
1705
- second: { type: "int_literal" },
1706
- content: { type: "text_literal" },
1707
- datetime: { type: "text_literal" },
1708
- timezone: { type: "text_literal" },
1709
- day_of_week: { type: "int_literal" },
1710
- day_of_year: { type: "int_literal" },
1711
- granularity: { type: "text_literal" },
1712
- day_of_month: { type: "int_literal" },
1713
- week_of_year: { type: "int_literal" },
1714
- },
1715
- child_elements: {},
1716
- },
1717
- phone_number: {
1718
- kind: "content",
1719
- category: "content",
1720
- name: "Phone Number",
1721
- display_order: 50,
1722
- attributes: {
1723
- tbd: { type: "text_literal" },
1724
- },
1725
- child_elements: {},
1726
- },
1727
- phone_number_input: {
1728
- kind: "content",
1729
- category: "content",
1730
- name: "Phone Number",
1731
- display_order: 50,
1732
- attributes: {
1733
- tbd: { type: "text_literal" },
1734
- },
1735
- child_elements: {},
1736
- },
1737
- file: {
1738
- kind: "content",
1739
- category: "content",
1740
- name: "File",
1741
- attributes: {},
1742
- },
1743
- boolean_icon: {
1744
- kind: "content",
1745
- category: "content",
1746
- name: "Boolean Icon",
1747
- attributes: {
1748
- true_icon: {
1749
- type: "icon_literal",
1750
- default: "x",
1751
- // enum: icon_ids
1752
- },
1753
- false_icon: {
1754
- type: "icon_literal",
1755
- default: "check",
1756
- // enum: icon_ids
1757
- },
1758
- },
1759
- },
1760
- tag: {
1761
- kind: "content",
1762
- category: "content",
1763
- name: "Tag",
1764
- attributes: {
1765
- // custom options input
1766
- options: {
1767
- type: "array_uniform_literal",
1768
- // items: { anyOf }
1769
- },
1770
- },
1771
- },
1772
- // foreign_key: {
1773
- // kind: "content",
1774
- // category: "content",
1775
- // name: "Foreign Key",
1776
- // attributes: {},
1777
- // },
1778
- variable_path_input: {
1779
- kind: "content",
1780
- category: "content",
1781
- name: "Variable Path Input",
1782
- attributes: {},
1783
- },
1784
- number_input: {
1785
- kind: "content",
1786
- category: "content",
1787
- name: "Number Input",
1788
- attributes: {
1789
- label: { type: "text_literal" },
1790
- placeholder: { type: "text_literal" },
1791
- val_from_variable_path: {
1792
- type: "variable_path_literal",
1793
- allowed_types: ["int_literal", "float_literal", "bigint_literal"],
1794
- },
1795
- },
1796
- },
1797
- text_input: {
1798
- kind: "content",
1799
- category: "content",
1800
- name: "Text Input",
1801
- attributes: {
1802
- val_from_variable_path: {
1803
- type: "variable_path_literal",
1804
- allowed_types: ["text_literal"],
1805
- },
1806
- label: { type: "text_literal" },
1807
- placeholder: { type: "text_literal" },
1808
- maximum_length: { type: "int_literal" },
1809
- is_text_hidable: { type: "boolean_literal", default: false },
1810
- is_text_hidden: { type: "boolean_literal", default: false },
1811
- },
1812
- },
1813
- slider: {
1814
- kind: "content",
1815
- category: "content",
1816
- name: "Slider",
1817
- attributes: {
1818
- val_from_variable_path: {
1819
- type: "variable_path_literal",
1820
- allowed_types: ["int_literal", "float_literal", "bigint_literal"],
1821
- },
1822
- label: { type: "text_literal" },
1823
- is_nullable: { type: "boolean_literal", default: false },
1824
- minimum: { type: "int_literal", default: 0 },
1825
- maximum: { type: "int_literal", default: 10 },
1826
- step: { type: "float_literal", default: 1 },
1827
- color: { type: "color_literal" },
1828
- is_short: { type: "boolean_literal", default: false },
1829
- step: { type: "int_literal", default: 1 },
1830
- },
1831
- },
1832
- checkbox: {
1833
- kind: "content",
1834
- category: "content",
1835
- name: "Checkbox",
1836
- attributes: {
1837
- val_from_variable_path: {
1838
- type: "variable_path_literal",
1839
- allowed_types: ["boolean_literal"],
1840
- },
1841
- label: { type: "text_literal" },
1842
- size: { type: "float_literal", default: 2.4 },
1843
- type: {
1844
- type: "text_literal",
1845
- default: "checkbox",
1846
- enum: ["checkbox", "toggle"],
1847
- },
1848
- label: { type: "text_literal" },
1849
- name: { type: "text_literal" },
1850
- color: { type: "color_literal" },
1851
- // on_val
1852
- // off_val
1853
- },
1854
- },
1855
- arrow_toggle_input: {
1856
- kind: "content",
1857
- category: "content",
1858
- name: "Arrow Toggle",
1859
- },
1860
- icon_input: {
1861
- kind: "content",
1862
- category: "content",
1863
- name: "Icon Input",
1864
- attributes: {
1865
- tbd: { type: "text_literal" },
1866
- },
1867
- },
1868
- icon: {
1869
- kind: "content",
1870
- category: "content",
1871
- name: "Icon",
1872
- display_order: 50,
1873
- attributes: {
1874
- icon_id: { type: "text_literal" },
1875
- color: { type: "color_literal" },
1876
- },
1877
- child_elements: {},
1878
- },
1879
- cron_input: {
1880
- kind: "content",
1881
- category: "content",
1882
- name: "Cron",
1883
- attributes: {
1884
- tbd: { type: "text_literal" },
1885
- },
1886
- },
1887
- cron: {
1888
- kind: "content",
1889
- category: "content",
1890
- name: "Cron",
1891
- attributes: {
1892
- tbd: { type: "text_literal" },
1893
- },
1894
- },
1895
- file_input: {
1896
- kind: "content",
1897
- category: "content",
1898
- name: "File Picker",
1899
- attributes: {
1900
- accept: {
1901
- type: "array_uniform_literal",
1902
- items: {
1903
- type: "text_literal",
1904
- // enum: mime_types
1905
- },
1906
- },
1907
- is_multiselect: { type: "boolean_literal", default: false },
1908
- is_drop_zone: { type: "boolean_literal", default: true },
1909
- },
1910
- },
1911
- color: {
1912
- kind: "content",
1913
- category: "content",
1914
- name: "Color",
1915
- display_order: 52,
1916
- attributes: {
1917
- val: { type: "color_literal" },
1918
- },
1919
- child_elements: {},
1920
- },
1921
- dropdown: {
1922
- kind: "content",
1923
- category: "content",
1924
- name: "Dropdown",
1925
- attributes: {
1926
- options: {
1927
- json_schema: {
1928
- type: "array",
1929
- items: {
1930
- type: "object",
1931
- properties: {
1932
- key: {
1933
- anyOf: [{ type: "string" }, { type: "number" }],
1934
- },
1935
- name: {
1936
- type: "string",
1937
- },
1938
- },
1939
- required: ["key", "name"],
1940
- additionalProperties: false,
1941
- },
1942
- },
1943
- },
1944
- },
1945
- },
1946
- color_input: {
1947
- kind: "content",
1948
- category: "content",
1949
- name: "Color Input",
1950
- attributes: {
1951
- val_from_variable_path: {
1952
- type: "variable_path_literal",
1953
- allowed_types: ["color_literal"],
1954
- },
1955
- is_show_opacity: { type: "boolean_literal", default: true },
1956
- h_options: {
1957
- type: "array_uniform_literal",
1958
- items: {
1959
- type: "int_literal",
1960
- enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24],
1961
- },
1962
- },
1963
- l_options: {
1964
- type: "array_uniform_literal",
1965
- items: {
1966
- type: "int_literal",
1967
- enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24],
1968
- },
1969
- },
1970
- c_options: {
1971
- type: "array_uniform_literal",
1972
- items: {
1973
- type: "int_literal",
1974
- enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24],
1975
- },
1976
- },
1977
- o_options: {
1978
- type: "array_uniform_literal",
1979
- items: {
1980
- type: "int_literal",
1981
- enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24],
1982
- },
1983
- },
1984
- },
1985
- },
1986
- location_input: {
1987
- kind: "content",
1988
- category: "content",
1989
- name: "Location Input",
1990
- attributes: {
1991
- val_from_variable_path: {
1992
- type: "variable_path_literal",
1993
- allowed_types: ["location_literal"],
1994
- },
1995
- is_show_opacity: { type: "boolean_literal", default: true },
1996
- },
1997
- },
1998
- location: {
1999
- kind: "content",
2000
- category: "content",
2001
- name: "Location",
2002
- attributes: {
2003
- // val_from_variable_path: {
2004
- // type: "variable_path_literal",
2005
- // allowed_types: ["location_literal"],
2006
- // },
2007
- val: { type: "location_literal" },
2008
- is_popover: { type: "boolean_literal", default: false },
2009
- is_inline: { type: "boolean_literal", default: false },
2010
- },
2011
- },
2012
- loop: {
2013
- kind: "content",
2014
- category: "content",
2015
- name: "Loop",
2016
- attributes: {
2017
- val_from_variable_path: {
2018
- type: "variable_path_literal",
2019
- allowed_types: ["array_uniform_literal", "object_uniform_literal"],
2020
- },
2021
- iter_identifier: { type: "text_literal" },
2022
- join_text: { type: "text_literal" },
2023
- },
2024
- child_elements: {
2025
- ...main_child_element_options,
2026
- },
2027
- },
2028
- // function_input: {}, maybe?
2029
- }
2030
-
2031
- export const node_types = {
2032
- ...literal_types,
2033
- ...content_types,
2034
- }
2035
-
2036
- function get_content_node_json_schema(type_id) {
2037
- //tbd
2038
- }
2039
-
2040
- export const language_options = [
2041
- { key: "en", name: "English", english_name: "English", emoji: "🇺🇸" },
2042
- { key: "es", name: "Español", english_name: "Spanish", emoji: "🇪🇸" },
2043
- { key: "zh", name: "中文", english_name: "Chinese", emoji: "🇨🇳" },
2044
- { key: "fr", name: "Français", english_name: "French", emoji: "🇫🇷" },
2045
- { key: "de", name: "Deutsch", english_name: "German", emoji: "🇩🇪" },
2046
- { key: "ja", name: "日本語", english_name: "Japanese", emoji: "🇯🇵" },
2047
- { key: "pt", name: "Português", english_name: "Portuguese", emoji: "🇵🇹" },
2048
- { key: "it", name: "Italiano", english_name: "Italian", emoji: "🇮🇹" },
2049
- { key: "ru", name: "Русский", english_name: "Russian", emoji: "🇷🇺" },
2050
- { key: "ko", name: "한국어", english_name: "Korean", emoji: "🇰🇷" },
2051
- { key: "ar", name: "العربية", english_name: "Arabic", emoji: "🇸🇦" },
2052
- { key: "hi", name: "हिन्दी", english_name: "Hindi", emoji: "🇮🇳" },
2053
- { key: "nl", name: "Nederlands", english_name: "Dutch", emoji: "🇳🇱" },
2054
- { key: "sv", name: "Svenska", english_name: "Swedish", emoji: "🇸🇪" },
2055
- { key: "da", name: "Dansk", english_name: "Danish", emoji: "🇩🇰" },
2056
- { key: "fi", name: "Suomi", english_name: "Finnish", emoji: "🇫🇮" },
2057
- { key: "no", name: "Norsk", english_name: "Norwegian", emoji: "🇳🇴" },
2058
- { key: "pl", name: "Polski", english_name: "Polish", emoji: "🇵🇱" },
2059
- { key: "cs", name: "Čeština", english_name: "Czech", emoji: "🇨🇿" },
2060
- { key: "tr", name: "Türkçe", english_name: "Turkish", emoji: "🇹🇷" },
2061
- { key: "el", name: "Ελληνικά", english_name: "Greek", emoji: "🇬🇷" },
2062
- { key: "hu", name: "Magyar", english_name: "Hungarian", emoji: "🇭🇺" },
2063
- { key: "th", name: "ไทย", english_name: "Thai", emoji: "🇹🇭" },
2064
- { key: "id", name: "Bahasa Indonesia", english_name: "Indonesian", emoji: "🇮🇩" },
2065
- { key: "ro", name: "Română", english_name: "Romanian", emoji: "🇷🇴" },
2066
- { key: "bg", name: "Български", english_name: "Bulgarian", emoji: "🇧🇬" },
2067
- { key: "vi", name: "Tiếng Việt", english_name: "Vietnamese", emoji: "🇻🇳" },
2068
- { key: "sk", name: "Slovenčina", english_name: "Slovak", emoji: "🇸🇰" },
2069
- { key: "sl", name: "Slovenščina", english_name: "Slovenian", emoji: "🇸🇮" },
2070
- { key: "hr", name: "Hrvatski", english_name: "Croatian", emoji: "🇭🇷" },
2071
- { key: "sr", name: "Српски", english_name: "Serbian", emoji: "🇷🇸" },
2072
- { key: "bs", name: "Bosanski", english_name: "Bosnian", emoji: "🇧🇦" },
2073
- { key: "mk", name: "Македонски", english_name: "Macedonian", emoji: "🇲🇰" },
2074
- { key: "uk", name: "Українська", english_name: "Ukrainian", emoji: "🇺🇦" },
2075
- { key: "he", name: "עברית", english_name: "Hebrew", emoji: "🇮🇱" },
2076
- { key: "fa", name: "فارسی", english_name: "Persian", emoji: "🇮🇷" },
2077
- { key: "bn", name: "বাংলা", english_name: "Bengali", emoji: "🇧🇩" },
2078
- { key: "ta", name: "தமிழ்", english_name: "Tamil", emoji: "🇮🇳" },
2079
- { key: "te", name: "తెలుగు", english_name: "Telugu", emoji: "🇮🇳" },
2080
- ]
2081
- // javascript: sequelize model definition using the iana timezone identifier
2082
-
2083
- export const time_zone_options = [
2084
- { key: "america/puerto_rico", name: "atlantic time / puerto rico (ast)", emoji: "🇵🇷" },
2085
- { key: "america/new_york", name: "eastern time / new york (est/edt)", emoji: "🇺🇸" },
2086
- { key: "america/toronto", name: "toronto time / toronto (est/edt)", emoji: "🇨🇦" },
2087
- { key: "america/halifax", name: "halifax time (ast/adt)", emoji: "🇨🇦" },
2088
- { key: "america/chicago", name: "central time / chicago (cst/cdt)", emoji: "🇺🇸" },
2089
- { key: "america/mexico_city", name: "mexico city time (cst/cdt)", emoji: "🇲🇽" },
2090
- { key: "america/denver", name: "mountain time / denver (mst/mdt)", emoji: "🇺🇸" },
2091
- { key: "america/phoenix", name: "arizona time / phoenix (mst)", emoji: "🇺🇸" },
2092
- { key: "america/los_angeles", name: "pacific time / los angeles (pst/pdt)", emoji: "🇺🇸" },
2093
- { key: "america/anchorage", name: "alaska time (akst/akdt)", emoji: "🇺🇸" },
2094
- { key: "america/adak", name: "hawaii-aleutian time (hast)", emoji: "🇺🇸" },
2095
- { key: "pacific/honolulu", name: "hawaii time (hst)", emoji: "🇺🇸" },
2096
- { key: "america/sao_paulo", name: "são paulo time (brt)", emoji: "🇧🇷" },
2097
- { key: "america/bogota", name: "bogota time (cot)", emoji: "🇨🇴" },
2098
- { key: "america/caracas", name: "caracas time (vet)", emoji: "🇻🇪" },
2099
- { key: "america/lima", name: "lima time (pet)", emoji: "🇵🇪" },
2100
- { key: "america/panama", name: "panama time (est)", emoji: "🇵🇦" },
2101
- { key: "europe/london", name: "london time (gmt/bst)", emoji: "🇬🇧" },
2102
- { key: "europe/berlin", name: "berlin time (cet/cest)", emoji: "🇩🇪" },
2103
- { key: "europe/paris", name: "paris time (cet/cest)", emoji: "🇫🇷" },
2104
- { key: "europe/moscow", name: "moscow time (msk)", emoji: "🇷🇺" },
2105
- { key: "asia/dubai", name: "dubai time (gst)", emoji: "🇦🇪" },
2106
- { key: "asia/tokyo", name: "tokyo time (jst)", emoji: "🇯🇵" },
2107
- { key: "asia/shanghai", name: "shanghai time (cst)", emoji: "🇨🇳" },
2108
- { key: "asia/kolkata", name: "india time (ist)", emoji: "🇮🇳" },
2109
- { key: "asia/singapore", name: "singapore time (sgt)", emoji: "🇸🇬" },
2110
- { key: "australia/sydney", name: "sydney time (aest/aedt)", emoji: "🇦🇺" },
2111
- { key: "pacific/auckland", name: "auckland time (nzst/nzdt)", emoji: "🇳🇿" },
2112
- { key: "europe/istanbul", name: "istanbul time (trt)", emoji: "🇹🇷" },
2113
- { key: "america/st_johns", name: "newfoundland time / st. johns (nst/ndt)", emoji: "🇨🇦" },
2114
- { key: "america/argentina/buenos_aires", name: "buenos aires time (art)", emoji: "🇦🇷" },
2115
- { key: "america/santiago", name: "santiago time (clt)", emoji: "🇨🇱" },
2116
- { key: "atlantic/reykjavik", name: "reykjavik time (gmt)", emoji: "🇮🇸" },
2117
- { key: "africa/cairo", name: "cairo time (eet)", emoji: "🇪🇬" },
2118
- { key: "asia/karachi", name: "pakistan time (pkt)", emoji: "🇵🇰" },
2119
- { key: "asia/hong_kong", name: "hong kong time (hkt)", emoji: "🇭🇰" },
2120
- { key: "asia/seoul", name: "seoul time (kst)", emoji: "🇰🇷" },
2121
- { key: "asia/bangkok", name: "bangkok time (ict)", emoji: "🇹🇭" },
2122
- { key: "asia/kuala_lumpur", name: "malaysia time (myt)", emoji: "🇲🇾" },
2123
- { key: "asia/manila", name: "philippine time / manila (pst)", emoji: "🇵🇭" },
2124
- ]
120
+ export const time_zone_options = [
121
+ { key: "america/puerto_rico", name: "atlantic time / puerto rico (ast)", emoji: "🇵🇷" },
122
+ { key: "america/new_york", name: "eastern time / new york (est/edt)", emoji: "🇺🇸" },
123
+ { key: "america/toronto", name: "toronto time / toronto (est/edt)", emoji: "🇨🇦" },
124
+ { key: "america/halifax", name: "halifax time (ast/adt)", emoji: "🇨🇦" },
125
+ { key: "america/chicago", name: "central time / chicago (cst/cdt)", emoji: "🇺🇸" },
126
+ { key: "america/mexico_city", name: "mexico city time (cst/cdt)", emoji: "🇲🇽" },
127
+ { key: "america/denver", name: "mountain time / denver (mst/mdt)", emoji: "🇺🇸" },
128
+ { key: "america/phoenix", name: "arizona time / phoenix (mst)", emoji: "🇺🇸" },
129
+ { key: "america/los_angeles", name: "pacific time / los angeles (pst/pdt)", emoji: "🇺🇸" },
130
+ { key: "america/anchorage", name: "alaska time (akst/akdt)", emoji: "🇺🇸" },
131
+ { key: "america/adak", name: "hawaii-aleutian time (hast)", emoji: "🇺🇸" },
132
+ { key: "pacific/honolulu", name: "hawaii time (hst)", emoji: "🇺🇸" },
133
+ { key: "america/sao_paulo", name: "são paulo time (brt)", emoji: "🇧🇷" },
134
+ { key: "america/bogota", name: "bogota time (cot)", emoji: "🇨🇴" },
135
+ { key: "america/caracas", name: "caracas time (vet)", emoji: "🇻🇪" },
136
+ { key: "america/lima", name: "lima time (pet)", emoji: "🇵🇪" },
137
+ { key: "america/panama", name: "panama time (est)", emoji: "🇵🇦" },
138
+ { key: "europe/london", name: "london time (gmt/bst)", emoji: "🇬🇧" },
139
+ { key: "europe/berlin", name: "berlin time (cet/cest)", emoji: "🇩🇪" },
140
+ { key: "europe/paris", name: "paris time (cet/cest)", emoji: "🇫🇷" },
141
+ { key: "europe/moscow", name: "moscow time (msk)", emoji: "🇷🇺" },
142
+ { key: "asia/dubai", name: "dubai time (gst)", emoji: "🇦🇪" },
143
+ { key: "asia/tokyo", name: "tokyo time (jst)", emoji: "🇯🇵" },
144
+ { key: "asia/shanghai", name: "shanghai time (cst)", emoji: "🇨🇳" },
145
+ { key: "asia/kolkata", name: "india time (ist)", emoji: "🇮🇳" },
146
+ { key: "asia/singapore", name: "singapore time (sgt)", emoji: "🇸🇬" },
147
+ { key: "australia/sydney", name: "sydney time (aest/aedt)", emoji: "🇦🇺" },
148
+ { key: "pacific/auckland", name: "auckland time (nzst/nzdt)", emoji: "🇳🇿" },
149
+ { key: "europe/istanbul", name: "istanbul time (trt)", emoji: "🇹🇷" },
150
+ { key: "america/st_johns", name: "newfoundland time / st. johns (nst/ndt)", emoji: "🇨🇦" },
151
+ { key: "america/argentina/buenos_aires", name: "buenos aires time (art)", emoji: "🇦🇷" },
152
+ { key: "america/santiago", name: "santiago time (clt)", emoji: "🇨🇱" },
153
+ { key: "atlantic/reykjavik", name: "reykjavik time (gmt)", emoji: "🇮🇸" },
154
+ { key: "africa/cairo", name: "cairo time (eet)", emoji: "🇪🇬" },
155
+ { key: "asia/karachi", name: "pakistan time (pkt)", emoji: "🇵🇰" },
156
+ { key: "asia/hong_kong", name: "hong kong time (hkt)", emoji: "🇭🇰" },
157
+ { key: "asia/seoul", name: "seoul time (kst)", emoji: "🇰🇷" },
158
+ { key: "asia/bangkok", name: "bangkok time (ict)", emoji: "🇹🇭" },
159
+ { key: "asia/kuala_lumpur", name: "malaysia time (myt)", emoji: "🇲🇾" },
160
+ { key: "asia/manila", name: "philippine time / manila (pst)", emoji: "🇵🇭" },
161
+ ]
2125
162
 
2126
163
  export const person_trait_options = [
2127
164
  { key: "white", name: "White", emoji: "✋🏻" },
@@ -2477,6 +514,2112 @@ export const person_trait_options = [
2477
514
  { key: "use_android", name: "Android User", emoji: "🤖" },
2478
515
  ]
2479
516
 
517
+ const array_literal = {
518
+ kind: "literal",
519
+ category: "variables",
520
+ name: "Array",
521
+ postgres_type: "jsonb",
522
+ json_schema: { type: "array" },
523
+ validator: (input) => {
524
+ // validate tbd
525
+ },
526
+ }
527
+ const array_uniform_literal = {
528
+ kind: "literal",
529
+ category: "variables",
530
+ name: "Array Uniform",
531
+ postgres_type: "jsonb",
532
+ json_schema: { type: "array" },
533
+ validator: (input) => {
534
+ // validate tbd
535
+ },
536
+ }
537
+ const object_literal = {
538
+ kind: "literal",
539
+ category: "variables",
540
+ name: "Object",
541
+ postgres_type: "jsonb",
542
+ json_schema: { type: "object" },
543
+ validator: (input) => {
544
+ // validate here
545
+ },
546
+ }
547
+ const object_uniform_literal = {
548
+ kind: "literal",
549
+ category: "variables",
550
+ name: "Object Uniform",
551
+ postgres_type: "jsonb",
552
+ json_schema: { type: "object" },
553
+ validator: (input) => {
554
+ // validate here
555
+ },
556
+ }
557
+ const text_literal = {
558
+ kind: "literal",
559
+ category: "variables",
560
+ name: "Text",
561
+ postgres_type: "text",
562
+ json_schema: { type: "string" },
563
+ validator: (input) => {
564
+ // validate here
565
+ },
566
+ }
567
+ const boolean_literal = {
568
+ kind: "literal",
569
+ category: "variables",
570
+ name: "Boolean",
571
+ postgres_type: "boolean",
572
+ json_schema: { type: "boolean" },
573
+ validator: (input) => {
574
+ // validate here
575
+ },
576
+ }
577
+ const int_literal = {
578
+ kind: "literal",
579
+ category: "variables",
580
+ name: "Integer",
581
+ postgres_type: "int",
582
+ json_schema: { type: "number" },
583
+ validator: (input) => {
584
+ // validate here
585
+ },
586
+ }
587
+ const bigint_literal = {
588
+ kind: "literal",
589
+ category: "variables",
590
+ name: "Big Integer",
591
+ postgres_type: "bigint",
592
+ json_schema: { type: "number" },
593
+ validator: (input) => {
594
+ // validate here
595
+ },
596
+ }
597
+ const null_literal = {
598
+ kind: "literal",
599
+ category: "variables",
600
+ name: "Null",
601
+ postgres_type: "jsonb",
602
+ json_schema: { type: "null" },
603
+ validator: (input) => {
604
+ // validate here
605
+ },
606
+ }
607
+ const epoch_literal = {
608
+ kind: "literal",
609
+ category: "variables",
610
+ name: "Epoch",
611
+ postgres_type: "bigint",
612
+ json_schema: { type: "number", description: "Epoch in seconds" },
613
+ validator: (input) => {
614
+ // validate here
615
+ },
616
+ }
617
+ const float_literal = {
618
+ kind: "literal",
619
+ category: "variables",
620
+ name: "Float",
621
+ postgres_type: "float",
622
+ json_schema: { type: "number" },
623
+ validator: (input) => {
624
+ // validate here
625
+ },
626
+ }
627
+ const color_literal = {
628
+ kind: "literal",
629
+ category: "variables",
630
+ name: "Color",
631
+ postgres_type: "jsonb",
632
+ json_schema: {
633
+ type: "object",
634
+ description:
635
+ "color parts l (lightness), c (chroma), h (hue), o (opacity) can range from 0-24. An example of a solid black that flips to white in dark mode would be { c: 0, l: 0, h: 0, o: 24, is_dark_theme_invert: true }. Generally use is_dark_theme_invert true, opacity 24, c is chroma and gets probably too vibrant over 14 so 10 is probably a standard amount and 3 if want softer or 0 for white, l is lightness and 0 is black and 24 full light typcally we assume a light backround so you might use something like l 8 for a header text. h is hue and the 0-24 range can be understood as 0: 0 oklch h val, red (pure red), 1: 14 oklch h val, orange-red (red with an orange tint), 2: 29 oklch h val, orange (warm orange), 3: 43 oklch h val, yellow-orange (a deep orange, close to golden), 4: 58 oklch h val, yellow (bright yellow), 5: 72 oklch h val, greenish-yellow (yellow with a slight green tint), 6: 87 oklch h val, yellow-green (green with strong yellow undertones), 7: 101 oklch h val, green (pure green), 8: 116 oklch h val, green-cyan (green shifting toward cyan), 9: 130 oklch h val, cyan (a strong cyan-green color), 10: 145 oklch h val, blue-green (cyan with a blue shift), 11: 159 oklch h val, cyan-blue (a cool blue-leaning cyan), 12: 174 oklch h val, light blue (sky blue, soft and light), 13: 188 oklch h val, blue (pure blue), 14: 203 oklch h val, indigo (a deep blue with hints of purple), 15: 217 oklch h val, blue-violet (a blue shifting toward purple), 16: 232 oklch h val, violet (violet with a blue tint), 17: 246 oklch h val, purple (deep purple), 18: 261 oklch h val, magenta-purple (purple with magenta tones), 19: 275 oklch h val, magenta (deep, vivid magenta), 20: 290 oklch h val, pink-magenta (magenta with a pink hue), 21: 304 oklch h val, pink (a soft, warm pink), 22: 319 oklch h val, pinkish-red (pink leaning toward red), 23: 333 oklch h val, red-pink (vivid red with pink tones), 24: 348 oklch h val, bright red (bright red, slightly pinkish) ",
636
+ properties: {
637
+ l: { type: "number" },
638
+ c: { type: "number" },
639
+ h: { type: "number" },
640
+ o: { type: "number" },
641
+ is_dark_theme_invert: { type: "boolean" },
642
+ },
643
+ additionalProperties: false,
644
+ required: ["l", "c", "h", "o", "is_dark_theme_invert"],
645
+ },
646
+ validator: (input) => {
647
+ // validate here
648
+ },
649
+ }
650
+ const domain_literal = {
651
+ kind: "literal",
652
+ category: "variables",
653
+ name: "Domain",
654
+ postgres_type: "text",
655
+ json_schema: {
656
+ type: "string",
657
+ },
658
+ validator: (input) => {
659
+ // validate here
660
+ },
661
+ }
662
+ const email_address_literal = {
663
+ kind: "literal",
664
+ category: "variables",
665
+ name: "Email Address",
666
+ postgres_type: "text",
667
+ json_schema: {
668
+ type: "string",
669
+ // format: "email",
670
+ },
671
+ validator: (input) => {
672
+ // validate here
673
+ },
674
+ }
675
+ const email_address_full_literal = {
676
+ kind: "literal",
677
+ category: "variables",
678
+ name: "Email Address Full",
679
+ postgres_type: "jsonb",
680
+ json_schema: {
681
+ type: "object",
682
+ properties: {
683
+ domain: domain_literal?.json_schema,
684
+ domain_id: text_literal?.json_schema,
685
+ account_id: text_literal?.json_schema,
686
+ root_domain: domain_literal?.json_schema,
687
+ display_name: text_literal?.json_schema,
688
+ mailbox_hash: text_literal?.json_schema,
689
+ email_address: email_address_literal?.json_schema,
690
+ root_email_address: email_address_literal?.json_schema,
691
+ epoch_email_address_verified: epoch_literal?.json_schema,
692
+ },
693
+ additionalProperties: false,
694
+ required: ["domain", "root_domain", "mailbox_hash", "email_address", "root_email_address"],
695
+ },
696
+ validator: (input) => {
697
+ // validate here
698
+ },
699
+ }
700
+ const email_attachment_literal = {
701
+ kind: "literal",
702
+ category: "variables",
703
+ name: "Email Attachment",
704
+ postgres_type: "jsonb",
705
+ json_schema: {
706
+ type: "object",
707
+ properties: {
708
+ name: text_literal?.json_schema,
709
+ content: text_literal?.json_schema,
710
+ content_id: text_literal?.json_schema,
711
+ content_type: text_literal?.json_schema,
712
+ },
713
+ additionalProperties: false,
714
+ required: ["name", "content", "content_id", "content_type"],
715
+ },
716
+ validator: (input) => {
717
+ // validate here
718
+ },
719
+ }
720
+ const json_literal = {
721
+ kind: "literal",
722
+ category: "variables",
723
+ name: "JSON",
724
+ postgres_type: "jsonb",
725
+ json_schema: {
726
+ anyOf: [
727
+ { type: "null" },
728
+ { type: "boolean" },
729
+ { type: "number" },
730
+ { type: "string" },
731
+ {
732
+ type: "array",
733
+ items: { $ref: "#/$defs/json_literal" },
734
+ },
735
+ {
736
+ type: "object",
737
+ additionalProperties: { $ref: "#/$defs/json_literal" },
738
+ },
739
+ ],
740
+ },
741
+ validator: (input) => {
742
+ // validate here
743
+ },
744
+ }
745
+ const storage_item_literal = {
746
+ kind: "literal",
747
+ category: "variables",
748
+ name: "Storage Item",
749
+ postgres_type: "jsonb",
750
+ json_schema: {
751
+ type: "object",
752
+ properties: {
753
+ id: text_literal?.json_schema,
754
+ db_epoch_created: epoch_literal?.json_schema,
755
+ db_epoch_updated: epoch_literal?.json_schema,
756
+ account_id: text_literal?.json_schema,
757
+ folder_path: { type: "array", items: text_literal?.json_schema },
758
+ file_name: text_literal?.json_schema,
759
+ file_extension: text_literal?.json_schema,
760
+ mime_type: text_literal?.json_schema,
761
+ size_kb: int_literal?.json_schema,
762
+ metadata: json_literal?.json_schema,
763
+ is_temporary: boolean_literal?.json_schema,
764
+ set_to_delete_initiated_at: epoch_literal?.json_schema,
765
+ is_public: boolean_literal?.json_schema,
766
+ transcription: text_literal?.json_schema,
767
+ },
768
+ additionalProperties: false,
769
+ required: [],
770
+ },
771
+ validator: (input) => {
772
+ // validate here
773
+ },
774
+ }
775
+ const html_literal = {
776
+ kind: "literal",
777
+ category: "variables",
778
+ name: "HTML",
779
+ postgres_type: "text",
780
+ json_schema: text_literal?.json_schema,
781
+ validator: (input) => {
782
+ // validate here
783
+ },
784
+ }
785
+ const phone_literal = {
786
+ kind: "literal",
787
+ category: "variables",
788
+ name: "Phone Number",
789
+ postgres_type: "jsonb",
790
+ json_schema: {
791
+ // type: "object",
792
+ },
793
+ validator: (input) => {
794
+ // validate here
795
+ },
796
+ }
797
+ const vector_literal = {
798
+ kind: "literal",
799
+ category: "variables",
800
+ name: "Vector",
801
+ postgres_type: "vector",
802
+ json_schema: {
803
+ type: "array",
804
+ items: { type: "number" },
805
+ },
806
+ validator: (input) => {
807
+ // validate here
808
+ },
809
+ }
810
+ const icon_literal = {
811
+ kind: "literal",
812
+ category: "variables",
813
+ name: "Icon",
814
+ postgres_type: "jsonb",
815
+ json_schema: {
816
+ type: "object",
817
+ properties: {
818
+ icon: text_literal?.json_schema,
819
+ color: color_literal?.json_schema,
820
+ },
821
+ additionalProperties: false,
822
+ required: ["icon", "color"],
823
+ },
824
+ validator: (input) => {
825
+ // validate here
826
+ },
827
+ }
828
+ const time_literal = {
829
+ kind: "literal",
830
+ category: "variables",
831
+ name: "Time",
832
+ postgres_type: "jsonb",
833
+ json_schema: {
834
+ type: "object",
835
+ properties: {
836
+ format: {
837
+ type: "string",
838
+ description: JSON.stringify(time_formats),
839
+ },
840
+ epoch: {
841
+ anyOf: [
842
+ {
843
+ type: "number",
844
+ description: "epoch in seconds",
845
+ },
846
+ {
847
+ type: "null",
848
+ },
849
+ ],
850
+ description: "derived can keep null",
851
+ },
852
+ granularity: {
853
+ type: "string",
854
+ enum: ["year", "month", "week", "day", "hour", "minute", "second"],
855
+ description: ["year", "month", "week", "day", "hour", "minute", "second"].join(", "),
856
+ },
857
+ year: {
858
+ anyOf: [
859
+ {
860
+ type: "number",
861
+ },
862
+ {
863
+ type: "null",
864
+ },
865
+ ],
866
+ description: "derived can keep null",
867
+ },
868
+ month: {
869
+ anyOf: [
870
+ {
871
+ type: "number",
872
+ enum: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
873
+ },
874
+ {
875
+ type: "null",
876
+ },
877
+ ],
878
+ description: "derived can keep null",
879
+ },
880
+ day_of_month: {
881
+ anyOf: [
882
+ {
883
+ type: "number",
884
+ minimum: 1,
885
+ maximum: 31,
886
+ },
887
+ {
888
+ type: "null",
889
+ },
890
+ ],
891
+ description: "derived can keep null",
892
+ },
893
+ day_of_week: {
894
+ anyOf: [
895
+ {
896
+ type: "number",
897
+ enum: [0, 1, 2, 3, 4, 5, 6],
898
+ },
899
+ {
900
+ type: "null",
901
+ },
902
+ ],
903
+ description: "derived can keep null",
904
+ },
905
+ day_of_year: {
906
+ anyOf: [
907
+ {
908
+ type: "number",
909
+ minimum: 1,
910
+ maximum: 365,
911
+ },
912
+ {
913
+ type: "null",
914
+ },
915
+ ],
916
+ description: "derived can keep null",
917
+ },
918
+ week_of_year: {
919
+ anyOf: [
920
+ {
921
+ type: "number",
922
+ minimum: 1,
923
+ maximum: 52,
924
+ },
925
+ {
926
+ type: "null",
927
+ },
928
+ ],
929
+ description: "derived can keep null",
930
+ },
931
+ hour: {
932
+ anyOf: [
933
+ {
934
+ type: "number",
935
+ minimum: 1,
936
+ maximum: 24,
937
+ },
938
+ {
939
+ type: "null",
940
+ },
941
+ ],
942
+ description: "derived can keep null",
943
+ },
944
+ minute: {
945
+ anyOf: [
946
+ {
947
+ type: "number",
948
+ minimum: 1,
949
+ maximum: 60,
950
+ },
951
+ {
952
+ type: "null",
953
+ },
954
+ ],
955
+ description: "derived can keep null",
956
+ },
957
+ timezone: {
958
+ anyOf: [
959
+ {
960
+ type: "string",
961
+ description: time_zone_options.map((h) => h?.key).join(", "),
962
+ },
963
+ {
964
+ type: "null",
965
+ },
966
+ ],
967
+ description: "derived can keep null",
968
+ },
969
+ content: {
970
+ anyOf: [
971
+ {
972
+ type: "string",
973
+ },
974
+ {
975
+ type: "null",
976
+ },
977
+ ],
978
+ description: "derived can keep null",
979
+ },
980
+ datetime: {
981
+ anyOf: [
982
+ {
983
+ type: "string",
984
+ },
985
+ {
986
+ type: "null",
987
+ },
988
+ ],
989
+ description: "derived can keep null",
990
+ },
991
+ },
992
+ additionalProperties: false,
993
+ required: ["epoch"],
994
+ },
995
+ validator: (input) => {
996
+ // validate here
997
+ },
998
+ }
999
+ const time_zone_literal = {
1000
+ kind: "literal",
1001
+ category: "variables",
1002
+ name: "Time Zone",
1003
+ postgres_type: "text",
1004
+ json_schema: text_literal?.json_schema,
1005
+ validator: (input) => {
1006
+ // validate here
1007
+ },
1008
+ }
1009
+ const location_literal = {
1010
+ kind: "literal",
1011
+ category: "variables",
1012
+ name: "Location Apple",
1013
+ postgres_type: "jsonb",
1014
+ json_schema: {
1015
+ type: "object",
1016
+ properties: {
1017
+ place_id: { type: "string" },
1018
+ name: { type: "string" },
1019
+ muid: { type: "string" },
1020
+ latitude: { type: "number" },
1021
+ longitude: { type: "number" },
1022
+ formatted_address: { type: "string" },
1023
+ country: { type: "string" },
1024
+ country_code: { type: "string" },
1025
+ administrative_area: { type: "string" },
1026
+ administrative_area_code: { type: "string" },
1027
+ locality: { type: "string" },
1028
+ sub_locality: { type: "string" },
1029
+ full_thoroughfare: { type: "string" },
1030
+ },
1031
+ required: ["latitude", "longitude", "name"],
1032
+ additionalProperties: false,
1033
+ },
1034
+ validator: (input) => {
1035
+ // validate here
1036
+ },
1037
+ }
1038
+ const cron_literal = {
1039
+ kind: "literal",
1040
+ category: "variables",
1041
+ name: "Cron",
1042
+ postgres_type: "jsonb",
1043
+ json_schema: {
1044
+ type: "object",
1045
+ properties: {
1046
+ content: { type: "string" },
1047
+ cron: { type: "string" },
1048
+ minute: { type: "string" },
1049
+ hour: { type: "string" },
1050
+ day_of_month: { type: "string" },
1051
+ month: { type: "string" },
1052
+ day_of_week: { type: "string" },
1053
+ },
1054
+ additionalProperties: false,
1055
+ required: [],
1056
+ },
1057
+ validator: (input) => {
1058
+ // validate here
1059
+ },
1060
+ }
1061
+ const variable_path_literal = {
1062
+ kind: "literal",
1063
+ category: "variables",
1064
+ name: "Variable Path",
1065
+ postgres_type: "jsonb",
1066
+ json_schema: {
1067
+ type: "array",
1068
+ description: "The path to the value within variables.",
1069
+ items: {
1070
+ anyOf: [
1071
+ {
1072
+ type: "string",
1073
+ },
1074
+ {
1075
+ type: "number",
1076
+ },
1077
+ {
1078
+ type: "array",
1079
+ items: {
1080
+ anyOf: [
1081
+ {
1082
+ type: "string",
1083
+ },
1084
+ {
1085
+ type: "number",
1086
+ },
1087
+ ],
1088
+ },
1089
+ },
1090
+ ],
1091
+ },
1092
+ },
1093
+ validator: (input) => {
1094
+ // validate here
1095
+ },
1096
+ }
1097
+ const content_literal = {
1098
+ kind: "literal",
1099
+ category: "variables",
1100
+ name: "Content",
1101
+ postgres_type: "jsonb",
1102
+ // json_schema: get_content_node_json_schema("content_literal"),
1103
+ validator: (input) => {
1104
+ // validate here
1105
+ },
1106
+ }
1107
+ const table_id_for_foreign_row_literal = {
1108
+ kind: "literal",
1109
+ category: "variables",
1110
+ name: "Table ID for Foreign Row",
1111
+ postgres_type: "text",
1112
+ // json_schema: get_content_node_json_schema("content_literal"),
1113
+ validator: (input) => {
1114
+ // validate here
1115
+ },
1116
+ }
1117
+ // image_literal
1118
+ // audio_literal
1119
+ // file_literal
1120
+ // dropdown_literal
1121
+ // text_array_literal
1122
+ // function_literal
1123
+
1124
+ export const literal_types = {
1125
+ array_literal,
1126
+ array_uniform_literal,
1127
+ object_literal,
1128
+ object_uniform_literal,
1129
+ text_literal,
1130
+ boolean_literal,
1131
+ int_literal,
1132
+ bigint_literal,
1133
+ null_literal,
1134
+ epoch_literal,
1135
+ float_literal,
1136
+ color_literal,
1137
+ json_literal,
1138
+ domain_literal,
1139
+ email_address_literal,
1140
+ email_address_full_literal,
1141
+ email_attachment_literal,
1142
+ storage_item_literal,
1143
+ html_literal,
1144
+ phone_literal,
1145
+ vector_literal,
1146
+ icon_literal,
1147
+ time_literal,
1148
+ time_zone_literal,
1149
+ location_literal,
1150
+ cron_literal,
1151
+ content_literal,
1152
+ table_id_for_foreign_row_literal,
1153
+ variable_path_literal,
1154
+ }
1155
+
1156
+ export const main_child_element_options = {
1157
+ slot: { display_order: 0, child_min_limit: 0, child_max_limit: 99 },
1158
+ loop: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1159
+ div: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1160
+ section: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1161
+ show_conditions: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1162
+ header: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
1163
+ footer: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
1164
+ h1: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
1165
+ h2: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
1166
+ h3: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
1167
+ h4: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
1168
+ h5: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
1169
+ h6: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
1170
+ p: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
1171
+ br: { display_order: 16, child_min_limit: 0, child_max_limit: 99 },
1172
+ base_text: { display_order: 17, child_min_limit: 0, child_max_limit: 99 },
1173
+ span: { display_order: 18, child_min_limit: 0, child_max_limit: 99 },
1174
+ strong: { display_order: 19, child_min_limit: 0, child_max_limit: 99 },
1175
+ em: { display_order: 20, child_min_limit: 0, child_max_limit: 99 },
1176
+ strong_em: { display_order: 21, child_min_limit: 0, child_max_limit: 99 },
1177
+ link: { display_order: 22, child_min_limit: 0, child_max_limit: 99 },
1178
+ q: { display_order: 23, child_min_limit: 0, child_max_limit: 99 },
1179
+ mark: { display_order: 24, child_min_limit: 0, child_max_limit: 99 },
1180
+ s: { display_order: 25, child_min_limit: 0, child_max_limit: 99 },
1181
+ blockquote: { display_order: 26, child_min_limit: 0, child_max_limit: 99 },
1182
+ ul: { display_order: 27, child_min_limit: 0, child_max_limit: 99 },
1183
+ ol: { display_order: 28, child_min_limit: 0, child_max_limit: 99 },
1184
+ figure: { display_order: 29, child_min_limit: 0, child_max_limit: 99 },
1185
+ picture: { display_order: 30, child_min_limit: 0, child_max_limit: 99 },
1186
+ image: { display_order: 32, child_min_limit: 0, child_max_limit: 99 },
1187
+ audio: { display_order: 34, child_min_limit: 0, child_max_limit: 99 },
1188
+ video: { display_order: 35, child_min_limit: 0, child_max_limit: 99 },
1189
+ youtube_video: { display_order: 36, child_min_limit: 0, child_max_limit: 99 },
1190
+ x_post: { display_order: 37, child_min_limit: 0, child_max_limit: 99 },
1191
+ table: { display_order: 38, child_min_limit: 0, child_max_limit: 99 },
1192
+ table_advanced: { display_order: 39, child_min_limit: 0, child_max_limit: 99 },
1193
+ hr: { display_order: 40, child_min_limit: 0, child_max_limit: 99 },
1194
+ qr: { display_order: 41, child_min_limit: 0, child_max_limit: 99 },
1195
+ code: { display_order: 42, child_min_limit: 0, child_max_limit: 99 },
1196
+ code_inline: { display_order: 43, child_min_limit: 0, child_max_limit: 99 },
1197
+ pre: { display_order: 44, child_min_limit: 0, child_max_limit: 99 },
1198
+ json: { display_order: 45, child_min_limit: 0, child_max_limit: 99 },
1199
+ email_address: { display_order: 46, child_min_limit: 0, child_max_limit: 99 },
1200
+ email_address_input: { display_order: 47, child_min_limit: 0, child_max_limit: 99 },
1201
+ phone_number: { display_order: 48, child_min_limit: 0, child_max_limit: 99 },
1202
+ phone_number_input: { display_order: 49, child_min_limit: 0, child_max_limit: 99 },
1203
+ time: { display_order: 50, child_min_limit: 0, child_max_limit: 99 },
1204
+ time_input: { display_order: 51, child_min_limit: 0, child_max_limit: 99 },
1205
+ text_input: { display_order: 52, child_min_limit: 0, child_max_limit: 99 },
1206
+ location: { display_order: 53, child_min_limit: 0, child_max_limit: 99 },
1207
+ location_input: { display_order: 54, child_min_limit: 0, child_max_limit: 99 },
1208
+ slider: { display_order: 55, child_min_limit: 0, child_max_limit: 99 },
1209
+ checkbox: { display_order: 56, child_min_limit: 0, child_max_limit: 99 },
1210
+ number: { display_order: 57, child_min_limit: 0, child_max_limit: 99 },
1211
+ icon: { display_order: 58, child_min_limit: 0, child_max_limit: 99 },
1212
+ icon_input: { display_order: 59, child_min_limit: 0, child_max_limit: 99 },
1213
+ dropdown: { display_order: 60, child_min_limit: 0, child_max_limit: 99 },
1214
+ file: { display_order: 61, child_min_limit: 0, child_max_limit: 99 },
1215
+ file_input: { display_order: 62, child_min_limit: 0, child_max_limit: 99 },
1216
+ cron: { display_order: 64, child_min_limit: 0, child_max_limit: 99 },
1217
+ cron_input: { display_order: 65, child_min_limit: 0, child_max_limit: 99 },
1218
+ color: { display_order: 67, child_min_limit: 0, child_max_limit: 99 },
1219
+ color_input: { display_order: 68, child_min_limit: 0, child_max_limit: 99 },
1220
+ tag: { display_order: 69, child_min_limit: 0, child_max_limit: 99 },
1221
+ }
1222
+
1223
+ export const content_types = {
1224
+ slot: {
1225
+ kind: "content",
1226
+ category: "content",
1227
+ name: "Slot",
1228
+ display_order: 0,
1229
+ attributes: {
1230
+ val: { type: "text_literal" },
1231
+ },
1232
+ child_elements: {},
1233
+ },
1234
+ loop: {
1235
+ kind: "content",
1236
+ category: "variables",
1237
+ name: "Loop",
1238
+ display_order: 0,
1239
+ child_elements: {
1240
+ ...main_child_element_options,
1241
+ },
1242
+ validator: (input) => {
1243
+ // validate tbd
1244
+ },
1245
+ },
1246
+ div: {
1247
+ kind: "content",
1248
+ category: "content",
1249
+ name: "Div",
1250
+ display_order: 1,
1251
+ attributes: {
1252
+ background_color: {
1253
+ type: "color_literal",
1254
+ display_name: "Background Color",
1255
+ },
1256
+ border_color: {
1257
+ type: "color_literal",
1258
+ display_name: "Border Color",
1259
+ },
1260
+ border_radius: {
1261
+ type: "float_literal",
1262
+ display_name: "Border Radius",
1263
+ },
1264
+ padding: {
1265
+ type: "float_literal",
1266
+ display_name: "Padding",
1267
+ },
1268
+ align_content: {
1269
+ type: "text_literal",
1270
+ display_name: "Align Content",
1271
+ },
1272
+ justify_content: {
1273
+ type: "text_literal",
1274
+ display_name: "Justify Content",
1275
+ },
1276
+ gap: {
1277
+ type: "float_literal",
1278
+ display_name: "Gap",
1279
+ },
1280
+ },
1281
+ child_elements: {
1282
+ ...main_child_element_options,
1283
+ },
1284
+ },
1285
+ section: {
1286
+ kind: "content",
1287
+ category: "content",
1288
+ name: "Section",
1289
+ display_order: 2,
1290
+ attributes: {
1291
+ background_color: {
1292
+ type: "color_literal",
1293
+ display_name: "Background Color",
1294
+ },
1295
+ border_color: {
1296
+ type: "color_literal",
1297
+ display_name: "Border Color",
1298
+ },
1299
+ border_radius: {
1300
+ display_name: "Border Radius",
1301
+ json_schema: {
1302
+ description: "border radius number used as rem units. Typically 1 should be good",
1303
+ type: "number",
1304
+ },
1305
+ },
1306
+ padding: {
1307
+ display_name: "Padding",
1308
+ json_schema: {
1309
+ description: "padding number used as rem units. Typically 1 should be good",
1310
+ type: "number",
1311
+ },
1312
+ },
1313
+ },
1314
+ child_elements: {
1315
+ div: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1316
+ header: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1317
+ h1: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1318
+ h2: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1319
+ h3: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
1320
+ h4: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
1321
+ h5: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
1322
+ h6: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
1323
+ p: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
1324
+ ul: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
1325
+ ol: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
1326
+ table: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
1327
+ table_advanced: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
1328
+ figure: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
1329
+ image: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
1330
+ audio: { display_order: 16, child_min_limit: 0, child_max_limit: 99 },
1331
+ video: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
1332
+ code: { display_order: 17, child_min_limit: 0, child_max_limit: 99 },
1333
+ blockquote: { display_order: 18, child_min_limit: 0, child_max_limit: 99 },
1334
+ pre: { display_order: 19, child_min_limit: 0, child_max_limit: 99 },
1335
+ hr: { display_order: 20, child_min_limit: 0, child_max_limit: 99 },
1336
+ footer: { display_order: 21, child_min_limit: 0, child_max_limit: 99 },
1337
+ youtube_video: { display_order: 22, child_min_limit: 0, child_max_limit: 99 },
1338
+ x_post: { display_order: 23, child_min_limit: 0, child_max_limit: 99 },
1339
+ time: { display_order: 24, child_min_limit: 0, child_max_limit: 99 },
1340
+ location: { display_order: 25, child_min_limit: 0, child_max_limit: 99 },
1341
+ json: { display_order: 26, child_min_limit: 0, child_max_limit: 99 },
1342
+ },
1343
+ },
1344
+ show_conditions: {
1345
+ kind: "content",
1346
+ category: "content",
1347
+ name: "Show Conditions",
1348
+ display_order: 1,
1349
+ attributes: {
1350
+ is_run_serverside: {
1351
+ type: "boolean_literal",
1352
+ display_name: "Is Run Serverside",
1353
+ default: false,
1354
+ },
1355
+ },
1356
+ child_elements: {
1357
+ show_conditions_item: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1358
+ show_conditions_item_else: { display_order: 1, child_min_limit: 0, child_max_limit: 1 },
1359
+ },
1360
+ },
1361
+ show_conditions_item: {
1362
+ kind: "content",
1363
+ category: "content",
1364
+ name: "Show Conditions Item",
1365
+ display_order: 1,
1366
+ attributes: {
1367
+ is_show: {
1368
+ type: "boolean_literal",
1369
+ display_name: "Is Show",
1370
+ },
1371
+ },
1372
+ child_elements: {
1373
+ ...main_child_element_options,
1374
+ },
1375
+ },
1376
+ show_conditions_item_else: {
1377
+ kind: "content",
1378
+ category: "content",
1379
+ name: "Show Conditions Item Else",
1380
+ display_order: 1,
1381
+ attributes: {},
1382
+ child_elements: {
1383
+ ...main_child_element_options,
1384
+ },
1385
+ },
1386
+ header: {
1387
+ kind: "content",
1388
+ category: "content",
1389
+ name: "Header",
1390
+ display_order: 3,
1391
+ attributes: {},
1392
+ child_elements: {
1393
+ h1: { display_order: 1, child_min_limit: 1, child_max_limit: 1 },
1394
+ h2: { display_order: 2, child_min_limit: 0, child_max_limit: 1 },
1395
+ },
1396
+ },
1397
+ h1: {
1398
+ kind: "content",
1399
+ category: "content",
1400
+ name: "Heading 1",
1401
+ display_order: 4,
1402
+ attributes: {},
1403
+ child_elements: {
1404
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1405
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1406
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1407
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1408
+ },
1409
+ },
1410
+ h2: {
1411
+ kind: "content",
1412
+ category: "content",
1413
+ name: "Heading 2",
1414
+ display_order: 5,
1415
+ attributes: {},
1416
+ child_elements: {
1417
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1418
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1419
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1420
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1421
+ },
1422
+ },
1423
+ h3: {
1424
+ kind: "content",
1425
+ category: "content",
1426
+ name: "Heading 3",
1427
+ display_order: 6,
1428
+ attributes: {},
1429
+ child_elements: {
1430
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1431
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1432
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1433
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1434
+ },
1435
+ },
1436
+ h4: {
1437
+ kind: "content",
1438
+ category: "content",
1439
+ name: "Heading 4",
1440
+ display_order: 7,
1441
+ attributes: {},
1442
+ child_elements: {
1443
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1444
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1445
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1446
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1447
+ },
1448
+ },
1449
+ h5: {
1450
+ kind: "content",
1451
+ category: "content",
1452
+ name: "Heading 5",
1453
+ display_order: 8,
1454
+ attributes: {},
1455
+ child_elements: {
1456
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1457
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1458
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1459
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1460
+ },
1461
+ },
1462
+ h6: {
1463
+ kind: "content",
1464
+ category: "content",
1465
+ name: "Heading 6",
1466
+ display_order: 9,
1467
+ attributes: {},
1468
+ child_elements: {
1469
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1470
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1471
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1472
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1473
+ },
1474
+ },
1475
+ p: {
1476
+ kind: "content",
1477
+ category: "content",
1478
+ name: "Paragraph",
1479
+ display_order: 10,
1480
+ attributes: {},
1481
+ child_elements: {
1482
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1483
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1484
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1485
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1486
+ link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
1487
+ ref: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
1488
+ q: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
1489
+ span: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
1490
+ sub: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
1491
+ sup: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
1492
+ s: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
1493
+ mark: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
1494
+ code_inline: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
1495
+ br: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
1496
+ time: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
1497
+ location: { display_order: 16, child_min_limit: 0, child_max_limit: 99 },
1498
+ number: { display_order: 17, child_min_limit: 0, child_max_limit: 99 },
1499
+ color: { display_order: 18, child_min_limit: 0, child_max_limit: 99 },
1500
+ },
1501
+ },
1502
+ base_text: {
1503
+ kind: "content",
1504
+ category: "content",
1505
+ name: "Base Text",
1506
+ display_order: 11,
1507
+ attributes: {
1508
+ content: { type: "text_literal" },
1509
+ text_color: { type: "color_literal" },
1510
+ },
1511
+ child_elements: {},
1512
+ },
1513
+ span: {
1514
+ kind: "content",
1515
+ category: "content",
1516
+ name: "Span",
1517
+ display_order: 12,
1518
+ attributes: {},
1519
+ child_elements: {},
1520
+ },
1521
+ strong: {
1522
+ kind: "content",
1523
+ category: "content",
1524
+ name: "Strong Text",
1525
+ display_order: 13,
1526
+ attributes: {
1527
+ content: { type: "text_literal" },
1528
+ text_color: { type: "color_literal" },
1529
+ },
1530
+ child_elements: {},
1531
+ },
1532
+ em: {
1533
+ kind: "content",
1534
+ category: "content",
1535
+ name: "Emphasized Text",
1536
+ display_order: 14,
1537
+ attributes: {
1538
+ content: { type: "text_literal" },
1539
+ text_color: { type: "color_literal" },
1540
+ },
1541
+ child_elements: {},
1542
+ },
1543
+ strong_em: {
1544
+ kind: "content",
1545
+ category: "content",
1546
+ name: "Strong Emphasized Text",
1547
+ display_order: 15,
1548
+ attributes: {
1549
+ content: { type: "text_literal" },
1550
+ text_color: { type: "color_literal" },
1551
+ },
1552
+ child_elements: {},
1553
+ },
1554
+ link: {
1555
+ kind: "content",
1556
+ category: "content",
1557
+ name: "Link",
1558
+ display_order: 16,
1559
+ attributes: {
1560
+ href: { type: "text_literal" },
1561
+ display_text: { type: "text_literal" },
1562
+ text_color: { type: "color_literal" },
1563
+ is_show_preview: { type: "boolean_literal" },
1564
+ },
1565
+ child_elements: {
1566
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1567
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1568
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1569
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1570
+ ref: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
1571
+ q: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
1572
+ span: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
1573
+ sub: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
1574
+ sup: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
1575
+ s: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
1576
+ mark: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
1577
+ code_inline: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
1578
+ br: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
1579
+ time: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
1580
+ location: { display_order: 16, child_min_limit: 0, child_max_limit: 99 },
1581
+ number: { display_order: 17, child_min_limit: 0, child_max_limit: 99 },
1582
+ color: { display_order: 18, child_min_limit: 0, child_max_limit: 99 },
1583
+ },
1584
+ },
1585
+ q: {
1586
+ kind: "content",
1587
+ category: "content",
1588
+ name: "Quotation",
1589
+ display_order: 17,
1590
+ attributes: {
1591
+ href: { type: "text_literal" },
1592
+ content: { type: "text_literal" },
1593
+ text_color: { type: "color_literal" },
1594
+ },
1595
+ child_elements: {},
1596
+ },
1597
+ mark: {
1598
+ kind: "content",
1599
+ category: "content",
1600
+ name: "Mark",
1601
+ display_order: 18,
1602
+ attributes: {},
1603
+ child_elements: {
1604
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1605
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1606
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1607
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1608
+ link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
1609
+ ref: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
1610
+ q: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
1611
+ span: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
1612
+ code_inline: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
1613
+ sub: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
1614
+ sup: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
1615
+ s: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
1616
+ },
1617
+ },
1618
+ s: {
1619
+ kind: "content",
1620
+ category: "content",
1621
+ name: "Strikethrough",
1622
+ display_order: 19,
1623
+ attributes: {},
1624
+ child_elements: {
1625
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1626
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1627
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1628
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1629
+ link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
1630
+ q: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
1631
+ span: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
1632
+ code_inline: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
1633
+ sub: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
1634
+ sup: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
1635
+ },
1636
+ },
1637
+ blockquote: {
1638
+ kind: "content",
1639
+ category: "content",
1640
+ name: "Blockquote",
1641
+ display_order: 20,
1642
+ attributes: {
1643
+ cite: { type: "text_literal", display_name: "cite", default_value: null, display_order: 0 },
1644
+ },
1645
+ child_elements: {
1646
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1647
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1648
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1649
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1650
+ link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
1651
+ ref: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
1652
+ q: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
1653
+ span: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
1654
+ sub: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
1655
+ sup: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
1656
+ s: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
1657
+ mark: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
1658
+ p: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
1659
+ ul: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
1660
+ ol: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
1661
+ code_inline: { display_order: 16, child_min_limit: 0, child_max_limit: 9 },
1662
+ },
1663
+ },
1664
+ ul: {
1665
+ kind: "content",
1666
+ category: "content",
1667
+ name: "Unordered List",
1668
+ display_order: 21,
1669
+ attributes: {},
1670
+ child_elements: {
1671
+ li: { display_order: 1, child_min_limit: 1, child_max_limit: 999 },
1672
+ },
1673
+ },
1674
+ ol: {
1675
+ kind: "content",
1676
+ category: "content",
1677
+ name: "Ordered List",
1678
+ display_order: 22,
1679
+ attributes: {},
1680
+ child_elements: {
1681
+ li: { display_order: 1, child_min_limit: 1, child_max_limit: 999 },
1682
+ },
1683
+ },
1684
+ li: {
1685
+ kind: "content",
1686
+ category: "content",
1687
+ name: "List Item",
1688
+ display_order: 23,
1689
+ attributes: {},
1690
+ child_elements: {
1691
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1692
+ em: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1693
+ strong: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1694
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1695
+ link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
1696
+ image: { display_order: 6, child_min_limit: 0, child_max_limit: 9 },
1697
+ audio: { display_order: 6, child_min_limit: 0, child_max_limit: 9 },
1698
+ br: { display_order: 7, child_min_limit: 0, child_max_limit: 9 },
1699
+ q: { display_order: 8, child_min_limit: 0, child_max_limit: 9 },
1700
+ s: { display_order: 9, child_min_limit: 0, child_max_limit: 9 },
1701
+ mark: { display_order: 10, child_min_limit: 0, child_max_limit: 9 },
1702
+ span: { display_order: 11, child_min_limit: 0, child_max_limit: 9 },
1703
+ code_inline: { display_order: 12, child_min_limit: 0, child_max_limit: 9 },
1704
+ time: { display_order: 13, child_min_limit: 0, child_max_limit: 9 },
1705
+ location: { display_order: 14, child_min_limit: 0, child_max_limit: 9 },
1706
+ ...main_child_element_options, // tbd
1707
+ },
1708
+ },
1709
+ figure: {
1710
+ kind: "content",
1711
+ category: "content",
1712
+ name: "Figure",
1713
+ display_order: 24,
1714
+ attributes: {
1715
+ caption: { type: "text_literal" },
1716
+ },
1717
+ child_elements: {
1718
+ picture: { display_order: 1, child_min_limit: 0, child_max_limit: 1 },
1719
+ video: { display_order: 2, child_min_limit: 0, child_max_limit: 1 },
1720
+ audio: { display_order: 3, child_min_limit: 0, child_max_limit: 1 },
1721
+ blockquote: { display_order: 4, child_min_limit: 0, child_max_limit: 1 },
1722
+ },
1723
+ },
1724
+ picture: {
1725
+ kind: "content",
1726
+ category: "content",
1727
+ name: "Picture",
1728
+ display_order: 25,
1729
+ attributes: {},
1730
+ child_elements: {
1731
+ source: { display_order: 1, child_min_limit: 1, child_max_limit: 9 },
1732
+ },
1733
+ },
1734
+ source: {
1735
+ kind: "content",
1736
+ category: "content",
1737
+ name: "Source",
1738
+ display_order: 26,
1739
+ attributes: {
1740
+ alt: { type: "text_literal" },
1741
+ name: { type: "text_literal" },
1742
+ width: { type: "int_literal" },
1743
+ height: { type: "int_literal" },
1744
+ file_type: { type: "text_literal" },
1745
+ storage_id: { type: "text_literal" },
1746
+ aspect_ratio: { type: "float_literal" },
1747
+ },
1748
+ child_elements: {},
1749
+ },
1750
+ image: {
1751
+ kind: "content",
1752
+ category: "content",
1753
+ name: "Image",
1754
+ display_order: 27,
1755
+ attributes: {
1756
+ alt: { type: "text_literal" },
1757
+ name: { type: "text_literal" },
1758
+ width: { type: "int_literal" },
1759
+ height: { type: "int_literal" },
1760
+ mime_type: { type: "text_literal" },
1761
+ storage_id: { type: "text_literal" },
1762
+ aspect_ratio: { type: "float_literal" },
1763
+ is_storage_id_public: { type: "boolean_literal" },
1764
+ src: { type: "text_literal" },
1765
+ src_quick: { type: "text_literal" },
1766
+ display_max_height: { type: "int_literal" },
1767
+ display_max_width: { type: "int_literal" },
1768
+ border_radius: { type: "float_literal" },
1769
+ bg_img_blur: { type: "float_literal" },
1770
+ bg_img_opacity: { type: "float_literal" },
1771
+ },
1772
+ child_elements: {},
1773
+ },
1774
+ audio: {
1775
+ kind: "content",
1776
+ category: "content",
1777
+ name: "Audio",
1778
+ display_order: 29,
1779
+ attributes: {
1780
+ ui_type: { type: "text_literal" },
1781
+ storage_id: { type: "text_literal" },
1782
+ is_storage_id_public: { type: "boolean_literal" },
1783
+ src: { type: "text_literal" },
1784
+ mime_type: { type: "text_literal" },
1785
+ title: { type: "text_literal" },
1786
+ album: { type: "text_literal" },
1787
+ artist: { type: "text_literal" },
1788
+ image_storage_id: { type: "text_literal" },
1789
+ image_is_storage_id_public: { type: "boolean_literal" },
1790
+ image_src: { type: "text_literal" },
1791
+ image_src_quick: { type: "text_literal" },
1792
+ image_mime_type: { type: "text_literal" },
1793
+ image_width: { type: "int_literal" },
1794
+ image_height: { type: "int_literal" },
1795
+ image_aspect_ratio: { type: "float_literal" },
1796
+ },
1797
+ child_elements: {},
1798
+ },
1799
+ video: {
1800
+ // tbd
1801
+ kind: "content",
1802
+ category: "content",
1803
+ name: "Video",
1804
+ display_order: 28,
1805
+ attributes: {},
1806
+ child_elements: {},
1807
+ },
1808
+ qr: {
1809
+ kind: "content",
1810
+ category: "content",
1811
+ name: "QR",
1812
+ display_order: 29,
1813
+ attributes: {
1814
+ margin: {
1815
+ type: "int_literal",
1816
+ minimum: 0,
1817
+ maximum: 50,
1818
+ default: 10,
1819
+ },
1820
+ size: {
1821
+ type: "int_literal",
1822
+ minimum: 50,
1823
+ maximum: 500,
1824
+ default: 200,
1825
+ },
1826
+ image_size: {
1827
+ type: "float_literal",
1828
+ minimum: 0.1,
1829
+ maximum: 1,
1830
+ default: 0.5,
1831
+ },
1832
+ type_number: {
1833
+ type: "int_literal",
1834
+ minimum: 0,
1835
+ maximum: 4,
1836
+ default: 0,
1837
+ },
1838
+ error_correction_level: {
1839
+ type: "text_literal",
1840
+ enum: ["L", "M", "Q", "H"],
1841
+ default: "M",
1842
+ },
1843
+ color: { type: "color_literal", default: "var(--primary-t)" },
1844
+ corner_color: {
1845
+ type: "color_literal",
1846
+ default: "color-mix(in oklab, var(--primary-t), var(--bg) 20%)",
1847
+ },
1848
+ background_color: {
1849
+ type: "color_literal",
1850
+ default: "var(--shadow1-t)",
1851
+ },
1852
+ border_color: {
1853
+ type: "color_literal",
1854
+ default: "var(--shadow7-t)",
1855
+ },
1856
+ border_radius: {
1857
+ type: "int_literal",
1858
+ minimum: 0,
1859
+ maximum: 10,
1860
+ default: 5,
1861
+ },
1862
+ border_width: {
1863
+ type: "int_literal",
1864
+ minimum: 0,
1865
+ maximum: 3,
1866
+ default: 5,
1867
+ },
1868
+ data: { type: "text_literal" },
1869
+ image: {
1870
+ type: "image_literal",
1871
+ },
1872
+ extension: {
1873
+ type: "text_literal",
1874
+ enum: ["svg", "png", "jpeg"],
1875
+ default: "svg",
1876
+ },
1877
+ quality: {
1878
+ type: "float_literal",
1879
+ minimum: 0,
1880
+ maximum: 1,
1881
+ default: 0.8,
1882
+ },
1883
+ },
1884
+ child_elements: {},
1885
+ },
1886
+ table: {
1887
+ kind: "content",
1888
+ category: "content",
1889
+ name: "Table",
1890
+ display_order: 30,
1891
+ attributes: {
1892
+ caption: { type: "text_literal" },
1893
+ },
1894
+ child_elements: {
1895
+ thead: { display_order: 1, child_min_limit: 1, child_max_limit: 1 },
1896
+ tbody: { display_order: 2, child_min_limit: 1, child_max_limit: 1 },
1897
+ tfoot: { display_order: 3, child_min_limit: 0, child_max_limit: 1 },
1898
+ },
1899
+ },
1900
+ thead: {
1901
+ kind: "content",
1902
+ category: "content",
1903
+ name: "Table Header",
1904
+ display_order: 31,
1905
+ attributes: {},
1906
+ child_elements: {
1907
+ tr: { display_order: 1, child_min_limit: 1, child_max_limit: 1 },
1908
+ },
1909
+ },
1910
+ tbody: {
1911
+ kind: "content",
1912
+ category: "content",
1913
+ name: "Table Body",
1914
+ display_order: 32,
1915
+ attributes: {},
1916
+ child_elements: {
1917
+ tr: { display_order: 1, child_min_limit: 1, child_max_limit: 999 },
1918
+ },
1919
+ },
1920
+ tfoot: {
1921
+ kind: "content",
1922
+ category: "content",
1923
+ name: "Table Footer",
1924
+ display_order: 33,
1925
+ attributes: {},
1926
+ child_elements: {
1927
+ tr: { display_order: 1, child_min_limit: 0, child_max_limit: 1 },
1928
+ },
1929
+ },
1930
+ tr: {
1931
+ kind: "content",
1932
+ category: "content",
1933
+ name: "Table Row",
1934
+ display_order: 34,
1935
+ attributes: {},
1936
+ child_elements: {
1937
+ th: { display_order: 1, child_min_limit: 1, child_max_limit: 999 },
1938
+ td: { display_order: 2, child_min_limit: 1, child_max_limit: 999 },
1939
+ },
1940
+ },
1941
+ th: {
1942
+ kind: "content",
1943
+ category: "content",
1944
+ name: "Table Head Cell",
1945
+ display_order: 35,
1946
+ attributes: {},
1947
+ child_elements: {
1948
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1949
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1950
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1951
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1952
+ },
1953
+ },
1954
+ td: {
1955
+ kind: "content",
1956
+ category: "content",
1957
+ name: "Table Body Cell",
1958
+ display_order: 36,
1959
+ attributes: {},
1960
+ child_elements: {
1961
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
1962
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
1963
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
1964
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
1965
+ link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
1966
+ ref: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
1967
+ q: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
1968
+ span: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
1969
+ br: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
1970
+ sub: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
1971
+ sup: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
1972
+ s: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
1973
+ mark: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
1974
+ p: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
1975
+ ul: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
1976
+ ol: { display_order: 16, child_min_limit: 0, child_max_limit: 99 },
1977
+ code_inline: { display_order: 17, child_min_limit: 0, child_max_limit: 99 },
1978
+ code: { display_order: 18, child_min_limit: 0, child_max_limit: 99 },
1979
+ figure: { display_order: 19, child_min_limit: 0, child_max_limit: 99 },
1980
+ image: { display_order: 20, child_min_limit: 0, child_max_limit: 99 },
1981
+ time: { display_order: 21, child_min_limit: 0, child_max_limit: 99 },
1982
+ location: { display_order: 22, child_min_limit: 0, child_max_limit: 99 },
1983
+ },
1984
+ },
1985
+ nav: {
1986
+ kind: "content",
1987
+ category: "content",
1988
+ name: "Navigation",
1989
+ display_order: 37,
1990
+ attributes: {},
1991
+ child_elements: {},
1992
+ },
1993
+ code: {
1994
+ kind: "content",
1995
+ category: "content",
1996
+ name: "Code Block",
1997
+ display_order: 38,
1998
+ attributes: {
1999
+ content: { type: "text_literal" },
2000
+ language: { type: "text_literal" },
2001
+ },
2002
+ child_elements: {},
2003
+ },
2004
+ code_inline: {
2005
+ kind: "content",
2006
+ category: "content",
2007
+ name: "Code Inline",
2008
+ display_order: 39,
2009
+ attributes: {
2010
+ content: { type: "text_literal" },
2011
+ color: { type: "color_literal" },
2012
+ },
2013
+ child_elements: {},
2014
+ },
2015
+ br: {
2016
+ kind: "content",
2017
+ category: "content",
2018
+ name: "Line Break",
2019
+ display_order: 40,
2020
+ attributes: {},
2021
+ child_elements: {},
2022
+ },
2023
+ spacer: {
2024
+ kind: "content",
2025
+ category: "content",
2026
+ name: "Spacer",
2027
+ display_order: 40,
2028
+ attributes: {
2029
+ mt: { type: "float_literal" },
2030
+ mb: { type: "float_literal" },
2031
+ ml: { type: "float_literal" },
2032
+ mr: { type: "float_literal" },
2033
+ is_vert: { type: "boolean_literal" },
2034
+ color: { type: "color_literal" },
2035
+ },
2036
+ child_elements: {},
2037
+ },
2038
+ hr: {
2039
+ kind: "content",
2040
+ category: "content",
2041
+ name: "Horizontal Rule",
2042
+ display_order: 41,
2043
+ attributes: {},
2044
+ child_elements: {},
2045
+ },
2046
+ sub: {
2047
+ kind: "content",
2048
+ category: "content",
2049
+ name: "Subscript",
2050
+ display_order: 42,
2051
+ attributes: {},
2052
+ child_elements: {
2053
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
2054
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
2055
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
2056
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
2057
+ link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
2058
+ q: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
2059
+ span: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
2060
+ s: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
2061
+ mark: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
2062
+ },
2063
+ },
2064
+ sup: {
2065
+ kind: "content",
2066
+ category: "content",
2067
+ name: "Superscript",
2068
+ display_order: 43,
2069
+ attributes: {},
2070
+ child_elements: {
2071
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
2072
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
2073
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
2074
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
2075
+ link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
2076
+ q: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
2077
+ span: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
2078
+ s: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
2079
+ mark: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
2080
+ },
2081
+ },
2082
+ pre: {
2083
+ kind: "content",
2084
+ category: "content",
2085
+ name: "Preformatted Text",
2086
+ display_order: 44,
2087
+ attributes: {},
2088
+ child_elements: {},
2089
+ },
2090
+ ref: {
2091
+ kind: "content",
2092
+ category: "content",
2093
+ name: "Reference",
2094
+ display_order: 45,
2095
+ attributes: {
2096
+ href: { type: "text_literal" },
2097
+ content: { type: "text_literal" },
2098
+ text_color: { type: "color_literal" },
2099
+ },
2100
+ child_elements: {},
2101
+ },
2102
+ footer: {
2103
+ kind: "content",
2104
+ category: "content",
2105
+ name: "Footer",
2106
+ display_order: 46,
2107
+ attributes: {},
2108
+ child_elements: {
2109
+ ol: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
2110
+ ul: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
2111
+ p: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
2112
+ h4: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
2113
+ h5: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
2114
+ h6: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
2115
+ },
2116
+ },
2117
+ youtube_video: {
2118
+ kind: "content",
2119
+ category: "content",
2120
+ name: "YouTube Video",
2121
+ display_order: 47,
2122
+ attributes: {
2123
+ id: { type: "text_literal" },
2124
+ video_id: { type: "text_literal" },
2125
+ is_dark_theme: { type: "boolean_literal" },
2126
+ },
2127
+ child_elements: {},
2128
+ },
2129
+ x_post: {
2130
+ kind: "content",
2131
+ category: "content",
2132
+ name: "X Post",
2133
+ display_order: 48,
2134
+ attributes: {
2135
+ post_id: { type: "text_literal" },
2136
+ },
2137
+ child_elements: {},
2138
+ },
2139
+ table_advanced: {
2140
+ kind: "content",
2141
+ category: "content",
2142
+ name: "Table Advanced",
2143
+ display_order: 51,
2144
+ attributes: {
2145
+ // obviously this is way off just pasted in to start
2146
+ columns: {
2147
+ type: "object",
2148
+ properties: {
2149
+ id: { type: "text_literal" },
2150
+ description: { type: "text_literal" },
2151
+ header_content: { type: "text_literal" },
2152
+ body_content: { type: "text_literal" },
2153
+ is_shown: { type: "text_literal" },
2154
+ is_fixed: { type: "text_literal" },
2155
+ alignment: { type: "text_literal" },
2156
+ min_width: { type: "text_literal" },
2157
+ max_width: { type: "text_literal" },
2158
+ display_order: { type: "text_literal" },
2159
+ is_use_in_short_display: { type: "boolean_literal" },
2160
+ is_autogenerated: { type: "boolean_literal" },
2161
+ is_updatable: { type: "boolean_literal" },
2162
+ is_db_column: { type: "boolean_literal" },
2163
+ db_data_type: { type: "text_literal" },
2164
+ postgres_type: { type: "text_literal" },
2165
+ default_value: { type: "text_literal" },
2166
+ quick_sort_variable_path: { type: "text_literal" },
2167
+ is_primary_key: { type: "boolean_literal" },
2168
+ is_nullable: { type: "boolean_literal" },
2169
+ is_force_uniqueness: { type: "boolean_literal" },
2170
+ foreign_table_id: { type: "text_literal" },
2171
+ is_cascade: { type: "text_literal" },
2172
+ },
2173
+ additionalProperties: false,
2174
+ required: [],
2175
+ },
2176
+ rows_data_from_variable_path: { type: "text_literal" },
2177
+ is_data_editable: { type: "text_literal" },
2178
+ is_paginate: { type: "text_literal" },
2179
+ nav_items: { type: "text_literal" },
2180
+ sort_by: { type: "text_literal" },
2181
+ filter: { type: "text_literal" },
2182
+ row_searchable_content: { type: "text_literal" },
2183
+ row_input_content: { type: "text_literal" },
2184
+ table_header_max_height: { type: "text_literal" },
2185
+ table_row_max_height: { type: "text_literal" },
2186
+ },
2187
+ child_elements: {},
2188
+ },
2189
+ number: {
2190
+ kind: "content",
2191
+ category: "content",
2192
+ name: "Number",
2193
+ display_order: 51,
2194
+ attributes: {
2195
+ val: { type: ["float_literal", "int_literal", "bigint_literal"] },
2196
+ },
2197
+ child_elements: {},
2198
+ },
2199
+ color: {
2200
+ kind: "content",
2201
+ category: "content",
2202
+ name: "Color",
2203
+ display_order: 52,
2204
+ attributes: {
2205
+ val: { type: "color_literal" },
2206
+ },
2207
+ child_elements: {},
2208
+ },
2209
+ json: {
2210
+ kind: "content",
2211
+ category: "content",
2212
+ name: "JSON",
2213
+ display_order: 53,
2214
+ attributes: {
2215
+ is_show_buttons: { type: "boolean_literal" },
2216
+ val: { type: "json_literal" },
2217
+ },
2218
+ child_elements: {},
2219
+ },
2220
+ email_address: {
2221
+ kind: "content",
2222
+ category: "content",
2223
+ name: "Email Address",
2224
+ attributes: {
2225
+ is_full: { type: "boolean_literal" },
2226
+ is_show_copy_to_clipboard: { type: "boolean_literal" },
2227
+ is_show_mail_to: { type: "boolean_literal", default: false },
2228
+ },
2229
+ },
2230
+ email_address_input: {
2231
+ kind: "content",
2232
+ category: "content",
2233
+ name: "Email Address Input",
2234
+ attributes: {
2235
+ placeholder: { type: "text_literal" },
2236
+ maximum_length: { type: "int_literal" },
2237
+ },
2238
+ },
2239
+ phone: {
2240
+ kind: "content",
2241
+ category: "content",
2242
+ name: "Phone",
2243
+ attributes: {
2244
+ is_full: { type: "boolean_literal" },
2245
+ is_show_country_code: { type: "boolean_literal", default: true },
2246
+ is_show_call_button: { type: "boolean_literal", default: true },
2247
+ is_show_local: { type: "boolean_literal", default: true },
2248
+ is_show_main_number: { type: "boolean_literal", default: true },
2249
+ is_show_type: { type: "boolean_literal", default: true },
2250
+ },
2251
+ },
2252
+ phone_input: {
2253
+ kind: "content",
2254
+ category: "content",
2255
+ name: "Phone",
2256
+ attributes: {
2257
+ placeholder: { type: "text_literal" },
2258
+ },
2259
+ },
2260
+ time_input: {
2261
+ kind: "content",
2262
+ category: "content",
2263
+ name: "Time Input",
2264
+ attributes: {
2265
+ val_from_variable_path: {
2266
+ type: "variable_path_literal",
2267
+ allowed_types: ["time_literal"],
2268
+ },
2269
+ granularity: {
2270
+ type: "text_literal",
2271
+ enum: ["year", "month", "week", "day", "hour", "minute", "second"],
2272
+ default: "day",
2273
+ },
2274
+ },
2275
+ },
2276
+ time: {
2277
+ kind: "content",
2278
+ category: "content",
2279
+ name: "Time",
2280
+ display_order: 49,
2281
+ attributes: {
2282
+ hour: { type: "int_literal" },
2283
+ year: { type: "int_literal" },
2284
+ color: { type: "color_literal" },
2285
+ epoch: { type: "bigint_literal" },
2286
+ month: { type: "int_literal" },
2287
+ minute: { type: "int_literal" },
2288
+ second: { type: "int_literal" },
2289
+ content: { type: "text_literal" },
2290
+ datetime: { type: "text_literal" },
2291
+ timezone: { type: "text_literal" },
2292
+ day_of_week: { type: "int_literal" },
2293
+ day_of_year: { type: "int_literal" },
2294
+ granularity: { type: "text_literal" },
2295
+ day_of_month: { type: "int_literal" },
2296
+ week_of_year: { type: "int_literal" },
2297
+ },
2298
+ child_elements: {},
2299
+ },
2300
+ phone_number: {
2301
+ kind: "content",
2302
+ category: "content",
2303
+ name: "Phone Number",
2304
+ display_order: 50,
2305
+ attributes: {
2306
+ tbd: { type: "text_literal" },
2307
+ },
2308
+ child_elements: {},
2309
+ },
2310
+ phone_number_input: {
2311
+ kind: "content",
2312
+ category: "content",
2313
+ name: "Phone Number",
2314
+ display_order: 50,
2315
+ attributes: {
2316
+ tbd: { type: "text_literal" },
2317
+ },
2318
+ child_elements: {},
2319
+ },
2320
+ file: {
2321
+ kind: "content",
2322
+ category: "content",
2323
+ name: "File",
2324
+ attributes: {},
2325
+ },
2326
+ boolean_icon: {
2327
+ kind: "content",
2328
+ category: "content",
2329
+ name: "Boolean Icon",
2330
+ attributes: {
2331
+ true_icon: {
2332
+ type: "icon_literal",
2333
+ default: "x",
2334
+ // enum: icon_ids
2335
+ },
2336
+ false_icon: {
2337
+ type: "icon_literal",
2338
+ default: "check",
2339
+ // enum: icon_ids
2340
+ },
2341
+ },
2342
+ },
2343
+ tag: {
2344
+ kind: "content",
2345
+ category: "content",
2346
+ name: "Tag",
2347
+ attributes: {
2348
+ // custom options input
2349
+ options: {
2350
+ type: "array_uniform_literal",
2351
+ // items: { anyOf }
2352
+ },
2353
+ },
2354
+ },
2355
+ // foreign_key: {
2356
+ // kind: "content",
2357
+ // category: "content",
2358
+ // name: "Foreign Key",
2359
+ // attributes: {},
2360
+ // },
2361
+ variable_path_input: {
2362
+ kind: "content",
2363
+ category: "content",
2364
+ name: "Variable Path Input",
2365
+ attributes: {},
2366
+ },
2367
+ number_input: {
2368
+ kind: "content",
2369
+ category: "content",
2370
+ name: "Number Input",
2371
+ attributes: {
2372
+ label: { type: "text_literal" },
2373
+ placeholder: { type: "text_literal" },
2374
+ val_from_variable_path: {
2375
+ type: "variable_path_literal",
2376
+ allowed_types: ["int_literal", "float_literal", "bigint_literal"],
2377
+ },
2378
+ },
2379
+ },
2380
+ text_input: {
2381
+ kind: "content",
2382
+ category: "content",
2383
+ name: "Text Input",
2384
+ attributes: {
2385
+ val_from_variable_path: {
2386
+ type: "variable_path_literal",
2387
+ allowed_types: ["text_literal"],
2388
+ },
2389
+ label: { type: "text_literal" },
2390
+ placeholder: { type: "text_literal" },
2391
+ maximum_length: { type: "int_literal" },
2392
+ is_text_hidable: { type: "boolean_literal", default: false },
2393
+ is_text_hidden: { type: "boolean_literal", default: false },
2394
+ },
2395
+ },
2396
+ slider: {
2397
+ kind: "content",
2398
+ category: "content",
2399
+ name: "Slider",
2400
+ attributes: {
2401
+ val_from_variable_path: {
2402
+ type: "variable_path_literal",
2403
+ allowed_types: ["int_literal", "float_literal", "bigint_literal"],
2404
+ },
2405
+ label: { type: "text_literal" },
2406
+ is_nullable: { type: "boolean_literal", default: false },
2407
+ minimum: { type: "int_literal", default: 0 },
2408
+ maximum: { type: "int_literal", default: 10 },
2409
+ step: { type: "float_literal", default: 1 },
2410
+ color: { type: "color_literal" },
2411
+ is_short: { type: "boolean_literal", default: false },
2412
+ step: { type: "int_literal", default: 1 },
2413
+ },
2414
+ },
2415
+ checkbox: {
2416
+ kind: "content",
2417
+ category: "content",
2418
+ name: "Checkbox",
2419
+ attributes: {
2420
+ val_from_variable_path: {
2421
+ type: "variable_path_literal",
2422
+ allowed_types: ["boolean_literal"],
2423
+ },
2424
+ label: { type: "text_literal" },
2425
+ size: { type: "float_literal", default: 2.4 },
2426
+ type: {
2427
+ type: "text_literal",
2428
+ default: "checkbox",
2429
+ enum: ["checkbox", "toggle"],
2430
+ },
2431
+ label: { type: "text_literal" },
2432
+ name: { type: "text_literal" },
2433
+ color: { type: "color_literal" },
2434
+ // on_val
2435
+ // off_val
2436
+ },
2437
+ },
2438
+ arrow_toggle_input: {
2439
+ kind: "content",
2440
+ category: "content",
2441
+ name: "Arrow Toggle",
2442
+ },
2443
+ icon_input: {
2444
+ kind: "content",
2445
+ category: "content",
2446
+ name: "Icon Input",
2447
+ attributes: {
2448
+ tbd: { type: "text_literal" },
2449
+ },
2450
+ },
2451
+ icon: {
2452
+ kind: "content",
2453
+ category: "content",
2454
+ name: "Icon",
2455
+ display_order: 50,
2456
+ attributes: {
2457
+ icon_id: { type: "text_literal" },
2458
+ color: { type: "color_literal" },
2459
+ },
2460
+ child_elements: {},
2461
+ },
2462
+ cron_input: {
2463
+ kind: "content",
2464
+ category: "content",
2465
+ name: "Cron",
2466
+ attributes: {
2467
+ tbd: { type: "text_literal" },
2468
+ },
2469
+ },
2470
+ cron: {
2471
+ kind: "content",
2472
+ category: "content",
2473
+ name: "Cron",
2474
+ attributes: {
2475
+ tbd: { type: "text_literal" },
2476
+ },
2477
+ },
2478
+ file_input: {
2479
+ kind: "content",
2480
+ category: "content",
2481
+ name: "File Picker",
2482
+ attributes: {
2483
+ accept: {
2484
+ type: "array_uniform_literal",
2485
+ items: {
2486
+ type: "text_literal",
2487
+ // enum: mime_types
2488
+ },
2489
+ },
2490
+ is_multiselect: { type: "boolean_literal", default: false },
2491
+ is_drop_zone: { type: "boolean_literal", default: true },
2492
+ },
2493
+ },
2494
+ color: {
2495
+ kind: "content",
2496
+ category: "content",
2497
+ name: "Color",
2498
+ display_order: 52,
2499
+ attributes: {
2500
+ val: { type: "color_literal" },
2501
+ },
2502
+ child_elements: {},
2503
+ },
2504
+ dropdown: {
2505
+ kind: "content",
2506
+ category: "content",
2507
+ name: "Dropdown",
2508
+ attributes: {
2509
+ options: {
2510
+ json_schema: {
2511
+ type: "array",
2512
+ items: {
2513
+ type: "object",
2514
+ properties: {
2515
+ key: {
2516
+ anyOf: [{ type: "string" }, { type: "number" }],
2517
+ },
2518
+ name: {
2519
+ type: "string",
2520
+ },
2521
+ },
2522
+ required: ["key", "name"],
2523
+ additionalProperties: false,
2524
+ },
2525
+ },
2526
+ },
2527
+ },
2528
+ },
2529
+ color_input: {
2530
+ kind: "content",
2531
+ category: "content",
2532
+ name: "Color Input",
2533
+ attributes: {
2534
+ val_from_variable_path: {
2535
+ type: "variable_path_literal",
2536
+ allowed_types: ["color_literal"],
2537
+ },
2538
+ is_show_opacity: { type: "boolean_literal", default: true },
2539
+ h_options: {
2540
+ type: "array_uniform_literal",
2541
+ items: {
2542
+ type: "int_literal",
2543
+ enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24],
2544
+ },
2545
+ },
2546
+ l_options: {
2547
+ type: "array_uniform_literal",
2548
+ items: {
2549
+ type: "int_literal",
2550
+ enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24],
2551
+ },
2552
+ },
2553
+ c_options: {
2554
+ type: "array_uniform_literal",
2555
+ items: {
2556
+ type: "int_literal",
2557
+ enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24],
2558
+ },
2559
+ },
2560
+ o_options: {
2561
+ type: "array_uniform_literal",
2562
+ items: {
2563
+ type: "int_literal",
2564
+ enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24],
2565
+ },
2566
+ },
2567
+ },
2568
+ },
2569
+ location_input: {
2570
+ kind: "content",
2571
+ category: "content",
2572
+ name: "Location Input",
2573
+ attributes: {
2574
+ val_from_variable_path: {
2575
+ type: "variable_path_literal",
2576
+ allowed_types: ["location_literal"],
2577
+ },
2578
+ is_show_opacity: { type: "boolean_literal", default: true },
2579
+ },
2580
+ },
2581
+ location: {
2582
+ kind: "content",
2583
+ category: "content",
2584
+ name: "Location",
2585
+ attributes: {
2586
+ // val_from_variable_path: {
2587
+ // type: "variable_path_literal",
2588
+ // allowed_types: ["location_literal"],
2589
+ // },
2590
+ val: { type: "location_literal" },
2591
+ is_popover: { type: "boolean_literal", default: false },
2592
+ is_inline: { type: "boolean_literal", default: false },
2593
+ },
2594
+ },
2595
+ loop: {
2596
+ kind: "content",
2597
+ category: "content",
2598
+ name: "Loop",
2599
+ attributes: {
2600
+ val_from_variable_path: {
2601
+ type: "variable_path_literal",
2602
+ allowed_types: ["array_uniform_literal", "object_uniform_literal"],
2603
+ },
2604
+ iter_identifier: { type: "text_literal" },
2605
+ join_text: { type: "text_literal" },
2606
+ },
2607
+ child_elements: {
2608
+ ...main_child_element_options,
2609
+ },
2610
+ },
2611
+ // function_input: {}, maybe?
2612
+ }
2613
+
2614
+ export const node_types = {
2615
+ ...literal_types,
2616
+ ...content_types,
2617
+ }
2618
+
2619
+ function get_content_node_json_schema(type_id) {
2620
+ //tbd
2621
+ }
2622
+
2480
2623
  function find_match(match_for, value) {
2481
2624
  if (match_for?.type == "operator") {
2482
2625
  if (Array.isArray(match_for?.conditions)) {