@upstart.gg/sdk 0.0.133 → 0.0.135

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 (527) hide show
  1. package/dist/shared/ai/schemas.d.ts +1 -2
  2. package/dist/shared/ai/schemas.d.ts.map +1 -1
  3. package/dist/shared/ai/schemas.js +28 -1
  4. package/dist/shared/ai/schemas.js.map +1 -1
  5. package/dist/shared/ai/types.d.ts +15 -1
  6. package/dist/shared/ai/types.d.ts.map +1 -1
  7. package/dist/shared/ajv.js +6861 -1
  8. package/dist/shared/ajv.js.map +1 -1
  9. package/dist/shared/analytics/init.js +20 -1
  10. package/dist/shared/analytics/init.js.map +1 -1
  11. package/dist/shared/analytics/track.js +24 -1
  12. package/dist/shared/analytics/track.js.map +1 -1
  13. package/dist/shared/attributes.d.ts +97 -30
  14. package/dist/shared/attributes.d.ts.map +1 -1
  15. package/dist/shared/attributes.js +46 -1
  16. package/dist/shared/brick-manifest.d.ts +1 -1
  17. package/dist/shared/brick-manifest.js +26 -1
  18. package/dist/shared/bricks/manifests/accordion.manifest.d.ts +2 -2
  19. package/dist/shared/bricks/manifests/accordion.manifest.js +29 -1
  20. package/dist/shared/bricks/manifests/all-manifests.d.ts.map +1 -1
  21. package/dist/shared/bricks/manifests/all-manifests.js +59 -1
  22. package/dist/shared/bricks/manifests/box.manifest.d.ts +2 -2
  23. package/dist/shared/bricks/manifests/box.manifest.js +28 -1
  24. package/dist/shared/bricks/manifests/button.manifest.d.ts +2 -2
  25. package/dist/shared/bricks/manifests/button.manifest.js +28 -1
  26. package/dist/shared/bricks/manifests/card.manifest.d.ts +3 -3
  27. package/dist/shared/bricks/manifests/card.manifest.js +28 -1
  28. package/dist/shared/bricks/manifests/carousel.manifest.d.ts +2 -2
  29. package/dist/shared/bricks/manifests/carousel.manifest.js +28 -1
  30. package/dist/shared/bricks/manifests/footer.manifest.d.ts +4 -4
  31. package/dist/shared/bricks/manifests/footer.manifest.d.ts.map +1 -1
  32. package/dist/shared/bricks/manifests/footer.manifest.js +30 -1
  33. package/dist/shared/bricks/manifests/form.manifest.d.ts +3 -3
  34. package/dist/shared/bricks/manifests/form.manifest.js +29 -1
  35. package/dist/shared/bricks/manifests/hero.manifest.d.ts +2 -2
  36. package/dist/shared/bricks/manifests/hero.manifest.js +28 -1
  37. package/dist/shared/bricks/manifests/html.manifest.d.ts +2 -2
  38. package/dist/shared/bricks/manifests/html.manifest.js +28 -1
  39. package/dist/shared/bricks/manifests/icon.manifest.d.ts +2 -2
  40. package/dist/shared/bricks/manifests/icon.manifest.js +28 -1
  41. package/dist/shared/bricks/manifests/image.manifest.d.ts +2 -2
  42. package/dist/shared/bricks/manifests/image.manifest.js +28 -1
  43. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts +2 -2
  44. package/dist/shared/bricks/manifests/images-gallery.manifest.js +28 -1
  45. package/dist/shared/bricks/manifests/map.manifest.d.ts +2 -2
  46. package/dist/shared/bricks/manifests/map.manifest.js +31 -1
  47. package/dist/shared/bricks/manifests/navbar.manifest.d.ts +4 -4
  48. package/dist/shared/bricks/manifests/navbar.manifest.d.ts.map +1 -1
  49. package/dist/shared/bricks/manifests/navbar.manifest.js +31 -1
  50. package/dist/shared/bricks/manifests/sidebar.manifest.d.ts +2 -2
  51. package/dist/shared/bricks/manifests/sidebar.manifest.js +29 -1
  52. package/dist/shared/bricks/manifests/social-links.manifest.d.ts +2 -2
  53. package/dist/shared/bricks/manifests/social-links.manifest.js +28 -1
  54. package/dist/shared/bricks/manifests/spacer.manifest.d.ts +2 -2
  55. package/dist/shared/bricks/manifests/spacer.manifest.js +28 -1
  56. package/dist/shared/bricks/manifests/table.manifest.d.ts +91 -0
  57. package/dist/shared/bricks/manifests/table.manifest.d.ts.map +1 -0
  58. package/dist/shared/bricks/manifests/table.manifest.js +31 -0
  59. package/dist/shared/bricks/manifests/tabs.manifest.d.ts +90 -0
  60. package/dist/shared/bricks/manifests/tabs.manifest.d.ts.map +1 -0
  61. package/dist/shared/bricks/manifests/tabs.manifest.js +31 -0
  62. package/dist/shared/bricks/manifests/tabs.manifest.js.map +1 -0
  63. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts +2 -2
  64. package/dist/shared/bricks/manifests/testimonials.manifest.js +28 -1
  65. package/dist/shared/bricks/manifests/text.manifest.d.ts +2 -2
  66. package/dist/shared/bricks/manifests/text.manifest.js +28 -1
  67. package/dist/shared/bricks/manifests/timeline.manifest.d.ts +101 -0
  68. package/dist/shared/bricks/manifests/timeline.manifest.d.ts.map +1 -0
  69. package/dist/shared/bricks/manifests/timeline.manifest.js +31 -0
  70. package/dist/shared/bricks/manifests/timeline.manifest.js.map +1 -0
  71. package/dist/shared/bricks/manifests/video.manifest.d.ts +2 -2
  72. package/dist/shared/bricks/manifests/video.manifest.js +28 -1
  73. package/dist/shared/bricks/props/align.d.ts +2 -2
  74. package/dist/shared/bricks/props/align.js +19 -1
  75. package/dist/shared/bricks/props/background.d.ts +4 -4
  76. package/dist/shared/bricks/props/background.js +15 -1
  77. package/dist/shared/bricks/props/boolean.js +7 -1
  78. package/dist/shared/bricks/props/border.js +16 -1
  79. package/dist/shared/bricks/props/color-preset.d.ts.map +1 -1
  80. package/dist/shared/bricks/props/color-preset.js +13 -1
  81. package/dist/shared/bricks/props/color.js +14 -1
  82. package/dist/shared/bricks/props/common.d.ts +2 -2
  83. package/dist/shared/bricks/props/common.js +13 -1
  84. package/dist/shared/bricks/props/css-length.js +14 -1
  85. package/dist/shared/bricks/props/datarecord.js +7 -1
  86. package/dist/shared/bricks/props/datasource.d.ts +1 -1
  87. package/dist/shared/bricks/props/datasource.js +86 -1
  88. package/dist/shared/bricks/props/datasource.js.map +1 -1
  89. package/dist/shared/bricks/props/date.js +9 -1
  90. package/dist/shared/bricks/props/direction.js +11 -1
  91. package/dist/shared/bricks/props/dynamic.d.ts.map +1 -1
  92. package/dist/shared/bricks/props/dynamic.js +30 -1
  93. package/dist/shared/bricks/props/effects.js +17 -1
  94. package/dist/shared/bricks/props/file.js +15 -1
  95. package/dist/shared/bricks/props/file.js.map +1 -1
  96. package/dist/shared/bricks/props/geolocation.js +44 -1
  97. package/dist/shared/bricks/props/geolocation.js.map +1 -1
  98. package/dist/shared/bricks/props/helpers.d.ts +1 -1
  99. package/dist/shared/bricks/props/helpers.js +18 -1
  100. package/dist/shared/bricks/props/image.js +11 -1
  101. package/dist/shared/bricks/props/number.js +7 -1
  102. package/dist/shared/bricks/props/position.js +7 -1
  103. package/dist/shared/bricks/props/string.js +18 -1
  104. package/dist/shared/bricks/props/tags.js +10 -1
  105. package/dist/shared/bricks/props/text.js +19 -1
  106. package/dist/shared/bricks.d.ts +56 -44
  107. package/dist/shared/bricks.d.ts.map +1 -1
  108. package/dist/shared/bricks.js +79 -1
  109. package/dist/shared/chunk-2BPYOTKA.js +21 -0
  110. package/dist/shared/{chunk-WHTPGWUV.js.map → chunk-2BPYOTKA.js.map} +1 -1
  111. package/dist/shared/chunk-2HO4FHLM.js +456 -0
  112. package/dist/shared/{chunk-I3VL6SRH.js.map → chunk-2HO4FHLM.js.map} +1 -1
  113. package/dist/shared/chunk-2RK3CPYJ.js +74 -0
  114. package/dist/shared/{chunk-W33JMRRN.js.map → chunk-2RK3CPYJ.js.map} +1 -1
  115. package/dist/shared/chunk-3KLRW4I2.js +560 -0
  116. package/dist/shared/{chunk-B3EATRFX.js.map → chunk-3KLRW4I2.js.map} +1 -1
  117. package/dist/shared/chunk-3ZDN5BWN.js +18 -0
  118. package/dist/shared/{chunk-OIY3EPHO.js.map → chunk-3ZDN5BWN.js.map} +1 -1
  119. package/dist/shared/chunk-4WI23M7W.js +30 -0
  120. package/dist/shared/chunk-4WI23M7W.js.map +1 -0
  121. package/dist/shared/chunk-55C6MTX2.js +21 -0
  122. package/dist/shared/{chunk-KBHDY425.js.map → chunk-55C6MTX2.js.map} +1 -1
  123. package/dist/shared/chunk-6E42XWFH.js +103 -0
  124. package/dist/shared/{chunk-ZA3GAB4H.js.map → chunk-6E42XWFH.js.map} +1 -1
  125. package/dist/shared/chunk-6TVVKUWM.js +15 -0
  126. package/dist/shared/{chunk-4WDWJA3N.js.map → chunk-6TVVKUWM.js.map} +1 -1
  127. package/dist/shared/chunk-6WIMWLCJ.js +17 -0
  128. package/dist/shared/{chunk-KYY3PHP7.js.map → chunk-6WIMWLCJ.js.map} +1 -1
  129. package/dist/shared/chunk-7LAWWRU7.js +21 -0
  130. package/dist/shared/{chunk-IUXCWWGO.js.map → chunk-7LAWWRU7.js.map} +1 -1
  131. package/dist/shared/chunk-A2QPY54H.js +13 -0
  132. package/dist/shared/{chunk-KFM6KXSE.js.map → chunk-A2QPY54H.js.map} +1 -1
  133. package/dist/shared/chunk-BHC2A43S.js +67 -0
  134. package/dist/shared/{chunk-3YVJ2ELD.js.map → chunk-BHC2A43S.js.map} +1 -1
  135. package/dist/shared/chunk-BMWRR4DI.js +572 -0
  136. package/dist/shared/chunk-BMWRR4DI.js.map +1 -0
  137. package/dist/shared/chunk-BPBKHEQ5.js +39 -0
  138. package/dist/shared/{chunk-OHNYCXPX.js.map → chunk-BPBKHEQ5.js.map} +1 -1
  139. package/dist/shared/chunk-BW6EFRSF.js +794 -0
  140. package/dist/shared/chunk-BW6EFRSF.js.map +1 -0
  141. package/dist/shared/chunk-CKFRSHR2.js +105 -0
  142. package/dist/shared/{chunk-CFF6Q7O7.js.map → chunk-CKFRSHR2.js.map} +1 -1
  143. package/dist/shared/chunk-CSF2WQX2.js +60 -0
  144. package/dist/shared/{chunk-GLS7HPIZ.js.map → chunk-CSF2WQX2.js.map} +1 -1
  145. package/dist/shared/chunk-D4YQ6ABM.js +338 -0
  146. package/dist/shared/{chunk-PXI7AHWS.js.map → chunk-D4YQ6ABM.js.map} +1 -1
  147. package/dist/shared/chunk-DRTGM2UJ.js +129 -0
  148. package/dist/shared/{chunk-FLOMNC6J.js.map → chunk-DRTGM2UJ.js.map} +1 -1
  149. package/dist/shared/chunk-EQMU6NIU.js +1222 -0
  150. package/dist/shared/chunk-EQMU6NIU.js.map +1 -0
  151. package/dist/shared/chunk-EWSPTRDL.js +378 -0
  152. package/dist/shared/{chunk-QX6OGRRT.js.map → chunk-EWSPTRDL.js.map} +1 -1
  153. package/dist/shared/chunk-F22LDHEO.js +105 -0
  154. package/dist/shared/{chunk-5YRC3IT3.js.map → chunk-F22LDHEO.js.map} +1 -1
  155. package/dist/shared/chunk-FVU5PXRC.js +244 -0
  156. package/dist/shared/chunk-FVU5PXRC.js.map +1 -0
  157. package/dist/shared/chunk-GCQURRVB.js +837 -0
  158. package/dist/shared/{chunk-WYVJE6J5.js.map → chunk-GCQURRVB.js.map} +1 -1
  159. package/dist/shared/chunk-GPCI2N2A.js +395 -0
  160. package/dist/shared/{chunk-WBZW5LVH.js.map → chunk-GPCI2N2A.js.map} +1 -1
  161. package/dist/shared/chunk-GRMY35BU.js +722 -0
  162. package/dist/shared/{chunk-NJGXC7D6.js.map → chunk-GRMY35BU.js.map} +1 -1
  163. package/dist/shared/chunk-HPCCD6V5.js +17 -0
  164. package/dist/shared/{chunk-6I3ONVU6.js.map → chunk-HPCCD6V5.js.map} +1 -1
  165. package/dist/shared/chunk-JK2FWFJU.js +15 -0
  166. package/dist/shared/{chunk-JMN3HTZU.js.map → chunk-JK2FWFJU.js.map} +1 -1
  167. package/dist/shared/chunk-KNREHAPN.js +13 -0
  168. package/dist/shared/{chunk-KSEURRVZ.js.map → chunk-KNREHAPN.js.map} +1 -1
  169. package/dist/shared/chunk-KT7SSWMM.js +24 -0
  170. package/dist/shared/{chunk-KO5FPOWZ.js.map → chunk-KT7SSWMM.js.map} +1 -1
  171. package/dist/shared/chunk-LXAO3JA6.js +368 -0
  172. package/dist/shared/chunk-LXAO3JA6.js.map +1 -0
  173. package/dist/shared/chunk-MLZT7MRQ.js +538 -0
  174. package/dist/shared/chunk-MLZT7MRQ.js.map +1 -0
  175. package/dist/shared/chunk-NT3IW52F.js +260 -0
  176. package/dist/shared/chunk-NT3IW52F.js.map +1 -0
  177. package/dist/shared/chunk-NTLAKMMQ.js +94 -0
  178. package/dist/shared/{chunk-ZTZJHY4E.js.map → chunk-NTLAKMMQ.js.map} +1 -1
  179. package/dist/shared/chunk-O5PLB3YB.js +413 -0
  180. package/dist/shared/chunk-O5PLB3YB.js.map +1 -0
  181. package/dist/shared/chunk-O5PQISX4.js +51 -0
  182. package/dist/shared/{chunk-VEDQV5XO.js.map → chunk-O5PQISX4.js.map} +1 -1
  183. package/dist/shared/chunk-OJP4HMJT.js +22 -0
  184. package/dist/shared/{chunk-6HLU4UI2.js.map → chunk-OJP4HMJT.js.map} +1 -1
  185. package/dist/shared/chunk-OSJ6KGPX.js +16 -0
  186. package/dist/shared/{chunk-GPEMPZXK.js.map → chunk-OSJ6KGPX.js.map} +1 -1
  187. package/dist/shared/chunk-OXYXZHP2.js +48 -0
  188. package/dist/shared/{chunk-5O4Z3YQY.js.map → chunk-OXYXZHP2.js.map} +1 -1
  189. package/dist/shared/chunk-P3RH5URN.js +230 -0
  190. package/dist/shared/{chunk-R6ATC4TC.js.map → chunk-P3RH5URN.js.map} +1 -1
  191. package/dist/shared/chunk-Q4NPPLEU.js +34 -0
  192. package/dist/shared/{chunk-QWGUMKZC.js.map → chunk-Q4NPPLEU.js.map} +1 -1
  193. package/dist/shared/chunk-QL3T5HJQ.js +59 -0
  194. package/dist/shared/{chunk-E6XEI7IK.js.map → chunk-QL3T5HJQ.js.map} +1 -1
  195. package/dist/shared/chunk-QLQVDZIL.js +11 -0
  196. package/dist/shared/{chunk-KLD3P5XH.js.map → chunk-QLQVDZIL.js.map} +1 -1
  197. package/dist/shared/chunk-QQQ3FYPG.js +248 -0
  198. package/dist/shared/{chunk-SXHDQ64Z.js.map → chunk-QQQ3FYPG.js.map} +1 -1
  199. package/dist/shared/chunk-QSND5IWT.js +165 -0
  200. package/dist/shared/{chunk-ZQPXQCY2.js.map → chunk-QSND5IWT.js.map} +1 -1
  201. package/dist/shared/chunk-RV7AYVFV.js +75 -0
  202. package/dist/shared/{chunk-DHI3IBOD.js.map → chunk-RV7AYVFV.js.map} +1 -1
  203. package/dist/shared/chunk-SE6O65HC.js +44 -0
  204. package/dist/shared/{chunk-NM5MMPCF.js.map → chunk-SE6O65HC.js.map} +1 -1
  205. package/dist/shared/chunk-SHUGHJ7V.js +519 -0
  206. package/dist/shared/{chunk-IKC3FK7L.js.map → chunk-SHUGHJ7V.js.map} +1 -1
  207. package/dist/shared/chunk-TB3X4LRQ.js +56 -0
  208. package/dist/shared/{chunk-RJYZ5FAR.js.map → chunk-TB3X4LRQ.js.map} +1 -1
  209. package/dist/shared/chunk-TEO6TJOM.js +212 -0
  210. package/dist/shared/chunk-TEO6TJOM.js.map +1 -0
  211. package/dist/shared/chunk-TFGGYU6Y.js +394 -0
  212. package/dist/shared/{chunk-CZRCW5EN.js.map → chunk-TFGGYU6Y.js.map} +1 -1
  213. package/dist/shared/chunk-TKMWY2VN.js +18 -0
  214. package/dist/shared/{chunk-RDZK73KV.js.map → chunk-TKMWY2VN.js.map} +1 -1
  215. package/dist/shared/chunk-TNMNMYOB.js +69 -0
  216. package/dist/shared/{chunk-4BTB3MU2.js.map → chunk-TNMNMYOB.js.map} +1 -1
  217. package/dist/shared/chunk-U7TVEPKA.js +432 -0
  218. package/dist/shared/chunk-U7TVEPKA.js.map +1 -0
  219. package/dist/shared/chunk-UQF52PWK.js +70 -0
  220. package/dist/shared/{chunk-A3GF4PYW.js.map → chunk-UQF52PWK.js.map} +1 -1
  221. package/dist/shared/chunk-V3UA3LRK.js +253 -0
  222. package/dist/shared/{chunk-G5CJU6RD.js.map → chunk-V3UA3LRK.js.map} +1 -1
  223. package/dist/shared/chunk-W6MRYRGJ.js +100 -0
  224. package/dist/shared/{chunk-CCI4C3TM.js.map → chunk-W6MRYRGJ.js.map} +1 -1
  225. package/dist/shared/chunk-WGDUJSSS.js +462 -0
  226. package/dist/shared/chunk-WGDUJSSS.js.map +1 -0
  227. package/dist/shared/chunk-WKN566LN.js +29 -0
  228. package/dist/shared/{chunk-Q4H4QEMB.js.map → chunk-WKN566LN.js.map} +1 -1
  229. package/dist/shared/chunk-X6N463D4.js +222 -0
  230. package/dist/shared/{chunk-IKHZD2JH.js.map → chunk-X6N463D4.js.map} +1 -1
  231. package/dist/shared/chunk-X75YV73Q.js +178 -0
  232. package/dist/shared/{chunk-PLSV746R.js.map → chunk-X75YV73Q.js.map} +1 -1
  233. package/dist/shared/chunk-XCWMZVF5.js +89 -0
  234. package/dist/shared/{chunk-ZFCUSWMT.js.map → chunk-XCWMZVF5.js.map} +1 -1
  235. package/dist/shared/chunk-XCZVD5H6.js +13 -0
  236. package/dist/shared/{chunk-HAGKVQOW.js.map → chunk-XCZVD5H6.js.map} +1 -1
  237. package/dist/shared/chunk-XZ6WJZHN.js +10 -0
  238. package/dist/shared/{chunk-DCH4ZKWT.js.map → chunk-XZ6WJZHN.js.map} +1 -1
  239. package/dist/shared/chunk-Y74LZNND.js +30 -0
  240. package/dist/shared/{chunk-GACHLACT.js.map → chunk-Y74LZNND.js.map} +1 -1
  241. package/dist/shared/chunk-Z2NTDFB4.js +505 -0
  242. package/dist/shared/{chunk-SQ5T4AT5.js.map → chunk-Z2NTDFB4.js.map} +1 -1
  243. package/dist/shared/chunk-Z35I5JM5.js +131 -0
  244. package/dist/shared/{chunk-PSTFJ5IJ.js.map → chunk-Z35I5JM5.js.map} +1 -1
  245. package/dist/shared/chunk-ZEFOWKYP.js +44 -0
  246. package/dist/shared/{chunk-DQ7PRWTG.js.map → chunk-ZEFOWKYP.js.map} +1 -1
  247. package/dist/shared/chunk-ZGQ3AQBG.js +33 -0
  248. package/dist/shared/chunk-ZGQ3AQBG.js.map +1 -0
  249. package/dist/shared/chunk-ZLYIRH2B.js +68 -0
  250. package/dist/shared/{chunk-SWLUQVK7.js.map → chunk-ZLYIRH2B.js.map} +1 -1
  251. package/dist/shared/datarecords/external/airtable/handler.js +377 -1
  252. package/dist/shared/datarecords/external/airtable/handler.js.map +1 -1
  253. package/dist/shared/datarecords/external/airtable/oauth/config.js +15 -1
  254. package/dist/shared/datarecords/external/airtable/oauth/config.js.map +1 -1
  255. package/dist/shared/datarecords/external/airtable/types.js +11 -1
  256. package/dist/shared/datarecords/external/generic-webhook/handler.js +14 -1
  257. package/dist/shared/datarecords/external/generic-webhook/handler.js.map +1 -1
  258. package/dist/shared/datarecords/external/generic-webhook/options.js +16 -1
  259. package/dist/shared/datarecords/external/generic-webhook/options.js.map +1 -1
  260. package/dist/shared/datarecords/external/google/oauth/config.js +35 -1
  261. package/dist/shared/datarecords/external/google/oauth/config.js.map +1 -1
  262. package/dist/shared/datarecords/external/google/sheets/client.js +7 -1
  263. package/dist/shared/datarecords/external/google/sheets/handler.js +184 -5
  264. package/dist/shared/datarecords/external/google/sheets/handler.js.map +1 -1
  265. package/dist/shared/datarecords/external/google/sheets/types.js +7 -1
  266. package/dist/shared/datarecords/external/notion/handler.js +397 -1
  267. package/dist/shared/datarecords/external/notion/handler.js.map +1 -1
  268. package/dist/shared/datarecords/external/notion/oauth/config.js +11 -1
  269. package/dist/shared/datarecords/external/notion/oauth/config.js.map +1 -1
  270. package/dist/shared/datarecords/external/notion/types.js +7 -1
  271. package/dist/shared/datarecords/types.d.ts +3 -3
  272. package/dist/shared/datarecords/types.js +16 -1
  273. package/dist/shared/datarecords.js +9 -1
  274. package/dist/shared/datarecords.js.map +1 -1
  275. package/dist/shared/datasources/external/facebook/posts/fetcher.js +49 -1
  276. package/dist/shared/datasources/external/facebook/posts/fetcher.js.map +1 -1
  277. package/dist/shared/datasources/external/facebook/posts/schema.js +36 -1
  278. package/dist/shared/datasources/external/facebook/posts/schema.js.map +1 -1
  279. package/dist/shared/datasources/external/http-json/fetcher.js +29 -1
  280. package/dist/shared/datasources/external/http-json/fetcher.js.map +1 -1
  281. package/dist/shared/datasources/external/http-json/options.js +11 -1
  282. package/dist/shared/datasources/external/http-json/options.js.map +1 -1
  283. package/dist/shared/datasources/external/http-json/schema.js +10 -1
  284. package/dist/shared/datasources/external/http-json/schema.js.map +1 -1
  285. package/dist/shared/datasources/external/instagram/feed/fetcher.js +29 -1
  286. package/dist/shared/datasources/external/instagram/feed/fetcher.js.map +1 -1
  287. package/dist/shared/datasources/external/instagram/feed/schema.js +26 -1
  288. package/dist/shared/datasources/external/instagram/feed/schema.js.map +1 -1
  289. package/dist/shared/datasources/external/mastodon/account/fetcher.js +7 -1
  290. package/dist/shared/datasources/external/mastodon/account/schema.js +7 -1
  291. package/dist/shared/datasources/external/mastodon/options.js +10 -1
  292. package/dist/shared/datasources/external/mastodon/options.js.map +1 -1
  293. package/dist/shared/datasources/external/mastodon/status/fetcher.js +31 -1
  294. package/dist/shared/datasources/external/mastodon/status/fetcher.js.map +1 -1
  295. package/dist/shared/datasources/external/mastodon/status/sample.array.js +61 -1
  296. package/dist/shared/datasources/external/mastodon/status/sample.array.js.map +1 -1
  297. package/dist/shared/datasources/external/mastodon/status/sample.single.js +59 -1
  298. package/dist/shared/datasources/external/mastodon/status/sample.single.js.map +1 -1
  299. package/dist/shared/datasources/external/mastodon/status/schema.js +125 -1
  300. package/dist/shared/datasources/external/mastodon/status/schema.js.map +1 -1
  301. package/dist/shared/datasources/external/meta/oauth/config.js +17 -1
  302. package/dist/shared/datasources/external/meta/oauth/config.js.map +1 -1
  303. package/dist/shared/datasources/external/meta/options.js +10 -1
  304. package/dist/shared/datasources/external/meta/options.js.map +1 -1
  305. package/dist/shared/datasources/external/rss/fetcher.js +26 -1
  306. package/dist/shared/datasources/external/rss/fetcher.js.map +1 -1
  307. package/dist/shared/datasources/external/rss/options.js +10 -1
  308. package/dist/shared/datasources/external/rss/options.js.map +1 -1
  309. package/dist/shared/datasources/external/rss/schema.js +7 -1
  310. package/dist/shared/datasources/external/threads/media/fetcher.js +47 -1
  311. package/dist/shared/datasources/external/threads/media/fetcher.js.map +1 -1
  312. package/dist/shared/datasources/external/threads/media/schema.js +40 -1
  313. package/dist/shared/datasources/external/threads/media/schema.js.map +1 -1
  314. package/dist/shared/datasources/external/tiktok/oauth/config.js +18 -1
  315. package/dist/shared/datasources/external/tiktok/oauth/config.js.map +1 -1
  316. package/dist/shared/datasources/external/tiktok/video/fetcher.js +34 -1
  317. package/dist/shared/datasources/external/tiktok/video/fetcher.js.map +1 -1
  318. package/dist/shared/datasources/external/tiktok/video/options.js +11 -1
  319. package/dist/shared/datasources/external/tiktok/video/options.js.map +1 -1
  320. package/dist/shared/datasources/external/tiktok/video/schema.js +30 -1
  321. package/dist/shared/datasources/external/tiktok/video/schema.js.map +1 -1
  322. package/dist/shared/datasources/external/youtube/list/fetcher.js +32 -1
  323. package/dist/shared/datasources/external/youtube/list/fetcher.js.map +1 -1
  324. package/dist/shared/datasources/external/youtube/list/options.js +14 -1
  325. package/dist/shared/datasources/external/youtube/list/options.js.map +1 -1
  326. package/dist/shared/datasources/external/youtube/list/schema.js +7 -1
  327. package/dist/shared/datasources/external/youtube/oauth/config.js +18 -1
  328. package/dist/shared/datasources/external/youtube/oauth/config.js.map +1 -1
  329. package/dist/shared/datasources/internal/blog/schema.js +72 -1
  330. package/dist/shared/datasources/internal/blog/schema.js.map +1 -1
  331. package/dist/shared/datasources/internal/changelog/schema.js +51 -1
  332. package/dist/shared/datasources/internal/changelog/schema.js.map +1 -1
  333. package/dist/shared/datasources/internal/contact-info/schema.js +25 -1
  334. package/dist/shared/datasources/internal/contact-info/schema.js.map +1 -1
  335. package/dist/shared/datasources/internal/cv/schema.js +222 -1
  336. package/dist/shared/datasources/internal/cv/schema.js.map +1 -1
  337. package/dist/shared/datasources/internal/faq/schema.js +30 -1
  338. package/dist/shared/datasources/internal/faq/schema.js.map +1 -1
  339. package/dist/shared/datasources/internal/job-board/schema.js +224 -1
  340. package/dist/shared/datasources/internal/job-board/schema.js.map +1 -1
  341. package/dist/shared/datasources/internal/links/schema.js +7 -1
  342. package/dist/shared/datasources/internal/recipes/schema.js +45 -1
  343. package/dist/shared/datasources/internal/recipes/schema.js.map +1 -1
  344. package/dist/shared/datasources/internal/restaurant/schema.js +226 -1
  345. package/dist/shared/datasources/internal/restaurant/schema.js.map +1 -1
  346. package/dist/shared/datasources/samples.js +69 -1
  347. package/dist/shared/datasources/samples.js.map +1 -1
  348. package/dist/shared/datasources/schemas.js +34 -1
  349. package/dist/shared/datasources/schemas.js.map +1 -1
  350. package/dist/shared/datasources/types.d.ts +1 -1
  351. package/dist/shared/datasources/types.d.ts.map +1 -1
  352. package/dist/shared/datasources/types.js +32 -1
  353. package/dist/shared/datasources/utils.js +11 -1
  354. package/dist/shared/datasources.js +51 -1
  355. package/dist/shared/datasources.js.map +1 -1
  356. package/dist/shared/errors.js +7 -1
  357. package/dist/shared/images.d.ts +4 -4
  358. package/dist/shared/images.d.ts.map +1 -1
  359. package/dist/shared/images.js +44 -1
  360. package/dist/shared/images.js.map +1 -1
  361. package/dist/shared/index.js +9 -1
  362. package/dist/shared/index.js.map +1 -1
  363. package/dist/shared/layout-constants.js +14 -1
  364. package/dist/shared/layout-constants.js.map +1 -1
  365. package/dist/shared/manifest.js +52 -1
  366. package/dist/shared/manifest.js.map +1 -1
  367. package/dist/shared/oauth.js +8 -1
  368. package/dist/shared/page.d.ts +12 -126
  369. package/dist/shared/page.d.ts.map +1 -1
  370. package/dist/shared/page.js +58 -1
  371. package/dist/shared/prompt.js +7 -1
  372. package/dist/shared/responsive.js +10 -1
  373. package/dist/shared/responsive.js.map +1 -1
  374. package/dist/shared/schema-registry.d.ts +5 -0
  375. package/dist/shared/schema-registry.d.ts.map +1 -0
  376. package/dist/shared/schema-registry.js +119 -0
  377. package/dist/shared/schema-registry.js.map +1 -0
  378. package/dist/shared/site.d.ts +36 -33
  379. package/dist/shared/site.d.ts.map +1 -1
  380. package/dist/shared/site.js +127 -1
  381. package/dist/shared/site.js.map +1 -1
  382. package/dist/shared/sitemap.d.ts +17 -17
  383. package/dist/shared/sitemap.d.ts.map +1 -1
  384. package/dist/shared/sitemap.js +69 -1
  385. package/dist/shared/social-icons.js +312 -1
  386. package/dist/shared/social-icons.js.map +1 -1
  387. package/dist/shared/tests/schema-registry.test.d.ts +2 -0
  388. package/dist/shared/tests/schema-registry.test.d.ts.map +1 -0
  389. package/dist/shared/theme.d.ts +1 -1
  390. package/dist/shared/theme.d.ts.map +1 -1
  391. package/dist/shared/theme.js +35 -1
  392. package/dist/shared/themes/color-system.d.ts +0 -1
  393. package/dist/shared/themes/color-system.d.ts.map +1 -1
  394. package/dist/shared/themes/color-system.js +103 -1
  395. package/dist/shared/themes/color-system.js.map +1 -1
  396. package/dist/shared/utils/canvas-data-uri.js +7 -1
  397. package/dist/shared/utils/canvas-data-uri.js.map +1 -1
  398. package/dist/shared/utils/invariant.js +7 -1
  399. package/dist/shared/utils/json-date.js +7 -1
  400. package/dist/shared/utils/llm.d.ts +2 -3
  401. package/dist/shared/utils/llm.d.ts.map +1 -1
  402. package/dist/shared/utils/llm.js +24 -1
  403. package/dist/shared/utils/merge.js +7 -1
  404. package/dist/shared/utils/object-hash.js +13 -1
  405. package/dist/shared/utils/object-hash.js.map +1 -1
  406. package/dist/shared/utils/schema-registry.d.ts +5 -0
  407. package/dist/shared/utils/schema-registry.d.ts.map +1 -0
  408. package/dist/shared/utils/schema-registry.js +29 -0
  409. package/dist/shared/utils/schema-registry.js.map +1 -0
  410. package/dist/shared/utils/schema.d.ts +2 -1
  411. package/dist/shared/utils/schema.d.ts.map +1 -1
  412. package/dist/shared/utils/schema.js +31 -1
  413. package/dist/shared/utils/string-enum.js +7 -1
  414. package/dist/shared/utils/tests/schema-registry.test.d.ts +2 -0
  415. package/dist/shared/utils/tests/schema-registry.test.d.ts.map +1 -0
  416. package/dist/shared/utils/try-catch.js +13 -1
  417. package/dist/shared/utils/try-catch.js.map +1 -1
  418. package/dist/shared/utils/typed-ref.js +7 -1
  419. package/package.json +12 -13
  420. package/src/shared/ai/schemas.ts +4 -8
  421. package/src/shared/ai/types.ts +9 -1
  422. package/src/shared/attributes.ts +27 -25
  423. package/src/shared/bricks/manifests/all-manifests.ts +15 -0
  424. package/src/shared/bricks/manifests/footer.manifest.ts +36 -27
  425. package/src/shared/bricks/manifests/navbar.manifest.ts +1 -3
  426. package/src/shared/bricks/manifests/table.manifest.ts +443 -0
  427. package/src/shared/bricks/manifests/tabs.manifest.ts +576 -0
  428. package/src/shared/bricks/manifests/timeline.manifest.ts +441 -0
  429. package/src/shared/bricks/props/color-preset.ts +3 -1
  430. package/src/shared/bricks/props/dynamic.ts +0 -1
  431. package/src/shared/bricks.ts +54 -45
  432. package/src/shared/datasources/types.ts +1 -5
  433. package/src/shared/images.ts +10 -8
  434. package/src/shared/page.ts +0 -4
  435. package/src/shared/schema-registry.ts +82 -0
  436. package/src/shared/sitemap.ts +12 -16
  437. package/src/shared/tests/schema-registry.test.ts +14 -0
  438. package/src/shared/theme.ts +1 -4
  439. package/src/shared/themes/color-system.ts +0 -1
  440. package/src/shared/utils/llm.ts +13 -12
  441. package/src/shared/utils/schema-registry.ts +82 -0
  442. package/src/shared/utils/schema.ts +18 -3
  443. package/src/shared/utils/tests/schema-registry.test.ts +13 -0
  444. package/src/shared/utils/tests/schema.test.ts +82 -55
  445. package/dist/shared/bricks/props/enum.d.ts +0 -13
  446. package/dist/shared/bricks/props/enum.d.ts.map +0 -1
  447. package/dist/shared/bricks/props/enum.js +0 -4
  448. package/dist/shared/chunk-3YVJ2ELD.js +0 -4
  449. package/dist/shared/chunk-4BTB3MU2.js +0 -4
  450. package/dist/shared/chunk-4WDWJA3N.js +0 -4
  451. package/dist/shared/chunk-5O4Z3YQY.js +0 -4
  452. package/dist/shared/chunk-5YRC3IT3.js +0 -4
  453. package/dist/shared/chunk-6HLU4UI2.js +0 -4
  454. package/dist/shared/chunk-6I3ONVU6.js +0 -4
  455. package/dist/shared/chunk-7A2JNQX3.js +0 -4
  456. package/dist/shared/chunk-7A2JNQX3.js.map +0 -1
  457. package/dist/shared/chunk-A3GF4PYW.js +0 -4
  458. package/dist/shared/chunk-A3K4NUVP.js +0 -4
  459. package/dist/shared/chunk-A3K4NUVP.js.map +0 -1
  460. package/dist/shared/chunk-AFVJZPLS.js +0 -4
  461. package/dist/shared/chunk-AFVJZPLS.js.map +0 -1
  462. package/dist/shared/chunk-AI4GHU7R.js +0 -4
  463. package/dist/shared/chunk-AI4GHU7R.js.map +0 -1
  464. package/dist/shared/chunk-B3EATRFX.js +0 -4
  465. package/dist/shared/chunk-CCI4C3TM.js +0 -4
  466. package/dist/shared/chunk-CFF6Q7O7.js +0 -7
  467. package/dist/shared/chunk-CZRCW5EN.js +0 -4
  468. package/dist/shared/chunk-DCH4ZKWT.js +0 -4
  469. package/dist/shared/chunk-DHI3IBOD.js +0 -4
  470. package/dist/shared/chunk-DQ7PRWTG.js +0 -4
  471. package/dist/shared/chunk-E6XEI7IK.js +0 -4
  472. package/dist/shared/chunk-FLOMNC6J.js +0 -4
  473. package/dist/shared/chunk-G5CJU6RD.js +0 -7
  474. package/dist/shared/chunk-GACHLACT.js +0 -4
  475. package/dist/shared/chunk-GLS7HPIZ.js +0 -4
  476. package/dist/shared/chunk-GOMXZC4B.js +0 -35
  477. package/dist/shared/chunk-GOMXZC4B.js.map +0 -1
  478. package/dist/shared/chunk-GPEMPZXK.js +0 -4
  479. package/dist/shared/chunk-HAGKVQOW.js +0 -4
  480. package/dist/shared/chunk-I3VL6SRH.js +0 -9
  481. package/dist/shared/chunk-IKC3FK7L.js +0 -4
  482. package/dist/shared/chunk-IKHZD2JH.js +0 -4
  483. package/dist/shared/chunk-IUXCWWGO.js +0 -4
  484. package/dist/shared/chunk-JMN3HTZU.js +0 -4
  485. package/dist/shared/chunk-KBHDY425.js +0 -4
  486. package/dist/shared/chunk-KFM6KXSE.js +0 -4
  487. package/dist/shared/chunk-KLD3P5XH.js +0 -4
  488. package/dist/shared/chunk-KO5FPOWZ.js +0 -4
  489. package/dist/shared/chunk-KSEURRVZ.js +0 -4
  490. package/dist/shared/chunk-KYY3PHP7.js +0 -4
  491. package/dist/shared/chunk-NJGXC7D6.js +0 -4
  492. package/dist/shared/chunk-NM5MMPCF.js +0 -4
  493. package/dist/shared/chunk-OGBMYMZD.js +0 -4
  494. package/dist/shared/chunk-OGBMYMZD.js.map +0 -1
  495. package/dist/shared/chunk-OHNYCXPX.js +0 -4
  496. package/dist/shared/chunk-OIY3EPHO.js +0 -4
  497. package/dist/shared/chunk-PIG623TZ.js +0 -4
  498. package/dist/shared/chunk-PIG623TZ.js.map +0 -1
  499. package/dist/shared/chunk-PLSV746R.js +0 -4
  500. package/dist/shared/chunk-PSCN3VVA.js +0 -4
  501. package/dist/shared/chunk-PSCN3VVA.js.map +0 -1
  502. package/dist/shared/chunk-PSTFJ5IJ.js +0 -4
  503. package/dist/shared/chunk-PXI7AHWS.js +0 -4
  504. package/dist/shared/chunk-Q4H4QEMB.js +0 -4
  505. package/dist/shared/chunk-QGYZ7CG5.js +0 -4
  506. package/dist/shared/chunk-QGYZ7CG5.js.map +0 -1
  507. package/dist/shared/chunk-QWGUMKZC.js +0 -4
  508. package/dist/shared/chunk-QX6OGRRT.js +0 -5
  509. package/dist/shared/chunk-R6ATC4TC.js +0 -4
  510. package/dist/shared/chunk-RDZK73KV.js +0 -4
  511. package/dist/shared/chunk-RJYZ5FAR.js +0 -4
  512. package/dist/shared/chunk-SQ5T4AT5.js +0 -6
  513. package/dist/shared/chunk-SWLUQVK7.js +0 -4
  514. package/dist/shared/chunk-SXHDQ64Z.js +0 -5
  515. package/dist/shared/chunk-SY6DZLTC.js +0 -4
  516. package/dist/shared/chunk-SY6DZLTC.js.map +0 -1
  517. package/dist/shared/chunk-VEDQV5XO.js +0 -4
  518. package/dist/shared/chunk-W33JMRRN.js +0 -4
  519. package/dist/shared/chunk-WBZW5LVH.js +0 -4
  520. package/dist/shared/chunk-WHTPGWUV.js +0 -4
  521. package/dist/shared/chunk-WYVJE6J5.js +0 -4
  522. package/dist/shared/chunk-ZA3GAB4H.js +0 -9
  523. package/dist/shared/chunk-ZFCUSWMT.js +0 -4
  524. package/dist/shared/chunk-ZQPXQCY2.js +0 -4
  525. package/dist/shared/chunk-ZTZJHY4E.js +0 -4
  526. package/src/shared/bricks/props/enum.ts +0 -38
  527. /package/dist/shared/bricks/{props/enum.js.map → manifests/table.manifest.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/shared/ajv.ts","../../src/shared/bricks/props/dynamic.ts","../../src/shared/datasources/types.ts","../../src/shared/utils/llm.ts"],"sourcesContent":["import Ajv, { type ErrorObject } from \"ajv\";\nimport addFormats from \"ajv-formats\";\nimport { alignItems, alignSelf, justifyContent } from \"./bricks/props/align\";\nimport { background, backgroundColor } from \"./bricks/props/background\";\nimport { border, rounding } from \"./bricks/props/border\";\nimport { borderColor, color } from \"./bricks/props/color\";\nimport { hidden } from \"./bricks/props/common\";\nimport { cssLength } from \"./bricks/props/css-length\";\nimport { shadow, textShadow } from \"./bricks/props/effects\";\nimport { fontSize, textContent } from \"./bricks/props/text\";\nimport { icon, urlOrPageId } from \"./bricks/props/string\";\nimport { colorPreset } from \"./bricks/props/color-preset\";\nimport { image } from \"./bricks/props/image\";\nimport { direction } from \"./bricks/props/direction\";\nimport { loop, queryUse } from \"./bricks/props/dynamic\";\nimport { tags } from \"./bricks/props/tags\";\n\nexport type { AnySchemaObject, JSONSchemaType, JSONType, SchemaObject } from \"ajv\";\n\nexport const jsonStringsSupportedFormats = [\"date-time\", \"date\", \"email\", \"url\"] as const;\n\nexport function createAJVInstance() {\n const ajv = new Ajv({\n useDefaults: true,\n strictSchema: false,\n validateSchema: false,\n coerceTypes: true,\n allErrors: true,\n inlineRefs: true,\n });\n\n ajv.addSchema(background(), \"styles:background\");\n ajv.addSchema(backgroundColor(), \"styles:backgroundColor\");\n ajv.addSchema(justifyContent(), \"styles:justifyContent\");\n ajv.addSchema(alignItems(), \"styles:alignItems\");\n ajv.addSchema(alignSelf(), \"styles:alignSelf\");\n ajv.addSchema(rounding(), \"styles:rounding\");\n ajv.addSchema(fontSize(), \"styles:fontSize\");\n ajv.addSchema(hidden(), \"styles:hidden\");\n ajv.addSchema(direction(), \"styles:direction\");\n ajv.addSchema(border(), \"styles:border\");\n ajv.addSchema(color(), \"styles:color\");\n ajv.addSchema(borderColor(), \"styles:borderColor\");\n ajv.addSchema(shadow(), \"styles:shadow\");\n ajv.addSchema(textShadow(), \"styles:textShadow\");\n ajv.addSchema(cssLength(), \"styles:cssLength\");\n ajv.addSchema(image(), \"assets:image\");\n ajv.addSchema(icon(), \"assets:icon\");\n ajv.addSchema(textContent(), \"content:text\");\n ajv.addSchema(urlOrPageId(), \"content:urlOrPageId\");\n ajv.addSchema(loop(), \"content:loop\");\n ajv.addSchema(queryUse(), \"content:queryUse\");\n ajv.addSchema(colorPreset(), \"presets:color\");\n ajv.addSchema(tags(), \"content:tags\");\n\n // Add formats to Ajv\n addFormats(ajv, [...jsonStringsSupportedFormats]);\n\n ajv.addFormat(\"slug\", {\n validate: (data: string) => typeof data === \"string\",\n async: false,\n type: \"string\",\n });\n ajv.addFormat(\"image\", {\n validate: (data: string) => typeof data === \"string\",\n async: false,\n type: \"string\",\n });\n ajv.addFormat(\"file\", {\n validate: (data: string) => typeof data === \"string\",\n async: false,\n type: \"string\",\n });\n\n ajv.addFormat(\"nanoid\", {\n validate: (data: string) => typeof data === \"string\",\n async: false,\n type: \"string\",\n });\n\n ajv.addFormat(\"richtext\", {\n validate: (data: string) => typeof data === \"string\",\n async: false,\n type: \"string\",\n });\n\n ajv.addFormat(\"markdown\", {\n validate: (data: string) => typeof data === \"string\",\n async: false,\n type: \"string\",\n });\n\n ajv.addFormat(\"multiline\", {\n validate: (data: string) => typeof data === \"string\",\n async: false,\n type: \"string\",\n });\n\n ajv.addFormat(\"password\", {\n validate: (data: string) => typeof data === \"string\",\n async: false,\n type: \"string\",\n });\n return ajv;\n}\n\nexport const ajv = createAJVInstance();\n\nexport function serializeAjvErrors(errors: ErrorObject[] | null | undefined): string {\n if (!errors || errors.length === 0) {\n return \"Unknown validation error\";\n }\n return errors\n .map((error) => {\n const { instancePath, message, params } = error;\n const path = instancePath || \"root\";\n const details = Object.entries(params || {})\n .map(([key, value]) => `${key}: ${value}`)\n .join(\", \");\n return `${path} ${message} (${details})`;\n })\n .join(\"; \");\n}\n","import { typedRef } from \"~/shared/utils/typed-ref\";\nimport { type ObjectOptions, Type, type Static } from \"@sinclair/typebox\";\nimport { queryFilter } from \"~/shared/datasources/types\";\nimport { over } from \"lodash-es\";\n\nexport function queryUse() {\n return Type.Object(\n {\n queryId: Type.String({\n description: \"The Site Query ID to use.\",\n }),\n alias: Type.String({\n title: \"Alias\",\n minLength: 1,\n maxLength: 100,\n pattern: \"^[a-zA-Z0-9_]+$\",\n description:\n \"Alias for the query results, used in dynamic content. Use a simple keyword without spaces or special characters. Aliases are unique across the page.\",\n \"ai:instructions\":\n \"Use a simple keyword without spaces or special characters. Aliases are unique across the page. You can use the same query several times with different aliases in order to, for example, apply different parameters to the same query.\",\n }),\n params: Type.Optional(\n Type.Array(queryFilter, {\n description:\n \"Additional query parameters/filters to apply to the query. One can use placeholders in values like ':slug' to reference URL parameters.\",\n title: \"Query Parameters\",\n default: [],\n }),\n ),\n },\n {\n title: \"Query\",\n description:\n \"When set, this brick will loop through the results of the query and render the content for each item.\",\n // $id: \"content:queryUse\",\n \"ui:field\": \"query\",\n metadata: {\n category: \"content\",\n },\n examples: [\n { queryId: \"get-latest-posts\", alias: \"latestPosts\" },\n {\n queryId: \"get-user-profile\",\n alias: \"userProfile\",\n params: [{ field: \"userId\", op: \"eq\", value: \":slug\" }],\n },\n {\n queryId: \"get-posts-by-category\",\n alias: \"postsByCategory\",\n params: [{ field: \"category\", op: \"eq\", value: \":slug\" }],\n },\n ],\n },\n );\n}\n\nexport const queryUseSchema = queryUseRef();\n\nexport type QueryUseSettings = Static<ReturnType<typeof queryUse>>;\n\nexport function queryUseRef(options: ObjectOptions = {}) {\n return typedRef(\"content:queryUse\", options);\n}\n\nexport function loop(options: ObjectOptions = {}) {\n return Type.Object(\n {\n over: Type.String({\n title: \"Over\",\n description: \"The query alias to loop over. If not set, the brick will be rendered only once.\",\n \"ai:instructions\": \"Specify the Query Alias to loop over the results.\",\n }),\n overrideLimit: Type.Optional(\n Type.Number({\n minimum: 1,\n description:\n \"Override the limit of items to loop through. If not set, it will use the default limit of the query. If set to 1, it will not loop and will render only the first item.\",\n }),\n ),\n },\n {\n // $id: \"content:loop\",\n title: \"Repeat over\",\n description: \"Repeat this brick for each item in the specified query results.\",\n \"ui:field\": \"loop\",\n \"ui:hidden-if\": \"no-page-queries\",\n metadata: {\n category: \"content\",\n },\n examples: [\n {\n over: \"latestBlogPosts\",\n overrideLimit: 5,\n },\n {\n over: \"featuredProducts\",\n overrideLimit: 3,\n },\n {\n over: \"popularProducts\",\n },\n ],\n ...options,\n },\n );\n}\n\nexport type LoopSettings = Static<ReturnType<typeof loop>>;\n\nexport function loopRef(options: ObjectOptions = {}) {\n return typedRef(\"content:loop\", options);\n}\n","import { Type, type Static } from \"@sinclair/typebox\";\nimport { httpJsonOptions } from \"./external/http-json/options\";\nimport { StringEnum } from \"../utils/string-enum\";\nimport { toLLMSchema } from \"../utils/llm\";\n\nexport const providersSchema = Type.Union([\n // Type.Literal(\"facebook-posts\"),\n // Type.Literal(\"instagram-feed\"),\n // Type.Literal(\"mastodon-account\"),\n // Type.Literal(\"mastodon-status\"),\n // Type.Literal(\"mastodon-status-list\"),\n Type.Literal(\"internal\"),\n // Type.Literal(\"rss\"),\n // // Type.Literal(\"threads-media\"),\n // // Type.Literal(\"tiktok-video\"),\n // Type.Literal(\"youtube-list\"),\n // Type.Literal(\"http-json\"),\n // Type.Literal(\"internal-blog\"),\n // Type.Literal(\"internal-changelog\"),\n // // Type.Literal(\"internal-contact-info\"),\n // Type.Literal(\"internal-faq\"),\n // Type.Literal(\"internal-links\"),\n // Type.Literal(\"internal-recipes\"),\n // Type.Literal(\"internal-restaurant\"),\n // Type.Literal(\"internal-cv\"),\n]);\n\nexport type DatasourceProvider = Static<typeof providersSchema>;\n\n// const datasourceProviderManifest = Type.Composite([\n// Type.Object({\n// id: Type.String({\n// title: \"ID\",\n// description:\n// \"Unique identifier of the datasource. Used to reference the datasource in the system. Use a url-safe string like a slug.\",\n// }),\n// label: Type.String({ title: \"Label\", description: \"Label of the datasource displayed in the UI\" }),\n// schema: Type.Null({\n// description: \"Always null for provider datasources. The schema is defined by the provider.\",\n// }),\n// ttlMinutes: Type.Optional(\n// Type.Number({\n// title: \"Time to live\",\n// description:\n// \"Time to live in minutes. If set to -1, it never expires and has to be manually refreshed. If set to 0, the datasource is always fetched live. If > 0, then the datasource is feteched every N minutes.\",\n// }),\n// ),\n// refresh: Type.Optional(\n// Type.Object(\n// {\n// method: Type.Union([Type.Literal(\"interval\"), Type.Literal(\"manual\"), Type.Literal(\"live\")]),\n// interval: Type.Optional(Type.Number()),\n// },\n// {\n// title: \"Refresh options\",\n// description: \"Options to refresh the datasource\",\n// },\n// ),\n// ),\n// }),\n// ]);\n\n// export type DatasourceProviderManifest = Static<typeof datasourceProviderManifest>;\n\nconst datasourceInternalManifest = Type.Object(\n {\n id: Type.String({\n title: \"ID\",\n description:\n \"Unique identifier of the datasource. Used to reference the datasource in the system. Use a url-safe string like a slug.\",\n }),\n label: Type.String({ title: \"Label\", description: \"Label of the datasource displayed in the UI\" }),\n provider: Type.Literal(\"internal\", {\n title: \"Internal\",\n description: \"Internal datasource saved locally in Upstart.\",\n }),\n schema: Type.Any({\n title: \"Schema\",\n description: \"JSON Schema of datasource. MUST Always an array of objects.\",\n }),\n indexes: Type.Optional(\n Type.Array(\n Type.Object({\n name: Type.String({ title: \"Index name\" }),\n fields: Type.Array(Type.String(), { title: \"Fields to index\" }),\n unique: Type.Optional(Type.Boolean({ title: \"Unique index\", default: false })),\n }),\n {\n title: \"Indexes\",\n description:\n \"IMPORTANT: Indexes to create on the datasource. use it to enforce uniqueness or improve query performance.\",\n },\n ),\n ),\n },\n {\n examples: [\n {\n id: \"customers\",\n label: \"Customers\",\n provider: \"internal\",\n schema: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\", title: \"Name\" },\n email: { type: \"string\", title: \"Email\", format: \"email\" },\n },\n required: [\"name\", \"email\"],\n title: \"Customer\",\n examples: [\n { name: \"John Doe\", email: \"john.doe@example.com\" },\n {\n name: \"Jane Smith\",\n email: \"jane.smith@example.com\",\n },\n {\n name: \"Alice Johnson\",\n email: \"alice.johnson@example.com\",\n },\n {\n name: \"Bob Brown\",\n email: \"bob.brown@example.com\",\n },\n {\n name: \"Charlie Davis\",\n email: \"charlie.davis@example.com\",\n },\n ],\n },\n },\n indexes: [\n {\n name: \"idx_customers_email\",\n fields: [\"email\"],\n unique: true,\n },\n ],\n },\n {\n id: \"blog_posts\",\n label: \"Blog Posts\",\n provider: \"internal\",\n schema: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n title: { type: \"string\", title: \"Title\" },\n content: { type: \"string\", title: \"Content\" },\n author: { type: \"string\", title: \"Author\" },\n },\n required: [\"title\", \"content\", \"author\"],\n title: \"Blog Post\",\n examples: [\n {\n title: \"My First Blog Post\",\n content: \"This is the content of my first blog post.\",\n author: \"John Doe\",\n },\n {\n title: \"Exploring the Cosmos\",\n content: \"A journey through the stars and galaxies.\",\n author: \"Jane Smith\",\n },\n {\n title: \"The Art of Cooking\",\n content: \"Delicious recipes and cooking tips.\",\n author: \"Alice Johnson\",\n },\n {\n title: \"Traveling the World\",\n content: \"My adventures in different countries.\",\n author: \"Bob Brown\",\n },\n {\n title: \"Technology Trends\",\n content: \"The latest trends in technology.\",\n author: \"Charlie Davis\",\n },\n ],\n },\n },\n indexes: [\n {\n name: \"idx_blog_posts_title\",\n fields: [\"title\"],\n unique: true,\n },\n ],\n },\n ],\n },\n);\n\nexport type InternalDatasource = Static<typeof datasourceInternalManifest>;\n\n// const datasourceJsonManifest = Type.Composite([\n// datasourceBaseFields,\n// Type.Object({\n// provider: Type.Literal(\"http-json\", {\n// title: \"JSON Array\",\n// description: \"JSON array datasource.\",\n// }),\n// options: httpJsonOptions,\n// schema: Type.Any({\n// title: \"Schema\",\n// description: \"JSON Schema of datasource. Always an array of objects.\",\n// examples: [\n// {\n// type: \"array\",\n// items: {\n// type: \"object\",\n// properties: {\n// id: { type: \"string\", title: \"ID\" },\n// title: { type: \"string\", title: \"Title\" },\n// firstname: { type: \"string\", title: \"Firstname\" },\n// lastname: { type: \"string\", title: \"Lastname\" },\n// createdAt: { type: \"string\", format: \"date-time\", title: \"Created at\" },\n// email: { type: \"string\", format: \"email\", title: \"Email\" },\n// },\n// required: [\"id\", \"title\", \"firstname\", \"lastname\", \"email\", \"createdAt\"],\n// title: \"Employee\",\n// },\n// title: \"Employees\",\n// description: \"Employees list\",\n// },\n// ],\n// }),\n// }),\n// ]);\n\n// type DatasourceJsonArrayManifest = Static<typeof datasourceJsonManifest>;\n\n// Fow now, let support only custom (internal) datasource\n// export const datasourceManifest = datasourceCustomManifest;\nexport const datasourceManifest = datasourceInternalManifest;\n\nexport function getDatasourceManifestForLLM() {\n return toLLMSchema(datasourceManifest);\n}\n\nexport type Datasource = Static<typeof datasourceManifest>;\nexport const datasourcesList = Type.Array(datasourceManifest);\nexport type DatasourcesList = Static<typeof datasourcesList>;\n\nconst stringFilter = Type.Object({\n field: Type.String(),\n op: Type.Union([\n Type.Literal(\"eq\"),\n Type.Literal(\"ne\"),\n Type.Literal(\"contains\"),\n Type.Literal(\"notContains\"),\n Type.Literal(\"startsWith\"),\n Type.Literal(\"notStartsWith\"),\n Type.Literal(\"endsWith\"),\n Type.Literal(\"notEndsWith\"),\n ]),\n value: Type.String(),\n});\n\nconst numberFilter = Type.Object({\n field: Type.String(),\n op: Type.Union([\n Type.Literal(\"eq\"),\n Type.Literal(\"ne\"),\n Type.Literal(\"lt\"),\n Type.Literal(\"lte\"),\n Type.Literal(\"gt\"),\n Type.Literal(\"gte\"),\n ]),\n value: Type.Number(),\n});\n\nconst dateFilterAbsolute = Type.Object({\n field: Type.String(),\n op: Type.Union([Type.Literal(\"before\"), Type.Literal(\"after\")]),\n value: Type.String(),\n});\n\nconst dateFilterRelative = Type.Object({\n field: Type.String(),\n op: Type.Union([Type.Literal(\"beforeNow\"), Type.Literal(\"afterNow\")]),\n value: Type.Null(),\n});\n\nconst arrayFilter = Type.Object({\n field: Type.String(),\n op: Type.Union([\n Type.Literal(\"contains\"),\n Type.Literal(\"notContains\"),\n Type.Literal(\"containsAll\"),\n Type.Literal(\"containsAny\"),\n Type.Literal(\"notContainsAny\"),\n ]),\n value: Type.Array(Type.String()),\n});\n\nconst booleanFilter = Type.Object({\n field: Type.String(),\n op: Type.Literal(\"eq\"),\n value: Type.Boolean(),\n});\n\nexport const queryFilter = Type.Union([\n stringFilter,\n numberFilter,\n dateFilterAbsolute,\n dateFilterRelative,\n arrayFilter,\n booleanFilter,\n]);\n\nconst filterExpression = Type.Recursive(\n (This) =>\n Type.Union(\n [\n Type.Object({\n op: Type.Literal(\"and\"),\n fields: Type.Array(Type.Union([queryFilter, This]), { title: \"Indexed Fields\" }),\n }),\n Type.Object({\n op: Type.Literal(\"or\"),\n fields: Type.Array(Type.Union([queryFilter, This])),\n }),\n ],\n {\n default: {\n op: \"and\",\n fields: [],\n },\n examples: [\n {\n op: \"and\",\n fields: [\n {\n field: \"$id\",\n op: \"eq\",\n value: \"123\",\n },\n {\n field: \"$publicationDate\",\n op: \"beforeNow\",\n },\n ],\n },\n ],\n },\n ),\n {\n title: \"Filter Expression\",\n description: \"Expression used to filter query results. Can be a combination of and/or conditions.\",\n },\n);\n\nexport const querySchema = Type.Object(\n {\n id: Type.String({\n title: \"Query ID\",\n description:\n \"Unique identifier for the query. Used to reference the query in the system. URL-safe string like a slug.\",\n }),\n label: Type.String({\n title: \"Label\",\n maxLength: 100,\n description: \"Label of the query displayed in the UI\",\n }),\n datasourceId: Type.String({\n title: \"Database\",\n description: \"ID of the datasource to query\",\n }),\n limit: Type.Number({\n title: \"Limit\",\n description: \"Limit the number of records to fetch from the datasource.\",\n minimum: 1,\n default: 10,\n }),\n sortDirection: Type.Optional(\n StringEnum([\"asc\", \"desc\"], {\n title: \"Sort\",\n enumNames: [\"Ascending\", \"Descending\"],\n description: \"Direction to sort the records by\",\n default: \"desc\",\n }),\n ),\n sortField: Type.Optional(\n Type.String({\n title: \"Sort Field\",\n description: \"Field to sort by (must be an indexed field)\",\n default: \"$publicationDate\",\n }),\n ),\n filters: Type.Optional(filterExpression),\n parameters: Type.Optional(\n Type.Array(\n Type.Object({\n field: Type.String({ title: \"Field\", description: \"Field name to use as parameter\" }),\n op: Type.Union(\n [\n Type.Literal(\"eq\"),\n Type.Literal(\"ne\"),\n Type.Literal(\"contains\"),\n Type.Literal(\"notContains\"),\n Type.Literal(\"startsWith\"),\n Type.Literal(\"notStartsWith\"),\n Type.Literal(\"endsWith\"),\n Type.Literal(\"notEndsWith\"),\n Type.Literal(\"lt\"),\n Type.Literal(\"lte\"),\n Type.Literal(\"gt\"),\n Type.Literal(\"gte\"),\n Type.Literal(\"before\"),\n Type.Literal(\"after\"),\n Type.Literal(\"beforeNow\"),\n Type.Literal(\"afterNow\"),\n Type.Literal(\"containsAll\"),\n Type.Literal(\"containsAny\"),\n Type.Literal(\"notContainsAny\"),\n ],\n { title: \"Operator\", description: \"Operator to use for the parameter\" },\n ),\n }),\n {\n title: \"Parameters\",\n description:\n \"Field name and operator that will be used as parameters when using the query in pages. Only indexed fields can be used as parameters.\",\n default: [],\n examples: [\n [{ field: \"$slug\", op: \"eq\" }],\n [{ field: \"category\", op: \"eq\" }],\n [{ field: \"tags\", op: \"containsAny\" }],\n [{ field: \"author\", op: \"eq\" }],\n [{ field: \"title\", op: \"contains\" }],\n ],\n },\n ),\n ),\n },\n {\n examples: [\n {\n id: \"latest-posts\",\n label: \"Latest posts\",\n datasourceId: \"blog_posts\",\n limit: 5,\n sortDirection: \"desc\",\n sortField: \"$publicationDate\",\n },\n {\n id: \"posts-by-category\",\n label: \"Posts by category\",\n datasourceId: \"blog_posts\",\n limit: 10,\n sortDirection: \"desc\",\n sortField: \"$publicationDate\",\n parameters: [{ field: \"category\", op: \"eq\" }],\n },\n {\n id: \"posts-by-tag\",\n label: \"Posts by tag\",\n datasourceId: \"blog_posts\",\n limit: 10,\n sortDirection: \"desc\",\n sortField: \"$publicationDate\",\n parameters: [{ field: \"tags\", op: \"containsAny\" }],\n },\n {\n id: \"author-posts\",\n label: \"Author posts\",\n datasourceId: \"blog_posts\",\n limit: 10,\n sortDirection: \"desc\",\n sortField: \"$publicationDate\",\n parameters: [{ field: \"author\", op: \"eq\" }],\n },\n {\n id: \"search-posts\",\n label: \"Search posts\",\n datasourceId: \"blog_posts\",\n limit: 10,\n sortDirection: \"desc\",\n sortField: \"$publicationDate\",\n parameters: [{ field: \"title\", op: \"contains\" }],\n },\n ],\n },\n);\n\nexport type Query = Static<typeof querySchema>;\n","import type { TObject, TSchema } from \"@sinclair/typebox\";\nimport { createAJVInstance } from \"../ajv\";\nimport { cloneDeep } from \"lodash-es\";\nimport type Ajv from \"ajv\";\n\n/**\n * Clean all properties from custom metadata recursively. Custom metadata are key that:\n * - Either with the name \"metadata\"\n * - Or starting with \"ui:\"\n * Also removes properties that have \"ai:hidden\" set to true\n */\nexport function toLLMSchema<T extends TSchema = TObject>(schema: T, ajv?: Ajv): T {\n return cleanSchemaRecursive(inlineSchemaRefs(schema, ajv ?? createAJVInstance())) as T;\n}\n\n/**\n * Recursively removes custom metadata from schema and filters out properties with ai:hidden = true\n */\nfunction cleanSchemaRecursive(schema: TSchema): TSchema {\n // Create a new object without custom metadata properties\n const cleaned: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(schema)) {\n // Skip metadata properties and ui: properties\n if (key === \"metadata\" || key.startsWith(\"ui:\")) {\n continue;\n }\n\n // Handle nested objects and arrays\n if (value && typeof value === \"object\") {\n if (Array.isArray(value)) {\n // Handle arrays - clean each item if it's a schema\n cleaned[key] = value.map((item) => {\n if (item && typeof item === \"object\" && isSchemaLike(item)) {\n return cleanSchemaRecursive(item as TSchema);\n }\n return item;\n });\n } else if (isSchemaLike(value)) {\n // Handle nested schemas\n cleaned[key] = cleanSchemaRecursive(value as TSchema);\n } else if (\n key === \"properties\" ||\n key === \"definitions\" ||\n key === \"$defs\" ||\n key === \"patternProperties\"\n ) {\n // Handle schema property collections - filter out properties with ai:hidden = true\n const cleanedProps: Record<string, TSchema> = {};\n for (const [propKey, propValue] of Object.entries(value)) {\n if (propValue && typeof propValue === \"object\") {\n // Check if this property should be hidden from AI\n const propSchema = propValue as Record<string, unknown>;\n if (propSchema[\"ai:hidden\"] === true) {\n continue; // Skip this property\n }\n cleanedProps[propKey] = cleanSchemaRecursive(propValue as TSchema);\n } else {\n cleanedProps[propKey] = propValue as TSchema;\n }\n }\n cleaned[key] = cleanedProps;\n } else {\n // For other objects, recursively clean if they look like schemas\n cleaned[key] = value;\n }\n } else {\n // Keep primitive values as-is\n cleaned[key] = value;\n }\n }\n\n return cleaned as TSchema;\n}\n\n/**\n * Helper function to determine if an object looks like a schema\n */\nfunction isSchemaLike(obj: unknown): boolean {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n\n const schemaKeys = [\n \"type\",\n \"$ref\",\n \"properties\",\n \"items\",\n \"anyOf\",\n \"oneOf\",\n \"allOf\",\n \"not\",\n \"if\",\n \"then\",\n \"else\",\n ];\n return schemaKeys.some((key) => key in obj);\n}\n\ninterface SchemaWithDefs extends TSchema {\n $defs?: Record<string, TSchema>;\n}\n\n/**\n * Inlines referenced schemas from AJV into the schema's $defs section\n * @param schema - The schema containing $ref references\n * @param ajv - The AJV instance containing the referenced schemas\n * @returns A new schema with references inlined in $defs\n */\nexport function inlineSchemaRefs<T extends TSchema>(schema: T, ajv: Ajv) {\n //\n const inlinedSchema = cloneDeep(schema) as T & SchemaWithDefs;\n // const inlinedSchema = JSON.parse(JSON.stringify(schema)) as T & SchemaWithDefs;\n const collectedRefs = new Set<string>();\n\n // Initialize $defs if it doesn't exist\n if (!inlinedSchema.$defs) {\n inlinedSchema.$defs = {};\n }\n\n /**\n * Recursively traverse the schema to find all $ref references\n */\n function collectRefs(obj: unknown): void {\n if (typeof obj !== \"object\" || obj === null) return;\n\n if (Array.isArray(obj)) {\n obj.forEach(collectRefs);\n return;\n }\n\n for (const [key, value] of Object.entries(obj as Record<string, unknown>)) {\n if (key === \"$ref\" && typeof value === \"string\") {\n // Extract the schema ID from the reference\n if (!value.startsWith(\"#/\")) {\n collectedRefs.add(value);\n }\n } else {\n collectRefs(value);\n }\n }\n }\n\n /**\n * Convert external $ref to local $defs reference\n */\n function convertRefsToLocal(obj: unknown, refMap: Map<string, string>): unknown {\n if (typeof obj !== \"object\" || obj === null) return obj;\n\n if (Array.isArray(obj)) {\n return obj.map((item) => convertRefsToLocal(item, refMap));\n }\n\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj as Record<string, unknown>)) {\n if (key === \"$ref\" && typeof value === \"string\") {\n const localRef = refMap.get(value);\n result[key] = localRef || value;\n } else {\n result[key] = convertRefsToLocal(value, refMap);\n }\n }\n return result;\n }\n\n // Collect all references in the schema\n collectRefs(inlinedSchema);\n\n // Map to track original ref -> local def reference\n const refToLocalMap = new Map<string, string>();\n\n // Process each collected reference\n for (const refId of collectedRefs) {\n // Get the schema from AJV\n const referencedSchema = ajv.getSchema(refId);\n\n if (!referencedSchema?.schema) {\n // console.log(`Schema with ID \"${refId}\" not found in AJV instance`, { referencedSchema });\n continue;\n }\n\n // Create a safe key for $defs (remove special characters, use last part of URI)\n const defKey =\n refId.replace(/[^a-zA-Z0-9_-]/g, \"_\").replace(/^_+|_+$/g, \"\") ||\n refId\n .split(\"/\")\n .pop()\n ?.replace(/[^a-zA-Z0-9_-]/g, \"_\") ||\n `ref_${Object.keys(inlinedSchema.$defs!).length}`;\n\n // Ensure unique key\n let uniqueDefKey = defKey;\n let counter = 1;\n while (inlinedSchema.$defs![uniqueDefKey]) {\n uniqueDefKey = `${defKey}_${counter}`;\n counter++;\n }\n\n // Add to $defs\n const { $id, ...schemaWithoutId } = referencedSchema.schema as TSchema;\n inlinedSchema.$defs![uniqueDefKey] = schemaWithoutId;\n\n // Map original reference to local reference\n refToLocalMap.set(refId, `#/$defs/${uniqueDefKey}`);\n }\n\n // Convert all external references to local $defs references\n const finalSchema = convertRefsToLocal(inlinedSchema, refToLocalMap) as T & SchemaWithDefs;\n\n // Recursively inline references in the newly added $defs schemas\n if (finalSchema.$defs) {\n // Keep processing until no new references are found\n let foundNewRefs = true;\n while (foundNewRefs) {\n foundNewRefs = false;\n const newRefsFound = new Set<string>();\n\n // Check each $defs schema for new references\n for (const [defKey, defSchema] of Object.entries(finalSchema.$defs)) {\n const defCollectedRefs = new Set<string>();\n\n // Collect refs specifically for this schema\n function collectDefsRefs(obj: unknown): void {\n if (typeof obj !== \"object\" || obj === null) return;\n\n if (Array.isArray(obj)) {\n obj.forEach(collectDefsRefs);\n return;\n }\n\n for (const [key, value] of Object.entries(obj as Record<string, unknown>)) {\n if (key === \"$ref\" && typeof value === \"string\") {\n const refId = value.startsWith(\"#/\") ? value : value;\n if (!refId.startsWith(\"#/\")) {\n defCollectedRefs.add(refId);\n }\n } else {\n collectDefsRefs(value);\n }\n }\n }\n\n collectDefsRefs(defSchema);\n\n // Process any new references found in this $defs schema\n for (const refId of defCollectedRefs) {\n if (!refToLocalMap.has(refId)) {\n newRefsFound.add(refId);\n foundNewRefs = true;\n }\n }\n }\n\n // Add all newly found references to $defs\n for (const refId of newRefsFound) {\n const referencedSchema = ajv.getSchema(refId);\n if (referencedSchema?.schema) {\n const newDefKey =\n refId.replace(/[^a-zA-Z0-9_-]/g, \"_\").replace(/^_+|_+$/g, \"\") ||\n `ref_${Object.keys(finalSchema.$defs).length}`;\n\n let uniqueNewDefKey = newDefKey;\n let counter = 1;\n while (finalSchema.$defs[uniqueNewDefKey]) {\n uniqueNewDefKey = `${newDefKey}_${counter}`;\n counter++;\n }\n\n finalSchema.$defs[uniqueNewDefKey] = referencedSchema.schema as TSchema;\n refToLocalMap.set(refId, `#/$defs/${uniqueNewDefKey}`);\n }\n }\n }\n\n // Finally, update all $defs schemas with converted references\n for (const [defKey, defSchema] of Object.entries(finalSchema.$defs)) {\n finalSchema.$defs[defKey] = convertRefsToLocal(defSchema, refToLocalMap) as TSchema;\n }\n }\n\n return finalSchema as T & { $defs: Record<string, TSchema> };\n}\n"],"mappings":";;gpBAAA,OAAOA,OAA+B,MACtC,OAAOC,OAAgB,cCAvB,OAA6B,QAAAC,MAAyB,oBCDtD,OAAS,QAAAC,MAAyB,oBAK3B,IAAMC,GAAkBC,EAAK,MAAM,CAMxCA,EAAK,QAAQ,UAAU,CAczB,CAAC,EAuCKC,EAA6BD,EAAK,OACtC,CACE,GAAIA,EAAK,OAAO,CACd,MAAO,KACP,YACE,yHACJ,CAAC,EACD,MAAOA,EAAK,OAAO,CAAE,MAAO,QAAS,YAAa,6CAA8C,CAAC,EACjG,SAAUA,EAAK,QAAQ,WAAY,CACjC,MAAO,WACP,YAAa,+CACf,CAAC,EACD,OAAQA,EAAK,IAAI,CACf,MAAO,SACP,YAAa,6DACf,CAAC,EACD,QAASA,EAAK,SACZA,EAAK,MACHA,EAAK,OAAO,CACV,KAAMA,EAAK,OAAO,CAAE,MAAO,YAAa,CAAC,EACzC,OAAQA,EAAK,MAAMA,EAAK,OAAO,EAAG,CAAE,MAAO,iBAAkB,CAAC,EAC9D,OAAQA,EAAK,SAASA,EAAK,QAAQ,CAAE,MAAO,eAAgB,QAAS,EAAM,CAAC,CAAC,CAC/E,CAAC,EACD,CACE,MAAO,UACP,YACE,4GACJ,CACF,CACF,CACF,EACA,CACE,SAAU,CACR,CACE,GAAI,YACJ,MAAO,YACP,SAAU,WACV,OAAQ,CACN,KAAM,QACN,MAAO,CACL,KAAM,SACN,WAAY,CACV,KAAM,CAAE,KAAM,SAAU,MAAO,MAAO,EACtC,MAAO,CAAE,KAAM,SAAU,MAAO,QAAS,OAAQ,OAAQ,CAC3D,EACA,SAAU,CAAC,OAAQ,OAAO,EAC1B,MAAO,WACP,SAAU,CACR,CAAE,KAAM,WAAY,MAAO,sBAAuB,EAClD,CACE,KAAM,aACN,MAAO,wBACT,EACA,CACE,KAAM,gBACN,MAAO,2BACT,EACA,CACE,KAAM,YACN,MAAO,uBACT,EACA,CACE,KAAM,gBACN,MAAO,2BACT,CACF,CACF,CACF,EACA,QAAS,CACP,CACE,KAAM,sBACN,OAAQ,CAAC,OAAO,EAChB,OAAQ,EACV,CACF,CACF,EACA,CACE,GAAI,aACJ,MAAO,aACP,SAAU,WACV,OAAQ,CACN,KAAM,QACN,MAAO,CACL,KAAM,SACN,WAAY,CACV,MAAO,CAAE,KAAM,SAAU,MAAO,OAAQ,EACxC,QAAS,CAAE,KAAM,SAAU,MAAO,SAAU,EAC5C,OAAQ,CAAE,KAAM,SAAU,MAAO,QAAS,CAC5C,EACA,SAAU,CAAC,QAAS,UAAW,QAAQ,EACvC,MAAO,YACP,SAAU,CACR,CACE,MAAO,qBACP,QAAS,6CACT,OAAQ,UACV,EACA,CACE,MAAO,uBACP,QAAS,4CACT,OAAQ,YACV,EACA,CACE,MAAO,qBACP,QAAS,sCACT,OAAQ,eACV,EACA,CACE,MAAO,sBACP,QAAS,wCACT,OAAQ,WACV,EACA,CACE,MAAO,oBACP,QAAS,mCACT,OAAQ,eACV,CACF,CACF,CACF,EACA,QAAS,CACP,CACE,KAAM,uBACN,OAAQ,CAAC,OAAO,EAChB,OAAQ,EACV,CACF,CACF,CACF,CACF,CACF,EA2CaE,EAAqBD,EAE3B,SAASE,IAA8B,CAC5C,OAAOC,EAAYF,CAAkB,CACvC,CAGO,IAAMG,GAAkBL,EAAK,MAAME,CAAkB,EAGtDI,EAAeN,EAAK,OAAO,CAC/B,MAAOA,EAAK,OAAO,EACnB,GAAIA,EAAK,MAAM,CACbA,EAAK,QAAQ,IAAI,EACjBA,EAAK,QAAQ,IAAI,EACjBA,EAAK,QAAQ,UAAU,EACvBA,EAAK,QAAQ,aAAa,EAC1BA,EAAK,QAAQ,YAAY,EACzBA,EAAK,QAAQ,eAAe,EAC5BA,EAAK,QAAQ,UAAU,EACvBA,EAAK,QAAQ,aAAa,CAC5B,CAAC,EACD,MAAOA,EAAK,OAAO,CACrB,CAAC,EAEKO,GAAeP,EAAK,OAAO,CAC/B,MAAOA,EAAK,OAAO,EACnB,GAAIA,EAAK,MAAM,CACbA,EAAK,QAAQ,IAAI,EACjBA,EAAK,QAAQ,IAAI,EACjBA,EAAK,QAAQ,IAAI,EACjBA,EAAK,QAAQ,KAAK,EAClBA,EAAK,QAAQ,IAAI,EACjBA,EAAK,QAAQ,KAAK,CACpB,CAAC,EACD,MAAOA,EAAK,OAAO,CACrB,CAAC,EAEKQ,GAAqBR,EAAK,OAAO,CACrC,MAAOA,EAAK,OAAO,EACnB,GAAIA,EAAK,MAAM,CAACA,EAAK,QAAQ,QAAQ,EAAGA,EAAK,QAAQ,OAAO,CAAC,CAAC,EAC9D,MAAOA,EAAK,OAAO,CACrB,CAAC,EAEKS,GAAqBT,EAAK,OAAO,CACrC,MAAOA,EAAK,OAAO,EACnB,GAAIA,EAAK,MAAM,CAACA,EAAK,QAAQ,WAAW,EAAGA,EAAK,QAAQ,UAAU,CAAC,CAAC,EACpE,MAAOA,EAAK,KAAK,CACnB,CAAC,EAEKU,GAAcV,EAAK,OAAO,CAC9B,MAAOA,EAAK,OAAO,EACnB,GAAIA,EAAK,MAAM,CACbA,EAAK,QAAQ,UAAU,EACvBA,EAAK,QAAQ,aAAa,EAC1BA,EAAK,QAAQ,aAAa,EAC1BA,EAAK,QAAQ,aAAa,EAC1BA,EAAK,QAAQ,gBAAgB,CAC/B,CAAC,EACD,MAAOA,EAAK,MAAMA,EAAK,OAAO,CAAC,CACjC,CAAC,EAEKW,GAAgBX,EAAK,OAAO,CAChC,MAAOA,EAAK,OAAO,EACnB,GAAIA,EAAK,QAAQ,IAAI,EACrB,MAAOA,EAAK,QAAQ,CACtB,CAAC,EAEYY,EAAcZ,EAAK,MAAM,CACpCM,EACAC,GACAC,GACAC,GACAC,GACAC,EACF,CAAC,EAEKE,GAAmBb,EAAK,UAC3Bc,GACCd,EAAK,MACH,CACEA,EAAK,OAAO,CACV,GAAIA,EAAK,QAAQ,KAAK,EACtB,OAAQA,EAAK,MAAMA,EAAK,MAAM,CAACY,EAAaE,CAAI,CAAC,EAAG,CAAE,MAAO,gBAAiB,CAAC,CACjF,CAAC,EACDd,EAAK,OAAO,CACV,GAAIA,EAAK,QAAQ,IAAI,EACrB,OAAQA,EAAK,MAAMA,EAAK,MAAM,CAACY,EAAaE,CAAI,CAAC,CAAC,CACpD,CAAC,CACH,EACA,CACE,QAAS,CACP,GAAI,MACJ,OAAQ,CAAC,CACX,EACA,SAAU,CACR,CACE,GAAI,MACJ,OAAQ,CACN,CACE,MAAO,MACP,GAAI,KACJ,MAAO,KACT,EACA,CACE,MAAO,mBACP,GAAI,WACN,CACF,CACF,CACF,CACF,CACF,EACF,CACE,MAAO,oBACP,YAAa,qFACf,CACF,EAEaC,GAAcf,EAAK,OAC9B,CACE,GAAIA,EAAK,OAAO,CACd,MAAO,WACP,YACE,0GACJ,CAAC,EACD,MAAOA,EAAK,OAAO,CACjB,MAAO,QACP,UAAW,IACX,YAAa,wCACf,CAAC,EACD,aAAcA,EAAK,OAAO,CACxB,MAAO,WACP,YAAa,+BACf,CAAC,EACD,MAAOA,EAAK,OAAO,CACjB,MAAO,QACP,YAAa,4DACb,QAAS,EACT,QAAS,EACX,CAAC,EACD,cAAeA,EAAK,SAClBgB,EAAW,CAAC,MAAO,MAAM,EAAG,CAC1B,MAAO,OACP,UAAW,CAAC,YAAa,YAAY,EACrC,YAAa,mCACb,QAAS,MACX,CAAC,CACH,EACA,UAAWhB,EAAK,SACdA,EAAK,OAAO,CACV,MAAO,aACP,YAAa,8CACb,QAAS,kBACX,CAAC,CACH,EACA,QAASA,EAAK,SAASa,EAAgB,EACvC,WAAYb,EAAK,SACfA,EAAK,MACHA,EAAK,OAAO,CACV,MAAOA,EAAK,OAAO,CAAE,MAAO,QAAS,YAAa,gCAAiC,CAAC,EACpF,GAAIA,EAAK,MACP,CACEA,EAAK,QAAQ,IAAI,EACjBA,EAAK,QAAQ,IAAI,EACjBA,EAAK,QAAQ,UAAU,EACvBA,EAAK,QAAQ,aAAa,EAC1BA,EAAK,QAAQ,YAAY,EACzBA,EAAK,QAAQ,eAAe,EAC5BA,EAAK,QAAQ,UAAU,EACvBA,EAAK,QAAQ,aAAa,EAC1BA,EAAK,QAAQ,IAAI,EACjBA,EAAK,QAAQ,KAAK,EAClBA,EAAK,QAAQ,IAAI,EACjBA,EAAK,QAAQ,KAAK,EAClBA,EAAK,QAAQ,QAAQ,EACrBA,EAAK,QAAQ,OAAO,EACpBA,EAAK,QAAQ,WAAW,EACxBA,EAAK,QAAQ,UAAU,EACvBA,EAAK,QAAQ,aAAa,EAC1BA,EAAK,QAAQ,aAAa,EAC1BA,EAAK,QAAQ,gBAAgB,CAC/B,EACA,CAAE,MAAO,WAAY,YAAa,mCAAoC,CACxE,CACF,CAAC,EACD,CACE,MAAO,aACP,YACE,wIACF,QAAS,CAAC,EACV,SAAU,CACR,CAAC,CAAE,MAAO,QAAS,GAAI,IAAK,CAAC,EAC7B,CAAC,CAAE,MAAO,WAAY,GAAI,IAAK,CAAC,EAChC,CAAC,CAAE,MAAO,OAAQ,GAAI,aAAc,CAAC,EACrC,CAAC,CAAE,MAAO,SAAU,GAAI,IAAK,CAAC,EAC9B,CAAC,CAAE,MAAO,QAAS,GAAI,UAAW,CAAC,CACrC,CACF,CACF,CACF,CACF,EACA,CACE,SAAU,CACR,CACE,GAAI,eACJ,MAAO,eACP,aAAc,aACd,MAAO,EACP,cAAe,OACf,UAAW,kBACb,EACA,CACE,GAAI,oBACJ,MAAO,oBACP,aAAc,aACd,MAAO,GACP,cAAe,OACf,UAAW,mBACX,WAAY,CAAC,CAAE,MAAO,WAAY,GAAI,IAAK,CAAC,CAC9C,EACA,CACE,GAAI,eACJ,MAAO,eACP,aAAc,aACd,MAAO,GACP,cAAe,OACf,UAAW,mBACX,WAAY,CAAC,CAAE,MAAO,OAAQ,GAAI,aAAc,CAAC,CACnD,EACA,CACE,GAAI,eACJ,MAAO,eACP,aAAc,aACd,MAAO,GACP,cAAe,OACf,UAAW,mBACX,WAAY,CAAC,CAAE,MAAO,SAAU,GAAI,IAAK,CAAC,CAC5C,EACA,CACE,GAAI,eACJ,MAAO,eACP,aAAc,aACd,MAAO,GACP,cAAe,OACf,UAAW,mBACX,WAAY,CAAC,CAAE,MAAO,QAAS,GAAI,UAAW,CAAC,CACjD,CACF,CACF,CACF,EDleO,SAASiB,GAAW,CACzB,OAAOC,EAAK,OACV,CACE,QAASA,EAAK,OAAO,CACnB,YAAa,2BACf,CAAC,EACD,MAAOA,EAAK,OAAO,CACjB,MAAO,QACP,UAAW,EACX,UAAW,IACX,QAAS,kBACT,YACE,uJACF,kBACE,wOACJ,CAAC,EACD,OAAQA,EAAK,SACXA,EAAK,MAAMC,EAAa,CACtB,YACE,0IACF,MAAO,mBACP,QAAS,CAAC,CACZ,CAAC,CACH,CACF,EACA,CACE,MAAO,QACP,YACE,wGAEF,WAAY,QACZ,SAAU,CACR,SAAU,SACZ,EACA,SAAU,CACR,CAAE,QAAS,mBAAoB,MAAO,aAAc,EACpD,CACE,QAAS,mBACT,MAAO,cACP,OAAQ,CAAC,CAAE,MAAO,SAAU,GAAI,KAAM,MAAO,OAAQ,CAAC,CACxD,EACA,CACE,QAAS,wBACT,MAAO,kBACP,OAAQ,CAAC,CAAE,MAAO,WAAY,GAAI,KAAM,MAAO,OAAQ,CAAC,CAC1D,CACF,CACF,CACF,CACF,CAEO,IAAMC,GAAiBC,GAAY,EAInC,SAASA,GAAYC,EAAyB,CAAC,EAAG,CACvD,OAAOC,EAAS,mBAAoBD,CAAO,CAC7C,CAEO,SAASE,EAAKF,EAAyB,CAAC,EAAG,CAChD,OAAOJ,EAAK,OACV,CACE,KAAMA,EAAK,OAAO,CAChB,MAAO,OACP,YAAa,kFACb,kBAAmB,mDACrB,CAAC,EACD,cAAeA,EAAK,SAClBA,EAAK,OAAO,CACV,QAAS,EACT,YACE,yKACJ,CAAC,CACH,CACF,EACA,CAEE,MAAO,cACP,YAAa,kEACb,WAAY,OACZ,eAAgB,kBAChB,SAAU,CACR,SAAU,SACZ,EACA,SAAU,CACR,CACE,KAAM,kBACN,cAAe,CACjB,EACA,CACE,KAAM,mBACN,cAAe,CACjB,EACA,CACE,KAAM,iBACR,CACF,EACA,GAAGI,CACL,CACF,CACF,CAIO,SAASG,GAAQH,EAAyB,CAAC,EAAG,CACnD,OAAOC,EAAS,eAAgBD,CAAO,CACzC,CD5FO,IAAMI,GAA8B,CAAC,YAAa,OAAQ,QAAS,KAAK,EAExE,SAASC,GAAoB,CAClC,IAAMC,EAAM,IAAIC,GAAI,CAClB,YAAa,GACb,aAAc,GACd,eAAgB,GAChB,YAAa,GACb,UAAW,GACX,WAAY,EACd,CAAC,EAED,OAAAD,EAAI,UAAUE,EAAW,EAAG,mBAAmB,EAC/CF,EAAI,UAAUG,EAAgB,EAAG,wBAAwB,EACzDH,EAAI,UAAUI,EAAe,EAAG,uBAAuB,EACvDJ,EAAI,UAAUK,EAAW,EAAG,mBAAmB,EAC/CL,EAAI,UAAUM,EAAU,EAAG,kBAAkB,EAC7CN,EAAI,UAAUO,EAAS,EAAG,iBAAiB,EAC3CP,EAAI,UAAUQ,EAAS,EAAG,iBAAiB,EAC3CR,EAAI,UAAUS,EAAO,EAAG,eAAe,EACvCT,EAAI,UAAUU,EAAU,EAAG,kBAAkB,EAC7CV,EAAI,UAAUW,EAAO,EAAG,eAAe,EACvCX,EAAI,UAAUY,EAAM,EAAG,cAAc,EACrCZ,EAAI,UAAUa,EAAY,EAAG,oBAAoB,EACjDb,EAAI,UAAUc,EAAO,EAAG,eAAe,EACvCd,EAAI,UAAUe,EAAW,EAAG,mBAAmB,EAC/Cf,EAAI,UAAUgB,EAAU,EAAG,kBAAkB,EAC7ChB,EAAI,UAAUiB,EAAM,EAAG,cAAc,EACrCjB,EAAI,UAAUkB,EAAK,EAAG,aAAa,EACnClB,EAAI,UAAUmB,EAAY,EAAG,cAAc,EAC3CnB,EAAI,UAAUoB,EAAY,EAAG,qBAAqB,EAClDpB,EAAI,UAAUqB,EAAK,EAAG,cAAc,EACpCrB,EAAI,UAAUsB,EAAS,EAAG,kBAAkB,EAC5CtB,EAAI,UAAUuB,EAAY,EAAG,eAAe,EAC5CvB,EAAI,UAAUwB,EAAK,EAAG,cAAc,EAGpCC,GAAWzB,EAAK,CAAC,GAAGF,EAA2B,CAAC,EAEhDE,EAAI,UAAU,OAAQ,CACpB,SAAW0B,GAAiB,OAAOA,GAAS,SAC5C,MAAO,GACP,KAAM,QACR,CAAC,EACD1B,EAAI,UAAU,QAAS,CACrB,SAAW0B,GAAiB,OAAOA,GAAS,SAC5C,MAAO,GACP,KAAM,QACR,CAAC,EACD1B,EAAI,UAAU,OAAQ,CACpB,SAAW0B,GAAiB,OAAOA,GAAS,SAC5C,MAAO,GACP,KAAM,QACR,CAAC,EAED1B,EAAI,UAAU,SAAU,CACtB,SAAW0B,GAAiB,OAAOA,GAAS,SAC5C,MAAO,GACP,KAAM,QACR,CAAC,EAED1B,EAAI,UAAU,WAAY,CACxB,SAAW0B,GAAiB,OAAOA,GAAS,SAC5C,MAAO,GACP,KAAM,QACR,CAAC,EAED1B,EAAI,UAAU,WAAY,CACxB,SAAW0B,GAAiB,OAAOA,GAAS,SAC5C,MAAO,GACP,KAAM,QACR,CAAC,EAED1B,EAAI,UAAU,YAAa,CACzB,SAAW0B,GAAiB,OAAOA,GAAS,SAC5C,MAAO,GACP,KAAM,QACR,CAAC,EAED1B,EAAI,UAAU,WAAY,CACxB,SAAW0B,GAAiB,OAAOA,GAAS,SAC5C,MAAO,GACP,KAAM,QACR,CAAC,EACM1B,CACT,CAEO,IAAMA,GAAMD,EAAkB,EAE9B,SAAS4B,GAAmBC,EAAkD,CACnF,MAAI,CAACA,GAAUA,EAAO,SAAW,EACxB,2BAEFA,EACJ,IAAKC,GAAU,CACd,GAAM,CAAE,aAAAC,EAAc,QAAAC,EAAS,OAAAC,CAAO,EAAIH,EACpCI,EAAOH,GAAgB,OACvBI,EAAU,OAAO,QAAQF,GAAU,CAAC,CAAC,EACxC,IAAI,CAAC,CAACG,EAAKC,CAAK,IAAM,GAAGD,CAAG,KAAKC,CAAK,EAAE,EACxC,KAAK,IAAI,EACZ,MAAO,GAAGH,CAAI,IAAIF,CAAO,KAAKG,CAAO,GACvC,CAAC,EACA,KAAK,IAAI,CACd,CGxHA,OAAS,aAAAG,OAAiB,YASnB,SAASC,EAAyCC,EAAWC,EAAc,CAChF,OAAOC,EAAqBC,GAAiBH,EAAQC,GAAOG,EAAkB,CAAC,CAAC,CAClF,CAKA,SAASF,EAAqBF,EAA0B,CAEtD,IAAMK,EAAmC,CAAC,EAE1C,OAAW,CAACC,EAAKC,CAAK,IAAK,OAAO,QAAQP,CAAM,EAE9C,GAAI,EAAAM,IAAQ,YAAcA,EAAI,WAAW,KAAK,GAK9C,GAAIC,GAAS,OAAOA,GAAU,SAC5B,GAAI,MAAM,QAAQA,CAAK,EAErBF,EAAQC,CAAG,EAAIC,EAAM,IAAKC,GACpBA,GAAQ,OAAOA,GAAS,UAAYC,EAAaD,CAAI,EAChDN,EAAqBM,CAAe,EAEtCA,CACR,UACQC,EAAaF,CAAK,EAE3BF,EAAQC,CAAG,EAAIJ,EAAqBK,CAAgB,UAEpDD,IAAQ,cACRA,IAAQ,eACRA,IAAQ,SACRA,IAAQ,oBACR,CAEA,IAAMI,EAAwC,CAAC,EAC/C,OAAW,CAACC,EAASC,CAAS,IAAK,OAAO,QAAQL,CAAK,EACrD,GAAIK,GAAa,OAAOA,GAAc,SAAU,CAG9C,GADmBA,EACJ,WAAW,IAAM,GAC9B,SAEFF,EAAaC,CAAO,EAAIT,EAAqBU,CAAoB,CACnE,MACEF,EAAaC,CAAO,EAAIC,EAG5BP,EAAQC,CAAG,EAAII,CACjB,MAEEL,EAAQC,CAAG,EAAIC,OAIjBF,EAAQC,CAAG,EAAIC,EAInB,OAAOF,CACT,CAKA,SAASI,EAAaI,EAAuB,CAC3C,MAAI,CAACA,GAAO,OAAOA,GAAQ,SAClB,GAGU,CACjB,OACA,OACA,aACA,QACA,QACA,QACA,QACA,MACA,KACA,OACA,MACF,EACkB,KAAMP,GAAQA,KAAOO,CAAG,CAC5C,CAYO,SAASV,GAAoCH,EAAWC,EAAU,CAEvE,IAAMa,EAAgBhB,GAAUE,CAAM,EAEhCe,EAAgB,IAAI,IAGrBD,EAAc,QACjBA,EAAc,MAAQ,CAAC,GAMzB,SAASE,EAAYH,EAAoB,CACvC,GAAI,SAAOA,GAAQ,UAAYA,IAAQ,MAEvC,IAAI,MAAM,QAAQA,CAAG,EAAG,CACtBA,EAAI,QAAQG,CAAW,EACvB,MACF,CAEA,OAAW,CAACV,EAAKC,CAAK,IAAK,OAAO,QAAQM,CAA8B,EAClEP,IAAQ,QAAU,OAAOC,GAAU,SAEhCA,EAAM,WAAW,IAAI,GACxBQ,EAAc,IAAIR,CAAK,EAGzBS,EAAYT,CAAK,EAGvB,CAKA,SAASU,EAAmBJ,EAAcK,EAAsC,CAC9E,GAAI,OAAOL,GAAQ,UAAYA,IAAQ,KAAM,OAAOA,EAEpD,GAAI,MAAM,QAAQA,CAAG,EACnB,OAAOA,EAAI,IAAKL,GAASS,EAAmBT,EAAMU,CAAM,CAAC,EAG3D,IAAMC,EAAkC,CAAC,EACzC,OAAW,CAACb,EAAKC,CAAK,IAAK,OAAO,QAAQM,CAA8B,EACtE,GAAIP,IAAQ,QAAU,OAAOC,GAAU,SAAU,CAC/C,IAAMa,EAAWF,EAAO,IAAIX,CAAK,EACjCY,EAAOb,CAAG,EAAIc,GAAYb,CAC5B,MACEY,EAAOb,CAAG,EAAIW,EAAmBV,EAAOW,CAAM,EAGlD,OAAOC,CACT,CAGAH,EAAYF,CAAa,EAGzB,IAAMO,EAAgB,IAAI,IAG1B,QAAWC,KAASP,EAAe,CAEjC,IAAMQ,EAAmBtB,EAAI,UAAUqB,CAAK,EAE5C,GAAI,CAACC,GAAkB,OAErB,SAIF,IAAMC,EACJF,EAAM,QAAQ,kBAAmB,GAAG,EAAE,QAAQ,WAAY,EAAE,GAC5DA,EACG,MAAM,GAAG,EACT,IAAI,GACH,QAAQ,kBAAmB,GAAG,GAClC,OAAO,OAAO,KAAKR,EAAc,KAAM,EAAE,MAAM,GAG7CW,EAAeD,EACfE,EAAU,EACd,KAAOZ,EAAc,MAAOW,CAAY,GACtCA,EAAe,GAAGD,CAAM,IAAIE,CAAO,GACnCA,IAIF,GAAM,CAAE,IAAAC,EAAK,GAAGC,CAAgB,EAAIL,EAAiB,OACrDT,EAAc,MAAOW,CAAY,EAAIG,EAGrCP,EAAc,IAAIC,EAAO,WAAWG,CAAY,EAAE,CACpD,CAGA,IAAMI,EAAcZ,EAAmBH,EAAeO,CAAa,EAGnE,GAAIQ,EAAY,MAAO,CAErB,IAAIC,EAAe,GACnB,KAAOA,GAAc,CACnBA,EAAe,GACf,IAAMC,EAAe,IAAI,IAGzB,OAAW,CAACP,EAAQQ,CAAS,IAAK,OAAO,QAAQH,EAAY,KAAK,EAAG,CAInE,IAASI,EAAT,SAAyBpB,EAAoB,CAC3C,GAAI,SAAOA,GAAQ,UAAYA,IAAQ,MAEvC,IAAI,MAAM,QAAQA,CAAG,EAAG,CACtBA,EAAI,QAAQoB,CAAe,EAC3B,MACF,CAEA,OAAW,CAAC3B,EAAKC,CAAK,IAAK,OAAO,QAAQM,CAA8B,EACtE,GAAIP,IAAQ,QAAU,OAAOC,GAAU,SAAU,CAC/C,IAAMe,GAAQf,EAAM,WAAW,IAAI,EAAIA,GAClCe,EAAM,WAAW,IAAI,GACxBY,EAAiB,IAAIZ,CAAK,CAE9B,MACEW,EAAgB1B,CAAK,EAG3B,EAlBS,IAAA0B,IAHT,IAAMC,EAAmB,IAAI,IAuB7BD,EAAgBD,CAAS,EAGzB,QAAWV,KAASY,EACbb,EAAc,IAAIC,CAAK,IAC1BS,EAAa,IAAIT,CAAK,EACtBQ,EAAe,GAGrB,CAGA,QAAWR,KAASS,EAAc,CAChC,IAAMR,EAAmBtB,EAAI,UAAUqB,CAAK,EAC5C,GAAIC,GAAkB,OAAQ,CAC5B,IAAMY,EACJb,EAAM,QAAQ,kBAAmB,GAAG,EAAE,QAAQ,WAAY,EAAE,GAC5D,OAAO,OAAO,KAAKO,EAAY,KAAK,EAAE,MAAM,GAE1CO,EAAkBD,EAClBT,EAAU,EACd,KAAOG,EAAY,MAAMO,CAAe,GACtCA,EAAkB,GAAGD,CAAS,IAAIT,CAAO,GACzCA,IAGFG,EAAY,MAAMO,CAAe,EAAIb,EAAiB,OACtDF,EAAc,IAAIC,EAAO,WAAWc,CAAe,EAAE,CACvD,CACF,CACF,CAGA,OAAW,CAACZ,EAAQQ,CAAS,IAAK,OAAO,QAAQH,EAAY,KAAK,EAChEA,EAAY,MAAML,CAAM,EAAIP,EAAmBe,EAAWX,CAAa,CAE3E,CAEA,OAAOQ,CACT","names":["Ajv","addFormats","Type","Type","providersSchema","Type","datasourceInternalManifest","datasourceManifest","getDatasourceManifestForLLM","toLLMSchema","datasourcesList","stringFilter","numberFilter","dateFilterAbsolute","dateFilterRelative","arrayFilter","booleanFilter","queryFilter","filterExpression","This","querySchema","StringEnum","queryUse","Type","queryFilter","queryUseSchema","queryUseRef","options","typedRef","loop","loopRef","jsonStringsSupportedFormats","createAJVInstance","ajv","Ajv","background","backgroundColor","justifyContent","alignItems","alignSelf","rounding","fontSize","hidden","direction","border","color","borderColor","shadow","textShadow","cssLength","image","icon","textContent","urlOrPageId","loop","queryUse","colorPreset","tags","addFormats","data","serializeAjvErrors","errors","error","instancePath","message","params","path","details","key","value","cloneDeep","toLLMSchema","schema","ajv","cleanSchemaRecursive","inlineSchemaRefs","createAJVInstance","cleaned","key","value","item","isSchemaLike","cleanedProps","propKey","propValue","obj","inlinedSchema","collectedRefs","collectRefs","convertRefsToLocal","refMap","result","localRef","refToLocalMap","refId","referencedSchema","defKey","uniqueDefKey","counter","$id","schemaWithoutId","finalSchema","foundNewRefs","newRefsFound","defSchema","collectDefsRefs","defCollectedRefs","newDefKey","uniqueNewDefKey"]}
