@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
@@ -2,7 +2,6 @@ import { Type, type Static, type TObject } from "@sinclair/typebox";
2
2
  import { customAlphabet } from "nanoid";
3
3
  import { brickTypes, defaultProps } from "./bricks/manifests/all-manifests";
4
4
  import { cssLengthRef } from "./bricks/props/css-length";
5
- import { enumProp } from "./bricks/props/enum";
6
5
  import { colorPresetRef } from "./bricks/props/color-preset";
7
6
  import { mergeIgnoringArrays } from "./utils/merge";
8
7
  import { getSchemaDefaults } from "./utils/schema";
@@ -83,6 +82,12 @@ export const brickSchema = Type.Object(
83
82
  description: "A unique identifier for the brick.",
84
83
  }),
85
84
  type: brickTypeSchema,
85
+ label: Type.Optional(
86
+ Type.String({
87
+ title: "Label",
88
+ description: "A human-readable label for the brick. Used for organization and identification.",
89
+ }),
90
+ ),
86
91
  props: Type.Any({
87
92
  title: "Props",
88
93
  description: "The static props of the brick. The available props depends on the brick type.",
@@ -90,7 +95,8 @@ export const brickSchema = Type.Object(
90
95
  mobileProps: Type.Optional(
91
96
  Type.Any({
92
97
  title: "Props",
93
- description: "The overriden props for mobile, merged with desktop props.",
98
+ description:
99
+ "The overriden props for mobile, merged with desktop props. Same type as props but partial.",
94
100
  }),
95
101
  ),
96
102
  },
@@ -143,7 +149,8 @@ export const sectionProps = Type.Object(
143
149
  cssLengthRef({
144
150
  title: "Min height",
145
151
  default: "fit-content",
146
- description: "The min height of the section",
152
+ description:
153
+ "The min height of the section. default is 'fit-content'. You can also use the keyword 'full' to make it full viewport height. Lastly, you can use any valid CSS length unit.",
147
154
  "ui:field": "hidden",
148
155
  }),
149
156
  ),
@@ -157,36 +164,26 @@ export const sectionProps = Type.Object(
157
164
  }),
158
165
  ),
