sveltekit-ui 1.1.17 → 1.1.19

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.
Files changed (200) hide show
  1. package/dist/Components/Alert/index.svelte +88 -0
  2. package/dist/Components/Alert/index.svelte.js +101 -0
  3. package/dist/Components/ArrowToggle/index.svelte +62 -0
  4. package/dist/Components/Attachment/index.svelte +77 -0
  5. package/dist/Components/Attachment/index.svelte.js +119 -0
  6. package/dist/Components/Audio/index.svelte +193 -0
  7. package/dist/Components/Audio/index.svelte.js +463 -0
  8. package/dist/Components/AudioEditor/index.svelte +252 -0
  9. package/dist/Components/AudioEditor/index.svelte.js +977 -0
  10. package/dist/Components/AudioEditor/samples/alloy-voice-sample.mp3 +0 -0
  11. package/dist/Components/AudioEditor/samples/echo-voice-sample.mp3 +0 -0
  12. package/dist/Components/AudioEditor/samples/fable-voice-sample.mp3 +0 -0
  13. package/dist/Components/AudioEditor/samples/nova-voice-sample.mp3 +0 -0
  14. package/dist/Components/AudioEditor/samples/onyx-voice-sample.mp3 +0 -0
  15. package/dist/Components/AudioEditor/samples/shimmer-voice-sample.mp3 +0 -0
  16. package/dist/Components/AuthCodeInput/index.svelte +85 -0
  17. package/dist/Components/AuthCodeInput/index.svelte.js +95 -0
  18. package/dist/Components/Breadcrumbs/index.svelte +27 -0
  19. package/dist/Components/Breadcrumbs/index.svelte.js +88 -0
  20. package/dist/Components/Button/index.svelte +721 -0
  21. package/dist/Components/Button/index.svelte.js +375 -0
  22. package/dist/Components/Chart/Klines/index.svelte +87 -0
  23. package/dist/Components/Chart/index.svelte +226 -0
  24. package/dist/Components/Chart/index.svelte.js +1099 -0
  25. package/dist/Components/ChartInput/DisplayNav/Klines/index.svelte +150 -0
  26. package/dist/Components/ChartInput/DisplayNav/Lines/index.svelte +45 -0
  27. package/dist/Components/ChartInput/DisplayNav/index.svelte +297 -0
  28. package/dist/Components/ChartInput/EditPanel/index.svelte +155 -0
  29. package/dist/Components/ChartInput/index.svelte +21 -0
  30. package/dist/Components/ChartInput/index.svelte.js +671 -0
  31. package/dist/Components/Checkbox/index.svelte +411 -0
  32. package/dist/Components/Checkbox/index.svelte.js +178 -0
  33. package/dist/Components/Code/index.svelte +23 -0
  34. package/dist/Components/Code/index.svelte.js +33 -0
  35. package/dist/Components/Color/index.svelte +51 -0
  36. package/dist/Components/Color/index.svelte.js +31 -0
  37. package/dist/Components/ColorInput/ChromaPicker/index.svelte +50 -0
  38. package/dist/Components/ColorInput/ColorPalette/index.svelte +62 -0
  39. package/dist/Components/ColorInput/OpacityPicker/index.svelte +68 -0
  40. package/dist/Components/ColorInput/ShowcasePicker/index.svelte +136 -0
  41. package/dist/Components/ColorInput/index.svelte +70 -0
  42. package/dist/Components/ColorInput/index.svelte.js +386 -0
  43. package/dist/Components/ConditionsInput/index.svelte +46 -0
  44. package/dist/Components/ConditionsInput/index.svelte.js +201 -0
  45. package/dist/Components/Confetti/index.svelte +98 -0
  46. package/dist/Components/Confetti/index.svelte.js +94 -0
  47. package/dist/Components/Content/index.svelte +500 -0
  48. package/dist/Components/Content/index.svelte.js +910 -0
  49. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte +31 -0
  50. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte.js +258 -0
  51. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte +31 -0
  52. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte.js +258 -0
  53. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte +58 -0
  54. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte.js +206 -0
  55. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte +28 -0
  56. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte.js +224 -0
  57. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte +44 -0
  58. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte.js +272 -0
  59. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte +41 -0
  60. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte.js +202 -0
  61. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte +19 -0
  62. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte.js +117 -0
  63. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte +60 -0
  64. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte.js +542 -0
  65. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte +47 -0
  66. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte.js +185 -0
  67. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte +35 -0
  68. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte.js +222 -0
  69. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte +20 -0
  70. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte.js +84 -0
  71. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte +25 -0
  72. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte.js +91 -0
  73. package/dist/Components/ContentInput/AttributesInput/index.svelte +352 -0
  74. package/dist/Components/ContentInput/AttributesInput/index.svelte.js +1436 -0
  75. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte +64 -0
  76. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte.js +97 -0
  77. package/dist/Components/ContentInput/ContentPanelBuilder/ElementList/index.svelte +184 -0
  78. package/dist/Components/ContentInput/ContentPanelBuilder/index.svelte +41 -0
  79. package/dist/Components/ContentInput/index.svelte +78 -0
  80. package/dist/Components/ContentInput/index.svelte.js +1197 -0
  81. package/dist/Components/CronInput/index.svelte +78 -0
  82. package/dist/Components/CronInput/index.svelte.js +198 -0
  83. package/dist/Components/DataTypeInput/index.svelte +174 -0
  84. package/dist/Components/DataTypeInput/index.svelte.js +565 -0
  85. package/dist/Components/Dropdown/index.svelte +116 -0
  86. package/dist/Components/Dropdown/index.svelte.js +403 -0
  87. package/dist/Components/EmailAddress/index.svelte +22 -0
  88. package/dist/Components/EmailAddress/index.svelte.js +45 -0
  89. package/dist/Components/ErrorX/index.svelte +58 -0
  90. package/dist/Components/Eye/index.svelte +57 -0
  91. package/dist/Components/FileInput/index.svelte +146 -0
  92. package/dist/Components/FileInput/index.svelte.js +225 -0
  93. package/dist/Components/Hamburger/index.svelte +99 -0
  94. package/dist/Components/HorizScrollBox/index.svelte +145 -0
  95. package/dist/Components/Icon/index.svelte +412 -0
  96. package/dist/Components/Icon/index.svelte.js +116 -0
  97. package/dist/Components/IconInput/index.svelte +77 -0
  98. package/dist/Components/IconInput/index.svelte.js +259 -0
  99. package/dist/Components/Image/index.svelte +126 -0
  100. package/dist/Components/Image/index.svelte.js +116 -0
  101. package/dist/Components/ImageEditor/Image/CropBox/index.svelte +165 -0
  102. package/dist/Components/ImageEditor/Image/index.svelte +104 -0
  103. package/dist/Components/ImageEditor/Panels/AI/index.svelte +44 -0
  104. package/dist/Components/ImageEditor/Panels/Crop/index.svelte +96 -0
  105. package/dist/Components/ImageEditor/Panels/File/QualityPicker/index.svelte +124 -0
  106. package/dist/Components/ImageEditor/Panels/File/index.svelte +74 -0
  107. package/dist/Components/ImageEditor/Panels/Filters/index.svelte +46 -0
  108. package/dist/Components/ImageEditor/Panels/Resize/index.svelte +58 -0
  109. package/dist/Components/ImageEditor/index.svelte +93 -0
  110. package/dist/Components/ImageEditor/index.svelte.js +1961 -0
  111. package/dist/Components/ImageSlider/index.svelte +124 -0
  112. package/dist/Components/ImageSlider/index.svelte.js +99 -0
  113. package/dist/Components/InfoBox/index.svelte +89 -0
  114. package/dist/Components/Json/Nested/index.svelte +157 -0
  115. package/dist/Components/Json/index.svelte +60 -0
  116. package/dist/Components/Json/index.svelte.js +594 -0
  117. package/dist/Components/LabeledItem/index.svelte +102 -0
  118. package/dist/Components/Layout/NavBar/FullNav/index.svelte +52 -0
  119. package/dist/Components/Layout/NavBar/NavGuts/index.svelte +87 -0
  120. package/dist/Components/Layout/NavBar/index.svelte +72 -0
  121. package/dist/Components/Layout/index.svelte +149 -0
  122. package/dist/Components/Layout/index.svelte.js +360 -0
  123. package/dist/Components/Link/index.svelte +47 -0
  124. package/dist/Components/Link/index.svelte.js +136 -0
  125. package/dist/Components/LoadingSuccessDiv/index.svelte +51 -0
  126. package/dist/Components/LoadingWheel/index.svelte +38 -0
  127. package/dist/Components/Location/index.svelte +79 -0
  128. package/dist/Components/Location/index.svelte.js +288 -0
  129. package/dist/Components/LocationInput/index.svelte +197 -0
  130. package/dist/Components/LocationInput/index.svelte.js +965 -0
  131. package/dist/Components/Number/index.svelte +47 -0
  132. package/dist/Components/Number/index.svelte.js +151 -0
  133. package/dist/Components/PhoneCountryCode/index.svelte +7 -0
  134. package/dist/Components/PhoneCountryCode/index.svelte.js +260 -0
  135. package/dist/Components/PhoneNumber/index.svelte +22 -0
  136. package/dist/Components/PhoneNumber/index.svelte.js +41 -0
  137. package/dist/Components/Popover/index.svelte +396 -0
  138. package/dist/Components/Popover/index.svelte.js +319 -0
  139. package/dist/Components/Qr/index.svelte +85 -0
  140. package/dist/Components/Qr/index.svelte.js +301 -0
  141. package/dist/Components/QrInput/index.svelte +47 -0
  142. package/dist/Components/QrInput/index.svelte.js +218 -0
  143. package/dist/Components/Slider/index.svelte +239 -0
  144. package/dist/Components/Slider/index.svelte.js +469 -0
  145. package/dist/Components/Spacer/index.svelte +41 -0
  146. package/dist/Components/StoragePicker/DisplayFile/index.svelte +15 -0
  147. package/dist/Components/StoragePicker/index.svelte +187 -0
  148. package/dist/Components/StoragePicker/index.svelte.js +592 -0
  149. package/dist/Components/SuccessCheck/index.svelte +56 -0
  150. package/dist/Components/TableAdvanced/ColumnInput/index.svelte +117 -0
  151. package/dist/Components/TableAdvanced/ColumnInput/index.svelte.js +456 -0
  152. package/dist/Components/TableAdvanced/FilterInput/index.svelte +54 -0
  153. package/dist/Components/TableAdvanced/FilterInput/index.svelte.js +247 -0
  154. package/dist/Components/TableAdvanced/Pagination/index.svelte +43 -0
  155. package/dist/Components/TableAdvanced/Pagination/index.svelte.js +97 -0
  156. package/dist/Components/TableAdvanced/SortByInput/index.svelte +72 -0
  157. package/dist/Components/TableAdvanced/SortByInput/index.svelte.js +176 -0
  158. package/dist/Components/TableAdvanced/index.svelte +275 -0
  159. package/dist/Components/TableAdvanced/index.svelte.js +1565 -0
  160. package/dist/Components/Tag/index.svelte +45 -0
  161. package/dist/Components/Tag/index.svelte.js +76 -0
  162. package/dist/Components/TextArrayInput/index.svelte +108 -0
  163. package/dist/Components/TextArrayInput/index.svelte.js +239 -0
  164. package/dist/Components/TextInput/PasswordTooltip/index.svelte +89 -0
  165. package/dist/Components/TextInput/index.svelte +223 -0
  166. package/dist/Components/TextInput/index.svelte.js +447 -0
  167. package/dist/Components/Time/index.svelte +7 -0
  168. package/dist/Components/Time/index.svelte.js +38 -0
  169. package/dist/Components/TimeInput/NumberToggler/index.svelte +34 -0
  170. package/dist/Components/TimeInput/NumberToggler/index.svelte.js +79 -0
  171. package/dist/Components/TimeInput/index.js +702 -0
  172. package/dist/Components/TimeInput/index.svelte +211 -0
  173. package/dist/Components/TimeInput/index.svelte.js +638 -0
  174. package/dist/Components/Tooltip/index.svelte +143 -0
  175. package/dist/Components/TransparentBackground/index.svelte +153 -0
  176. package/dist/Components/TypingDots/index.svelte +84 -0
  177. package/dist/Components/VariablePathInput/index.svelte +63 -0
  178. package/dist/Components/VariablePathInput/index.svelte.js +273 -0
  179. package/dist/Components/VideoTBD/index.svelte +100 -0
  180. package/dist/Components/XFollow/index.svelte +42 -0
  181. package/dist/Components/XPost/index.svelte +52 -0
  182. package/dist/Components/XPost/index.svelte.js +64 -0
  183. package/dist/Components/YoutubeChannelButton/index.svelte +82 -0
  184. package/dist/Components/YoutubeVideo/index.svelte +73 -0
  185. package/dist/Components/YoutubeVideo/index.svelte.js +54 -0
  186. package/dist/actions/draggable.js +49 -0
  187. package/dist/actions/index.js +24 -0
  188. package/dist/actions/no_spaces.js +33 -0
  189. package/dist/actions/numbers_only.js +26 -0
  190. package/dist/actions/scroll_y.js +28 -0
  191. package/dist/actions/stop_scroll_propagation_y.js +42 -0
  192. package/dist/actions/swipe_handler.js +295 -0
  193. package/dist/client/astc_formatting/index.js +1128 -0
  194. package/dist/client/docs/index.js +7622 -0
  195. package/dist/client/index.js +735 -0
  196. package/dist/client/types/index.js +2812 -0
  197. package/dist/index.js +180 -0
  198. package/dist/style.css +682 -0
  199. package/package.json +2 -2
  200. package/src/lib/Components/Chart/index.svelte.js +11 -2