@@ -1,4 +0,0 @@
1
- /*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
2
-
3
- import{b as m}from"./chunk-Q4H4QEMB.js";import{a as d}from"./chunk-SY6DZLTC.js";import{a as g}from"./chunk-7A2JNQX3.js";import{a}from"./chunk-KSEURRVZ.js";import{b as c}from"./chunk-QGYZ7CG5.js";import{a as i,h as l,k as p}from"./chunk-AFVJZPLS.js";import{b as u}from"./chunk-CCI4C3TM.js";import{a as t}from"./chunk-A3GF4PYW.js";import{b as o}from"./chunk-DHI3IBOD.js";import{c as n}from"./chunk-CZRCW5EN.js";import{a as s}from"./chunk-JMN3HTZU.js";import{Type as e}from"@sinclair/typebox";var h=e.Object({backgroundImage:e.Optional(o()),colorPreset:e.Optional(n({examples:[{color:"base-100"},{color:"primary-500"},{color:"accent-100",gradientDirection:"bg-gradient-to-r"}]})),tags:e.Optional(e.Array(t("Tag"),{title:"Tags",description:"Use tags to organize, group and filter pages in navigation elements and in the dashboard. By default, the navbar element display pages having the 'navbar' tag, while the sidebar displays the pages with the tag 'sidebar'.","ui:field":"tags",examples:[["navbar","navbar"],["navbar","sidebar"],["sidebar"]]})),path:t("URL path",{default:"/",description:"The URL path of the page. Use placeholders like :id or :slug for dynamic paths.","ui:field":"path",pattern:"^/[a-z0-9-:/]*$",examples:["/","/about","/products/:id"]}),queries:e.Optional(e.Array(p(),{title:"Page Queries",description:"List of queries to use in this page. All listed queries will be executed when the page loads.","ai:instructions":"Reference Query IDs to use at the page level.","ui:field":"page-queries",maxItems:5})),title:t("Title",{default:"Untitled","ui:group":"meta","ui:group:title":"Meta tags",description:"The title of the page. Appears in the browser tab and search results","ui:placeholder":"Page title"}),description:t("Description",{"ui:widget":"textarea","ui:group":"meta","ui:group:title":"Meta tags",description:"A short description of the page. Used by search engines","ui:multiline":!0,"ui:textarea-class":"h-24",default:"","ui:placeholder":"A brief description of the page"}),keywords:t("Keywords",{"ui:group":"meta","ui:group:title":"Meta tags",description:"Keywords related to the page. Used by search engines","ui:multiline":!0,default:"","ui:placeholder":"keyword1, keyword2, keyword3"}),ogImage:e.Optional(u({title:"Social share image",description:"Image shown when this page is shared on social media","ui:group":"meta","ai:hidden":!0,"ui:no-object-options":!0,"ui:no-alt-text":!0,"ui:show-img-search":!1,"ui:no-dynamic":!0,"ui:placeholder":"https://example.com/image.jpg"})),robotsIndexing:e.Optional(a("Allow search engines to index this page",!0,{description:"Disabling this will prevent search engines from indexing this page","ai:hidden":!0,"ui:group":"meta"})),language:e.Optional(s(["ar","zh","cs","nl","en","fr","de","he","hi","it","ja","ko","fa","pl","pt","ru","es","tr","vi"],{"ai:hidden":!0,"ui:group":"meta",title:"Language",default:"en",description:"Overrides the site language for this page. Leave blank to use the site default language.",enumNames:["Arabic","Chinese","Czech","Dutch","English","French","German","Hebrew","Hindi","Italian","Japanese","Korean","Persian","Polish","Portuguese","Russian","Spanish","Turkish","Vietnamese"]})),additionalTags:e.Optional(e.Object({headTags:e.Optional(e.String({title:"Head script tags",description:"Add custom tags to the <head> of your site. Useful for analytics tags, custom scripts, etc.","ai:instructions":"Don't include meta tags here, they are automatically generated.","ui:multiline":!0,"ui:textarea-class":"h-40 !font-mono","ui:placeholder":"<script src='https://example.com/script.js'></script>","ui:premium":!0,"ui:textarea-font-size":"1","ui:no-dynamic":!0})),bodyTags:e.Optional(e.String({title:"Body script tags",description:"Add custom tags to the <body> of your site. Useful for analytics tags, custom scripts, etc.","ui:multiline":!0,"ui:premium":!0,"ui:textarea-class":"h-40 !font-mono","ui:textarea-font-size":"1","ui:placeholder":"<script src='https://example.com/script.js'></script>","ui:no-dynamic":!0}))},{"ui:group":"meta"})),noNavbar:e.Optional(a("Hide navbar",!1,{"ui:group":"layout"})),noFooter:e.Optional(a("Hide footer",!1,{"ui:group":"layout"})),lastUpdated:e.Optional(m("Last updated",{"ui:hidden":!0,"ai:hidden":!0}))},{"ui:groups":{meta:"SEO & Meta tags",layout:"Layout"}});function k(){return i(e.Array(p(),{examples:[{queryId:"get-latest-posts",alias:"latestPosts"},{queryId:"get-user-profile",alias:"userProfile",params:[{field:"userId",op:"eq",value:":slug"}]}]}))}var f=e.Object({language:s(["ar","zh","cs","nl","en","fr","de","he","hi","it","ja","ko","fa","pl","pt","ru","es","tr","vi"],{title:"Site language",default:"en",enumNames:["Arabic","Chinese","Czech","Dutch","English","French","German","Hebrew","Hindi","Italian","Japanese","Korean","Persian","Polish","Portuguese","Russian","Spanish","Turkish","Vietnamese"],"ai:instructions":"Choose a value based on the site description. If the site is in multiple languages, use 'en'."}),backgroundImage:e.Optional(o()),colorPreset:e.Optional(n({examples:[{color:"base-100"},{color:"primary-500"},{color:"secondary-400"},{color:"neutral-400"},{color:"accent-200-gradient",gradientDirection:"bg-gradient-to-r"},{color:"neutral-800-gradient",gradientDirection:"bg-gradient-to-t"}]})),queries:e.Optional(e.Array(l,{title:"Site Queries","ui:field":"site-queries",description:"List of all queries available in this site. These can be used in any page.","ai:instructions":"This is where queries are first defined. They are then referenced in pages attributes (in the 'queries' field) to use them."})),navbar:e.Optional(e.Composite([d.props],{title:"Navbar","ui:group":"navbar"})),footer:e.Optional(e.Composite([g.props],{title:"Footer","ui:group":"footer"})),ogImage:e.Optional(u({title:"Social share image",description:"Image shown when this site is shared on social media","ai:hidden":!0,"ui:group":"meta","ui:no-object-options":!0,"ui:no-alt-text":!0,"ui:show-img-search":!1,"ui:no-dynamic":!0})),robotsIndexing:e.Optional(a("Allow search engines to index this site",!0,{description:"Disabling this will prevent search engines from indexing this site entirely","ai:hidden":!0,"ui:group":"meta"})),headTags:e.Optional(e.String({title:"Head script tags",description:"Add custom tags to the <head> of your site. Useful for analytics tags, custom scripts, etc.","ai:hidden":!0,"ui:multiline":!0,"ui:textarea-class":"h-40 !font-mono","ui:placeholder":"<script src='https://example.com/script.js'></script>","ui:premium":!0,"ui:textarea-font-size":"1","ui:group":"external","ui:no-dynamic":!0})),bodyTags:e.Optional(e.String({title:"Body script tags",description:"Add custom tags to the <body> of your site. Useful for analytics tags, custom scripts, etc.","ai:hidden":!0,"ui:multiline":!0,"ui:premium":!0,"ui:textarea-class":"h-40 !font-mono","ui:textarea-font-size":"1","ui:placeholder":"<script src='https://example.com/script.js'></script>","ui:group":"external","ui:no-dynamic":!0}))},{"ui:groups":{meta:"SEO & Meta tags",layout:"Layout",navbar:"Navbar",footer:"Footer",external:"External scripts"}});function M(){return i(e.Omit(f,["queries"]))}function D(){return i(e.Omit(h,["queries"]))}function z(){return i(e.Array(l))}function F(r={}){return{...c(h),...r}}function R(r={}){return{...c(f),...r}}export{h as a,k as b,f as c,M as d,D as e,z as f,F as g,R as h};
4
- //# sourceMappingURL=chunk-AI4GHU7R.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/shared/attributes.ts"],"sourcesContent":["import { Type, type Static } from \"@sinclair/typebox\";\nimport type { JSONSchemaType } from \"ajv\";\nimport { getSchemaDefaults } from \"../shared/utils/schema\";\nimport { manifest as navbarManifest } from \"./bricks/manifests/navbar.manifest\";\nimport { manifest as footerManifest } from \"./bricks/manifests/footer.manifest\";\nimport { string } from \"./bricks/props/string\";\nimport { boolean } from \"./bricks/props/boolean\";\nimport { datetime } from \"./bricks/props/date\";\nimport { imageRef } from \"./bricks/props/image\";\nimport { colorPresetRef } from \"./bricks/props/color-preset\";\nimport { queryUseRef, type QueryUseSettings } from \"./bricks/props/dynamic\";\nimport { querySchema } from \"./datasources/types\";\nimport { StringEnum } from \"./utils/string-enum\";\nimport { backgroundRef } from \"./bricks/props/background\";\nimport { toLLMSchema } from \"./utils/llm\";\n\nexport type { JSONSchemaType };\n\n// Default attributes\nexport const pageAttributesSchema = Type.Object(\n {\n backgroundImage: Type.Optional(backgroundRef()),\n colorPreset: Type.Optional(\n colorPresetRef({\n examples: [\n { color: \"base-100\" },\n { color: \"primary-500\" },\n { color: \"accent-100\", gradientDirection: \"bg-gradient-to-r\" },\n ],\n }),\n ),\n tags: Type.Optional(\n Type.Array(string(\"Tag\"), {\n title: \"Tags\",\n description:\n \"Use tags to organize, group and filter pages in navigation elements and in the dashboard. By default, the navbar element display pages having the 'navbar' tag, while the sidebar displays the pages with the tag 'sidebar'.\",\n \"ui:field\": \"tags\",\n examples: [[\"navbar\", \"navbar\"], [\"navbar\", \"sidebar\"], [\"sidebar\"]],\n }),\n ),\n path: string(\"URL path\", {\n default: \"/\",\n description: \"The URL path of the page. Use placeholders like :id or :slug for dynamic paths.\",\n \"ui:field\": \"path\",\n pattern: \"^/[a-z0-9-:/]*$\",\n examples: [\"/\", \"/about\", \"/products/:id\"],\n }),\n queries: Type.Optional(\n Type.Array(queryUseRef(), {\n title: \"Page Queries\",\n description:\n \"List of queries to use in this page. All listed queries will be executed when the page loads.\",\n \"ai:instructions\": \"Reference Query IDs to use at the page level.\",\n \"ui:field\": \"page-queries\",\n maxItems: 5,\n }),\n ),\n title: string(\"Title\", {\n default: \"Untitled\",\n \"ui:group\": \"meta\",\n \"ui:group:title\": \"Meta tags\",\n description: \"The title of the page. Appears in the browser tab and search results\",\n \"ui:placeholder\": \"Page title\",\n }),\n description: string(\"Description\", {\n \"ui:widget\": \"textarea\",\n \"ui:group\": \"meta\",\n \"ui:group:title\": \"Meta tags\",\n description: \"A short description of the page. Used by search engines\",\n \"ui:multiline\": true,\n \"ui:textarea-class\": \"h-24\",\n default: \"\",\n \"ui:placeholder\": \"A brief description of the page\",\n }),\n keywords: string(\"Keywords\", {\n \"ui:group\": \"meta\",\n \"ui:group:title\": \"Meta tags\",\n description: \"Keywords related to the page. Used by search engines\",\n \"ui:multiline\": true,\n default: \"\",\n \"ui:placeholder\": \"keyword1, keyword2, keyword3\",\n }),\n\n ogImage: Type.Optional(\n imageRef({\n title: \"Social share image\",\n description: \"Image shown when this page is shared on social media\",\n \"ui:group\": \"meta\",\n \"ai:hidden\": true,\n \"ui:no-object-options\": true,\n \"ui:no-alt-text\": true,\n \"ui:show-img-search\": false,\n \"ui:no-dynamic\": true,\n \"ui:placeholder\": \"https://example.com/image.jpg\",\n }),\n ),\n robotsIndexing: Type.Optional(\n boolean(\"Allow search engines to index this page\", true, {\n description: \"Disabling this will prevent search engines from indexing this page\",\n \"ai:hidden\": true,\n \"ui:group\": \"meta\",\n }),\n ),\n language: Type.Optional(\n StringEnum(\n [\n \"ar\",\n \"zh\",\n \"cs\",\n \"nl\",\n \"en\",\n \"fr\",\n \"de\",\n \"he\",\n \"hi\",\n \"it\",\n \"ja\",\n \"ko\",\n \"fa\",\n \"pl\",\n \"pt\",\n \"ru\",\n \"es\",\n \"tr\",\n \"vi\",\n ],\n {\n \"ai:hidden\": true,\n \"ui:group\": \"meta\",\n title: \"Language\",\n default: \"en\",\n description:\n \"Overrides the site language for this page. Leave blank to use the site default language.\",\n enumNames: [\n \"Arabic\",\n \"Chinese\",\n \"Czech\",\n \"Dutch\",\n \"English\",\n \"French\",\n \"German\",\n \"Hebrew\",\n \"Hindi\",\n \"Italian\",\n \"Japanese\",\n \"Korean\",\n \"Persian\",\n \"Polish\",\n \"Portuguese\",\n \"Russian\",\n \"Spanish\",\n \"Turkish\",\n \"Vietnamese\",\n ],\n },\n ),\n ),\n additionalTags: Type.Optional(\n Type.Object(\n {\n headTags: Type.Optional(\n Type.String({\n title: \"Head script tags\",\n description:\n \"Add custom tags to the <head> of your site. Useful for analytics tags, custom scripts, etc.\",\n \"ai:instructions\": \"Don't include meta tags here, they are automatically generated.\",\n \"ui:multiline\": true,\n \"ui:textarea-class\": \"h-40 !font-mono\",\n \"ui:placeholder\": \"<script src='https://example.com/script.js'></script>\",\n \"ui:premium\": true,\n \"ui:textarea-font-size\": \"1\",\n \"ui:no-dynamic\": true,\n }),\n ),\n bodyTags: Type.Optional(\n Type.String({\n title: \"Body script tags\",\n description:\n \"Add custom tags to the <body> of your site. Useful for analytics tags, custom scripts, etc.\",\n \"ui:multiline\": true,\n \"ui:premium\": true,\n \"ui:textarea-class\": \"h-40 !font-mono\",\n \"ui:textarea-font-size\": \"1\",\n \"ui:placeholder\": \"<script src='https://example.com/script.js'></script>\",\n \"ui:no-dynamic\": true,\n }),\n ),\n },\n { \"ui:group\": \"meta\" },\n ),\n ),\n\n noNavbar: Type.Optional(boolean(\"Hide navbar\", false, { \"ui:group\": \"layout\" })),\n noFooter: Type.Optional(boolean(\"Hide footer\", false, { \"ui:group\": \"layout\" })),\n lastUpdated: Type.Optional(\n datetime(\"Last updated\", {\n \"ui:hidden\": true,\n \"ai:hidden\": true,\n }),\n ),\n },\n {\n \"ui:groups\": {\n meta: \"SEO & Meta tags\",\n layout: \"Layout\",\n },\n },\n);\n\nexport function getPageQueriesSchemaForLLM() {\n return toLLMSchema(\n Type.Array(queryUseRef(), {\n examples: [\n { queryId: \"get-latest-posts\", alias: \"latestPosts\" },\n {\n queryId: \"get-user-profile\",\n alias: \"userProfile\",\n params: [{ field: \"userId\", op: \"eq\", value: \":slug\" }],\n },\n ] satisfies QueryUseSettings[],\n }),\n );\n}\n\nexport const siteAttributesSchema = Type.Object(\n {\n language: StringEnum(\n [\n \"ar\",\n \"zh\",\n \"cs\",\n \"nl\",\n \"en\",\n \"fr\",\n \"de\",\n \"he\",\n \"hi\",\n \"it\",\n \"ja\",\n \"ko\",\n \"fa\",\n \"pl\",\n \"pt\",\n \"ru\",\n \"es\",\n \"tr\",\n \"vi\",\n ],\n {\n title: \"Site language\",\n default: \"en\",\n enumNames: [\n \"Arabic\",\n \"Chinese\",\n \"Czech\",\n \"Dutch\",\n \"English\",\n \"French\",\n \"German\",\n \"Hebrew\",\n \"Hindi\",\n \"Italian\",\n \"Japanese\",\n \"Korean\",\n \"Persian\",\n \"Polish\",\n \"Portuguese\",\n \"Russian\",\n \"Spanish\",\n \"Turkish\",\n \"Vietnamese\",\n ],\n \"ai:instructions\":\n \"Choose a value based on the site description. If the site is in multiple languages, use 'en'.\",\n },\n ),\n backgroundImage: Type.Optional(backgroundRef()),\n colorPreset: Type.Optional(\n colorPresetRef({\n examples: [\n { color: \"base-100\" },\n { color: \"primary-500\" },\n { color: \"secondary-400\" },\n { color: \"neutral-400\" },\n { color: \"accent-200-gradient\", gradientDirection: \"bg-gradient-to-r\" },\n { color: \"neutral-800-gradient\", gradientDirection: \"bg-gradient-to-t\" },\n ],\n }),\n ),\n queries: Type.Optional(\n Type.Array(querySchema, {\n title: \"Site Queries\",\n \"ui:field\": \"site-queries\",\n description: \"List of all queries available in this site. These can be used in any page.\",\n \"ai:instructions\":\n \"This is where queries are first defined. They are then referenced in pages attributes (in the 'queries' field) to use them.\",\n }),\n ),\n navbar: Type.Optional(\n Type.Composite([navbarManifest.props], {\n title: \"Navbar\",\n \"ui:group\": \"navbar\",\n }),\n ),\n footer: Type.Optional(\n Type.Composite([footerManifest.props], {\n title: \"Footer\",\n \"ui:group\": \"footer\",\n // \"ui:hidden\": true, // Hidden in attributes panel. Users will have to click the brick to configure it, even if the configuration applies globally, so they have the same editing experience\n }),\n ),\n ogImage: Type.Optional(\n imageRef({\n title: \"Social share image\",\n description: \"Image shown when this site is shared on social media\",\n \"ai:hidden\": true,\n \"ui:group\": \"meta\",\n \"ui:no-object-options\": true,\n \"ui:no-alt-text\": true,\n \"ui:show-img-search\": false,\n \"ui:no-dynamic\": true,\n }),\n ),\n robotsIndexing: Type.Optional(\n boolean(\"Allow search engines to index this site\", true, {\n description: \"Disabling this will prevent search engines from indexing this site entirely\",\n \"ai:hidden\": true,\n \"ui:group\": \"meta\",\n }),\n ),\n headTags: Type.Optional(\n Type.String({\n title: \"Head script tags\",\n description:\n \"Add custom tags to the <head> of your site. Useful for analytics tags, custom scripts, etc.\",\n \"ai:hidden\": true,\n \"ui:multiline\": true,\n \"ui:textarea-class\": \"h-40 !font-mono\",\n \"ui:placeholder\": \"<script src='https://example.com/script.js'></script>\",\n \"ui:premium\": true,\n \"ui:textarea-font-size\": \"1\",\n \"ui:group\": \"external\",\n \"ui:no-dynamic\": true,\n }),\n ),\n bodyTags: Type.Optional(\n Type.String({\n title: \"Body script tags\",\n description:\n \"Add custom tags to the <body> of your site. Useful for analytics tags, custom scripts, etc.\",\n \"ai:hidden\": true,\n \"ui:multiline\": true,\n \"ui:premium\": true,\n \"ui:textarea-class\": \"h-40 !font-mono\",\n \"ui:textarea-font-size\": \"1\",\n \"ui:placeholder\": \"<script src='https://example.com/script.js'></script>\",\n \"ui:group\": \"external\",\n \"ui:no-dynamic\": true,\n }),\n ),\n },\n {\n \"ui:groups\": {\n meta: \"SEO & Meta tags\",\n layout: \"Layout\",\n navbar: \"Navbar\",\n footer: \"Footer\",\n external: \"External scripts\",\n },\n },\n);\n\nexport function getSiteAttributeschemaForLLM() {\n return toLLMSchema(Type.Omit(siteAttributesSchema, [\"queries\"]));\n}\n\nexport function getPageAttributeschemaForLLM() {\n return toLLMSchema(Type.Omit(pageAttributesSchema, [\"queries\"]));\n}\n\nexport function getSiteQueriesSchemaForLLM() {\n return toLLMSchema(Type.Array(querySchema));\n}\n\nexport type PageAttributes = Static<typeof pageAttributesSchema>;\nexport type SiteAttributes = Static<typeof siteAttributesSchema>;\n\nexport function resolvePageAttributes(data: Partial<PageAttributes> = {}) {\n const defaultAttrValues = getSchemaDefaults(pageAttributesSchema);\n return { ...defaultAttrValues, ...data } as PageAttributes;\n}\n\nexport function resolveSiteAttributes(data: Partial<SiteAttributes> = {}) {\n const defaultAttrValues = getSchemaDefaults(siteAttributesSchema);\n return { ...defaultAttrValues, ...data } as SiteAttributes;\n}\n"],"mappings":";;icAAA,OAAS,QAAAA,MAAyB,oBAmB3B,IAAMC,EAAuBC,EAAK,OACvC,CACE,gBAAiBA,EAAK,SAASC,EAAc,CAAC,EAC9C,YAAaD,EAAK,SAChBE,EAAe,CACb,SAAU,CACR,CAAE,MAAO,UAAW,EACpB,CAAE,MAAO,aAAc,EACvB,CAAE,MAAO,aAAc,kBAAmB,kBAAmB,CAC/D,CACF,CAAC,CACH,EACA,KAAMF,EAAK,SACTA,EAAK,MAAMG,EAAO,KAAK,EAAG,CACxB,MAAO,OACP,YACE,+NACF,WAAY,OACZ,SAAU,CAAC,CAAC,SAAU,QAAQ,EAAG,CAAC,SAAU,SAAS,EAAG,CAAC,SAAS,CAAC,CACrE,CAAC,CACH,EACA,KAAMA,EAAO,WAAY,CACvB,QAAS,IACT,YAAa,kFACb,WAAY,OACZ,QAAS,kBACT,SAAU,CAAC,IAAK,SAAU,eAAe,CAC3C,CAAC,EACD,QAASH,EAAK,SACZA,EAAK,MAAMI,EAAY,EAAG,CACxB,MAAO,eACP,YACE,gGACF,kBAAmB,gDACnB,WAAY,eACZ,SAAU,CACZ,CAAC,CACH,EACA,MAAOD,EAAO,QAAS,CACrB,QAAS,WACT,WAAY,OACZ,iBAAkB,YAClB,YAAa,uEACb,iBAAkB,YACpB,CAAC,EACD,YAAaA,EAAO,cAAe,CACjC,YAAa,WACb,WAAY,OACZ,iBAAkB,YAClB,YAAa,0DACb,eAAgB,GAChB,oBAAqB,OACrB,QAAS,GACT,iBAAkB,iCACpB,CAAC,EACD,SAAUA,EAAO,WAAY,CAC3B,WAAY,OACZ,iBAAkB,YAClB,YAAa,uDACb,eAAgB,GAChB,QAAS,GACT,iBAAkB,8BACpB,CAAC,EAED,QAASH,EAAK,SACZK,EAAS,CACP,MAAO,qBACP,YAAa,uDACb,WAAY,OACZ,YAAa,GACb,uBAAwB,GACxB,iBAAkB,GAClB,qBAAsB,GACtB,gBAAiB,GACjB,iBAAkB,+BACpB,CAAC,CACH,EACA,eAAgBL,EAAK,SACnBM,EAAQ,0CAA2C,GAAM,CACvD,YAAa,qEACb,YAAa,GACb,WAAY,MACd,CAAC,CACH,EACA,SAAUN,EAAK,SACbO,EACE,CACE,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACF,EACA,CACE,YAAa,GACb,WAAY,OACZ,MAAO,WACP,QAAS,KACT,YACE,2FACF,UAAW,CACT,SACA,UACA,QACA,QACA,UACA,SACA,SACA,SACA,QACA,UACA,WACA,SACA,UACA,SACA,aACA,UACA,UACA,UACA,YACF,CACF,CACF,CACF,EACA,eAAgBP,EAAK,SACnBA,EAAK,OACH,CACE,SAAUA,EAAK,SACbA,EAAK,OAAO,CACV,MAAO,mBACP,YACE,8FACF,kBAAmB,kEACnB,eAAgB,GAChB,oBAAqB,kBACrB,iBAAkB,wDAClB,aAAc,GACd,wBAAyB,IACzB,gBAAiB,EACnB,CAAC,CACH,EACA,SAAUA,EAAK,SACbA,EAAK,OAAO,CACV,MAAO,mBACP,YACE,8FACF,eAAgB,GAChB,aAAc,GACd,oBAAqB,kBACrB,wBAAyB,IACzB,iBAAkB,wDAClB,gBAAiB,EACnB,CAAC,CACH,CACF,EACA,CAAE,WAAY,MAAO,CACvB,CACF,EAEA,SAAUA,EAAK,SAASM,EAAQ,cAAe,GAAO,CAAE,WAAY,QAAS,CAAC,CAAC,EAC/E,SAAUN,EAAK,SAASM,EAAQ,cAAe,GAAO,CAAE,WAAY,QAAS,CAAC,CAAC,EAC/E,YAAaN,EAAK,SAChBQ,EAAS,eAAgB,CACvB,YAAa,GACb,YAAa,EACf,CAAC,CACH,CACF,EACA,CACE,YAAa,CACX,KAAM,kBACN,OAAQ,QACV,CACF,CACF,EAEO,SAASC,GAA6B,CAC3C,OAAOC,EACLV,EAAK,MAAMI,EAAY,EAAG,CACxB,SAAU,CACR,CAAE,QAAS,mBAAoB,MAAO,aAAc,EACpD,CACE,QAAS,mBACT,MAAO,cACP,OAAQ,CAAC,CAAE,MAAO,SAAU,GAAI,KAAM,MAAO,OAAQ,CAAC,CACxD,CACF,CACF,CAAC,CACH,CACF,CAEO,IAAMO,EAAuBX,EAAK,OACvC,CACE,SAAUO,EACR,CACE,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACF,EACA,CACE,MAAO,gBACP,QAAS,KACT,UAAW,CACT,SACA,UACA,QACA,QACA,UACA,SACA,SACA,SACA,QACA,UACA,WACA,SACA,UACA,SACA,aACA,UACA,UACA,UACA,YACF,EACA,kBACE,+FACJ,CACF,EACA,gBAAiBP,EAAK,SAASC,EAAc,CAAC,EAC9C,YAAaD,EAAK,SAChBE,EAAe,CACb,SAAU,CACR,CAAE,MAAO,UAAW,EACpB,CAAE,MAAO,aAAc,EACvB,CAAE,MAAO,eAAgB,EACzB,CAAE,MAAO,aAAc,EACvB,CAAE,MAAO,sBAAuB,kBAAmB,kBAAmB,EACtE,CAAE,MAAO,uBAAwB,kBAAmB,kBAAmB,CACzE,CACF,CAAC,CACH,EACA,QAASF,EAAK,SACZA,EAAK,MAAMY,EAAa,CACtB,MAAO,eACP,WAAY,eACZ,YAAa,6EACb,kBACE,6HACJ,CAAC,CACH,EACA,OAAQZ,EAAK,SACXA,EAAK,UAAU,CAACa,EAAe,KAAK,EAAG,CACrC,MAAO,SACP,WAAY,QACd,CAAC,CACH,EACA,OAAQb,EAAK,SACXA,EAAK,UAAU,CAACa,EAAe,KAAK,EAAG,CACrC,MAAO,SACP,WAAY,QAEd,CAAC,CACH,EACA,QAASb,EAAK,SACZK,EAAS,CACP,MAAO,qBACP,YAAa,uDACb,YAAa,GACb,WAAY,OACZ,uBAAwB,GACxB,iBAAkB,GAClB,qBAAsB,GACtB,gBAAiB,EACnB,CAAC,CACH,EACA,eAAgBL,EAAK,SACnBM,EAAQ,0CAA2C,GAAM,CACvD,YAAa,8EACb,YAAa,GACb,WAAY,MACd,CAAC,CACH,EACA,SAAUN,EAAK,SACbA,EAAK,OAAO,CACV,MAAO,mBACP,YACE,8FACF,YAAa,GACb,eAAgB,GAChB,oBAAqB,kBACrB,iBAAkB,wDAClB,aAAc,GACd,wBAAyB,IACzB,WAAY,WACZ,gBAAiB,EACnB,CAAC,CACH,EACA,SAAUA,EAAK,SACbA,EAAK,OAAO,CACV,MAAO,mBACP,YACE,8FACF,YAAa,GACb,eAAgB,GAChB,aAAc,GACd,oBAAqB,kBACrB,wBAAyB,IACzB,iBAAkB,wDAClB,WAAY,WACZ,gBAAiB,EACnB,CAAC,CACH,CACF,EACA,CACE,YAAa,CACX,KAAM,kBACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,SAAU,kBACZ,CACF,CACF,EAEO,SAASc,GAA+B,CAC7C,OAAOJ,EAAYV,EAAK,KAAKW,EAAsB,CAAC,SAAS,CAAC,CAAC,CACjE,CAEO,SAASI,GAA+B,CAC7C,OAAOL,EAAYV,EAAK,KAAKD,EAAsB,CAAC,SAAS,CAAC,CAAC,CACjE,CAEO,SAASiB,GAA6B,CAC3C,OAAON,EAAYV,EAAK,MAAMY,CAAW,CAAC,CAC5C,CAKO,SAASK,EAAsBC,EAAgC,CAAC,EAAG,CAExE,MAAO,CAAE,GADiBC,EAAkBpB,CAAoB,EACjC,GAAGmB,CAAK,CACzC,CAEO,SAASE,EAAsBF,EAAgC,CAAC,EAAG,CAExE,MAAO,CAAE,GADiBC,EAAkBR,CAAoB,EACjC,GAAGO,CAAK,CACzC","names":["Type","pageAttributesSchema","Type","backgroundRef","colorPresetRef","string","queryUseRef","imageRef","boolean","StringEnum","datetime","getPageQueriesSchemaForLLM","toLLMSchema","siteAttributesSchema","querySchema","manifest","getSiteAttributeschemaForLLM","getPageAttributeschemaForLLM","getSiteQueriesSchemaForLLM","resolvePageAttributes","data","getSchemaDefaults","resolveSiteAttributes"]}
@@ -1,4 +0,0 @@
1
- /*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
2
-
3
- import{c as d}from"./chunk-3YVJ2ELD.js";import{a as c}from"./chunk-RJYZ5FAR.js";import{m as a}from"./chunk-AFVJZPLS.js";import{b as n}from"./chunk-GACHLACT.js";import{b as s}from"./chunk-4BTB3MU2.js";import{b as i,d as p}from"./chunk-ZTZJHY4E.js";import{c as l}from"./chunk-CZRCW5EN.js";import{b as t,d as r}from"./chunk-SWLUQVK7.js";import{c as o}from"./chunk-OHNYCXPX.js";import{Type as e}from"@sinclair/typebox";import{RxBox as m}from"react-icons/rx";var k=c({type:"box",category:"container",name:"Box",description:"A container for stacking bricks horizontally or vertically.",aiInstructions:"A box is a container for other bricks. A box cannot contain other boxes as children. A box should contain at least 2 bricks to be useful, otherwise use a simple brick instead.",isContainer:!0,defaultWidth:{desktop:"auto",mobile:"100%"},defaultHeight:{desktop:"auto"},icon:m,props:d({colorPreset:e.Optional(l({title:"Color"})),direction:n({default:"flex-col",title:"Direction",description:"Direction of the box layout"}),justifyContent:e.Optional(t({default:"justify-center"})),alignItems:e.Optional(r({default:"items-stretch"})),gap:e.Optional(o({title:"Gap",default:"1rem",description:"Gap between children bricks.","ai:instructions":"Can be a tailwind gap class like 'gap-1' or 'gap-2', or a custom value like '10px'","ui:placeholder":"Not specified","ui:styleId":"styles:gap"})),padding:e.Optional(o({default:"1rem",description:"Padding inside the box.","ai:instructions":"Use only a single value like '1rem' or '10px'",title:"Padding","ui:placeholder":"Not specified","ui:styleId":"styles:padding"})),wrap:e.Optional(e.Boolean({title:"Wrap",description:"Wrap bricks if they overflow the section.",default:!1,"ui:styleId":"styles:wrap"})),rounding:e.Optional(p({default:"rounded-md"})),border:e.Optional(i()),shadow:e.Optional(s()),loop:e.Optional(a()),$children:e.Array(e.Any(),{"ui:field":"hidden",description:"List of nested bricks",default:[],examples:[[{type:"text",props:{content:"Hello World"}},{type:"image",props:{src:"https://via.placeholder.com/150",alt:"Placeholder Image"}}]]})})}),E=[{description:"A simple box with 2 text bricks aligned vertically",type:"box",props:{direction:"flex-col",gap:"1rem",$children:[{type:"text",props:{$children:[{type:"text",props:{content:"Hello World"}},{type:"text",props:{content:"Hello World"}}]}}]}},{description:"A horizontal box with wrapping enabled - images will wrap to new rows if they overflow",type:"box",props:{direction:"flex-row",gap:"1rem",wrap:!0,$children:[{type:"image",props:{src:"https://via.placeholder.com/150",alt:"Placeholder Image"}},{type:"image",props:{src:"https://via.placeholder.com/150",alt:"Placeholder Image"}},{type:"image",props:{src:"https://via.placeholder.com/150",alt:"Placeholder Image"}},{type:"image",props:{src:"https://via.placeholder.com/150",alt:"Placeholder Image"}},{type:"image",props:{src:"https://via.placeholder.com/150",alt:"Placeholder Image"}}]}},{description:"A vertical box with 2 text bricks and 1 image",type:"box",props:{direction:"flex-col",gap:"1rem",$children:[{type:"text",props:{content:"Hello World"}},{type:"image",props:{src:"https://via.placeholder.com/150",alt:"Placeholder Image"}},{type:"text",props:{content:"Hello World"}}]}},{description:"Employee directory using allEmployees query with vertical layout",type:"box",props:{direction:"flex-col",gap:"1.5rem",padding:"2rem",colorPreset:{color:"neutral-100"},rounding:"rounded-lg",loop:{over:"allEmployees"},$children:[{type:"text",props:{content:"<h3>{{allEmployees.name}}</h3><p><strong>{{allEmployees.position}}</strong></p><p>{{allEmployees.department}} \u2022 {{allEmployees.email}}</p>"}},{type:"image",props:{src:"{{allEmployees.photo}}",alt:"Photo of {{allEmployees.name}}"}}]}},{description:"Blog posts grid using blogPosts query with horizontal cards",type:"box",props:{direction:"flex-row",gap:"2rem",padding:"1rem",justifyContent:"justify-start",alignItems:"items-stretch",loop:{over:"blogPosts"},$children:[{type:"image",props:{src:"{{blogPosts.featuredImage}}",alt:"{{blogPosts.title}}"}},{type:"text",props:{content:"<h4>{{blogPosts.title}}</h4><p>{{blogPosts.excerpt}}</p><p><em>By {{blogPosts.author}} \u2022 {{blogPosts.publishDate}}</em></p>"}}]}},{description:"Featured products showcase using featuredProducts query",type:"box",props:{direction:"flex-col",gap:"1rem",padding:"1.5rem",colorPreset:{color:"primary-50"},border:{width:"border",color:"border-primary-200"},rounding:"rounded-xl",shadow:"shadow-md",loop:{over:"featuredProducts"},$children:[{type:"image",props:{src:"{{featuredProducts.image}}",alt:"{{featuredProducts.name}}"}},{type:"text",props:{content:"<h3>{{featuredProducts.name}}</h3><p>{{featuredProducts.description}}</p><p><strong>${{featuredProducts.price}}</strong></p>"}},{type:"button",props:{text:"Add to Cart",link:"/cart/add/{{featuredProducts.id}}"}}]}},{description:"Team members horizontal layout with wrapping - members will wrap to multiple rows on smaller screens",type:"box",props:{direction:"flex-row",gap:"2rem",padding:"2rem",wrap:!0,justifyContent:"justify-center",alignItems:"items-center",colorPreset:{color:"secondary-100"},loop:{over:"teamMembers"},$children:[{type:"image",props:{src:"{{teamMembers.avatar}}",alt:"{{teamMembers.fullName}}"}},{type:"text",props:{content:"<h4>{{teamMembers.fullName}}</h4><p>{{teamMembers.role}}</p><p>{{teamMembers.bio}}</p>"}}]}},{description:"Event listings using upcomingEvents query with accent styling",type:"box",props:{direction:"flex-col",gap:"1.25rem",padding:"2.5rem",colorPreset:{color:"accent-100"},border:{width:"border-2",color:"border-accent-300"},rounding:"rounded-lg",loop:{over:"upcomingEvents"},$children:[{type:"text",props:{content:"<h3>{{upcomingEvents.title}}</h3><p><strong>{{upcomingEvents.date}} at {{upcomingEvents.time}}</strong></p><p>{{upcomingEvents.venue}} \u2022 {{upcomingEvents.city}}</p><p>{{upcomingEvents.description}}</p>"}},{type:"button",props:{text:"Register Now",link:"/events/{{upcomingEvents.slug}}/register"}}]}},{description:"Testimonials carousel using customerTestimonials query",type:"box",props:{direction:"flex-col",gap:"1rem",padding:"3rem",justifyContent:"justify-center",alignItems:"items-center",colorPreset:{color:"neutral-50"},shadow:"shadow-lg",rounding:"rounded-2xl",loop:{over:"customerTestimonials"},$children:[{type:"text",props:{content:'<blockquote>"{{customerTestimonials.quote}}"</blockquote><p><strong>{{customerTestimonials.customerName}}</strong></p><p>{{customerTestimonials.company}} \u2022 {{customerTestimonials.position}}</p>'}},{type:"icon",props:{icon:"mdi:star",size:"1.5rem",color:"#fbbf24"}}]}},{description:"Portfolio projects using portfolioProjects query with horizontal layout",type:"box",props:{direction:"flex-row",gap:"1.5rem",padding:"1rem",alignItems:"items-start",justifyContent:"justify-start",loop:{over:"portfolioProjects"},$children:[{type:"image",props:{src:"{{portfolioProjects.thumbnail}}",alt:"{{portfolioProjects.projectName}}"}},{type:"text",props:{content:"<h4>{{portfolioProjects.projectName}}</h4><p>{{portfolioProjects.client}}</p><p>{{portfolioProjects.category}} \u2022 {{portfolioProjects.year}}</p><p>{{portfolioProjects.shortDescription}}</p>"}},{type:"button",props:{text:"View Project",link:"/portfolio/{{portfolioProjects.slug}}"}}]}},{description:"News articles using latestNews query with vertical stacking",type:"box",props:{direction:"flex-col",gap:"2rem",padding:"2rem",colorPreset:{color:"primary-100"},border:{width:"border",color:"border-primary-300"},loop:{over:"latestNews"},$children:[{type:"text",props:{content:"<h3>{{latestNews.headline}}</h3><p><strong>{{latestNews.category}}</strong> \u2022 {{latestNews.publishedDate}}</p><p>{{latestNews.summary}}</p>"}},{type:"text",props:{content:"<a href='/news/{{latestNews.slug}}'>Read full article \u2192</a>"}}]}},{description:"Service offerings using companyServices query with centered layout",type:"box",props:{direction:"flex-col",gap:"1rem",padding:"2rem",justifyContent:"justify-center",alignItems:"items-center",colorPreset:{color:"secondary-200"},rounding:"rounded-xl",shadow:"shadow-md",loop:{over:"companyServices"},$children:[{type:"icon",props:{icon:"{{companyServices.iconName}}",size:"2rem",color:"{{companyServices.iconColor}}"}},{type:"text",props:{content:"<h4>{{companyServices.serviceName}}</h4><p>{{companyServices.description}}</p><p><strong>Starting at ${{companyServices.price}}</strong></p>"}},{type:"button",props:{text:"Learn More",link:"/services/{{companyServices.serviceSlug}}"}}]}}];export{k as a,E as b};
4
- //# sourceMappingURL=chunk-B3EATRFX.js.map
@@ -1,4 +0,0 @@
1
- /*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
2
-
3
- import{a as n}from"./chunk-KFM6KXSE.js";import{a as o}from"./chunk-JMN3HTZU.js";import{Type as t}from"@sinclair/typebox";function g(e="Image",i={}){let{defaultImageUrl:a,showImgSearch:c=!1,noObjectOptions:r=!1}=i;return t.Object({src:t.String({default:a,title:e,description:"Image URL. Can be a link to an image or a data URI"}),alt:t.Optional(t.String({title:"Alternate Text",description:"Alternative text for the image. Recommended for screen readers and SEO","ui:placeholder":"Your image description"})),fit:t.Optional(o(["object-none","object-contain","object-cover","object-fill","object-scale-down"],{enumNames:["None","Contain","Cover","Fill","Scale down"],title:"Fit",description:"How the image should be resized to fit its container",default:"object-cover","ui:field":"enum","ui:styleId":"styles:objectFit"})),position:t.Optional(o(["object-top","object-center","object-bottom","object-left","object-right","object-top-left","object-top-right","object-bottom-left","object-bottom-right"],{enumNames:["Top","Center","Bottom","Left","Right","Top left","Top right","Bottom left","Bottom right"],"ui:styleId":"styles:objectPosition",title:"Position",description:"The position of the image inside its container","ui:field":"enum"}))},{title:e,"ui:field":"image","ui:accept":"image/*","ui:show-img-search":c,"ui:no-object-options":r,default:{alt:"Image",fit:"object-cover",position:"object-center"},metadata:{category:"content"},...i})}function b(e={}){return n("assets:image",e)}export{g as a,b};
4
- //# sourceMappingURL=chunk-CCI4C3TM.js.map
@@ -1,7 +0,0 @@
1
- /*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
2
-
3
- import{a as l}from"./chunk-KYY3PHP7.js";import{a as e,c as p}from"./chunk-3YVJ2ELD.js";import{a as s}from"./chunk-RJYZ5FAR.js";import{a,d as n}from"./chunk-A3GF4PYW.js";import{b as r}from"./chunk-4BTB3MU2.js";import{d as t}from"./chunk-DHI3IBOD.js";import{b as o}from"./chunk-ZTZJHY4E.js";import{VscLayoutSidebarLeftOff as d}from"react-icons/vsc";import{Type as i}from"@sinclair/typebox";var O=s({type:"sidebar",category:"layout",name:"Sidebar",description:"A sidebar element",inlineDragDisabled:!0,isGlobalBrick:!0,duplicatable:!1,resizable:!1,movable:!1,aiInstructions:`
4
- This brick should be used on most sites/pages for navigation. By default, it will display links
5
- to the main pages of the site. You can customize the links by using the 'navigation.navItems' prop.
6
- `.trim(),icon:d,props:p({container:i.Optional(e({title:"Main element",children:{backgroundColor:i.Optional(t()),border:i.Optional(o()),shadow:i.Optional(r()),fixedPositioned:i.Optional(l())},metadata:{"ui:responsive":!0}})),navigation:i.Optional(e({title:"Links",children:{navItems:i.Optional(i.Array(i.Object({urlOrPageId:n(),label:i.Optional(a("Label"))}),{title:"Navigation items",default:[]}))}}))})}),v=[{description:"Standard sidebar with navigation links base on site pages",type:"sidebar",props:{}},{description:"Sidebar with specified navigation links",type:"sidebar",props:{container:{backgroundColor:"#f0f0f0"},navigation:{navItems:[{urlOrPageId:"https://google.com",label:"Google"},{urlOrPageId:"https://bing.com",label:"Bing"}]}}}];export{O as a,v as b};
7
- //# sourceMappingURL=chunk-CFF6Q7O7.js.map
@@ -1,4 +0,0 @@
1
- /*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
2
-
3
- import{a as r}from"./chunk-KFM6KXSE.js";import{a}from"./chunk-JMN3HTZU.js";import{Type as n}from"@sinclair/typebox";var t={"primary-50":{className:"bg-primary-50 text-primary-50-content",label:"Primary 50"},"primary-100":{className:"bg-primary-100 text-primary-100-content",label:"Primary 100"},"primary-200":{className:"bg-primary-200 text-primary-200-content",label:"Primary 200"},"primary-300":{className:"bg-primary-300 text-primary-300-content",label:"Primary 300"},"primary-400":{className:"bg-primary-400 text-primary-400-content",label:"Primary 400"},"primary-500":{className:"bg-primary-500 text-primary-500-content",label:"Primary 500"},"primary-600":{className:"bg-primary-600 text-primary-600-content",label:"Primary 600"},"primary-700":{className:"bg-primary-700 text-primary-700-content",label:"Primary 700"},"primary-800":{className:"bg-primary-800 text-primary-800-content",label:"Primary 800"},"primary-900":{className:"bg-primary-900 text-primary-900-content",label:"Primary 900"},"secondary-50":{className:"bg-secondary-50 text-secondary-50-content",label:"Secondary 50"},"secondary-100":{className:"bg-secondary-100 text-secondary-100-content",label:"Secondary 100"},"secondary-200":{className:"bg-secondary-200 text-secondary-200-content",label:"Secondary 200"},"secondary-300":{className:"bg-secondary-300 text-secondary-300-content",label:"Secondary 300"},"secondary-400":{className:"bg-secondary-400 text-secondary-400-content",label:"Secondary 400"},"secondary-500":{className:"bg-secondary-500 text-secondary-500-content",label:"Secondary 500"},"secondary-600":{className:"bg-secondary-600 text-secondary-600-content",label:"Secondary 600"},"secondary-700":{className:"bg-secondary-700 text-secondary-700-content",label:"Secondary 700"},"secondary-800":{className:"bg-secondary-800 text-secondary-800-content",label:"Secondary 800"},"secondary-900":{className:"bg-secondary-900 text-secondary-900-content",label:"Secondary 900"},"accent-50":{className:"bg-accent-50 text-accent-50-content",label:"Accent 50"},"accent-100":{className:"bg-accent-100 text-accent-100-content",label:"Accent 100"},"accent-200":{className:"bg-accent-200 text-accent-200-content",label:"Accent 200"},"accent-300":{className:"bg-accent-300 text-accent-300-content",label:"Accent 300"},"accent-400":{className:"bg-accent-400 text-accent-400-content",label:"Accent 400"},"accent-500":{className:"bg-accent-500 text-accent-500-content",label:"Accent 500"},"accent-600":{className:"bg-accent-600 text-accent-600-content",label:"Accent 600"},"accent-700":{className:"bg-accent-700 text-accent-700-content",label:"Accent 700"},"accent-800":{className:"bg-accent-800 text-accent-800-content",label:"Accent 800"},"accent-900":{className:"bg-accent-900 text-accent-900-content",label:"Accent 900"},"neutral-50":{className:"bg-neutral-50 text-neutral-50-content",label:"Neutral 50"},"neutral-100":{className:"bg-neutral-100 text-neutral-100-content",label:"Neutral 100"},"neutral-200":{className:"bg-neutral-200 text-neutral-200-content",label:"Neutral 200"},"neutral-300":{className:"bg-neutral-300 text-neutral-300-content",label:"Neutral 300"},"neutral-400":{className:"bg-neutral-400 text-neutral-400-content",label:"Neutral 400"},"neutral-500":{className:"bg-neutral-500 text-neutral-500-content",label:"Neutral 500"},"neutral-600":{className:"bg-neutral-600 text-neutral-600-content",label:"Neutral 600"},"neutral-700":{className:"bg-neutral-700 text-neutral-700-content",label:"Neutral 700"},"neutral-800":{className:"bg-neutral-800 text-neutral-800-content",label:"Neutral 800"},"neutral-900":{className:"bg-neutral-900 text-neutral-900-content",label:"Neutral 900"},"base-100":{className:"bg-base-100 text-base-100-content",label:"Base 100"},"base-200":{className:"bg-base-200 text-base-200-content",label:"Base 200"},"base-300":{className:"bg-base-300 text-base-300-content",label:"Base 300"},"primary-gradient-100":{className:"from-primary-100 to-primary-200 text-primary-100-content",label:"Primary gradient 1"},"primary-gradient-200":{className:"from-primary-200 to-primary-300 text-primary-200-content",label:"Primary gradient 2"},"primary-gradient-300":{className:"from-primary-300 to-primary-400 text-primary-300-content",label:"Primary gradient 3"},"primary-gradient-400":{className:"from-primary-400 to-primary-500 text-primary-400-content",label:"Primary gradient 4"},"primary-gradient-500":{className:"from-primary-500 to-primary-600 text-primary-500-content",label:"Primary gradient 5"},"primary-gradient-600":{className:"from-primary-600 to-primary-700 text-primary-600-content",label:"Primary gradient 6"},"primary-gradient-700":{className:"from-primary-700 to-primary-800 text-primary-700-content",label:"Primary gradient 7"},"primary-gradient-800":{className:"from-primary-800 to-primary-900 text-primary-800-content",label:"Primary gradient 8"},"secondary-gradient-100":{className:"from-secondary-100 to-secondary-200 text-secondary-100-content",label:"Secondary gradient 1"},"secondary-gradient-200":{className:"from-secondary-200 to-secondary-300 text-secondary-200-content",label:"Secondary gradient 2"},"secondary-gradient-300":{className:"from-secondary-300 to-secondary-400 text-secondary-300-content",label:"Secondary gradient 3"},"secondary-gradient-400":{className:"from-secondary-400 to-secondary-500 text-secondary-400-content",label:"Secondary gradient 4"},"secondary-gradient-500":{className:"from-secondary-500 to-secondary-600 text-secondary-500-content",label:"Secondary gradient 5"},"secondary-gradient-600":{className:"from-secondary-600 to-secondary-700 text-secondary-600-content",label:"Secondary gradient 6"},"secondary-gradient-700":{className:"from-secondary-700 to-secondary-800 text-secondary-700-content",label:"Secondary gradient 7"},"secondary-gradient-800":{className:"from-secondary-800 to-secondary-900 text-secondary-800-content",label:"Secondary gradient 8"},"accent-gradient-100":{className:"from-accent-100 to-accent-200 text-accent-100-content",label:"Accent gradient 1"},"accent-gradient-200":{className:"from-accent-200 to-accent-300 text-accent-200-content",label:"Accent gradient 2"},"accent-gradient-300":{className:"from-accent-300 to-accent-400 text-accent-300-content",label:"Accent gradient 3"},"accent-gradient-400":{className:"from-accent-400 to-accent-500 text-accent-400-content",label:"Accent gradient 4"},"accent-gradient-500":{className:"from-accent-500 to-accent-600 text-accent-500-content",label:"Accent gradient 5"},"accent-gradient-600":{className:"from-accent-600 to-accent-700 text-accent-600-content",label:"Accent gradient 6"},"accent-gradient-700":{className:"from-accent-700 to-accent-800 text-accent-700-content",label:"Accent gradient 7"},"accent-gradient-800":{className:"from-accent-800 to-accent-900 text-accent-800-content",label:"Accent gradient 8"},"neutral-gradient-100":{className:"from-neutral-100 to-neutral-200 text-neutral-100-content",label:"Neutral gradient 1"},"neutral-gradient-200":{className:"from-neutral-200 to-neutral-300 text-neutral-200-content",label:"Neutral gradient 2"},"neutral-gradient-300":{className:"from-neutral-300 to-neutral-400 text-neutral-300-content",label:"Neutral gradient 3"},"neutral-gradient-400":{className:"from-neutral-400 to-neutral-500 text-neutral-400-content",label:"Neutral gradient 4"},"neutral-gradient-500":{className:"from-neutral-500 to-neutral-600 text-neutral-500-content",label:"Neutral gradient 5"},"neutral-gradient-600":{className:"from-neutral-600 to-neutral-700 text-neutral-600-content",label:"Neutral gradient 6"},"neutral-gradient-700":{className:"from-neutral-700 to-neutral-800 text-neutral-700-content",label:"Neutral gradient 7"},"neutral-gradient-800":{className:"from-neutral-800 to-neutral-900 text-neutral-800-content",label:"Neutral gradient 8"},"base-gradient-100":{className:"from-base-100 to-base-200 text-base-100-content",label:"Base gradient 1"},"base-gradient-200":{className:"from-base-200 to-base-300 text-base-200-content",label:"Base gradient 2"},none:{className:"",label:"None"}};function d(e={}){return n.Object({color:a(Object.keys(t),{title:"Color preset",description:"Color preset to apply to background and text",enumNames:Object.keys(t).map(c=>t[c].label),"ai:instructions":"Presets are predefined color combinations of background and text colors that can be applied to elements. They include various shades of primary, secondary, accent, and neutral colors, as well as gradients. You can also select 'none' to remove any preset.","ui:styleId":"presets:color","ui:responsive":!0,default:e.default?.color}),gradientDirection:n.Optional(l(e))},{"ui:field":"color-preset",title:"Color preset","ui:presets":t,default:e.default,examples:[{color:"primary-500"},{color:"secondary-500"},{color:"accent-800",gradientDirection:"bg-gradient-to-t"}],"ui:default-gradient-direction":e["ui:default-gradient-direction"]??"bg-gradient-to-br"})}function y(e={}){return r("presets:color",e)}function l(e={}){return a(["bg-gradient-to-t","bg-gradient-to-r","bg-gradient-to-b","bg-gradient-to-l","bg-gradient-to-tl","bg-gradient-to-tr","bg-gradient-to-br","bg-gradient-to-bl"],{title:"Gradient direction",description:"The direction of the gradient. Only applies when color preset is a gradient.",enumNames:["Top","Right","Bottom","Left","Top left","Top right","Bottom right","Bottom left"],default:"bg-gradient-to-br","ui:responsive":"desktop","ui:styleId":"styles:gradientDirection",...e})}export{t as a,d as b,y as c};
4
- //# sourceMappingURL=chunk-CZRCW5EN.js.map
@@ -1,4 +0,0 @@
1
- /*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
2
-
3
- import{UnauthorizedError as e}from"http-errors-enhanced";export{e as a};
4
- //# sourceMappingURL=chunk-DCH4ZKWT.js.map
@@ -1,4 +0,0 @@
1
- /*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
2
-
3
- import{a as r}from"./chunk-KFM6KXSE.js";import{a}from"./chunk-JMN3HTZU.js";import{Type as t}from"@sinclair/typebox";function u(e={}){let{default:o,...n}=e;return t.Object({image:t.String({title:"Image",description:"The background image. Can be a URL or a data URI",format:"image",examples:["https://example.com/image.png"]}),size:t.Optional(a(["auto","cover","contain"],{enumNames:["Auto","Cover","Contain"],default:o?.size??"auto","ai:instructions":"Only use this when the image is set."})),repeat:t.Optional(a(["no-repeat","repeat","repeat-x","repeat-y","space","round"],{enumNames:["No repeat","Repeat","Repeat horizontally","Repeat vertically","Space","Round"],default:o?.repeat??"no-repeat","ai:instructions":"Only use this when the image is set."}))},{"ui:styleId":"styles:background","ui:field":"background",title:"Background image",default:o,...n})}function c(e={}){return r("styles:background",e)}function l(e={}){return t.String({title:"Background color","ai:instructions":"Can be set to transparent, hex/rgb/rgba color, or classes like `bg-<variant>-<shade>`, variants being primary, secondary, accent and neutral, and shades between 100 and 900. Use bg-<variant>-<shade> classes as much as possible.","ui:field":"color","ui:color-type":"background","ui:styleId":"styles:backgroundColor","ui:responsive":"desktop",...e})}function d(e={}){return r("styles:backgroundColor",e)}export{u as a,c as b,l as c,d};
4
- //# sourceMappingURL=chunk-DHI3IBOD.js.map
@@ -1,4 +0,0 @@
1
- /*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
2
-
3
- import{Type as t}from"@sinclair/typebox";var i=t.Array(t.Object({etag:t.String(),id:t.Object({videoId:t.String(),channelId:t.String(),playlistId:t.String()}),snippet:t.Object({publishedAt:t.String(),channelId:t.String(),title:t.String(),description:t.String(),thumbnails:t.Object({default:t.Object({url:t.String(),width:t.Number(),height:t.Number()}),standard:t.Object({url:t.String(),width:t.Number(),height:t.Number()})}),channelTitle:t.String(),liveBroadcastContent:t.String()})}),{title:"Youtube list schema",description:"Schema for a list of Youtube videos"});export{i as a};
4
- //# sourceMappingURL=chunk-DQ7PRWTG.js.map
@@ -1,4 +0,0 @@
1
- /*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
2
-
3
- import{c as p}from"./chunk-3YVJ2ELD.js";import{a as e}from"./chunk-RJYZ5FAR.js";import{CgSpaceBetween as t}from"react-icons/cg";var o=e({type:"spacer",name:"Spacer",category:"container",description:"A flexible element to create space between bricks.",staticClasses:"self-stretch",minWidth:{desktop:50},defaultWidth:{mobile:"auto",desktop:"50px"},minHeight:{mobile:30},icon:t,props:p({})}),n=[{description:"Transparent spacer of 100px wide",type:"spacer",props:{width:"100px"}},{description:"Transparent spacer of 20px wide",type:"spacer",props:{width:"20px"}},{description:"Transparent spacer set in % (percentage)",type:"spacer",props:{width:"20%"}}];export{o as a,n as b};
4
- //# sourceMappingURL=chunk-E6XEI7IK.js.map
@@ -1,4 +0,0 @@
1
- /*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
2
-
3
- import{c as t}from"./chunk-3YVJ2ELD.js";import{a as e}from"./chunk-RJYZ5FAR.js";import{BsCodeSquare as i}from"react-icons/bs";import{Type as r}from"@sinclair/typebox";var p=e({type:"html",name:"Html",category:"widgets",description:"A flexible brick that accepts HTML content. Useful for embeding custom HTML or third-party widgets.",aiInstructions:"Use only this brick type when integrating third party widgets or custom HTML content. Most of the time, you should use other bricks that are more secure and easier to use.",staticClasses:"self-stretch",defaultWidth:{mobile:"auto",desktop:"300px"},icon:i,props:t({html:r.String({title:"HTML Content",description:"The HTML content to render. Use with caution, as it can introduce security risks.",default:"<div>Your HTML content here</div>","ui:placeholder":"<div>Your HTML content here</div>","ui:multiline":!0,metadata:{category:"content"}})})}),n=[{description:"A tally form",type:"html",props:{html:'<iframe data-tally-src="https://tally.so/embed/wQZpd8?alignLeft=1&hideTitle=1&transparentBackground=1&dynamicHeight=1" loading="lazy" width="100%" height="282" frameborder="0" marginheight="0" marginwidth="0" title="test"></iframe>'}},{description:"YouTube video embed",type:"html",props:{html:'<iframe width="560" height="315" src="https://www.youtube.com/embed/dQw4w9WgXcQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>'}},{description:"Google Maps embed",type:"html",props:{html:'<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3024.309059887159!2d-74.00849368459473!3d40.71278097932847!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c25a165bedccab%3A0xa2008c34c27bfb67!2sWall%20St%2C%20New%20York%2C%20NY%2C%20USA!5e0!3m2!1sen!2sus!4v1620000000000" width="100%" height="300" style="border:0;" allowfullscreen="" loading="lazy"></iframe>'}},{description:"Twitter tweet embed",type:"html",props:{html:'<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Just setting up my twttr</p>&mdash; Jack Dorsey (@jack) <a href="https://twitter.com/jack/status/20?ref_src=twsrc%5Etfw">March 21, 2006</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>'}},{description:"CodePen embed for code showcase",type:"html",props:{html:'<iframe height="300" style="width: 100%;" scrolling="no" title="CSS Animation Example" src="https://codepen.io/team/codepen/embed/PNaGbb?height=300&theme-id=light&default-tab=result" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true"></iframe>'}},{description:"Calendly scheduling widget",type:"html",props:{html:'<div class="calendly-inline-widget" data-url="https://calendly.com/your-name/30min" style="min-width:320px;height:630px;"></div><script type="text/javascript" src="https://assets.calendly.com/assets/external/widget.js" async></script>'}},{description:"Custom pricing table with CSS styling",type:"html",props:{html:'<div style="display: flex; gap: 20px; justify-content: center;"><div style="border: 2px solid #e2e8f0; border-radius: 12px; padding: 24px; text-align: center; background: white;"><h3 style="margin: 0 0 16px; color: #1e293b;">Basic</h3><div style="font-size: 32px; font-weight: bold; color: #0ea5e9;">$9</div><p style="color: #64748b; margin: 8px 0 20px;">per month</p><ul style="list-style: none; padding: 0; margin: 0;"><li style="padding: 8px 0;">\u2713 5 Projects</li><li style="padding: 8px 0;">\u2713 10GB Storage</li><li style="padding: 8px 0;">\u2713 Email Support</li></ul></div></div>'}},{description:"Mailchimp newsletter signup form",type:"html",props:{html:'<div id="mc_embed_signup"><form action="https://your-domain.us1.list-manage.com/subscribe/post?u=123456789&amp;id=abcdefghij" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate><div id="mc_embed_signup_scroll"><div class="mc-field-group"><label for="mce-EMAIL">Email Address</label><input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL" style="width: 100%; padding: 10px; margin: 8px 0; border: 1px solid #ccc; border-radius: 4px;"></div><div id="mce-responses" class="clear"><div class="response" id="mce-error-response" style="display:none"></div><div class="response" id="mce-success-response" style="display:none"></div></div><div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_123456789_abcdefghij" tabindex="-1" value=""></div><div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button" style="background: #007cba; color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer;"></div></div></form></div>'}},{description:"Stripe payment button integration",type:"html",props:{html:'<script async src="https://js.stripe.com/v3/buy-button.js"></script><stripe-buy-button buy-button-id="buy_btn_1234567890" publishable-key="pk_test_1234567890"></stripe-buy-button>'}},{description:"Instagram post embed",type:"html",props:{html:'<blockquote class="instagram-media" data-instgrm-captioned data-instgrm-permalink="https://www.instagram.com/p/ABC123/" data-instgrm-version="14" style="background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"></blockquote><script async src="//www.instagram.com/embed.js"></script>'}},{description:"Custom countdown timer widget",type:"html",props:{html:'<div style="text-align: center; padding: 20px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-radius: 12px; color: white;"><h3 style="margin: 0 0 20px; font-size: 24px;">Event Countdown</h3><div id="countdown" style="display: flex; justify-content: center; gap: 20px;"><div style="text-align: center;"><div style="font-size: 32px; font-weight: bold;">10</div><div style="font-size: 14px; opacity: 0.8;">DAYS</div></div><div style="text-align: center;"><div style="font-size: 32px; font-weight: bold;">15</div><div style="font-size: 14px; opacity: 0.8;">HOURS</div></div><div style="text-align: center;"><div style="font-size: 32px; font-weight: bold;">30</div><div style="font-size: 14px; opacity: 0.8;">MINUTES</div></div></div></div>'}},{description:"Interactive feedback widget with rating stars",type:"html",props:{html:'<div style="border: 1px solid #e2e8f0; border-radius: 8px; padding: 24px; background: #f8fafc;"><h4 style="margin: 0 0 16px; color: #1e293b;">How was your experience?</h4><div style="display: flex; gap: 8px; margin: 16px 0;"><span style="font-size: 24px; cursor: pointer; color: #fbbf24;">\u2605</span><span style="font-size: 24px; cursor: pointer; color: #fbbf24;">\u2605</span><span style="font-size: 24px; cursor: pointer; color: #fbbf24;">\u2605</span><span style="font-size: 24px; cursor: pointer; color: #fbbf24;">\u2605</span><span style="font-size: 24px; cursor: pointer; color: #d1d5db;">\u2605</span></div><textarea placeholder="Tell us more about your experience..." style="width: 100%; height: 80px; padding: 12px; border: 1px solid #d1d5db; border-radius: 6px; resize: vertical; font-family: inherit;"></textarea><button style="margin-top: 12px; background: #3b82f6; color: white; padding: 10px 20px; border: none; border-radius: 6px; cursor: pointer;">Submit Feedback</button></div>'}}];export{p as a,n as b};
4
- //# sourceMappingURL=chunk-FLOMNC6J.js.map
@@ -1,7 +0,0 @@
1
- /*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
2
-
3
- import{c as d}from"./chunk-3YVJ2ELD.js";import{a as p}from"./chunk-RJYZ5FAR.js";import{m as l}from"./chunk-AFVJZPLS.js";import{f as a}from"./chunk-5YRC3IT3.js";import{b as i}from"./chunk-4BTB3MU2.js";import{b as r,d as o}from"./chunk-ZTZJHY4E.js";import{c as s}from"./chunk-CZRCW5EN.js";import{d as t}from"./chunk-SWLUQVK7.js";import{c as n}from"./chunk-OHNYCXPX.js";import{RxTextAlignLeft as c}from"react-icons/rx";import{Type as e}from"@sinclair/typebox";var k=p({type:"text",category:"basic",name:"Text",description:"Text with formatting options",aiInstructions:`Text "content" can contain minimal HTML tags like <strong>, <em>, <br> and <a> as well as <h1>, <h2>, <h3>, <h4>, <p> and <span> and lists.
4
- Only 'align' is supported as an inline style, so don't use other inline styles like 'font-size' or 'color' in the content prop.
5
- You may simply omit the "colorPreset" property so that the brick will inherit the default color from its parent container.
6
- `,defaultWidth:{mobile:"100%"},defaultHeight:{desktop:"auto",mobile:"auto"},staticClasses:"prose lg:prose-lg",icon:c,props:d({colorPreset:e.Optional(s({title:"Color"})),content:a({title:"Content"}),verticalAlign:e.Optional(t({default:"items-center",title:"Align"})),padding:e.Optional(n({default:"2rem",description:"Padding inside the text.","ai:instructions":"Use only a single value like '1rem' or '10px'",title:"Padding","ui:responsive":!0,"ui:placeholder":"Not specified","ui:styleId":"styles:padding"})),rounding:e.Optional(o({default:"rounded-md"})),border:e.Optional(r()),shadow:e.Optional(i()),loop:e.Optional(l())})}),A=[{description:"Welcome paragraph with emphasis and padding",type:"text",props:{content:"Welcome to our platform! We're <strong>excited</strong> to have you here. Our mission is to <em>transform</em> the way you work with cutting-edge technology and <a href='/features'>innovative features</a>.",padding:"2rem"}},{description:"Feature list with HTML formatting and smaller padding",type:"text",props:{content:"<h3>Key Features</h3><ul><li><strong>Advanced Analytics</strong> - Real-time data insights</li><li><strong>Cloud Integration</strong> - Seamless connectivity</li><li><strong>24/7 Support</strong> - Always here to help</li></ul>",padding:"1rem"}},{description:"Quote block with text styling but no background",type:"text",props:{content:`<p style='text-align: center'><em>"Innovation distinguishes between a leader and a follower."</em><br><strong>- Steve Jobs</strong></p>`,padding:"3rem"}},{description:"Simple heading with subtle background",type:"text",props:{content:"<h2>About Our Company</h2><p>We've been serving customers since 2010, building trust through quality products and exceptional service.</p>",colorPreset:{color:"primary-100"}}},{description:"Team introduction with formatting, no background color",type:"text",props:{content:"<p style='text-align: center'><strong>Meet Our Team</strong></p><p>Our diverse team of experts brings together decades of experience in technology, design, and business strategy. We're passionate about <em>creating solutions</em> that make a real difference.</p><p><a href='/team'>Learn more about our team</a> and the values that drive us forward.</p>",padding:"2rem"}},{description:"Maintenance notice with neutral background and border",type:"text",props:{content:"<p>Scheduled maintenance will occur on <em>Sunday, March 15th</em> from 2:00 AM to 6:00 AM UTC.</p><p>During this time, some features may be temporarily unavailable. We apologize for any inconvenience.</p>",padding:"1rem",colorPreset:{color:"neutral-700"},border:{width:"border",color:"border-neutral-400"},rounding:"rounded-lg"}},{description:"Minimal text with no padding or background",type:"text",props:{content:"This is some minimal text.",padding:"0rem"}},{description:"Call-to-action text with secondary background and shadow",type:"text",props:{content:"<h3 style='text-align: center'>Ready to Get Started?</h3><p style='text-align: center'>Join thousands of satisfied customers who trust our platform. <strong>Sign up today</strong> and experience the difference!</p><p style='text-align: center'><a href='/signup'>Create Your Free Account</a></p>",colorPreset:{color:"secondary-200"},padding:"2.5rem",rounding:"rounded-xl",shadow:"shadow-md",verticalAlign:"items-center"}},{description:"Technical documentation with accent colors and code-like formatting",type:"text",props:{content:"<h4>API Authentication</h4><p>To authenticate your requests, include your API key in the header:</p><p><strong>Authorization: Bearer YOUR_API_KEY</strong></p><p>All API endpoints require authentication. You can find your API key in the <a href='/dashboard'>dashboard settings</a>.</p>",colorPreset:{color:"accent-100"},padding:"1.5rem",rounding:"rounded-md",border:{width:"border-4",color:"border-accent-500"}}},{description:"Success message with primary background and top alignment",type:"text",props:{content:"<h3>\u2705 Payment Successful!</h3><p>Thank you for your purchase. Your order <strong>#12345</strong> has been confirmed.</p><p>You will receive an email confirmation shortly at your registered email address.</p>",colorPreset:{color:"primary-200"},padding:"2rem",rounding:"rounded-lg",shadow:"shadow-sm",verticalAlign:"items-start"}},{description:"Footer information with neutral dark theme and multiple links",type:"text",props:{content:"<p style='text-align: center'>\xA9 2024 Company Name. All rights reserved.</p><p style='text-align: center'><a href='/privacy'>Privacy Policy</a> | <a href='/terms'>Terms of Service</a> | <a href='/contact'>Contact Us</a></p><p style='text-align: center'><em>Follow us on social media for the latest updates</em></p>",colorPreset:{color:"neutral-800"},padding:"1.5rem",verticalAlign:"items-end"}},{description:"Product description with large padding and rounded corners",type:"text",props:{content:"<h2>Premium Wireless Headphones</h2><p>Experience <strong>crystal-clear audio</strong> with our latest wireless headphones featuring:</p><ul><li>Active noise cancellation</li><li>30-hour battery life</li><li>Premium leather comfort</li><li>Hi-res audio certification</li></ul><p>Perfect for <em>music lovers</em> and <em>professionals</em> alike.</p>",padding:"3rem",rounding:"rounded-2xl",shadow:"shadow-lg",border:{width:"border",color:"border-neutral-300"}}},{description:"Emergency alert with accent background and extra bold formatting",type:"text",props:{content:"<h3 style='text-align: center'>\u26A0\uFE0F URGENT NOTICE</h3><p style='text-align: center'><strong>System maintenance is currently in progress.</strong></p><p style='text-align: center'>Some services may be <em>temporarily unavailable</em>. We expect full restoration by 4:00 PM EST.</p><p style='text-align: center'>For urgent support, please <a href='/emergency-contact'>contact our emergency line</a>.</p>",colorPreset:{color:"accent-400"},padding:"2rem",rounding:"rounded-md",border:{width:"border-2",color:"border-accent-600"},shadow:"shadow-xl",verticalAlign:"items-center"}}];export{k as a,A as b};
7
- //# sourceMappingURL=chunk-G5CJU6RD.js.map
@@ -1,4 +0,0 @@
1
- /*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
2
-
3
- import{a as i}from"./chunk-KFM6KXSE.js";import{a as e}from"./chunk-JMN3HTZU.js";function n(t={}){return e(["flex-row","flex-col"],{title:"Direction",description:"The direction of the layout",enumNames:["Horizontal","Vertical"],"ui:styleId":"styles:direction",examples:["flex-row","flex-col"],...t})}function p(t={}){return i("styles:direction",t)}export{n as a,p as b};
4
- //# sourceMappingURL=chunk-GACHLACT.js.map
@@ -1,4 +0,0 @@
1
- /*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
2
-
3
- import{Type as e}from"@sinclair/typebox";var t=e.Array(e.Object({id:e.String(),name:e.String(),type:e.String()})),a=e.Object({id:e.String(),name:e.String(),description:e.String(),primaryFieldId:e.String(),fields:t}),r=e.Object({externalUrl:e.Optional(e.String()),baseId:e.String({pattern:"^app[A-Za-z0-9]+$",description:'Airtable Base ID starting with "app"'}),baseName:e.Optional(e.String({description:"Airtable Base Name"})),tableId:e.String({pattern:"^tbl[A-Za-z0-9]+$",description:'Airtable Table ID starting with "tbl"'}),tableName:e.Optional(e.String({description:"Table name as shown in Airtable interface"})),fields:e.Optional(t)}),l=e.Union([e.Literal("number"),e.Literal("checkbox"),e.Literal("date"),e.Literal("dateTime"),e.Literal("email"),e.Literal("url"),e.Literal("singleLineText"),e.Literal("multilineText"),e.Literal("singleSelect"),e.Literal("multipleSelects")]);export{t as a,r as b,l as c};
4
- //# sourceMappingURL=chunk-GLS7HPIZ.js.map
@@ -1,35 +0,0 @@
1
- /*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
2
-
3
- import{a as x}from"./chunk-PIG623TZ.js";import{b as c}from"./chunk-PSCN3VVA.js";import{a as l}from"./chunk-OIY3EPHO.js";import{b as u}from"./chunk-QGYZ7CG5.js";import{a}from"./chunk-AFVJZPLS.js";import{b as y}from"./chunk-GACHLACT.js";import{b}from"./chunk-DHI3IBOD.js";import{c as f}from"./chunk-CZRCW5EN.js";import{b as h,d as g}from"./chunk-SWLUQVK7.js";import{c as s}from"./chunk-OHNYCXPX.js";import{a as m}from"./chunk-JMN3HTZU.js";import{Type as e}from"@sinclair/typebox";import{customAlphabet as P}from"nanoid";var S=P("azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN",7),R=e.Object({left:e.Optional(e.String({title:"top",description:"The left position in css unit."})),top:e.Optional(e.String({title:"top",description:"The top position in css unit."})),right:e.Optional(e.String({title:"right",description:"The right position in css unit."})),bottom:e.Optional(e.String({title:"bottom",description:"The bottom position in css unit."})),inset:e.Optional(e.String({title:"inset",description:"The inset position in css unit."})),translateX:e.Optional(e.String({title:"translateX",description:"The translateX position in css unit."})),translateY:e.Optional(e.String({title:"translateY",description:"The translateY position in css unit."})),rotate:e.Optional(e.String({title:"rotate",description:"The rotate position in css unit."}))}),v=m(Object.keys(c),{title:"Brick type"}),O=e.Object({id:e.String({title:"ID",description:"A unique identifier for the brick."}),type:v,props:e.Any({title:"Props",description:"The static props of the brick. The available props depends on the brick type."}),mobileProps:e.Optional(e.Any({title:"Props",description:"The overriden props for mobile, merged with desktop props."}))},{additionalProperties:!0});function G(t,o){return a(e.Object({id:e.String({title:"ID",description:"A unique identifier for the brick."}),type:e.Literal(t),props:o,mobileProps:e.Optional(e.Partial(o))},{additionalProperties:!1}))}var w=e.Object({colorPreset:e.Optional(f({title:"Color"})),backgroundImage:e.Optional(b({title:"Background",description:"The background image of the section. Prefer to set background images on sections rather than on individual bricks."})),direction:y({default:"flex-row",title:"Direction",description:"The direction of the section. Only apply to desktop. On mobile, it is always vertical.","ui:responsive":"desktop"}),minHeight:e.Optional(s({title:"Min height",default:"fit-content",description:"The min height of the section","ui:field":"hidden"})),variant:e.Optional(m(["navbar","footer","sidebar"],{title:"Custom section variant",description:"Used for custom styling and layout.",enumNames:["Navbar","Footer","Sidebar"],"ui:field":"hidden","ai:hidden":!0})),maxWidth:e.Optional(x("Max width","max-w-full",{options:[{value:"max-w-screen-lg",title:"M",description:"Common for text-heavy content/blog posts"},{value:"max-w-screen-xl",title:"L",description:"Usefull or some landing pages"},{value:"max-w-screen-2xl",title:"XL",description:"Common width"},{value:"max-w-full",title:"Full",description:"Takes the entire space"}],description:"The maximum width of the section. Desktop only","ai:instructions":"Choose the most appropriate max width for the section. You will likely use the same max width for all sections in a page.",displayAs:"button-group","ui:responsive":"desktop"})),justifyContent:e.Optional(h({default:"justify-center"})),alignItems:e.Optional(g({default:"items-center"})),padding:e.Optional(s({default:"2rem",description:"Padding inside the section.",title:"Padding","ui:responsive":!0,"ui:placeholder":"Not specified","ui:styleId":"styles:padding"})),gap:e.Optional(s({title:"Gap",description:"The gap between the bricks in the section.",default:"20px","ui:styleId":"styles:gap"})),wrap:e.Optional(e.Boolean({title:"Wrap",description:"Wrap bricks if they overflow the section.",default:!0,"ui:styleId":"styles:wrap"})),lastTouched:e.Optional(e.Number({description:"Do not use this field. It is used internally by the editor.","ui:field":"hidden","ai:hidden":!0}))},{additionalProperties:!1}),p=e.Object({id:e.String({description:"The unique ID of the section. Use a human readable url-safe slug",examples:["content-section","contact-section"]}),label:e.Optional(e.String({description:"The label of the section. Used for editor purposes only.",examples:["Content","Contact"]})),order:e.Number({description:"Determines section order in the page (lower numbers appear first). 0-based"}),props:w,mobileProps:e.Optional(e.Partial(w,{additionalProperties:!1})),bricks:e.Array(O)},{description:"Sections are direct children of the page that are stacked vertically."}),T=e.Omit(p,["bricks"]);function Y(){return a(T)}function H(){return a(p)}var j=u(p.properties.props,"desktop"),C=u(p.properties.mobileProps,"mobile");function J(t,o,i){let r=n=>({...n,props:l({},j,n.props),mobileProps:l({},C,n.mobileProps||{}),bricks:n.bricks.map(k).filter(Boolean)}),d=t.map(r);return o.navbar&&!i.noNavbar&&d.unshift(r({order:-1,id:"navbar-section",label:"Navbar section",props:{variant:"navbar",direction:"flex-row"},mobileProps:{},bricks:[{id:"navbar",type:"navbar",props:o.navbar}]})),o.footer&&!i.noFooter&&d.push(r({order:1e3,id:"footer-section",label:"Footer section",props:{variant:"footer",direction:"flex-row"},mobileProps:{},bricks:[{id:"footer",type:"footer",props:o.footer}]})),d}function k(t){let o=c[t.type];return{...t,props:l({},o.props,{...t.props,...t.props.$children?{$children:t.props.$children.map(k).filter(Boolean)}:{}})}}function X(t,o=!1){let i={...c[t].props,ghost:o};return{id:`b-${S()}`,type:t,props:i}}var V=[{label:"Hero section with centered 'hero' and 'button' bricks",description:`A simple hero section with a title and a light primary background.
4
- The "hero" brick does not have a colorPreset so it is transparent and inherits the background/text-color settings from the section.
5
- Bricks are centered both vertically and horizontally using justifyContent and alignItems.
6
- Bricks are stacked vertically using the "direction" set to "flex-col".
7
- `,example:{id:"hero-section",order:0,props:{colorPreset:{color:"primary-100"},direction:"flex-col",padding:"6rem",gap:"3rem",justifyContent:"justify-center",alignItems:"items-center"},bricks:[{id:"hero",type:"hero",props:{content:"<h1 style='text-align:center'>Welcome to my SaaS</h1>",tagline:"The future of productivity starts here"}},{id:"cta-button",type:"button",props:{label:"Get Started",href:"/signup",colorPreset:{color:"primary-500",variant:"solid"}}}]}},{label:"Contact section with a text and a form",description:`A contact section with a title and a form.
8
- The section has a light gray background using a colorPreset.
9
- Bricks are stacked vertically using the "direction" set to "flex-col".
10
- `,example:{id:"contact-section",order:1,props:{colorPreset:{color:"gray-100"},direction:"flex-col",padding:"4rem",gap:"2rem",justifyContent:"justify-center",alignItems:"items-center"},bricks:[{id:"contact-title",type:"text",props:{content:"<h2>Get in Touch</h2>"}},{id:"contact-form",type:"form",props:{title:"Contact Us",fields:[{name:"name",label:"Name",type:"text",required:!0},{name:"email",label:"Email",type:"email",required:!0},{name:"message",label:"Message",type:"textarea",required:!0}]}}]}},{label:"Feature showcase with horizontal layout and container brick",description:`A features section using horizontal layout with a container "box" brick that holds multiple feature items.
11
- The box brick is the only container type that can hold $children (other bricks).
12
- This demonstrates nested brick structure where the box contains multiple feature bricks.`,example:{id:"features-section",order:2,props:{direction:"flex-col",padding:"5rem",gap:"3rem",maxWidth:"max-w-screen-xl",justifyContent:"justify-center",alignItems:"items-center"},bricks:[{id:"features-title",type:"text",props:{content:"<h2 style='text-align:center'>Our Features</h2>"}},{id:"features-container",type:"box",props:{direction:"flex-row",gap:"2rem",padding:"2rem",$children:[{id:"feature-1",type:"text",props:{content:"<h3>Fast</h3><p>Lightning-fast performance for your needs.</p>",colorPreset:{color:"blue-500"}}},{id:"feature-2",type:"text",props:{content:"<h3>Secure</h3><p>Enterprise-grade security built-in.</p>",colorPreset:{color:"green-500"}}},{id:"feature-3",type:"text",props:{content:"<h3>Scalable</h3><p>Grows with your business seamlessly.</p>",colorPreset:{color:"purple-500"}}}]}}]}},{label:"Media-rich section with image and text side by side",description:`A content section using horizontal layout to place an image next to text content.
13
- Demonstrates how direction "flex-row" arranges bricks horizontally.
14
- The section uses responsive mobile overrides to stack vertically on mobile.`,example:{id:"about-section",order:3,props:{direction:"flex-row",padding:"4rem",gap:"3rem",alignItems:"items-center",maxWidth:"max-w-screen-xl"},mobileProps:{direction:"flex-col",padding:"2rem"},bricks:[{id:"about-image",type:"image",props:{src:"https://example.com/about-image.jpg",alt:"About our company",width:"400px",height:"300px"}},{id:"about-text",type:"text",props:{content:"<h2>About Us</h2><p>We are a leading company in innovative solutions, dedicated to transforming how businesses operate in the digital age.</p>"}}]}},{label:"Complex nested layout with multiple container levels",description:`Advanced example showing deeply nested brick structure using multiple box containers.
15
- Demonstrates how box bricks can contain other box bricks, creating sophisticated layouts.
16
- Shows responsive design with different mobile arrangements.`,example:{id:"complex-layout-section",order:4,props:{direction:"flex-col",padding:"4rem",gap:"2rem",backgroundImage:{image:"https://example.com/bg.jpg"}},bricks:[{id:"main-container",type:"box",props:{direction:"flex-row",gap:"2rem",padding:"2rem",$children:[{id:"left-column",type:"box",props:{direction:"flex-col",gap:"1rem",colorPreset:{color:"gray-50"},padding:"1.5rem",$children:[{id:"left-title",type:"text",props:{content:"<h3>Left Column</h3>"}},{id:"left-button",type:"button",props:{label:"Learn More",href:"/learn",colorPreset:{color:"blue-500",variant:"outline"}}}]}},{id:"right-column",type:"box",props:{direction:"flex-col",gap:"1rem",colorPreset:{color:"blue-50"},padding:"1.5rem",$children:[{id:"right-image",type:"image",props:{src:"https://example.com/feature.jpg",alt:"Feature showcase",width:"100%"}},{id:"right-text",type:"text",props:{content:"<p>Detailed description of our amazing features and capabilities.</p>"}}]}}],mobileProps:{direction:"flex-col"}}}]}},{label:"Footer-style section with multiple columns",description:`A footer-like section demonstrating horizontal layout with multiple informational columns.
17
- Uses the footer variant for special styling and contains multiple text bricks arranged horizontally.
18
- Shows how to create multi-column layouts using direction and gap properties.`,example:{id:"info-footer-section",order:5,props:{variant:"footer",direction:"flex-row",padding:"3rem",gap:"4rem",colorPreset:{color:"gray-800"},justifyContent:"justify-center"},mobileProps:{direction:"flex-col",gap:"2rem"},bricks:[{id:"company-info",type:"text",props:{content:"<h4 style='color:white'>Company</h4><p style='color:gray'>About Us<br>Careers<br>Contact</p>"}},{id:"product-info",type:"text",props:{content:"<h4 style='color:white'>Product</h4><p style='color:gray'>Features<br>Pricing<br>Documentation</p>"}},{id:"support-info",type:"text",props:{content:"<h4 style='color:white'>Support</h4><p style='color:gray'>Help Center<br>Community<br>Status</p>"}}]}},{label:"Video showcase section with title and description",description:`A media section featuring a YouTube video with accompanying text.
19
- Shows how to use video bricks for multimedia content.
20
- The section uses a light background to make the video stand out.`,example:{id:"video-showcase-section",order:6,props:{direction:"flex-col",padding:"4rem",gap:"2rem",colorPreset:{color:"gray-50"},alignItems:"items-center",maxWidth:"max-w-screen-lg"},bricks:[{id:"video-title",type:"text",props:{content:"<h2 style='text-align:center'>Watch Our Demo</h2>"}},{id:"demo-video",type:"video",props:{url:"https://www.youtube.com/watch?v=dQw4w9WgXcQ",title:"Product Demo Video"}},{id:"video-description",type:"text",props:{content:"<p style='text-align:center'>See how our platform can transform your workflow in just 2 minutes.</p>"}}]}},{label:"Image gallery section with carousel",description:`A media-rich section showcasing an image carousel.
21
- Demonstrates how to use carousel bricks for displaying multiple images.
22
- Perfect for portfolios, product showcases, or photo galleries.`,example:{id:"gallery-section",order:7,props:{direction:"flex-col",padding:"4rem",gap:"2rem",alignItems:"items-center"},bricks:[{id:"gallery-title",type:"text",props:{content:"<h2 style='text-align:center'>Our Portfolio</h2>"}},{id:"portfolio-carousel",type:"carousel",props:{images:[{src:"https://example.com/project1.jpg",alt:"Project 1"},{src:"https://example.com/project2.jpg",alt:"Project 2"},{src:"https://example.com/project3.jpg",alt:"Project 3"}],autoplay:!0,showDots:!0}}]}},{label:"Interactive form section with styled inputs",description:`A comprehensive form section for user registration or contact.
23
- Shows how to create forms with various field types and validation.
24
- Uses a card-like appearance with rounded corners and shadow.`,example:{id:"signup-form-section",order:8,props:{direction:"flex-col",padding:"4rem",gap:"2rem",colorPreset:{color:"blue-50"},alignItems:"items-center",maxWidth:"max-w-screen-md"},bricks:[{id:"form-header",type:"text",props:{content:"<h2 style='text-align:center'>Join Our Platform</h2><p style='text-align:center'>Create your account and start building today.</p>"}},{id:"registration-form",type:"form",props:{title:"Sign Up",submitLabel:"Create Account",fields:[{name:"firstName",label:"First Name",type:"text",required:!0},{name:"lastName",label:"Last Name",type:"text",required:!0},{name:"email",label:"Email Address",type:"email",required:!0},{name:"password",label:"Password",type:"password",required:!0},{name:"company",label:"Company",type:"text",required:!1},{name:"newsletter",label:"Subscribe to newsletter",type:"checkbox",required:!1}],colorPreset:{color:"white"},shadow:"shadow-lg",rounding:"rounded-lg",padding:"2rem"}}]}},{label:"Testimonials section with customer feedback",description:`A social proof section using the testimonials brick to display customer feedback.
25
- Shows how to structure testimonials with avatars, company information, and social icons.
26
- Perfect for building trust and credibility with potential customers.`,example:{id:"testimonials-section",order:9,props:{direction:"flex-col",padding:"5rem",gap:"3rem",colorPreset:{color:"purple-50"},alignItems:"items-center"},bricks:[{id:"testimonials-title",type:"text",props:{content:"<h2 style='text-align:center'>What Our Customers Say</h2>"}},{id:"customer-testimonials",type:"testimonials",props:{testimonials:[{text:"This platform has completely transformed how we handle our projects. The automation features and intuitive interface have saved us countless hours every week.",author:"Sarah Johnson",company:"TechCorp Solutions",avatar:{src:"https://via.placeholder.com/80x80.png?text=SJ",alt:"Sarah Johnson profile photo"},socialIcon:"mdi:linkedin"},{text:"Outstanding customer support and regular feature updates. We've been using this for over a year and it keeps getting better. Highly recommend!",author:"Mike Chen",company:"StartupFlow",avatar:{src:"https://via.placeholder.com/80x80.png?text=MC",alt:"Mike Chen profile photo"},socialIcon:"mdi:twitter"},{text:"The results speak for themselves - our productivity increased by 40% after implementing this solution. It's like having an extra team member.",author:"Emily Rodriguez",company:"Digital Agency Pro",avatar:{src:"https://via.placeholder.com/80x80.png?text=ER",alt:"Emily Rodriguez profile photo"},socialIcon:"mdi:briefcase"}],colorPreset:{color:"white"},shadow:"shadow-lg",padding:"2rem",gap:"2rem"}}]}},{label:"Location and contact information with map",description:`A contact section featuring an interactive map alongside contact details.
27
- Shows how to combine map bricks with text and contact information.
28
- Perfect for businesses with physical locations.`,example:{id:"location-section",order:10,props:{direction:"flex-row",padding:"4rem",gap:"3rem",alignItems:"items-start"},mobileProps:{direction:"flex-col"},bricks:[{id:"contact-details",type:"box",props:{direction:"flex-col",gap:"2rem",padding:"2rem",colorPreset:{color:"gray-50"},rounding:"rounded-lg",$children:[{id:"office-title",type:"text",props:{content:"<h3>Visit Our Office</h3>"}},{id:"address",type:"text",props:{content:"<p><strong>Address:</strong><br>123 Business Street<br>Suite 100<br>San Francisco, CA 94105</p>"}},{id:"contact-info",type:"text",props:{content:"<p><strong>Phone:</strong> +1 (555) 123-4567<br><strong>Email:</strong> hello@company.com</p>"}},{id:"hours",type:"text",props:{content:"<p><strong>Business Hours:</strong><br>Monday - Friday: 9:00 AM - 6:00 PM<br>Saturday: 10:00 AM - 4:00 PM</p>"}}]}},{id:"office-map",type:"map",props:{address:"123 Business Street, San Francisco, CA 94105",zoom:15,height:"400px"}}]}},{label:"Statistics showcase with icons and numbers",description:`A metrics section displaying key statistics using icon and text bricks.
29
- Demonstrates how to create compelling data visualizations.
30
- Uses horizontal layout with consistent spacing and visual hierarchy.`,example:{id:"stats-section",order:11,props:{direction:"flex-col",padding:"5rem",gap:"3rem",colorPreset:{color:"gradient",gradientDirection:"bg-gradient-to-r"},alignItems:"items-center"},bricks:[{id:"stats-title",type:"text",props:{content:"<h2 style='text-align:center; color:white'>Our Impact</h2>"}},{id:"stats-container",type:"box",props:{direction:"flex-row",gap:"4rem",justifyContent:"justify-center",$children:[{id:"users-stat",type:"box",props:{direction:"flex-col",gap:"1rem",alignItems:"items-center",$children:[{id:"users-icon",type:"icon",props:{icon:"users",size:"3rem",color:"white"}},{id:"users-number",type:"text",props:{content:"<h3 style='color:white; text-align:center'>50K+</h3><p style='color:white; text-align:center'>Active Users</p>"}}]}},{id:"projects-stat",type:"box",props:{direction:"flex-col",gap:"1rem",alignItems:"items-center",$children:[{id:"projects-icon",type:"icon",props:{icon:"briefcase",size:"3rem",color:"white"}},{id:"projects-number",type:"text",props:{content:"<h3 style='color:white; text-align:center'>100K+</h3><p style='color:white; text-align:center'>Projects Created</p>"}}]}},{id:"satisfaction-stat",type:"box",props:{direction:"flex-col",gap:"1rem",alignItems:"items-center",$children:[{id:"satisfaction-icon",type:"icon",props:{icon:"star",size:"3rem",color:"white"}},{id:"satisfaction-number",type:"text",props:{content:"<h3 style='color:white; text-align:center'>98%</h3><p style='color:white; text-align:center'>Satisfaction Rate</p>"}}]}}],mobileProps:{direction:"flex-col",gap:"2rem"}}}]}},{label:"Social links and newsletter signup",description:`A community engagement section combining social media links with newsletter signup.
31
- Shows how to use social-links bricks and forms together.
32
- Creates a cohesive call-to-action for community building.`,example:{id:"community-section",order:12,props:{direction:"flex-col",padding:"4rem",gap:"3rem",colorPreset:{color:"indigo-100"},alignItems:"items-center",maxWidth:"max-w-screen-md"},bricks:[{id:"community-title",type:"text",props:{content:"<h2 style='text-align:center'>Stay Connected</h2><p style='text-align:center'>Join our community and never miss an update.</p>"}},{id:"social-links",type:"social-links",props:{links:[{platform:"twitter",url:"https://twitter.com/company"},{platform:"linkedin",url:"https://linkedin.com/company/company"},{platform:"github",url:"https://github.com/company"},{platform:"youtube",url:"https://youtube.com/company"}],size:"large",style:"filled"}},{id:"newsletter-form",type:"form",props:{title:"Subscribe to Our Newsletter",subtitle:"Get weekly updates and exclusive content delivered to your inbox.",submitLabel:"Subscribe",fields:[{name:"email",label:"Email Address",type:"email",required:!0,placeholder:"your@email.com"}],colorPreset:{color:"white"},rounding:"rounded-lg",padding:"2rem",shadow:"shadow-md"}}]}},{label:"Pricing table with multiple options",description:`A pricing section using card bricks to create a comparison table.
33
- Demonstrates how to structure pricing tiers with different features.
34
- Uses consistent styling with highlighted premium option.`,example:{id:"pricing-section",order:13,props:{direction:"flex-col",padding:"5rem",gap:"3rem",alignItems:"items-center"},bricks:[{id:"pricing-header",type:"text",props:{content:"<h2 style='text-align:center'>Choose Your Plan</h2><p style='text-align:center'>Select the perfect plan for your needs.</p>"}},{id:"pricing-cards",type:"box",props:{direction:"flex-row",gap:"2rem",justifyContent:"justify-center",$children:[{id:"basic-plan",type:"card",props:{title:"Basic",subtitle:"$9/month",content:"\u2022 5 Projects<br>\u2022 10GB Storage<br>\u2022 Email Support<br>\u2022 Basic Templates",colorPreset:{color:"white"},border:{width:"border-2",color:"border-gray-200"},rounding:"rounded-lg",padding:"2rem",shadow:"shadow-md"}},{id:"pro-plan",type:"card",props:{title:"Pro",subtitle:"$29/month",content:"\u2022 Unlimited Projects<br>\u2022 100GB Storage<br>\u2022 Priority Support<br>\u2022 Premium Templates<br>\u2022 Advanced Analytics",colorPreset:{color:"blue-500"},rounding:"rounded-lg",padding:"2rem",shadow:"shadow-lg",border:{width:"border-2",color:"border-blue-400"}}},{id:"enterprise-plan",type:"card",props:{title:"Enterprise",subtitle:"Custom",content:"\u2022 Everything in Pro<br>\u2022 Unlimited Storage<br>\u2022 24/7 Phone Support<br>\u2022 Custom Integrations<br>\u2022 Dedicated Account Manager",colorPreset:{color:"white"},border:{width:"border-2",color:"border-gray-200"},rounding:"rounded-lg",padding:"2rem",shadow:"shadow-md"}}],mobileProps:{direction:"flex-col"}}}]}}];export{S as a,v as b,O as c,G as d,w as e,p as f,T as g,Y as h,H as i,J as j,k,X as l,V as m};
35
- //# sourceMappingURL=chunk-GOMXZC4B.js.map