159
166
  maxWidth: Type.Optional(
160
- enumProp("Max width", "max-w-full", {
161
- options: [
162
- {
163
- value: "max-w-screen-lg",
164
- title: "M",
165
- description: "Common for text-heavy content/blog posts",
166
- },
167
- {
168
- value: "max-w-screen-xl",
169
- title: "L",
170
- description: "Usefull or some landing pages",
171
- },
172
- {
173
- value: "max-w-screen-2xl",
174
- title: "XL",
175
- description: "Common width",
176
- },
177
- {
178
- value: "max-w-full",
179
- title: "Full",
180
- description: "Takes the entire space",
181
- },
182
- ],
167
+ StringEnum(["max-w-screen-lg", "max-w-screen-xl", "max-w-screen-2xl", "max-w-full"], {
168
+ title: "Max width",
169
+ default: "max-w-full",
170
+ enumNames: ["M", "L", "XL", "Full"],
183
171
  description: "The maximum width of the section. Desktop only",
184
172
  "ai:instructions":
185
- "Choose the most appropriate max width for the section. You will likely use the same max width for all sections in a page.",
173
+ "Choose the most appropriate max width for the section. The value 'max-w-full' is the most common and the default. Use the same value for all sections on the same page unless there is a good reason to do otherwise.",
186
174
  displayAs: "button-group",
187
175
  "ui:responsive": "desktop",
188
176
  }),
189
177
  ),
178
+ verticalMargin: Type.Optional(
179
+ cssLengthRef({
180
+ title: "Vertical Margin",
181
+ description:
182
+ "The vertical margin of the section. By default, all sections touch each other with no space in between. If you want to add space between sections, set this value to e.g. '2rem' or '32px'. Adding a vertical margin will reveal the background color of the page.",
183
+ default: "0",
184
+ "ui:styleId": "styles:verticalMargin",
185
+ }),
186
+ ),
190
187
  justifyContent: Type.Optional(
191
188
  justifyContentRef({
192
189
  default: "justify-center",
@@ -242,12 +239,10 @@ export const sectionSchema = Type.Object(
242
239
  description: "The unique ID of the section. Use a human readable url-safe slug",
243
240
  examples: ["content-section", "contact-section"],
244
241
  }),
245
- label: Type.Optional(
246
- Type.String({
247
- description: "The label of the section. Used for editor purposes only.",
248
- examples: ["Content", "Contact"],
249
- }),
250
- ),
242
+ label: Type.String({
243
+ description: "The label of the section. Shown only to the website owner, not public.",
244
+ examples: ["Content", "Contact"],
245
+ }),
251
246
  order: Type.Number({
252
247
  description: "Determines section order in the page (lower numbers appear first). 0-based",
253
248
  }),
@@ -260,15 +255,9 @@ export const sectionSchema = Type.Object(
260
255
  },
261
256
  );
262
257
 
258
+ export const sectionSchemaLLM = toLLMSchema(sectionSchema);
263
259
  export const sectionSchemaNoBricks = Type.Omit(sectionSchema, ["bricks"]);
264
-
265
- export function getSectionSchemaNoBrickForLLM() {
266
- return toLLMSchema(sectionSchemaNoBricks);
267
- }
268
-
269
- export function getSectionSchemaForLLM() {
270
- return toLLMSchema(sectionSchema);
271
- }
260
+ export const sectionSchemaNoBricksLLM = toLLMSchema(sectionSchemaNoBricks);
272
261
 
273
262
  const sectionDefaultprops = getSchemaDefaults(sectionSchema.properties.props, "desktop") as Section["props"];
274
263
  const sectionMobileDefaultprops = getSchemaDefaults(
@@ -299,7 +288,7 @@ export function processSections(
299
288
  processSection({
300
289
  order: -1,
301
290
  id: "navbar-section",
302
- label: "Navbar section",
291
+ label: "Navbar",
303
292
  props: {
304
293
  variant: "navbar",
305
294
  direction: "flex-row",
@@ -320,7 +309,7 @@ export function processSections(
320
309
  processSection({
321
310
  order: 1000,
322
311
  id: "footer-section",
323
- label: "Footer section",
312
+ label: "Footer",
324
313
  props: {
325
314
  variant: "footer",
326
315
  direction: "flex-row",
@@ -358,6 +347,11 @@ export function processBrick<T extends Brick>(brick: T): T {
358
347
  : {}),
359
348
  }),
360
349
  };
350
+
351
+ if (!result.props.width) {
352
+ result.props.grow = true;
353
+ }
354
+
361
355
  return result;
362
356
  }
363
357
 
@@ -381,6 +375,7 @@ Bricks are stacked vertically using the "direction" set to "flex-col".
381
375
  `,
382
376
  example: {
383
377
  id: "hero-section",
378
+ label: "Hero",
384
379
  order: 0,
385
380
  props: {
386
381
  colorPreset: { color: "primary-100" },
@@ -394,6 +389,7 @@ Bricks are stacked vertically using the "direction" set to "flex-col".
394
389
  {
395
390
  id: "hero",
396
391
  type: "hero",
392
+ label: "Main hero title",
397
393
  props: {
398
394
  content: "<h1 style='text-align:center'>Welcome to my SaaS</h1>",
399
395
  tagline: "The future of productivity starts here",
@@ -402,6 +398,7 @@ Bricks are stacked vertically using the "direction" set to "flex-col".
402
398
  {
403
399
  id: "cta-button",
404
400
  type: "button",
401
+ label: "Call to action button",
405
402
  props: {
406
403
  label: "Get Started",
407
404
  href: "/signup",
@@ -419,6 +416,7 @@ Bricks are stacked vertically using the "direction" set to "flex-col".
419
416
  `,
420
417
  example: {
421
418
  id: "contact-section",
419
+ label: "Contact",
422
420
  order: 1,
423
421
  props: {
424
422
  colorPreset: { color: "gray-100" },
@@ -458,6 +456,7 @@ The box brick is the only container type that can hold $children (other bricks).
458
456
  This demonstrates nested brick structure where the box contains multiple feature bricks.`,
459
457
  example: {
460
458
  id: "features-section",
459
+ label: "Features",
461
460
  order: 2,
462
461
  props: {
463
462
  direction: "flex-col",
@@ -520,6 +519,7 @@ Demonstrates how direction "flex-row" arranges bricks horizontally.
520
519
  The section uses responsive mobile overrides to stack vertically on mobile.`,
521
520
  example: {
522
521
  id: "about-section",
522
+ label: "About",
523
523
  order: 3,
524
524
  props: {
525
525
  direction: "flex-row",
@@ -561,6 +561,7 @@ Demonstrates how box bricks can contain other box bricks, creating sophisticated
561
561
  Shows responsive design with different mobile arrangements.`,
562
562
  example: {
563
563
  id: "complex-layout-section",
564
+ label: "Complex layout",
564
565
  order: 4,
565
566
  props: {
566
567
  direction: "flex-col",
@@ -649,6 +650,7 @@ Uses the footer variant for special styling and contains multiple text bricks ar
649
650
  Shows how to create multi-column layouts using direction and gap properties.`,
650
651
  example: {
651
652
  id: "info-footer-section",
653
+ label: "Info footer",
652
654
  order: 5,
653
655
  props: {
654
656
  variant: "footer",
@@ -697,6 +699,7 @@ Shows how to use video bricks for multimedia content.
697
699
  The section uses a light background to make the video stand out.`,
698
700
  example: {
699
701
  id: "video-showcase-section",
702
+ label: "Video showcase",
700
703
  order: 6,
701
704
  props: {
702
705
  direction: "flex-col",
@@ -740,6 +743,7 @@ Demonstrates how to use carousel bricks for displaying multiple images.
740
743
  Perfect for portfolios, product showcases, or photo galleries.`,
741
744
  example: {
742
745
  id: "gallery-section",
746
+ label: "Gallery",
743
747
  order: 7,
744
748
  props: {
745
749
  direction: "flex-col",
@@ -778,6 +782,7 @@ Shows how to create forms with various field types and validation.
778
782
  Uses a card-like appearance with rounded corners and shadow.`,
779
783
  example: {
780
784
  id: "signup-form-section",
785
+ label: "Signup form",
781
786
  order: 8,
782
787
  props: {
783
788
  direction: "flex-col",
@@ -785,7 +790,6 @@ Uses a card-like appearance with rounded corners and shadow.`,
785
790
  gap: "2rem",
786
791
  colorPreset: { color: "blue-50" },
787
792
  alignItems: "items-center",
788
- maxWidth: "max-w-screen-md",
789
793
  },
790
794
  bricks: [
791
795
  {
@@ -826,6 +830,7 @@ Shows how to structure testimonials with avatars, company information, and socia
826
830
  Perfect for building trust and credibility with potential customers.`,
827
831
  example: {
828
832
  id: "testimonials-section",
833
+ label: "Testimonials",
829
834
  order: 9,
830
835
  props: {
831
836
  direction: "flex-col",
@@ -894,6 +899,7 @@ Shows how to combine map bricks with text and contact information.
894
899
  Perfect for businesses with physical locations.`,
895
900
  example: {
896
901
  id: "location-section",
902
+ label: "Location",
897
903
  order: 10,
898
904
  props: {
899
905
  direction: "flex-row",
@@ -968,6 +974,7 @@ Demonstrates how to create compelling data visualizations.
968
974
  Uses horizontal layout with consistent spacing and visual hierarchy.`,
969
975
  example: {
970
976
  id: "stats-section",
977
+ label: "Stats",
971
978
  order: 11,
972
979
  props: {
973
980
  direction: "flex-col",
@@ -1093,6 +1100,7 @@ Shows how to use social-links bricks and forms together.
1093
1100
  Creates a cohesive call-to-action for community building.`,
1094
1101
  example: {
1095
1102
  id: "community-section",
1103
+ label: "Community",
1096
1104
  order: 12,
1097
1105
  props: {
1098
1106
  direction: "flex-col",
@@ -1100,7 +1108,7 @@ Creates a cohesive call-to-action for community building.`,
1100
1108
  gap: "3rem",
1101
1109
  colorPreset: { color: "indigo-100" },
1102
1110
  alignItems: "items-center",
1103
- maxWidth: "max-w-screen-md",
1111
+ maxWidth: "max-w-full",
1104
1112
  },
1105
1113
  bricks: [
1106
1114
  {
@@ -1157,6 +1165,7 @@ Demonstrates how to structure pricing tiers with different features.
1157
1165
  Uses consistent styling with highlighted premium option.`,
1158
1166
  example: {
1159
1167
  id: "pricing-section",
1168
+ label: "Pricing",
1160
1169
  order: 13,
1161
1170
  props: {
1162
1171
  direction: "flex-col",
@@ -1,5 +1,4 @@
1
1
  import { Type, type Static } from "@sinclair/typebox";
2
- import { httpJsonOptions } from "./external/http-json/options";
3
2
  import { StringEnum } from "../utils/string-enum";
4
3
  import { toLLMSchema } from "../utils/llm";
5
4
 
@@ -236,10 +235,7 @@ export type InternalDatasource = Static<typeof datasourceInternalManifest>;
236
235
  // Fow now, let support only custom (internal) datasource
237
236
  // export const datasourceManifest = datasourceCustomManifest;
238
237
  export const datasourceManifest = datasourceInternalManifest;
239
-
240
- export function getDatasourceManifestForLLM() {
241
- return toLLMSchema(datasourceManifest);
242
- }
238
+ export const datasourceManifestLLM = toLLMSchema(datasourceManifest);
243
239
 
244
240
  export type Datasource = Static<typeof datasourceManifest>;
245
241
  export const datasourcesList = Type.Array(datasourceManifest);
@@ -21,13 +21,15 @@ export const imageResultsSchema = Type.Array(
21
21
  provider: Type.String({ description: "The image provider (e.g. unsplash, pexels)" }),
22
22
  description: Type.String({ description: "A brief description of the image" }),
23
23
  url: Type.String({ description: "The URL of the image" }),
24
- blurHash: Type.String({ description: "The blur hash of the image" }),
25
- user: Type.Object(
26
- {
27
- name: Type.String({ description: "The name of the user who uploaded the image" }),
28
- profile_url: Type.String({ description: "The profile URL of the user who uploaded the image" }),
29
- },
30
- { additionalProperties: false },
24
+ blurHash: Type.Optional(Type.String({ description: "The blur hash of the image" })),
25
+ author: Type.Optional(
26
+ Type.Object(
27
+ {
28
+ name: Type.String({ description: "The name of the user who uploaded the image" }),
29
+ profile_url: Type.String({ description: "The profile URL of the user who uploaded the image" }),
30
+ },
31
+ { additionalProperties: false },
32
+ ),
31
33
  ),
32
34
  },
33
35
  { additionalProperties: false },
@@ -40,5 +42,5 @@ export const imageResultsSchema = Type.Array(
40
42
  export type ImageSearchResultsType = Static<typeof imageResultsSchema>;
41
43
  export type SimpleImageMetadata = Pick<
42
44
  ImageSearchResultsType[number],
43
- "description" | "blurHash" | "user" | "url" | "provider"
45
+ "description" | "blurHash" | "author" | "url" | "provider"
44
46
  >;
@@ -18,10 +18,6 @@ export const pageSchema = Type.Object({
18
18
  attributes: pageAttributesSchema,
19
19
  });
20
20
 
21
- export function getPageSchemaForLLM() {
22
- return toLLMSchema(pageSchema);
23
- }
24
-
25
21
  export type Page = Static<typeof pageSchema>;
26
22
  export type VersionedPage = Page & { version: string };
27
23
 
@@ -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 any).$ref === "string") {
59
+ const refSchema = schemaRegistry.get((schema as any).$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 any)[key];
67
+ if (Array.isArray(value)) {
68
+ (schema as any)[key] = value.map((item: TSchema) => resolveRefs(item, visited));
69
+ } else if (typeof value === "object" && value !== null) {
70
+ (schema as any)[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();
@@ -79,20 +79,16 @@ export const sitemapEntry = Type.Composite(
79
79
  export const sitemapSchema = Type.Array(sitemapEntry);
80
80
  export type Sitemap = Static<typeof sitemapSchema>;
81
81
 
82
- export function getSitemapSchemaForLLM() {
83
- return toLLMSchema(
84
- Type.Array(
85
- Type.Composite([
86
- sitemapEntry,
87
- Type.Object({
88
- // Sections plan helps agents to the structure and content of the page
89
- sectionsPlan: sectionsPlanSchema,
90
- }),
91
- ]),
92
- ),
93
- );
94
- }
82
+ export const sitemapSchemaLLM = toLLMSchema(
83
+ Type.Array(
84
+ Type.Composite([
85
+ sitemapEntry,
86
+ Type.Object({
87
+ // Sections plan helps agents to the structure and content of the page
88
+ sectionsPlan: sectionsPlanSchema,
89
+ }),
90
+ ]),
91
+ ),
92
+ );
95
93
 
96
- export function getSitemapSchemaNoPlansForLLM() {
97
- return toLLMSchema(sitemapSchema);
98
- }
94
+ export const sitemapSchemaNoPlansLLM = toLLMSchema(sitemapSchema);
@@ -0,0 +1,14 @@
1
+ // Check taht schemaRegistry contains all schemas and that $refs are resolved
2
+ import { describe, it, expect } from "vitest";
3
+ import { schemaRegistry } from "../utils/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
+
12
+ console.log("Registered schemas:", Array.from(schemaRegistry));
13
+ });
14
+ });
@@ -158,10 +158,7 @@ export const themeSchema = Type.Object(
158
158
 
159
159
  export type Theme = Static<typeof themeSchema>;
160
160
  export const themesArray = Type.Array(themeSchema);
161
-
162
- export function getThemesArrayForLLM() {
163
- return toLLMSchema(themesArray);
164
- }
161
+ export const themesArrayLLM = toLLMSchema(themesArray);
165
162
 
166
163
  export type ThemesArray = Static<typeof themesArray>;
167
164
  export type FontType = Theme["typography"]["body"];
@@ -1,6 +1,5 @@
1
1
  import chroma from "chroma-js";
2
2
  import type { Theme } from "../theme";
3
- export { default as chroma } from "chroma-js";
4
3
  import { kebabCase } from "lodash-es";
5
4
  import { css } from "@upstart.gg/style-system/twind";
6
5
 
@@ -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 any).$ref === "string") {
59
+ const refSchema = schemaRegistry.get((schema as any).$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 any)[key];
67
+ if (Array.isArray(value)) {
68
+ (schema as any)[key] = value.map((item: TSchema) => resolveRefs(item, visited));
69
+ } else if (typeof value === "object" && value !== null) {
70
+ (schema as any)[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();