@@ -0,0 +1,2812 @@
1
+ import { time_formats } from "../../Components/TimeInput/index.js"
2
+
3
+ export const mime_type_extensions = {
4
+ "image/webp": "webp",
5
+ "image/jpeg": "jpeg",
6
+ "image/png": "png",
7
+ "image/gif": "gif",
8
+ "image/bmp": "bmp",
9
+ "image/tiff": "tiff",
10
+ "image/heic": "heic",
11
+ "image/svg+xml": "svg",
12
+ "audio/mpeg": "mp3",
13
+ "audio/wav": "wav",
14
+ "audio/ogg": "ogg",
15
+ "audio/aac": "aac",
16
+ "audio/webm": "webm",
17
+ "audio/flac": "flac",
18
+ "audio/x-aiff": "aif",
19
+ "video/mp4": "mp4",
20
+ "video/webm": "webm",
21
+ "video/ogg": "ogv",
22
+ "video/x-msvideo": "avi",
23
+ "video/x-ms-wmv": "wmv",
24
+ "video/mpeg": "mpeg",
25
+ "video/quicktime": "mov",
26
+ "application/json": "json",
27
+ "application/javascript": "js",
28
+ "application/xml": "xml",
29
+ "application/pdf": "pdf",
30
+ "application/msword": "doc",
31
+ "application/vnd.ms-excel": "xls",
32
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "xlsx",
33
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document": "docx",
34
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation": "pptx",
35
+ "text/plain": "txt",
36
+ "text/html": "html",
37
+ "text/css": "css",
38
+ "text/csv": "csv",
39
+ "text/tab-separated-values": "tsv",
40
+ "text/markdown": "md",
41
+ }
42
+
43
+ export const acceptable_storage_mime_types = [
44
+ "image/webp",
45
+ "image/jpeg",
46
+ "image/png",
47
+ "image/gif",
48
+ "image/svg+xml",
49
+ "audio/mpeg",
50
+ "audio/wav",
51
+ "audio/ogg",
52
+ "audio/aac",
53
+ "audio/webm",
54
+ "audio/flac",
55
+ "video/mp4",
56
+ "video/webm",
57
+ "video/ogg",
58
+ "video/x-msvideo",
59
+ "video/mpeg",
60
+ "video/quicktime",
61
+ "application/json",
62
+ "application/javascript",
63
+ "application/xml",
64
+ "application/pdf",
65
+ "application/msword",
66
+ "application/vnd.ms-excel",
67
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
68
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
69
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation",
70
+ "text/plain",
71
+ "text/html",
72
+ "text/css",
73
+ "text/csv",
74
+ "text/tab-separated-values",
75
+ "text/markdown",
76
+ ]
77
+
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
+ ]
119
+
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
+ ]
162
+
163
+ export const person_trait_options = [
164
+ { key: "white", name: "White", emoji: "✋🏻" },
165
+ { key: "black", name: "Black / African American", emoji: "✋🏿" },
166
+ { key: "hispanic_latino", name: "Hispanic / Latino", emoji: "✋🏽" },
167
+ { key: "asian_indian", name: "Asian Indian", emoji: "✋🏾" },
168
+ { key: "chinese", name: "Chinese", emoji: "✋🏼" },
169
+ { key: "filipino", name: "Filipino", emoji: "✋🏼" },
170
+ { key: "japanese", name: "Japanese", emoji: "✋🏻" },
171
+ { key: "korean", name: "Korean", emoji: "✋🏻" },
172
+ { key: "vietnamese", name: "Vietnamese", emoji: "✋🏼" },
173
+ { key: "native_american", name: "Native American / Alaska Native", emoji: "✋🏽" },
174
+ { key: "pacific_islander", name: "Native Hawaiian / Other Pacific Islander", emoji: "✋🏽" },
175
+ { key: "middle_eastern", name: "Middle Eastern", emoji: "✋🏽" },
176
+ { key: "north_african", name: "North African", emoji: "✋🏾" },
177
+ { key: "other_ethnicity", name: "Other Ethnicity", emoji: "✋🏽" },
178
+ { key: "mixed_ethnicity", name: "Mixed Ethnicity", emoji: "✋🏼" },
179
+ { key: "speaks_english", name: "Speeks English", emoji: "🇺🇸" },
180
+ { key: "speaks_spanish", name: "Speeks Spanish", emoji: "🇪🇸" },
181
+ { key: "speaks_french", name: "Speeks French", emoji: "🇫🇷" },
182
+ { key: "speaks_mandarin", name: "Speeks Mandarin", emoji: "🇨🇳" },
183
+ { key: "speaks_russian", name: "Speeks Russian", emoji: "🇷🇺" },
184
+ { key: "speaks_portuguese", name: "Speeks Portuguese", emoji: "🇵🇹" },
185
+ { key: "speaks_korean", name: "Speeks Korean", emoji: "🇰🇷" },
186
+ { key: "speaks_japanese", name: "Speeks Japanese", emoji: "🇯🇵" },
187
+ { key: "speaks_german", name: "Speeks German", emoji: "🇩🇪" },
188
+ { key: "gender_identity_male", name: "Male", emoji: "👱" },
189
+ { key: "gender_identity_female", name: "Female", emoji: "👩" },
190
+ { key: "gender_identity_transgender", name: "Transgender", emoji: "🏳️‍⚧️" },
191
+ { key: "gender_identity_other", name: "Other Gender", emoji: "🌀" },
192
+ { key: "assigned_sex_at_birth_male", name: "Assigned Male at Birth", emoji: "🚹" },
193
+ { key: "assigned_sex_at_birth_female", name: "Assigned Female at Birth", emoji: "🚺" },
194
+ { key: "attracted_to_gender_male", name: "Attracted to Males", emoji: "👱" },
195
+ { key: "attracted_to_gender_female", name: "Attracted to Females", emoji: "👩" },
196
+ { key: "attracted_to_gender_other", name: "Attracted to Other Genders", emoji: "🙂" },
197
+ { key: "single", name: "Single", emoji: "💖" },
198
+ { key: "married", name: "Married", emoji: "💍" },
199
+ { key: "previously_married", name: "Preiously Married", emoji: "💍" },
200
+ { key: "never_want_marriage", name: "Never Want Married", emoji: "1️⃣" },
201
+ { key: "live_with_parents", name: "Live with Parents", emoji: "🏠" },
202
+ { key: "home_owner", name: "Home Owner", emoji: "🏡" },
203
+ { key: "couch_surfer", name: "Couch Surfer", emoji: "🛋️" },
204
+ { key: "rent_housing", name: "Rent Housing", emoji: "🏢" },
205
+ { key: "nomadic", name: "Nomadic", emoji: "🌏" },
206
+ { key: "happy_childhood", name: "Happy Childhood", emoji: "🌈" },
207
+ { key: "parents_together", name: "Parents Together", emoji: "👪" },
208
+ { key: "close_to_parents", name: "Close to Parents", emoji: "👨‍👩‍👧‍👦" },
209
+ { key: "not_close_to_parents", name: "Not Close to Parents", emoji: "👨‍👩‍👧‍👦" },
210
+ { key: "own_cat", name: "Cat Owner", emoji: "🐈" },
211
+ { key: "own_dog", name: "Dog Owner", emoji: "🐕" },
212
+ { key: "parent", name: "Parent", emoji: "👨‍👩‍👧‍👦" },
213
+ { key: "expecting_newborn", name: "Expecting Newborn", emoji: "🍼" },
214
+ { key: "have_kids", name: "Have Kids", emoji: "👶" },
215
+ { key: "dont_have_kids", name: "Don't Have Kids", emoji: "👶" },
216
+ { key: "want_kids", name: "Want Kids", emoji: "🍼" },
217
+ { key: "dont_want_kids", name: "Don't Want Kids", emoji: "👶" },
218
+ { key: "over_100k_usd_net_worth", name: "Over $100k Net Worth", emoji: "💲" },
219
+ { key: "over_500k_usd_net_worth", name: "Over $500k Net Worth", emoji: "💵" },
220
+ { key: "over_1m_usd_net_worth", name: "Over $1 Million Net Worth", emoji: "💰" },
221
+ { key: "low_budget", name: "Low Budget", emoji: "💸" },
222
+ { key: "high_budget", name: "High Budget", emoji: "🤑" },
223
+ { key: "investor", name: "Investor", emoji: "📈" },
224
+ { key: "saver", name: "Saver", emoji: "🐷" },
225
+ { key: "spender", name: "Spender", emoji: "🛍️" },
226
+ { key: "philanthropist", name: "Philanthropist", emoji: "❤️" },
227
+ { key: "financially_independent", name: "Financially Independent", emoji: "🌟" },
228
+ { key: "entrepreneur", name: "Entrepreneur", emoji: "🚀" },
229
+ { key: "own_cryptocurrency", name: "Cryptocurrency Enthusiast", emoji: "⛓️" },
230
+ { key: "work_remotely", name: "Work Remotely", emoji: "💻" },
231
+ { key: "work_in_web_development", name: "Work in Web Development", emoji: "🌐" },
232
+ { key: "work_in_mobile_development", name: "Work in Mobile Development", emoji: "📱" },
233
+ { key: "work_in_ui_ux_design", name: "Work in UI/UX Design", emoji: "🎨" },
234
+ { key: "work_in_software_engineering", name: "Work in Software Engineering", emoji: "💻" },
235
+ { key: "work_in_cryptocurrency", name: "Work in Cryptocurrency", emoji: "🪙" },
236
+ { key: "work_in_startup", name: "Work in Startup", emoji: "🚀" },
237
+ { key: "work_in_data_science", name: "Work in Data Science", emoji: "📈" },
238
+ { key: "work_in_finance", name: "Work in Finance & Investment", emoji: "💹" },
239
+ { key: "work_in_product_management", name: "Work in Product Management", emoji: "🗂️" },
240
+ { key: "work_in_education", name: "Work in Education", emoji: "🎓" },
241
+ { key: "work_in_healthcare", name: "Work in Healthcare", emoji: "⚕️" },
242
+ { key: "work_in_politics", name: "Work in Politics", emoji: "🏛️" },
243
+ { key: "work_in_creative_arts", name: "Work in Creative Arts", emoji: "👩‍🎨" },
244
+ { key: "work_in_legal", name: "Work in Legal", emoji: "⚖️" },
245
+ { key: "work_in_public_speaking", name: "Public Speaker", emoji: "🗣️" },
246
+ { key: "work_in_content_creation", name: "Work in Content Creation", emoji: "📹" },
247
+ { key: "work_in_mental_health", name: "Work in Mental Health", emoji: "🧠" },
248
+ { key: "work_in_coaching", name: "Work in Coaching", emoji: "🏋️" },
249
+ { key: "work_in_fitness", name: "Work in Fitness", emoji: "💪" },
250
+ { key: "work_in_community_manager", name: "Community Manager", emoji: "🤝" },
251
+ { key: "work_in_marketing", name: "Work in Marketing", emoji: "📈" },
252
+ { key: "work_in_sales", name: "Work in Sales", emoji: "🤑" },
253
+ { key: "work_in_ecommerce", name: "Work in Ecommerce", emoji: "🛒" },
254
+ { key: "work_in_customer_support", name: "Work in Customer Support", emoji: "🔊" },
255
+ { key: "work_in_travel", name: "Work in Travel", emoji: "✈️" },
256
+ { key: "work_in_sports", name: "Work in Sports", emoji: "🏅" },
257
+ { key: "work_in_architecture", name: "Work in Architecture", emoji: "🏗️" },
258
+ { key: "work_in_hospitality", name: "Work in Hospitality", emoji: "🏨" },
259
+ { key: "work_in_fashion", name: "Work in Fashion", emoji: "👗" },
260
+ { key: "work_in_adult", name: "Work in Adult", emoji: "🔞" },
261
+ { key: "work_in_social_media", name: "Work in Social Media", emoji: "📱" },
262
+ { key: "work_in_journalism", name: "Work in Journalism", emoji: "📰" },
263
+ { key: "work_in_environment", name: "Work in Environment", emoji: "🌳" },
264
+ { key: "work_in_photography", name: "Work in Photography", emoji: "📸" },
265
+ { key: "work_in_music", name: "Work in Music", emoji: "🎶" },
266
+ { key: "work_in_food", name: "Work in Food", emoji: "🍳" },
267
+ { key: "work_in_writing", name: "Work in Writing", emoji: "✍️" },
268
+ { key: "work_in_event_planning", name: "Work in Event Planning", emoji: "🎉" },
269
+ { key: "work_in_activism", name: "Work in Activism", emoji: "✊" },
270
+ { key: "work_in_philanthropy", name: "Work in Philanthropy", emoji: "🎗️" },
271
+ { key: "self_learner", name: "Self Learner", emoji: "🔍" },
272
+ { key: "learn_by_doing", name: "Learn By Doing", emoji: "🛠️" },
273
+ { key: "youtube_learner", name: "YouTube Learner", emoji: "▶️" },
274
+ { key: "have_bachelors_degree", name: "Have Bachelor's Degree", emoji: "📜" },
275
+ { key: "have_masters_degree", name: "Have Master's Degree", emoji: "🎓" },
276
+ { key: "have_phd", name: "Have PhD", emoji: "👩‍🏫" },
277
+ { key: "interest_in_philosophy", name: "Interest in Philosophy", emoji: "💭" },
278
+ { key: "interest_in_psychology", name: "Interest in Psychology", emoji: "🧠" },
279
+ { key: "interest_in_economics", name: "Interest in Economics", emoji: "💹" },
280
+ { key: "interest_in_history", name: "Interest in History", emoji: "🏰" },
281
+ { key: "interest_in_mathematics", name: "Interest in Mathematics", emoji: "➗" },
282
+ { key: "enjoy_talking_politics", name: "Enjoy Talking Politics", emoji: "🗣️" },
283
+ { key: "limit_talking_politics", name: "Limit Talking Politics", emoji: "🤐" },
284
+ { key: "not_political", name: "Not Political", emoji: "🤷" },
285
+ { key: "actively_advocate_politics", name: "Actively Advocate Politics", emoji: "✊" },
286
+ { key: "politically_lean_democrat", name: "Politically Lean Democrat", emoji: "🔵" },
287
+ { key: "politically_lean_republican", name: "Politically Lean Republican", emoji: "🔴" },
288
+ { key: "politically_lean_independent", name: "Politically Lean Independent", emoji: "🟢" },
289
+ { key: "politically_lean_libertarian", name: "Politically Lean Libertarian", emoji: "🟡" },
290
+ { key: "politically_lean_green_party", name: "Politically Lean Green Party", emoji: "🍀" },
291
+ { key: "politically_lean_progressive", name: "Politically Lean Progressive", emoji: "⏩" },
292
+ { key: "politically_lean_centrist", name: "Politically Lean Centrist", emoji: "🎯" },
293
+ { key: "politically_lean_conservative", name: "Politically Lean Conservative", emoji: "🐘" },
294
+ { key: "politically_lean_socialist", name: "Politically Lean Socialist", emoji: "✊" },
295
+ { key: "politically_lean_other", name: "Politically Lean Other", emoji: "🔀" },
296
+ { key: "not_religious", name: "Not Religious", emoji: "💫" },
297
+ { key: "religion_of_christianity", name: "Christianity Follower", emoji: "✝️" },
298
+ { key: "religion_of_islam", name: "Islam Follower", emoji: "🕌" },
299
+ { key: "religion_of_hinduism", name: "Hinduism Follower", emoji: "🕉️" },
300
+ { key: "religion_of_buddhism", name: "Buddhism Follower", emoji: "🔆" },
301
+ { key: "religion_of_sikhism", name: "Sikhism Follower", emoji: "🔱" },
302
+ { key: "religion_of_judaism", name: "Judaism Follower", emoji: "✡️" },
303
+ { key: "religion_of_taoism", name: "Taoism Follower", emoji: "☯️" },
304
+ { key: "religion_of_shinto", name: "Shinto Follower", emoji: "⛩️" },
305
+ { key: "religion_of_paganism", name: "Paganism Follower", emoji: "🌿" },
306
+ { key: "religion_of_jainism", name: "Jainism Follower", emoji: "🙏" },
307
+ { key: "religion_of_agnostic", name: "Agnostic", emoji: "❓" },
308
+ { key: "religion_of_atheist", name: "Atheist", emoji: "🚫" },
309
+ { key: "religion_of_other", name: "Other Religion Follower", emoji: "🔀" },
310
+ { key: "spiritual", name: "Spiritual", emoji: "🌌" },
311
+ { key: "diet_vegetarian", name: "Vegetarian", emoji: "🥕" },
312
+ { key: "diet_vegan", name: "Vegan", emoji: "🌿" },
313
+ { key: "diet_pescetarian", name: "Pescetarian", emoji: "🐟" },
314
+ { key: "diet_gluten_free", name: "Gluten-Free", emoji: "🌾" },
315
+ { key: "diet_keto", name: "Keto", emoji: "🥓" },
316
+ { key: "diet_halal", name: "Halal", emoji: "☪️" },
317
+ { key: "diet_kosher", name: "Kosher", emoji: "✡️" },
318
+ { key: "diet_tea", name: "Tea Lover", emoji: "🍵" },
319
+ { key: "diet_coffee", name: "Coffee Lover", emoji: "☕️" },
320
+ { key: "diet_wine", name: "Wine Connoisseur", emoji: "🍷" },
321
+ { key: "diet_beer", name: "Beer Aficionado", emoji: "🍺" },
322
+ { key: "diet_organic", name: "Organic Diet", emoji: "🌾" },
323
+ { key: "diet_healthy", name: "Healthy Diet", emoji: "🥗" },
324
+ { key: "diet_fasting", name: "Intermittent Fasting Diet", emoji: "⏲️" },
325
+ { key: "no_smoking", name: "Non-Smoker", emoji: "🚭" },
326
+ { key: "no_alcohol", name: "Alcohol-Free", emoji: "🥤" },
327
+ { key: "no_drugs", name: "Drug-Free", emoji: "🚫" },
328
+ { key: "body_shape_slim", name: "Slim Body Shape", emoji: "🧍" },
329
+ { key: "body_shape_petite", name: "Petite Body Shape", emoji: "🧚" },
330
+ { key: "body_shape_lean_athletic", name: "Lean Athletic Body Shape", emoji: "🏃" },
331
+ { key: "body_shape_muscular", name: "Muscular Body Shape", emoji: "💪" },
332
+ { key: "body_shape_average", name: "Average Body Shape", emoji: "🚶" },
333
+ { key: "body_shape_curvy", name: "Curvy Body Shape", emoji: "🍑" },
334
+ { key: "body_shape_cushy", name: "Cushy Body Shape", emoji: "⚖️" },
335
+ { key: "body_shape_heavy", name: "Heavy Body Shape", emoji: "🍰" },
336
+ { key: "weight_under_100", name: "Under 100 lbs (45 kg)", emoji: "⚖️" },
337
+ { key: "weight_100_125", name: "100-125 lbs (45-57 kg)", emoji: "⚖️" },
338
+ { key: "weight_125_150", name: "125-150 lbs (57-68 kg)", emoji: "⚖️" },
339
+ { key: "weight_150_175", name: "150-175 lbs (68-79 kg)", emoji: "⚖️" },
340
+ { key: "weight_175_200", name: "175-200 lbs (79-91 kg)", emoji: "⚖️" },
341
+ { key: "weight_200_225", name: "200-225 lbs (91-102 kg)", emoji: "⚖️" },
342
+ { key: "weight_225_250", name: "225-250 lbs (102-113 kg)", emoji: "⚖️" },
343
+ { key: "weight_250_300", name: "250-300 lbs (113-136 kg)", emoji: "⚖️" },
344
+ { key: "weight_over_300", name: "Over 300 lbs (136 kg)", emoji: "⚖️" },
345
+ { key: "height_under_4_6", name: "Under 4 ft 6 in (137 cm)", emoji: "📏" },
346
+ { key: "height_4_6_to_5", name: "4 ft 6 in - 5 ft 0 in (137-152 cm)", emoji: "📏" },
347
+ { key: "height_5_to_5_5", name: "5 ft 0 in - 5 ft 5 in (152-165 cm)", emoji: "📏" },
348
+ { key: "height_5_5_to_5_8", name: "5 ft 5 in - 5 ft 8 in (165-173 cm)", emoji: "📏" },
349
+ { key: "height_5_8_to_5_10", name: "5 ft 8 in - 5 ft 10 in (173-178 cm)", emoji: "📏" },
350
+ { key: "height_5_10_to_6", name: "5 ft 10 in - 6 ft 0 in (178-183 cm)", emoji: "📏" },
351
+ { key: "height_6_to_6_3", name: "6 ft 0 in - 6 ft 3 in (183-190 cm)", emoji: "📏" },
352
+ { key: "height_over_6_3", name: "Over 6 ft 3 in (190 cm)", emoji: "📏" },
353
+ { key: "have_no_tattoos", name: "No Tattoos", emoji: "⛔" },
354
+ { key: "have_few_tattoos", name: "Few Tattoos", emoji: "💉" },
355
+ { key: "have_many_tattoos", name: "Many Tattoos", emoji: "🎨" },
356
+ { key: "have_cosmetic_procedures", name: "Had Cosmetic Procedures", emoji: "💄" },
357
+ { key: "have_clear_skin", name: "Clear Skin", emoji: "🌟" },
358
+ { key: "eye_color_blue", name: "Blue Eyes", emoji: "🔵" },
359
+ { key: "eye_color_brown", name: "Brown Eyes", emoji: "🟤" },
360
+ { key: "eye_color_green", name: "Green Eyes", emoji: "🟢" },
361
+ { key: "eye_color_hazel", name: "Hazel Eyes", emoji: "🌰" },
362
+ { key: "eye_color_gray", name: "Gray Eyes", emoji: "⚪️" },
363
+ { key: "eye_color_amber", name: "Amber Eyes", emoji: "🟠" },
364
+ { key: "eye_color_black", name: "Black Eyes", emoji: "⚫" },
365
+ { key: "eye_color_mixed", name: "Mixed Eyes", emoji: "🌈" },
366
+ { key: "have_black_hair", name: "Black Hair", emoji: "⚫️" },
367
+ { key: "have_brown_hair", name: "Brown Hair", emoji: "🟤" },
368
+ { key: "have_blonde_hair", name: "Blonde Hair", emoji: "🟡" },
369
+ { key: "have_red_hair", name: "Red Hair", emoji: "🦰" },
370
+ { key: "have_gray_hair", name: "Gray Hair", emoji: "⚪️" },
371
+ { key: "have_dyed_hair", name: "Dyed Hair", emoji: "🌈" },
372
+ { key: "have_bald_head", name: "Shaved/Bald", emoji: "🦲" },
373
+ { key: "have_short_hair", name: "Short Hair", emoji: "💇" },
374
+ { key: "have_long_hair", name: "Long Hair", emoji: "🪮" },
375
+ { key: "have_beard", name: "Beard", emoji: "🧔" },
376
+ { key: "seeking_travel_buddies", name: "Seeking Travel Buddies", emoji: "🎒" },
377
+ { key: "seeking_friends", name: "Seeking Friends", emoji: "🤝" },
378
+ { key: "seeking_casual_dating", name: "Seeking Casual Dating", emoji: "🍹" },
379
+ { key: "seeking_business_partners", name: "Seeking Business Partners", emoji: "💼" },
380
+ { key: "seeking_relationship", name: "Seeking Relationship", emoji: "❤️" },
381
+ { key: "seeking_job", name: "Seeking Job", emoji: "🔍" },
382
+ { key: "seeking_networking", name: "Seeking Networking", emoji: "🤝" },
383
+ { key: "uses_twitter", name: "Twitter/X User", emoji: "🐦" },
384
+ { key: "uses_youtube", name: "YouTube User", emoji: "📺" },
385
+ { key: "uses_facebook", name: "Facebook User", emoji: "📘" },
386
+ { key: "uses_instagram", name: "Instagram User", emoji: "📸" },
387
+ { key: "uses_linkedin", name: "LinkedIn User", emoji: "💼" },
388
+ { key: "uses_tiktok", name: "TikTok User", emoji: "🎵" },
389
+ { key: "uses_snapchat", name: "Snapchat User", emoji: "👻" },
390
+ { key: "uses_whatsapp", name: "WhatsApp User", emoji: "💬" },
391
+ { key: "uses_telegram", name: "Telegram User", emoji: "📬" },
392
+ { key: "uses_discord", name: "Discord User", emoji: "💻" },
393
+ { key: "uses_reddit", name: "Reddit User", emoji: "👽" },
394
+ { key: "uses_pinterest", name: "Pinterest User", emoji: "📌" },
395
+ { key: "uses_twitch", name: "Twitch User", emoji: "🎮" },
396
+ { key: "uses_wechat", name: "WeChat User", emoji: "💬" },
397
+ { key: "uses_line", name: "LINE User", emoji: "💚" },
398
+ { key: "uses_vk", name: "VK User", emoji: "🇷🇺" },
399
+ { key: "introvert", name: "Introvert", emoji: "🤫" },
400
+ { key: "extrovert", name: "Extrovert", emoji: "🦋" },
401
+ { key: "minimalist", name: "Minimalist", emoji: "⬜️" },
402
+ { key: "enjoy_partying_often", name: "Enjoy Partying Often", emoji: "🎉" },
403
+ { key: "enjoy_partying_occasionally", name: "Enjoy Partying Occasionally", emoji: "🎊" },
404
+ { key: "enjoy_college_style_parties", name: "Enjoy College-Style Parties", emoji: "🍺" },
405
+ { key: "enjoy_loud_music_parties", name: "Enjoy Loud Music Parties", emoji: "🎶" },
406
+ { key: "enjoy_heavy_drinking_parties", name: "Enjoy Heavy Drinking Parties", emoji: "🍻" },
407
+ { key: "enjoy_professional_gatherings", name: "Enjoy Professional Gatherings", emoji: "🍷" },
408
+ { key: "enjoy_elegant_gatherings", name: "Enjoy Elegant Gatherings", emoji: "🍾" },
409
+ { key: "enjoy_formal_receptions", name: "Enjoy Formal Receptions", emoji: "👔" },
410
+ { key: "enjoy_casual_socials", name: "Enjoy Casual Socials", emoji: "🍻" },
411
+ { key: "enjoy_chill_hangouts", name: "Enjoy Chill Hangouts", emoji: "🛋️" },
412
+ { key: "enjoy_large_events", name: "Enjoy Large Events", emoji: "🎪" },
413
+ { key: "enjoy_small_gatherings", name: "Enjoy Small Gatherings", emoji: "🏡" },
414
+ { key: "enjoy_online_events", name: "Enjoy Online Events", emoji: "💻" },
415
+ { key: "tidy", name: "Tidy", emoji: "🧼" },
416
+ { key: "messy", name: "Messy", emoji: "🧺" },
417
+ { key: "have_trouble_walking", name: "Have Trouble Walking", emoji: "🦽" },
418
+ { key: "have_disability", name: "Have Disability", emoji: "🧠" },
419
+ { key: "often_wake_up_early", name: "Early Riser", emoji: "🌅" },
420
+ { key: "often_stay_up_late", name: "Night Owl", emoji: "🌜" },
421
+ { key: "enjoy_meditation", name: "Enjoy Meditation", emoji: "🧘" },
422
+ { key: "enjoy_active_lifestyle", name: "Active Lifestyle", emoji: "🏃" },
423
+ { key: "enjoy_fitness", name: "Fitness Enthusiast", emoji: "💪" },
424
+ { key: "enjoy_yoga", name: "Yoga Enthusiast", emoji: "🧘" },
425
+ { key: "enjoy_running", name: "Runner", emoji: "🏃" },
426
+ { key: "enjoy_swimming", name: "Swimmer", emoji: "🏊" },
427
+ { key: "enjoy_cycling", name: "Cyclist", emoji: "🚴" },
428
+ { key: "enjoy_hiking", name: "Hiker", emoji: "🥾" },
429
+ { key: "enjoy_golfing", name: "Golfer", emoji: "⛳" },
430
+ { key: "fan_of_golf", name: "Golf Fan", emoji: "⛳" },
431
+ { key: "enjoy_playing_tennis", name: "Enjoy Playing Tennis", emoji: "🎾" },
432
+ { key: "fan_of_tennis", name: "Tennis Fan", emoji: "🎾" },
433
+ { key: "enjoy_playing_pickleball", name: "Enjoy Playing Pickleball", emoji: "🎾" },
434
+ { key: "enjoy_playing_football", name: "Enjoy Playing Football", emoji: "🏈" },
435
+ { key: "fan_of_football", name: "Football Fan", emoji: "🏈" },
436
+ { key: "enjoy_playing_soccer", name: "Enjoy Playing Soccer", emoji: "⚽" },
437
+ { key: "soccer_fan", name: "Soccer Fan", emoji: "⚽" },
438
+ { key: "enjoy_playing_basketball", name: "Enjoy playing Basketball", emoji: "🏀" },
439
+ { key: "fan_of_basketball", name: "Basketball Fan", emoji: "🏀" },
440
+ { key: "enjoy_playing_hockey", name: "Enjoy Playing Hockey", emoji: "🏒" },
441
+ { key: "fan_of_hockey", name: "Hockey Fan", emoji: "🏒" },
442
+ { key: "fan_of_formula_one", name: "Formula 1 Fan", emoji: "🏎️" },
443
+ { key: "fan_of_motor_sports", name: "Motor Sports Fan", emoji: "🏍️" },
444
+ { key: "enjoy_surfing", name: "Enjoy Surfing", emoji: "🏄‍♂️" },
445
+ { key: "enjoy_rock_climbing", name: "Enjoy Rock Climbing", emoji: "🧗‍♀️" },
446
+ { key: "enjoy_camping", name: "Enjoy Camping", emoji: "⛺" },
447
+ { key: "enjoy_fishing", name: "Enjoy Fishing", emoji: "🎣" },
448
+ { key: "enjoy_gardening", name: "Enjoy Gardening", emoji: "🌱" },
449
+ { key: "enjoy_baking", name: "Enjoy Baking", emoji: "🍪" },
450
+ { key: "enjoy_cooking", name: "Enjoy Cooking", emoji: "👩‍🍳" },
451
+ { key: "enjoy_reading", name: "Enjoy Reading", emoji: "📚" },
452
+ { key: "enjoy_writing", name: "Enjoy Writing", emoji: "✍️" },
453
+ { key: "enjoy_drawing", name: "Enjoy Drawing", emoji: "✏️" },
454
+ { key: "enjoy_painting", name: "Enjoy Painting", emoji: "🎨" },
455
+ { key: "enjoy_pottery", name: "Enjoy Pottery", emoji: "🏺" },
456
+ { key: "enjoy_knitting", name: "Enjoy Knitting", emoji: "🧶" },
457
+ { key: "enjoy_origami", name: "Enjoy Origami", emoji: "🗾" },
458
+ { key: "enjoy_photography", name: "Enjoy Photography", emoji: "📷" },
459
+ { key: "enjoy_movies", name: "Enjoy Movies", emoji: "🍿" },
460
+ { key: "enjoy_documentaries", name: "Enjoy Documentaries", emoji: "🎥" },
461
+ { key: "enjoy_comedy", name: "Enjoy Comedy", emoji: "😄" },
462
+ { key: "enjoy_music_production", name: "Enjoy Producing Music", emoji: "🎵" },
463
+ { key: "enjoy_outdoors", name: "Enjoy Outdoors", emoji: "🏞️" },
464
+ { key: "enjoy_beach", name: "Enjoy the Beach", emoji: "🏖️" },
465
+ { key: "enjoy_diy", name: "Enjoy DIY", emoji: "🔨" },
466
+ { key: "enjoy_diy_electronics", name: "Enjoy DIY Electronics", emoji: "🔌" },
467
+ { key: "enjoy_home_renovation", name: "Enjoy Home Renovation", emoji: "🏚️" },
468
+ { key: "enjoy_cruising", name: "Enjoy Cruises", emoji: "🚢" },
469
+ { key: "enjoy_skateboarding", name: "Enjoy Skateboarding", emoji: "🛹" },
470
+ { key: "enjoy_snow", name: "Enjoy Snow", emoji: "❄️" },
471
+ { key: "enjoy_magic", name: "Enjoy Magic", emoji: "🔮" },
472
+ { key: "enjoy_listening_to_podcasts", name: "Enjoy Listening to Podcasts", emoji: "🎙️" },
473
+ { key: "enjoy_makeup_beauty", name: "Makeup & Beauty Aficionado", emoji: "💄" },
474
+ { key: "enjoy_martial_arts", name: "Enjoy Practicing Martial Arts", emoji: "🥋" },
475
+ { key: "fan_of_ufc", name: "UFC Fan", emoji: "🤼‍♂️" },
476
+ { key: "fan_of_boxing", name: "Boxing Fan", emoji: "🥊" },
477
+ { key: "fan_of_celebrity_fights", name: "Celebrity Fights Fan", emoji: "🎬" },
478
+ { key: "enjoy_mathematics", name: "Enjoy Mathematics", emoji: "➗" },
479
+ { key: "enjoy_robotics", name: "Enjoy Robotics", emoji: "🤖" },
480
+ { key: "enjoy_puzzles", name: "Enjoy Assembling Puzzles", emoji: "🧩" },
481
+ { key: "enjoy_astronomy", name: "Enjoy Astronomy", emoji: "🔭" },
482
+ { key: "enjoy_bird_watching", name: "Enjoy Bird Watching", emoji: "🦉" },
483
+ { key: "enjoy_theater", name: "Enjoy Theater", emoji: "🎭" },
484
+ { key: "enjoy_music_concerts", name: "Enjoy Music Concerts", emoji: "🎷" },
485
+ { key: "enjoy_eco_friendly_living", name: "Enjoy Eco-Friendly Living", emoji: "♻️" },
486
+ { key: "enjoy_board_games", name: "Enjoy Board Games", emoji: "🎲" },
487
+ { key: "enjoy_video_gaming", name: "Enjoy Video Games", emoji: "🎮" },
488
+ { key: "enjoy_dancing", name: "Enjoy Dancing", emoji: "💃" },
489
+ { key: "enjoy_scuba_diving", name: "Enjoy Scuba Diving", emoji: "🤿" },
490
+ { key: "enjoy_skiing", name: "Enjoy Skiing", emoji: "⛷️" },
491
+ { key: "enjoy_snowboarding", name: "Enjoy Snowboarding", emoji: "🏂" },
492
+ { key: "enjoy_archery", name: "Enjoy Archery", emoji: "🏹" },
493
+ { key: "enjoy_horseback_riding", name: "Enjoy Horseback Riding", emoji: "🏇" },
494
+ { key: "enjoy_sailing", name: "Enjoy Sailing", emoji: "⛵" },
495
+ { key: "enjoy_hunting", name: "Enjoy Hunting", emoji: "🦌" },
496
+ { key: "enjoy_fossil_hunting", name: "Enjoy Fossil Hunting", emoji: "🦴" },
497
+ { key: "enjoy_metal_detecting", name: "Enjoy Metal Detecting", emoji: "🔍" },
498
+ { key: "enjoy_rare_metal", name: "Enjoy Rare Metals", emoji: "⚱️" },
499
+ { key: "enjoy_coin_collecting", name: "Enjoy Coin Collecting", emoji: "💰" },
500
+ { key: "enjoy_vinyl_collecting", name: "Enjoy Vinyl Collecting", emoji: "🎶" },
501
+ { key: "enjoy_antique_collecting", name: "Enjoy Antique Collecting", emoji: "🔍" },
502
+ { key: "enjoy_model_building", name: "Enjoy Model Building", emoji: "🚁" },
503
+ { key: "enjoy_railroad_modeling", name: "Enjoy Railroad Modeling", emoji: "🚂" },
504
+ { key: "enjoy_volunteering", name: "Enjoy Volunteering", emoji: "🤲" },
505
+ { key: "enjoy_cosplay", name: "Enjoy Cosplay", emoji: "🎭" },
506
+ { key: "travel_often", name: "Travel Often ", emoji: "✈️" },
507
+ { key: "enjoy_craft_beer_brewing", name: "Enjoy Craft Beer Brewing", emoji: "🍺" },
508
+ { key: "enjoy_wine_tasting", name: "Enjoy Wine Tasting", emoji: "🍷" },
509
+ { key: "enjoy_cheese_tasting", name: "Enjoy Cheese Tasting", emoji: "🧀" },
510
+ { key: "enjoy_zoo", name: "Enjoy Zoo", emoji: "🦁" },
511
+ { key: "enjoy_urban_exploration", name: "Enjoy Urban Exploration", emoji: "🏚️" },
512
+ { key: "use_apple_macbook", name: "Apple Macbook User", emoji: "💻" },
513
+ { key: "use_iphone", name: "iPhone User", emoji: "📱" },
514
+ { key: "use_android", name: "Android User", emoji: "🤖" },
515
+ ]
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
+ content: { type: "text_literal" },
2089
+ },
2090
+ child_elements: {},
2091
+ },
2092
+ ref: {
2093
+ kind: "content",
2094
+ category: "content",
2095
+ name: "Reference",
2096
+ display_order: 45,
2097
+ attributes: {
2098
+ href: { type: "text_literal" },
2099
+ content: { type: "text_literal" },
2100
+ text_color: { type: "color_literal" },
2101
+ },
2102
+ child_elements: {},
2103
+ },
2104
+ footer: {
2105
+ kind: "content",
2106
+ category: "content",
2107
+ name: "Footer",
2108
+ display_order: 46,
2109
+ attributes: {},
2110
+ child_elements: {
2111
+ ol: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
2112
+ ul: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
2113
+ p: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
2114
+ h4: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
2115
+ h5: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
2116
+ h6: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
2117
+ },
2118
+ },
2119
+ youtube_video: {
2120
+ kind: "content",
2121
+ category: "content",
2122
+ name: "YouTube Video",
2123
+ display_order: 47,
2124
+ attributes: {
2125
+ id: { type: "text_literal" },
2126
+ video_id: { type: "text_literal" },
2127
+ is_dark_theme: { type: "boolean_literal" },
2128
+ },
2129
+ child_elements: {},
2130
+ },
2131
+ x_post: {
2132
+ kind: "content",
2133
+ category: "content",
2134
+ name: "X Post",
2135
+ display_order: 48,
2136
+ attributes: {
2137
+ post_id: { type: "text_literal" },
2138
+ },
2139
+ child_elements: {},
2140
+ },
2141
+ table_advanced: {
2142
+ kind: "content",
2143
+ category: "content",
2144
+ name: "Table Advanced",
2145
+ display_order: 51,
2146
+ attributes: {
2147
+ // obviously this is way off just pasted in to start
2148
+ columns: {
2149
+ type: "object",
2150
+ properties: {
2151
+ id: { type: "text_literal" },
2152
+ description: { type: "text_literal" },
2153
+ header_content: { type: "text_literal" },
2154
+ body_content: { type: "text_literal" },
2155
+ is_shown: { type: "text_literal" },
2156
+ is_fixed: { type: "text_literal" },
2157
+ alignment: { type: "text_literal" },
2158
+ min_width: { type: "text_literal" },
2159
+ max_width: { type: "text_literal" },
2160
+ display_order: { type: "text_literal" },
2161
+ is_use_in_short_display: { type: "boolean_literal" },
2162
+ is_autogenerated: { type: "boolean_literal" },
2163
+ is_updatable: { type: "boolean_literal" },
2164
+ is_db_column: { type: "boolean_literal" },
2165
+ db_data_type: { type: "text_literal" },
2166
+ postgres_type: { type: "text_literal" },
2167
+ default_value: { type: "text_literal" },
2168
+ quick_sort_variable_path: { type: "text_literal" },
2169
+ is_primary_key: { type: "boolean_literal" },
2170
+ is_nullable: { type: "boolean_literal" },
2171
+ is_force_uniqueness: { type: "boolean_literal" },
2172
+ foreign_table_id: { type: "text_literal" },
2173
+ is_cascade: { type: "text_literal" },
2174
+ },
2175
+ additionalProperties: false,
2176
+ required: [],
2177
+ },
2178
+ rows_data_from_variable_path: { type: "text_literal" },
2179
+ is_data_editable: { type: "text_literal" },
2180
+ is_paginate: { type: "text_literal" },
2181
+ nav_items: { type: "text_literal" },
2182
+ sort_by: { type: "text_literal" },
2183
+ filter: { type: "text_literal" },
2184
+ row_searchable_content: { type: "text_literal" },
2185
+ row_input_content: { type: "text_literal" },
2186
+ table_header_max_height: { type: "text_literal" },
2187
+ table_row_max_height: { type: "text_literal" },
2188
+ },
2189
+ child_elements: {},
2190
+ },
2191
+ number: {
2192
+ kind: "content",
2193
+ category: "content",
2194
+ name: "Number",
2195
+ display_order: 51,
2196
+ attributes: {
2197
+ val: { type: ["float_literal", "int_literal", "bigint_literal"] },
2198
+ },
2199
+ child_elements: {},
2200
+ },
2201
+ color: {
2202
+ kind: "content",
2203
+ category: "content",
2204
+ name: "Color",
2205
+ display_order: 52,
2206
+ attributes: {
2207
+ val: { type: "color_literal" },
2208
+ },
2209
+ child_elements: {},
2210
+ },
2211
+ json: {
2212
+ kind: "content",
2213
+ category: "content",
2214
+ name: "JSON",
2215
+ display_order: 53,
2216
+ attributes: {
2217
+ is_show_buttons: { type: "boolean_literal" },
2218
+ val: { type: "json_literal" },
2219
+ },
2220
+ child_elements: {},
2221
+ },
2222
+ email_address: {
2223
+ kind: "content",
2224
+ category: "content",
2225
+ name: "Email Address",
2226
+ attributes: {
2227
+ is_full: { type: "boolean_literal" },
2228
+ is_show_copy_to_clipboard: { type: "boolean_literal" },
2229
+ is_show_mail_to: { type: "boolean_literal", default: false },
2230
+ },
2231
+ },
2232
+ email_address_input: {
2233
+ kind: "content",
2234
+ category: "content",
2235
+ name: "Email Address Input",
2236
+ attributes: {
2237
+ placeholder: { type: "text_literal" },
2238
+ maximum_length: { type: "int_literal" },
2239
+ },
2240
+ },
2241
+ phone: {
2242
+ kind: "content",
2243
+ category: "content",
2244
+ name: "Phone",
2245
+ attributes: {
2246
+ is_full: { type: "boolean_literal" },
2247
+ is_show_country_code: { type: "boolean_literal", default: true },
2248
+ is_show_call_button: { type: "boolean_literal", default: true },
2249
+ is_show_local: { type: "boolean_literal", default: true },
2250
+ is_show_main_number: { type: "boolean_literal", default: true },
2251
+ is_show_type: { type: "boolean_literal", default: true },
2252
+ },
2253
+ },
2254
+ phone_input: {
2255
+ kind: "content",
2256
+ category: "content",
2257
+ name: "Phone",
2258
+ attributes: {
2259
+ placeholder: { type: "text_literal" },
2260
+ },
2261
+ },
2262
+ time_input: {
2263
+ kind: "content",
2264
+ category: "content",
2265
+ name: "Time Input",
2266
+ attributes: {
2267
+ val_from_variable_path: {
2268
+ type: "variable_path_literal",
2269
+ allowed_types: ["time_literal"],
2270
+ },
2271
+ granularity: {
2272
+ type: "text_literal",
2273
+ enum: ["year", "month", "week", "day", "hour", "minute", "second"],
2274
+ default: "day",
2275
+ },
2276
+ },
2277
+ },
2278
+ time: {
2279
+ kind: "content",
2280
+ category: "content",
2281
+ name: "Time",
2282
+ display_order: 49,
2283
+ attributes: {
2284
+ hour: { type: "int_literal" },
2285
+ year: { type: "int_literal" },
2286
+ color: { type: "color_literal" },
2287
+ epoch: { type: "bigint_literal" },
2288
+ month: { type: "int_literal" },
2289
+ minute: { type: "int_literal" },
2290
+ second: { type: "int_literal" },
2291
+ content: { type: "text_literal" },
2292
+ datetime: { type: "text_literal" },
2293
+ timezone: { type: "text_literal" },
2294
+ day_of_week: { type: "int_literal" },
2295
+ day_of_year: { type: "int_literal" },
2296
+ granularity: { type: "text_literal" },
2297
+ day_of_month: { type: "int_literal" },
2298
+ week_of_year: { type: "int_literal" },
2299
+ },
2300
+ child_elements: {},
2301
+ },
2302
+ phone_number: {
2303
+ kind: "content",
2304
+ category: "content",
2305
+ name: "Phone Number",
2306
+ display_order: 50,
2307
+ attributes: {
2308
+ tbd: { type: "text_literal" },
2309
+ },
2310
+ child_elements: {},
2311
+ },
2312
+ phone_number_input: {
2313
+ kind: "content",
2314
+ category: "content",
2315
+ name: "Phone Number",
2316
+ display_order: 50,
2317
+ attributes: {
2318
+ tbd: { type: "text_literal" },
2319
+ },
2320
+ child_elements: {},
2321
+ },
2322
+ file: {
2323
+ kind: "content",
2324
+ category: "content",
2325
+ name: "File",
2326
+ attributes: {},
2327
+ },
2328
+ boolean_icon: {
2329
+ kind: "content",
2330
+ category: "content",
2331
+ name: "Boolean Icon",
2332
+ attributes: {
2333
+ true_icon: {
2334
+ type: "icon_literal",
2335
+ default: "x",
2336
+ // enum: icon_ids
2337
+ },
2338
+ false_icon: {
2339
+ type: "icon_literal",
2340
+ default: "check",
2341
+ // enum: icon_ids
2342
+ },
2343
+ },
2344
+ },
2345
+ tag: {
2346
+ kind: "content",
2347
+ category: "content",
2348
+ name: "Tag",
2349
+ attributes: {
2350
+ // custom options input
2351
+ options: {
2352
+ type: "array_uniform_literal",
2353
+ // items: { anyOf }
2354
+ },
2355
+ },
2356
+ },
2357
+ // foreign_key: {
2358
+ // kind: "content",
2359
+ // category: "content",
2360
+ // name: "Foreign Key",
2361
+ // attributes: {},
2362
+ // },
2363
+ variable_path_input: {
2364
+ kind: "content",
2365
+ category: "content",
2366
+ name: "Variable Path Input",
2367
+ attributes: {},
2368
+ },
2369
+ number_input: {
2370
+ kind: "content",
2371
+ category: "content",
2372
+ name: "Number Input",
2373
+ attributes: {
2374
+ label: { type: "text_literal" },
2375
+ placeholder: { type: "text_literal" },
2376
+ val_from_variable_path: {
2377
+ type: "variable_path_literal",
2378
+ allowed_types: ["int_literal", "float_literal", "bigint_literal"],
2379
+ },
2380
+ },
2381
+ },
2382
+ text_input: {
2383
+ kind: "content",
2384
+ category: "content",
2385
+ name: "Text Input",
2386
+ attributes: {
2387
+ val_from_variable_path: {
2388
+ type: "variable_path_literal",
2389
+ allowed_types: ["text_literal"],
2390
+ },
2391
+ label: { type: "text_literal" },
2392
+ placeholder: { type: "text_literal" },
2393
+ maximum_length: { type: "int_literal" },
2394
+ is_text_hidable: { type: "boolean_literal", default: false },
2395
+ is_text_hidden: { type: "boolean_literal", default: false },
2396
+ },
2397
+ },
2398
+ slider: {
2399
+ kind: "content",
2400
+ category: "content",
2401
+ name: "Slider",
2402
+ attributes: {
2403
+ val_from_variable_path: {
2404
+ type: "variable_path_literal",
2405
+ allowed_types: ["int_literal", "float_literal", "bigint_literal"],
2406
+ },
2407
+ label: { type: "text_literal" },
2408
+ is_nullable: { type: "boolean_literal", default: false },
2409
+ minimum: { type: "int_literal", default: 0 },
2410
+ maximum: { type: "int_literal", default: 10 },
2411
+ step: { type: "float_literal", default: 1 },
2412
+ color: { type: "color_literal" },
2413
+ is_short: { type: "boolean_literal", default: false },
2414
+ step: { type: "int_literal", default: 1 },
2415
+ },
2416
+ },
2417
+ checkbox: {
2418
+ kind: "content",
2419
+ category: "content",
2420
+ name: "Checkbox",
2421
+ attributes: {
2422
+ val_from_variable_path: {
2423
+ type: "variable_path_literal",
2424
+ allowed_types: ["boolean_literal"],
2425
+ },
2426
+ label: { type: "text_literal" },
2427
+ size: { type: "float_literal", default: 2.4 },
2428
+ type: {
2429
+ type: "text_literal",
2430
+ default: "checkbox",
2431
+ enum: ["checkbox", "toggle"],
2432
+ },
2433
+ label: { type: "text_literal" },
2434
+ name: { type: "text_literal" },
2435
+ color: { type: "color_literal" },
2436
+ // on_val
2437
+ // off_val
2438
+ },
2439
+ },
2440
+ arrow_toggle_input: {
2441
+ kind: "content",
2442
+ category: "content",
2443
+ name: "Arrow Toggle",
2444
+ },
2445
+ icon_input: {
2446
+ kind: "content",
2447
+ category: "content",
2448
+ name: "Icon Input",
2449
+ attributes: {
2450
+ tbd: { type: "text_literal" },
2451
+ },
2452
+ },
2453
+ icon: {
2454
+ kind: "content",
2455
+ category: "content",
2456
+ name: "Icon",
2457
+ display_order: 50,
2458
+ attributes: {
2459
+ icon_id: { type: "text_literal" },
2460
+ color: { type: "color_literal" },
2461
+ },
2462
+ child_elements: {},
2463
+ },
2464
+ cron_input: {
2465
+ kind: "content",
2466
+ category: "content",
2467
+ name: "Cron",
2468
+ attributes: {
2469
+ tbd: { type: "text_literal" },
2470
+ },
2471
+ },
2472
+ cron: {
2473
+ kind: "content",
2474
+ category: "content",
2475
+ name: "Cron",
2476
+ attributes: {
2477
+ tbd: { type: "text_literal" },
2478
+ },
2479
+ },
2480
+ file_input: {
2481
+ kind: "content",
2482
+ category: "content",
2483
+ name: "File Picker",
2484
+ attributes: {
2485
+ accept: {
2486
+ type: "array_uniform_literal",
2487
+ items: {
2488
+ type: "text_literal",
2489
+ // enum: mime_types
2490
+ },
2491
+ },
2492
+ is_multiselect: { type: "boolean_literal", default: false },
2493
+ is_drop_zone: { type: "boolean_literal", default: true },
2494
+ },
2495
+ },
2496
+ color: {
2497
+ kind: "content",
2498
+ category: "content",
2499
+ name: "Color",
2500
+ display_order: 52,
2501
+ attributes: {
2502
+ val: { type: "color_literal" },
2503
+ },
2504
+ child_elements: {},
2505
+ },
2506
+ dropdown: {
2507
+ kind: "content",
2508
+ category: "content",
2509
+ name: "Dropdown",
2510
+ attributes: {
2511
+ options: {
2512
+ json_schema: {
2513
+ type: "array",
2514
+ items: {
2515
+ type: "object",
2516
+ properties: {
2517
+ key: {
2518
+ anyOf: [{ type: "string" }, { type: "number" }],
2519
+ },
2520
+ name: {
2521
+ type: "string",
2522
+ },
2523
+ },
2524
+ required: ["key", "name"],
2525
+ additionalProperties: false,
2526
+ },
2527
+ },
2528
+ },
2529
+ },
2530
+ },
2531
+ color_input: {
2532
+ kind: "content",
2533
+ category: "content",
2534
+ name: "Color Input",
2535
+ attributes: {
2536
+ val_from_variable_path: {
2537
+ type: "variable_path_literal",
2538
+ allowed_types: ["color_literal"],
2539
+ },
2540
+ is_show_opacity: { type: "boolean_literal", default: true },
2541
+ h_options: {
2542
+ type: "array_uniform_literal",
2543
+ items: {
2544
+ type: "int_literal",
2545
+ 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],
2546
+ },
2547
+ },
2548
+ l_options: {
2549
+ type: "array_uniform_literal",
2550
+ items: {
2551
+ type: "int_literal",
2552
+ 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],
2553
+ },
2554
+ },
2555
+ c_options: {
2556
+ type: "array_uniform_literal",
2557
+ items: {
2558
+ type: "int_literal",
2559
+ 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],
2560
+ },
2561
+ },
2562
+ o_options: {
2563
+ type: "array_uniform_literal",
2564
+ items: {
2565
+ type: "int_literal",
2566
+ 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],
2567
+ },
2568
+ },
2569
+ },
2570
+ },
2571
+ location_input: {
2572
+ kind: "content",
2573
+ category: "content",
2574
+ name: "Location Input",
2575
+ attributes: {
2576
+ val_from_variable_path: {
2577
+ type: "variable_path_literal",
2578
+ allowed_types: ["location_literal"],
2579
+ },
2580
+ is_show_opacity: { type: "boolean_literal", default: true },
2581
+ },
2582
+ },
2583
+ location: {
2584
+ kind: "content",
2585
+ category: "content",
2586
+ name: "Location",
2587
+ attributes: {
2588
+ // val_from_variable_path: {
2589
+ // type: "variable_path_literal",
2590
+ // allowed_types: ["location_literal"],
2591
+ // },
2592
+ val: { type: "location_literal" },
2593
+ is_popover: { type: "boolean_literal", default: false },
2594
+ is_inline: { type: "boolean_literal", default: false },
2595
+ },
2596
+ },
2597
+ loop: {
2598
+ kind: "content",
2599
+ category: "content",
2600
+ name: "Loop",
2601
+ attributes: {
2602
+ val_from_variable_path: {
2603
+ type: "variable_path_literal",
2604
+ allowed_types: ["array_uniform_literal", "object_uniform_literal"],
2605
+ },
2606
+ iter_identifier: { type: "text_literal" },
2607
+ join_text: { type: "text_literal" },
2608
+ },
2609
+ child_elements: {
2610
+ ...main_child_element_options,
2611
+ },
2612
+ },
2613
+ // function_input: {}, maybe?
2614
+ }
2615
+
2616
+ export const node_types = {
2617
+ ...literal_types,
2618
+ ...content_types,
2619
+ }
2620
+
2621
+ function get_content_node_json_schema(type_id) {
2622
+ //tbd
2623
+ }
2624
+
2625
+ function find_match(match_for, value) {
2626
+ if (match_for?.type == "operator") {
2627
+ if (Array.isArray(match_for?.conditions)) {
2628
+ for (let condition of match_for?.conditions) {
2629
+ if (is_pass_predicate(condition?.predicate, condition?.value, value)) {
2630
+ if (match_for?.operator == "any_of") {
2631
+ return true
2632
+ }
2633
+ } else if (match_for?.operator == "all_of") {
2634
+ return false
2635
+ }
2636
+ }
2637
+ if (match_for?.operator == "all_of") {
2638
+ return true
2639
+ }
2640
+ }
2641
+ }
2642
+ return false
2643
+ }
2644
+
2645
+ // const override_base = {
2646
+ // options: {
2647
+ // color: null,
2648
+ // is_bold: false,
2649
+ // is_custom_text: false,
2650
+ // display_text: null,
2651
+ // },
2652
+ // override: {
2653
+ // type: "operator",
2654
+ // operator: "all_of",
2655
+ // conditions: [
2656
+ // {
2657
+ // type: "predicate",
2658
+ // predicate: "equal_to",
2659
+ // value: 4,
2660
+ // },
2661
+ // ],
2662
+ // },
2663
+ // }
2664
+
2665
+ // function get_override_item_display_text(override_item) {
2666
+ // console.log("override_item", override_item)
2667
+ // let display_text = ""
2668
+ // const predicate_text = {
2669
+ // equal_to: "equals (==)",
2670
+ // not_equal_to: "not equal to (!=)",
2671
+ // less_than: "less than (<)",
2672
+ // less_than_or_equal: "less than or equal to (<=)",
2673
+ // greater_than: "greater than (>)",
2674
+ // greater_than_or_equal: "greater than or equal to (>=)",
2675
+ // contains: "contains",
2676
+ // does_not_contain: "does not contain",
2677
+ // starts_with: "starts with",
2678
+ // ends_with: "ends with",
2679
+ // }
2680
+ // if (Array.isArray(override_item?.conditions) && override_item?.conditions.length > 0) {
2681
+ // display_text = `${predicate_text?.[override_item?.conditions?.[0]?.predicate]} ${
2682
+ // override_item?.conditions?.[0]?.value
2683
+ // }`
2684
+ // if (override_item?.conditions.length > 1) {
2685
+ // display_text += `${override_item?.operator == "all_of" ? " and" : " or"} ${
2686
+ // override_item?.conditions.length - 1
2687
+ // } more conditions.`
2688
+ // }
2689
+ // } else {
2690
+ // display_text = "No Conditions"
2691
+ // }
2692
+ // return display_text
2693
+ // }
2694
+
2695
+ // function is_pass_predicate(predicate, value, check_value) {
2696
+ // switch (predicate) {
2697
+ // case "equal_to":
2698
+ // return check_value === value
2699
+ // case "not_equal_to":
2700
+ // return check_value !== value
2701
+ // case "less_than":
2702
+ // return check_value < value
2703
+ // case "less_than_or_equal":
2704
+ // return check_value <= value
2705
+ // case "greater_than":
2706
+ // return check_value > value
2707
+ // case "greater_than_or_equal":
2708
+ // return check_value >= value
2709
+ // case "contains":
2710
+ // return check_value.includes(value)
2711
+ // case "does_not_contain":
2712
+ // return !check_value.includes(value)
2713
+ // case "starts_with":
2714
+ // return check_value.startsWith(value)
2715
+ // case "ends_with":
2716
+ // return check_value.endsWith(value)
2717
+ // default:
2718
+ // return false
2719
+ // }
2720
+ // }
2721
+
2722
+ // function is_pass_time_predicate(predicate, value, check_value) {
2723
+ // const current_time = new Date()
2724
+ // const check_date = new Date(check_value.epoch * 1000) // convert epoch to milliseconds
2725
+ // switch (predicate) {
2726
+ // case "past_x_hours":
2727
+ // const past_x_hours = new Date(current_time.getTime() - value * 60 * 60 * 1000)
2728
+ // return check_date >= past_x_hours
2729
+ // case "past_x_days":
2730
+ // const past_x_days = new Date(current_time.getTime() - value * 24 * 60 * 60 * 1000)
2731
+ // return check_date >= past_x_days
2732
+ // case "on_day_of_week":
2733
+ // return check_date.getDay() === value
2734
+ // case "today":
2735
+ // return (
2736
+ // check_date.getDate() === current_time.getDate() &&
2737
+ // check_date.getMonth() === current_time.getMonth() &&
2738
+ // check_date.getFullYear() === current_time.getFullYear()
2739
+ // )
2740
+ // case "yesterday":
2741
+ // const yesterday = new Date(current_time.getTime() - 24 * 60 * 60 * 1000)
2742
+ // return (
2743
+ // check_date.getDate() === yesterday.getDate() &&
2744
+ // check_date.getMonth() === yesterday.getMonth() &&
2745
+ // check_date.getFullYear() === yesterday.getFullYear()
2746
+ // )
2747
+ // case "tomorrow":
2748
+ // const tomorrow = new Date(current_time.getTime() + 24 * 60 * 60 * 1000)
2749
+ // return (
2750
+ // check_date.getDate() === tomorrow.getDate() &&
2751
+ // check_date.getMonth() === tomorrow.getMonth() &&
2752
+ // check_date.getFullYear() === tomorrow.getFullYear()
2753
+ // )
2754
+ // case "this_calendar_month":
2755
+ // return (
2756
+ // check_date.getMonth() === current_time.getMonth() && check_date.getFullYear() === current_time.getFullYear()
2757
+ // )
2758
+ // case "this_calendar_year":
2759
+ // return check_date.getFullYear() === current_time.getFullYear()
2760
+ // case "last_calendar_month":
2761
+ // return (
2762
+ // check_date.getMonth() === current_time.getMonth() - 1 &&
2763
+ // check_date.getFullYear() === current_time.getFullYear()
2764
+ // )
2765
+ // case "last_calendar_year":
2766
+ // return check_date.getFullYear() === current_time.getFullYear() - 1
2767
+ // case "next_calendar_month":
2768
+ // return (
2769
+ // check_date.getMonth() === current_time.getMonth() + 1 &&
2770
+ // check_date.getFullYear() === current_time.getFullYear()
2771
+ // )
2772
+ // case "next_calendar_year":
2773
+ // return check_date.getFullYear() === current_time.getFullYear() + 1
2774
+ // case "before_epoch":
2775
+ // return check_date < new Date(value * 1000)
2776
+ // case "after_epoch":
2777
+ // return check_date > new Date(value * 1000)
2778
+ // case "on_specific_date":
2779
+ // const specific_date = new Date(value * 1000)
2780
+ // return (
2781
+ // check_date.getDate() === specific_date.getDate() &&
2782
+ // check_date.getMonth() === specific_date.getMonth() &&
2783
+ // check_date.getFullYear() === specific_date.getFullYear()
2784
+ // )
2785
+ // default:
2786
+ // return false
2787
+ // }
2788
+ // }
2789
+
2790
+ // function is_match(match_for, value) {
2791
+ // if (match_for?.type == "operator") {
2792
+ // if (Array.isArray(match_for?.conditions)) {
2793
+ // for (let condition of match_for?.conditions) {
2794
+ // if (
2795
+ // data_type?.type == "time_literal"
2796
+ // ? is_pass_time_predicate(condition?.predicate, condition?.value, value)
2797
+ // : is_pass_predicate(condition?.predicate, condition?.value, value)
2798
+ // ) {
2799
+ // if (match_for?.operator == "any_of") {
2800
+ // return true
2801
+ // }
2802
+ // } else if (match_for?.operator == "all_of") {
2803
+ // return false
2804
+ // }
2805
+ // }
2806
+ // if (match_for?.operator == "all_of") {
2807
+ // return true
2808
+ // }
2809
+ // }
2810
+ // }
2811
+ // return false
2812
+ // }