sveltekit-ui 1.0.0

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 (487) hide show
  1. package/README.md +23 -0
  2. package/dist/Components/Alert/index.svelte +88 -0
  3. package/dist/Components/Alert/index.svelte.js +101 -0
  4. package/dist/Components/ArrowToggle/index.svelte +62 -0
  5. package/dist/Components/Attachment/index.svelte +69 -0
  6. package/dist/Components/Attachment/index.svelte.js +119 -0
  7. package/dist/Components/Audio/index.svelte +193 -0
  8. package/dist/Components/Audio/index.svelte.js +463 -0
  9. package/dist/Components/AudioEditor/index.svelte +253 -0
  10. package/dist/Components/AudioEditor/index.svelte.js +973 -0
  11. package/dist/Components/AudioEditor/samples/alloy-voice-sample.mp3 +0 -0
  12. package/dist/Components/AudioEditor/samples/echo-voice-sample.mp3 +0 -0
  13. package/dist/Components/AudioEditor/samples/fable-voice-sample.mp3 +0 -0
  14. package/dist/Components/AudioEditor/samples/nova-voice-sample.mp3 +0 -0
  15. package/dist/Components/AudioEditor/samples/onyx-voice-sample.mp3 +0 -0
  16. package/dist/Components/AudioEditor/samples/shimmer-voice-sample.mp3 +0 -0
  17. package/dist/Components/AuthCodeInput/index.svelte +85 -0
  18. package/dist/Components/AuthCodeInput/index.svelte.js +95 -0
  19. package/dist/Components/Breadcrumbs/index.svelte +27 -0
  20. package/dist/Components/Breadcrumbs/index.svelte.js +88 -0
  21. package/dist/Components/Button/index.svelte +721 -0
  22. package/dist/Components/Button/index.svelte.js +375 -0
  23. package/dist/Components/Chart/Klines/index.svelte +87 -0
  24. package/dist/Components/Chart/index.svelte +226 -0
  25. package/dist/Components/Chart/index.svelte.js +1084 -0
  26. package/dist/Components/ChartInput/DisplayNav/Klines/index.svelte +150 -0
  27. package/dist/Components/ChartInput/DisplayNav/Lines/index.svelte +45 -0
  28. package/dist/Components/ChartInput/DisplayNav/index.svelte +297 -0
  29. package/dist/Components/ChartInput/EditPanel/index.svelte +155 -0
  30. package/dist/Components/ChartInput/index.svelte +21 -0
  31. package/dist/Components/ChartInput/index.svelte.js +671 -0
  32. package/dist/Components/Checkbox/index.svelte +411 -0
  33. package/dist/Components/Checkbox/index.svelte.js +178 -0
  34. package/dist/Components/Code/index.svelte +23 -0
  35. package/dist/Components/Code/index.svelte.js +34 -0
  36. package/dist/Components/Color/index.svelte +51 -0
  37. package/dist/Components/Color/index.svelte.js +31 -0
  38. package/dist/Components/ColorInput/ChromaPicker/index.svelte +50 -0
  39. package/dist/Components/ColorInput/ColorPalette/index.svelte +62 -0
  40. package/dist/Components/ColorInput/OpacityPicker/index.svelte +68 -0
  41. package/dist/Components/ColorInput/ShowcasePicker/index.svelte +136 -0
  42. package/dist/Components/ColorInput/index.svelte +70 -0
  43. package/dist/Components/ColorInput/index.svelte.js +383 -0
  44. package/dist/Components/ConditionsInput/index.svelte +46 -0
  45. package/dist/Components/ConditionsInput/index.svelte.js +201 -0
  46. package/dist/Components/Confetti/index.svelte +98 -0
  47. package/dist/Components/Confetti/index.svelte.js +94 -0
  48. package/dist/Components/Content/index.svelte +471 -0
  49. package/dist/Components/Content/index.svelte.js +903 -0
  50. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte +31 -0
  51. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte.js +258 -0
  52. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte +31 -0
  53. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte.js +258 -0
  54. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte +58 -0
  55. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte.js +210 -0
  56. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte +28 -0
  57. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte.js +224 -0
  58. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte +44 -0
  59. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte.js +273 -0
  60. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte +41 -0
  61. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte.js +203 -0
  62. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte +19 -0
  63. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte.js +119 -0
  64. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte +60 -0
  65. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte.js +546 -0
  66. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte +47 -0
  67. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte.js +185 -0
  68. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte +35 -0
  69. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte.js +224 -0
  70. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte +20 -0
  71. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte.js +87 -0
  72. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte +25 -0
  73. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte.js +101 -0
  74. package/dist/Components/ContentInput/AttributesInput/index.svelte +338 -0
  75. package/dist/Components/ContentInput/AttributesInput/index.svelte.js +1446 -0
  76. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte +64 -0
  77. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte.js +97 -0
  78. package/dist/Components/ContentInput/ContentPanelBuilder/ElementList/index.svelte +122 -0
  79. package/dist/Components/ContentInput/ContentPanelBuilder/index.svelte +41 -0
  80. package/dist/Components/ContentInput/index.svelte +50 -0
  81. package/dist/Components/ContentInput/index.svelte.js +1066 -0
  82. package/dist/Components/CronInput/index.svelte +78 -0
  83. package/dist/Components/CronInput/index.svelte.js +199 -0
  84. package/dist/Components/DataTypeInput/index.svelte +174 -0
  85. package/dist/Components/DataTypeInput/index.svelte.js +568 -0
  86. package/dist/Components/Dropdown/index.svelte +116 -0
  87. package/dist/Components/Dropdown/index.svelte.js +403 -0
  88. package/dist/Components/EmailAddress/index.svelte +22 -0
  89. package/dist/Components/EmailAddress/index.svelte.js +45 -0
  90. package/dist/Components/ErrorX/index.svelte +58 -0
  91. package/dist/Components/Eye/index.svelte +57 -0
  92. package/dist/Components/FileInput/index.svelte +146 -0
  93. package/dist/Components/FileInput/index.svelte.js +226 -0
  94. package/dist/Components/FunctionInput/Node/helpers/DefinedTargetInput/index.svelte +110 -0
  95. package/dist/Components/FunctionInput/Node/helpers/Field/index.svelte +109 -0
  96. package/dist/Components/FunctionInput/Node/helpers/Field/index.svelte.js +208 -0
  97. package/dist/Components/FunctionInput/Node/helpers/InlineDropArea/index.svelte +97 -0
  98. package/dist/Components/FunctionInput/Node/helpers/InlineDropArea/index.svelte.js +105 -0
  99. package/dist/Components/FunctionInput/Node/helpers/ObjectInput/index.svelte +198 -0
  100. package/dist/Components/FunctionInput/Node/helpers/StackArea/index.svelte +169 -0
  101. package/dist/Components/FunctionInput/Node/helpers/StackArea/index.svelte.js +152 -0
  102. package/dist/Components/FunctionInput/Node/index.svelte +144 -0
  103. package/dist/Components/FunctionInput/Node/index.svelte.js +130 -0
  104. package/dist/Components/FunctionInput/index.svelte +356 -0
  105. package/dist/Components/FunctionInput/index.svelte.js +1215 -0
  106. package/dist/Components/Hamburger/index.svelte +99 -0
  107. package/dist/Components/HorizScrollBox/index.svelte +145 -0
  108. package/dist/Components/Icon/index.svelte +412 -0
  109. package/dist/Components/Icon/index.svelte.js +117 -0
  110. package/dist/Components/IconInput/index.svelte +77 -0
  111. package/dist/Components/IconInput/index.svelte.js +260 -0
  112. package/dist/Components/Image/index.svelte +121 -0
  113. package/dist/Components/Image/index.svelte.js +114 -0
  114. package/dist/Components/ImageEditor/Image/CropBox/index.svelte +165 -0
  115. package/dist/Components/ImageEditor/Image/index.svelte +104 -0
  116. package/dist/Components/ImageEditor/Panels/AI/index.svelte +36 -0
  117. package/dist/Components/ImageEditor/Panels/Crop/index.svelte +96 -0
  118. package/dist/Components/ImageEditor/Panels/File/QualityPicker/index.svelte +124 -0
  119. package/dist/Components/ImageEditor/Panels/File/index.svelte +74 -0
  120. package/dist/Components/ImageEditor/Panels/Filters/index.svelte +46 -0
  121. package/dist/Components/ImageEditor/Panels/Resize/index.svelte +58 -0
  122. package/dist/Components/ImageEditor/index.svelte +91 -0
  123. package/dist/Components/ImageEditor/index.svelte.js +1907 -0
  124. package/dist/Components/ImageSlider/index.svelte +124 -0
  125. package/dist/Components/ImageSlider/index.svelte.js +99 -0
  126. package/dist/Components/InfoBox/index.svelte +89 -0
  127. package/dist/Components/Json/Nested/index.svelte +157 -0
  128. package/dist/Components/Json/index.svelte +60 -0
  129. package/dist/Components/Json/index.svelte.js +594 -0
  130. package/dist/Components/LabeledItem/index.svelte +102 -0
  131. package/dist/Components/Layout/NavBar/FullNav/index.svelte +53 -0
  132. package/dist/Components/Layout/NavBar/NavGuts/index.svelte +87 -0
  133. package/dist/Components/Layout/NavBar/index.svelte +72 -0
  134. package/dist/Components/Layout/index.svelte +149 -0
  135. package/dist/Components/Layout/index.svelte.js +362 -0
  136. package/dist/Components/Link/index.svelte +46 -0
  137. package/dist/Components/Link/index.svelte.js +126 -0
  138. package/dist/Components/LoadingSuccessDiv/index.svelte +51 -0
  139. package/dist/Components/LoadingWheel/index.svelte +38 -0
  140. package/dist/Components/Location/index.svelte +85 -0
  141. package/dist/Components/Location/index.svelte.js +292 -0
  142. package/dist/Components/LocationInput/index.svelte +200 -0
  143. package/dist/Components/LocationInput/index.svelte.js +950 -0
  144. package/dist/Components/Number/index.svelte +47 -0
  145. package/dist/Components/Number/index.svelte.js +151 -0
  146. package/dist/Components/PhoneCountryCode/index.svelte +7 -0
  147. package/dist/Components/PhoneCountryCode/index.svelte.js +260 -0
  148. package/dist/Components/PhoneNumber/index.svelte +22 -0
  149. package/dist/Components/PhoneNumber/index.svelte.js +41 -0
  150. package/dist/Components/Popover/index.svelte +396 -0
  151. package/dist/Components/Popover/index.svelte.js +319 -0
  152. package/dist/Components/Qr/index.svelte +60 -0
  153. package/dist/Components/Qr/index.svelte.js +295 -0
  154. package/dist/Components/Slider/index.svelte +231 -0
  155. package/dist/Components/Slider/index.svelte.js +468 -0
  156. package/dist/Components/Spacer/index.svelte +41 -0
  157. package/dist/Components/StoragePicker/DisplayFile/index.svelte +15 -0
  158. package/dist/Components/StoragePicker/index.svelte +192 -0
  159. package/dist/Components/StoragePicker/index.svelte.js +593 -0
  160. package/dist/Components/SuccessCheck/index.svelte +56 -0
  161. package/dist/Components/TableAdvanced/ColumnInput/index.svelte +110 -0
  162. package/dist/Components/TableAdvanced/ColumnInput/index.svelte.js +494 -0
  163. package/dist/Components/TableAdvanced/FilterInput/index.svelte +54 -0
  164. package/dist/Components/TableAdvanced/FilterInput/index.svelte.js +247 -0
  165. package/dist/Components/TableAdvanced/Pagination/index.svelte +43 -0
  166. package/dist/Components/TableAdvanced/Pagination/index.svelte.js +97 -0
  167. package/dist/Components/TableAdvanced/SortByInput/index.svelte +79 -0
  168. package/dist/Components/TableAdvanced/SortByInput/index.svelte.js +191 -0
  169. package/dist/Components/TableAdvanced/index.svelte +268 -0
  170. package/dist/Components/TableAdvanced/index.svelte.js +1422 -0
  171. package/dist/Components/Tag/index.svelte +45 -0
  172. package/dist/Components/Tag/index.svelte.js +76 -0
  173. package/dist/Components/TextArrayInput/index.svelte +108 -0
  174. package/dist/Components/TextArrayInput/index.svelte.js +239 -0
  175. package/dist/Components/TextInput/PasswordTooltip/index.svelte +89 -0
  176. package/dist/Components/TextInput/index.svelte +223 -0
  177. package/dist/Components/TextInput/index.svelte.js +434 -0
  178. package/dist/Components/Time/index.svelte +7 -0
  179. package/dist/Components/Time/index.svelte.js +38 -0
  180. package/dist/Components/TimeInput/NumberToggler/index.svelte +34 -0
  181. package/dist/Components/TimeInput/NumberToggler/index.svelte.js +79 -0
  182. package/dist/Components/TimeInput/index.js +699 -0
  183. package/dist/Components/TimeInput/index.svelte +211 -0
  184. package/dist/Components/TimeInput/index.svelte.js +638 -0
  185. package/dist/Components/Tooltip/index.svelte +143 -0
  186. package/dist/Components/TransparentBackground/index.svelte +153 -0
  187. package/dist/Components/TypingDots/index.svelte +84 -0
  188. package/dist/Components/VariablePathInput/index.svelte +109 -0
  189. package/dist/Components/VariablePathInput/index.svelte.js +250 -0
  190. package/dist/Components/VideoTBD/index.svelte +100 -0
  191. package/dist/Components/XFollow/index.svelte +42 -0
  192. package/dist/Components/XPost/index.svelte +52 -0
  193. package/dist/Components/XPost/index.svelte.js +64 -0
  194. package/dist/Components/YoutubeVideo/index.svelte +73 -0
  195. package/dist/Components/YoutubeVideo/index.svelte.js +54 -0
  196. package/dist/actions/draggable.js +49 -0
  197. package/dist/actions/intersection_observer.js +24 -0
  198. package/dist/actions/no_spaces.js +33 -0
  199. package/dist/actions/numbers_only.js +26 -0
  200. package/dist/actions/scroll_y.js +28 -0
  201. package/dist/actions/stop_scroll_propagation_y.js +42 -0
  202. package/dist/actions/swipe_handler.js +295 -0
  203. package/dist/client/astc_formatting/index.js +1167 -0
  204. package/dist/client/docs/index.js +7612 -0
  205. package/dist/client/index.js +729 -0
  206. package/dist/client/types/index.js +4681 -0
  207. package/dist/index.js +161 -0
  208. package/dist/style.css +682 -0
  209. package/package.json +44 -0
  210. package/src/app.html +17 -0
  211. package/src/hooks.server.js +7 -0
  212. package/src/lib/Components/Alert/index.svelte +88 -0
  213. package/src/lib/Components/Alert/index.svelte.js +101 -0
  214. package/src/lib/Components/ArrowToggle/index.svelte +62 -0
  215. package/src/lib/Components/Attachment/index.svelte +69 -0
  216. package/src/lib/Components/Attachment/index.svelte.js +119 -0
  217. package/src/lib/Components/Audio/index.svelte +193 -0
  218. package/src/lib/Components/Audio/index.svelte.js +463 -0
  219. package/src/lib/Components/AudioEditor/index.svelte +253 -0
  220. package/src/lib/Components/AudioEditor/index.svelte.js +973 -0
  221. package/src/lib/Components/AudioEditor/samples/alloy-voice-sample.mp3 +0 -0
  222. package/src/lib/Components/AudioEditor/samples/echo-voice-sample.mp3 +0 -0
  223. package/src/lib/Components/AudioEditor/samples/fable-voice-sample.mp3 +0 -0
  224. package/src/lib/Components/AudioEditor/samples/nova-voice-sample.mp3 +0 -0
  225. package/src/lib/Components/AudioEditor/samples/onyx-voice-sample.mp3 +0 -0
  226. package/src/lib/Components/AudioEditor/samples/shimmer-voice-sample.mp3 +0 -0
  227. package/src/lib/Components/AuthCodeInput/index.svelte +85 -0
  228. package/src/lib/Components/AuthCodeInput/index.svelte.js +95 -0
  229. package/src/lib/Components/Breadcrumbs/index.svelte +27 -0
  230. package/src/lib/Components/Breadcrumbs/index.svelte.js +88 -0
  231. package/src/lib/Components/Button/index.svelte +721 -0
  232. package/src/lib/Components/Button/index.svelte.js +375 -0
  233. package/src/lib/Components/Chart/Klines/index.svelte +87 -0
  234. package/src/lib/Components/Chart/index.svelte +226 -0
  235. package/src/lib/Components/Chart/index.svelte.js +1084 -0
  236. package/src/lib/Components/ChartInput/DisplayNav/Klines/index.svelte +150 -0
  237. package/src/lib/Components/ChartInput/DisplayNav/Lines/index.svelte +45 -0
  238. package/src/lib/Components/ChartInput/DisplayNav/index.svelte +297 -0
  239. package/src/lib/Components/ChartInput/EditPanel/index.svelte +155 -0
  240. package/src/lib/Components/ChartInput/index.svelte +21 -0
  241. package/src/lib/Components/ChartInput/index.svelte.js +671 -0
  242. package/src/lib/Components/Checkbox/index.svelte +411 -0
  243. package/src/lib/Components/Checkbox/index.svelte.js +178 -0
  244. package/src/lib/Components/Code/index.svelte +23 -0
  245. package/src/lib/Components/Code/index.svelte.js +34 -0
  246. package/src/lib/Components/Color/index.svelte +51 -0
  247. package/src/lib/Components/Color/index.svelte.js +31 -0
  248. package/src/lib/Components/ColorInput/ChromaPicker/index.svelte +50 -0
  249. package/src/lib/Components/ColorInput/ColorPalette/index.svelte +62 -0
  250. package/src/lib/Components/ColorInput/OpacityPicker/index.svelte +68 -0
  251. package/src/lib/Components/ColorInput/ShowcasePicker/index.svelte +136 -0
  252. package/src/lib/Components/ColorInput/index.svelte +70 -0
  253. package/src/lib/Components/ColorInput/index.svelte.js +383 -0
  254. package/src/lib/Components/ConditionsInput/index.svelte +46 -0
  255. package/src/lib/Components/ConditionsInput/index.svelte.js +201 -0
  256. package/src/lib/Components/Confetti/index.svelte +98 -0
  257. package/src/lib/Components/Confetti/index.svelte.js +94 -0
  258. package/src/lib/Components/Content/index.svelte +471 -0
  259. package/src/lib/Components/Content/index.svelte.js +903 -0
  260. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte +31 -0
  261. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte.js +258 -0
  262. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte +31 -0
  263. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte.js +258 -0
  264. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte +58 -0
  265. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte.js +210 -0
  266. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte +28 -0
  267. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte.js +224 -0
  268. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte +44 -0
  269. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte.js +273 -0
  270. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte +41 -0
  271. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte.js +203 -0
  272. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte +19 -0
  273. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte.js +119 -0
  274. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte +60 -0
  275. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte.js +546 -0
  276. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte +47 -0
  277. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte.js +185 -0
  278. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte +35 -0
  279. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte.js +224 -0
  280. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte +20 -0
  281. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte.js +87 -0
  282. package/src/lib/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte +25 -0
  283. package/src/lib/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte.js +101 -0
  284. package/src/lib/Components/ContentInput/AttributesInput/index.svelte +338 -0
  285. package/src/lib/Components/ContentInput/AttributesInput/index.svelte.js +1446 -0
  286. package/src/lib/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte +64 -0
  287. package/src/lib/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte.js +97 -0
  288. package/src/lib/Components/ContentInput/ContentPanelBuilder/ElementList/index.svelte +122 -0
  289. package/src/lib/Components/ContentInput/ContentPanelBuilder/index.svelte +41 -0
  290. package/src/lib/Components/ContentInput/index.svelte +50 -0
  291. package/src/lib/Components/ContentInput/index.svelte.js +1066 -0
  292. package/src/lib/Components/CronInput/index.svelte +78 -0
  293. package/src/lib/Components/CronInput/index.svelte.js +199 -0
  294. package/src/lib/Components/DataTypeInput/index.svelte +174 -0
  295. package/src/lib/Components/DataTypeInput/index.svelte.js +568 -0
  296. package/src/lib/Components/Dropdown/index.svelte +116 -0
  297. package/src/lib/Components/Dropdown/index.svelte.js +403 -0
  298. package/src/lib/Components/EmailAddress/index.svelte +22 -0
  299. package/src/lib/Components/EmailAddress/index.svelte.js +45 -0
  300. package/src/lib/Components/ErrorX/index.svelte +58 -0
  301. package/src/lib/Components/Eye/index.svelte +57 -0
  302. package/src/lib/Components/FileInput/index.svelte +146 -0
  303. package/src/lib/Components/FileInput/index.svelte.js +226 -0
  304. package/src/lib/Components/FunctionInput/Node/helpers/DefinedTargetInput/index.svelte +110 -0
  305. package/src/lib/Components/FunctionInput/Node/helpers/Field/index.svelte +109 -0
  306. package/src/lib/Components/FunctionInput/Node/helpers/Field/index.svelte.js +208 -0
  307. package/src/lib/Components/FunctionInput/Node/helpers/InlineDropArea/index.svelte +97 -0
  308. package/src/lib/Components/FunctionInput/Node/helpers/InlineDropArea/index.svelte.js +105 -0
  309. package/src/lib/Components/FunctionInput/Node/helpers/ObjectInput/index.svelte +198 -0
  310. package/src/lib/Components/FunctionInput/Node/helpers/StackArea/index.svelte +169 -0
  311. package/src/lib/Components/FunctionInput/Node/helpers/StackArea/index.svelte.js +152 -0
  312. package/src/lib/Components/FunctionInput/Node/index.svelte +144 -0
  313. package/src/lib/Components/FunctionInput/Node/index.svelte.js +130 -0
  314. package/src/lib/Components/FunctionInput/index.svelte +356 -0
  315. package/src/lib/Components/FunctionInput/index.svelte.js +1215 -0
  316. package/src/lib/Components/Hamburger/index.svelte +99 -0
  317. package/src/lib/Components/HorizScrollBox/index.svelte +145 -0
  318. package/src/lib/Components/Icon/index.svelte +412 -0
  319. package/src/lib/Components/Icon/index.svelte.js +117 -0
  320. package/src/lib/Components/IconInput/index.svelte +77 -0
  321. package/src/lib/Components/IconInput/index.svelte.js +260 -0
  322. package/src/lib/Components/Image/index.svelte +121 -0
  323. package/src/lib/Components/Image/index.svelte.js +114 -0
  324. package/src/lib/Components/ImageEditor/Image/CropBox/index.svelte +165 -0
  325. package/src/lib/Components/ImageEditor/Image/index.svelte +104 -0
  326. package/src/lib/Components/ImageEditor/Panels/AI/index.svelte +36 -0
  327. package/src/lib/Components/ImageEditor/Panels/Crop/index.svelte +96 -0
  328. package/src/lib/Components/ImageEditor/Panels/File/QualityPicker/index.svelte +124 -0
  329. package/src/lib/Components/ImageEditor/Panels/File/index.svelte +74 -0
  330. package/src/lib/Components/ImageEditor/Panels/Filters/index.svelte +46 -0
  331. package/src/lib/Components/ImageEditor/Panels/Resize/index.svelte +58 -0
  332. package/src/lib/Components/ImageEditor/index.svelte +91 -0
  333. package/src/lib/Components/ImageEditor/index.svelte.js +1907 -0
  334. package/src/lib/Components/ImageSlider/index.svelte +124 -0
  335. package/src/lib/Components/ImageSlider/index.svelte.js +99 -0
  336. package/src/lib/Components/InfoBox/index.svelte +89 -0
  337. package/src/lib/Components/Json/Nested/index.svelte +157 -0
  338. package/src/lib/Components/Json/index.svelte +60 -0
  339. package/src/lib/Components/Json/index.svelte.js +594 -0
  340. package/src/lib/Components/LabeledItem/index.svelte +102 -0
  341. package/src/lib/Components/Layout/NavBar/FullNav/index.svelte +53 -0
  342. package/src/lib/Components/Layout/NavBar/NavGuts/index.svelte +87 -0
  343. package/src/lib/Components/Layout/NavBar/index.svelte +72 -0
  344. package/src/lib/Components/Layout/index.svelte +149 -0
  345. package/src/lib/Components/Layout/index.svelte.js +362 -0
  346. package/src/lib/Components/Link/index.svelte +46 -0
  347. package/src/lib/Components/Link/index.svelte.js +126 -0
  348. package/src/lib/Components/LoadingSuccessDiv/index.svelte +51 -0
  349. package/src/lib/Components/LoadingWheel/index.svelte +38 -0
  350. package/src/lib/Components/Location/index.svelte +85 -0
  351. package/src/lib/Components/Location/index.svelte.js +292 -0
  352. package/src/lib/Components/LocationInput/index.svelte +200 -0
  353. package/src/lib/Components/LocationInput/index.svelte.js +950 -0
  354. package/src/lib/Components/Number/index.svelte +47 -0
  355. package/src/lib/Components/Number/index.svelte.js +151 -0
  356. package/src/lib/Components/PhoneCountryCode/index.svelte +7 -0
  357. package/src/lib/Components/PhoneCountryCode/index.svelte.js +260 -0
  358. package/src/lib/Components/PhoneNumber/index.svelte +22 -0
  359. package/src/lib/Components/PhoneNumber/index.svelte.js +41 -0
  360. package/src/lib/Components/Popover/index.svelte +396 -0
  361. package/src/lib/Components/Popover/index.svelte.js +319 -0
  362. package/src/lib/Components/Qr/index.svelte +60 -0
  363. package/src/lib/Components/Qr/index.svelte.js +295 -0
  364. package/src/lib/Components/Slider/index.svelte +231 -0
  365. package/src/lib/Components/Slider/index.svelte.js +468 -0
  366. package/src/lib/Components/Spacer/index.svelte +41 -0
  367. package/src/lib/Components/StoragePicker/DisplayFile/index.svelte +15 -0
  368. package/src/lib/Components/StoragePicker/index.svelte +192 -0
  369. package/src/lib/Components/StoragePicker/index.svelte.js +593 -0
  370. package/src/lib/Components/SuccessCheck/index.svelte +56 -0
  371. package/src/lib/Components/TableAdvanced/ColumnInput/index.svelte +110 -0
  372. package/src/lib/Components/TableAdvanced/ColumnInput/index.svelte.js +494 -0
  373. package/src/lib/Components/TableAdvanced/FilterInput/index.svelte +54 -0
  374. package/src/lib/Components/TableAdvanced/FilterInput/index.svelte.js +247 -0
  375. package/src/lib/Components/TableAdvanced/Pagination/index.svelte +43 -0
  376. package/src/lib/Components/TableAdvanced/Pagination/index.svelte.js +97 -0
  377. package/src/lib/Components/TableAdvanced/SortByInput/index.svelte +79 -0
  378. package/src/lib/Components/TableAdvanced/SortByInput/index.svelte.js +191 -0
  379. package/src/lib/Components/TableAdvanced/index.svelte +268 -0
  380. package/src/lib/Components/TableAdvanced/index.svelte.js +1422 -0
  381. package/src/lib/Components/Tag/index.svelte +45 -0
  382. package/src/lib/Components/Tag/index.svelte.js +76 -0
  383. package/src/lib/Components/TextArrayInput/index.svelte +108 -0
  384. package/src/lib/Components/TextArrayInput/index.svelte.js +239 -0
  385. package/src/lib/Components/TextInput/PasswordTooltip/index.svelte +89 -0
  386. package/src/lib/Components/TextInput/index.svelte +223 -0
  387. package/src/lib/Components/TextInput/index.svelte.js +434 -0
  388. package/src/lib/Components/Time/index.svelte +7 -0
  389. package/src/lib/Components/Time/index.svelte.js +38 -0
  390. package/src/lib/Components/TimeInput/NumberToggler/index.svelte +34 -0
  391. package/src/lib/Components/TimeInput/NumberToggler/index.svelte.js +79 -0
  392. package/src/lib/Components/TimeInput/index.js +699 -0
  393. package/src/lib/Components/TimeInput/index.svelte +211 -0
  394. package/src/lib/Components/TimeInput/index.svelte.js +638 -0
  395. package/src/lib/Components/Tooltip/index.svelte +143 -0
  396. package/src/lib/Components/TransparentBackground/index.svelte +153 -0
  397. package/src/lib/Components/TypingDots/index.svelte +84 -0
  398. package/src/lib/Components/VariablePathInput/index.svelte +109 -0
  399. package/src/lib/Components/VariablePathInput/index.svelte.js +250 -0
  400. package/src/lib/Components/VideoTBD/index.svelte +100 -0
  401. package/src/lib/Components/XFollow/index.svelte +42 -0
  402. package/src/lib/Components/XPost/index.svelte +52 -0
  403. package/src/lib/Components/XPost/index.svelte.js +64 -0
  404. package/src/lib/Components/YoutubeVideo/index.svelte +73 -0
  405. package/src/lib/Components/YoutubeVideo/index.svelte.js +54 -0
  406. package/src/lib/actions/draggable.js +49 -0
  407. package/src/lib/actions/intersection_observer.js +24 -0
  408. package/src/lib/actions/no_spaces.js +33 -0
  409. package/src/lib/actions/numbers_only.js +26 -0
  410. package/src/lib/actions/scroll_y.js +28 -0
  411. package/src/lib/actions/stop_scroll_propagation_y.js +42 -0
  412. package/src/lib/actions/swipe_handler.js +295 -0
  413. package/src/lib/client/astc_formatting/index.js +1167 -0
  414. package/src/lib/client/docs/index.js +7612 -0
  415. package/src/lib/client/index.js +729 -0
  416. package/src/lib/client/types/index.js +4681 -0
  417. package/src/lib/index.js +161 -0
  418. package/src/lib/style.css +682 -0
  419. package/src/notlib/assets/static/Logo/index.svelte +27 -0
  420. package/src/routes/+layout.js +8 -0
  421. package/src/routes/+layout.svelte +176 -0
  422. package/src/routes/+page.svelte +83 -0
  423. package/src/routes/[component]/+page.svelte +167 -0
  424. package/src/routes/[component]/Showcase/Alert/index.svelte +26 -0
  425. package/src/routes/[component]/Showcase/Audio/index.svelte +86 -0
  426. package/src/routes/[component]/Showcase/AudioEditor/index.svelte +93 -0
  427. package/src/routes/[component]/Showcase/AuthCodeInput/index.svelte +13 -0
  428. package/src/routes/[component]/Showcase/Breadcrumbs/index.svelte +44 -0
  429. package/src/routes/[component]/Showcase/Button/index.svelte +350 -0
  430. package/src/routes/[component]/Showcase/Chart/index.svelte +11117 -0
  431. package/src/routes/[component]/Showcase/Checkbox/index.svelte +52 -0
  432. package/src/routes/[component]/Showcase/Code/index.svelte +13 -0
  433. package/src/routes/[component]/Showcase/Color/index.svelte +28 -0
  434. package/src/routes/[component]/Showcase/ColorInput/index.svelte +35 -0
  435. package/src/routes/[component]/Showcase/ConditionsInput/index.svelte +18 -0
  436. package/src/routes/[component]/Showcase/Confetti/index.svelte +22 -0
  437. package/src/routes/[component]/Showcase/Content/index.svelte +144 -0
  438. package/src/routes/[component]/Showcase/ContentInput/index.svelte +358 -0
  439. package/src/routes/[component]/Showcase/CronInput/index.svelte +30 -0
  440. package/src/routes/[component]/Showcase/DocsDefinition/index.svelte +155 -0
  441. package/src/routes/[component]/Showcase/Dropdown/index.svelte +88 -0
  442. package/src/routes/[component]/Showcase/FileInput/index.svelte +40 -0
  443. package/src/routes/[component]/Showcase/FunctionInput/index.svelte +77 -0
  444. package/src/routes/[component]/Showcase/Icon/index.svelte +120 -0
  445. package/src/routes/[component]/Showcase/IconInput/index.svelte +15 -0
  446. package/src/routes/[component]/Showcase/Image/index.svelte +119 -0
  447. package/src/routes/[component]/Showcase/ImageEditor/index.svelte +89 -0
  448. package/src/routes/[component]/Showcase/ImageSlider/index.svelte +26 -0
  449. package/src/routes/[component]/Showcase/InfoBox/index.svelte +44 -0
  450. package/src/routes/[component]/Showcase/Json/index.svelte +80 -0
  451. package/src/routes/[component]/Showcase/LabeledItem/index.svelte +18 -0
  452. package/src/routes/[component]/Showcase/Link/index.svelte +15 -0
  453. package/src/routes/[component]/Showcase/LoadingWheel/index.svelte +10 -0
  454. package/src/routes/[component]/Showcase/Location/index.svelte +422 -0
  455. package/src/routes/[component]/Showcase/LocationInput/index.svelte +121 -0
  456. package/src/routes/[component]/Showcase/Number/index.svelte +55 -0
  457. package/src/routes/[component]/Showcase/Popover/index.svelte +225 -0
  458. package/src/routes/[component]/Showcase/Qr/index.svelte +77 -0
  459. package/src/routes/[component]/Showcase/Slider/index.svelte +92 -0
  460. package/src/routes/[component]/Showcase/Spacer/index.svelte +27 -0
  461. package/src/routes/[component]/Showcase/StoragePicker/index.svelte +139 -0
  462. package/src/routes/[component]/Showcase/TableAdvanced/index.svelte +888 -0
  463. package/src/routes/[component]/Showcase/Tag/index.svelte +27 -0
  464. package/src/routes/[component]/Showcase/TextArrayInput/index.svelte +23 -0
  465. package/src/routes/[component]/Showcase/TextInput/index.svelte +95 -0
  466. package/src/routes/[component]/Showcase/Time/index.svelte +43 -0
  467. package/src/routes/[component]/Showcase/TimeInput/index.svelte +100 -0
  468. package/src/routes/[component]/Showcase/Tooltip/index.svelte +37 -0
  469. package/src/routes/[component]/Showcase/TransparentBackground/index.svelte +26 -0
  470. package/src/routes/[component]/Showcase/XFollow/index.svelte +7 -0
  471. package/src/routes/[component]/Showcase/XPost/index.svelte +24 -0
  472. package/src/routes/[component]/Showcase/YoutubeVideo/index.svelte +17 -0
  473. package/src/routes/test/+page.svelte +53 -0
  474. package/static/apple-touch-icon.png +0 -0
  475. package/static/browserconfig.xml +9 -0
  476. package/static/favicon-96x96.png +0 -0
  477. package/static/favicon-inactive.svg +4 -0
  478. package/static/favicon.svg +14 -0
  479. package/static/fonts/ProximaVara.woff2 +0 -0
  480. package/static/fonts/Quicksand-VariableFont.woff2 +0 -0
  481. package/static/fonts/RobotoSerif-VariableFont.woff2 +0 -0
  482. package/static/icon.png +0 -0
  483. package/static/site.webmanifest +21 -0
  484. package/static/web-app-manifest-192x192.png +0 -0
  485. package/static/web-app-manifest-512x512.png +0 -0
  486. package/svelte.config.js +12 -0
  487. package/vite.config.js +6 -0
