@upstart.gg/sdk 0.0.134 → 0.0.136

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 (589) hide show
  1. package/dist/shared/ai/schemas.d.ts +11 -3
  2. package/dist/shared/ai/schemas.d.ts.map +1 -1
  3. package/dist/shared/ai/schemas.js +63 -1
  4. package/dist/shared/ai/schemas.js.map +1 -1
  5. package/dist/shared/ai/types.d.ts +138 -64
  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 +99 -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/_types.d.ts +9 -0
  19. package/dist/shared/bricks/manifests/_types.d.ts.map +1 -0
  20. package/dist/shared/bricks/{props/enum.js → manifests/_types.js} +1 -2
  21. package/dist/shared/bricks/manifests/accordion.manifest.d.ts +4 -8
  22. package/dist/shared/bricks/manifests/accordion.manifest.d.ts.map +1 -1
  23. package/dist/shared/bricks/manifests/accordion.manifest.js +29 -1
  24. package/dist/shared/bricks/manifests/all-manifests.d.ts.map +1 -1
  25. package/dist/shared/bricks/manifests/all-manifests.js +59 -1
  26. package/dist/shared/bricks/manifests/box.manifest.d.ts +4 -8
  27. package/dist/shared/bricks/manifests/box.manifest.d.ts.map +1 -1
  28. package/dist/shared/bricks/manifests/box.manifest.js +28 -1
  29. package/dist/shared/bricks/manifests/button.manifest.d.ts +4 -8
  30. package/dist/shared/bricks/manifests/button.manifest.d.ts.map +1 -1
  31. package/dist/shared/bricks/manifests/button.manifest.js +28 -1
  32. package/dist/shared/bricks/manifests/card.manifest.d.ts +10 -9
  33. package/dist/shared/bricks/manifests/card.manifest.d.ts.map +1 -1
  34. package/dist/shared/bricks/manifests/card.manifest.js +28 -1
  35. package/dist/shared/bricks/manifests/carousel.manifest.d.ts +4 -8
  36. package/dist/shared/bricks/manifests/carousel.manifest.d.ts.map +1 -1
  37. package/dist/shared/bricks/manifests/carousel.manifest.js +28 -1
  38. package/dist/shared/bricks/manifests/footer.manifest.d.ts +6 -10
  39. package/dist/shared/bricks/manifests/footer.manifest.d.ts.map +1 -1
  40. package/dist/shared/bricks/manifests/footer.manifest.js +30 -1
  41. package/dist/shared/bricks/manifests/form.manifest.d.ts +5 -9
  42. package/dist/shared/bricks/manifests/form.manifest.d.ts.map +1 -1
  43. package/dist/shared/bricks/manifests/form.manifest.js +29 -1
  44. package/dist/shared/bricks/manifests/hero.manifest.d.ts +4 -8
  45. package/dist/shared/bricks/manifests/hero.manifest.d.ts.map +1 -1
  46. package/dist/shared/bricks/manifests/hero.manifest.js +28 -1
  47. package/dist/shared/bricks/manifests/html.manifest.d.ts +4 -8
  48. package/dist/shared/bricks/manifests/html.manifest.d.ts.map +1 -1
  49. package/dist/shared/bricks/manifests/html.manifest.js +28 -1
  50. package/dist/shared/bricks/manifests/icon.manifest.d.ts +4 -8
  51. package/dist/shared/bricks/manifests/icon.manifest.d.ts.map +1 -1
  52. package/dist/shared/bricks/manifests/icon.manifest.js +28 -1
  53. package/dist/shared/bricks/manifests/image.manifest.d.ts +3 -2
  54. package/dist/shared/bricks/manifests/image.manifest.d.ts.map +1 -1
  55. package/dist/shared/bricks/manifests/image.manifest.js +28 -1
  56. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts +4 -8
  57. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts.map +1 -1
  58. package/dist/shared/bricks/manifests/images-gallery.manifest.js +28 -1
  59. package/dist/shared/bricks/manifests/map.manifest.d.ts +4 -8
  60. package/dist/shared/bricks/manifests/map.manifest.d.ts.map +1 -1
  61. package/dist/shared/bricks/manifests/map.manifest.js +31 -1
  62. package/dist/shared/bricks/manifests/navbar.manifest.d.ts +6 -10
  63. package/dist/shared/bricks/manifests/navbar.manifest.d.ts.map +1 -1
  64. package/dist/shared/bricks/manifests/navbar.manifest.js +31 -1
  65. package/dist/shared/bricks/manifests/sidebar.manifest.d.ts +4 -8
  66. package/dist/shared/bricks/manifests/sidebar.manifest.d.ts.map +1 -1
  67. package/dist/shared/bricks/manifests/sidebar.manifest.js +29 -1
  68. package/dist/shared/bricks/manifests/social-links.manifest.d.ts +4 -8
  69. package/dist/shared/bricks/manifests/social-links.manifest.d.ts.map +1 -1
  70. package/dist/shared/bricks/manifests/social-links.manifest.js +28 -1
  71. package/dist/shared/bricks/manifests/spacer.manifest.d.ts +4 -8
  72. package/dist/shared/bricks/manifests/spacer.manifest.d.ts.map +1 -1
  73. package/dist/shared/bricks/manifests/spacer.manifest.js +28 -1
  74. package/dist/shared/bricks/manifests/table.manifest.d.ts +87 -0
  75. package/dist/shared/bricks/manifests/table.manifest.d.ts.map +1 -0
  76. package/dist/shared/bricks/manifests/table.manifest.js +31 -0
  77. package/dist/shared/bricks/manifests/table.manifest.js.map +1 -0
  78. package/dist/shared/bricks/manifests/tabs.manifest.d.ts +86 -0
  79. package/dist/shared/bricks/manifests/tabs.manifest.d.ts.map +1 -0
  80. package/dist/shared/bricks/manifests/tabs.manifest.js +31 -0
  81. package/dist/shared/bricks/manifests/tabs.manifest.js.map +1 -0
  82. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts +4 -8
  83. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts.map +1 -1
  84. package/dist/shared/bricks/manifests/testimonials.manifest.js +28 -1
  85. package/dist/shared/bricks/manifests/text.manifest.d.ts +4 -8
  86. package/dist/shared/bricks/manifests/text.manifest.d.ts.map +1 -1
  87. package/dist/shared/bricks/manifests/text.manifest.js +28 -1
  88. package/dist/shared/bricks/manifests/timeline.manifest.d.ts +97 -0
  89. package/dist/shared/bricks/manifests/timeline.manifest.d.ts.map +1 -0
  90. package/dist/shared/bricks/manifests/timeline.manifest.js +31 -0
  91. package/dist/shared/bricks/manifests/timeline.manifest.js.map +1 -0
  92. package/dist/shared/bricks/manifests/video.manifest.d.ts +4 -8
  93. package/dist/shared/bricks/manifests/video.manifest.d.ts.map +1 -1
  94. package/dist/shared/bricks/manifests/video.manifest.js +28 -1
  95. package/dist/shared/bricks/props/align.d.ts +2 -2
  96. package/dist/shared/bricks/props/align.js +19 -1
  97. package/dist/shared/bricks/props/background.d.ts +4 -4
  98. package/dist/shared/bricks/props/background.js +15 -1
  99. package/dist/shared/bricks/props/boolean.js +7 -1
  100. package/dist/shared/bricks/props/border.js +16 -1
  101. package/dist/shared/bricks/props/color-preset.d.ts.map +1 -1
  102. package/dist/shared/bricks/props/color-preset.js +13 -1
  103. package/dist/shared/bricks/props/color.js +14 -1
  104. package/dist/shared/bricks/props/common.d.ts +2 -2
  105. package/dist/shared/bricks/props/common.js +13 -1
  106. package/dist/shared/bricks/props/css-length.js +14 -1
  107. package/dist/shared/bricks/props/datarecord.js +7 -1
  108. package/dist/shared/bricks/props/datasource.d.ts +1 -1
  109. package/dist/shared/bricks/props/datasource.js +86 -1
  110. package/dist/shared/bricks/props/datasource.js.map +1 -1
  111. package/dist/shared/bricks/props/date.js +9 -1
  112. package/dist/shared/bricks/props/direction.js +11 -1
  113. package/dist/shared/bricks/props/dynamic.d.ts.map +1 -1
  114. package/dist/shared/bricks/props/dynamic.js +30 -1
  115. package/dist/shared/bricks/props/effects.js +17 -1
  116. package/dist/shared/bricks/props/file.js +15 -1
  117. package/dist/shared/bricks/props/file.js.map +1 -1
  118. package/dist/shared/bricks/props/geolocation.js +44 -1
  119. package/dist/shared/bricks/props/geolocation.js.map +1 -1
  120. package/dist/shared/bricks/props/helpers.d.ts +1 -1
  121. package/dist/shared/bricks/props/helpers.js +18 -1
  122. package/dist/shared/bricks/props/image.js +11 -1
  123. package/dist/shared/bricks/props/number.js +7 -1
  124. package/dist/shared/bricks/props/position.js +7 -1
  125. package/dist/shared/bricks/props/string.js +18 -1
  126. package/dist/shared/bricks/props/tags.js +10 -1
  127. package/dist/shared/bricks/props/text.js +19 -1
  128. package/dist/shared/bricks.d.ts +59 -45
  129. package/dist/shared/bricks.d.ts.map +1 -1
  130. package/dist/shared/bricks.js +81 -1
  131. package/dist/shared/chunk-2BPYOTKA.js +21 -0
  132. package/dist/shared/{chunk-WHTPGWUV.js.map → chunk-2BPYOTKA.js.map} +1 -1
  133. package/dist/shared/chunk-2IHKVMKW.js +105 -0
  134. package/dist/shared/chunk-2IHKVMKW.js.map +1 -0
  135. package/dist/shared/chunk-2RK3CPYJ.js +74 -0
  136. package/dist/shared/{chunk-W33JMRRN.js.map → chunk-2RK3CPYJ.js.map} +1 -1
  137. package/dist/shared/chunk-2VDR4ZYY.js +230 -0
  138. package/dist/shared/chunk-2VDR4ZYY.js.map +1 -0
  139. package/dist/shared/chunk-36PLZKMW.js +538 -0
  140. package/dist/shared/chunk-36PLZKMW.js.map +1 -0
  141. package/dist/shared/chunk-3ZDN5BWN.js +18 -0
  142. package/dist/shared/{chunk-OIY3EPHO.js.map → chunk-3ZDN5BWN.js.map} +1 -1
  143. package/dist/shared/chunk-42OUNI7C.js +366 -0
  144. package/dist/shared/chunk-42OUNI7C.js.map +1 -0
  145. package/dist/shared/chunk-4MNWMEMM.js +422 -0
  146. package/dist/shared/chunk-4MNWMEMM.js.map +1 -0
  147. package/dist/shared/chunk-55C6MTX2.js +21 -0
  148. package/dist/shared/{chunk-KBHDY425.js.map → chunk-55C6MTX2.js.map} +1 -1
  149. package/dist/shared/chunk-6TVVKUWM.js +15 -0
  150. package/dist/shared/{chunk-4WDWJA3N.js.map → chunk-6TVVKUWM.js.map} +1 -1
  151. package/dist/shared/chunk-6WIMWLCJ.js +17 -0
  152. package/dist/shared/{chunk-KYY3PHP7.js.map → chunk-6WIMWLCJ.js.map} +1 -1
  153. package/dist/shared/chunk-7LAWWRU7.js +21 -0
  154. package/dist/shared/{chunk-IUXCWWGO.js.map → chunk-7LAWWRU7.js.map} +1 -1
  155. package/dist/shared/chunk-A2QPY54H.js +13 -0
  156. package/dist/shared/{chunk-KFM6KXSE.js.map → chunk-A2QPY54H.js.map} +1 -1
  157. package/dist/shared/chunk-BHC2A43S.js +67 -0
  158. package/dist/shared/{chunk-3YVJ2ELD.js.map → chunk-BHC2A43S.js.map} +1 -1
  159. package/dist/shared/chunk-BPBKHEQ5.js +39 -0
  160. package/dist/shared/{chunk-OHNYCXPX.js.map → chunk-BPBKHEQ5.js.map} +1 -1
  161. package/dist/shared/chunk-CRS7QCPZ.js +308 -0
  162. package/dist/shared/chunk-CRS7QCPZ.js.map +1 -0
  163. package/dist/shared/chunk-CSF2WQX2.js +60 -0
  164. package/dist/shared/{chunk-GLS7HPIZ.js.map → chunk-CSF2WQX2.js.map} +1 -1
  165. package/dist/shared/chunk-DFAFDBYZ.js +462 -0
  166. package/dist/shared/chunk-DFAFDBYZ.js.map +1 -0
  167. package/dist/shared/chunk-DV3G7X34.js +244 -0
  168. package/dist/shared/chunk-DV3G7X34.js.map +1 -0
  169. package/dist/shared/chunk-EVLRH6VG.js +56 -0
  170. package/dist/shared/{chunk-RJYZ5FAR.js.map → chunk-EVLRH6VG.js.map} +1 -1
  171. package/dist/shared/chunk-F22LDHEO.js +105 -0
  172. package/dist/shared/{chunk-5YRC3IT3.js.map → chunk-F22LDHEO.js.map} +1 -1
  173. package/dist/shared/chunk-F247VKAE.js +131 -0
  174. package/dist/shared/chunk-F247VKAE.js.map +1 -0
  175. package/dist/shared/chunk-FOGAVJC2.js +59 -0
  176. package/dist/shared/chunk-FOGAVJC2.js.map +1 -0
  177. package/dist/shared/chunk-FQDR2BBZ.js +30 -0
  178. package/dist/shared/chunk-FQDR2BBZ.js.map +1 -0
  179. package/dist/shared/chunk-GFAQWQER.js +618 -0
  180. package/dist/shared/chunk-GFAQWQER.js.map +1 -0
  181. package/dist/shared/chunk-GIGFNQBO.js +129 -0
  182. package/dist/shared/chunk-GIGFNQBO.js.map +1 -0
  183. package/dist/shared/chunk-GQTZPN5D.js +519 -0
  184. package/dist/shared/chunk-GQTZPN5D.js.map +1 -0
  185. package/dist/shared/chunk-H5JM2M2T.js +515 -0
  186. package/dist/shared/chunk-H5JM2M2T.js.map +1 -0
  187. package/dist/shared/chunk-HPCCD6V5.js +17 -0
  188. package/dist/shared/{chunk-6I3ONVU6.js.map → chunk-HPCCD6V5.js.map} +1 -1
  189. package/dist/shared/chunk-HTUSL2U7.js +260 -0
  190. package/dist/shared/chunk-HTUSL2U7.js.map +1 -0
  191. package/dist/shared/chunk-IQIISR22.js +794 -0
  192. package/dist/shared/chunk-IQIISR22.js.map +1 -0
  193. package/dist/shared/chunk-JK2FWFJU.js +15 -0
  194. package/dist/shared/{chunk-JMN3HTZU.js.map → chunk-JK2FWFJU.js.map} +1 -1
  195. package/dist/shared/chunk-KEM5N6GJ.js +505 -0
  196. package/dist/shared/chunk-KEM5N6GJ.js.map +1 -0
  197. package/dist/shared/chunk-KIDICX3Y.js +278 -0
  198. package/dist/shared/chunk-KIDICX3Y.js.map +1 -0
  199. package/dist/shared/chunk-KILJYJFE.js +354 -0
  200. package/dist/shared/chunk-KILJYJFE.js.map +1 -0
  201. package/dist/shared/chunk-KNREHAPN.js +13 -0
  202. package/dist/shared/{chunk-KSEURRVZ.js.map → chunk-KNREHAPN.js.map} +1 -1
  203. package/dist/shared/chunk-KT7SSWMM.js +24 -0
  204. package/dist/shared/{chunk-KO5FPOWZ.js.map → chunk-KT7SSWMM.js.map} +1 -1
  205. package/dist/shared/chunk-L6C7HUSA.js +850 -0
  206. package/dist/shared/chunk-L6C7HUSA.js.map +1 -0
  207. package/dist/shared/chunk-LCJ2VFPM.js +837 -0
  208. package/dist/shared/chunk-LCJ2VFPM.js.map +1 -0
  209. package/dist/shared/chunk-LLNPH3XR.js +148 -0
  210. package/dist/shared/chunk-LLNPH3XR.js.map +1 -0
  211. package/dist/shared/chunk-LTIJI7Y3.js +368 -0
  212. package/dist/shared/chunk-LTIJI7Y3.js.map +1 -0
  213. package/dist/shared/chunk-MFNHFN2B.js +103 -0
  214. package/dist/shared/{chunk-ZA3GAB4H.js.map → chunk-MFNHFN2B.js.map} +1 -1
  215. package/dist/shared/chunk-N3BEBLWF.js +213 -0
  216. package/dist/shared/chunk-N3BEBLWF.js.map +1 -0
  217. package/dist/shared/chunk-N3ZTQD5I.js +70 -0
  218. package/dist/shared/chunk-N3ZTQD5I.js.map +1 -0
  219. package/dist/shared/chunk-NTLAKMMQ.js +94 -0
  220. package/dist/shared/{chunk-ZTZJHY4E.js.map → chunk-NTLAKMMQ.js.map} +1 -1
  221. package/dist/shared/chunk-O5PQISX4.js +51 -0
  222. package/dist/shared/{chunk-VEDQV5XO.js.map → chunk-O5PQISX4.js.map} +1 -1
  223. package/dist/shared/chunk-OJP4HMJT.js +22 -0
  224. package/dist/shared/{chunk-6HLU4UI2.js.map → chunk-OJP4HMJT.js.map} +1 -1
  225. package/dist/shared/chunk-OSJ6KGPX.js +16 -0
  226. package/dist/shared/{chunk-GPEMPZXK.js.map → chunk-OSJ6KGPX.js.map} +1 -1
  227. package/dist/shared/chunk-OXYXZHP2.js +48 -0
  228. package/dist/shared/{chunk-5O4Z3YQY.js.map → chunk-OXYXZHP2.js.map} +1 -1
  229. package/dist/shared/chunk-Q4NPPLEU.js +34 -0
  230. package/dist/shared/{chunk-QWGUMKZC.js.map → chunk-Q4NPPLEU.js.map} +1 -1
  231. package/dist/shared/chunk-QLQVDZIL.js +11 -0
  232. package/dist/shared/{chunk-KLD3P5XH.js.map → chunk-QLQVDZIL.js.map} +1 -1
  233. package/dist/shared/chunk-RV7AYVFV.js +75 -0
  234. package/dist/shared/{chunk-DHI3IBOD.js.map → chunk-RV7AYVFV.js.map} +1 -1
  235. package/dist/shared/chunk-SE6O65HC.js +44 -0
  236. package/dist/shared/{chunk-NM5MMPCF.js.map → chunk-SE6O65HC.js.map} +1 -1
  237. package/dist/shared/chunk-TFGGYU6Y.js +394 -0
  238. package/dist/shared/{chunk-CZRCW5EN.js.map → chunk-TFGGYU6Y.js.map} +1 -1
  239. package/dist/shared/chunk-TKMWY2VN.js +18 -0
  240. package/dist/shared/{chunk-RDZK73KV.js.map → chunk-TKMWY2VN.js.map} +1 -1
  241. package/dist/shared/chunk-TNMNMYOB.js +69 -0
  242. package/dist/shared/{chunk-4BTB3MU2.js.map → chunk-TNMNMYOB.js.map} +1 -1
  243. package/dist/shared/chunk-TNTFKLCR.js +1225 -0
  244. package/dist/shared/chunk-TNTFKLCR.js.map +1 -0
  245. package/dist/shared/chunk-U5ZECCJM.js +464 -0
  246. package/dist/shared/chunk-U5ZECCJM.js.map +1 -0
  247. package/dist/shared/chunk-UXTASZ23.js +419 -0
  248. package/dist/shared/chunk-UXTASZ23.js.map +1 -0
  249. package/dist/shared/chunk-W6MRYRGJ.js +100 -0
  250. package/dist/shared/{chunk-CCI4C3TM.js.map → chunk-W6MRYRGJ.js.map} +1 -1
  251. package/dist/shared/chunk-WKN566LN.js +29 -0
  252. package/dist/shared/{chunk-Q4H4QEMB.js.map → chunk-WKN566LN.js.map} +1 -1
  253. package/dist/shared/chunk-XCWMZVF5.js +89 -0
  254. package/dist/shared/{chunk-ZFCUSWMT.js.map → chunk-XCWMZVF5.js.map} +1 -1
  255. package/dist/shared/chunk-XCZVD5H6.js +13 -0
  256. package/dist/shared/{chunk-HAGKVQOW.js.map → chunk-XCZVD5H6.js.map} +1 -1
  257. package/dist/shared/chunk-XZ6WJZHN.js +10 -0
  258. package/dist/shared/{chunk-DCH4ZKWT.js.map → chunk-XZ6WJZHN.js.map} +1 -1
  259. package/dist/shared/chunk-Y74LZNND.js +30 -0
  260. package/dist/shared/{chunk-GACHLACT.js.map → chunk-Y74LZNND.js.map} +1 -1
  261. package/dist/shared/chunk-YWOTQWIQ.js +572 -0
  262. package/dist/shared/chunk-YWOTQWIQ.js.map +1 -0
  263. package/dist/shared/chunk-ZEFOWKYP.js +44 -0
  264. package/dist/shared/{chunk-DQ7PRWTG.js.map → chunk-ZEFOWKYP.js.map} +1 -1
  265. package/dist/shared/chunk-ZGQ3AQBG.js +33 -0
  266. package/dist/shared/chunk-ZGQ3AQBG.js.map +1 -0
  267. package/dist/shared/chunk-ZLYIRH2B.js +68 -0
  268. package/dist/shared/{chunk-SWLUQVK7.js.map → chunk-ZLYIRH2B.js.map} +1 -1
  269. package/dist/shared/chunk-ZR6R6Z6O.js +496 -0
  270. package/dist/shared/chunk-ZR6R6Z6O.js.map +1 -0
  271. package/dist/shared/chunk-ZRRAK5NS.js +432 -0
  272. package/dist/shared/chunk-ZRRAK5NS.js.map +1 -0
  273. package/dist/shared/context.d.ts +1 -0
  274. package/dist/shared/context.d.ts.map +1 -1
  275. package/dist/shared/datarecords/external/airtable/handler.js +377 -1
  276. package/dist/shared/datarecords/external/airtable/handler.js.map +1 -1
  277. package/dist/shared/datarecords/external/airtable/oauth/config.js +15 -1
  278. package/dist/shared/datarecords/external/airtable/oauth/config.js.map +1 -1
  279. package/dist/shared/datarecords/external/airtable/types.js +11 -1
  280. package/dist/shared/datarecords/external/generic-webhook/handler.js +14 -1
  281. package/dist/shared/datarecords/external/generic-webhook/handler.js.map +1 -1
  282. package/dist/shared/datarecords/external/generic-webhook/options.js +16 -1
  283. package/dist/shared/datarecords/external/generic-webhook/options.js.map +1 -1
  284. package/dist/shared/datarecords/external/google/oauth/config.js +35 -1
  285. package/dist/shared/datarecords/external/google/oauth/config.js.map +1 -1
  286. package/dist/shared/datarecords/external/google/sheets/client.js +7 -1
  287. package/dist/shared/datarecords/external/google/sheets/handler.js +184 -5
  288. package/dist/shared/datarecords/external/google/sheets/handler.js.map +1 -1
  289. package/dist/shared/datarecords/external/google/sheets/types.js +7 -1
  290. package/dist/shared/datarecords/external/notion/handler.js +397 -1
  291. package/dist/shared/datarecords/external/notion/handler.js.map +1 -1
  292. package/dist/shared/datarecords/external/notion/oauth/config.js +11 -1
  293. package/dist/shared/datarecords/external/notion/oauth/config.js.map +1 -1
  294. package/dist/shared/datarecords/external/notion/types.js +7 -1
  295. package/dist/shared/datarecords/types.d.ts +6 -59
  296. package/dist/shared/datarecords/types.d.ts.map +1 -1
  297. package/dist/shared/datarecords/types.js +14 -1
  298. package/dist/shared/datarecords.js +9 -1
  299. package/dist/shared/datarecords.js.map +1 -1
  300. package/dist/shared/datasources/external/facebook/posts/fetcher.js +49 -1
  301. package/dist/shared/datasources/external/facebook/posts/fetcher.js.map +1 -1
  302. package/dist/shared/datasources/external/facebook/posts/schema.js +36 -1
  303. package/dist/shared/datasources/external/facebook/posts/schema.js.map +1 -1
  304. package/dist/shared/datasources/external/http-json/fetcher.js +29 -1
  305. package/dist/shared/datasources/external/http-json/fetcher.js.map +1 -1
  306. package/dist/shared/datasources/external/http-json/options.js +11 -1
  307. package/dist/shared/datasources/external/http-json/options.js.map +1 -1
  308. package/dist/shared/datasources/external/http-json/schema.js +10 -1
  309. package/dist/shared/datasources/external/http-json/schema.js.map +1 -1
  310. package/dist/shared/datasources/external/instagram/feed/fetcher.js +29 -1
  311. package/dist/shared/datasources/external/instagram/feed/fetcher.js.map +1 -1
  312. package/dist/shared/datasources/external/instagram/feed/schema.js +26 -1
  313. package/dist/shared/datasources/external/instagram/feed/schema.js.map +1 -1
  314. package/dist/shared/datasources/external/mastodon/account/fetcher.js +7 -1
  315. package/dist/shared/datasources/external/mastodon/account/schema.js +7 -1
  316. package/dist/shared/datasources/external/mastodon/options.js +10 -1
  317. package/dist/shared/datasources/external/mastodon/options.js.map +1 -1
  318. package/dist/shared/datasources/external/mastodon/status/fetcher.js +31 -1
  319. package/dist/shared/datasources/external/mastodon/status/fetcher.js.map +1 -1
  320. package/dist/shared/datasources/external/mastodon/status/sample.array.js +61 -1
  321. package/dist/shared/datasources/external/mastodon/status/sample.array.js.map +1 -1
  322. package/dist/shared/datasources/external/mastodon/status/sample.single.js +59 -1
  323. package/dist/shared/datasources/external/mastodon/status/sample.single.js.map +1 -1
  324. package/dist/shared/datasources/external/mastodon/status/schema.js +125 -1
  325. package/dist/shared/datasources/external/mastodon/status/schema.js.map +1 -1
  326. package/dist/shared/datasources/external/meta/oauth/config.js +17 -1
  327. package/dist/shared/datasources/external/meta/oauth/config.js.map +1 -1
  328. package/dist/shared/datasources/external/meta/options.js +10 -1
  329. package/dist/shared/datasources/external/meta/options.js.map +1 -1
  330. package/dist/shared/datasources/external/rss/fetcher.js +26 -1
  331. package/dist/shared/datasources/external/rss/fetcher.js.map +1 -1
  332. package/dist/shared/datasources/external/rss/options.js +10 -1
  333. package/dist/shared/datasources/external/rss/options.js.map +1 -1
  334. package/dist/shared/datasources/external/rss/schema.js +7 -1
  335. package/dist/shared/datasources/external/threads/media/fetcher.js +47 -1
  336. package/dist/shared/datasources/external/threads/media/fetcher.js.map +1 -1
  337. package/dist/shared/datasources/external/threads/media/schema.js +40 -1
  338. package/dist/shared/datasources/external/threads/media/schema.js.map +1 -1
  339. package/dist/shared/datasources/external/tiktok/oauth/config.js +18 -1
  340. package/dist/shared/datasources/external/tiktok/oauth/config.js.map +1 -1
  341. package/dist/shared/datasources/external/tiktok/video/fetcher.js +34 -1
  342. package/dist/shared/datasources/external/tiktok/video/fetcher.js.map +1 -1
  343. package/dist/shared/datasources/external/tiktok/video/options.js +11 -1
  344. package/dist/shared/datasources/external/tiktok/video/options.js.map +1 -1
  345. package/dist/shared/datasources/external/tiktok/video/schema.js +30 -1
  346. package/dist/shared/datasources/external/tiktok/video/schema.js.map +1 -1
  347. package/dist/shared/datasources/external/youtube/list/fetcher.js +32 -1
  348. package/dist/shared/datasources/external/youtube/list/fetcher.js.map +1 -1
  349. package/dist/shared/datasources/external/youtube/list/options.js +14 -1
  350. package/dist/shared/datasources/external/youtube/list/options.js.map +1 -1
  351. package/dist/shared/datasources/external/youtube/list/schema.js +7 -1
  352. package/dist/shared/datasources/external/youtube/oauth/config.js +18 -1
  353. package/dist/shared/datasources/external/youtube/oauth/config.js.map +1 -1
  354. package/dist/shared/datasources/internal/blog/schema.js +72 -1
  355. package/dist/shared/datasources/internal/blog/schema.js.map +1 -1
  356. package/dist/shared/datasources/internal/changelog/schema.js +51 -1
  357. package/dist/shared/datasources/internal/changelog/schema.js.map +1 -1
  358. package/dist/shared/datasources/internal/contact-info/schema.js +25 -1
  359. package/dist/shared/datasources/internal/contact-info/schema.js.map +1 -1
  360. package/dist/shared/datasources/internal/cv/schema.js +222 -1
  361. package/dist/shared/datasources/internal/cv/schema.js.map +1 -1
  362. package/dist/shared/datasources/internal/faq/schema.js +30 -1
  363. package/dist/shared/datasources/internal/faq/schema.js.map +1 -1
  364. package/dist/shared/datasources/internal/job-board/schema.js +224 -1
  365. package/dist/shared/datasources/internal/job-board/schema.js.map +1 -1
  366. package/dist/shared/datasources/internal/links/schema.js +7 -1
  367. package/dist/shared/datasources/internal/recipes/schema.js +45 -1
  368. package/dist/shared/datasources/internal/recipes/schema.js.map +1 -1
  369. package/dist/shared/datasources/internal/restaurant/schema.js +226 -1
  370. package/dist/shared/datasources/internal/restaurant/schema.js.map +1 -1
  371. package/dist/shared/datasources/samples.js +69 -1
  372. package/dist/shared/datasources/samples.js.map +1 -1
  373. package/dist/shared/datasources/schemas.js +34 -1
  374. package/dist/shared/datasources/schemas.js.map +1 -1
  375. package/dist/shared/datasources/types.d.ts +1 -1
  376. package/dist/shared/datasources/types.d.ts.map +1 -1
  377. package/dist/shared/datasources/types.js +32 -1
  378. package/dist/shared/datasources/utils.js +11 -1
  379. package/dist/shared/datasources.d.ts +1 -1
  380. package/dist/shared/datasources.d.ts.map +1 -1
  381. package/dist/shared/datasources.js +49 -1
  382. package/dist/shared/datasources.js.map +1 -1
  383. package/dist/shared/errors.js +7 -1
  384. package/dist/shared/images.d.ts +4 -4
  385. package/dist/shared/images.d.ts.map +1 -1
  386. package/dist/shared/images.js +44 -1
  387. package/dist/shared/images.js.map +1 -1
  388. package/dist/shared/index.js +9 -1
  389. package/dist/shared/index.js.map +1 -1
  390. package/dist/shared/layout-constants.js +14 -1
  391. package/dist/shared/layout-constants.js.map +1 -1
  392. package/dist/shared/manifest.js +52 -1
  393. package/dist/shared/manifest.js.map +1 -1
  394. package/dist/shared/oauth.js +8 -1
  395. package/dist/shared/page.d.ts +12 -126
  396. package/dist/shared/page.d.ts.map +1 -1
  397. package/dist/shared/page.js +58 -1
  398. package/dist/shared/prompt.js +7 -1
  399. package/dist/shared/responsive.js +10 -1
  400. package/dist/shared/responsive.js.map +1 -1
  401. package/dist/shared/site.d.ts +34 -31
  402. package/dist/shared/site.d.ts.map +1 -1
  403. package/dist/shared/site.js +127 -1
  404. package/dist/shared/site.js.map +1 -1
  405. package/dist/shared/sitemap.d.ts +13 -12
  406. package/dist/shared/sitemap.d.ts.map +1 -1
  407. package/dist/shared/sitemap.js +69 -1
  408. package/dist/shared/social-icons.js +312 -1
  409. package/dist/shared/social-icons.js.map +1 -1
  410. package/dist/shared/tests/schema-registry.test.d.ts +2 -0
  411. package/dist/shared/tests/schema-registry.test.d.ts.map +1 -0
  412. package/dist/shared/theme.d.ts +1 -1
  413. package/dist/shared/theme.d.ts.map +1 -1
  414. package/dist/shared/theme.js +35 -1
  415. package/dist/shared/themes/color-system.js +103 -1
  416. package/dist/shared/themes/color-system.js.map +1 -1
  417. package/dist/shared/utils/canvas-data-uri.js +7 -1
  418. package/dist/shared/utils/canvas-data-uri.js.map +1 -1
  419. package/dist/shared/utils/invariant.js +7 -1
  420. package/dist/shared/utils/json-date.js +7 -1
  421. package/dist/shared/utils/llm.d.ts +2 -3
  422. package/dist/shared/utils/llm.d.ts.map +1 -1
  423. package/dist/shared/utils/llm.js +24 -1
  424. package/dist/shared/utils/merge.js +7 -1
  425. package/dist/shared/utils/object-hash.js +13 -1
  426. package/dist/shared/utils/object-hash.js.map +1 -1
  427. package/dist/shared/utils/schema-registry.d.ts +5 -0
  428. package/dist/shared/utils/schema-registry.d.ts.map +1 -0
  429. package/dist/shared/utils/schema-registry.js +29 -0
  430. package/dist/shared/utils/schema-registry.js.map +1 -0
  431. package/dist/shared/utils/schema.d.ts +2 -1
  432. package/dist/shared/utils/schema.d.ts.map +1 -1
  433. package/dist/shared/utils/schema.js +31 -1
  434. package/dist/shared/utils/string-enum.js +7 -1
  435. package/dist/shared/utils/tests/schema-registry.test.d.ts +2 -0
  436. package/dist/shared/utils/tests/schema-registry.test.d.ts.map +1 -0
  437. package/dist/shared/utils/try-catch.js +13 -1
  438. package/dist/shared/utils/try-catch.js.map +1 -1
  439. package/dist/shared/utils/typed-ref.js +7 -1
  440. package/package.json +9 -10
  441. package/src/shared/ai/schemas.ts +44 -12
  442. package/src/shared/ai/types.ts +135 -59
  443. package/src/shared/attributes.ts +37 -27
  444. package/src/shared/bricks/manifests/_types.ts +9 -0
  445. package/src/shared/bricks/manifests/accordion.manifest.ts +128 -161
  446. package/src/shared/bricks/manifests/all-manifests.ts +16 -0
  447. package/src/shared/bricks/manifests/box.manifest.ts +195 -129
  448. package/src/shared/bricks/manifests/button.manifest.ts +158 -71
  449. package/src/shared/bricks/manifests/card.manifest.ts +200 -28
  450. package/src/shared/bricks/manifests/carousel.manifest.ts +154 -22
  451. package/src/shared/bricks/manifests/footer.manifest.ts +38 -32
  452. package/src/shared/bricks/manifests/form.manifest.ts +122 -7
  453. package/src/shared/bricks/manifests/hero.manifest.ts +103 -18
  454. package/src/shared/bricks/manifests/html.manifest.ts +2 -5
  455. package/src/shared/bricks/manifests/icon.manifest.ts +216 -36
  456. package/src/shared/bricks/manifests/image.manifest.ts +103 -2
  457. package/src/shared/bricks/manifests/images-gallery.manifest.ts +2 -5
  458. package/src/shared/bricks/manifests/map.manifest.ts +2 -5
  459. package/src/shared/bricks/manifests/navbar.manifest.ts +3 -8
  460. package/src/shared/bricks/manifests/sidebar.manifest.ts +2 -5
  461. package/src/shared/bricks/manifests/social-links.manifest.ts +2 -5
  462. package/src/shared/bricks/manifests/spacer.manifest.ts +2 -5
  463. package/src/shared/bricks/manifests/table.manifest.ts +440 -0
  464. package/src/shared/bricks/manifests/tabs.manifest.ts +573 -0
  465. package/src/shared/bricks/manifests/testimonials.manifest.ts +2 -5
  466. package/src/shared/bricks/manifests/text.manifest.ts +31 -10
  467. package/src/shared/bricks/manifests/timeline.manifest.ts +438 -0
  468. package/src/shared/bricks/manifests/video.manifest.ts +2 -5
  469. package/src/shared/bricks/props/color-preset.ts +3 -1
  470. package/src/shared/bricks/props/dynamic.ts +0 -1
  471. package/src/shared/bricks/props/string.ts +1 -1
  472. package/src/shared/bricks.ts +61 -49
  473. package/src/shared/context.ts +1 -0
  474. package/src/shared/datarecords/types.ts +47 -37
  475. package/src/shared/datasources/types.ts +1 -5
  476. package/src/shared/datasources.ts +2 -4
  477. package/src/shared/images.ts +10 -8
  478. package/src/shared/page.ts +0 -5
  479. package/src/shared/site.ts +3 -3
  480. package/src/shared/sitemap.ts +14 -16
  481. package/src/shared/tests/schema-registry.test.ts +12 -0
  482. package/src/shared/theme.ts +1 -4
  483. package/src/shared/utils/llm.ts +13 -12
  484. package/src/shared/utils/schema-registry.ts +82 -0
  485. package/src/shared/utils/schema.ts +18 -3
  486. package/src/shared/utils/tests/schema-registry.test.ts +13 -0
  487. package/src/shared/utils/tests/schema.test.ts +124 -56
  488. package/dist/shared/bricks/props/enum.d.ts +0 -13
  489. package/dist/shared/bricks/props/enum.d.ts.map +0 -1
  490. package/dist/shared/chunk-3YVJ2ELD.js +0 -4
  491. package/dist/shared/chunk-4BTB3MU2.js +0 -4
  492. package/dist/shared/chunk-4WDWJA3N.js +0 -4
  493. package/dist/shared/chunk-5O4Z3YQY.js +0 -4
  494. package/dist/shared/chunk-5YRC3IT3.js +0 -4
  495. package/dist/shared/chunk-6HLU4UI2.js +0 -4
  496. package/dist/shared/chunk-6I3ONVU6.js +0 -4
  497. package/dist/shared/chunk-7A2JNQX3.js +0 -4
  498. package/dist/shared/chunk-7A2JNQX3.js.map +0 -1
  499. package/dist/shared/chunk-A3GF4PYW.js +0 -4
  500. package/dist/shared/chunk-A3GF4PYW.js.map +0 -1
  501. package/dist/shared/chunk-A3K4NUVP.js +0 -4
  502. package/dist/shared/chunk-A3K4NUVP.js.map +0 -1
  503. package/dist/shared/chunk-AFVJZPLS.js +0 -4
  504. package/dist/shared/chunk-AFVJZPLS.js.map +0 -1
  505. package/dist/shared/chunk-AI4GHU7R.js +0 -4
  506. package/dist/shared/chunk-AI4GHU7R.js.map +0 -1
  507. package/dist/shared/chunk-B3EATRFX.js +0 -4
  508. package/dist/shared/chunk-B3EATRFX.js.map +0 -1
  509. package/dist/shared/chunk-CCI4C3TM.js +0 -4
  510. package/dist/shared/chunk-CFF6Q7O7.js +0 -7
  511. package/dist/shared/chunk-CFF6Q7O7.js.map +0 -1
  512. package/dist/shared/chunk-CZRCW5EN.js +0 -4
  513. package/dist/shared/chunk-DCH4ZKWT.js +0 -4
  514. package/dist/shared/chunk-DHI3IBOD.js +0 -4
  515. package/dist/shared/chunk-DQ7PRWTG.js +0 -4
  516. package/dist/shared/chunk-E6XEI7IK.js +0 -4
  517. package/dist/shared/chunk-E6XEI7IK.js.map +0 -1
  518. package/dist/shared/chunk-FLOMNC6J.js +0 -4
  519. package/dist/shared/chunk-FLOMNC6J.js.map +0 -1
  520. package/dist/shared/chunk-G5CJU6RD.js +0 -7
  521. package/dist/shared/chunk-G5CJU6RD.js.map +0 -1
  522. package/dist/shared/chunk-GACHLACT.js +0 -4
  523. package/dist/shared/chunk-GLS7HPIZ.js +0 -4
  524. package/dist/shared/chunk-GOMXZC4B.js +0 -35
  525. package/dist/shared/chunk-GOMXZC4B.js.map +0 -1
  526. package/dist/shared/chunk-GPEMPZXK.js +0 -4
  527. package/dist/shared/chunk-HAGKVQOW.js +0 -4
  528. package/dist/shared/chunk-I3VL6SRH.js +0 -9
  529. package/dist/shared/chunk-I3VL6SRH.js.map +0 -1
  530. package/dist/shared/chunk-IKC3FK7L.js +0 -4
  531. package/dist/shared/chunk-IKC3FK7L.js.map +0 -1
  532. package/dist/shared/chunk-IKHZD2JH.js +0 -4
  533. package/dist/shared/chunk-IKHZD2JH.js.map +0 -1
  534. package/dist/shared/chunk-IUXCWWGO.js +0 -4
  535. package/dist/shared/chunk-JMN3HTZU.js +0 -4
  536. package/dist/shared/chunk-KBHDY425.js +0 -4
  537. package/dist/shared/chunk-KFM6KXSE.js +0 -4
  538. package/dist/shared/chunk-KLD3P5XH.js +0 -4
  539. package/dist/shared/chunk-KO5FPOWZ.js +0 -4
  540. package/dist/shared/chunk-KSEURRVZ.js +0 -4
  541. package/dist/shared/chunk-KYY3PHP7.js +0 -4
  542. package/dist/shared/chunk-NJGXC7D6.js +0 -4
  543. package/dist/shared/chunk-NJGXC7D6.js.map +0 -1
  544. package/dist/shared/chunk-NM5MMPCF.js +0 -4
  545. package/dist/shared/chunk-OGBMYMZD.js +0 -4
  546. package/dist/shared/chunk-OGBMYMZD.js.map +0 -1
  547. package/dist/shared/chunk-OHNYCXPX.js +0 -4
  548. package/dist/shared/chunk-OIY3EPHO.js +0 -4
  549. package/dist/shared/chunk-PIG623TZ.js +0 -4
  550. package/dist/shared/chunk-PIG623TZ.js.map +0 -1
  551. package/dist/shared/chunk-PLSV746R.js +0 -4
  552. package/dist/shared/chunk-PLSV746R.js.map +0 -1
  553. package/dist/shared/chunk-PSCN3VVA.js +0 -4
  554. package/dist/shared/chunk-PSCN3VVA.js.map +0 -1
  555. package/dist/shared/chunk-PSTFJ5IJ.js +0 -4
  556. package/dist/shared/chunk-PSTFJ5IJ.js.map +0 -1
  557. package/dist/shared/chunk-PXI7AHWS.js +0 -4
  558. package/dist/shared/chunk-PXI7AHWS.js.map +0 -1
  559. package/dist/shared/chunk-Q4H4QEMB.js +0 -4
  560. package/dist/shared/chunk-QGYZ7CG5.js +0 -4
  561. package/dist/shared/chunk-QGYZ7CG5.js.map +0 -1
  562. package/dist/shared/chunk-QWGUMKZC.js +0 -4
  563. package/dist/shared/chunk-QX6OGRRT.js +0 -5
  564. package/dist/shared/chunk-QX6OGRRT.js.map +0 -1
  565. package/dist/shared/chunk-R6ATC4TC.js +0 -4
  566. package/dist/shared/chunk-R6ATC4TC.js.map +0 -1
  567. package/dist/shared/chunk-RDZK73KV.js +0 -4
  568. package/dist/shared/chunk-RJYZ5FAR.js +0 -4
  569. package/dist/shared/chunk-SQ5T4AT5.js +0 -6
  570. package/dist/shared/chunk-SQ5T4AT5.js.map +0 -1
  571. package/dist/shared/chunk-SWLUQVK7.js +0 -4
  572. package/dist/shared/chunk-SXHDQ64Z.js +0 -5
  573. package/dist/shared/chunk-SXHDQ64Z.js.map +0 -1
  574. package/dist/shared/chunk-SY6DZLTC.js +0 -4
  575. package/dist/shared/chunk-SY6DZLTC.js.map +0 -1
  576. package/dist/shared/chunk-VEDQV5XO.js +0 -4
  577. package/dist/shared/chunk-W33JMRRN.js +0 -4
  578. package/dist/shared/chunk-WBZW5LVH.js +0 -4
  579. package/dist/shared/chunk-WBZW5LVH.js.map +0 -1
  580. package/dist/shared/chunk-WHTPGWUV.js +0 -4
  581. package/dist/shared/chunk-WYVJE6J5.js +0 -4
  582. package/dist/shared/chunk-WYVJE6J5.js.map +0 -1
  583. package/dist/shared/chunk-ZA3GAB4H.js +0 -9
  584. package/dist/shared/chunk-ZFCUSWMT.js +0 -4
  585. package/dist/shared/chunk-ZQPXQCY2.js +0 -4
  586. package/dist/shared/chunk-ZQPXQCY2.js.map +0 -1
  587. package/dist/shared/chunk-ZTZJHY4E.js +0 -4
  588. package/src/shared/bricks/props/enum.ts +0 -38
  589. /package/dist/shared/bricks/{props/enum.js.map → manifests/_types.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import type { TObject, TSchema } from "@sinclair/typebox";
2
2
  import { createAJVInstance } from "../ajv";
3
3
  import { cloneDeep } from "lodash-es";
4
- import type Ajv from "ajv";
4
+ import { schemaRegistry } from "./schema-registry";
5
5
 
6
6
  /**
7
7
  * Clean all properties from custom metadata recursively. Custom metadata are key that:
@@ -9,8 +9,8 @@ import type Ajv from "ajv";
9
9
  * - Or starting with "ui:"
10
10
  * Also removes properties that have "ai:hidden" set to true
11
11
  */
12
- export function toLLMSchema<T extends TSchema = TObject>(schema: T, ajv?: Ajv): T {
13
- return cleanSchemaRecursive(inlineSchemaRefs(schema, ajv ?? createAJVInstance())) as T;
12
+ export function toLLMSchema<T extends TSchema = TObject>(schema: T): T {
13
+ return cleanSchemaRecursive(inlineSchemaRefs(schema)) as T;
14
14
  }
15
15
 
16
16
  /**
@@ -107,7 +107,7 @@ interface SchemaWithDefs extends TSchema {
107
107
  * @param ajv - The AJV instance containing the referenced schemas
108
108
  * @returns A new schema with references inlined in $defs
109
109
  */
110
- export function inlineSchemaRefs<T extends TSchema>(schema: T, ajv: Ajv) {
110
+ export function inlineSchemaRefs<T extends TSchema>(schema: T) {
111
111
  //
112
112
  const inlinedSchema = cloneDeep(schema) as T & SchemaWithDefs;
113
113
  // const inlinedSchema = JSON.parse(JSON.stringify(schema)) as T & SchemaWithDefs;
@@ -171,11 +171,12 @@ export function inlineSchemaRefs<T extends TSchema>(schema: T, ajv: Ajv) {
171
171
 
172
172
  // Process each collected reference
173
173
  for (const refId of collectedRefs) {
174
- // Get the schema from AJV
175
- const referencedSchema = ajv.getSchema(refId);
174
+ // Get the schema from the registry
175
+ const referencedSchema = schemaRegistry.get(refId);
176
176
 
177
- if (!referencedSchema?.schema) {
178
- // console.log(`Schema with ID "${refId}" not found in AJV instance`, { referencedSchema });
177
+ if (!referencedSchema) {
178
+ // console.error(`Schema with ID "${refId}" not found in schema registry`, { referencedSchema });
179
+ // throw new Error(`Schema with ID "${refId}" not found in schema registry`);
179
180
  continue;
180
181
  }
181
182
 
@@ -197,7 +198,7 @@ export function inlineSchemaRefs<T extends TSchema>(schema: T, ajv: Ajv) {
197
198
  }
198
199
 
199
200
  // Add to $defs
200
- const { $id, ...schemaWithoutId } = referencedSchema.schema as TSchema;
201
+ const { $id, ...schemaWithoutId } = referencedSchema;
201
202
  inlinedSchema.$defs![uniqueDefKey] = schemaWithoutId;
202
203
 
203
204
  // Map original reference to local reference
@@ -253,8 +254,8 @@ export function inlineSchemaRefs<T extends TSchema>(schema: T, ajv: Ajv) {
253
254
 
254
255
  // Add all newly found references to $defs
255
256
  for (const refId of newRefsFound) {
256
- const referencedSchema = ajv.getSchema(refId);
257
- if (referencedSchema?.schema) {
257
+ const referencedSchema = schemaRegistry.get(refId);
258
+ if (referencedSchema) {
258
259
  const newDefKey =
259
260
  refId.replace(/[^a-zA-Z0-9_-]/g, "_").replace(/^_+|_+$/g, "") ||
260
261
  `ref_${Object.keys(finalSchema.$defs).length}`;
@@ -266,7 +267,7 @@ export function inlineSchemaRefs<T extends TSchema>(schema: T, ajv: Ajv) {
266
267
  counter++;
267
268
  }
268
269
 
269
- finalSchema.$defs[uniqueNewDefKey] = referencedSchema.schema as TSchema;
270
+ finalSchema.$defs[uniqueNewDefKey] = referencedSchema;
270
271
  refToLocalMap.set(refId, `#/$defs/${uniqueNewDefKey}`);
271
272
  }
272
273
  }
@@ -0,0 +1,82 @@
1
+ import type { TSchema } from "@sinclair/typebox";
2
+ import { alignItems, alignSelf, justifyContent } from "../bricks/props/align";
3
+ import { background, backgroundColor } from "../bricks/props/background";
4
+ import { border, rounding } from "../bricks/props/border";
5
+ import { borderColor, color } from "../bricks/props/color";
6
+ import { hidden } from "../bricks/props/common";
7
+ import { cssLength } from "../bricks/props/css-length";
8
+ import { shadow, textShadow } from "../bricks/props/effects";
9
+ import { fontSize, textContent } from "../bricks/props/text";
10
+ import { icon, urlOrPageId } from "../bricks/props/string";
11
+ import { colorPreset } from "../bricks/props/color-preset";
12
+ import { image } from "../bricks/props/image";
13
+ import { direction } from "../bricks/props/direction";
14
+ import { loop, queryUse } from "../bricks/props/dynamic";
15
+ import { tags } from "../bricks/props/tags";
16
+
17
+ export const schemaRegistry = new Map<string, TSchema>();
18
+
19
+ export function registerSchema(id: string, schema: TSchema) {
20
+ schemaRegistry.set(id, schema);
21
+ }
22
+
23
+ export function unregisterSchema(id: string) {
24
+ schemaRegistry.delete(id);
25
+ }
26
+
27
+ registerSchema("styles:background", background());
28
+ registerSchema("styles:backgroundColor", backgroundColor());
29
+ registerSchema("styles:justifyContent", justifyContent());
30
+ registerSchema("styles:alignItems", alignItems());
31
+ registerSchema("styles:alignSelf", alignSelf());
32
+ registerSchema("styles:rounding", rounding());
33
+ registerSchema("styles:fontSize", fontSize());
34
+ registerSchema("styles:hidden", hidden());
35
+ registerSchema("styles:direction", direction());
36
+ registerSchema("styles:border", border());
37
+ registerSchema("styles:color", color());
38
+ registerSchema("styles:borderColor", borderColor());
39
+ registerSchema("styles:shadow", shadow());
40
+ registerSchema("styles:textShadow", textShadow());
41
+ registerSchema("styles:cssLength", cssLength());
42
+ registerSchema("assets:image", image());
43
+ registerSchema("assets:icon", icon());
44
+ registerSchema("content:text", textContent());
45
+ registerSchema("content:urlOrPageId", urlOrPageId());
46
+ registerSchema("content:loop", loop());
47
+ registerSchema("content:queryUse", queryUse());
48
+ registerSchema("presets:color", colorPreset());
49
+ registerSchema("content:tags", tags());
50
+
51
+ /**
52
+ */
53
+ function consolidateRefs() {
54
+ // Helper to recursively resolve $refs in a schema
55
+ function resolveRefs(schema: TSchema, visited: Set<TSchema> = new Set()) {
56
+ if (!schema || typeof schema !== "object" || visited.has(schema)) return schema;
57
+ visited.add(schema);
58
+ if ("$ref" in schema && typeof (schema as TSchema).$ref === "string") {
59
+ const refSchema = schemaRegistry.get((schema as TSchema).$ref);
60
+ if (refSchema) {
61
+ // Recursively resolve refs in the referenced schema
62
+ return resolveRefs(refSchema, visited);
63
+ }
64
+ }
65
+ for (const key of Object.keys(schema)) {
66
+ const value = (schema as TSchema)[key];
67
+ if (Array.isArray(value)) {
68
+ (schema as TSchema)[key] = value.map((item: TSchema) => resolveRefs(item, visited));
69
+ } else if (typeof value === "object" && value !== null) {
70
+ (schema as TSchema)[key] = resolveRefs(value as TSchema, visited);
71
+ }
72
+ }
73
+ return schema;
74
+ }
75
+
76
+ // Rewrite all schemas in the registry to resolve $refs
77
+ for (const [id, schema] of schemaRegistry.entries()) {
78
+ schemaRegistry.set(id, resolveRefs(schema));
79
+ }
80
+ }
81
+
82
+ consolidateRefs();
@@ -1,6 +1,8 @@
1
- import { type TArray, type TObject, type TSchema, Kind } from "@sinclair/typebox";
1
+ import { type TArray, type TObject, type TSchema, Kind, type Static } from "@sinclair/typebox";
2
2
  import type { PageAttributes } from "../attributes";
3
- import { ajv } from "../ajv";
3
+ import { schemaRegistry } from "./schema-registry";
4
+ import { Cabidela } from "@cloudflare/cabidela";
5
+ import { defaultsDeep as applyDefaultsDeep } from "lodash-es";
4
6
 
5
7
  export function normalizeSchemaEnum(schema: TSchema): Array<{ const: string; title: string }> {
6
8
  if (!("enum" in schema)) {
@@ -149,7 +151,7 @@ function resolveSchemaRecursive(schema: TSchema, visited: Set<string>): TSchema
149
151
  return schema; // Return original schema to avoid infinite loop
150
152
  }
151
153
 
152
- const resolved = ajv.getSchema(schema.$ref)?.schema as TSchema;
154
+ const resolved = schemaRegistry.get(schema.$ref);
153
155
  if (!resolved) {
154
156
  console.error("Schema not found for reference:", schema);
155
157
  return schema;
@@ -357,3 +359,16 @@ function resolveSchemaRecursive(schema: TSchema, visited: Set<string>): TSchema
357
359
 
358
360
  return resolvedSchema as TSchema;
359
361
  }
362
+
363
+ export function validate<T extends TSchema>(schema: TSchema, data: unknown): data is Static<T> {
364
+ const validator = new Cabidela(schema, {
365
+ fullErrors: true,
366
+ });
367
+ validator.validate(data);
368
+
369
+ // Mutate data with defaults
370
+ const defaults = getSchemaDefaults(schema as TObject | TArray);
371
+ applyDefaultsDeep(data, defaults);
372
+
373
+ return true;
374
+ }
@@ -0,0 +1,13 @@
1
+ // Check taht schemaRegistry contains all schemas and that $refs are resolved
2
+ import { describe, it, expect } from "vitest";
3
+ import { schemaRegistry } from "../schema-registry";
4
+
5
+ describe("Schema Registry", () => {
6
+ it("should contain all registered schemas", () => {
7
+ expect(schemaRegistry.has("styles:background")).toBe(true);
8
+ expect(schemaRegistry.has("styles:justifyContent")).toBe(true);
9
+ expect(schemaRegistry.has("assets:image")).toBe(true);
10
+ expect(schemaRegistry.has("content:text")).toBe(true);
11
+ expect(schemaRegistry.has("styles:alignItems")).toBe(true);
12
+ });
13
+ });
@@ -1,23 +1,26 @@
1
- import { describe, expect, test, beforeEach, vi } from "vitest";
2
- import { Type } from "@sinclair/typebox";
3
- import { resolveSchema } from "../schema";
4
- import { toLLMSchema } from "../llm";
5
- import { ajv } from "../../ajv";
1
+ import { describe, expect, test, beforeEach } from "vitest";
2
+ import { type Static, Type } from "@sinclair/typebox";
3
+ import { resolveSchema, validate } from "../schema";
4
+ import { inlineSchemaRefs, toLLMSchema } from "../llm";
6
5
  import { sitemapSchema } from "~/shared/sitemap";
6
+ import type { Manifest } from "~/shared/bricks/manifests/text.manifest";
7
+ import { registerSchema, unregisterSchema } from "~/shared/utils/schema-registry";
8
+ import { makeFullBrickSchemaForLLM, type Section, sectionSchema, sectionSchemaLLM } from "~/shared/bricks";
9
+ import type { BrickProps } from "~/shared/bricks/props/types";
7
10
 
8
11
  describe("resolveSchema tests suite", () => {
9
12
  beforeEach(() => {
10
13
  // Clear any test schemas before each test
11
- ajv.removeSchema("test:simple");
12
- ajv.removeSchema("test:user");
13
- ajv.removeSchema("test:address");
14
- ajv.removeSchema("test:circular1");
15
- ajv.removeSchema("test:circular2");
16
- ajv.removeSchema("test:string");
17
- ajv.removeSchema("test:number");
18
- ajv.removeSchema("test:boolean");
19
- ajv.removeSchema("test:base");
20
- ajv.removeSchema("test:extended");
14
+ unregisterSchema("test:simple");
15
+ unregisterSchema("test:user");
16
+ unregisterSchema("test:address");
17
+ unregisterSchema("test:circular1");
18
+ unregisterSchema("test:circular2");
19
+ unregisterSchema("test:string");
20
+ unregisterSchema("test:number");
21
+ unregisterSchema("test:boolean");
22
+ unregisterSchema("test:base");
23
+ unregisterSchema("test:extended");
21
24
  });
22
25
 
23
26
  test("should return primitive types unchanged", () => {
@@ -44,7 +47,7 @@ describe("resolveSchema tests suite", () => {
44
47
  email: Type.String({ format: "email" }),
45
48
  });
46
49
 
47
- ajv.addSchema(userSchema, "test:user");
50
+ registerSchema("test:user", userSchema);
48
51
 
49
52
  const schemaWithRef = Type.Ref("test:user");
50
53
 
@@ -64,7 +67,7 @@ describe("resolveSchema tests suite", () => {
64
67
  city: Type.String(),
65
68
  });
66
69
 
67
- ajv.addSchema(addressSchema, "test:address");
70
+ registerSchema("test:address", addressSchema);
68
71
 
69
72
  const schema = Type.Object({
70
73
  name: Type.String(),
@@ -81,7 +84,7 @@ describe("resolveSchema tests suite", () => {
81
84
  id: Type.Number(),
82
85
  });
83
86
 
84
- ajv.addSchema(itemSchema, "test:simple");
87
+ registerSchema("test:simple", itemSchema);
85
88
 
86
89
  const schema = Type.Array(Type.Ref("test:simple"));
87
90
 
@@ -93,8 +96,8 @@ describe("resolveSchema tests suite", () => {
93
96
  const stringSchema = Type.String();
94
97
  const numberSchema = Type.Number();
95
98
 
96
- ajv.addSchema(stringSchema, "test:string");
97
- ajv.addSchema(numberSchema, "test:number");
99
+ registerSchema("test:string", stringSchema);
100
+ registerSchema("test:number", numberSchema);
98
101
 
99
102
  const schema = Type.Tuple([Type.Ref("test:string"), Type.Ref("test:number")]);
100
103
 
@@ -106,8 +109,8 @@ describe("resolveSchema tests suite", () => {
106
109
  const stringSchema = Type.String();
107
110
  const numberSchema = Type.Number();
108
111
 
109
- ajv.addSchema(stringSchema, "test:string");
110
- ajv.addSchema(numberSchema, "test:number");
112
+ registerSchema("test:string", stringSchema);
113
+ registerSchema("test:number", numberSchema);
111
114
 
112
115
  const schema = Type.Union([Type.Ref("test:string"), Type.Ref("test:number")]);
113
116
 
@@ -120,8 +123,8 @@ describe("resolveSchema tests suite", () => {
120
123
  const stringSchema = Type.String();
121
124
  const numberSchema = Type.Number();
122
125
 
123
- ajv.addSchema(stringSchema, "test:string");
124
- ajv.addSchema(numberSchema, "test:number");
126
+ registerSchema("test:string", stringSchema);
127
+ registerSchema("test:number", numberSchema);
125
128
 
126
129
  const schema = {
127
130
  oneOf: [Type.Ref("test:string"), Type.Ref("test:number")],
@@ -141,8 +144,8 @@ describe("resolveSchema tests suite", () => {
141
144
  name: Type.String(),
142
145
  });
143
146
 
144
- ajv.addSchema(baseSchema, "test:base");
145
- ajv.addSchema(extendedSchema, "test:extended");
147
+ registerSchema("test:base", baseSchema);
148
+ registerSchema("test:extended", extendedSchema);
146
149
 
147
150
  const schema = Type.Intersect([Type.Ref("test:base"), Type.Ref("test:extended")]);
148
151
 
@@ -155,7 +158,7 @@ describe("resolveSchema tests suite", () => {
155
158
  test("should resolve not schemas", () => {
156
159
  const stringSchema = Type.String();
157
160
 
158
- ajv.addSchema(stringSchema, "test:string");
161
+ registerSchema("test:string", stringSchema);
159
162
 
160
163
  const schema = Type.Not(Type.Ref("test:string"));
161
164
 
@@ -168,9 +171,9 @@ describe("resolveSchema tests suite", () => {
168
171
  const numberSchema = Type.Number();
169
172
  const booleanSchema = Type.Boolean();
170
173
 
171
- ajv.addSchema(stringSchema, "test:string");
172
- ajv.addSchema(numberSchema, "test:number");
173
- ajv.addSchema(booleanSchema, "test:boolean");
174
+ registerSchema("test:string", stringSchema);
175
+ registerSchema("test:number", numberSchema);
176
+ registerSchema("test:boolean", booleanSchema);
174
177
 
175
178
  const schema = {
176
179
  if: Type.Ref("test:string"),
@@ -223,8 +226,8 @@ describe("resolveSchema tests suite", () => {
223
226
  friends: Type.Array(Type.Ref("test:user")),
224
227
  });
225
228
 
226
- ajv.addSchema(personSchema, "test:user");
227
- ajv.addSchema(addressSchema, "test:address");
229
+ registerSchema("test:user", personSchema);
230
+ registerSchema("test:address", addressSchema);
228
231
 
229
232
  const schema = Type.Object({
230
233
  users: Type.Array(Type.Ref("test:user")),
@@ -239,30 +242,6 @@ describe("resolveSchema tests suite", () => {
239
242
  expect(result.properties.users.items.properties.address.type).toBe("object");
240
243
  expect(result.properties.users.items.properties.address.properties.street.type).toBe("string");
241
244
  });
242
-
243
- test("should handle refs in conditionals properly", () => {
244
- const stringSchema = Type.String();
245
- const numberSchema = Type.Number({ minimum: 0 });
246
-
247
- ajv.addSchema(stringSchema, "test:string");
248
- ajv.addSchema(numberSchema, "test:number");
249
-
250
- const schema = Type.Object({
251
- type: Type.String({ enum: ["string", "number"] }),
252
- value: {
253
- if: Type.Object({ type: Type.Const("string") }),
254
- // biome-ignore lint/suspicious/noThenProperty: Required for JSON schema conditional validation
255
- then: Type.Ref("test:string"),
256
- else: Type.Ref("test:number"),
257
- } as any,
258
- });
259
-
260
- const result = resolveSchema(schema);
261
-
262
- expect(result.properties.value.then.type).toEqual(stringSchema.type);
263
- expect(result.properties.value.else.type).toEqual(numberSchema.type);
264
- expect(result.properties.value.else.minimum).toBe(0);
265
- });
266
245
  });
267
246
 
268
247
  describe("toLLMSchema tests suite", () => {
@@ -721,4 +700,93 @@ describe("toLLMSchema tests suite", () => {
721
700
  const transformed = toLLMSchema(sitemapSchema);
722
701
  expect(transformed.items.properties.id.type).toEqual(sitemapSchema.items.properties.id.type);
723
702
  });
703
+
704
+ test("test with existing sectionSchema", () => {
705
+ const transformed = toLLMSchema(sectionSchema);
706
+ // console.dir({ transformed }, { depth: null });
707
+ expect(transformed.properties.props.type).toEqual(sectionSchema.properties.props.type);
708
+ });
709
+ });
710
+
711
+ describe("inlineSchemaRefs", () => {
712
+ test("should inline simple $ref schemas", () => {
713
+ const inlined = inlineSchemaRefs(sectionSchema);
714
+ expect(inlined.properties.props.properties.colorPreset.$ref).toEqual("#/$defs/presets_color");
715
+ expect(inlined.$defs.presets_color).toBeDefined();
716
+ expect(inlined.$defs.presets_color.type).toBe("object");
717
+ });
718
+ });
719
+
720
+ describe("toLLMSchema consistency", () => {
721
+ test("toLLMSchema(sectionSchema) should equal sectionSchemaLLM", () => {
722
+ const transformed = toLLMSchema(sectionSchema);
723
+ expect(transformed).toEqual(sectionSchemaLLM);
724
+
725
+ expect(transformed.$defs.presets_color).toBeDefined();
726
+ expect(transformed.$defs.presets_color.type).toBe("object");
727
+
728
+ expect(sectionSchemaLLM.$defs.presets_color).toBeDefined();
729
+ expect(sectionSchemaLLM.$defs.presets_color.type).toBe("object");
730
+ });
731
+ });
732
+
733
+ describe("validation with validate()", () => {
734
+ test("should validate correct schema", () => {
735
+ expect(sectionSchemaLLM.$defs.presets_color).toBeDefined();
736
+ expect(sectionSchemaLLM.$defs.presets_color.type).toBe("object");
737
+ const validSectionExample: Section = {
738
+ id: "section1",
739
+ label: "Hero Section",
740
+ order: 1,
741
+ props: {
742
+ colorPreset: {
743
+ color: "primary-100",
744
+ },
745
+ maxWidth: "max-w-full",
746
+ verticalMargin: "28px",
747
+ direction: "flex-col",
748
+ },
749
+ bricks: [],
750
+ };
751
+ expect(() => validate(sectionSchemaLLM, validSectionExample)).not.toThrow();
752
+ });
753
+
754
+ test("should validate a brick without mobileProps", () => {
755
+ const schema = makeFullBrickSchemaForLLM("text");
756
+ const example: BrickProps<Manifest>["brick"] = {
757
+ id: "test-brick-1",
758
+ type: "text",
759
+ props: {
760
+ content: "Hello, world!",
761
+ },
762
+ };
763
+ expect(() => validate(schema, example)).not.toThrow();
764
+ });
765
+
766
+ test("should validate a brick with partial mobileProps", () => {
767
+ const schema = makeFullBrickSchemaForLLM("text");
768
+ const example: BrickProps<Manifest>["brick"] = {
769
+ id: "test-brick-1",
770
+ type: "text",
771
+ props: {
772
+ content: "Hello, world!",
773
+ },
774
+ mobileProps: {},
775
+ };
776
+ expect(() => validate(schema, example)).not.toThrow();
777
+
778
+ const example2: BrickProps<Manifest>["brick"] = {
779
+ id: "test-brick-1",
780
+ type: "text",
781
+ props: {
782
+ content: "Hello, world!",
783
+ },
784
+ mobileProps: {
785
+ colorPreset: {
786
+ color: "primary-100",
787
+ },
788
+ },
789
+ };
790
+ expect(() => validate(schema, example2)).not.toThrow();
791
+ });
724
792
  });
@@ -1,13 +0,0 @@
1
- import { type SchemaOptions } from "@sinclair/typebox";
2
- type EnumOption = {
3
- title?: string;
4
- description?: string;
5
- value: string;
6
- icon?: string;
7
- };
8
- export declare function enumProp(title: string, defaultValue: string, opts: Omit<SchemaOptions, "title" | "default"> & {
9
- options: EnumOption[] | string[];
10
- displayAs?: "radio" | "select" | "button-group" | "icon-group";
11
- }): import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<string>[]>;
12
- export {};
13
- //# sourceMappingURL=enum.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../../../src/shared/bricks/props/enum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAQ,MAAM,mBAAmB,CAAC;AAE7D,KAAK,UAAU,GAAG;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,QAAQ,CACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC,GAAG;IAC/C,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,cAAc,GAAG,YAAY,CAAC;CAChE,sFAsBF"}
@@ -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 s}from"./chunk-W33JMRRN.js";import{Type as r}from"@sinclair/typebox";function c(t){return t.type==="object"}function l({title:t,children:e,category:o="settings",metadata:a,options:n}){return c(e)?r.Composite([r.Object({}),e],{title:t,metadata:{category:o,group:!0,...a},...n}):r.Object(e,{title:t,...n,metadata:{category:o,group:!0,...a}})}function m(t){let e=t.metadata;return{title:t.title??t.metadata?.title,meta:e,tab:e.groupTab||"common"}}function P(t,e){let o={...s,...t},{alignSelf:a,grow:n,...p}=o,i={...p,...e?.noAlignSelf?{}:{alignSelf:a},...e?.noGrow?{}:{grow:n}};return r.Object(i,{...e,additionalProperties:!1})}var T=r.Array;export{l as a,m as b,P as c,T as d};
4
- //# sourceMappingURL=chunk-3YVJ2ELD.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 o}from"./chunk-KFM6KXSE.js";import{a as e}from"./chunk-JMN3HTZU.js";import{Type as s}from"@sinclair/typebox";function d(t={}){return e(["shadow-none","shadow-sm","shadow-md","shadow-lg","shadow-xl","shadow-2xl"],{title:"Shadow",description:"Box shadow around the brick",enumNames:["None","Small","Medium","Large","XL","2XL"],"ui:placeholder":"Not specified","ui:field":"enum","ui:display":"select","ui:responsive":"desktop","ui:styleId":"styles:shadow",...t})}function u(t={}){return o("styles:shadow",t)}function r(t={}){return e(["text-shadow-none","text-shadow-sm","text-shadow-md","text-shadow-lg","text-shadow-xl"],{title:"Text shadow",enumNames:["None","S","M","L","XL"],"ui:display":"button-group","ui:placeholder":"Not specified","ui:field":"enum","ui:styleId":"styles:textShadow",examples:["text-shadow-sm","text-shadow-md","text-shadow-lg"],...t})}function m(t={}){return o("styles:textShadow",t)}function l({defaultValue:t=1,title:i="Opacity"}={}){return s.Number({title:i,minimum:.1,maximum:1,default:t,multipleOf:.1,"ui:field":"slider","ui:unit":"%","ui:multiplier":100,examples:[.5,.75,1]})}export{d as a,u as b,r as c,m as d,l as e};
4
- //# sourceMappingURL=chunk-4BTB3MU2.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.String({minLength:30,maxLength:500,description:"User prompt for the site, describing the purpose and main features of the site."});export{i as a};
4
- //# sourceMappingURL=chunk-4WDWJA3N.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({title:t.Optional(t.String({title:"Title",description:"The title of the RSS feed item"})),link:t.Optional(t.String({title:"Link",description:"The link to the RSS feed item"})),creator:t.Optional(t.String({title:"Creator",description:"The creator of the RSS feed item"})),content:t.Optional(t.String({title:"Content",description:"The content of the RSS feed item"})),pubDate:t.Optional(t.String({title:"Pub Date",description:"The publication date of the RSS feed item"}))}),{title:"RSS Feed",description:"RSS feed items"});export{i as a};
4
- //# sourceMappingURL=chunk-5O4Z3YQY.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 e}from"./chunk-KFM6KXSE.js";import{a as n}from"./chunk-JMN3HTZU.js";import{Type as s}from"@sinclair/typebox";function f(t={}){return n(["inherit","text-xs","text-sm","text-base","text-lg","text-xl"],{enumNames:["Same as parent","Extra small","Small","Medium","Large","Extra large"],default:"inherit",title:"Font size","ui:styleId":"styles:fontSize","ui:field":"enum","ui:display":"select",...t})}function g(t={}){return e("styles:fontSize",t)}function S(t={}){return n(["inherit","text-xs","text-sm","text-base","text-lg","text-xl","text-2xl","text-3xl","text-4xl","text-5xl","text-6xl","text-7xl"],{enumNames:["Same as parent","Extra small","Small","Medium","Large","Extra large","Extra large (2x)","Extra large (3x)","Extra large (4x)","Extra large (5x)","Extra large (6x)","Extra large (7x)"],default:"inherit",title:"Font size","ui:styleId":"styles:fontSize","ui:field":"enum","ui:display":"select",...t})}function m(t={}){return e("styles:fontSizeXL",t)}function d({title:t="Text",default:i,showInSettings:o,disableSizing:a=!1,disableAlignment:r=!1,...l}={}){return s.String({title:t,description:"Text content. Can contain basic HTML tags like `<strong>`, `<em>`, `<br>` and `<a>` as well as `<p>` and `<span>` and lists <ul> <ol> <li>.",default:i??"My text","ui:disable-sizing":a,"ui:disable-alignment":r,...l,"ui:field":o?"string":"hidden"})}function y(t={}){return e("content:text",t)}export{f as a,g as b,S as c,m as d,d as e,y as f};
4
- //# sourceMappingURL=chunk-5YRC3IT3.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{get as i}from"lodash-es";function a(t){return Object.fromEntries(Object.entries(t).map(([r,e])=>[r,e.toString()]))}function c(t){return function(e,n){let o=n.trim();return String(i(t,o))??""}}var g=/{{(.+?)}}/g;export{a,c as b,g as c};
4
- //# sourceMappingURL=chunk-6HLU4UI2.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";function i(t="Database",r){return e.String({"ui:field":"datarecord",title:t,...r})}export{i as a};
4
- //# sourceMappingURL=chunk-6I3ONVU6.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,d as i}from"./chunk-3YVJ2ELD.js";import{a}from"./chunk-RJYZ5FAR.js";import{a as u}from"./chunk-AFVJZPLS.js";import{b as n}from"./chunk-CCI4C3TM.js";import{a as e,d as r}from"./chunk-A3GF4PYW.js";import{b as o}from"./chunk-5YRC3IT3.js";import{c as s}from"./chunk-CZRCW5EN.js";import{c as l}from"./chunk-OHNYCXPX.js";import{Type as t}from"@sinclair/typebox";import{VscLayoutPanelOff as p}from"react-icons/vsc";var d=a({type:"footer",name:"Footer",category:"layout",description:"A footer with links and an optional logo.",aiInstructions:"This brick should be used on most sites/pages. It must be placed on its own section.",icon:p,staticClasses:"flex-1",isGlobalBrick:!0,hideInLibrary:!0,resizable:!1,movable:!1,defaultWidth:{desktop:"100%",mobile:"100%"},props:c({colorPreset:t.Optional(s({title:"Color preset",default:{color:"neutral-600"}})),padding:t.Optional(l({default:"4rem",description:"Padding inside the footer.",title:"Padding","ui:responsive":!0,"ui:placeholder":"Not specified","ui:styleId":"styles:padding"})),logo:t.Optional(n({title:"Logo","ui:no-object-options":!0,"ui:no-alt-text":!0})),fontSize:t.Optional(o({default:"text-sm","ui:no-extra-large-sizes":!0})),linksSections:i(t.Object({sectionTitle:e("Title"),links:i(t.Object({title:e("Title"),url:r()}),{title:"Links"})}),{default:[{sectionTitle:"Links",links:[{title:"Link",url:"/"}]}],title:"Links","ui:displayField":"sectionTitle","ui:options":{orderable:!0,removable:!0,addable:!0},description:"List of Links Sections",metadata:{category:"content"}})},{noGrow:!0,noAlignSelf:!0})});function C(){return u(d.props)}var P=[{description:"Simple footer with logo on the left",type:"footer",props:{logo:{src:"https://via.placeholder.com/120x40.png?text=Logo",alt:"Company logo"},linksSections:[{sectionTitle:"Quick Links",links:[{title:"Home",url:"/"},{title:"About",url:"/about"},{title:"Contact",url:"/contact"}]},{sectionTitle:"Legal",links:[{title:"Privacy Policy",url:"/privacy"},{title:"Terms of Service",url:"/terms"}]}]}},{description:"Corporate footer with centered logo",type:"footer",props:{logo:{src:"https://via.placeholder.com/150x50.png?text=Corporate",alt:"Corporate logo"},linksSections:[{sectionTitle:"Products",links:[{title:"Software Solutions",url:"/products/software"},{title:"Consulting",url:"/products/consulting"},{title:"Support",url:"/products/support"},{title:"Training",url:"/products/training"}]},{sectionTitle:"Company",links:[{title:"About Us",url:"/about"},{title:"Careers",url:"/careers"},{title:"News",url:"/news"},{title:"Investors",url:"/investors"}]},{sectionTitle:"Resources",links:[{title:"Documentation",url:"/docs"},{title:"API Reference",url:"/api"},{title:"Community",url:"/community"},{title:"Blog",url:"/blog"}]}]}},{description:"E-commerce footer with logo on the right",type:"footer",props:{logo:{src:"https://via.placeholder.com/140x45.png?text=Shop",alt:"Shop logo"},linksSections:[{sectionTitle:"Shop",links:[{title:"All Products",url:"/products"},{title:"New Arrivals",url:"/new"},{title:"Sale",url:"/sale"},{title:"Gift Cards",url:"/gift-cards"}]},{sectionTitle:"Customer Service",links:[{title:"Help Center",url:"/help"},{title:"Returns",url:"/returns"},{title:"Shipping Info",url:"/shipping"},{title:"Size Guide",url:"/size-guide"}]},{sectionTitle:"Account",links:[{title:"My Account",url:"/account"},{title:"Order History",url:"/orders"},{title:"Wishlist",url:"/wishlist"}]}]}},{description:"Large organization footer with multiple rows",type:"footer",props:{logo:{src:"https://via.placeholder.com/180x60.png?text=Enterprise",alt:"Enterprise logo"},linksSections:[{sectionTitle:"Products & Services",links:[{title:"Cloud Solutions",url:"/cloud"},{title:"Data Analytics",url:"/analytics"},{title:"AI & Machine Learning",url:"/ai"},{title:"Cybersecurity",url:"/security"},{title:"DevOps Tools",url:"/devops"},{title:"IoT Platform",url:"/iot"}]},{sectionTitle:"Industries",links:[{title:"Healthcare",url:"/industries/healthcare"},{title:"Finance",url:"/industries/finance"},{title:"Retail",url:"/industries/retail"},{title:"Manufacturing",url:"/industries/manufacturing"},{title:"Education",url:"/industries/education"},{title:"Government",url:"/industries/government"}]},{sectionTitle:"Resources",links:[{title:"Documentation",url:"/docs"},{title:"API Reference",url:"/api"},{title:"Tutorials",url:"/tutorials"},{title:"Webinars",url:"/webinars"},{title:"White Papers",url:"/whitepapers"},{title:"Case Studies",url:"/case-studies"}]},{sectionTitle:"Support & Community",links:[{title:"Help Center",url:"/help"},{title:"Community Forum",url:"/forum"},{title:"Contact Support",url:"/support"},{title:"Service Status",url:"/status"},{title:"Partner Portal",url:"/partners"},{title:"Developer Hub",url:"/developers"}]}]}},{description:"Startup footer with minimal links and left logo",type:"footer",props:{logo:{src:"https://via.placeholder.com/100x35.png?text=Startup",alt:"Startup logo"},linksSections:[{sectionTitle:"Company",links:[{title:"About",url:"/about"},{title:"Team",url:"/team"},{title:"Jobs",url:"/jobs"}]},{sectionTitle:"Product",links:[{title:"Features",url:"/features"},{title:"Pricing",url:"/pricing"},{title:"Demo",url:"/demo"}]},{sectionTitle:"Support",links:[{title:"Help",url:"/help"},{title:"Contact",url:"/contact"}]}]}},{description:"Agency footer with centered logo and creative sections",type:"footer",props:{logo:{src:"https://via.placeholder.com/130x45.png?text=Agency",alt:"Creative agency logo"},linksSections:[{sectionTitle:"Services",links:[{title:"Web Design",url:"/services/web-design"},{title:"Branding",url:"/services/branding"},{title:"Digital Marketing",url:"/services/marketing"},{title:"Photography",url:"/services/photography"}]},{sectionTitle:"Portfolio",links:[{title:"Recent Work",url:"/portfolio"},{title:"Case Studies",url:"/case-studies"},{title:"Client Reviews",url:"/reviews"}]},{sectionTitle:"Connect",links:[{title:"Contact Us",url:"/contact"},{title:"Get Quote",url:"/quote"},{title:"Newsletter",url:"/newsletter"}]}]}},{description:"SaaS platform footer with comprehensive links",type:"footer",props:{logo:{src:"https://via.placeholder.com/160x50.png?text=SaaS+Platform",alt:"SaaS platform logo"},linksSections:[{sectionTitle:"Platform",links:[{title:"Dashboard",url:"/dashboard"},{title:"Analytics",url:"/analytics"},{title:"Integrations",url:"/integrations"},{title:"API",url:"/api"}]},{sectionTitle:"Solutions",links:[{title:"For Startups",url:"/solutions/startups"},{title:"For Enterprise",url:"/solutions/enterprise"},{title:"For Agencies",url:"/solutions/agencies"},{title:"For Developers",url:"/solutions/developers"}]},{sectionTitle:"Resources",links:[{title:"Blog",url:"/blog"},{title:"Documentation",url:"/docs"},{title:"Help Center",url:"/help"},{title:"Community",url:"/community"}]},{sectionTitle:"Company",links:[{title:"About Us",url:"/about"},{title:"Careers",url:"/careers"},{title:"Press",url:"/press"},{title:"Legal",url:"/legal"}]}]}},{description:"Non-profit footer with mission-focused links",type:"footer",props:{logo:{src:"https://via.placeholder.com/140x50.png?text=Non+Profit",alt:"Non-profit organization logo"},linksSections:[{sectionTitle:"Our Work",links:[{title:"Programs",url:"/programs"},{title:"Impact",url:"/impact"},{title:"Success Stories",url:"/stories"},{title:"Research",url:"/research"}]},{sectionTitle:"Get Involved",links:[{title:"Donate",url:"/donate"},{title:"Volunteer",url:"/volunteer"},{title:"Events",url:"/events"},{title:"Partner with Us",url:"/partnerships"}]},{sectionTitle:"About",links:[{title:"Our Mission",url:"/mission"},{title:"Leadership",url:"/leadership"},{title:"Annual Reports",url:"/reports"},{title:"Contact",url:"/contact"}]}]}},{description:"Tech blog footer with right-aligned logo",type:"footer",props:{logo:{src:"https://via.placeholder.com/120x40.png?text=Tech+Blog",alt:"Tech blog logo"},linksSections:[{sectionTitle:"Categories",links:[{title:"Web Development",url:"/category/web-dev"},{title:"AI & ML",url:"/category/ai-ml"},{title:"DevOps",url:"/category/devops"},{title:"Mobile",url:"/category/mobile"}]},{sectionTitle:"Popular",links:[{title:"Latest Posts",url:"/latest"},{title:"Trending",url:"/trending"},{title:"Best of 2024",url:"/best-2024"},{title:"Tutorials",url:"/tutorials"}]},{sectionTitle:"Community",links:[{title:"Newsletter",url:"/newsletter"},{title:"Discord",url:"/discord"},{title:"Contributors",url:"/contributors"},{title:"Write for Us",url:"/write"}]}]}},{description:"Restaurant footer with location and menu links",type:"footer",props:{logo:{src:"https://via.placeholder.com/150x60.png?text=Restaurant",alt:"Restaurant logo"},linksSections:[{sectionTitle:"Menu",links:[{title:"Appetizers",url:"/menu/appetizers"},{title:"Main Courses",url:"/menu/mains"},{title:"Desserts",url:"/menu/desserts"},{title:"Beverages",url:"/menu/drinks"}]},{sectionTitle:"Services",links:[{title:"Reservations",url:"/reservations"},{title:"Catering",url:"/catering"},{title:"Private Events",url:"/events"},{title:"Gift Cards",url:"/gift-cards"}]},{sectionTitle:"Info",links:[{title:"About Us",url:"/about"},{title:"Location",url:"/location"},{title:"Hours",url:"/hours"},{title:"Contact",url:"/contact"}]}]}}];export{d as a,C as b,P as c};
4
- //# sourceMappingURL=chunk-7A2JNQX3.js.map