@@ -0,0 +1,4681 @@
1
+ export const mime_type_extensions = {
2
+ "image/webp": "webp",
3
+ "image/jpeg": "jpeg",
4
+ "image/png": "png",
5
+ "image/gif": "gif",
6
+ "image/bmp": "bmp",
7
+ "image/tiff": "tiff",
8
+ "image/svg+xml": "svg",
9
+ "audio/mpeg": "mp3",
10
+ "audio/wav": "wav",
11
+ "audio/ogg": "ogg",
12
+ "audio/aac": "aac",
13
+ "audio/webm": "webm",
14
+ "audio/flac": "flac",
15
+ "audio/x-aiff": "aif",
16
+ "video/mp4": "mp4",
17
+ "video/webm": "webm",
18
+ "video/ogg": "ogv",
19
+ "video/x-msvideo": "avi",
20
+ "video/x-ms-wmv": "wmv",
21
+ "video/mpeg": "mpeg",
22
+ "video/quicktime": "mov",
23
+ "application/json": "json",
24
+ "application/javascript": "js",
25
+ "application/xml": "xml",
26
+ "application/pdf": "pdf",
27
+ "application/msword": "doc",
28
+ "application/vnd.ms-excel": "xls",
29
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "xlsx",
30
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document": "docx",
31
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation": "pptx",
32
+ "text/plain": "txt",
33
+ "text/html": "html",
34
+ "text/css": "css",
35
+ "text/csv": "csv",
36
+ "text/tab-separated-values": "tsv",
37
+ "text/markdown": "md",
38
+ }
39
+
40
+ export const acceptable_storage_mime_types = [
41
+ "image/webp",
42
+ "image/jpeg",
43
+ "image/png",
44
+ "image/gif",
45
+ "image/svg+xml",
46
+ "audio/mpeg",
47
+ "audio/wav",
48
+ "audio/ogg",
49
+ "audio/aac",
50
+ "audio/webm",
51
+ "audio/flac",
52
+ "video/mp4",
53
+ "video/webm",
54
+ "video/ogg",
55
+ "video/x-msvideo",
56
+ "video/mpeg",
57
+ "video/quicktime",
58
+ "application/json",
59
+ "application/javascript",
60
+ "application/xml",
61
+ "application/pdf",
62
+ "application/msword",
63
+ "application/vnd.ms-excel",
64
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
65
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
66
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation",
67
+ "text/plain",
68
+ "text/html",
69
+ "text/css",
70
+ "text/csv",
71
+ "text/tab-separated-values",
72
+ "text/markdown",
73
+ ]
74
+
75
+ export const node_categories = {
76
+ main: {
77
+ h: 7,
78
+ display_order: 1,
79
+ },
80
+ variables: {
81
+ h: 9,
82
+ display_order: 2,
83
+ },
84
+ actions: {
85
+ h: 12,
86
+ display_order: 3,
87
+ },
88
+ math: {
89
+ h: 15,
90
+ display_order: 4,
91
+ },
92
+ compare: {
93
+ h: 18,
94
+ display_order: 5,
95
+ },
96
+ arrays: {
97
+ h: 20,
98
+ display_order: 6,
99
+ },
100
+ triggers: {
101
+ h: 22,
102
+ display_order: 7,
103
+ },
104
+ }
105
+
106
+ // triggers:
107
+ // cron
108
+ // link_visited / qr_code_scanned
109
+ // signed_up_to_contibase
110
+ // subscribed_to_email_list
111
+ // unsubscribed_from_email_list
112
+ // submits_form
113
+ // opens_email
114
+ // clicks_link_in_email
115
+ // votes_in_poll
116
+ // replies_to_email
117
+ // date_has_passed
118
+ // makes_a_purchase
119
+ // abandons_cart
120
+ // qualified_score_changes
121
+ // value_score
122
+ // subscription_payment_failed
123
+ // views_post_on_contibase
124
+ // upgraded
125
+ // downgraded
126
+ // email was sent,received,opened,clicked
127
+ // days_without_opens
128
+ // days_without_clicks
129
+ // days_without_opens_change
130
+ // referred_users_change
131
+ // subscription_tier_change
132
+ // twitter_verified
133
+ // twitter_followers
134
+ // instagram_verified
135
+ // instagram_followers
136
+ // discord_verified
137
+ // webhook_endpoint_called
138
+ // manual_call
139
+ // user_poll_amounts
140
+ // user_poll_correct within last 30 days
141
+ // user_poll_amounts
142
+ // user_poll_correct_percentage of last 30 days or of last 10 polls
143
+
144
+ // get_current_date
145
+ // ask_chat_ai
146
+ // set_custom_field_on_subscriber
147
+ // set_subscriber_tier
148
+ // send_email
149
+ // rate_limiter
150
+
151
+ // image_literal
152
+ // audio_literal
153
+ // get_typeof
154
+
155
+ const array_literal = {
156
+ kind: "literal",
157
+ category: "variables",
158
+ name: "Array",
159
+ postgres_type: "jsonb",
160
+ json_schema: { type: "array" },
161
+ validator: (input) => {
162
+ // validate tbd
163
+ },
164
+ }
165
+ const array_uniform_literal = {
166
+ kind: "literal",
167
+ category: "variables",
168
+ name: "Array Uniform",
169
+ postgres_type: "jsonb",
170
+ json_schema: { type: "array" },
171
+ validator: (input) => {
172
+ // validate tbd
173
+ },
174
+ }
175
+ const object_literal = {
176
+ kind: "literal",
177
+ category: "variables",
178
+ name: "Object",
179
+ postgres_type: "jsonb",
180
+ json_schema: { type: "object" },
181
+ validator: (input) => {
182
+ // validate here
183
+ },
184
+ }
185
+ const object_uniform_literal = {
186
+ kind: "literal",
187
+ category: "variables",
188
+ name: "Object Uniform",
189
+ postgres_type: "jsonb",
190
+ json_schema: { type: "object" },
191
+ validator: (input) => {
192
+ // validate here
193
+ },
194
+ }
195
+ const text_literal = {
196
+ kind: "literal",
197
+ category: "variables",
198
+ name: "Text",
199
+ postgres_type: "text",
200
+ json_schema: { type: "string" },
201
+ validator: (input) => {
202
+ // validate here
203
+ },
204
+ }
205
+ const boolean_literal = {
206
+ kind: "literal",
207
+ category: "variables",
208
+ name: "Boolean",
209
+ postgres_type: "boolean",
210
+ json_schema: { type: "boolean" },
211
+ validator: (input) => {
212
+ // validate here
213
+ },
214
+ }
215
+ const int_literal = {
216
+ kind: "literal",
217
+ category: "variables",
218
+ name: "Integer",
219
+ postgres_type: "int",
220
+ json_schema: { type: "number" },
221
+ validator: (input) => {
222
+ // validate here
223
+ },
224
+ }
225
+ const bigint_literal = {
226
+ kind: "literal",
227
+ category: "variables",
228
+ name: "Big Integer",
229
+ postgres_type: "bigint",
230
+ json_schema: { type: "number" },
231
+ validator: (input) => {
232
+ // validate here
233
+ },
234
+ }
235
+ const null_literal = {
236
+ kind: "literal",
237
+ category: "variables",
238
+ name: "Null",
239
+ postgres_type: "jsonb",
240
+ json_schema: { type: "null" },
241
+ validator: (input) => {
242
+ // validate here
243
+ },
244
+ }
245
+ const epoch_literal = {
246
+ kind: "literal",
247
+ category: "variables",
248
+ name: "Epoch",
249
+ postgres_type: "bigint",
250
+ json_schema: { type: "number", description: "Epoch in seconds" },
251
+ validator: (input) => {
252
+ // validate here
253
+ },
254
+ }
255
+ const float_literal = {
256
+ kind: "literal",
257
+ category: "variables",
258
+ name: "Float",
259
+ postgres_type: "float",
260
+ json_schema: { type: "number" },
261
+ validator: (input) => {
262
+ // validate here
263
+ },
264
+ }
265
+ const color_literal = {
266
+ kind: "literal",
267
+ category: "variables",
268
+ name: "Color",
269
+ postgres_type: "jsonb",
270
+ json_schema: {
271
+ type: "object",
272
+ description:
273
+ "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) ",
274
+ properties: {
275
+ l: { type: "number" },
276
+ c: { type: "number" },
277
+ h: { type: "number" },
278
+ o: { type: "number" },
279
+ is_dark_theme_invert: { type: "boolean" },
280
+ },
281
+ additionalProperties: false,
282
+ required: ["l", "c", "h", "o", "is_dark_theme_invert"],
283
+ },
284
+ validator: (input) => {
285
+ // validate here
286
+ },
287
+ }
288
+ const domain_literal = {
289
+ kind: "literal",
290
+ category: "variables",
291
+ name: "Domain",
292
+ postgres_type: "text",
293
+ json_schema: {
294
+ type: "string",
295
+ },
296
+ validator: (input) => {
297
+ // validate here
298
+ },
299
+ }
300
+ const email_address_literal = {
301
+ kind: "literal",
302
+ category: "variables",
303
+ name: "Email Address",
304
+ postgres_type: "text",
305
+ json_schema: {
306
+ type: "string",
307
+ // format: "email",
308
+ },
309
+ validator: (input) => {
310
+ // validate here
311
+ },
312
+ }
313
+ const email_address_full_literal = {
314
+ kind: "literal",
315
+ category: "variables",
316
+ name: "Email Address Full",
317
+ postgres_type: "jsonb",
318
+ json_schema: {
319
+ type: "object",
320
+ properties: {
321
+ domain: domain_literal?.json_schema,
322
+ domain_id: text_literal?.json_schema,
323
+ account_id: text_literal?.json_schema,
324
+ root_domain: domain_literal?.json_schema,
325
+ display_name: text_literal?.json_schema,
326
+ mailbox_hash: text_literal?.json_schema,
327
+ email_address: email_address_literal?.json_schema,
328
+ root_email_address: email_address_literal?.json_schema,
329
+ epoch_email_address_verified: epoch_literal?.json_schema,
330
+ },
331
+ additionalProperties: false,
332
+ required: ["domain", "root_domain", "mailbox_hash", "email_address", "root_email_address"],
333
+ },
334
+ validator: (input) => {
335
+ // validate here
336
+ },
337
+ }
338
+ const email_attachment_literal = {
339
+ kind: "literal",
340
+ category: "variables",
341
+ name: "Email Attachment",
342
+ postgres_type: "jsonb",
343
+ json_schema: {
344
+ type: "object",
345
+ properties: {
346
+ name: text_literal?.json_schema,
347
+ content: text_literal?.json_schema,
348
+ content_id: text_literal?.json_schema,
349
+ content_type: text_literal?.json_schema,
350
+ },
351
+ additionalProperties: false,
352
+ required: ["name", "content", "content_id", "content_type"],
353
+ },
354
+ validator: (input) => {
355
+ // validate here
356
+ },
357
+ }
358
+ const json_literal = {
359
+ kind: "literal",
360
+ category: "variables",
361
+ name: "JSON",
362
+ postgres_type: "jsonb",
363
+ json_schema: {
364
+ anyOf: [
365
+ { type: "null" },
366
+ { type: "boolean" },
367
+ { type: "number" },
368
+ { type: "string" },
369
+ {
370
+ type: "array",
371
+ items: { $ref: "#/$defs/json_literal" },
372
+ },
373
+ {
374
+ type: "object",
375
+ additionalProperties: { $ref: "#/$defs/json_literal" },
376
+ },
377
+ ],
378
+ },
379
+ validator: (input) => {
380
+ // validate here
381
+ },
382
+ }
383
+ const storage_item_literal = {
384
+ kind: "literal",
385
+ category: "variables",
386
+ name: "Storage Item",
387
+ postgres_type: "jsonb",
388
+ json_schema: {
389
+ type: "object",
390
+ properties: {
391
+ id: text_literal?.json_schema,
392
+ db_epoch_created: epoch_literal?.json_schema,
393
+ db_epoch_updated: epoch_literal?.json_schema,
394
+ account_id: text_literal?.json_schema,
395
+ folder_path: { type: "array", items: text_literal?.json_schema },
396
+ file_name: text_literal?.json_schema,
397
+ file_extension: text_literal?.json_schema,
398
+ mime_type: text_literal?.json_schema,
399
+ size_kb: int_literal?.json_schema,
400
+ metadata: json_literal?.json_schema,
401
+ is_temporary: boolean_literal?.json_schema,
402
+ set_to_delete_initiated_at: epoch_literal?.json_schema,
403
+ is_public: boolean_literal?.json_schema,
404
+ transcription: text_literal?.json_schema,
405
+ },
406
+ additionalProperties: false,
407
+ required: [],
408
+ },
409
+ validator: (input) => {
410
+ // validate here
411
+ },
412
+ }
413
+ const html_literal = {
414
+ kind: "literal",
415
+ category: "variables",
416
+ name: "HTML",
417
+ postgres_type: "text",
418
+ json_schema: text_literal?.json_schema,
419
+ validator: (input) => {
420
+ // validate here
421
+ },
422
+ }
423
+ const phone_literal = {
424
+ kind: "literal",
425
+ category: "variables",
426
+ name: "Phone Number",
427
+ postgres_type: "jsonb",
428
+ json_schema: {
429
+ // type: "object",
430
+ },
431
+ validator: (input) => {
432
+ // validate here
433
+ },
434
+ }
435
+ const vector_literal = {
436
+ kind: "literal",
437
+ category: "variables",
438
+ name: "Vector",
439
+ postgres_type: "vector",
440
+ json_schema: {
441
+ type: "array",
442
+ items: { type: "number" },
443
+ },
444
+ validator: (input) => {
445
+ // validate here
446
+ },
447
+ }
448
+ const icon_literal = {
449
+ kind: "literal",
450
+ category: "variables",
451
+ name: "Icon",
452
+ postgres_type: "jsonb",
453
+ json_schema: {
454
+ type: "object",
455
+ properties: {
456
+ icon: text_literal?.json_schema,
457
+ color: color_literal?.json_schema,
458
+ },
459
+ additionalProperties: false,
460
+ required: ["icon", "color"],
461
+ },
462
+ validator: (input) => {
463
+ // validate here
464
+ },
465
+ }
466
+ const time_literal = {
467
+ kind: "literal",
468
+ category: "variables",
469
+ name: "Time",
470
+ postgres_type: "jsonb",
471
+ json_schema: {
472
+ type: "object",
473
+ properties: {
474
+ epoch: { type: "number" },
475
+ granularity: { type: "string", enum: ["year", "month", "week", "day", "hour", "minute", "second"] },
476
+ year: { type: "number" },
477
+ month: { type: "number", enum: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] },
478
+ day_of_month: { type: "number", minimum: 1, maximum: 31 },
479
+ day_of_week: { type: "number", enum: [0, 1, 2, 3, 4, 5, 6] },
480
+ day_of_year: { type: "number", minimum: 1, maximum: 365 },
481
+ week_of_year: { type: "number", minimum: 1, maximum: 52 },
482
+ hour: { type: "number", minimum: 1, maximum: 24 },
483
+ minute: { type: "number", minimum: 1, maximum: 60 },
484
+ timezone: { type: "string" },
485
+ content: { type: "string" },
486
+ datetime: { type: "string" },
487
+ },
488
+ additionalProperties: false,
489
+ required: ["epoch"],
490
+ },
491
+ validator: (input) => {
492
+ // validate here
493
+ },
494
+ }
495
+ const time_zone_literal = {
496
+ kind: "literal",
497
+ category: "variables",
498
+ name: "Time Zone",
499
+ postgres_type: "text",
500
+ json_schema: text_literal?.json_schema,
501
+ validator: (input) => {
502
+ // validate here
503
+ },
504
+ }
505
+ const location_literal = {
506
+ kind: "literal",
507
+ category: "variables",
508
+ name: "Location Apple",
509
+ postgres_type: "jsonb",
510
+ json_schema: {
511
+ type: "object",
512
+ properties: {
513
+ place_id: { type: "string" },
514
+ name: { type: "string" },
515
+ muid: { type: "string" },
516
+ latitude: { type: "number" },
517
+ longitude: { type: "number" },
518
+ formatted_address: { type: "string" },
519
+ country: { type: "string" },
520
+ country_code: { type: "string" },
521
+ administrative_area: { type: "string" },
522
+ administrative_area_code: { type: "string" },
523
+ locality: { type: "string" },
524
+ sub_locality: { type: "string" },
525
+ full_thoroughfare: { type: "string" },
526
+ },
527
+ required: ["latitude", "longitude", "name"],
528
+ additionalProperties: false,
529
+ },
530
+ validator: (input) => {
531
+ // validate here
532
+ },
533
+ }
534
+ const cron_literal = {
535
+ kind: "literal",
536
+ category: "variables",
537
+ name: "Cron",
538
+ postgres_type: "jsonb",
539
+ json_schema: {
540
+ type: "object",
541
+ properties: {
542
+ content: { type: "string" },
543
+ cron: { type: "string" },
544
+ minute: { type: "string" },
545
+ hour: { type: "string" },
546
+ day_of_month: { type: "string" },
547
+ month: { type: "string" },
548
+ day_of_week: { type: "string" },
549
+ },
550
+ additionalProperties: false,
551
+ required: [],
552
+ },
553
+ validator: (input) => {
554
+ // validate here
555
+ },
556
+ }
557
+ const variable_path_literal = {
558
+ kind: "literal",
559
+ category: "variables",
560
+ name: "Variable Path",
561
+ postgres_type: "jsonb",
562
+ json_schema: {
563
+ type: "array",
564
+ description: "The path to the value within variables.",
565
+ items: {
566
+ anyOf: [
567
+ {
568
+ type: "string",
569
+ },
570
+ {
571
+ type: "number",
572
+ },
573
+ {
574
+ type: "array",
575
+ items: {
576
+ anyOf: [
577
+ {
578
+ type: "string",
579
+ },
580
+ {
581
+ type: "number",
582
+ },
583
+ ],
584
+ },
585
+ },
586
+ ],
587
+ },
588
+ },
589
+ validator: (input) => {
590
+ // validate here
591
+ },
592
+ }
593
+ const content_literal = {
594
+ kind: "literal",
595
+ category: "variables",
596
+ name: "Content",
597
+ postgres_type: "jsonb",
598
+ // json_schema: get_content_node_json_schema("content_literal"),
599
+ validator: (input) => {
600
+ // validate here
601
+ },
602
+ }
603
+ const table_id_for_foreign_row_literal = {
604
+ kind: "literal",
605
+ category: "variables",
606
+ name: "Table ID for Foreign Row",
607
+ postgres_type: "text",
608
+ // json_schema: get_content_node_json_schema("content_literal"),
609
+ validator: (input) => {
610
+ // validate here
611
+ },
612
+ }
613
+ // image_literal
614
+ // audio_literal
615
+ // code_literal
616
+ // cron_literal
617
+ // dropdown_literal
618
+ // file_literal
619
+ // icon_literal
620
+ // text_array_literal
621
+ // time_literal
622
+ // function_literal
623
+ // idk need to go to bed and think on fresh not what a literal even is as far as data types content types function type
624
+
625
+ // defined_target_literal: {
626
+ // kind: "literal",
627
+ // category: "variables",
628
+ // name: "Defined Target Literal",
629
+ // value: {
630
+ // identifier: null,
631
+ // property_path: [],
632
+ // },
633
+ // node_structure: [[{ ui_type: "input", value: "defined_target_literal" }]],
634
+ // postgres_type: "jsonb",
635
+ // json_schema: {
636
+ // type: "object",
637
+ // properties: {
638
+ // identifier: {
639
+ // type: "string",
640
+ // },
641
+ // property_path: {
642
+ // type: "array",
643
+ // minItems: 1,
644
+ // maxItems: 50,
645
+ // items: {
646
+ // anyOf: [
647
+ // {
648
+ // type: "string",
649
+ // pattern: "^[a-z0-9]+(_[a-z0-9]+)*$",
650
+ // },
651
+ // {
652
+ // type: "number",
653
+ // },
654
+ // ],
655
+ // },
656
+ // },
657
+ // },
658
+ // },
659
+ // validator: (input) => {
660
+ // // validate here, made up of identifier_literal values
661
+ // },
662
+ // },
663
+
664
+ // stack_literal: {
665
+ // kind: "literal",
666
+ // category: "hidden",
667
+ // name: "Stack Literal",
668
+ // child_node_options: [
669
+ // "define",
670
+ // "set_defined",
671
+ // "run_defined",
672
+ // "instantiate_function",
673
+ // "if_then",
674
+ // "if_then_else",
675
+ // "for_loop",
676
+ // "return",
677
+ // "log",
678
+ // "call_endpoint",
679
+ // "cron_job",
680
+ // ],
681
+ // postgres_type: "jsonb",
682
+ // json_schema: {
683
+ // type: "array",
684
+ // items: {
685
+ // type: "object",
686
+ // properties: {
687
+ // type: {
688
+ // type: "string",
689
+ // },
690
+ // value: {
691
+ // type: "any",
692
+ // },
693
+ // },
694
+ // },
695
+ // },
696
+ // validator: (input) => {
697
+ // // validate here
698
+ // },
699
+ // },
700
+
701
+ // function_literal: {
702
+ // kind: "literal",
703
+ // category: "main",
704
+ // name: "Function Literal",
705
+ // fields: {
706
+ // parameters: {
707
+ // node_options: ["parameters_literal"],
708
+ // forced_node: "parameters_literal",
709
+ // },
710
+ // is_do_collapsed: {
711
+ // node_options: ["arrow_toggle_literal", "checkbox_literal"],
712
+ // forced_node: "arrow_toggle_literal",
713
+ // },
714
+ // do: {
715
+ // node_options: ["stack_literal"],
716
+ // forced_node: "stack_literal",
717
+ // },
718
+ // },
719
+ // node_structure: [
720
+ // [
721
+ // { ui_type: "field", field: "is_do_collapsed" },
722
+ // { ui_type: "text", value: "function with parameters" },
723
+ // { ui_type: "field", field: "parameters" },
724
+ // ],
725
+ // { ui_type: "stack", field: "do" },
726
+ // ],
727
+ // postgres_type: "jsonb",
728
+ // json_schema: {
729
+ // type: "object",
730
+ // default: { parameters: [], is_do_collapsed: false, do: [] },
731
+ // properties: {
732
+ // parameters: {
733
+ // type: "array",
734
+ // items: {
735
+ // type: "object",
736
+ // default: { identifier: null, type: null },
737
+ // properties: {
738
+ // identifier: {
739
+ // type: "string",
740
+ // minLength: 1,
741
+ // maxLength: 50,
742
+ // pattern: "^[a-z0-9]+(_[a-z0-9]+)*$",
743
+ // },
744
+ // type: {
745
+ // type: "string",
746
+ // enum: all_node_types,
747
+ // },
748
+ // },
749
+ // },
750
+ // },
751
+ // is_do_collapsed: {
752
+ // type: "boolean",
753
+ // },
754
+ // do: {
755
+ // type: "array",
756
+ // items: node_json_schema,
757
+ // },
758
+ // },
759
+ // required: ["do"],
760
+ // },
761
+ // validator: (input) => {
762
+ // // validate here
763
+ // },
764
+ // },
765
+
766
+ // define: {
767
+ // kind: "definition",
768
+ // category: "variables",
769
+ // name: "Define",
770
+ // fields: {
771
+ // identifier: {
772
+ // node_options: ["identifier_literal", "get_defined"],
773
+ // forced_node: "identifier_literal",
774
+ // },
775
+ // value: {
776
+ // node_options: all_node_types,
777
+ // },
778
+ // },
779
+ // postgres_type: "jsonb",
780
+ // node_structure: [
781
+ // [
782
+ // { ui_type: "field", field: "identifier" },
783
+ // { ui_type: "text", value: "=" },
784
+ // { ui_type: "field", field: "value" },
785
+ // ],
786
+ // ],
787
+ // json_schema: {
788
+ // type: "object",
789
+ // properties: {
790
+ // identifier: {
791
+ // type: "string",
792
+ // minLength: 1,
793
+ // maxLength: 50,
794
+ // pattern: "^[a-z0-9]+(_[a-z0-9]+)*$",
795
+ // },
796
+ // value: node_json_schema,
797
+ // },
798
+ // required: ["identifier", "value"],
799
+ // },
800
+ // validator: (input) => {
801
+ // // validate here
802
+ // },
803
+ // },
804
+
805
+ // set_defined: {
806
+ // kind: "definition",
807
+ // category: "variables",
808
+ // name: "Set Defined",
809
+ // fields: {
810
+ // defined_target: {
811
+ // node_options: ["defined_target_literal"],
812
+ // forced_node: "defined_target_literal",
813
+ // },
814
+ // value: {
815
+ // node_options: all_node_types,
816
+ // },
817
+ // },
818
+ // postgres_type: "jsonb",
819
+ // node_structure: [
820
+ // [
821
+ // { ui_type: "field", field: "defined_target" },
822
+ // { ui_type: "text", value: "=" },
823
+ // { ui_type: "field", field: "value" },
824
+ // ],
825
+ // ],
826
+ // json_schema: {
827
+ // type: "object",
828
+ // properties: {
829
+ // defined_target: {
830
+ // type: "object",
831
+ // properties: {
832
+ // identifier: {
833
+ // type: "string",
834
+ // },
835
+ // property_path: {
836
+ // type: "array",
837
+ // minItems: 1,
838
+ // maxItems: 50,
839
+ // items: {
840
+ // anyOf: [
841
+ // {
842
+ // type: "string",
843
+ // pattern: "^[a-z0-9]+(_[a-z0-9]+)*$",
844
+ // },
845
+ // {
846
+ // type: "number",
847
+ // },
848
+ // ],
849
+ // },
850
+ // },
851
+ // },
852
+ // },
853
+ // value: node_json_schema,
854
+ // },
855
+ // required: ["defined_target"],
856
+ // },
857
+ // validator: (input) => {
858
+ // // validate here
859
+ // },
860
+ // },
861
+
862
+ // get_defined: {
863
+ // kind: "expression",
864
+ // category: "variables",
865
+ // name: "Get Defined",
866
+ // fields: {
867
+ // defined_target: {
868
+ // node_options: ["defined_target_literal"],
869
+ // forced_node: "defined_target_literal",
870
+ // },
871
+ // },
872
+ // postgres_type: "jsonb",
873
+ // node_structure: [
874
+ // [
875
+ // { ui_type: "text", value: "value of" },
876
+ // { ui_type: "field", field: "defined_target" },
877
+ // ],
878
+ // ],
879
+ // json_schema: {
880
+ // type: "object",
881
+ // properties: {
882
+ // defined_target: {
883
+ // type: "array",
884
+ // minItems: 1,
885
+ // maxItems: 50,
886
+ // items: {
887
+ // anyOf: [
888
+ // {
889
+ // type: "string",
890
+ // pattern: "^[a-z0-9]+(_[a-z0-9]+)*$",
891
+ // },
892
+ // {
893
+ // type: "number",
894
+ // },
895
+ // ],
896
+ // },
897
+ // },
898
+ // },
899
+ // required: ["defined_target"],
900
+ // },
901
+ // output: {
902
+ // json_schema: {
903
+ // type: "any",
904
+ // },
905
+ // },
906
+ // validator: (input) => {
907
+ // // validate here
908
+ // },
909
+ // },
910
+
911
+ // run_defined: {
912
+ // kind: "expression",
913
+ // category: "variables",
914
+ // name: "Run Defined",
915
+ // fields: {
916
+ // defined_target: {
917
+ // node_options: ["defined_target_literal"],
918
+ // forced_node: "defined_target_literal",
919
+ // },
920
+ // arguments: {
921
+ // node_options: ["arguments_literal"],
922
+ // forced_node: "arguments_literal",
923
+ // },
924
+ // },
925
+ // postgres_type: "jsonb",
926
+ // node_structure: [
927
+ // [
928
+ // { ui_type: "text", value: "run" },
929
+ // { ui_type: "field", field: "defined_target" },
930
+ // { ui_type: "text", value: "with arguments" },
931
+ // { ui_type: "field", field: "arguments" },
932
+ // ],
933
+ // ],
934
+ // json_schema: {
935
+ // type: "object",
936
+ // properties: {
937
+ // defined_target: {
938
+ // type: "array",
939
+ // minItems: 1,
940
+ // maxItems: 50,
941
+ // items: {
942
+ // anyOf: [
943
+ // {
944
+ // type: "string",
945
+ // pattern: "^[a-z0-9]+(_[a-z0-9]+)*$",
946
+ // },
947
+ // {
948
+ // type: "number",
949
+ // },
950
+ // ],
951
+ // },
952
+ // },
953
+ // arguments: {
954
+ // type: "array",
955
+ // items: {
956
+ // parameter: {
957
+ // type: "string",
958
+ // },
959
+ // value: {
960
+ // type: "any",
961
+ // },
962
+ // },
963
+ // },
964
+ // },
965
+ // required: ["defined_target"],
966
+ // },
967
+ // output: {
968
+ // json_schema: {
969
+ // type: "any",
970
+ // },
971
+ // },
972
+ // validator: (input) => {
973
+ // // validate here
974
+ // },
975
+ // },
976
+
977
+ // if_then: {
978
+ // kind: "statement",
979
+ // category: "main",
980
+ // name: "If Then",
981
+ // fields: {
982
+ // condition: {
983
+ // node_options: value_node_types,
984
+ // },
985
+ // is_do_collapsed: {
986
+ // node_options: ["arrow_toggle_literal"],
987
+ // forced_node: "arrow_toggle_literal",
988
+ // },
989
+ // do: {
990
+ // node_options: ["stack_literal"],
991
+ // forced_node: "stack_literal",
992
+ // },
993
+ // },
994
+ // postgres_type: "jsonb",
995
+ // node_structure: [
996
+ // [
997
+ // { ui_type: "field", field: "is_do_collapsed" },
998
+ // { ui_type: "text", value: "if" },
999
+ // { ui_type: "field", field: "condition" },
1000
+ // { ui_type: "text", value: "then" },
1001
+ // ],
1002
+ // { ui_type: "stack", field: "do" },
1003
+ // ],
1004
+ // json_schema: {
1005
+ // type: "object",
1006
+ // properties: {
1007
+ // condition: {
1008
+ // type: ["boolean", "number", "string", "epoch", "object", "array"],
1009
+ // },
1010
+ // passed_do: {
1011
+ // type: "array",
1012
+ // items: node_json_schema,
1013
+ // },
1014
+ // },
1015
+ // required: ["condition"],
1016
+ // },
1017
+ // validator: (input) => {
1018
+ // // validate here
1019
+ // },
1020
+ // },
1021
+
1022
+ // if_then_else: {
1023
+ // kind: "statement",
1024
+ // category: "main",
1025
+ // name: "If Then Else",
1026
+ // fields: {
1027
+ // condition: {
1028
+ // node_options: value_node_types,
1029
+ // },
1030
+ // is_passed_do_collapsed: {
1031
+ // node_options: ["arrow_toggle_literal"],
1032
+ // forced_node: "arrow_toggle_literal",
1033
+ // },
1034
+ // passed_do: {
1035
+ // node_options: ["stack_literal"],
1036
+ // forced_node: "stack_literal",
1037
+ // },
1038
+ // is_failed_do_collapsed: {
1039
+ // node_options: ["arrow_toggle_literal"],
1040
+ // forced_node: "arrow_toggle_literal",
1041
+ // },
1042
+ // failed_do: {
1043
+ // node_options: ["stack_literal"],
1044
+ // forced_node: "stack_literal",
1045
+ // },
1046
+ // },
1047
+ // postgres_type: "jsonb",
1048
+ // node_structure: [
1049
+ // [
1050
+ // { ui_type: "field", field: "is_passed_do_collapsed" },
1051
+ // { ui_type: "text", value: "if" },
1052
+ // { ui_type: "field", field: "condition" },
1053
+ // { ui_type: "text", value: "then" },
1054
+ // ],
1055
+ // { ui_type: "stack", field: "passed_do" },
1056
+ // [
1057
+ // { ui_type: "field", field: "is_failed_do_collapsed" },
1058
+ // { ui_type: "text", value: "else" },
1059
+ // ],
1060
+ // { ui_type: "stack", field: "failed_do" },
1061
+ // ],
1062
+ // json_schema: {
1063
+ // type: "object",
1064
+ // properties: {
1065
+ // condition: {
1066
+ // type: ["boolean", "number", "string", "epoch", "object", "array"],
1067
+ // },
1068
+ // passed_do: {
1069
+ // type: "array",
1070
+ // items: node_json_schema,
1071
+ // },
1072
+ // failed_do: {
1073
+ // type: "array",
1074
+ // items: node_json_schema,
1075
+ // },
1076
+ // },
1077
+ // required: ["condition"],
1078
+ // },
1079
+ // validator: (input) => {
1080
+ // // validate here
1081
+ // },
1082
+ // },
1083
+
1084
+ // for_loop: {
1085
+ // kind: "statement",
1086
+ // category: "main",
1087
+ // name: "For Loop",
1088
+ // fields: {
1089
+ // loop_over: {
1090
+ // node_options: ["get_defined", "int_literal"],
1091
+ // },
1092
+ // iter_item_identifier: {
1093
+ // node_options: ["identifier_literal"],
1094
+ // forced_node: "identifier_literal",
1095
+ // },
1096
+ // is_do_collapsed: {
1097
+ // node_options: ["arrow_toggle_literal"],
1098
+ // forced_node: "arrow_toggle_literal",
1099
+ // },
1100
+ // do: {
1101
+ // node_options: ["stack_literal"],
1102
+ // forced_node: "stack_literal",
1103
+ // },
1104
+ // },
1105
+ // postgres_type: "jsonb",
1106
+ // node_structure: [
1107
+ // [
1108
+ // { ui_type: "field", field: "is_do_collapsed" },
1109
+ // { ui_type: "text", value: "loop over" },
1110
+ // { ui_type: "field", field: "loop_over" },
1111
+ // { ui_type: "text", value: "as" },
1112
+ // { ui_type: "field", field: "iter_item_identifier" },
1113
+ // ],
1114
+ // { ui_type: "stack", field: "do" },
1115
+ // ],
1116
+ // json_schema: {
1117
+ // type: "object",
1118
+ // properties: {
1119
+ // loop_over: {
1120
+ // type: ["number", "object", "array"],
1121
+ // },
1122
+ // iter_item_identifier: {
1123
+ // type: "string",
1124
+ // minLength: 1,
1125
+ // maxLength: 80,
1126
+ // pattern: "^[a-z0-9]+(_[a-z0-9]+)*$",
1127
+ // },
1128
+ // do: {
1129
+ // type: "array",
1130
+ // items: node_json_schema,
1131
+ // },
1132
+ // },
1133
+ // required: ["loop_over"],
1134
+ // },
1135
+ // validator: (input) => {
1136
+ // // validate here
1137
+ // },
1138
+ // },
1139
+
1140
+ // return: {
1141
+ // kind: "statement",
1142
+ // category: "main",
1143
+ // name: "Return",
1144
+ // fields: {
1145
+ // value: {
1146
+ // node_options: all_node_types,
1147
+ // },
1148
+ // },
1149
+ // postgres_type: "jsonb",
1150
+ // node_structure: [
1151
+ // [
1152
+ // { ui_type: "text", value: "return" },
1153
+ // { ui_type: "field", field: "value" },
1154
+ // ],
1155
+ // ],
1156
+ // json_schema: {
1157
+ // type: "object",
1158
+ // properties: {
1159
+ // value: node_json_schema,
1160
+ // },
1161
+ // },
1162
+ // validator: (input) => {
1163
+ // // validate here
1164
+ // },
1165
+ // },
1166
+
1167
+ // log: {
1168
+ // kind: "statement",
1169
+ // category: "main",
1170
+ // name: "Log",
1171
+ // fields: {
1172
+ // type: {
1173
+ // node_options: ["dropdown_literal"],
1174
+ // forced_node: "dropdown_literal",
1175
+ // dropdown_options: [
1176
+ // { key: "log", name: "Log" },
1177
+ // { key: "warning", name: "Warning" },
1178
+ // { key: "error", name: "Error" },
1179
+ // ],
1180
+ // dropdown_default: "log",
1181
+ // },
1182
+ // label: {
1183
+ // node_options: ["text_literal"],
1184
+ // forced_node: "text_literal",
1185
+ // },
1186
+ // value: {
1187
+ // node_options: all_node_types,
1188
+ // },
1189
+ // },
1190
+ // postgres_type: "jsonb",
1191
+ // node_structure: [
1192
+ // [
1193
+ // { ui_type: "field", field: "type" },
1194
+ // { ui_type: "field", field: "label" },
1195
+ // { ui_type: "field", field: "value" },
1196
+ // ],
1197
+ // ],
1198
+ // json_schema: {
1199
+ // type: "object",
1200
+ // properties: {
1201
+ // kind: {
1202
+ // type: "string",
1203
+ // enum: ["log", "warning", "error"],
1204
+ // default: "log",
1205
+ // },
1206
+ // label: {
1207
+ // type: "string",
1208
+ // },
1209
+ // value: node_json_schema,
1210
+ // },
1211
+ // required: ["kind", "value"],
1212
+ // },
1213
+ // validator: (input) => {
1214
+ // // validate here
1215
+ // },
1216
+ // },
1217
+
1218
+ // truthy_compare: {
1219
+ // kind: "expression",
1220
+ // category: "compare",
1221
+ // name: "Truthy Compare",
1222
+ // fields: {
1223
+ // a: {
1224
+ // node_options: all_node_types,
1225
+ // },
1226
+ // b: {
1227
+ // node_options: all_node_types,
1228
+ // },
1229
+ // operator: {
1230
+ // node_options: ["dropdown_literal"],
1231
+ // forced_node: "dropdown_literal",
1232
+ // dropdown_options: [
1233
+ // { key: "logical_or", name: "logical_or (||)" },
1234
+ // { key: "nullish_coalescing", name: "nullish_coalescing (??)" },
1235
+ // { key: "and", name: "and (&&)" },
1236
+ // ],
1237
+ // dropdown_default: "and",
1238
+ // },
1239
+ // },
1240
+ // postgres_type: "jsonb",
1241
+ // node_structure: [
1242
+ // [
1243
+ // { ui_type: "field", field: "a" },
1244
+ // { ui_type: "field", field: "operator" },
1245
+ // { ui_type: "field", field: "b" },
1246
+ // ],
1247
+ // ],
1248
+ // json_schema: {
1249
+ // type: "object",
1250
+ // properties: {
1251
+ // a: {
1252
+ // type: ["string", "number", "boolean", "object", "array"],
1253
+ // },
1254
+ // b: {
1255
+ // type: ["string", "number", "boolean", "object", "array"],
1256
+ // },
1257
+ // operator: {
1258
+ // type: "string",
1259
+ // enum: ["logical_or", "nullish_coalescing", "and"],
1260
+ // default: "and",
1261
+ // },
1262
+ // },
1263
+ // required: ["operator"],
1264
+ // },
1265
+ // output: {
1266
+ // json_schema: {
1267
+ // type: "boolean_literal",
1268
+ // },
1269
+ // },
1270
+ // validator: (input) => {
1271
+ // // validate here
1272
+ // },
1273
+ // },
1274
+
1275
+ // arithmetic_binary_operation: {
1276
+ // kind: "expression",
1277
+ // category: "math",
1278
+ // name: "Arithmatic Binary Operator",
1279
+ // fields: {
1280
+ // a: {
1281
+ // node_options: [
1282
+ // "get_defined",
1283
+ // "arithmetic_binary_operation",
1284
+ // "round",
1285
+ // "parse",
1286
+ // "get_length",
1287
+ // "int_literal",
1288
+ // "bigint_literal",
1289
+ // "float_literal",
1290
+ // ],
1291
+ // },
1292
+ // b: {
1293
+ // node_options: [
1294
+ // "get_defined",
1295
+ // "arithmetic_binary_operation",
1296
+ // "round",
1297
+ // "parse",
1298
+ // "get_length",
1299
+ // "int_literal",
1300
+ // "bigint_literal",
1301
+ // "float_literal",
1302
+ // ],
1303
+ // },
1304
+ // operator: {
1305
+ // node_options: ["dropdown_literal"],
1306
+ // forced_node: "dropdown_literal",
1307
+ // dropdown_options: [
1308
+ // { key: "add", name: "addition (+)" },
1309
+ // { key: "subtract", name: "subtraction (-)" },
1310
+ // { key: "multiply", name: "multiplication (*)" },
1311
+ // { key: "divide", name: "division (/)" },
1312
+ // { key: "remainder", name: "remainder (%)" },
1313
+ // { key: "exponent", name: "exponent (^)" },
1314
+ // { key: "min", name: "lowest" },
1315
+ // { key: "max", name: "highest" },
1316
+ // { key: "rand_value_between", name: "random value between" },
1317
+ // { key: "to_precision", name: "round to significant figures" },
1318
+ // ],
1319
+ // dropdown_default: "add",
1320
+ // },
1321
+ // },
1322
+ // postgres_type: "jsonb",
1323
+ // node_structure: [
1324
+ // [
1325
+ // { ui_type: "field", field: "a" },
1326
+ // { ui_type: "field", field: "operator" },
1327
+ // { ui_type: "field", field: "b" },
1328
+ // ],
1329
+ // ],
1330
+ // json_schema: {
1331
+ // type: "object",
1332
+ // properties: {
1333
+ // a: {
1334
+ // type: "number",
1335
+ // },
1336
+ // b: {
1337
+ // type: "number",
1338
+ // },
1339
+ // operator: {
1340
+ // type: "string",
1341
+ // enum: [
1342
+ // "add",
1343
+ // "subtract",
1344
+ // "multiply",
1345
+ // "divide",
1346
+ // "remainder",
1347
+ // "exponent",
1348
+ // "min",
1349
+ // "max",
1350
+ // "rand_value_between",
1351
+ // "to_precision",
1352
+ // ],
1353
+ // default: "add",
1354
+ // },
1355
+ // },
1356
+ // required: ["a", "b", "operator"],
1357
+ // },
1358
+ // output: {
1359
+ // json_schema: {
1360
+ // type: "number",
1361
+ // },
1362
+ // },
1363
+ // validator: (input) => {
1364
+ // // validate here
1365
+ // },
1366
+ // },
1367
+
1368
+ // round: {
1369
+ // kind: "expression",
1370
+ // category: "math",
1371
+ // name: "Round",
1372
+ // fields: {
1373
+ // value: {
1374
+ // node_options: [
1375
+ // "get_defined",
1376
+ // "arithmetic_binary_operation",
1377
+ // "round",
1378
+ // "parse",
1379
+ // "get_length",
1380
+ // "int_literal",
1381
+ // "bigint_literal",
1382
+ // "float_literal",
1383
+ // ],
1384
+ // },
1385
+ // operator: {
1386
+ // node_options: ["dropdown_literal"],
1387
+ // forced_node: "dropdown_literal",
1388
+ // dropdown_options: [
1389
+ // { key: "nearest_int", name: "nearest_int" },
1390
+ // { key: "floor_int", name: "floor_int" },
1391
+ // { key: "ceil_int", name: "ceil_int" },
1392
+ // { key: "absolute_value", name: "absolute_value" },
1393
+ // ],
1394
+ // dropdown_default: "floor_int",
1395
+ // },
1396
+ // },
1397
+ // postgres_type: "jsonb",
1398
+ // node_structure: [
1399
+ // [
1400
+ // { ui_type: "field", field: "operator" },
1401
+ // { ui_type: "field", field: "value" },
1402
+ // ],
1403
+ // ],
1404
+ // json_schema: {
1405
+ // type: "object",
1406
+ // properties: {
1407
+ // value: {
1408
+ // type: "number",
1409
+ // },
1410
+ // operator: {
1411
+ // type: "string",
1412
+ // enum: ["nearest_int", "floor_int", "ceil_int", "absolute_value"],
1413
+ // default: "floor_int",
1414
+ // },
1415
+ // },
1416
+ // required: ["value", "operator"],
1417
+ // },
1418
+ // output: {
1419
+ // json_schema: {
1420
+ // type: "number",
1421
+ // },
1422
+ // },
1423
+ // validator: (input) => {
1424
+ // // validate here
1425
+ // },
1426
+ // },
1427
+
1428
+ // parse: {
1429
+ // kind: "expression",
1430
+ // category: "main",
1431
+ // name: "Parse",
1432
+ // fields: {
1433
+ // value: {
1434
+ // node_options: ["get_defined", "text_literal"],
1435
+ // },
1436
+ // operator: {
1437
+ // node_options: ["dropdown_literal"],
1438
+ // forced_node: "dropdown_literal",
1439
+ // dropdown_options: [
1440
+ // { key: "to_int", name: "to_int" },
1441
+ // { key: "to_float", name: "to_float" },
1442
+ // { key: "to_json", name: "to_json" },
1443
+ // { key: "to_boolean", name: "to_boolean" },
1444
+ // ],
1445
+ // dropdown_default: "to_json",
1446
+ // },
1447
+ // },
1448
+ // postgres_type: "jsonb",
1449
+ // node_structure: [
1450
+ // [
1451
+ // { ui_type: "field", field: "operator" },
1452
+ // { ui_type: "field", field: "value" },
1453
+ // ],
1454
+ // ],
1455
+ // json_schema: {
1456
+ // type: "object",
1457
+ // properties: {
1458
+ // value: {
1459
+ // type: "string",
1460
+ // },
1461
+ // operator: {
1462
+ // type: "string",
1463
+ // enum: ["to_int", "to_float", "to_object", "to_array", "to_boolean"],
1464
+ // default: "to_object",
1465
+ // },
1466
+ // },
1467
+ // required: ["value", "operator"],
1468
+ // },
1469
+ // output: {
1470
+ // json_schema: {
1471
+ // type: "any",
1472
+ // },
1473
+ // },
1474
+ // validator: (input) => {
1475
+ // // validate here
1476
+ // },
1477
+ // },
1478
+
1479
+ // add_item_to_array: {
1480
+ // kind: "expression",
1481
+ // category: "arrays",
1482
+ // name: "Add Item To Array",
1483
+ // fields: {
1484
+ // array: {
1485
+ // node_options: ["get_defined", "empty_array_literal"],
1486
+ // },
1487
+ // value_to_add: {
1488
+ // node_options: all_node_types,
1489
+ // },
1490
+ // where_to_add: {
1491
+ // node_options: ["dropdown_literal"],
1492
+ // forced_node: "dropdown_literal",
1493
+ // dropdown_options: [
1494
+ // { key: "start", name: "start" },
1495
+ // { key: "end", name: "end" },
1496
+ // ],
1497
+ // dropdown_default: "end",
1498
+ // },
1499
+ // },
1500
+ // postgres_type: "jsonb",
1501
+ // node_structure: [
1502
+ // [
1503
+ // { ui_type: "text", value: "add" },
1504
+ // { ui_type: "field", field: "value_to_add" },
1505
+ // { ui_type: "text", value: "to" },
1506
+ // { ui_type: "field", field: "array" },
1507
+ // { ui_type: "text", value: "at" },
1508
+ // { ui_type: "field", field: "where_to_add" },
1509
+ // ],
1510
+ // ],
1511
+ // json_schema: {
1512
+ // type: "object",
1513
+ // properties: {
1514
+ // array: {
1515
+ // type: "array",
1516
+ // items: {
1517
+ // type: "any",
1518
+ // },
1519
+ // },
1520
+ // value_to_add: node_json_schema,
1521
+ // where_to_add: {
1522
+ // type: "string",
1523
+ // enum: ["start", "end"],
1524
+ // default: "end",
1525
+ // },
1526
+ // },
1527
+ // required: ["array", "value_to_add", "where_to_add"],
1528
+ // },
1529
+ // output: {
1530
+ // json_schema: {
1531
+ // type: "array",
1532
+ // items: {
1533
+ // type: "any",
1534
+ // },
1535
+ // },
1536
+ // },
1537
+ // validator: (input) => {
1538
+ // // validate here
1539
+ // },
1540
+ // },
1541
+
1542
+ // add_item_to_array_at_index: {
1543
+ // kind: "expression",
1544
+ // category: "arrays",
1545
+ // name: "Add Item To Array At Index",
1546
+ // fields: {
1547
+ // array: {
1548
+ // node_options: ["get_defined", "empty_array_literal"],
1549
+ // },
1550
+ // value_to_add: {
1551
+ // node_options: all_node_types,
1552
+ // },
1553
+ // where_to_add: {
1554
+ // node_options: ["get_defined", "int_literal"],
1555
+ // },
1556
+ // },
1557
+ // node_structure: [
1558
+ // [
1559
+ // { ui_type: "text", value: "add" },
1560
+ // { ui_type: "field", field: "value_to_add" },
1561
+ // { ui_type: "text", value: "to" },
1562
+ // { ui_type: "field", field: "array" },
1563
+ // { ui_type: "text", value: "at index" },
1564
+ // { ui_type: "field", field: "where_to_add" },
1565
+ // ],
1566
+ // ],
1567
+ // postgres_type: "jsonb",
1568
+ // json_schema: {
1569
+ // type: "object",
1570
+ // properties: {
1571
+ // array: {
1572
+ // type: "array",
1573
+ // items: {
1574
+ // type: "any",
1575
+ // },
1576
+ // },
1577
+ // value_to_add: node_json_schema,
1578
+ // where_to_add: {
1579
+ // type: "number",
1580
+ // },
1581
+ // },
1582
+ // required: ["array", "value_to_add", "where_to_add"],
1583
+ // },
1584
+ // output: {
1585
+ // json_schema: {
1586
+ // type: "array",
1587
+ // items: {
1588
+ // type: "any",
1589
+ // },
1590
+ // },
1591
+ // },
1592
+ // validator: (input) => {
1593
+ // // validate here
1594
+ // },
1595
+ // },
1596
+
1597
+ // remove_item_from_array: {
1598
+ // kind: "expression",
1599
+ // category: "arrays",
1600
+ // name: "Remove Item From Array",
1601
+ // fields: {
1602
+ // array: {
1603
+ // node_options: ["get_defined"],
1604
+ // forced_node: "get_defined",
1605
+ // },
1606
+ // where_to_remove: {
1607
+ // node_options: ["dropdown_literal"],
1608
+ // forced_node: "dropdown_literal",
1609
+ // dropdown_options: [
1610
+ // { key: "start", name: "start" },
1611
+ // { key: "end", name: "end" },
1612
+ // ],
1613
+ // dropdown_default: "end",
1614
+ // },
1615
+ // },
1616
+ // postgres_type: "jsonb",
1617
+ // node_structure: [
1618
+ // [
1619
+ // { ui_type: "text", value: "remove item from array" },
1620
+ // { ui_type: "field", field: "array" },
1621
+ // { ui_type: "text", value: "at" },
1622
+ // { ui_type: "field", field: "where_to_remove" },
1623
+ // ],
1624
+ // ],
1625
+ // json_schema: {
1626
+ // type: "object",
1627
+ // properties: {
1628
+ // array: {
1629
+ // type: "array",
1630
+ // items: {
1631
+ // type: "any",
1632
+ // },
1633
+ // },
1634
+ // where_to_remove: {
1635
+ // type: "string",
1636
+ // enum: ["start", "end"],
1637
+ // default: "end",
1638
+ // },
1639
+ // },
1640
+ // required: ["array", "where_to_remove"],
1641
+ // },
1642
+ // output: {
1643
+ // json_schema: {
1644
+ // type: "array",
1645
+ // items: {
1646
+ // type: "any",
1647
+ // },
1648
+ // },
1649
+ // },
1650
+ // validator: (input) => {
1651
+ // // validate here
1652
+ // },
1653
+ // },
1654
+
1655
+ // remove_item_from_array_at_index: {
1656
+ // kind: "expression",
1657
+ // category: "arrays",
1658
+ // name: "Remove Item From Array At Index",
1659
+ // fields: {
1660
+ // array: {
1661
+ // node_options: ["get_defined"],
1662
+ // forced_node: "get_defined",
1663
+ // },
1664
+ // where_to_remove: {
1665
+ // node_options: ["get_defined", "int_literal"],
1666
+ // },
1667
+ // },
1668
+ // node_structure: [
1669
+ // [
1670
+ // { ui_type: "text", value: "remove item from array" },
1671
+ // { ui_type: "field", field: "array" },
1672
+ // { ui_type: "text", value: "at index" },
1673
+ // { ui_type: "field", field: "where_to_remove" },
1674
+ // ],
1675
+ // ],
1676
+ // postgres_type: "jsonb",
1677
+ // json_schema: {
1678
+ // type: "object",
1679
+ // properties: {
1680
+ // array: {
1681
+ // type: "array",
1682
+ // items: {
1683
+ // type: "any",
1684
+ // },
1685
+ // },
1686
+ // where_to_remove: {
1687
+ // type: "number",
1688
+ // },
1689
+ // },
1690
+ // required: ["array", "where_to_remove"],
1691
+ // },
1692
+ // output: {
1693
+ // json_schema: {
1694
+ // type: "array",
1695
+ // items: {
1696
+ // type: "any",
1697
+ // },
1698
+ // },
1699
+ // },
1700
+ // validator: (input) => {
1701
+ // // validate here
1702
+ // },
1703
+ // },
1704
+
1705
+ // split_text: {
1706
+ // kind: "expression",
1707
+ // category: "arrays",
1708
+ // name: "Split Text",
1709
+ // fields: {
1710
+ // text: {
1711
+ // node_options: ["text_literal", "get_defined"],
1712
+ // },
1713
+ // delimiter: {
1714
+ // node_options: ["text_literal", "get_defined"],
1715
+ // },
1716
+ // },
1717
+ // node_structure: [
1718
+ // [
1719
+ // { ui_type: "text", value: "split text" },
1720
+ // { ui_type: "field", field: "text" },
1721
+ // { ui_type: "text", value: "to array at delimiter" },
1722
+ // { ui_type: "field", field: "delimiter" },
1723
+ // ],
1724
+ // ],
1725
+ // postgres_type: "jsonb",
1726
+ // json_schema: {
1727
+ // type: "object",
1728
+ // properties: {
1729
+ // text: {
1730
+ // type: "string",
1731
+ // },
1732
+ // delimiter: {
1733
+ // type: "string",
1734
+ // },
1735
+ // },
1736
+ // required: ["text", "delimiter"],
1737
+ // },
1738
+ // output: {
1739
+ // json_schema: {
1740
+ // type: "array",
1741
+ // items: {
1742
+ // type: "string",
1743
+ // },
1744
+ // },
1745
+ // },
1746
+ // validator: (input) => {
1747
+ // // validate here
1748
+ // },
1749
+ // },
1750
+
1751
+ // concat_arrays: {
1752
+ // kind: "expression",
1753
+ // category: "arrays",
1754
+ // name: "Concat Arrays",
1755
+ // fields: {
1756
+ // first_array: {
1757
+ // node_options: [
1758
+ // "get_defined",
1759
+ // "concat_arrays",
1760
+ // "add_item_to_array",
1761
+ // "add_item_to_array_at_index",
1762
+ // "remove_item_from_array",
1763
+ // "remove_item_from_array_at_index",
1764
+ // ],
1765
+ // },
1766
+ // second_array: {
1767
+ // node_options: [
1768
+ // "get_defined",
1769
+ // "concat_arrays",
1770
+ // "add_item_to_array",
1771
+ // "add_item_to_array_at_index",
1772
+ // "remove_item_from_array",
1773
+ // "remove_item_from_array_at_index",
1774
+ // ],
1775
+ // },
1776
+ // },
1777
+ // postgres_type: "jsonb",
1778
+ // node_structure: [
1779
+ // [
1780
+ // { ui_type: "text", value: "concat arrays" },
1781
+ // { ui_type: "field", field: "first_array" },
1782
+ // { ui_type: "text", value: "and" },
1783
+ // { ui_type: "field", field: "second_array" },
1784
+ // ],
1785
+ // ],
1786
+ // postgres_type: "jsonb",
1787
+ // json_schema: {
1788
+ // type: "object",
1789
+ // properties: {
1790
+ // first_array: {
1791
+ // type: "array",
1792
+ // items: {
1793
+ // type: "any",
1794
+ // },
1795
+ // },
1796
+ // second_array: {
1797
+ // type: "array",
1798
+ // items: {
1799
+ // type: "any",
1800
+ // },
1801
+ // },
1802
+ // },
1803
+ // required: ["first_array", "second_array"],
1804
+ // },
1805
+ // output: {
1806
+ // json_schema: {
1807
+ // type: "array",
1808
+ // items: {
1809
+ // type: "any",
1810
+ // },
1811
+ // },
1812
+ // },
1813
+ // validator: (input) => {
1814
+ // // validate here
1815
+ // },
1816
+ // },
1817
+
1818
+ // sort_array: {
1819
+ // kind: "expression",
1820
+ // category: "arrays",
1821
+ // name: "Sort Array",
1822
+ // fields: {
1823
+ // array: {
1824
+ // node_options: [
1825
+ // "get_defined",
1826
+ // "concat_arrays",
1827
+ // "add_item_to_array",
1828
+ // "add_item_to_array_at_index",
1829
+ // "remove_item_from_array",
1830
+ // "remove_item_from_array_at_index",
1831
+ // ],
1832
+ // },
1833
+ // iter_item_a_identifier: {
1834
+ // node_options: ["identifier_literal"],
1835
+ // forced_node: "identifier_literal",
1836
+ // },
1837
+ // iter_item_b_identifier: {
1838
+ // node_options: ["identifier_literal"],
1839
+ // forced_node: "identifier_literal",
1840
+ // },
1841
+ // do: {
1842
+ // node_options: ["stack_literal"],
1843
+ // forced_node: "stack_literal",
1844
+ // },
1845
+ // },
1846
+ // node_structure: [
1847
+ // [
1848
+ // { ui_type: "text", value: "sort array" },
1849
+ // { ui_type: "field", field: "array" },
1850
+ // { ui_type: "text", value: "with item identifiers" },
1851
+ // { ui_type: "field", field: "iter_item_a_identifier" },
1852
+ // { ui_type: "field", field: "iter_item_b_identifier" },
1853
+ // ],
1854
+ // { ui_type: "stack", field: "do" },
1855
+ // ],
1856
+ // postgres_type: "jsonb",
1857
+ // json_schema: {
1858
+ // type: "object",
1859
+ // properties: {
1860
+ // array: {
1861
+ // type: "array",
1862
+ // items: {
1863
+ // type: "any",
1864
+ // },
1865
+ // },
1866
+ // iter_item_a_identifier: {
1867
+ // type: "string",
1868
+ // },
1869
+ // iter_item_b_identifier: {
1870
+ // type: "string",
1871
+ // },
1872
+ // do: {
1873
+ // type: "array",
1874
+ // items: {
1875
+ // type: "node",
1876
+ // },
1877
+ // },
1878
+ // },
1879
+ // required: ["array", "do"],
1880
+ // },
1881
+ // output: {
1882
+ // json_schema: {
1883
+ // type: "array",
1884
+ // items: {
1885
+ // type: "any",
1886
+ // },
1887
+ // },
1888
+ // },
1889
+ // validator: (input) => {
1890
+ // // validate here
1891
+ // },
1892
+ // },
1893
+
1894
+ // local_compare: {
1895
+ // kind: "expression",
1896
+ // category: "arrays",
1897
+ // name: "Alphabetically Compare",
1898
+ // fields: {
1899
+ // a: {
1900
+ // node_options: ["text_literal", "get_defined"],
1901
+ // },
1902
+ // b: {
1903
+ // node_options: ["text_literal", "get_defined"],
1904
+ // },
1905
+ // },
1906
+ // node_structure: [
1907
+ // [
1908
+ // { ui_type: "text", value: "alphabetically compare" },
1909
+ // { ui_type: "field", field: "a" },
1910
+ // { ui_type: "text", value: "to" },
1911
+ // { ui_type: "field", field: "b" },
1912
+ // ],
1913
+ // ],
1914
+ // postgres_type: "jsonb",
1915
+ // json_schema: {
1916
+ // type: "object",
1917
+ // properties: {
1918
+ // a: {
1919
+ // type: "string",
1920
+ // },
1921
+ // b: {
1922
+ // type: "string",
1923
+ // },
1924
+ // },
1925
+ // required: ["a", "b"],
1926
+ // },
1927
+ // output: {
1928
+ // json_schema: {
1929
+ // type: "boolean",
1930
+ // },
1931
+ // },
1932
+ // validator: (input) => {
1933
+ // // validate here
1934
+ // },
1935
+ // },
1936
+
1937
+ // slice: {
1938
+ // kind: "expression",
1939
+ // category: "arrays",
1940
+ // name: "Slice",
1941
+ // fields: {
1942
+ // value: {
1943
+ // node_options: ["get_defined"],
1944
+ // forced_node: "get_defined",
1945
+ // },
1946
+ // start_index: {
1947
+ // node_options: ["int_literal", "get_defined"],
1948
+ // },
1949
+ // end_index: {
1950
+ // node_options: ["int_literal", "get_defined"],
1951
+ // },
1952
+ // },
1953
+ // node_structure: [
1954
+ // [
1955
+ // { ui_type: "text", value: "slice" },
1956
+ // { ui_type: "field", field: "value" },
1957
+ // { ui_type: "text", value: "from" },
1958
+ // { ui_type: "field", field: "start_index" },
1959
+ // { ui_type: "text", value: "to" },
1960
+ // { ui_type: "field", field: "end_index" },
1961
+ // ],
1962
+ // ],
1963
+ // postgres_type: "jsonb",
1964
+ // json_schema: {
1965
+ // type: "object",
1966
+ // properties: {
1967
+ // value: {
1968
+ // type: ["array", "string"],
1969
+ // },
1970
+ // start_index: {
1971
+ // type: "number",
1972
+ // },
1973
+ // end_index: {
1974
+ // type: "number",
1975
+ // },
1976
+ // },
1977
+ // required: ["value", "start_index", "end_index"],
1978
+ // },
1979
+ // output: {
1980
+ // json_schema: {
1981
+ // type: "array",
1982
+ // items: {
1983
+ // type: "any",
1984
+ // },
1985
+ // },
1986
+ // },
1987
+ // validator: (input) => {
1988
+ // // validate here
1989
+ // },
1990
+ // },
1991
+
1992
+ // join_array_of_text_items: {
1993
+ // kind: "expression",
1994
+ // category: "arrays",
1995
+ // name: "Join Array Of Text Items",
1996
+ // fields: {
1997
+ // array: {
1998
+ // node_options: ["get_defined"],
1999
+ // forced_node: "get_defined",
2000
+ // },
2001
+ // },
2002
+ // node_structure: [
2003
+ // [
2004
+ // { ui_type: "text", value: "join array of text" },
2005
+ // { ui_type: "field", field: "array" },
2006
+ // ],
2007
+ // ],
2008
+ // postgres_type: "jsonb",
2009
+ // json_schema: {
2010
+ // type: "object",
2011
+ // properties: {
2012
+ // array: {
2013
+ // type: "array",
2014
+ // items: {
2015
+ // type: "any",
2016
+ // },
2017
+ // },
2018
+ // },
2019
+ // required: ["array"],
2020
+ // },
2021
+ // output: {
2022
+ // json_schema: {
2023
+ // type: "string",
2024
+ // },
2025
+ // },
2026
+ // validator: (input) => {
2027
+ // // validate here
2028
+ // },
2029
+ // },
2030
+
2031
+ // reverse_array: {
2032
+ // kind: "expression",
2033
+ // category: "arrays",
2034
+ // name: "Reverse Array",
2035
+ // fields: {
2036
+ // array: {
2037
+ // node_options: ["get_defined"],
2038
+ // forced_node: "get_defined",
2039
+ // },
2040
+ // },
2041
+ // node_structure: [
2042
+ // [
2043
+ // { ui_type: "text", value: "reverse array" },
2044
+ // { ui_type: "field", field: "array" },
2045
+ // ],
2046
+ // ],
2047
+ // postgres_type: "jsonb",
2048
+ // json_schema: {
2049
+ // type: "object",
2050
+ // properties: {
2051
+ // array: {
2052
+ // type: "array",
2053
+ // items: {
2054
+ // type: "any",
2055
+ // },
2056
+ // },
2057
+ // },
2058
+ // required: ["array"],
2059
+ // },
2060
+ // output: {
2061
+ // json_schema: {
2062
+ // type: "array",
2063
+ // items: {
2064
+ // type: "any",
2065
+ // },
2066
+ // },
2067
+ // },
2068
+ // validator: (input) => {
2069
+ // // validate here
2070
+ // },
2071
+ // },
2072
+
2073
+ // average_of_number_array: {
2074
+ // kind: "expression",
2075
+ // category: "arrays",
2076
+ // name: "Average Of Number Array",
2077
+ // fields: {
2078
+ // array: {
2079
+ // node_options: ["get_defined"],
2080
+ // forced_node: "get_defined",
2081
+ // },
2082
+ // },
2083
+ // node_structure: [
2084
+ // [
2085
+ // { ui_type: "text", value: "average of numbers in" },
2086
+ // { ui_type: "field", field: "array" },
2087
+ // ],
2088
+ // ],
2089
+ // postgres_type: "jsonb",
2090
+ // json_schema: {
2091
+ // type: "object",
2092
+ // properties: {
2093
+ // array: {
2094
+ // type: "array",
2095
+ // items: {
2096
+ // type: "number",
2097
+ // },
2098
+ // },
2099
+ // },
2100
+ // required: ["array"],
2101
+ // },
2102
+ // output: {
2103
+ // json_schema: {
2104
+ // type: "number",
2105
+ // },
2106
+ // },
2107
+ // validator: (input) => {
2108
+ // // validate here
2109
+ // },
2110
+ // },
2111
+
2112
+ // sum_of_number_array: {
2113
+ // kind: "expression",
2114
+ // category: "arrays",
2115
+ // name: "Sum Of Number Array",
2116
+ // fields: {
2117
+ // array: {
2118
+ // node_options: ["get_defined"],
2119
+ // forced_node: "get_defined",
2120
+ // },
2121
+ // },
2122
+ // node_structure: [
2123
+ // [
2124
+ // { ui_type: "text", value: "sum of numbers in" },
2125
+ // { ui_type: "field", field: "array" },
2126
+ // ],
2127
+ // ],
2128
+ // postgres_type: "jsonb",
2129
+ // json_schema: {
2130
+ // type: "object",
2131
+ // properties: {
2132
+ // array: {
2133
+ // type: "array",
2134
+ // items: {
2135
+ // type: "number",
2136
+ // },
2137
+ // },
2138
+ // },
2139
+ // required: ["array"],
2140
+ // },
2141
+ // output: {
2142
+ // json_schema: {
2143
+ // type: "number",
2144
+ // },
2145
+ // },
2146
+ // validator: (input) => {
2147
+ // // validate here
2148
+ // },
2149
+ // },
2150
+
2151
+ // trim_text: {
2152
+ // kind: "expression",
2153
+ // category: "operation",
2154
+ // name: "Trim Text",
2155
+ // fields: {
2156
+ // text: {
2157
+ // node_options: ["get_defined"],
2158
+ // forced_node: "get_defined",
2159
+ // },
2160
+ // },
2161
+ // node_structure: [
2162
+ // [
2163
+ // { ui_type: "text", value: "trim" },
2164
+ // { ui_type: "field", field: "text" },
2165
+ // ],
2166
+ // ],
2167
+ // postgres_type: "jsonb",
2168
+ // json_schema: {
2169
+ // type: "object",
2170
+ // properties: {
2171
+ // text: {
2172
+ // type: "string",
2173
+ // },
2174
+ // },
2175
+ // required: ["text"],
2176
+ // },
2177
+ // output: {
2178
+ // json_schema: {
2179
+ // type: "string",
2180
+ // },
2181
+ // },
2182
+ // validator: (input) => {
2183
+ // // validate here
2184
+ // },
2185
+ // },
2186
+
2187
+ // replace_text: {
2188
+ // kind: "expression",
2189
+ // category: "operation",
2190
+ // name: "Replace Text",
2191
+ // fields: {
2192
+ // base_text: {
2193
+ // node_options: ["text_literal", "get_defined"],
2194
+ // },
2195
+ // text_to_replace: {
2196
+ // node_options: ["text_literal", "get_defined"],
2197
+ // },
2198
+ // replacement_text: {
2199
+ // node_options: ["text_literal", "get_defined"],
2200
+ // },
2201
+ // },
2202
+ // node_structure: [
2203
+ // [
2204
+ // { ui_type: "text", value: "from base text" },
2205
+ // { ui_type: "field", field: "base_text" },
2206
+ // { ui_type: "text", value: "replace" },
2207
+ // { ui_type: "field", field: "text_to_replace" },
2208
+ // { ui_type: "text", value: "with" },
2209
+ // { ui_type: "field", field: "replacement_text" },
2210
+ // ],
2211
+ // ],
2212
+ // postgres_type: "jsonb",
2213
+ // json_schema: {
2214
+ // type: "object",
2215
+ // properties: {
2216
+ // base_text: {
2217
+ // type: "string",
2218
+ // },
2219
+ // text_to_replace: {
2220
+ // type: "string",
2221
+ // },
2222
+ // replacement_text: {
2223
+ // type: "string",
2224
+ // },
2225
+ // },
2226
+ // required: ["base_text", "text_to_replace", "replacement_text"],
2227
+ // },
2228
+ // output: {
2229
+ // json_schema: {
2230
+ // type: "string",
2231
+ // },
2232
+ // },
2233
+ // validator: (input) => {
2234
+ // // validate here
2235
+ // },
2236
+ // },
2237
+
2238
+ // compare_numbers: {
2239
+ // kind: "expression",
2240
+ // category: "compare",
2241
+ // name: "Compare Numbers",
2242
+ // fields: {
2243
+ // a: {
2244
+ // node_options: [
2245
+ // "get_defined",
2246
+ // "arithmetic_binary_operation",
2247
+ // "round",
2248
+ // "parse",
2249
+ // "get_length",
2250
+ // "int_literal",
2251
+ // "bigint_literal",
2252
+ // "float_literal",
2253
+ // ],
2254
+ // },
2255
+ // b: {
2256
+ // node_options: [
2257
+ // "get_defined",
2258
+ // "arithmetic_binary_operation",
2259
+ // "round",
2260
+ // "parse",
2261
+ // "get_length",
2262
+ // "int_literal",
2263
+ // "bigint_literal",
2264
+ // "float_literal",
2265
+ // ],
2266
+ // },
2267
+ // operator: {
2268
+ // node_options: ["dropdown_literal"],
2269
+ // forced_node: "dropdown_literal",
2270
+ // dropdown_options: [
2271
+ // { key: "less_than", name: "less than (<)" },
2272
+ // { key: "less_than_or_equal", name: "less than or equal to (<=)" },
2273
+ // { key: "greater_than", name: "greater than (>)" },
2274
+ // { key: "greater_than_or_equal", name: "greater than or equal to (>=)" },
2275
+ // { key: "equal_to", name: "equals (==)" },
2276
+ // { key: "not_equal_to", name: "not equal to (!=)" },
2277
+ // ],
2278
+ // dropdown_default: "less_than",
2279
+ // },
2280
+ // },
2281
+ // node_structure: [
2282
+ // [
2283
+ // { ui_type: "field", field: "a" },
2284
+ // { ui_type: "field", field: "operator" },
2285
+ // { ui_type: "field", field: "b" },
2286
+ // ],
2287
+ // ],
2288
+ // postgres_type: "jsonb",
2289
+ // json_schema: {
2290
+ // type: "object",
2291
+ // properties: {
2292
+ // a: {
2293
+ // type: "number",
2294
+ // },
2295
+ // b: {
2296
+ // type: "number",
2297
+ // },
2298
+ // operator: {
2299
+ // type: "string",
2300
+ // enum: [
2301
+ // "less_than",
2302
+ // "less_than_or_equal",
2303
+ // "greater_than",
2304
+ // "greater_than_or_equal",
2305
+ // "equal_to",
2306
+ // "not_equal_to",
2307
+ // ],
2308
+ // default: "less_than",
2309
+ // },
2310
+ // },
2311
+ // required: ["a", "b", "operator"],
2312
+ // },
2313
+ // output: {
2314
+ // json_schema: {
2315
+ // type: "boolean",
2316
+ // },
2317
+ // },
2318
+ // validator: (input) => {
2319
+ // // validate here
2320
+ // },
2321
+ // },
2322
+
2323
+ // compare_text: {
2324
+ // kind: "expression",
2325
+ // category: "compare",
2326
+ // name: "Compare Text",
2327
+ // fields: {
2328
+ // a: {
2329
+ // node_options: ["get_defined", "text_literal"],
2330
+ // },
2331
+ // b: {
2332
+ // node_options: ["get_defined", "text_literal"],
2333
+ // },
2334
+ // operator: {
2335
+ // node_options: ["dropdown_literal"],
2336
+ // forced_node: "dropdown_literal",
2337
+ // dropdown_options: [
2338
+ // { key: "equal_to", name: "equals (==)" },
2339
+ // { key: "not_equal_to", name: "not equal to (!=)" },
2340
+ // { key: "contains", name: "contains" },
2341
+ // { key: "does_not_contain", name: "does not contain" },
2342
+ // { key: "starts_with", name: "starts with" },
2343
+ // { key: "ends_with", name: "ends with" },
2344
+ // ],
2345
+ // dropdown_default: "starts_with",
2346
+ // },
2347
+ // },
2348
+ // node_structure: [
2349
+ // [
2350
+ // { ui_type: "field", field: "a" },
2351
+ // { ui_type: "field", field: "operator" },
2352
+ // { ui_type: "field", field: "b" },
2353
+ // ],
2354
+ // ],
2355
+ // postgres_type: "jsonb",
2356
+ // json_schema: {
2357
+ // type: "object",
2358
+ // properties: {
2359
+ // a: {
2360
+ // type: "text",
2361
+ // },
2362
+ // b: {
2363
+ // type: "text",
2364
+ // },
2365
+ // operator: {
2366
+ // type: "string",
2367
+ // enum: ["equal_to", "not_equal_to", "contains", "does_not_contain", "starts_with", "ends_with"],
2368
+ // default: "starts_with",
2369
+ // },
2370
+ // },
2371
+ // required: ["a", "b", "operator"],
2372
+ // },
2373
+ // output: {
2374
+ // json_schema: {
2375
+ // type: "boolean",
2376
+ // },
2377
+ // },
2378
+ // validator: (input) => {
2379
+ // // validate here
2380
+ // },
2381
+ // },
2382
+
2383
+ // get_length: {
2384
+ // kind: "expression",
2385
+ // category: "math",
2386
+ // name: "Get Length",
2387
+ // fields: {
2388
+ // value: {
2389
+ // node_options: ["get_defined", "text_literal"], // array types
2390
+ // },
2391
+ // },
2392
+ // node_structure: [
2393
+ // [
2394
+ // { ui_type: "text", value: "length of" },
2395
+ // { ui_type: "field", field: "value" },
2396
+ // ],
2397
+ // ],
2398
+ // postgres_type: "jsonb",
2399
+ // json_schema: {
2400
+ // type: "object",
2401
+ // properties: {
2402
+ // value: {
2403
+ // type: ["array", "object", "text"],
2404
+ // },
2405
+ // },
2406
+ // required: ["value"],
2407
+ // },
2408
+ // output: {
2409
+ // json_schema: {
2410
+ // type: "number",
2411
+ // },
2412
+ // },
2413
+ // validator: (input) => {
2414
+ // // validate here
2415
+ // },
2416
+ // },
2417
+
2418
+ // object_expression: {
2419
+ // kind: "expression",
2420
+ // category: "variables",
2421
+ // name: "Object Expression",
2422
+ // fields: {
2423
+ // value: {
2424
+ // node_options: ["object_builder"],
2425
+ // forced_node: "object_builder",
2426
+ // },
2427
+ // },
2428
+ // node_structure: [
2429
+ // [{ ui_type: "text", value: "build object" }, { ui_type: "br" }, { ui_type: "field", field: "value" }],
2430
+ // ],
2431
+ // postgres_type: "jsonb",
2432
+ // json_schema: {
2433
+ // type: "array",
2434
+ // items: {
2435
+ // type: "object",
2436
+ // properties: {
2437
+ // key: {
2438
+ // type: "string",
2439
+ // node_options: ["text_literal", "get_defined"],
2440
+ // },
2441
+ // value: {
2442
+ // type: "any",
2443
+ // node_options: [...value_node_types],
2444
+ // },
2445
+ // },
2446
+ // },
2447
+ // },
2448
+ // output: {
2449
+ // json_schema: {
2450
+ // type: "object",
2451
+ // },
2452
+ // },
2453
+ // validator: (input) => {
2454
+ // // validate here
2455
+ // },
2456
+ // },
2457
+
2458
+ // call_endpoint: {
2459
+ // kind: "expression",
2460
+ // category: "actions",
2461
+ // name: "Call Endpoint",
2462
+ // fields: {
2463
+ // endpoint: {
2464
+ // node_options: ["get_defined", "text_literal"],
2465
+ // },
2466
+ // headers: {
2467
+ // node_options: ["object_literal", "get_defined"],
2468
+ // },
2469
+ // body: {
2470
+ // node_options: ["object_literal", "get_defined"],
2471
+ // },
2472
+ // },
2473
+ // node_structure: [
2474
+ // [
2475
+ // { ui_type: "text", value: "call endpoint" },
2476
+ // { ui_type: "br" },
2477
+ // { ui_type: "field", field: "endpoint" },
2478
+ // { ui_type: "br" },
2479
+ // { ui_type: "text", value: "with headers" },
2480
+ // { ui_type: "br" },
2481
+ // { ui_type: "field", field: "headers" },
2482
+ // { ui_type: "br" },
2483
+ // { ui_type: "text", value: "and body" },
2484
+ // { ui_type: "br" },
2485
+ // { ui_type: "field", field: "body" },
2486
+ // ],
2487
+ // ],
2488
+ // postgres_type: "jsonb",
2489
+ // json_schema: {
2490
+ // type: "object",
2491
+ // properties: {
2492
+ // endpoint: { type: "string" },
2493
+ // headers: { type: "object" },
2494
+ // body: { type: "object" },
2495
+ // },
2496
+ // required: ["endpoint"],
2497
+ // },
2498
+ // output: {
2499
+ // json_schema: {
2500
+ // type: "object",
2501
+ // },
2502
+ // },
2503
+ // validator: (input) => {
2504
+ // // validate here
2505
+ // },
2506
+ // },
2507
+
2508
+ // cron_job: {
2509
+ // kind: "expression",
2510
+ // category: "triggers",
2511
+ // name: "Cron Job",
2512
+ // fields: {
2513
+ // cron: {
2514
+ // node_options: ["cron_literal"],
2515
+ // forced_node: "cron_literal",
2516
+ // },
2517
+ // do: {
2518
+ // node_options: ["stack_literal"],
2519
+ // forced_node: "stack_literal",
2520
+ // },
2521
+ // },
2522
+ // node_structure: [
2523
+ // [
2524
+ // { ui_type: "text", value: "cron" },
2525
+ // { ui_type: "field", field: "cron" },
2526
+ // ],
2527
+ // { ui_type: "stack", field: "do" },
2528
+ // ],
2529
+ // postgres_type: "jsonb",
2530
+ // json_schema: {
2531
+ // type: "object",
2532
+ // properties: {
2533
+ // cron: { type: "string" },
2534
+ // do: {
2535
+ // type: "array",
2536
+ // items: node_json_schema,
2537
+ // },
2538
+ // },
2539
+ // required: ["cron", "do"],
2540
+ // },
2541
+ // output: {
2542
+ // json_schema: {
2543
+ // type: "object",
2544
+ // },
2545
+ // },
2546
+ // validator: (input) => {
2547
+ // // validate here
2548
+ // },
2549
+ // },
2550
+
2551
+ export const literal_types = {
2552
+ array_literal,
2553
+ array_uniform_literal,
2554
+ object_literal,
2555
+ object_uniform_literal,
2556
+ text_literal,
2557
+ boolean_literal,
2558
+ int_literal,
2559
+ bigint_literal,
2560
+ null_literal,
2561
+ epoch_literal,
2562
+ float_literal,
2563
+ color_literal,
2564
+ json_literal,
2565
+ domain_literal,
2566
+ email_address_literal,
2567
+ email_address_full_literal,
2568
+ email_attachment_literal,
2569
+ storage_item_literal,
2570
+ html_literal,
2571
+ phone_literal,
2572
+ vector_literal,
2573
+ icon_literal,
2574
+ time_literal,
2575
+ time_zone_literal,
2576
+ location_literal,
2577
+ cron_literal,
2578
+ content_literal,
2579
+ table_id_for_foreign_row_literal,
2580
+ variable_path_literal,
2581
+ }
2582
+
2583
+ export const main_child_element_options = {
2584
+ slot: { display_order: 0, child_min_limit: 0, child_max_limit: 99 },
2585
+ loop: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
2586
+ div: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
2587
+ section: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
2588
+ show_conditions: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
2589
+ header: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
2590
+ footer: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
2591
+ h1: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
2592
+ h2: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
2593
+ h3: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
2594
+ h4: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
2595
+ h5: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
2596
+ h6: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
2597
+ p: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
2598
+ br: { display_order: 16, child_min_limit: 0, child_max_limit: 99 },
2599
+ base_text: { display_order: 17, child_min_limit: 0, child_max_limit: 99 },
2600
+ span: { display_order: 18, child_min_limit: 0, child_max_limit: 99 },
2601
+ strong: { display_order: 19, child_min_limit: 0, child_max_limit: 99 },
2602
+ em: { display_order: 20, child_min_limit: 0, child_max_limit: 99 },
2603
+ strong_em: { display_order: 21, child_min_limit: 0, child_max_limit: 99 },
2604
+ link: { display_order: 22, child_min_limit: 0, child_max_limit: 99 },
2605
+ q: { display_order: 23, child_min_limit: 0, child_max_limit: 99 },
2606
+ mark: { display_order: 24, child_min_limit: 0, child_max_limit: 99 },
2607
+ s: { display_order: 25, child_min_limit: 0, child_max_limit: 99 },
2608
+ blockquote: { display_order: 26, child_min_limit: 0, child_max_limit: 99 },
2609
+ ul: { display_order: 27, child_min_limit: 0, child_max_limit: 99 },
2610
+ ol: { display_order: 28, child_min_limit: 0, child_max_limit: 99 },
2611
+ figure: { display_order: 29, child_min_limit: 0, child_max_limit: 99 },
2612
+ picture: { display_order: 30, child_min_limit: 0, child_max_limit: 99 },
2613
+ image: { display_order: 32, child_min_limit: 0, child_max_limit: 99 },
2614
+ audio: { display_order: 34, child_min_limit: 0, child_max_limit: 99 },
2615
+ video: { display_order: 35, child_min_limit: 0, child_max_limit: 99 },
2616
+ youtube_video: { display_order: 36, child_min_limit: 0, child_max_limit: 99 },
2617
+ x_post: { display_order: 37, child_min_limit: 0, child_max_limit: 99 },
2618
+ table: { display_order: 38, child_min_limit: 0, child_max_limit: 99 },
2619
+ table_advanced: { display_order: 39, child_min_limit: 0, child_max_limit: 99 },
2620
+ hr: { display_order: 40, child_min_limit: 0, child_max_limit: 99 },
2621
+ qr: { display_order: 41, child_min_limit: 0, child_max_limit: 99 },
2622
+ code: { display_order: 42, child_min_limit: 0, child_max_limit: 99 },
2623
+ code_inline: { display_order: 43, child_min_limit: 0, child_max_limit: 99 },
2624
+ pre: { display_order: 44, child_min_limit: 0, child_max_limit: 99 },
2625
+ json: { display_order: 45, child_min_limit: 0, child_max_limit: 99 },
2626
+ email_address: { display_order: 46, child_min_limit: 0, child_max_limit: 99 },
2627
+ email_address_input: { display_order: 47, child_min_limit: 0, child_max_limit: 99 },
2628
+ phone_number: { display_order: 48, child_min_limit: 0, child_max_limit: 99 },
2629
+ phone_number_input: { display_order: 49, child_min_limit: 0, child_max_limit: 99 },
2630
+ time: { display_order: 50, child_min_limit: 0, child_max_limit: 99 },
2631
+ time_input: { display_order: 51, child_min_limit: 0, child_max_limit: 99 },
2632
+ text_input: { display_order: 52, child_min_limit: 0, child_max_limit: 99 },
2633
+ location: { display_order: 53, child_min_limit: 0, child_max_limit: 99 },
2634
+ location_input: { display_order: 54, child_min_limit: 0, child_max_limit: 99 },
2635
+ slider: { display_order: 55, child_min_limit: 0, child_max_limit: 99 },
2636
+ checkbox: { display_order: 56, child_min_limit: 0, child_max_limit: 99 },
2637
+ number: { display_order: 57, child_min_limit: 0, child_max_limit: 99 },
2638
+ icon: { display_order: 58, child_min_limit: 0, child_max_limit: 99 },
2639
+ icon_input: { display_order: 59, child_min_limit: 0, child_max_limit: 99 },
2640
+ dropdown: { display_order: 60, child_min_limit: 0, child_max_limit: 99 },
2641
+ file: { display_order: 61, child_min_limit: 0, child_max_limit: 99 },
2642
+ file_input: { display_order: 62, child_min_limit: 0, child_max_limit: 99 },
2643
+ cron: { display_order: 64, child_min_limit: 0, child_max_limit: 99 },
2644
+ cron_input: { display_order: 65, child_min_limit: 0, child_max_limit: 99 },
2645
+ color: { display_order: 67, child_min_limit: 0, child_max_limit: 99 },
2646
+ color_input: { display_order: 68, child_min_limit: 0, child_max_limit: 99 },
2647
+ tag: { display_order: 69, child_min_limit: 0, child_max_limit: 99 },
2648
+ }
2649
+
2650
+ export const content_types = {
2651
+ slot: {
2652
+ kind: "content",
2653
+ category: "content",
2654
+ name: "Slot",
2655
+ display_order: 0,
2656
+ attributes: {
2657
+ val: { type: "text_literal" },
2658
+ },
2659
+ child_elements: {},
2660
+ },
2661
+ loop: {
2662
+ kind: "content",
2663
+ category: "variables",
2664
+ name: "Loop",
2665
+ display_order: 0,
2666
+ child_elements: {
2667
+ ...main_child_element_options,
2668
+ },
2669
+ validator: (input) => {
2670
+ // validate tbd
2671
+ },
2672
+ },
2673
+ div: {
2674
+ kind: "content",
2675
+ category: "content",
2676
+ name: "Div",
2677
+ display_order: 1,
2678
+ attributes: {
2679
+ background_color: {
2680
+ type: "color_literal",
2681
+ display_name: "Background Color",
2682
+ },
2683
+ border_color: {
2684
+ type: "color_literal",
2685
+ display_name: "Border Color",
2686
+ },
2687
+ border_radius: {
2688
+ type: "float_literal",
2689
+ display_name: "Border Radius",
2690
+ },
2691
+ padding: {
2692
+ type: "float_literal",
2693
+ display_name: "Padding",
2694
+ },
2695
+ align_content: {
2696
+ type: "text_literal",
2697
+ display_name: "Align Content",
2698
+ },
2699
+ justify_content: {
2700
+ type: "text_literal",
2701
+ display_name: "Justify Content",
2702
+ },
2703
+ },
2704
+ child_elements: {
2705
+ ...main_child_element_options,
2706
+ },
2707
+ },
2708
+ section: {
2709
+ kind: "content",
2710
+ category: "content",
2711
+ name: "Section",
2712
+ display_order: 2,
2713
+ attributes: {
2714
+ background_color: {
2715
+ type: "color_literal",
2716
+ display_name: "Background Color",
2717
+ },
2718
+ border_color: {
2719
+ type: "color_literal",
2720
+ display_name: "Border Color",
2721
+ },
2722
+ border_radius: {
2723
+ display_name: "Border Radius",
2724
+ json_schema: {
2725
+ description: "border radius number used as rem units. Typically 1 should be good",
2726
+ type: "number",
2727
+ },
2728
+ },
2729
+ padding: {
2730
+ display_name: "Padding",
2731
+ json_schema: {
2732
+ description: "padding number used as rem units. Typically 1 should be good",
2733
+ type: "number",
2734
+ },
2735
+ },
2736
+ },
2737
+ child_elements: {
2738
+ div: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
2739
+ header: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
2740
+ h1: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
2741
+ h2: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
2742
+ h3: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
2743
+ h4: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
2744
+ h5: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
2745
+ h6: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
2746
+ p: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
2747
+ ul: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
2748
+ ol: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
2749
+ table: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
2750
+ table_advanced: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
2751
+ figure: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
2752
+ image: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
2753
+ audio: { display_order: 16, child_min_limit: 0, child_max_limit: 99 },
2754
+ video: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
2755
+ code: { display_order: 17, child_min_limit: 0, child_max_limit: 99 },
2756
+ blockquote: { display_order: 18, child_min_limit: 0, child_max_limit: 99 },
2757
+ pre: { display_order: 19, child_min_limit: 0, child_max_limit: 99 },
2758
+ hr: { display_order: 20, child_min_limit: 0, child_max_limit: 99 },
2759
+ footer: { display_order: 21, child_min_limit: 0, child_max_limit: 99 },
2760
+ youtube_video: { display_order: 22, child_min_limit: 0, child_max_limit: 99 },
2761
+ x_post: { display_order: 23, child_min_limit: 0, child_max_limit: 99 },
2762
+ time: { display_order: 24, child_min_limit: 0, child_max_limit: 99 },
2763
+ location: { display_order: 25, child_min_limit: 0, child_max_limit: 99 },
2764
+ json: { display_order: 26, child_min_limit: 0, child_max_limit: 99 },
2765
+ },
2766
+ },
2767
+ show_conditions: {
2768
+ kind: "content",
2769
+ category: "content",
2770
+ name: "Show Conditions",
2771
+ display_order: 1,
2772
+ attributes: {
2773
+ is_run_serverside: {
2774
+ type: "boolean_literal",
2775
+ display_name: "Is Run Serverside",
2776
+ default: false,
2777
+ },
2778
+ },
2779
+ child_elements: {
2780
+ show_conditions_item: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
2781
+ show_conditions_item_else: { display_order: 1, child_min_limit: 0, child_max_limit: 1 },
2782
+ },
2783
+ },
2784
+ show_conditions_item: {
2785
+ kind: "content",
2786
+ category: "content",
2787
+ name: "Show Conditions Item",
2788
+ display_order: 1,
2789
+ attributes: {
2790
+ is_show: {
2791
+ type: "boolean_literal",
2792
+ display_name: "Is Show",
2793
+ },
2794
+ },
2795
+ child_elements: {
2796
+ ...main_child_element_options,
2797
+ },
2798
+ },
2799
+ show_conditions_item_else: {
2800
+ kind: "content",
2801
+ category: "content",
2802
+ name: "Show Conditions Item Else",
2803
+ display_order: 1,
2804
+ attributes: {},
2805
+ child_elements: {
2806
+ ...main_child_element_options,
2807
+ },
2808
+ },
2809
+ header: {
2810
+ kind: "content",
2811
+ category: "content",
2812
+ name: "Header",
2813
+ display_order: 3,
2814
+ attributes: {},
2815
+ child_elements: {
2816
+ h1: { display_order: 1, child_min_limit: 1, child_max_limit: 1 },
2817
+ h2: { display_order: 2, child_min_limit: 0, child_max_limit: 1 },
2818
+ },
2819
+ },
2820
+ h1: {
2821
+ kind: "content",
2822
+ category: "content",
2823
+ name: "Heading 1",
2824
+ display_order: 4,
2825
+ attributes: {},
2826
+ child_elements: {
2827
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
2828
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
2829
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
2830
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
2831
+ },
2832
+ },
2833
+ h2: {
2834
+ kind: "content",
2835
+ category: "content",
2836
+ name: "Heading 2",
2837
+ display_order: 5,
2838
+ attributes: {},
2839
+ child_elements: {
2840
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
2841
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
2842
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
2843
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
2844
+ },
2845
+ },
2846
+ h3: {
2847
+ kind: "content",
2848
+ category: "content",
2849
+ name: "Heading 3",
2850
+ display_order: 6,
2851
+ attributes: {},
2852
+ child_elements: {
2853
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
2854
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
2855
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
2856
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
2857
+ },
2858
+ },
2859
+ h4: {
2860
+ kind: "content",
2861
+ category: "content",
2862
+ name: "Heading 4",
2863
+ display_order: 7,
2864
+ attributes: {},
2865
+ child_elements: {
2866
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
2867
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
2868
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
2869
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
2870
+ },
2871
+ },
2872
+ h5: {
2873
+ kind: "content",
2874
+ category: "content",
2875
+ name: "Heading 5",
2876
+ display_order: 8,
2877
+ attributes: {},
2878
+ child_elements: {
2879
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
2880
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
2881
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
2882
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
2883
+ },
2884
+ },
2885
+ h6: {
2886
+ kind: "content",
2887
+ category: "content",
2888
+ name: "Heading 6",
2889
+ display_order: 9,
2890
+ attributes: {},
2891
+ child_elements: {
2892
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
2893
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
2894
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
2895
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
2896
+ },
2897
+ },
2898
+ p: {
2899
+ kind: "content",
2900
+ category: "content",
2901
+ name: "Paragraph",
2902
+ display_order: 10,
2903
+ attributes: {},
2904
+ child_elements: {
2905
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
2906
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
2907
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
2908
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
2909
+ link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
2910
+ ref: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
2911
+ q: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
2912
+ span: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
2913
+ sub: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
2914
+ sup: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
2915
+ s: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
2916
+ mark: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
2917
+ code_inline: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
2918
+ br: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
2919
+ time: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
2920
+ location: { display_order: 16, child_min_limit: 0, child_max_limit: 99 },
2921
+ number: { display_order: 17, child_min_limit: 0, child_max_limit: 99 },
2922
+ color: { display_order: 18, child_min_limit: 0, child_max_limit: 99 },
2923
+ },
2924
+ },
2925
+ base_text: {
2926
+ kind: "content",
2927
+ category: "content",
2928
+ name: "Base Text",
2929
+ display_order: 11,
2930
+ attributes: {
2931
+ content: { type: "text_literal" },
2932
+ text_color: { type: "color_literal" },
2933
+ },
2934
+ child_elements: {},
2935
+ },
2936
+ span: {
2937
+ kind: "content",
2938
+ category: "content",
2939
+ name: "Span",
2940
+ display_order: 12,
2941
+ attributes: {},
2942
+ child_elements: {},
2943
+ },
2944
+ strong: {
2945
+ kind: "content",
2946
+ category: "content",
2947
+ name: "Strong Text",
2948
+ display_order: 13,
2949
+ attributes: {
2950
+ content: { type: "text_literal" },
2951
+ text_color: { type: "color_literal" },
2952
+ },
2953
+ child_elements: {},
2954
+ },
2955
+ em: {
2956
+ kind: "content",
2957
+ category: "content",
2958
+ name: "Emphasized Text",
2959
+ display_order: 14,
2960
+ attributes: {
2961
+ content: { type: "text_literal" },
2962
+ text_color: { type: "color_literal" },
2963
+ },
2964
+ child_elements: {},
2965
+ },
2966
+ strong_em: {
2967
+ kind: "content",
2968
+ category: "content",
2969
+ name: "Strong Emphasized Text",
2970
+ display_order: 15,
2971
+ attributes: {
2972
+ content: { type: "text_literal" },
2973
+ text_color: { type: "color_literal" },
2974
+ },
2975
+ child_elements: {},
2976
+ },
2977
+ link: {
2978
+ kind: "content",
2979
+ category: "content",
2980
+ name: "Link",
2981
+ display_order: 16,
2982
+ attributes: {
2983
+ href: { type: "text_literal" },
2984
+ display_text: { type: "text_literal" },
2985
+ text_color: { type: "color_literal" },
2986
+ is_show_preview: { type: "boolean_literal" },
2987
+ },
2988
+ child_elements: {
2989
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
2990
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
2991
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
2992
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
2993
+ ref: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
2994
+ q: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
2995
+ span: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
2996
+ sub: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
2997
+ sup: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
2998
+ s: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
2999
+ mark: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
3000
+ code_inline: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
3001
+ br: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
3002
+ time: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
3003
+ location: { display_order: 16, child_min_limit: 0, child_max_limit: 99 },
3004
+ number: { display_order: 17, child_min_limit: 0, child_max_limit: 99 },
3005
+ color: { display_order: 18, child_min_limit: 0, child_max_limit: 99 },
3006
+ },
3007
+ },
3008
+ q: {
3009
+ kind: "content",
3010
+ category: "content",
3011
+ name: "Quotation",
3012
+ display_order: 17,
3013
+ attributes: {
3014
+ href: { type: "text_literal" },
3015
+ content: { type: "text_literal" },
3016
+ text_color: { type: "color_literal" },
3017
+ },
3018
+ child_elements: {},
3019
+ },
3020
+ mark: {
3021
+ kind: "content",
3022
+ category: "content",
3023
+ name: "Mark",
3024
+ display_order: 18,
3025
+ attributes: {},
3026
+ child_elements: {
3027
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
3028
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
3029
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
3030
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
3031
+ link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
3032
+ ref: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
3033
+ q: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
3034
+ span: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
3035
+ code_inline: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
3036
+ sub: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
3037
+ sup: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
3038
+ s: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
3039
+ },
3040
+ },
3041
+ s: {
3042
+ kind: "content",
3043
+ category: "content",
3044
+ name: "Strikethrough",
3045
+ display_order: 19,
3046
+ attributes: {},
3047
+ child_elements: {
3048
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
3049
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
3050
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
3051
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
3052
+ link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
3053
+ q: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
3054
+ span: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
3055
+ code_inline: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
3056
+ sub: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
3057
+ sup: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
3058
+ },
3059
+ },
3060
+ blockquote: {
3061
+ kind: "content",
3062
+ category: "content",
3063
+ name: "Blockquote",
3064
+ display_order: 20,
3065
+ attributes: {
3066
+ cite: { type: "text_literal", display_name: "cite", default_value: null, display_order: 0 },
3067
+ },
3068
+ child_elements: {
3069
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
3070
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
3071
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
3072
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
3073
+ link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
3074
+ ref: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
3075
+ q: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
3076
+ span: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
3077
+ sub: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
3078
+ sup: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
3079
+ s: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
3080
+ mark: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
3081
+ p: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
3082
+ ul: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
3083
+ ol: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
3084
+ code_inline: { display_order: 16, child_min_limit: 0, child_max_limit: 9 },
3085
+ },
3086
+ },
3087
+ ul: {
3088
+ kind: "content",
3089
+ category: "content",
3090
+ name: "Unordered List",
3091
+ display_order: 21,
3092
+ attributes: {},
3093
+ child_elements: {
3094
+ li: { display_order: 1, child_min_limit: 1, child_max_limit: 999 },
3095
+ },
3096
+ },
3097
+ ol: {
3098
+ kind: "content",
3099
+ category: "content",
3100
+ name: "Ordered List",
3101
+ display_order: 22,
3102
+ attributes: {},
3103
+ child_elements: {
3104
+ li: { display_order: 1, child_min_limit: 1, child_max_limit: 999 },
3105
+ },
3106
+ },
3107
+ li: {
3108
+ kind: "content",
3109
+ category: "content",
3110
+ name: "List Item",
3111
+ display_order: 23,
3112
+ attributes: {},
3113
+ child_elements: {
3114
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
3115
+ em: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
3116
+ strong: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
3117
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
3118
+ link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
3119
+ image: { display_order: 6, child_min_limit: 0, child_max_limit: 9 },
3120
+ audio: { display_order: 6, child_min_limit: 0, child_max_limit: 9 },
3121
+ br: { display_order: 7, child_min_limit: 0, child_max_limit: 9 },
3122
+ q: { display_order: 8, child_min_limit: 0, child_max_limit: 9 },
3123
+ s: { display_order: 9, child_min_limit: 0, child_max_limit: 9 },
3124
+ mark: { display_order: 10, child_min_limit: 0, child_max_limit: 9 },
3125
+ span: { display_order: 11, child_min_limit: 0, child_max_limit: 9 },
3126
+ code_inline: { display_order: 12, child_min_limit: 0, child_max_limit: 9 },
3127
+ time: { display_order: 13, child_min_limit: 0, child_max_limit: 9 },
3128
+ location: { display_order: 14, child_min_limit: 0, child_max_limit: 9 },
3129
+ ...main_child_element_options, // tbd
3130
+ },
3131
+ },
3132
+ figure: {
3133
+ kind: "content",
3134
+ category: "content",
3135
+ name: "Figure",
3136
+ display_order: 24,
3137
+ attributes: {
3138
+ caption: { type: "text_literal" },
3139
+ },
3140
+ child_elements: {
3141
+ picture: { display_order: 1, child_min_limit: 0, child_max_limit: 1 },
3142
+ video: { display_order: 2, child_min_limit: 0, child_max_limit: 1 },
3143
+ audio: { display_order: 3, child_min_limit: 0, child_max_limit: 1 },
3144
+ blockquote: { display_order: 4, child_min_limit: 0, child_max_limit: 1 },
3145
+ },
3146
+ },
3147
+ picture: {
3148
+ kind: "content",
3149
+ category: "content",
3150
+ name: "Picture",
3151
+ display_order: 25,
3152
+ attributes: {},
3153
+ child_elements: {
3154
+ source: { display_order: 1, child_min_limit: 1, child_max_limit: 9 },
3155
+ },
3156
+ },
3157
+ source: {
3158
+ kind: "content",
3159
+ category: "content",
3160
+ name: "Source",
3161
+ display_order: 26,
3162
+ attributes: {
3163
+ alt: { type: "text_literal" },
3164
+ name: { type: "text_literal" },
3165
+ width: { type: "int_literal" },
3166
+ height: { type: "int_literal" },
3167
+ file_type: { type: "text_literal" },
3168
+ storage_id: { type: "text_literal" },
3169
+ aspect_ratio: { type: "float_literal" },
3170
+ },
3171
+ child_elements: {},
3172
+ },
3173
+ image: {
3174
+ kind: "content",
3175
+ category: "content",
3176
+ name: "Image",
3177
+ display_order: 27,
3178
+ attributes: {
3179
+ alt: { type: "text_literal" },
3180
+ name: { type: "text_literal" },
3181
+ width: { type: "int_literal" },
3182
+ height: { type: "int_literal" },
3183
+ mime_type: { type: "text_literal" },
3184
+ storage_id: { type: "text_literal" },
3185
+ aspect_ratio: { type: "float_literal" },
3186
+ is_storage_id_public: { type: "boolean_literal" },
3187
+ src: { type: "text_literal" },
3188
+ src_quick: { type: "text_literal" },
3189
+ display_max_height: { type: "int_literal" },
3190
+ display_max_width: { type: "int_literal" },
3191
+ border_radius: { type: "float_literal" },
3192
+ bg_img_blur: { type: "float_literal" },
3193
+ bg_img_opacity: { type: "float_literal" },
3194
+ },
3195
+ child_elements: {},
3196
+ },
3197
+ audio: {
3198
+ kind: "content",
3199
+ category: "content",
3200
+ name: "Audio",
3201
+ display_order: 29,
3202
+ attributes: {
3203
+ ui_type: { type: "text_literal" },
3204
+ storage_id: { type: "text_literal" },
3205
+ is_storage_id_public: { type: "boolean_literal" },
3206
+ src: { type: "text_literal" },
3207
+ mime_type: { type: "text_literal" },
3208
+ title: { type: "text_literal" },
3209
+ album: { type: "text_literal" },
3210
+ artist: { type: "text_literal" },
3211
+ image_storage_id: { type: "text_literal" },
3212
+ image_is_storage_id_public: { type: "boolean_literal" },
3213
+ image_src: { type: "text_literal" },
3214
+ image_src_quick: { type: "text_literal" },
3215
+ image_mime_type: { type: "text_literal" },
3216
+ image_width: { type: "int_literal" },
3217
+ image_height: { type: "int_literal" },
3218
+ image_aspect_ratio: { type: "float_literal" },
3219
+ },
3220
+ child_elements: {},
3221
+ },
3222
+ video: {
3223
+ // tbd
3224
+ kind: "content",
3225
+ category: "content",
3226
+ name: "Video",
3227
+ display_order: 28,
3228
+ attributes: {},
3229
+ child_elements: {},
3230
+ },
3231
+ qr: {
3232
+ kind: "content",
3233
+ category: "content",
3234
+ name: "QR",
3235
+ display_order: 29,
3236
+ attributes: {
3237
+ margin: {
3238
+ type: "int_literal",
3239
+ minimum: 0,
3240
+ maximum: 50,
3241
+ default: 10,
3242
+ },
3243
+ size: {
3244
+ type: "int_literal",
3245
+ minimum: 50,
3246
+ maximum: 500,
3247
+ default: 200,
3248
+ },
3249
+ image_size: {
3250
+ type: "float_literal",
3251
+ minimum: 0.1,
3252
+ maximum: 1,
3253
+ default: 0.5,
3254
+ },
3255
+ type_number: {
3256
+ type: "int_literal",
3257
+ minimum: 0,
3258
+ maximum: 4,
3259
+ default: 0,
3260
+ },
3261
+ error_correction_level: {
3262
+ type: "text_literal",
3263
+ enum: ["L", "M", "Q", "H"],
3264
+ default: "M",
3265
+ },
3266
+ color: { type: "color_literal", default: "var(--primary-t)" },
3267
+ corner_color: {
3268
+ type: "color_literal",
3269
+ default: "color-mix(in oklab, var(--primary-t), var(--bg) 20%)",
3270
+ },
3271
+ background_color: {
3272
+ type: "color_literal",
3273
+ default: "var(--shadow1-t)",
3274
+ },
3275
+ border_color: {
3276
+ type: "color_literal",
3277
+ default: "var(--shadow7-t)",
3278
+ },
3279
+ border_radius: {
3280
+ type: "int_literal",
3281
+ minimum: 0,
3282
+ maximum: 10,
3283
+ default: 5,
3284
+ },
3285
+ border_width: {
3286
+ type: "int_literal",
3287
+ minimum: 0,
3288
+ maximum: 3,
3289
+ default: 5,
3290
+ },
3291
+ data: { type: "text_literal" },
3292
+ image: {
3293
+ type: "image_literal",
3294
+ },
3295
+ extension: {
3296
+ type: "text_literal",
3297
+ enum: ["svg", "png", "jpeg"],
3298
+ default: "svg",
3299
+ },
3300
+ quality: {
3301
+ type: "float_literal",
3302
+ minimum: 0,
3303
+ maximum: 1,
3304
+ default: 0.8,
3305
+ },
3306
+ },
3307
+ child_elements: {},
3308
+ },
3309
+ table: {
3310
+ kind: "content",
3311
+ category: "content",
3312
+ name: "Table",
3313
+ display_order: 30,
3314
+ attributes: {
3315
+ caption: { type: "text_literal" },
3316
+ },
3317
+ child_elements: {
3318
+ thead: { display_order: 1, child_min_limit: 1, child_max_limit: 1 },
3319
+ tbody: { display_order: 2, child_min_limit: 1, child_max_limit: 1 },
3320
+ tfoot: { display_order: 3, child_min_limit: 0, child_max_limit: 1 },
3321
+ },
3322
+ },
3323
+ thead: {
3324
+ kind: "content",
3325
+ category: "content",
3326
+ name: "Table Header",
3327
+ display_order: 31,
3328
+ attributes: {},
3329
+ child_elements: {
3330
+ tr: { display_order: 1, child_min_limit: 1, child_max_limit: 1 },
3331
+ },
3332
+ },
3333
+ tbody: {
3334
+ kind: "content",
3335
+ category: "content",
3336
+ name: "Table Body",
3337
+ display_order: 32,
3338
+ attributes: {},
3339
+ child_elements: {
3340
+ tr: { display_order: 1, child_min_limit: 1, child_max_limit: 999 },
3341
+ },
3342
+ },
3343
+ tfoot: {
3344
+ kind: "content",
3345
+ category: "content",
3346
+ name: "Table Footer",
3347
+ display_order: 33,
3348
+ attributes: {},
3349
+ child_elements: {
3350
+ tr: { display_order: 1, child_min_limit: 0, child_max_limit: 1 },
3351
+ },
3352
+ },
3353
+ tr: {
3354
+ kind: "content",
3355
+ category: "content",
3356
+ name: "Table Row",
3357
+ display_order: 34,
3358
+ attributes: {},
3359
+ child_elements: {
3360
+ th: { display_order: 1, child_min_limit: 1, child_max_limit: 999 },
3361
+ td: { display_order: 2, child_min_limit: 1, child_max_limit: 999 },
3362
+ },
3363
+ },
3364
+ th: {
3365
+ kind: "content",
3366
+ category: "content",
3367
+ name: "Table Head Cell",
3368
+ display_order: 35,
3369
+ attributes: {},
3370
+ child_elements: {
3371
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
3372
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
3373
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
3374
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
3375
+ },
3376
+ },
3377
+ td: {
3378
+ kind: "content",
3379
+ category: "content",
3380
+ name: "Table Body Cell",
3381
+ display_order: 36,
3382
+ attributes: {},
3383
+ child_elements: {
3384
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
3385
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
3386
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
3387
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
3388
+ link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
3389
+ ref: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
3390
+ q: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
3391
+ span: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
3392
+ br: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
3393
+ sub: { display_order: 10, child_min_limit: 0, child_max_limit: 99 },
3394
+ sup: { display_order: 11, child_min_limit: 0, child_max_limit: 99 },
3395
+ s: { display_order: 12, child_min_limit: 0, child_max_limit: 99 },
3396
+ mark: { display_order: 13, child_min_limit: 0, child_max_limit: 99 },
3397
+ p: { display_order: 14, child_min_limit: 0, child_max_limit: 99 },
3398
+ ul: { display_order: 15, child_min_limit: 0, child_max_limit: 99 },
3399
+ ol: { display_order: 16, child_min_limit: 0, child_max_limit: 99 },
3400
+ code_inline: { display_order: 17, child_min_limit: 0, child_max_limit: 99 },
3401
+ code: { display_order: 18, child_min_limit: 0, child_max_limit: 99 },
3402
+ figure: { display_order: 19, child_min_limit: 0, child_max_limit: 99 },
3403
+ image: { display_order: 20, child_min_limit: 0, child_max_limit: 99 },
3404
+ time: { display_order: 21, child_min_limit: 0, child_max_limit: 99 },
3405
+ location: { display_order: 22, child_min_limit: 0, child_max_limit: 99 },
3406
+ },
3407
+ },
3408
+ nav: {
3409
+ kind: "content",
3410
+ category: "content",
3411
+ name: "Navigation",
3412
+ display_order: 37,
3413
+ attributes: {},
3414
+ child_elements: {},
3415
+ },
3416
+ code: {
3417
+ kind: "content",
3418
+ category: "content",
3419
+ name: "Code Block",
3420
+ display_order: 38,
3421
+ attributes: {
3422
+ content: { type: "text_literal" },
3423
+ language: { type: "text_literal" },
3424
+ },
3425
+ child_elements: {},
3426
+ },
3427
+ code_inline: {
3428
+ kind: "content",
3429
+ category: "content",
3430
+ name: "Code Inline",
3431
+ display_order: 39,
3432
+ attributes: {
3433
+ content: { type: "text_literal" },
3434
+ color: { type: "color_literal" },
3435
+ },
3436
+ child_elements: {},
3437
+ },
3438
+ br: {
3439
+ kind: "content",
3440
+ category: "content",
3441
+ name: "Line Break",
3442
+ display_order: 40,
3443
+ attributes: {},
3444
+ child_elements: {},
3445
+ },
3446
+ hr: {
3447
+ kind: "content",
3448
+ category: "content",
3449
+ name: "Horizontal Rule",
3450
+ display_order: 41,
3451
+ attributes: {},
3452
+ child_elements: {},
3453
+ },
3454
+ sub: {
3455
+ kind: "content",
3456
+ category: "content",
3457
+ name: "Subscript",
3458
+ display_order: 42,
3459
+ attributes: {},
3460
+ child_elements: {
3461
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
3462
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
3463
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
3464
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
3465
+ link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
3466
+ q: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
3467
+ span: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
3468
+ s: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
3469
+ mark: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
3470
+ },
3471
+ },
3472
+ sup: {
3473
+ kind: "content",
3474
+ category: "content",
3475
+ name: "Superscript",
3476
+ display_order: 43,
3477
+ attributes: {},
3478
+ child_elements: {
3479
+ base_text: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
3480
+ strong: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
3481
+ em: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
3482
+ strong_em: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
3483
+ link: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
3484
+ q: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
3485
+ span: { display_order: 7, child_min_limit: 0, child_max_limit: 99 },
3486
+ s: { display_order: 8, child_min_limit: 0, child_max_limit: 99 },
3487
+ mark: { display_order: 9, child_min_limit: 0, child_max_limit: 99 },
3488
+ },
3489
+ },
3490
+ pre: {
3491
+ kind: "content",
3492
+ category: "content",
3493
+ name: "Preformatted Text",
3494
+ display_order: 44,
3495
+ attributes: {},
3496
+ child_elements: {},
3497
+ },
3498
+ ref: {
3499
+ kind: "content",
3500
+ category: "content",
3501
+ name: "Reference",
3502
+ display_order: 45,
3503
+ attributes: {
3504
+ href: { type: "text_literal" },
3505
+ content: { type: "text_literal" },
3506
+ text_color: { type: "color_literal" },
3507
+ },
3508
+ child_elements: {},
3509
+ },
3510
+ footer: {
3511
+ kind: "content",
3512
+ category: "content",
3513
+ name: "Footer",
3514
+ display_order: 46,
3515
+ attributes: {},
3516
+ child_elements: {
3517
+ ol: { display_order: 1, child_min_limit: 0, child_max_limit: 99 },
3518
+ ul: { display_order: 2, child_min_limit: 0, child_max_limit: 99 },
3519
+ p: { display_order: 3, child_min_limit: 0, child_max_limit: 99 },
3520
+ h4: { display_order: 4, child_min_limit: 0, child_max_limit: 99 },
3521
+ h5: { display_order: 5, child_min_limit: 0, child_max_limit: 99 },
3522
+ h6: { display_order: 6, child_min_limit: 0, child_max_limit: 99 },
3523
+ },
3524
+ },
3525
+ youtube_video: {
3526
+ kind: "content",
3527
+ category: "content",
3528
+ name: "YouTube Video",
3529
+ display_order: 47,
3530
+ attributes: {
3531
+ id: { type: "text_literal" },
3532
+ },
3533
+ child_elements: {},
3534
+ },
3535
+ x_post: {
3536
+ kind: "content",
3537
+ category: "content",
3538
+ name: "X Post",
3539
+ display_order: 48,
3540
+ attributes: {
3541
+ post_id: { type: "text_literal" },
3542
+ },
3543
+ child_elements: {},
3544
+ },
3545
+ table_advanced: {
3546
+ kind: "content",
3547
+ category: "content",
3548
+ name: "Table Advanced",
3549
+ display_order: 51,
3550
+ attributes: {
3551
+ // obviously this is way off just pasted in to start
3552
+ columns: {
3553
+ type: "object",
3554
+ properties: {
3555
+ id: { type: "text_literal" },
3556
+ description: { type: "text_literal" },
3557
+ header_content: { type: "text_literal" },
3558
+ body_content: { type: "text_literal" },
3559
+ is_shown: { type: "text_literal" },
3560
+ is_fixed: { type: "text_literal" },
3561
+ alignment: { type: "text_literal" },
3562
+ min_width: { type: "text_literal" },
3563
+ max_width: { type: "text_literal" },
3564
+ display_order: { type: "text_literal" },
3565
+ is_use_in_short_display: { type: "boolean_literal" },
3566
+ is_autogenerated: { type: "boolean_literal" },
3567
+ is_updatable: { type: "boolean_literal" },
3568
+ is_db_column: { type: "boolean_literal" },
3569
+ db_data_type: { type: "text_literal" },
3570
+ postgres_type: { type: "text_literal" },
3571
+ default_value: { type: "text_literal" },
3572
+ quick_sort_variable_path: { type: "text_literal" },
3573
+ is_primary_key: { type: "boolean_literal" },
3574
+ is_nullable: { type: "boolean_literal" },
3575
+ is_force_uniqueness: { type: "boolean_literal" },
3576
+ foreign_table_id: { type: "text_literal" },
3577
+ is_cascade: { type: "text_literal" },
3578
+ },
3579
+ additionalProperties: false,
3580
+ required: [],
3581
+ },
3582
+ rows_data_from_variable_path: { type: "text_literal" },
3583
+ is_data_editable: { type: "text_literal" },
3584
+ is_paginate: { type: "text_literal" },
3585
+ nav_items: { type: "text_literal" },
3586
+ sort_by: { type: "text_literal" },
3587
+ filter: { type: "text_literal" },
3588
+ row_searchable_content: { type: "text_literal" },
3589
+ row_input_content: { type: "text_literal" },
3590
+ table_header_max_height: { type: "text_literal" },
3591
+ table_row_max_height: { type: "text_literal" },
3592
+ },
3593
+ child_elements: {},
3594
+ },
3595
+ number: {
3596
+ kind: "content",
3597
+ category: "content",
3598
+ name: "Number",
3599
+ display_order: 51,
3600
+ attributes: {
3601
+ val: { type: ["float_literal", "int_literal", "bigint_literal"] },
3602
+ },
3603
+ child_elements: {},
3604
+ },
3605
+ color: {
3606
+ kind: "content",
3607
+ category: "content",
3608
+ name: "Color",
3609
+ display_order: 52,
3610
+ attributes: {
3611
+ val: { type: "color_literal" },
3612
+ },
3613
+ child_elements: {},
3614
+ },
3615
+ json: {
3616
+ kind: "content",
3617
+ category: "content",
3618
+ name: "JSON",
3619
+ display_order: 53,
3620
+ attributes: {
3621
+ is_show_buttons: { type: "boolean_literal" },
3622
+ val: { type: "json_literal" },
3623
+ },
3624
+ child_elements: {},
3625
+ },
3626
+ email_address: {
3627
+ kind: "content",
3628
+ category: "content",
3629
+ name: "Email Address",
3630
+ attributes: {
3631
+ is_full: { type: "boolean_literal" },
3632
+ is_show_copy_to_clipboard: { type: "boolean_literal" },
3633
+ is_show_mail_to: { type: "boolean_literal", default: false },
3634
+ },
3635
+ },
3636
+ email_address_input: {
3637
+ kind: "content",
3638
+ category: "content",
3639
+ name: "Email Address Input",
3640
+ attributes: {
3641
+ placeholder: { type: "text_literal" },
3642
+ maximum_length: { type: "int_literal" },
3643
+ },
3644
+ },
3645
+ phone: {
3646
+ kind: "content",
3647
+ category: "content",
3648
+ name: "Phone",
3649
+ attributes: {
3650
+ is_full: { type: "boolean_literal" },
3651
+ is_show_country_code: { type: "boolean_literal", default: true },
3652
+ is_show_call_button: { type: "boolean_literal", default: true },
3653
+ is_show_local: { type: "boolean_literal", default: true },
3654
+ is_show_main_number: { type: "boolean_literal", default: true },
3655
+ is_show_type: { type: "boolean_literal", default: true },
3656
+ },
3657
+ },
3658
+ phone_input: {
3659
+ kind: "content",
3660
+ category: "content",
3661
+ name: "Phone",
3662
+ attributes: {
3663
+ placeholder: { type: "text_literal" },
3664
+ },
3665
+ },
3666
+ time_input: {
3667
+ kind: "content",
3668
+ category: "content",
3669
+ name: "Time Input",
3670
+ attributes: {
3671
+ val_from_variable_path: {
3672
+ type: "variable_path_literal",
3673
+ allowed_types: ["time_literal"],
3674
+ },
3675
+ granularity: {
3676
+ type: "text_literal",
3677
+ enum: ["year", "month", "week", "day", "hour", "minute", "second"],
3678
+ default: "day",
3679
+ },
3680
+ },
3681
+ },
3682
+ time: {
3683
+ kind: "content",
3684
+ category: "content",
3685
+ name: "Time",
3686
+ display_order: 49,
3687
+ attributes: {
3688
+ hour: { type: "int_literal" },
3689
+ year: { type: "int_literal" },
3690
+ color: { type: "color_literal" },
3691
+ epoch: { type: "bigint_literal" },
3692
+ month: { type: "int_literal" },
3693
+ minute: { type: "int_literal" },
3694
+ second: { type: "int_literal" },
3695
+ content: { type: "text_literal" },
3696
+ datetime: { type: "text_literal" },
3697
+ timezone: { type: "text_literal" },
3698
+ day_of_week: { type: "int_literal" },
3699
+ day_of_year: { type: "int_literal" },
3700
+ granularity: { type: "text_literal" },
3701
+ day_of_month: { type: "int_literal" },
3702
+ week_of_year: { type: "int_literal" },
3703
+ },
3704
+ child_elements: {},
3705
+ },
3706
+ phone_number: {
3707
+ kind: "content",
3708
+ category: "content",
3709
+ name: "Phone Number",
3710
+ display_order: 50,
3711
+ attributes: {
3712
+ tbd: { type: "text_literal" },
3713
+ },
3714
+ child_elements: {},
3715
+ },
3716
+ phone_number_input: {
3717
+ kind: "content",
3718
+ category: "content",
3719
+ name: "Phone Number",
3720
+ display_order: 50,
3721
+ attributes: {
3722
+ tbd: { type: "text_literal" },
3723
+ },
3724
+ child_elements: {},
3725
+ },
3726
+ file: {
3727
+ kind: "content",
3728
+ category: "content",
3729
+ name: "File",
3730
+ attributes: {},
3731
+ },
3732
+ boolean_icon: {
3733
+ kind: "content",
3734
+ category: "content",
3735
+ name: "Boolean Icon",
3736
+ attributes: {
3737
+ true_icon: {
3738
+ type: "icon_literal",
3739
+ default: "x",
3740
+ // enum: icon_ids
3741
+ },
3742
+ false_icon: {
3743
+ type: "icon_literal",
3744
+ default: "check",
3745
+ // enum: icon_ids
3746
+ },
3747
+ },
3748
+ },
3749
+ tag: {
3750
+ kind: "content",
3751
+ category: "content",
3752
+ name: "Tag",
3753
+ attributes: {
3754
+ // custom options input
3755
+ options: {
3756
+ type: "array_uniform_literal",
3757
+ // items: { anyOf }
3758
+ },
3759
+ },
3760
+ },
3761
+ // foreign_key: {
3762
+ // kind: "content",
3763
+ // category: "content",
3764
+ // name: "Foreign Key",
3765
+ // attributes: {},
3766
+ // },
3767
+ variable_path_input: {
3768
+ kind: "content",
3769
+ category: "content",
3770
+ name: "Variable Path Input",
3771
+ attributes: {},
3772
+ },
3773
+ number_input: {
3774
+ kind: "content",
3775
+ category: "content",
3776
+ name: "Number Input",
3777
+ attributes: {
3778
+ label: { type: "text_literal" },
3779
+ placeholder: { type: "text_literal" },
3780
+ val_from_variable_path: {
3781
+ type: "variable_path_literal",
3782
+ allowed_types: ["int_literal", "float_literal", "bigint_literal"],
3783
+ },
3784
+ },
3785
+ },
3786
+ text_input: {
3787
+ kind: "content",
3788
+ category: "content",
3789
+ name: "Text Input",
3790
+ attributes: {
3791
+ val_from_variable_path: {
3792
+ type: "variable_path_literal",
3793
+ allowed_types: ["text_literal"],
3794
+ },
3795
+ label: { type: "text_literal" },
3796
+ placeholder: { type: "text_literal" },
3797
+ maximum_length: { type: "int_literal" },
3798
+ is_text_hidable: { type: "boolean_literal", default: false },
3799
+ is_text_hidden: { type: "boolean_literal", default: false },
3800
+ },
3801
+ },
3802
+ slider: {
3803
+ kind: "content",
3804
+ category: "content",
3805
+ name: "Slider",
3806
+ attributes: {
3807
+ val_from_variable_path: {
3808
+ type: "variable_path_literal",
3809
+ allowed_types: ["int_literal", "float_literal", "bigint_literal"],
3810
+ },
3811
+ label: { type: "text_literal" },
3812
+ is_nullable: { type: "boolean_literal", default: false },
3813
+ minimum: { type: "int_literal", default: 0 },
3814
+ maximum: { type: "int_literal", default: 10 },
3815
+ step: { type: "float_literal", default: 1 },
3816
+ color: { type: "color_literal" },
3817
+ is_short: { type: "boolean_literal", default: false },
3818
+ step: { type: "int_literal", default: 1 },
3819
+ },
3820
+ },
3821
+ checkbox: {
3822
+ kind: "content",
3823
+ category: "content",
3824
+ name: "Checkbox",
3825
+ attributes: {
3826
+ val_from_variable_path: {
3827
+ type: "variable_path_literal",
3828
+ allowed_types: ["boolean_literal"],
3829
+ },
3830
+ label: { type: "text_literal" },
3831
+ size: { type: "float_literal", default: 2.4 },
3832
+ type: {
3833
+ type: "text_literal",
3834
+ default: "checkbox",
3835
+ enum: ["checkbox", "toggle"],
3836
+ },
3837
+ label: { type: "text_literal" },
3838
+ name: { type: "text_literal" },
3839
+ color: { type: "color_literal" },
3840
+ // on_val
3841
+ // off_val
3842
+ },
3843
+ },
3844
+ arrow_toggle_input: {
3845
+ kind: "content",
3846
+ category: "content",
3847
+ name: "Arrow Toggle",
3848
+ },
3849
+ icon_input: {
3850
+ kind: "content",
3851
+ category: "content",
3852
+ name: "Icon Input",
3853
+ attributes: {
3854
+ tbd: { type: "text_literal" },
3855
+ },
3856
+ },
3857
+ icon: {
3858
+ kind: "content",
3859
+ category: "content",
3860
+ name: "Icon",
3861
+ display_order: 50,
3862
+ attributes: {
3863
+ icon_id: { type: "text_literal" },
3864
+ color: { type: "color_literal" },
3865
+ },
3866
+ child_elements: {},
3867
+ },
3868
+ cron_input: {
3869
+ kind: "content",
3870
+ category: "content",
3871
+ name: "Cron",
3872
+ attributes: {
3873
+ tbd: { type: "text_literal" },
3874
+ },
3875
+ },
3876
+ cron: {
3877
+ kind: "content",
3878
+ category: "content",
3879
+ name: "Cron",
3880
+ attributes: {
3881
+ tbd: { type: "text_literal" },
3882
+ },
3883
+ },
3884
+ file_input: {
3885
+ kind: "content",
3886
+ category: "content",
3887
+ name: "File Picker",
3888
+ attributes: {
3889
+ accept: {
3890
+ type: "array_uniform_literal",
3891
+ items: {
3892
+ type: "text_literal",
3893
+ // enum: mime_types
3894
+ },
3895
+ },
3896
+ is_multiselect: { type: "boolean_literal", default: false },
3897
+ is_drop_zone: { type: "boolean_literal", default: true },
3898
+ },
3899
+ },
3900
+ color: {
3901
+ kind: "content",
3902
+ category: "content",
3903
+ name: "Color",
3904
+ display_order: 52,
3905
+ attributes: {
3906
+ val: { type: "color_literal" },
3907
+ },
3908
+ child_elements: {},
3909
+ },
3910
+ dropdown: {
3911
+ kind: "content",
3912
+ category: "content",
3913
+ name: "Dropdown",
3914
+ attributes: {
3915
+ options: {
3916
+ json_schema: {
3917
+ type: "array",
3918
+ items: {
3919
+ type: "object",
3920
+ properties: {
3921
+ key: {
3922
+ anyOf: [{ type: "string" }, { type: "number" }],
3923
+ },
3924
+ name: {
3925
+ type: "string",
3926
+ },
3927
+ },
3928
+ required: ["key", "name"],
3929
+ additionalProperties: false,
3930
+ },
3931
+ },
3932
+ },
3933
+ },
3934
+ },
3935
+ color_input: {
3936
+ kind: "content",
3937
+ category: "content",
3938
+ name: "Color Input",
3939
+ attributes: {
3940
+ val_from_variable_path: {
3941
+ type: "variable_path_literal",
3942
+ allowed_types: ["color_literal"],
3943
+ },
3944
+ is_show_opacity: { type: "boolean_literal", default: true },
3945
+ h_options: {
3946
+ type: "array_uniform_literal",
3947
+ items: {
3948
+ type: "int_literal",
3949
+ 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],
3950
+ },
3951
+ },
3952
+ l_options: {
3953
+ type: "array_uniform_literal",
3954
+ items: {
3955
+ type: "int_literal",
3956
+ 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],
3957
+ },
3958
+ },
3959
+ c_options: {
3960
+ type: "array_uniform_literal",
3961
+ items: {
3962
+ type: "int_literal",
3963
+ 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],
3964
+ },
3965
+ },
3966
+ o_options: {
3967
+ type: "array_uniform_literal",
3968
+ items: {
3969
+ type: "int_literal",
3970
+ 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],
3971
+ },
3972
+ },
3973
+ },
3974
+ },
3975
+ location_input: {
3976
+ kind: "content",
3977
+ category: "content",
3978
+ name: "Location Input",
3979
+ attributes: {
3980
+ val_from_variable_path: {
3981
+ type: "variable_path_literal",
3982
+ allowed_types: ["location_literal"],
3983
+ },
3984
+ is_show_opacity: { type: "boolean_literal", default: true },
3985
+ },
3986
+ },
3987
+ location: {
3988
+ kind: "content",
3989
+ category: "content",
3990
+ name: "Location",
3991
+ attributes: {
3992
+ // val_from_variable_path: {
3993
+ // type: "variable_path_literal",
3994
+ // allowed_types: ["location_literal"],
3995
+ // },
3996
+ val: { type: "location_literal" },
3997
+ is_popover: { type: "boolean_literal", default: false },
3998
+ is_inline: { type: "boolean_literal", default: false },
3999
+ },
4000
+ },
4001
+ loop: {
4002
+ kind: "content",
4003
+ category: "content",
4004
+ name: "Loop",
4005
+ attributes: {
4006
+ val_from_variable_path: {
4007
+ type: "variable_path_literal",
4008
+ allowed_types: ["array_uniform_literal", "object_uniform_literal"],
4009
+ },
4010
+ },
4011
+ child_elements: {
4012
+ ...main_child_element_options,
4013
+ },
4014
+ },
4015
+ // function_input: {}, maybe?
4016
+ }
4017
+
4018
+ export const node_types = {
4019
+ ...literal_types,
4020
+ ...content_types,
4021
+ }
4022
+
4023
+ function get_content_node_json_schema(type_id) {
4024
+ //tbd
4025
+ }
4026
+
4027
+ export const language_options = [
4028
+ { key: "en", name: "English", english_name: "English", emoji: "🇺🇸" },
4029
+ { key: "es", name: "Español", english_name: "Spanish", emoji: "🇪🇸" },
4030
+ { key: "zh", name: "中文", english_name: "Chinese", emoji: "🇨🇳" },
4031
+ { key: "fr", name: "Français", english_name: "French", emoji: "🇫🇷" },
4032
+ { key: "de", name: "Deutsch", english_name: "German", emoji: "🇩🇪" },
4033
+ { key: "ja", name: "日本語", english_name: "Japanese", emoji: "🇯🇵" },
4034
+ { key: "pt", name: "Português", english_name: "Portuguese", emoji: "🇵🇹" },
4035
+ { key: "it", name: "Italiano", english_name: "Italian", emoji: "🇮🇹" },
4036
+ { key: "ru", name: "Русский", english_name: "Russian", emoji: "🇷🇺" },
4037
+ { key: "ko", name: "한국어", english_name: "Korean", emoji: "🇰🇷" },
4038
+ { key: "ar", name: "العربية", english_name: "Arabic", emoji: "🇸🇦" },
4039
+ { key: "hi", name: "हिन्दी", english_name: "Hindi", emoji: "🇮🇳" },
4040
+ { key: "nl", name: "Nederlands", english_name: "Dutch", emoji: "🇳🇱" },
4041
+ { key: "sv", name: "Svenska", english_name: "Swedish", emoji: "🇸🇪" },
4042
+ { key: "da", name: "Dansk", english_name: "Danish", emoji: "🇩🇰" },
4043
+ { key: "fi", name: "Suomi", english_name: "Finnish", emoji: "🇫🇮" },
4044
+ { key: "no", name: "Norsk", english_name: "Norwegian", emoji: "🇳🇴" },
4045
+ { key: "pl", name: "Polski", english_name: "Polish", emoji: "🇵🇱" },
4046
+ { key: "cs", name: "Čeština", english_name: "Czech", emoji: "🇨🇿" },
4047
+ { key: "tr", name: "Türkçe", english_name: "Turkish", emoji: "🇹🇷" },
4048
+ { key: "el", name: "Ελληνικά", english_name: "Greek", emoji: "🇬🇷" },
4049
+ { key: "hu", name: "Magyar", english_name: "Hungarian", emoji: "🇭🇺" },
4050
+ { key: "th", name: "ไทย", english_name: "Thai", emoji: "🇹🇭" },
4051
+ { key: "id", name: "Bahasa Indonesia", english_name: "Indonesian", emoji: "🇮🇩" },
4052
+ { key: "ro", name: "Română", english_name: "Romanian", emoji: "🇷🇴" },
4053
+ { key: "bg", name: "Български", english_name: "Bulgarian", emoji: "🇧🇬" },
4054
+ { key: "vi", name: "Tiếng Việt", english_name: "Vietnamese", emoji: "🇻🇳" },
4055
+ { key: "sk", name: "Slovenčina", english_name: "Slovak", emoji: "🇸🇰" },
4056
+ { key: "sl", name: "Slovenščina", english_name: "Slovenian", emoji: "🇸🇮" },
4057
+ { key: "hr", name: "Hrvatski", english_name: "Croatian", emoji: "🇭🇷" },
4058
+ { key: "sr", name: "Српски", english_name: "Serbian", emoji: "🇷🇸" },
4059
+ { key: "bs", name: "Bosanski", english_name: "Bosnian", emoji: "🇧🇦" },
4060
+ { key: "mk", name: "Македонски", english_name: "Macedonian", emoji: "🇲🇰" },
4061
+ { key: "uk", name: "Українська", english_name: "Ukrainian", emoji: "🇺🇦" },
4062
+ { key: "he", name: "עברית", english_name: "Hebrew", emoji: "🇮🇱" },
4063
+ { key: "fa", name: "فارسی", english_name: "Persian", emoji: "🇮🇷" },
4064
+ { key: "bn", name: "বাংলা", english_name: "Bengali", emoji: "🇧🇩" },
4065
+ { key: "ta", name: "தமிழ்", english_name: "Tamil", emoji: "🇮🇳" },
4066
+ { key: "te", name: "తెలుగు", english_name: "Telugu", emoji: "🇮🇳" },
4067
+ ]
4068
+ // javascript: sequelize model definition using the iana timezone identifier
4069
+
4070
+ export const time_zone_options = [
4071
+ { key: "america/puerto_rico", name: "atlantic time / puerto rico (ast)", emoji: "🇵🇷" },
4072
+ { key: "america/new_york", name: "eastern time / new york (est/edt)", emoji: "🇺🇸" },
4073
+ { key: "america/toronto", name: "toronto time / toronto (est/edt)", emoji: "🇨🇦" },
4074
+ { key: "america/halifax", name: "halifax time (ast/adt)", emoji: "🇨🇦" },
4075
+ { key: "america/chicago", name: "central time / chicago (cst/cdt)", emoji: "🇺🇸" },
4076
+ { key: "america/mexico_city", name: "mexico city time (cst/cdt)", emoji: "🇲🇽" },
4077
+ { key: "america/denver", name: "mountain time / denver (mst/mdt)", emoji: "🇺🇸" },
4078
+ { key: "america/phoenix", name: "arizona time / phoenix (mst)", emoji: "🇺🇸" },
4079
+ { key: "america/los_angeles", name: "pacific time / los angeles (pst/pdt)", emoji: "🇺🇸" },
4080
+ { key: "america/anchorage", name: "alaska time (akst/akdt)", emoji: "🇺🇸" },
4081
+ { key: "america/adak", name: "hawaii-aleutian time (hast)", emoji: "🇺🇸" },
4082
+ { key: "pacific/honolulu", name: "hawaii time (hst)", emoji: "🇺🇸" },
4083
+ { key: "america/sao_paulo", name: "são paulo time (brt)", emoji: "🇧🇷" },
4084
+ { key: "america/bogota", name: "bogota time (cot)", emoji: "🇨🇴" },
4085
+ { key: "america/caracas", name: "caracas time (vet)", emoji: "🇻🇪" },
4086
+ { key: "america/lima", name: "lima time (pet)", emoji: "🇵🇪" },
4087
+ { key: "america/panama", name: "panama time (est)", emoji: "🇵🇦" },
4088
+ { key: "europe/london", name: "london time (gmt/bst)", emoji: "🇬🇧" },
4089
+ { key: "europe/berlin", name: "berlin time (cet/cest)", emoji: "🇩🇪" },
4090
+ { key: "europe/paris", name: "paris time (cet/cest)", emoji: "🇫🇷" },
4091
+ { key: "europe/moscow", name: "moscow time (msk)", emoji: "🇷🇺" },
4092
+ { key: "asia/dubai", name: "dubai time (gst)", emoji: "🇦🇪" },
4093
+ { key: "asia/tokyo", name: "tokyo time (jst)", emoji: "🇯🇵" },
4094
+ { key: "asia/shanghai", name: "shanghai time (cst)", emoji: "🇨🇳" },
4095
+ { key: "asia/kolkata", name: "india time (ist)", emoji: "🇮🇳" },
4096
+ { key: "asia/singapore", name: "singapore time (sgt)", emoji: "🇸🇬" },
4097
+ { key: "australia/sydney", name: "sydney time (aest/aedt)", emoji: "🇦🇺" },
4098
+ { key: "pacific/auckland", name: "auckland time (nzst/nzdt)", emoji: "🇳🇿" },
4099
+ { key: "europe/istanbul", name: "istanbul time (trt)", emoji: "🇹🇷" },
4100
+ { key: "america/st_johns", name: "newfoundland time / st. johns (nst/ndt)", emoji: "🇨🇦" },
4101
+ { key: "america/argentina/buenos_aires", name: "buenos aires time (art)", emoji: "🇦🇷" },
4102
+ { key: "america/santiago", name: "santiago time (clt)", emoji: "🇨🇱" },
4103
+ { key: "atlantic/reykjavik", name: "reykjavik time (gmt)", emoji: "🇮🇸" },
4104
+ { key: "africa/cairo", name: "cairo time (eet)", emoji: "🇪🇬" },
4105
+ { key: "asia/karachi", name: "pakistan time (pkt)", emoji: "🇵🇰" },
4106
+ { key: "asia/hong_kong", name: "hong kong time (hkt)", emoji: "🇭🇰" },
4107
+ { key: "asia/seoul", name: "seoul time (kst)", emoji: "🇰🇷" },
4108
+ { key: "asia/bangkok", name: "bangkok time (ict)", emoji: "🇹🇭" },
4109
+ { key: "asia/kuala_lumpur", name: "malaysia time (myt)", emoji: "🇲🇾" },
4110
+ { key: "asia/manila", name: "philippine time / manila (pst)", emoji: "🇵🇭" },
4111
+ ]
4112
+
4113
+ export const person_trait_options = [
4114
+ { key: "white", name: "White", emoji: "✋🏻" },
4115
+ { key: "black", name: "Black / African American", emoji: "✋🏿" },
4116
+ { key: "hispanic_latino", name: "Hispanic / Latino", emoji: "✋🏽" },
4117
+ { key: "asian_indian", name: "Asian Indian", emoji: "✋🏾" },
4118
+ { key: "chinese", name: "Chinese", emoji: "✋🏼" },
4119
+ { key: "filipino", name: "Filipino", emoji: "✋🏼" },
4120
+ { key: "japanese", name: "Japanese", emoji: "✋🏻" },
4121
+ { key: "korean", name: "Korean", emoji: "✋🏻" },
4122
+ { key: "vietnamese", name: "Vietnamese", emoji: "✋🏼" },
4123
+ { key: "native_american", name: "Native American / Alaska Native", emoji: "✋🏽" },
4124
+ { key: "pacific_islander", name: "Native Hawaiian / Other Pacific Islander", emoji: "✋🏽" },
4125
+ { key: "middle_eastern", name: "Middle Eastern", emoji: "✋🏽" },
4126
+ { key: "north_african", name: "North African", emoji: "✋🏾" },
4127
+ { key: "other_ethnicity", name: "Other Ethnicity", emoji: "✋🏽" },
4128
+ { key: "mixed_ethnicity", name: "Mixed Ethnicity", emoji: "✋🏼" },
4129
+ { key: "speaks_english", name: "Speeks English", emoji: "🇺🇸" },
4130
+ { key: "speaks_spanish", name: "Speeks Spanish", emoji: "🇪🇸" },
4131
+ { key: "speaks_french", name: "Speeks French", emoji: "🇫🇷" },
4132
+ { key: "speaks_mandarin", name: "Speeks Mandarin", emoji: "🇨🇳" },
4133
+ { key: "speaks_russian", name: "Speeks Russian", emoji: "🇷🇺" },
4134
+ { key: "speaks_portuguese", name: "Speeks Portuguese", emoji: "🇵🇹" },
4135
+ { key: "speaks_korean", name: "Speeks Korean", emoji: "🇰🇷" },
4136
+ { key: "speaks_japanese", name: "Speeks Japanese", emoji: "🇯🇵" },
4137
+ { key: "speaks_german", name: "Speeks German", emoji: "🇩🇪" },
4138
+ { key: "gender_identity_male", name: "Male", emoji: "👱" },
4139
+ { key: "gender_identity_female", name: "Female", emoji: "👩" },
4140
+ { key: "gender_identity_transgender", name: "Transgender", emoji: "🏳️‍⚧️" },
4141
+ { key: "gender_identity_other", name: "Other Gender", emoji: "🌀" },
4142
+ { key: "assigned_sex_at_birth_male", name: "Assigned Male at Birth", emoji: "🚹" },
4143
+ { key: "assigned_sex_at_birth_female", name: "Assigned Female at Birth", emoji: "🚺" },
4144
+ { key: "attracted_to_gender_male", name: "Attracted to Males", emoji: "👱" },
4145
+ { key: "attracted_to_gender_female", name: "Attracted to Females", emoji: "👩" },
4146
+ { key: "attracted_to_gender_other", name: "Attracted to Other Genders", emoji: "🙂" },
4147
+ { key: "single", name: "Single", emoji: "💖" },
4148
+ { key: "married", name: "Married", emoji: "💍" },
4149
+ { key: "previously_married", name: "Preiously Married", emoji: "💍" },
4150
+ { key: "never_want_marriage", name: "Never Want Married", emoji: "1️⃣" },
4151
+ { key: "live_with_parents", name: "Live with Parents", emoji: "🏠" },
4152
+ { key: "home_owner", name: "Home Owner", emoji: "🏡" },
4153
+ { key: "couch_surfer", name: "Couch Surfer", emoji: "🛋️" },
4154
+ { key: "rent_housing", name: "Rent Housing", emoji: "🏢" },
4155
+ { key: "nomadic", name: "Nomadic", emoji: "🌏" },
4156
+ { key: "happy_childhood", name: "Happy Childhood", emoji: "🌈" },
4157
+ { key: "parents_together", name: "Parents Together", emoji: "👪" },
4158
+ { key: "close_to_parents", name: "Close to Parents", emoji: "👨‍👩‍👧‍👦" },
4159
+ { key: "not_close_to_parents", name: "Not Close to Parents", emoji: "👨‍👩‍👧‍👦" },
4160
+ { key: "own_cat", name: "Cat Owner", emoji: "🐈" },
4161
+ { key: "own_dog", name: "Dog Owner", emoji: "🐕" },
4162
+ { key: "parent", name: "Parent", emoji: "👨‍👩‍👧‍👦" },
4163
+ { key: "expecting_newborn", name: "Expecting Newborn", emoji: "🍼" },
4164
+ { key: "have_kids", name: "Have Kids", emoji: "👶" },
4165
+ { key: "dont_have_kids", name: "Don't Have Kids", emoji: "👶" },
4166
+ { key: "want_kids", name: "Want Kids", emoji: "🍼" },
4167
+ { key: "dont_want_kids", name: "Don't Want Kids", emoji: "👶" },
4168
+ { key: "over_100k_usd_net_worth", name: "Over $100k Net Worth", emoji: "💲" },
4169
+ { key: "over_500k_usd_net_worth", name: "Over $500k Net Worth", emoji: "💵" },
4170
+ { key: "over_1m_usd_net_worth", name: "Over $1 Million Net Worth", emoji: "💰" },
4171
+ { key: "low_budget", name: "Low Budget", emoji: "💸" },
4172
+ { key: "high_budget", name: "High Budget", emoji: "🤑" },
4173
+ { key: "investor", name: "Investor", emoji: "📈" },
4174
+ { key: "saver", name: "Saver", emoji: "🐷" },
4175
+ { key: "spender", name: "Spender", emoji: "🛍️" },
4176
+ { key: "philanthropist", name: "Philanthropist", emoji: "❤️" },
4177
+ { key: "financially_independent", name: "Financially Independent", emoji: "🌟" },
4178
+ { key: "entrepreneur", name: "Entrepreneur", emoji: "🚀" },
4179
+ { key: "own_cryptocurrency", name: "Cryptocurrency Enthusiast", emoji: "⛓️" },
4180
+ { key: "work_remotely", name: "Work Remotely", emoji: "💻" },
4181
+ { key: "work_in_web_development", name: "Work in Web Development", emoji: "🌐" },
4182
+ { key: "work_in_mobile_development", name: "Work in Mobile Development", emoji: "📱" },
4183
+ { key: "work_in_ui_ux_design", name: "Work in UI/UX Design", emoji: "🎨" },
4184
+ { key: "work_in_software_engineering", name: "Work in Software Engineering", emoji: "💻" },
4185
+ { key: "work_in_cryptocurrency", name: "Work in Cryptocurrency", emoji: "🪙" },
4186
+ { key: "work_in_startup", name: "Work in Startup", emoji: "🚀" },
4187
+ { key: "work_in_data_science", name: "Work in Data Science", emoji: "📈" },
4188
+ { key: "work_in_finance", name: "Work in Finance & Investment", emoji: "💹" },
4189
+ { key: "work_in_product_management", name: "Work in Product Management", emoji: "🗂️" },
4190
+ { key: "work_in_education", name: "Work in Education", emoji: "🎓" },
4191
+ { key: "work_in_healthcare", name: "Work in Healthcare", emoji: "⚕️" },
4192
+ { key: "work_in_politics", name: "Work in Politics", emoji: "🏛️" },
4193
+ { key: "work_in_creative_arts", name: "Work in Creative Arts", emoji: "👩‍🎨" },
4194
+ { key: "work_in_legal", name: "Work in Legal", emoji: "⚖️" },
4195
+ { key: "work_in_public_speaking", name: "Public Speaker", emoji: "🗣️" },
4196
+ { key: "work_in_content_creation", name: "Work in Content Creation", emoji: "📹" },
4197
+ { key: "work_in_mental_health", name: "Work in Mental Health", emoji: "🧠" },
4198
+ { key: "work_in_coaching", name: "Work in Coaching", emoji: "🏋️" },
4199
+ { key: "work_in_fitness", name: "Work in Fitness", emoji: "💪" },
4200
+ { key: "work_in_community_manager", name: "Community Manager", emoji: "🤝" },
4201
+ { key: "work_in_marketing", name: "Work in Marketing", emoji: "📈" },
4202
+ { key: "work_in_sales", name: "Work in Sales", emoji: "🤑" },
4203
+ { key: "work_in_ecommerce", name: "Work in Ecommerce", emoji: "🛒" },
4204
+ { key: "work_in_customer_support", name: "Work in Customer Support", emoji: "🔊" },
4205
+ { key: "work_in_travel", name: "Work in Travel", emoji: "✈️" },
4206
+ { key: "work_in_sports", name: "Work in Sports", emoji: "🏅" },
4207
+ { key: "work_in_architecture", name: "Work in Architecture", emoji: "🏗️" },
4208
+ { key: "work_in_hospitality", name: "Work in Hospitality", emoji: "🏨" },
4209
+ { key: "work_in_fashion", name: "Work in Fashion", emoji: "👗" },
4210
+ { key: "work_in_adult", name: "Work in Adult", emoji: "🔞" },
4211
+ { key: "work_in_social_media", name: "Work in Social Media", emoji: "📱" },
4212
+ { key: "work_in_journalism", name: "Work in Journalism", emoji: "📰" },
4213
+ { key: "work_in_environment", name: "Work in Environment", emoji: "🌳" },
4214
+ { key: "work_in_photography", name: "Work in Photography", emoji: "📸" },
4215
+ { key: "work_in_music", name: "Work in Music", emoji: "🎶" },
4216
+ { key: "work_in_food", name: "Work in Food", emoji: "🍳" },
4217
+ { key: "work_in_writing", name: "Work in Writing", emoji: "✍️" },
4218
+ { key: "work_in_event_planning", name: "Work in Event Planning", emoji: "🎉" },
4219
+ { key: "work_in_activism", name: "Work in Activism", emoji: "✊" },
4220
+ { key: "work_in_philanthropy", name: "Work in Philanthropy", emoji: "🎗️" },
4221
+ { key: "self_learner", name: "Self Learner", emoji: "🔍" },
4222
+ { key: "learn_by_doing", name: "Learn By Doing", emoji: "🛠️" },
4223
+ { key: "youtube_learner", name: "YouTube Learner", emoji: "▶️" },
4224
+ { key: "have_bachelors_degree", name: "Have Bachelor's Degree", emoji: "📜" },
4225
+ { key: "have_masters_degree", name: "Have Master's Degree", emoji: "🎓" },
4226
+ { key: "have_phd", name: "Have PhD", emoji: "👩‍🏫" },
4227
+ { key: "interest_in_philosophy", name: "Interest in Philosophy", emoji: "💭" },
4228
+ { key: "interest_in_psychology", name: "Interest in Psychology", emoji: "🧠" },
4229
+ { key: "interest_in_economics", name: "Interest in Economics", emoji: "💹" },
4230
+ { key: "interest_in_history", name: "Interest in History", emoji: "🏰" },
4231
+ { key: "interest_in_mathematics", name: "Interest in Mathematics", emoji: "➗" },
4232
+ { key: "enjoy_talking_politics", name: "Enjoy Talking Politics", emoji: "🗣️" },
4233
+ { key: "limit_talking_politics", name: "Limit Talking Politics", emoji: "🤐" },
4234
+ { key: "not_political", name: "Not Political", emoji: "🤷" },
4235
+ { key: "actively_advocate_politics", name: "Actively Advocate Politics", emoji: "✊" },
4236
+ { key: "politically_lean_democrat", name: "Politically Lean Democrat", emoji: "🔵" },
4237
+ { key: "politically_lean_republican", name: "Politically Lean Republican", emoji: "🔴" },
4238
+ { key: "politically_lean_independent", name: "Politically Lean Independent", emoji: "🟢" },
4239
+ { key: "politically_lean_libertarian", name: "Politically Lean Libertarian", emoji: "🟡" },
4240
+ { key: "politically_lean_green_party", name: "Politically Lean Green Party", emoji: "🍀" },
4241
+ { key: "politically_lean_progressive", name: "Politically Lean Progressive", emoji: "⏩" },
4242
+ { key: "politically_lean_centrist", name: "Politically Lean Centrist", emoji: "🎯" },
4243
+ { key: "politically_lean_conservative", name: "Politically Lean Conservative", emoji: "🐘" },
4244
+ { key: "politically_lean_socialist", name: "Politically Lean Socialist", emoji: "✊" },
4245
+ { key: "politically_lean_other", name: "Politically Lean Other", emoji: "🔀" },
4246
+ { key: "not_religious", name: "Not Religious", emoji: "💫" },
4247
+ { key: "religion_of_christianity", name: "Christianity Follower", emoji: "✝️" },
4248
+ { key: "religion_of_islam", name: "Islam Follower", emoji: "🕌" },
4249
+ { key: "religion_of_hinduism", name: "Hinduism Follower", emoji: "🕉️" },
4250
+ { key: "religion_of_buddhism", name: "Buddhism Follower", emoji: "🔆" },
4251
+ { key: "religion_of_sikhism", name: "Sikhism Follower", emoji: "🔱" },
4252
+ { key: "religion_of_judaism", name: "Judaism Follower", emoji: "✡️" },
4253
+ { key: "religion_of_taoism", name: "Taoism Follower", emoji: "☯️" },
4254
+ { key: "religion_of_shinto", name: "Shinto Follower", emoji: "⛩️" },
4255
+ { key: "religion_of_paganism", name: "Paganism Follower", emoji: "🌿" },
4256
+ { key: "religion_of_jainism", name: "Jainism Follower", emoji: "🙏" },
4257
+ { key: "religion_of_agnostic", name: "Agnostic", emoji: "❓" },
4258
+ { key: "religion_of_atheist", name: "Atheist", emoji: "🚫" },
4259
+ { key: "religion_of_other", name: "Other Religion Follower", emoji: "🔀" },
4260
+ { key: "spiritual", name: "Spiritual", emoji: "🌌" },
4261
+ { key: "diet_vegetarian", name: "Vegetarian", emoji: "🥕" },
4262
+ { key: "diet_vegan", name: "Vegan", emoji: "🌿" },
4263
+ { key: "diet_pescetarian", name: "Pescetarian", emoji: "🐟" },
4264
+ { key: "diet_gluten_free", name: "Gluten-Free", emoji: "🌾" },
4265
+ { key: "diet_keto", name: "Keto", emoji: "🥓" },
4266
+ { key: "diet_halal", name: "Halal", emoji: "☪️" },
4267
+ { key: "diet_kosher", name: "Kosher", emoji: "✡️" },
4268
+ { key: "diet_tea", name: "Tea Lover", emoji: "🍵" },
4269
+ { key: "diet_coffee", name: "Coffee Lover", emoji: "☕️" },
4270
+ { key: "diet_wine", name: "Wine Connoisseur", emoji: "🍷" },
4271
+ { key: "diet_beer", name: "Beer Aficionado", emoji: "🍺" },
4272
+ { key: "diet_organic", name: "Organic Diet", emoji: "🌾" },
4273
+ { key: "diet_healthy", name: "Healthy Diet", emoji: "🥗" },
4274
+ { key: "diet_fasting", name: "Intermittent Fasting Diet", emoji: "⏲️" },
4275
+ { key: "no_smoking", name: "Non-Smoker", emoji: "🚭" },
4276
+ { key: "no_alcohol", name: "Alcohol-Free", emoji: "🥤" },
4277
+ { key: "no_drugs", name: "Drug-Free", emoji: "🚫" },
4278
+ { key: "body_shape_slim", name: "Slim Body Shape", emoji: "🧍" },
4279
+ { key: "body_shape_petite", name: "Petite Body Shape", emoji: "🧚" },
4280
+ { key: "body_shape_lean_athletic", name: "Lean Athletic Body Shape", emoji: "🏃" },
4281
+ { key: "body_shape_muscular", name: "Muscular Body Shape", emoji: "💪" },
4282
+ { key: "body_shape_average", name: "Average Body Shape", emoji: "🚶" },
4283
+ { key: "body_shape_curvy", name: "Curvy Body Shape", emoji: "🍑" },
4284
+ { key: "body_shape_cushy", name: "Cushy Body Shape", emoji: "⚖️" },
4285
+ { key: "body_shape_heavy", name: "Heavy Body Shape", emoji: "🍰" },
4286
+ { key: "weight_under_100", name: "Under 100 lbs (45 kg)", emoji: "⚖️" },
4287
+ { key: "weight_100_125", name: "100-125 lbs (45-57 kg)", emoji: "⚖️" },
4288
+ { key: "weight_125_150", name: "125-150 lbs (57-68 kg)", emoji: "⚖️" },
4289
+ { key: "weight_150_175", name: "150-175 lbs (68-79 kg)", emoji: "⚖️" },
4290
+ { key: "weight_175_200", name: "175-200 lbs (79-91 kg)", emoji: "⚖️" },
4291
+ { key: "weight_200_225", name: "200-225 lbs (91-102 kg)", emoji: "⚖️" },
4292
+ { key: "weight_225_250", name: "225-250 lbs (102-113 kg)", emoji: "⚖️" },
4293
+ { key: "weight_250_300", name: "250-300 lbs (113-136 kg)", emoji: "⚖️" },
4294
+ { key: "weight_over_300", name: "Over 300 lbs (136 kg)", emoji: "⚖️" },
4295
+ { key: "height_under_4_6", name: "Under 4 ft 6 in (137 cm)", emoji: "📏" },
4296
+ { key: "height_4_6_to_5", name: "4 ft 6 in - 5 ft 0 in (137-152 cm)", emoji: "📏" },
4297
+ { key: "height_5_to_5_5", name: "5 ft 0 in - 5 ft 5 in (152-165 cm)", emoji: "📏" },
4298
+ { key: "height_5_5_to_5_8", name: "5 ft 5 in - 5 ft 8 in (165-173 cm)", emoji: "📏" },
4299
+ { key: "height_5_8_to_5_10", name: "5 ft 8 in - 5 ft 10 in (173-178 cm)", emoji: "📏" },
4300
+ { key: "height_5_10_to_6", name: "5 ft 10 in - 6 ft 0 in (178-183 cm)", emoji: "📏" },
4301
+ { key: "height_6_to_6_3", name: "6 ft 0 in - 6 ft 3 in (183-190 cm)", emoji: "📏" },
4302
+ { key: "height_over_6_3", name: "Over 6 ft 3 in (190 cm)", emoji: "📏" },
4303
+ { key: "have_no_tattoos", name: "No Tattoos", emoji: "⛔" },
4304
+ { key: "have_few_tattoos", name: "Few Tattoos", emoji: "💉" },
4305
+ { key: "have_many_tattoos", name: "Many Tattoos", emoji: "🎨" },
4306
+ { key: "have_cosmetic_procedures", name: "Had Cosmetic Procedures", emoji: "💄" },
4307
+ { key: "have_clear_skin", name: "Clear Skin", emoji: "🌟" },
4308
+ { key: "eye_color_blue", name: "Blue Eyes", emoji: "🔵" },
4309
+ { key: "eye_color_brown", name: "Brown Eyes", emoji: "🟤" },
4310
+ { key: "eye_color_green", name: "Green Eyes", emoji: "🟢" },
4311
+ { key: "eye_color_hazel", name: "Hazel Eyes", emoji: "🌰" },
4312
+ { key: "eye_color_gray", name: "Gray Eyes", emoji: "⚪️" },
4313
+ { key: "eye_color_amber", name: "Amber Eyes", emoji: "🟠" },
4314
+ { key: "eye_color_black", name: "Black Eyes", emoji: "⚫" },
4315
+ { key: "eye_color_mixed", name: "Mixed Eyes", emoji: "🌈" },
4316
+ { key: "have_black_hair", name: "Black Hair", emoji: "⚫️" },
4317
+ { key: "have_brown_hair", name: "Brown Hair", emoji: "🟤" },
4318
+ { key: "have_blonde_hair", name: "Blonde Hair", emoji: "🟡" },
4319
+ { key: "have_red_hair", name: "Red Hair", emoji: "🦰" },
4320
+ { key: "have_gray_hair", name: "Gray Hair", emoji: "⚪️" },
4321
+ { key: "have_dyed_hair", name: "Dyed Hair", emoji: "🌈" },
4322
+ { key: "have_bald_head", name: "Shaved/Bald", emoji: "🦲" },
4323
+ { key: "have_short_hair", name: "Short Hair", emoji: "💇" },
4324
+ { key: "have_long_hair", name: "Long Hair", emoji: "🪮" },
4325
+ { key: "have_beard", name: "Beard", emoji: "🧔" },
4326
+ { key: "seeking_travel_buddies", name: "Seeking Travel Buddies", emoji: "🎒" },
4327
+ { key: "seeking_friends", name: "Seeking Friends", emoji: "🤝" },
4328
+ { key: "seeking_casual_dating", name: "Seeking Casual Dating", emoji: "🍹" },
4329
+ { key: "seeking_business_partners", name: "Seeking Business Partners", emoji: "💼" },
4330
+ { key: "seeking_relationship", name: "Seeking Relationship", emoji: "❤️" },
4331
+ { key: "seeking_job", name: "Seeking Job", emoji: "🔍" },
4332
+ { key: "seeking_networking", name: "Seeking Networking", emoji: "🤝" },
4333
+ { key: "uses_twitter", name: "Twitter/X User", emoji: "🐦" },
4334
+ { key: "uses_youtube", name: "YouTube User", emoji: "📺" },
4335
+ { key: "uses_facebook", name: "Facebook User", emoji: "📘" },
4336
+ { key: "uses_instagram", name: "Instagram User", emoji: "📸" },
4337
+ { key: "uses_linkedin", name: "LinkedIn User", emoji: "💼" },
4338
+ { key: "uses_tiktok", name: "TikTok User", emoji: "🎵" },
4339
+ { key: "uses_snapchat", name: "Snapchat User", emoji: "👻" },
4340
+ { key: "uses_whatsapp", name: "WhatsApp User", emoji: "💬" },
4341
+ { key: "uses_telegram", name: "Telegram User", emoji: "📬" },
4342
+ { key: "uses_discord", name: "Discord User", emoji: "💻" },
4343
+ { key: "uses_reddit", name: "Reddit User", emoji: "👽" },
4344
+ { key: "uses_pinterest", name: "Pinterest User", emoji: "📌" },
4345
+ { key: "uses_twitch", name: "Twitch User", emoji: "🎮" },
4346
+ { key: "uses_wechat", name: "WeChat User", emoji: "💬" },
4347
+ { key: "uses_line", name: "LINE User", emoji: "💚" },
4348
+ { key: "uses_vk", name: "VK User", emoji: "🇷🇺" },
4349
+ { key: "introvert", name: "Introvert", emoji: "🤫" },
4350
+ { key: "extrovert", name: "Extrovert", emoji: "🦋" },
4351
+ { key: "minimalist", name: "Minimalist", emoji: "⬜️" },
4352
+ { key: "enjoy_partying_often", name: "Enjoy Partying Often", emoji: "🎉" },
4353
+ { key: "enjoy_partying_occasionally", name: "Enjoy Partying Occasionally", emoji: "🎊" },
4354
+ { key: "enjoy_college_style_parties", name: "Enjoy College-Style Parties", emoji: "🍺" },
4355
+ { key: "enjoy_loud_music_parties", name: "Enjoy Loud Music Parties", emoji: "🎶" },
4356
+ { key: "enjoy_heavy_drinking_parties", name: "Enjoy Heavy Drinking Parties", emoji: "🍻" },
4357
+ { key: "enjoy_professional_gatherings", name: "Enjoy Professional Gatherings", emoji: "🍷" },
4358
+ { key: "enjoy_elegant_gatherings", name: "Enjoy Elegant Gatherings", emoji: "🍾" },
4359
+ { key: "enjoy_formal_receptions", name: "Enjoy Formal Receptions", emoji: "👔" },
4360
+ { key: "enjoy_casual_socials", name: "Enjoy Casual Socials", emoji: "🍻" },
4361
+ { key: "enjoy_chill_hangouts", name: "Enjoy Chill Hangouts", emoji: "🛋️" },
4362
+ { key: "enjoy_large_events", name: "Enjoy Large Events", emoji: "🎪" },
4363
+ { key: "enjoy_small_gatherings", name: "Enjoy Small Gatherings", emoji: "🏡" },
4364
+ { key: "enjoy_online_events", name: "Enjoy Online Events", emoji: "💻" },
4365
+ { key: "tidy", name: "Tidy", emoji: "🧼" },
4366
+ { key: "messy", name: "Messy", emoji: "🧺" },
4367
+ { key: "have_trouble_walking", name: "Have Trouble Walking", emoji: "🦽" },
4368
+ { key: "have_disability", name: "Have Disability", emoji: "🧠" },
4369
+ { key: "often_wake_up_early", name: "Early Riser", emoji: "🌅" },
4370
+ { key: "often_stay_up_late", name: "Night Owl", emoji: "🌜" },
4371
+ { key: "enjoy_meditation", name: "Enjoy Meditation", emoji: "🧘" },
4372
+ { key: "enjoy_active_lifestyle", name: "Active Lifestyle", emoji: "🏃" },
4373
+ { key: "enjoy_fitness", name: "Fitness Enthusiast", emoji: "💪" },
4374
+ { key: "enjoy_yoga", name: "Yoga Enthusiast", emoji: "🧘" },
4375
+ { key: "enjoy_running", name: "Runner", emoji: "🏃" },
4376
+ { key: "enjoy_swimming", name: "Swimmer", emoji: "🏊" },
4377
+ { key: "enjoy_cycling", name: "Cyclist", emoji: "🚴" },
4378
+ { key: "enjoy_hiking", name: "Hiker", emoji: "🥾" },
4379
+ { key: "enjoy_golfing", name: "Golfer", emoji: "⛳" },
4380
+ { key: "fan_of_golf", name: "Golf Fan", emoji: "⛳" },
4381
+ { key: "enjoy_playing_tennis", name: "Enjoy Playing Tennis", emoji: "🎾" },
4382
+ { key: "fan_of_tennis", name: "Tennis Fan", emoji: "🎾" },
4383
+ { key: "enjoy_playing_pickleball", name: "Enjoy Playing Pickleball", emoji: "🎾" },
4384
+ { key: "enjoy_playing_football", name: "Enjoy Playing Football", emoji: "🏈" },
4385
+ { key: "fan_of_football", name: "Football Fan", emoji: "🏈" },
4386
+ { key: "enjoy_playing_soccer", name: "Enjoy Playing Soccer", emoji: "⚽" },
4387
+ { key: "soccer_fan", name: "Soccer Fan", emoji: "⚽" },
4388
+ { key: "enjoy_playing_basketball", name: "Enjoy playing Basketball", emoji: "🏀" },
4389
+ { key: "fan_of_basketball", name: "Basketball Fan", emoji: "🏀" },
4390
+ { key: "enjoy_playing_hockey", name: "Enjoy Playing Hockey", emoji: "🏒" },
4391
+ { key: "fan_of_hockey", name: "Hockey Fan", emoji: "🏒" },
4392
+ { key: "fan_of_formula_one", name: "Formula 1 Fan", emoji: "🏎️" },
4393
+ { key: "fan_of_motor_sports", name: "Motor Sports Fan", emoji: "🏍️" },
4394
+ { key: "enjoy_surfing", name: "Enjoy Surfing", emoji: "🏄‍♂️" },
4395
+ { key: "enjoy_rock_climbing", name: "Enjoy Rock Climbing", emoji: "🧗‍♀️" },
4396
+ { key: "enjoy_camping", name: "Enjoy Camping", emoji: "⛺" },
4397
+ { key: "enjoy_fishing", name: "Enjoy Fishing", emoji: "🎣" },
4398
+ { key: "enjoy_gardening", name: "Enjoy Gardening", emoji: "🌱" },
4399
+ { key: "enjoy_baking", name: "Enjoy Baking", emoji: "🍪" },
4400
+ { key: "enjoy_cooking", name: "Enjoy Cooking", emoji: "👩‍🍳" },
4401
+ { key: "enjoy_reading", name: "Enjoy Reading", emoji: "📚" },
4402
+ { key: "enjoy_writing", name: "Enjoy Writing", emoji: "✍️" },
4403
+ { key: "enjoy_drawing", name: "Enjoy Drawing", emoji: "✏️" },
4404
+ { key: "enjoy_painting", name: "Enjoy Painting", emoji: "🎨" },
4405
+ { key: "enjoy_pottery", name: "Enjoy Pottery", emoji: "🏺" },
4406
+ { key: "enjoy_knitting", name: "Enjoy Knitting", emoji: "🧶" },
4407
+ { key: "enjoy_origami", name: "Enjoy Origami", emoji: "🗾" },
4408
+ { key: "enjoy_photography", name: "Enjoy Photography", emoji: "📷" },
4409
+ { key: "enjoy_movies", name: "Enjoy Movies", emoji: "🍿" },
4410
+ { key: "enjoy_documentaries", name: "Enjoy Documentaries", emoji: "🎥" },
4411
+ { key: "enjoy_comedy", name: "Enjoy Comedy", emoji: "😄" },
4412
+ { key: "enjoy_music_production", name: "Enjoy Producing Music", emoji: "🎵" },
4413
+ { key: "enjoy_outdoors", name: "Enjoy Outdoors", emoji: "🏞️" },
4414
+ { key: "enjoy_beach", name: "Enjoy the Beach", emoji: "🏖️" },
4415
+ { key: "enjoy_diy", name: "Enjoy DIY", emoji: "🔨" },
4416
+ { key: "enjoy_diy_electronics", name: "Enjoy DIY Electronics", emoji: "🔌" },
4417
+ { key: "enjoy_home_renovation", name: "Enjoy Home Renovation", emoji: "🏚️" },
4418
+ { key: "enjoy_cruising", name: "Enjoy Cruises", emoji: "🚢" },
4419
+ { key: "enjoy_skateboarding", name: "Enjoy Skateboarding", emoji: "🛹" },
4420
+ { key: "enjoy_snow", name: "Enjoy Snow", emoji: "❄️" },
4421
+ { key: "enjoy_magic", name: "Enjoy Magic", emoji: "🔮" },
4422
+ { key: "enjoy_listening_to_podcasts", name: "Enjoy Listening to Podcasts", emoji: "🎙️" },
4423
+ { key: "enjoy_makeup_beauty", name: "Makeup & Beauty Aficionado", emoji: "💄" },
4424
+ { key: "enjoy_martial_arts", name: "Enjoy Practicing Martial Arts", emoji: "🥋" },
4425
+ { key: "fan_of_ufc", name: "UFC Fan", emoji: "🤼‍♂️" },
4426
+ { key: "fan_of_boxing", name: "Boxing Fan", emoji: "🥊" },
4427
+ { key: "fan_of_celebrity_fights", name: "Celebrity Fights Fan", emoji: "🎬" },
4428
+ { key: "enjoy_mathematics", name: "Enjoy Mathematics", emoji: "➗" },
4429
+ { key: "enjoy_robotics", name: "Enjoy Robotics", emoji: "🤖" },
4430
+ { key: "enjoy_puzzles", name: "Enjoy Assembling Puzzles", emoji: "🧩" },
4431
+ { key: "enjoy_astronomy", name: "Enjoy Astronomy", emoji: "🔭" },
4432
+ { key: "enjoy_bird_watching", name: "Enjoy Bird Watching", emoji: "🦉" },
4433
+ { key: "enjoy_theater", name: "Enjoy Theater", emoji: "🎭" },
4434
+ { key: "enjoy_music_concerts", name: "Enjoy Music Concerts", emoji: "🎷" },
4435
+ { key: "enjoy_eco_friendly_living", name: "Enjoy Eco-Friendly Living", emoji: "♻️" },
4436
+ { key: "enjoy_board_games", name: "Enjoy Board Games", emoji: "🎲" },
4437
+ { key: "enjoy_video_gaming", name: "Enjoy Video Games", emoji: "🎮" },
4438
+ { key: "enjoy_dancing", name: "Enjoy Dancing", emoji: "💃" },
4439
+ { key: "enjoy_scuba_diving", name: "Enjoy Scuba Diving", emoji: "🤿" },
4440
+ { key: "enjoy_skiing", name: "Enjoy Skiing", emoji: "⛷️" },
4441
+ { key: "enjoy_snowboarding", name: "Enjoy Snowboarding", emoji: "🏂" },
4442
+ { key: "enjoy_archery", name: "Enjoy Archery", emoji: "🏹" },
4443
+ { key: "enjoy_horseback_riding", name: "Enjoy Horseback Riding", emoji: "🏇" },
4444
+ { key: "enjoy_sailing", name: "Enjoy Sailing", emoji: "⛵" },
4445
+ { key: "enjoy_hunting", name: "Enjoy Hunting", emoji: "🦌" },
4446
+ { key: "enjoy_fossil_hunting", name: "Enjoy Fossil Hunting", emoji: "🦴" },
4447
+ { key: "enjoy_metal_detecting", name: "Enjoy Metal Detecting", emoji: "🔍" },
4448
+ { key: "enjoy_rare_metal", name: "Enjoy Rare Metals", emoji: "⚱️" },
4449
+ { key: "enjoy_coin_collecting", name: "Enjoy Coin Collecting", emoji: "💰" },
4450
+ { key: "enjoy_vinyl_collecting", name: "Enjoy Vinyl Collecting", emoji: "🎶" },
4451
+ { key: "enjoy_antique_collecting", name: "Enjoy Antique Collecting", emoji: "🔍" },
4452
+ { key: "enjoy_model_building", name: "Enjoy Model Building", emoji: "🚁" },
4453
+ { key: "enjoy_railroad_modeling", name: "Enjoy Railroad Modeling", emoji: "🚂" },
4454
+ { key: "enjoy_volunteering", name: "Enjoy Volunteering", emoji: "🤲" },
4455
+ { key: "enjoy_cosplay", name: "Enjoy Cosplay", emoji: "🎭" },
4456
+ { key: "travel_often", name: "Travel Often ", emoji: "✈️" },
4457
+ { key: "enjoy_craft_beer_brewing", name: "Enjoy Craft Beer Brewing", emoji: "🍺" },
4458
+ { key: "enjoy_wine_tasting", name: "Enjoy Wine Tasting", emoji: "🍷" },
4459
+ { key: "enjoy_cheese_tasting", name: "Enjoy Cheese Tasting", emoji: "🧀" },
4460
+ { key: "enjoy_zoo", name: "Enjoy Zoo", emoji: "🦁" },
4461
+ { key: "enjoy_urban_exploration", name: "Enjoy Urban Exploration", emoji: "🏚️" },
4462
+ { key: "use_apple_macbook", name: "Apple Macbook User", emoji: "💻" },
4463
+ { key: "use_iphone", name: "iPhone User", emoji: "📱" },
4464
+ { key: "use_android", name: "Android User", emoji: "🤖" },
4465
+ ]
4466
+
4467
+ function find_match(match_for, value) {
4468
+ if (match_for?.type == "operator") {
4469
+ if (Array.isArray(match_for?.conditions)) {
4470
+ for (let condition of match_for?.conditions) {
4471
+ if (is_pass_predicate(condition?.predicate, condition?.value, value)) {
4472
+ if (match_for?.operator == "any_of") {
4473
+ return true
4474
+ }
4475
+ } else if (match_for?.operator == "all_of") {
4476
+ return false
4477
+ }
4478
+ }
4479
+ if (match_for?.operator == "all_of") {
4480
+ return true
4481
+ }
4482
+ }
4483
+ }
4484
+ return false
4485
+ }
4486
+
4487
+ // function is_pass_predicate(predicate, value, check_value) {
4488
+ // switch (predicate) {
4489
+ // case "equal_to":
4490
+ // return check_value === value
4491
+ // case "not_equal_to":
4492
+ // return check_value !== value
4493
+ // case "less_than":
4494
+ // return check_value < value
4495
+ // case "less_than_or_equal":
4496
+ // return check_value <= value
4497
+ // case "greater_than":
4498
+ // return check_value > value
4499
+ // case "greater_than_or_equal":
4500
+ // return check_value >= value
4501
+ // case "contains":
4502
+ // return check_value.includes(value)
4503
+ // case "does_not_contain":
4504
+ // return !check_value.includes(value)
4505
+ // case "starts_with":
4506
+ // return check_value.startsWith(value)
4507
+ // case "ends_with":
4508
+ // return check_value.endsWith(value)
4509
+ // default:
4510
+ // return false
4511
+ // }
4512
+ // }
4513
+
4514
+ // const override_base = {
4515
+ // options: {
4516
+ // color: null,
4517
+ // is_bold: false,
4518
+ // is_custom_text: false,
4519
+ // display_text: null,
4520
+ // },
4521
+ // override: {
4522
+ // type: "operator",
4523
+ // operator: "all_of",
4524
+ // conditions: [
4525
+ // {
4526
+ // type: "predicate",
4527
+ // predicate: "equal_to",
4528
+ // value: 4,
4529
+ // },
4530
+ // ],
4531
+ // },
4532
+ // }
4533
+
4534
+ // function get_override_item_display_text(override_item) {
4535
+ // console.log("override_item", override_item)
4536
+ // let display_text = ""
4537
+ // const predicate_text = {
4538
+ // equal_to: "equals (==)",
4539
+ // not_equal_to: "not equal to (!=)",
4540
+ // less_than: "less than (<)",
4541
+ // less_than_or_equal: "less than or equal to (<=)",
4542
+ // greater_than: "greater than (>)",
4543
+ // greater_than_or_equal: "greater than or equal to (>=)",
4544
+ // contains: "contains",
4545
+ // does_not_contain: "does not contain",
4546
+ // starts_with: "starts with",
4547
+ // ends_with: "ends with",
4548
+ // }
4549
+ // if (Array.isArray(override_item?.conditions) && override_item?.conditions.length > 0) {
4550
+ // display_text = `${predicate_text?.[override_item?.conditions?.[0]?.predicate]} ${
4551
+ // override_item?.conditions?.[0]?.value
4552
+ // }`
4553
+ // if (override_item?.conditions.length > 1) {
4554
+ // display_text += `${override_item?.operator == "all_of" ? " and" : " or"} ${
4555
+ // override_item?.conditions.length - 1
4556
+ // } more conditions.`
4557
+ // }
4558
+ // } else {
4559
+ // display_text = "No Conditions"
4560
+ // }
4561
+ // return display_text
4562
+ // }
4563
+
4564
+ // function is_pass_predicate(predicate, value, check_value) {
4565
+ // switch (predicate) {
4566
+ // case "equal_to":
4567
+ // return check_value === value
4568
+ // case "not_equal_to":
4569
+ // return check_value !== value
4570
+ // case "less_than":
4571
+ // return check_value < value
4572
+ // case "less_than_or_equal":
4573
+ // return check_value <= value
4574
+ // case "greater_than":
4575
+ // return check_value > value
4576
+ // case "greater_than_or_equal":
4577
+ // return check_value >= value
4578
+ // case "contains":
4579
+ // return check_value.includes(value)
4580
+ // case "does_not_contain":
4581
+ // return !check_value.includes(value)
4582
+ // case "starts_with":
4583
+ // return check_value.startsWith(value)
4584
+ // case "ends_with":
4585
+ // return check_value.endsWith(value)
4586
+ // default:
4587
+ // return false
4588
+ // }
4589
+ // }
4590
+
4591
+ // function is_pass_time_predicate(predicate, value, check_value) {
4592
+ // const current_time = new Date()
4593
+ // const check_date = new Date(check_value.epoch * 1000) // convert epoch to milliseconds
4594
+ // switch (predicate) {
4595
+ // case "past_x_hours":
4596
+ // const past_x_hours = new Date(current_time.getTime() - value * 60 * 60 * 1000)
4597
+ // return check_date >= past_x_hours
4598
+ // case "past_x_days":
4599
+ // const past_x_days = new Date(current_time.getTime() - value * 24 * 60 * 60 * 1000)
4600
+ // return check_date >= past_x_days
4601
+ // case "on_day_of_week":
4602
+ // return check_date.getDay() === value
4603
+ // case "today":
4604
+ // return (
4605
+ // check_date.getDate() === current_time.getDate() &&
4606
+ // check_date.getMonth() === current_time.getMonth() &&
4607
+ // check_date.getFullYear() === current_time.getFullYear()
4608
+ // )
4609
+ // case "yesterday":
4610
+ // const yesterday = new Date(current_time.getTime() - 24 * 60 * 60 * 1000)
4611
+ // return (
4612
+ // check_date.getDate() === yesterday.getDate() &&
4613
+ // check_date.getMonth() === yesterday.getMonth() &&
4614
+ // check_date.getFullYear() === yesterday.getFullYear()
4615
+ // )
4616
+ // case "tomorrow":
4617
+ // const tomorrow = new Date(current_time.getTime() + 24 * 60 * 60 * 1000)
4618
+ // return (
4619
+ // check_date.getDate() === tomorrow.getDate() &&
4620
+ // check_date.getMonth() === tomorrow.getMonth() &&
4621
+ // check_date.getFullYear() === tomorrow.getFullYear()
4622
+ // )
4623
+ // case "this_calendar_month":
4624
+ // return (
4625
+ // check_date.getMonth() === current_time.getMonth() && check_date.getFullYear() === current_time.getFullYear()
4626
+ // )
4627
+ // case "this_calendar_year":
4628
+ // return check_date.getFullYear() === current_time.getFullYear()
4629
+ // case "last_calendar_month":
4630
+ // return (
4631
+ // check_date.getMonth() === current_time.getMonth() - 1 &&
4632
+ // check_date.getFullYear() === current_time.getFullYear()
4633
+ // )
4634
+ // case "last_calendar_year":
4635
+ // return check_date.getFullYear() === current_time.getFullYear() - 1
4636
+ // case "next_calendar_month":
4637
+ // return (
4638
+ // check_date.getMonth() === current_time.getMonth() + 1 &&
4639
+ // check_date.getFullYear() === current_time.getFullYear()
4640
+ // )
4641
+ // case "next_calendar_year":
4642
+ // return check_date.getFullYear() === current_time.getFullYear() + 1
4643
+ // case "before_epoch":
4644
+ // return check_date < new Date(value * 1000)
4645
+ // case "after_epoch":
4646
+ // return check_date > new Date(value * 1000)
4647
+ // case "on_specific_date":
4648
+ // const specific_date = new Date(value * 1000)
4649
+ // return (
4650
+ // check_date.getDate() === specific_date.getDate() &&
4651
+ // check_date.getMonth() === specific_date.getMonth() &&
4652
+ // check_date.getFullYear() === specific_date.getFullYear()
4653
+ // )
4654
+ // default:
4655
+ // return false
4656
+ // }
4657
+ // }
4658
+
4659
+ // function is_match(match_for, value) {
4660
+ // if (match_for?.type == "operator") {
4661
+ // if (Array.isArray(match_for?.conditions)) {
4662
+ // for (let condition of match_for?.conditions) {
4663
+ // if (
4664
+ // data_type?.type == "time_literal"
4665
+ // ? is_pass_time_predicate(condition?.predicate, condition?.value, value)
4666
+ // : is_pass_predicate(condition?.predicate, condition?.value, value)
4667
+ // ) {
4668
+ // if (match_for?.operator == "any_of") {
4669
+ // return true
4670
+ // }
4671
+ // } else if (match_for?.operator == "all_of") {
4672
+ // return false
4673
+ // }
4674
+ // }
4675
+ // if (match_for?.operator == "all_of") {
4676
+ // return true
4677
+ // }
4678
+ // }
4679
+ // }
4680
+ // return false
4681
+ // }