@upstart.gg/sdk 0.0.136 → 0.0.137

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 (447) hide show
  1. package/dist/shared/ai/schemas.d.ts.map +1 -1
  2. package/dist/shared/ai/schemas.js +24 -29
  3. package/dist/shared/ai/schemas.js.map +1 -1
  4. package/dist/shared/ai/types.d.ts +13 -61
  5. package/dist/shared/ai/types.d.ts.map +1 -1
  6. package/dist/shared/ajv.js +33 -32
  7. package/dist/shared/ajv.js.map +1 -1
  8. package/dist/shared/attributes.d.ts +83 -85
  9. package/dist/shared/attributes.d.ts.map +1 -1
  10. package/dist/shared/attributes.js +20 -23
  11. package/dist/shared/brick-manifest.d.ts +8 -5
  12. package/dist/shared/brick-manifest.d.ts.map +1 -1
  13. package/dist/shared/brick-manifest.js +3 -18
  14. package/dist/shared/bricks/manifests/accordion.manifest.d.ts +2 -2
  15. package/dist/shared/bricks/manifests/accordion.manifest.d.ts.map +1 -1
  16. package/dist/shared/bricks/manifests/accordion.manifest.js +13 -20
  17. package/dist/shared/bricks/manifests/all-manifests.js +44 -43
  18. package/dist/shared/bricks/manifests/all-props.d.ts +1501 -0
  19. package/dist/shared/bricks/manifests/all-props.d.ts.map +1 -0
  20. package/dist/shared/bricks/manifests/all-props.js +243 -0
  21. package/dist/shared/bricks/manifests/all-props.js.map +1 -0
  22. package/dist/shared/bricks/manifests/box.manifest.d.ts +2 -2
  23. package/dist/shared/bricks/manifests/box.manifest.d.ts.map +1 -1
  24. package/dist/shared/bricks/manifests/box.manifest.js +16 -20
  25. package/dist/shared/bricks/manifests/button.manifest.d.ts +3 -6
  26. package/dist/shared/bricks/manifests/button.manifest.d.ts.map +1 -1
  27. package/dist/shared/bricks/manifests/button.manifest.js +13 -20
  28. package/dist/shared/bricks/manifests/card.manifest.d.ts +3 -3
  29. package/dist/shared/bricks/manifests/card.manifest.d.ts.map +1 -1
  30. package/dist/shared/bricks/manifests/card.manifest.js +18 -20
  31. package/dist/shared/bricks/manifests/carousel.manifest.d.ts +2 -2
  32. package/dist/shared/bricks/manifests/carousel.manifest.d.ts.map +1 -1
  33. package/dist/shared/bricks/manifests/carousel.manifest.js +15 -20
  34. package/dist/shared/bricks/manifests/footer.manifest.d.ts +3 -3
  35. package/dist/shared/bricks/manifests/footer.manifest.d.ts.map +1 -1
  36. package/dist/shared/bricks/manifests/footer.manifest.js +13 -20
  37. package/dist/shared/bricks/manifests/form.manifest.d.ts +3 -3
  38. package/dist/shared/bricks/manifests/form.manifest.d.ts.map +1 -1
  39. package/dist/shared/bricks/manifests/form.manifest.js +13 -20
  40. package/dist/shared/bricks/manifests/hero.manifest.d.ts +2 -2
  41. package/dist/shared/bricks/manifests/hero.manifest.d.ts.map +1 -1
  42. package/dist/shared/bricks/manifests/hero.manifest.js +13 -20
  43. package/dist/shared/bricks/manifests/html.manifest.d.ts +1 -1
  44. package/dist/shared/bricks/manifests/html.manifest.d.ts.map +1 -1
  45. package/dist/shared/bricks/manifests/html.manifest.js +8 -20
  46. package/dist/shared/bricks/manifests/icon.manifest.d.ts +1 -1
  47. package/dist/shared/bricks/manifests/icon.manifest.d.ts.map +1 -1
  48. package/dist/shared/bricks/manifests/icon.manifest.js +13 -20
  49. package/dist/shared/bricks/manifests/image.manifest.d.ts +2 -2
  50. package/dist/shared/bricks/manifests/image.manifest.d.ts.map +1 -1
  51. package/dist/shared/bricks/manifests/image.manifest.js +16 -20
  52. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts +2 -2
  53. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts.map +1 -1
  54. package/dist/shared/bricks/manifests/images-gallery.manifest.js +15 -20
  55. package/dist/shared/bricks/manifests/map.manifest.d.ts +1 -1
  56. package/dist/shared/bricks/manifests/map.manifest.d.ts.map +1 -1
  57. package/dist/shared/bricks/manifests/map.manifest.js +11 -20
  58. package/dist/shared/bricks/manifests/navbar.manifest.d.ts +5 -5
  59. package/dist/shared/bricks/manifests/navbar.manifest.d.ts.map +1 -1
  60. package/dist/shared/bricks/manifests/navbar.manifest.js +15 -20
  61. package/dist/shared/bricks/manifests/sidebar.manifest.d.ts +1 -1
  62. package/dist/shared/bricks/manifests/sidebar.manifest.d.ts.map +1 -1
  63. package/dist/shared/bricks/manifests/sidebar.manifest.js +13 -20
  64. package/dist/shared/bricks/manifests/social-links.manifest.d.ts +2 -2
  65. package/dist/shared/bricks/manifests/social-links.manifest.d.ts.map +1 -1
  66. package/dist/shared/bricks/manifests/social-links.manifest.js +14 -20
  67. package/dist/shared/bricks/manifests/spacer.manifest.d.ts +1 -1
  68. package/dist/shared/bricks/manifests/spacer.manifest.d.ts.map +1 -1
  69. package/dist/shared/bricks/manifests/spacer.manifest.js +8 -20
  70. package/dist/shared/bricks/manifests/table.manifest.d.ts +4 -4
  71. package/dist/shared/bricks/manifests/table.manifest.d.ts.map +1 -1
  72. package/dist/shared/bricks/manifests/table.manifest.js +15 -20
  73. package/dist/shared/bricks/manifests/tabs.manifest.d.ts +4 -4
  74. package/dist/shared/bricks/manifests/tabs.manifest.d.ts.map +1 -1
  75. package/dist/shared/bricks/manifests/tabs.manifest.js +15 -20
  76. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts +2 -2
  77. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts.map +1 -1
  78. package/dist/shared/bricks/manifests/testimonials.manifest.js +18 -20
  79. package/dist/shared/bricks/manifests/text.manifest.d.ts +2 -6
  80. package/dist/shared/bricks/manifests/text.manifest.d.ts.map +1 -1
  81. package/dist/shared/bricks/manifests/text.manifest.js +13 -20
  82. package/dist/shared/bricks/manifests/timeline.manifest.d.ts +7 -7
  83. package/dist/shared/bricks/manifests/timeline.manifest.d.ts.map +1 -1
  84. package/dist/shared/bricks/manifests/timeline.manifest.js +15 -20
  85. package/dist/shared/bricks/manifests/video.manifest.d.ts +1 -1
  86. package/dist/shared/bricks/manifests/video.manifest.d.ts.map +1 -1
  87. package/dist/shared/bricks/manifests/video.manifest.js +11 -20
  88. package/dist/shared/bricks/props/align.d.ts +0 -3
  89. package/dist/shared/bricks/props/align.d.ts.map +1 -1
  90. package/dist/shared/bricks/props/align.js +4 -11
  91. package/dist/shared/bricks/props/background.d.ts +2 -8
  92. package/dist/shared/bricks/props/background.d.ts.map +1 -1
  93. package/dist/shared/bricks/props/background.js +4 -9
  94. package/dist/shared/bricks/props/border.d.ts +0 -7
  95. package/dist/shared/bricks/props/border.d.ts.map +1 -1
  96. package/dist/shared/bricks/props/border.js +5 -10
  97. package/dist/shared/bricks/props/color-preset.d.ts +316 -6
  98. package/dist/shared/bricks/props/color-preset.d.ts.map +1 -1
  99. package/dist/shared/bricks/props/color-preset.js +2 -5
  100. package/dist/shared/bricks/props/color.d.ts +3 -5
  101. package/dist/shared/bricks/props/color.d.ts.map +1 -1
  102. package/dist/shared/bricks/props/color.js +3 -8
  103. package/dist/shared/bricks/props/common.d.ts.map +1 -1
  104. package/dist/shared/bricks/props/common.js +4 -5
  105. package/dist/shared/bricks/props/css-length.d.ts +0 -1
  106. package/dist/shared/bricks/props/css-length.d.ts.map +1 -1
  107. package/dist/shared/bricks/props/css-length.js +1 -4
  108. package/dist/shared/bricks/props/datasource.d.ts +3 -3
  109. package/dist/shared/bricks/props/datasource.d.ts.map +1 -1
  110. package/dist/shared/bricks/props/datasource.js +74 -76
  111. package/dist/shared/bricks/props/datasource.js.map +1 -1
  112. package/dist/shared/bricks/props/date.js +21 -4
  113. package/dist/shared/bricks/props/date.js.map +1 -1
  114. package/dist/shared/bricks/props/direction.d.ts +1 -2
  115. package/dist/shared/bricks/props/direction.d.ts.map +1 -1
  116. package/dist/shared/bricks/props/direction.js +4 -7
  117. package/dist/shared/bricks/props/dynamic.d.ts +5 -67
  118. package/dist/shared/bricks/props/dynamic.d.ts.map +1 -1
  119. package/dist/shared/bricks/props/dynamic.js +6 -24
  120. package/dist/shared/bricks/props/effects.d.ts +1 -3
  121. package/dist/shared/bricks/props/effects.d.ts.map +1 -1
  122. package/dist/shared/bricks/props/effects.js +4 -9
  123. package/dist/shared/bricks/props/geolocation.d.ts.map +1 -1
  124. package/dist/shared/bricks/props/geolocation.js +3 -6
  125. package/dist/shared/bricks/props/geolocation.js.map +1 -1
  126. package/dist/shared/bricks/props/helpers.js +5 -6
  127. package/dist/shared/bricks/props/image.d.ts +2 -8
  128. package/dist/shared/bricks/props/image.d.ts.map +1 -1
  129. package/dist/shared/bricks/props/image.js +4 -7
  130. package/dist/shared/bricks/props/string.d.ts +2 -5
  131. package/dist/shared/bricks/props/string.d.ts.map +1 -1
  132. package/dist/shared/bricks/props/string.js +3 -10
  133. package/dist/shared/bricks/props/tags.d.ts +0 -1
  134. package/dist/shared/bricks/props/tags.d.ts.map +1 -1
  135. package/dist/shared/bricks/props/tags.js +3 -6
  136. package/dist/shared/bricks/props/text.d.ts +0 -3
  137. package/dist/shared/bricks/props/text.d.ts.map +1 -1
  138. package/dist/shared/bricks/props/text.js +4 -11
  139. package/dist/shared/bricks/props/types.d.ts +2 -2
  140. package/dist/shared/bricks/props/types.d.ts.map +1 -1
  141. package/dist/shared/bricks.d.ts +64 -154
  142. package/dist/shared/bricks.d.ts.map +1 -1
  143. package/dist/shared/bricks.js +47 -52
  144. package/dist/shared/chunk-2O5HVPID.js +41 -0
  145. package/dist/shared/chunk-2O5HVPID.js.map +1 -0
  146. package/dist/shared/{chunk-F22LDHEO.js → chunk-2U5U3CCJ.js} +3 -18
  147. package/dist/shared/chunk-2U5U3CCJ.js.map +1 -0
  148. package/dist/shared/{chunk-LTIJI7Y3.js → chunk-4KY7OZWD.js} +35 -35
  149. package/dist/shared/chunk-4KY7OZWD.js.map +1 -0
  150. package/dist/shared/{chunk-TNMNMYOB.js → chunk-5RCC2STG.js} +2 -13
  151. package/dist/shared/chunk-5RCC2STG.js.map +1 -0
  152. package/dist/shared/{chunk-KIDICX3Y.js → chunk-6AE7UD73.js} +27 -33
  153. package/dist/shared/chunk-6AE7UD73.js.map +1 -0
  154. package/dist/shared/{chunk-CRS7QCPZ.js → chunk-7U5WPHXB.js} +65 -27
  155. package/dist/shared/chunk-7U5WPHXB.js.map +1 -0
  156. package/dist/shared/{chunk-Q4NPPLEU.js → chunk-BHARJBEK.js} +2 -9
  157. package/dist/shared/chunk-BHARJBEK.js.map +1 -0
  158. package/dist/shared/{chunk-H5JM2M2T.js → chunk-BZTWZC77.js} +46 -31
  159. package/dist/shared/chunk-BZTWZC77.js.map +1 -0
  160. package/dist/shared/{chunk-LLNPH3XR.js → chunk-DCM4732T.js} +6 -8
  161. package/dist/shared/chunk-DCM4732T.js.map +1 -0
  162. package/dist/shared/{chunk-W6MRYRGJ.js → chunk-DRQKKPTX.js} +6 -20
  163. package/dist/shared/chunk-DRQKKPTX.js.map +1 -0
  164. package/dist/shared/{chunk-CSF2WQX2.js → chunk-EID5HPF3.js} +15 -12
  165. package/dist/shared/chunk-EID5HPF3.js.map +1 -0
  166. package/dist/shared/chunk-EMF5TCPX.js +389 -0
  167. package/dist/shared/chunk-EMF5TCPX.js.map +1 -0
  168. package/dist/shared/chunk-FD7YYFRI.js +225 -0
  169. package/dist/shared/chunk-FD7YYFRI.js.map +1 -0
  170. package/dist/shared/{chunk-36PLZKMW.js → chunk-FHA4DFIM.js} +26 -27
  171. package/dist/shared/chunk-FHA4DFIM.js.map +1 -0
  172. package/dist/shared/{chunk-L6C7HUSA.js → chunk-FUUSAMN3.js} +21 -24
  173. package/dist/shared/chunk-FUUSAMN3.js.map +1 -0
  174. package/dist/shared/chunk-GDYCCB3B.js +22 -0
  175. package/dist/shared/chunk-GDYCCB3B.js.map +1 -0
  176. package/dist/shared/chunk-GLV6QIIM.js +41 -0
  177. package/dist/shared/chunk-GLV6QIIM.js.map +1 -0
  178. package/dist/shared/chunk-H6TMBELF.js +374 -0
  179. package/dist/shared/chunk-H6TMBELF.js.map +1 -0
  180. package/dist/shared/{chunk-YWOTQWIQ.js → chunk-HUWMIXNN.js} +26 -28
  181. package/dist/shared/chunk-HUWMIXNN.js.map +1 -0
  182. package/dist/shared/chunk-HY7JOP3J.js +150 -0
  183. package/dist/shared/chunk-HY7JOP3J.js.map +1 -0
  184. package/dist/shared/{chunk-TFGGYU6Y.js → chunk-IEMCCHM4.js} +7 -12
  185. package/dist/shared/chunk-IEMCCHM4.js.map +1 -0
  186. package/dist/shared/{chunk-EVLRH6VG.js → chunk-J45LSQT6.js} +2 -2
  187. package/dist/shared/chunk-J45LSQT6.js.map +1 -0
  188. package/dist/shared/{chunk-DFAFDBYZ.js → chunk-JF52BBFD.js} +27 -28
  189. package/dist/shared/chunk-JF52BBFD.js.map +1 -0
  190. package/dist/shared/{chunk-ZR6R6Z6O.js → chunk-JLDAS3VE.js} +34 -32
  191. package/dist/shared/chunk-JLDAS3VE.js.map +1 -0
  192. package/dist/shared/{chunk-SE6O65HC.js → chunk-JSDKK5QN.js} +10 -23
  193. package/dist/shared/chunk-JSDKK5QN.js.map +1 -0
  194. package/dist/shared/{chunk-KILJYJFE.js → chunk-JW7MQAU4.js} +19 -19
  195. package/dist/shared/chunk-JW7MQAU4.js.map +1 -0
  196. package/dist/shared/{chunk-RV7AYVFV.js → chunk-KKWT3OXF.js} +4 -19
  197. package/dist/shared/chunk-KKWT3OXF.js.map +1 -0
  198. package/dist/shared/{chunk-N3BEBLWF.js → chunk-KQH6V22E.js} +34 -34
  199. package/dist/shared/{chunk-GFAQWQER.js → chunk-LGDDJJHK.js} +33 -35
  200. package/dist/shared/chunk-LGDDJJHK.js.map +1 -0
  201. package/dist/shared/{chunk-FOGAVJC2.js → chunk-LGGPCCCY.js} +3 -3
  202. package/dist/shared/{chunk-4MNWMEMM.js → chunk-LPAQ47C6.js} +23 -23
  203. package/dist/shared/chunk-LPAQ47C6.js.map +1 -0
  204. package/dist/shared/chunk-MO6CRLQA.js +73 -0
  205. package/dist/shared/chunk-MO6CRLQA.js.map +1 -0
  206. package/dist/shared/{chunk-GQTZPN5D.js → chunk-MYOLWTB2.js} +29 -32
  207. package/dist/shared/chunk-MYOLWTB2.js.map +1 -0
  208. package/dist/shared/{chunk-KEM5N6GJ.js → chunk-O24RDXZS.js} +34 -34
  209. package/dist/shared/chunk-O24RDXZS.js.map +1 -0
  210. package/dist/shared/{chunk-BPBKHEQ5.js → chunk-OJ6KL7FU.js} +1 -8
  211. package/dist/shared/chunk-OJ6KL7FU.js.map +1 -0
  212. package/dist/shared/{chunk-LCJ2VFPM.js → chunk-PF75LW33.js} +24 -27
  213. package/dist/shared/chunk-PF75LW33.js.map +1 -0
  214. package/dist/shared/{chunk-U5ZECCJM.js → chunk-QEJGPYTB.js} +32 -34
  215. package/dist/shared/chunk-QEJGPYTB.js.map +1 -0
  216. package/dist/shared/{chunk-2VDR4ZYY.js → chunk-SK2O7GFC.js} +17 -18
  217. package/dist/shared/chunk-SK2O7GFC.js.map +1 -0
  218. package/dist/shared/{chunk-N3ZTQD5I.js → chunk-SQXZNGQF.js} +8 -23
  219. package/dist/shared/chunk-SQXZNGQF.js.map +1 -0
  220. package/dist/shared/{chunk-NTLAKMMQ.js → chunk-SRYBJ6NQ.js} +6 -17
  221. package/dist/shared/chunk-SRYBJ6NQ.js.map +1 -0
  222. package/dist/shared/{chunk-UXTASZ23.js → chunk-T6C3NG2L.js} +66 -63
  223. package/dist/shared/chunk-T6C3NG2L.js.map +1 -0
  224. package/dist/shared/{chunk-ZRRAK5NS.js → chunk-TBT2PTGB.js} +41 -33
  225. package/dist/shared/chunk-TBT2PTGB.js.map +1 -0
  226. package/dist/shared/{chunk-2IHKVMKW.js → chunk-U4KZUX37.js} +18 -19
  227. package/dist/shared/chunk-U4KZUX37.js.map +1 -0
  228. package/dist/shared/{chunk-FQDR2BBZ.js → chunk-VSLRTXLF.js} +11 -4
  229. package/dist/shared/chunk-VSLRTXLF.js.map +1 -0
  230. package/dist/shared/{chunk-BHC2A43S.js → chunk-VTCHJT4O.js} +3 -3
  231. package/dist/shared/{chunk-BHC2A43S.js.map → chunk-VTCHJT4O.js.map} +1 -1
  232. package/dist/shared/{chunk-GIGFNQBO.js → chunk-W2RFDII5.js} +3 -3
  233. package/dist/shared/{chunk-Y74LZNND.js → chunk-WPZV3LYL.js} +4 -10
  234. package/dist/shared/chunk-WPZV3LYL.js.map +1 -0
  235. package/dist/shared/chunk-XFZQGRRL.js +101 -0
  236. package/dist/shared/chunk-XFZQGRRL.js.map +1 -0
  237. package/dist/shared/{chunk-42OUNI7C.js → chunk-XK2CERPB.js} +27 -29
  238. package/dist/shared/chunk-XK2CERPB.js.map +1 -0
  239. package/dist/shared/chunk-XNRSL6FL.js +78 -0
  240. package/dist/shared/chunk-XNRSL6FL.js.map +1 -0
  241. package/dist/shared/{chunk-2RK3CPYJ.js → chunk-XXPSM6UA.js} +9 -12
  242. package/dist/shared/chunk-XXPSM6UA.js.map +1 -0
  243. package/dist/shared/{chunk-ZLYIRH2B.js → chunk-ZRBTAC3G.js} +3 -18
  244. package/dist/shared/chunk-ZRBTAC3G.js.map +1 -0
  245. package/dist/shared/{chunk-F247VKAE.js → chunk-ZVJNRKT4.js} +18 -20
  246. package/dist/shared/chunk-ZVJNRKT4.js.map +1 -0
  247. package/dist/shared/context.d.ts +402 -23
  248. package/dist/shared/context.d.ts.map +1 -1
  249. package/dist/shared/context.js +93 -0
  250. package/dist/shared/context.js.map +1 -1
  251. package/dist/shared/datarecords/external/airtable/types.d.ts +1 -1
  252. package/dist/shared/datarecords/external/airtable/types.d.ts.map +1 -1
  253. package/dist/shared/datarecords/external/airtable/types.js +2 -1
  254. package/dist/shared/datarecords/types.d.ts +3 -3
  255. package/dist/shared/datarecords/types.d.ts.map +1 -1
  256. package/dist/shared/datarecords/types.js +3 -2
  257. package/dist/shared/datasources/external/instagram/feed/schema.d.ts +1 -1
  258. package/dist/shared/datasources/external/instagram/feed/schema.d.ts.map +1 -1
  259. package/dist/shared/datasources/external/instagram/feed/schema.js +4 -1
  260. package/dist/shared/datasources/external/instagram/feed/schema.js.map +1 -1
  261. package/dist/shared/datasources/external/mastodon/status/schema.d.ts +6 -6
  262. package/dist/shared/datasources/external/mastodon/status/schema.d.ts.map +1 -1
  263. package/dist/shared/datasources/external/mastodon/status/schema.js +6 -19
  264. package/dist/shared/datasources/external/mastodon/status/schema.js.map +1 -1
  265. package/dist/shared/datasources/external/meta/oauth/config.d.ts +2 -2
  266. package/dist/shared/datasources/external/meta/oauth/config.d.ts.map +1 -1
  267. package/dist/shared/datasources/external/meta/oauth/config.js +4 -1
  268. package/dist/shared/datasources/external/meta/oauth/config.js.map +1 -1
  269. package/dist/shared/datasources/external/threads/media/schema.d.ts +1 -1
  270. package/dist/shared/datasources/external/threads/media/schema.d.ts.map +1 -1
  271. package/dist/shared/datasources/external/threads/media/schema.js +4 -8
  272. package/dist/shared/datasources/external/threads/media/schema.js.map +1 -1
  273. package/dist/shared/datasources/internal/blog/schema.d.ts +1 -1
  274. package/dist/shared/datasources/internal/blog/schema.d.ts.map +1 -1
  275. package/dist/shared/datasources/internal/blog/schema.js +4 -1
  276. package/dist/shared/datasources/internal/blog/schema.js.map +1 -1
  277. package/dist/shared/datasources/types.d.ts +25 -25
  278. package/dist/shared/datasources/types.d.ts.map +1 -1
  279. package/dist/shared/datasources/types.js +3 -16
  280. package/dist/shared/images.d.ts +1 -1
  281. package/dist/shared/images.d.ts.map +1 -1
  282. package/dist/shared/images.js +4 -38
  283. package/dist/shared/images.js.map +1 -1
  284. package/dist/shared/page.d.ts +139 -22
  285. package/dist/shared/page.d.ts.map +1 -1
  286. package/dist/shared/page.js +51 -49
  287. package/dist/shared/responsive.js +1 -1
  288. package/dist/shared/site.d.ts +74 -191
  289. package/dist/shared/site.d.ts.map +1 -1
  290. package/dist/shared/site.js +55 -114
  291. package/dist/shared/site.js.map +1 -1
  292. package/dist/shared/sitemap.d.ts +4 -326
  293. package/dist/shared/sitemap.d.ts.map +1 -1
  294. package/dist/shared/sitemap.js +50 -58
  295. package/dist/shared/theme.d.ts +0 -37
  296. package/dist/shared/theme.d.ts.map +1 -1
  297. package/dist/shared/theme.js +4 -21
  298. package/dist/shared/utils/llm.d.ts +1 -10
  299. package/dist/shared/utils/llm.d.ts.map +1 -1
  300. package/dist/shared/utils/llm.js +1 -18
  301. package/dist/shared/utils/schema.d.ts +3 -2
  302. package/dist/shared/utils/schema.d.ts.map +1 -1
  303. package/dist/shared/utils/schema.js +2 -17
  304. package/dist/shared/utils/string-enum.d.ts +9 -3
  305. package/dist/shared/utils/string-enum.d.ts.map +1 -1
  306. package/dist/shared/utils/string-enum.js +1 -1
  307. package/package.json +21 -5
  308. package/src/shared/ai/schemas.ts +24 -29
  309. package/src/shared/ai/types.ts +22 -88
  310. package/src/shared/attributes.ts +53 -51
  311. package/src/shared/brick-manifest.ts +5 -6
  312. package/src/shared/bricks/manifests/accordion.manifest.ts +11 -11
  313. package/src/shared/bricks/manifests/all-props.ts +165 -0
  314. package/src/shared/bricks/manifests/box.manifest.ts +19 -21
  315. package/src/shared/bricks/manifests/button.manifest.ts +54 -16
  316. package/src/shared/bricks/manifests/card.manifest.ts +32 -18
  317. package/src/shared/bricks/manifests/carousel.manifest.ts +11 -13
  318. package/src/shared/bricks/manifests/footer.manifest.ts +16 -15
  319. package/src/shared/bricks/manifests/form.manifest.ts +14 -15
  320. package/src/shared/bricks/manifests/hero.manifest.ts +18 -20
  321. package/src/shared/bricks/manifests/icon.manifest.ts +9 -10
  322. package/src/shared/bricks/manifests/image.manifest.ts +22 -19
  323. package/src/shared/bricks/manifests/images-gallery.manifest.ts +13 -15
  324. package/src/shared/bricks/manifests/map.manifest.ts +10 -10
  325. package/src/shared/bricks/manifests/navbar.manifest.ts +20 -21
  326. package/src/shared/bricks/manifests/sidebar.manifest.ts +9 -9
  327. package/src/shared/bricks/manifests/social-links.manifest.ts +17 -19
  328. package/src/shared/bricks/manifests/table.manifest.ts +15 -15
  329. package/src/shared/bricks/manifests/tabs.manifest.ts +14 -16
  330. package/src/shared/bricks/manifests/testimonials.manifest.ts +21 -20
  331. package/src/shared/bricks/manifests/text.manifest.ts +16 -19
  332. package/src/shared/bricks/manifests/timeline.manifest.ts +29 -24
  333. package/src/shared/bricks/manifests/video.manifest.ts +9 -10
  334. package/src/shared/bricks/props/align.ts +0 -13
  335. package/src/shared/bricks/props/background.ts +1 -14
  336. package/src/shared/bricks/props/border.ts +2 -13
  337. package/src/shared/bricks/props/color-preset.ts +9 -10
  338. package/src/shared/bricks/props/color.ts +7 -18
  339. package/src/shared/bricks/props/common.ts +6 -7
  340. package/src/shared/bricks/props/css-length.ts +0 -5
  341. package/src/shared/bricks/props/datasource.ts +72 -74
  342. package/src/shared/bricks/props/direction.ts +1 -5
  343. package/src/shared/bricks/props/dynamic.ts +0 -11
  344. package/src/shared/bricks/props/effects.ts +0 -9
  345. package/src/shared/bricks/props/geolocation.ts +3 -3
  346. package/src/shared/bricks/props/helpers.ts +1 -1
  347. package/src/shared/bricks/props/image.ts +4 -16
  348. package/src/shared/bricks/props/string.ts +5 -18
  349. package/src/shared/bricks/props/tags.ts +0 -5
  350. package/src/shared/bricks/props/tests/background.test.ts +1 -15
  351. package/src/shared/bricks/props/tests/image.test.ts +3 -9
  352. package/src/shared/bricks/props/tests/string.test.ts +2 -26
  353. package/src/shared/bricks/props/text.ts +0 -12
  354. package/src/shared/bricks/props/types.ts +4 -3
  355. package/src/shared/bricks.ts +156 -1020
  356. package/src/shared/context.ts +24 -24
  357. package/src/shared/datarecords/external/airtable/types.ts +12 -11
  358. package/src/shared/datarecords/types.ts +2 -34
  359. package/src/shared/datasources/external/instagram/feed/schema.ts +2 -1
  360. package/src/shared/datasources/external/mastodon/status/schema.ts +4 -19
  361. package/src/shared/datasources/external/meta/oauth/config.ts +2 -1
  362. package/src/shared/datasources/external/threads/media/schema.ts +2 -8
  363. package/src/shared/datasources/internal/blog/schema.ts +2 -1
  364. package/src/shared/datasources/types.ts +64 -79
  365. package/src/shared/images.ts +12 -18
  366. package/src/shared/page.ts +9 -1
  367. package/src/shared/sitemap.ts +3 -70
  368. package/src/shared/tests/attributes.test.ts +2 -0
  369. package/src/shared/theme.ts +81 -96
  370. package/src/shared/utils/llm.ts +5 -191
  371. package/src/shared/utils/schema.ts +71 -244
  372. package/src/shared/utils/string-enum.ts +25 -4
  373. package/src/shared/utils/tests/schema.test.ts +70 -313
  374. package/dist/shared/chunk-2IHKVMKW.js.map +0 -1
  375. package/dist/shared/chunk-2RK3CPYJ.js.map +0 -1
  376. package/dist/shared/chunk-2VDR4ZYY.js.map +0 -1
  377. package/dist/shared/chunk-36PLZKMW.js.map +0 -1
  378. package/dist/shared/chunk-42OUNI7C.js.map +0 -1
  379. package/dist/shared/chunk-4MNWMEMM.js.map +0 -1
  380. package/dist/shared/chunk-A2QPY54H.js +0 -13
  381. package/dist/shared/chunk-A2QPY54H.js.map +0 -1
  382. package/dist/shared/chunk-BPBKHEQ5.js.map +0 -1
  383. package/dist/shared/chunk-CRS7QCPZ.js.map +0 -1
  384. package/dist/shared/chunk-CSF2WQX2.js.map +0 -1
  385. package/dist/shared/chunk-DFAFDBYZ.js.map +0 -1
  386. package/dist/shared/chunk-DV3G7X34.js +0 -244
  387. package/dist/shared/chunk-DV3G7X34.js.map +0 -1
  388. package/dist/shared/chunk-EVLRH6VG.js.map +0 -1
  389. package/dist/shared/chunk-F22LDHEO.js.map +0 -1
  390. package/dist/shared/chunk-F247VKAE.js.map +0 -1
  391. package/dist/shared/chunk-FQDR2BBZ.js.map +0 -1
  392. package/dist/shared/chunk-GFAQWQER.js.map +0 -1
  393. package/dist/shared/chunk-GQTZPN5D.js.map +0 -1
  394. package/dist/shared/chunk-H5JM2M2T.js.map +0 -1
  395. package/dist/shared/chunk-HTUSL2U7.js +0 -260
  396. package/dist/shared/chunk-HTUSL2U7.js.map +0 -1
  397. package/dist/shared/chunk-IQIISR22.js +0 -794
  398. package/dist/shared/chunk-IQIISR22.js.map +0 -1
  399. package/dist/shared/chunk-JK2FWFJU.js +0 -15
  400. package/dist/shared/chunk-JK2FWFJU.js.map +0 -1
  401. package/dist/shared/chunk-KEM5N6GJ.js.map +0 -1
  402. package/dist/shared/chunk-KIDICX3Y.js.map +0 -1
  403. package/dist/shared/chunk-KILJYJFE.js.map +0 -1
  404. package/dist/shared/chunk-L6C7HUSA.js.map +0 -1
  405. package/dist/shared/chunk-LCJ2VFPM.js.map +0 -1
  406. package/dist/shared/chunk-LLNPH3XR.js.map +0 -1
  407. package/dist/shared/chunk-LTIJI7Y3.js.map +0 -1
  408. package/dist/shared/chunk-MFNHFN2B.js +0 -103
  409. package/dist/shared/chunk-MFNHFN2B.js.map +0 -1
  410. package/dist/shared/chunk-N3ZTQD5I.js.map +0 -1
  411. package/dist/shared/chunk-NTLAKMMQ.js.map +0 -1
  412. package/dist/shared/chunk-Q4NPPLEU.js.map +0 -1
  413. package/dist/shared/chunk-RV7AYVFV.js.map +0 -1
  414. package/dist/shared/chunk-SE6O65HC.js.map +0 -1
  415. package/dist/shared/chunk-TFGGYU6Y.js.map +0 -1
  416. package/dist/shared/chunk-TNMNMYOB.js.map +0 -1
  417. package/dist/shared/chunk-TNTFKLCR.js +0 -1225
  418. package/dist/shared/chunk-TNTFKLCR.js.map +0 -1
  419. package/dist/shared/chunk-U5ZECCJM.js.map +0 -1
  420. package/dist/shared/chunk-UXTASZ23.js.map +0 -1
  421. package/dist/shared/chunk-W6MRYRGJ.js.map +0 -1
  422. package/dist/shared/chunk-WKN566LN.js +0 -29
  423. package/dist/shared/chunk-WKN566LN.js.map +0 -1
  424. package/dist/shared/chunk-Y74LZNND.js.map +0 -1
  425. package/dist/shared/chunk-YWOTQWIQ.js.map +0 -1
  426. package/dist/shared/chunk-ZLYIRH2B.js.map +0 -1
  427. package/dist/shared/chunk-ZR6R6Z6O.js.map +0 -1
  428. package/dist/shared/chunk-ZRRAK5NS.js.map +0 -1
  429. package/dist/shared/tests/schema-registry.test.d.ts +0 -2
  430. package/dist/shared/tests/schema-registry.test.d.ts.map +0 -1
  431. package/dist/shared/utils/schema-registry.d.ts +0 -5
  432. package/dist/shared/utils/schema-registry.d.ts.map +0 -1
  433. package/dist/shared/utils/schema-registry.js +0 -29
  434. package/dist/shared/utils/schema-registry.js.map +0 -1
  435. package/dist/shared/utils/tests/schema-registry.test.d.ts +0 -2
  436. package/dist/shared/utils/tests/schema-registry.test.d.ts.map +0 -1
  437. package/dist/shared/utils/typed-ref.d.ts +0 -43
  438. package/dist/shared/utils/typed-ref.d.ts.map +0 -1
  439. package/dist/shared/utils/typed-ref.js +0 -10
  440. package/dist/shared/utils/typed-ref.js.map +0 -1
  441. package/src/shared/tests/schema-registry.test.ts +0 -12
  442. package/src/shared/utils/schema-registry.ts +0 -82
  443. package/src/shared/utils/tests/schema-registry.test.ts +0 -13
  444. package/src/shared/utils/typed-ref.ts +0 -53
  445. /package/dist/shared/{chunk-N3BEBLWF.js.map → chunk-KQH6V22E.js.map} +0 -0
  446. /package/dist/shared/{chunk-FOGAVJC2.js.map → chunk-LGGPCCCY.js.map} +0 -0
  447. /package/dist/shared/{chunk-GIGFNQBO.js.map → chunk-W2RFDII5.js.map} +0 -0
@@ -1,248 +1,12 @@
1
1
  import { describe, expect, test, beforeEach } from "vitest";
2
2
  import { type Static, Type } from "@sinclair/typebox";
3
3
  import { resolveSchema, validate } from "../schema";
4
- import { inlineSchemaRefs, toLLMSchema } from "../llm";
4
+ import { toLLMSchema } from "../llm";
5
5
  import { sitemapSchema } from "~/shared/sitemap";
6
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";
7
+ import { makeFullBrickSchemaForLLM, type Section, sectionSchema } from "~/shared/bricks";
9
8
  import type { BrickProps } from "~/shared/bricks/props/types";
10
-
11
- describe("resolveSchema tests suite", () => {
12
- beforeEach(() => {
13
- // Clear any test schemas before each test
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");
24
- });
25
-
26
- test("should return primitive types unchanged", () => {
27
- expect(resolveSchema(null as any)).toBe(null);
28
- expect(resolveSchema(undefined as any)).toBe(undefined);
29
- expect(resolveSchema("string" as any)).toBe("string");
30
- expect(resolveSchema(42 as any)).toBe(42);
31
- expect(resolveSchema(true as any)).toBe(true);
32
- });
33
-
34
- test("should return schema without references unchanged", () => {
35
- const schema = Type.Object({
36
- name: Type.String(),
37
- age: Type.Number(),
38
- });
39
-
40
- const result = resolveSchema(schema);
41
- expect(JSON.stringify(result)).toEqual(JSON.stringify(schema));
42
- });
43
-
44
- test("should resolve simple $ref", () => {
45
- const userSchema = Type.Object({
46
- name: Type.String(),
47
- email: Type.String({ format: "email" }),
48
- });
49
-
50
- registerSchema("test:user", userSchema);
51
-
52
- const schemaWithRef = Type.Ref("test:user");
53
-
54
- const result = resolveSchema(schemaWithRef);
55
- expect(result.type).toEqual(userSchema.type);
56
- });
57
-
58
- // test("should throw error for non-existent $ref", () => {
59
- // const schemaWithRef = Type.Ref("test:nonexistent");
60
-
61
- // expect(() => resolveSchema(schemaWithRef)).toThrow("Schema not found for reference: test:nonexistent");
62
- // });
63
-
64
- test("should resolve nested object properties", () => {
65
- const addressSchema = Type.Object({
66
- street: Type.String(),
67
- city: Type.String(),
68
- });
69
-
70
- registerSchema("test:address", addressSchema);
71
-
72
- const schema = Type.Object({
73
- name: Type.String(),
74
- address: Type.Ref("test:address"),
75
- });
76
-
77
- const result = resolveSchema(schema);
78
- expect(result.properties.name.type).toEqual("string");
79
- expect(result.properties.address.type).toEqual(addressSchema.type);
80
- });
81
-
82
- test("should resolve array items", () => {
83
- const itemSchema = Type.Object({
84
- id: Type.Number(),
85
- });
86
-
87
- registerSchema("test:simple", itemSchema);
88
-
89
- const schema = Type.Array(Type.Ref("test:simple"));
90
-
91
- const result = resolveSchema(schema);
92
- expect(result.items.type).toEqual(itemSchema.type);
93
- });
94
-
95
- test("should resolve array items as array", () => {
96
- const stringSchema = Type.String();
97
- const numberSchema = Type.Number();
98
-
99
- registerSchema("test:string", stringSchema);
100
- registerSchema("test:number", numberSchema);
101
-
102
- const schema = Type.Tuple([Type.Ref("test:string"), Type.Ref("test:number")]);
103
-
104
- const result = resolveSchema(schema);
105
- expect(result.items).toHaveLength(2);
106
- });
107
-
108
- test("should resolve anyOf schemas", () => {
109
- const stringSchema = Type.String();
110
- const numberSchema = Type.Number();
111
-
112
- registerSchema("test:string", stringSchema);
113
- registerSchema("test:number", numberSchema);
114
-
115
- const schema = Type.Union([Type.Ref("test:string"), Type.Ref("test:number")]);
116
-
117
- const result = resolveSchema(schema);
118
- expect(result.anyOf[0].type).toEqual(stringSchema.type);
119
- expect(result.anyOf[1].type).toEqual(numberSchema.type);
120
- });
121
-
122
- test("should resolve oneOf schemas", () => {
123
- const stringSchema = Type.String();
124
- const numberSchema = Type.Number();
125
-
126
- registerSchema("test:string", stringSchema);
127
- registerSchema("test:number", numberSchema);
128
-
129
- const schema = {
130
- oneOf: [Type.Ref("test:string"), Type.Ref("test:number")],
131
- } as any;
132
-
133
- const result = resolveSchema(schema);
134
- expect(result.oneOf[0].type).toEqual(stringSchema.type);
135
- expect(result.oneOf[1].type).toEqual(numberSchema.type);
136
- });
137
-
138
- test("should resolve allOf schemas", () => {
139
- const baseSchema = Type.Object({
140
- id: Type.Number(),
141
- });
142
-
143
- const extendedSchema = Type.Object({
144
- name: Type.String(),
145
- });
146
-
147
- registerSchema("test:base", baseSchema);
148
- registerSchema("test:extended", extendedSchema);
149
-
150
- const schema = Type.Intersect([Type.Ref("test:base"), Type.Ref("test:extended")]);
151
-
152
- const result = resolveSchema(schema);
153
-
154
- expect(result.allOf[0].type).toEqual(baseSchema.type);
155
- expect(result.allOf[1].type).toEqual(extendedSchema.type);
156
- });
157
-
158
- test("should resolve not schemas", () => {
159
- const stringSchema = Type.String();
160
-
161
- registerSchema("test:string", stringSchema);
162
-
163
- const schema = Type.Not(Type.Ref("test:string"));
164
-
165
- const result = resolveSchema(schema);
166
- expect(result.not.type).toEqual(stringSchema.type);
167
- });
168
-
169
- test("should resolve conditional schemas (if/then/else)", () => {
170
- const stringSchema = Type.String();
171
- const numberSchema = Type.Number();
172
- const booleanSchema = Type.Boolean();
173
-
174
- registerSchema("test:string", stringSchema);
175
- registerSchema("test:number", numberSchema);
176
- registerSchema("test:boolean", booleanSchema);
177
-
178
- const schema = {
179
- if: Type.Ref("test:string"),
180
- // biome-ignore lint/suspicious/noThenProperty: Required for JSON schema conditional validation
181
- then: Type.Ref("test:number"),
182
- else: Type.Ref("test:boolean"),
183
- } as any;
184
-
185
- const result = resolveSchema(schema);
186
- expect(result.if.type).toEqual(stringSchema.type);
187
- expect(result.then.type).toEqual(numberSchema.type);
188
- expect(result.else.type).toEqual(booleanSchema.type);
189
- });
190
-
191
- test("should handle deeply nested schema structures", () => {
192
- const nestedSchema = Type.Object({
193
- level1: Type.Object({
194
- level2: Type.Array(Type.Union([Type.String(), Type.Number()])),
195
- }),
196
- });
197
-
198
- const result = resolveSchema(nestedSchema);
199
- expect(result).toEqual(nestedSchema);
200
- });
201
-
202
- test("should handle empty objects and arrays", () => {
203
- const schema = Type.Object({});
204
-
205
- const result = resolveSchema(schema);
206
- expect(result).toEqual(schema);
207
- });
208
-
209
- test("should handle schema with no properties", () => {
210
- const schema = Type.Object({});
211
-
212
- const result = resolveSchema(schema);
213
- expect(result).toEqual(schema);
214
- });
215
-
216
- test("should handle complex nested refs", () => {
217
- const addressSchema = Type.Object({
218
- street: Type.String(),
219
- city: Type.String(),
220
- country: Type.String(),
221
- });
222
-
223
- const personSchema = Type.Object({
224
- name: Type.String(),
225
- address: Type.Ref("test:address"),
226
- friends: Type.Array(Type.Ref("test:user")),
227
- });
228
-
229
- registerSchema("test:user", personSchema);
230
- registerSchema("test:address", addressSchema);
231
-
232
- const schema = Type.Object({
233
- users: Type.Array(Type.Ref("test:user")),
234
- });
235
-
236
- const result = resolveSchema(schema);
237
-
238
- expect(result.type).toBe("object");
239
- expect(result.properties.users.type).toBe("array");
240
- expect(result.properties.users.items.type).toBe("object");
241
- expect(result.properties.users.items.properties.name.type).toBe("string");
242
- expect(result.properties.users.items.properties.address.type).toBe("object");
243
- expect(result.properties.users.items.properties.address.properties.street.type).toBe("string");
244
- });
245
- });
9
+ import { type Datarecord, genericDatarecord } from "~/shared/datarecords/types";
246
10
 
247
11
  describe("toLLMSchema tests suite", () => {
248
12
  test("should remove metadata properties", () => {
@@ -640,62 +404,6 @@ describe("toLLMSchema tests suite", () => {
640
404
  expect(result.properties.profile.properties.internalId).toBeUndefined(); // Should be removed
641
405
  });
642
406
 
643
- test("should handle ai:hidden in nested schemas", () => {
644
- const schema = {
645
- definitions: {
646
- User: {
647
- type: "object",
648
- properties: {
649
- name: {
650
- type: "string",
651
- },
652
- password: {
653
- type: "string",
654
- "ai:hidden": true,
655
- },
656
- },
657
- },
658
- },
659
- $defs: {
660
- Settings: {
661
- type: "object",
662
- properties: {
663
- theme: {
664
- type: "string",
665
- },
666
- apiKey: {
667
- type: "string",
668
- "ai:hidden": true,
669
- },
670
- },
671
- },
672
- },
673
- patternProperties: {
674
- "^config_": {
675
- type: "object",
676
- properties: {
677
- value: {
678
- type: "string",
679
- },
680
- secret: {
681
- type: "string",
682
- "ai:hidden": true,
683
- },
684
- },
685
- },
686
- },
687
- } as any;
688
-
689
- const result = toLLMSchema(schema);
690
-
691
- expect(result.definitions.User.properties.name).toBeDefined();
692
- expect(result.definitions.User.properties.password).toBeUndefined();
693
- expect(result.$defs.Settings.properties.theme).toBeDefined();
694
- expect(result.$defs.Settings.properties.apiKey).toBeUndefined();
695
- expect(result.patternProperties["^config_"].properties.value).toBeDefined();
696
- expect(result.patternProperties["^config_"].properties.secret).toBeUndefined();
697
- });
698
-
699
407
  test("test with existing Upstart schema", () => {
700
408
  const transformed = toLLMSchema(sitemapSchema);
701
409
  expect(transformed.items.properties.id.type).toEqual(sitemapSchema.items.properties.id.type);
@@ -708,32 +416,37 @@ describe("toLLMSchema tests suite", () => {
708
416
  });
709
417
  });
710
418
 
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
419
  describe("toLLMSchema consistency", () => {
721
420
  test("toLLMSchema(sectionSchema) should equal sectionSchemaLLM", () => {
722
421
  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");
422
+ expect(transformed.properties.props.properties.colorPreset).toBeDefined();
423
+ expect(transformed.properties.props.properties.variant).not.toBeDefined();
730
424
  });
731
425
  });
732
426
 
733
427
  describe("validation with validate()", () => {
428
+ test("should validate correct schema with @sinclair/typebox", () => {
429
+ const sectionSchemaLLM = toLLMSchema(sectionSchema);
430
+ const validSectionExample: Section = {
431
+ id: "section1",
432
+ label: "Hero Section",
433
+ order: 1,
434
+ props: {
435
+ colorPreset: {
436
+ color: "primary-100",
437
+ },
438
+ maxWidth: "max-w-full",
439
+ verticalMargin: "28px",
440
+ direction: "flex-col",
441
+ },
442
+ bricks: [],
443
+ };
444
+ expect(() => validate(sectionSchema, validSectionExample), "Section schema").not.toThrow();
445
+ expect(() => validate(sectionSchemaLLM, validSectionExample), "Section schema LLM").not.toThrow();
446
+ });
447
+
734
448
  test("should validate correct schema", () => {
735
- expect(sectionSchemaLLM.$defs.presets_color).toBeDefined();
736
- expect(sectionSchemaLLM.$defs.presets_color.type).toBe("object");
449
+ const sectionSchemaLLM = toLLMSchema(sectionSchema);
737
450
  const validSectionExample: Section = {
738
451
  id: "section1",
739
452
  label: "Hero Section",
@@ -760,7 +473,47 @@ describe("validation with validate()", () => {
760
473
  content: "Hello, world!",
761
474
  },
762
475
  };
476
+ expect(() => validate(schema, example), `Brick without mobileProps`).not.toThrow();
477
+ });
478
+
479
+ test("should validate unions of literals", () => {
480
+ const schema = genericDatarecord;
481
+ const example: Datarecord = {
482
+ id: "newsletter_subscriptions",
483
+ provider: "internal",
484
+ label: "Newsletter Subscriptions",
485
+ description: "Stores newsletter subscription entries",
486
+ schema: {
487
+ type: "object",
488
+ properties: {
489
+ firstname: { type: "string", title: "Firstname" },
490
+ },
491
+ required: ["email"],
492
+ title: "Newsletter Subscription",
493
+ },
494
+ };
763
495
  expect(() => validate(schema, example)).not.toThrow();
496
+ expect(() => validate(toLLMSchema(schema), example)).not.toThrow();
497
+
498
+ const arrayOfDatarecords: Datarecord[] = [
499
+ example,
500
+ {
501
+ id: "user_profiles",
502
+ provider: "airtable",
503
+ label: "User Profiles",
504
+ schema: {
505
+ type: "object",
506
+ properties: {
507
+ username: { type: "string", title: "Username" },
508
+ bio: { type: "string", title: "Bio" },
509
+ },
510
+ required: ["username"],
511
+ title: "User Profile",
512
+ },
513
+ },
514
+ ];
515
+ expect(() => validate(Type.Array(schema), arrayOfDatarecords)).not.toThrow();
516
+ expect(() => validate(toLLMSchema(Type.Array(schema)), arrayOfDatarecords)).not.toThrow();
764
517
  });
765
518
 
766
519
  test("should validate a brick with partial mobileProps", () => {
@@ -789,4 +542,8 @@ describe("validation with validate()", () => {
789
542
  };
790
543
  expect(() => validate(schema, example2)).not.toThrow();
791
544
  });
545
+
546
+ test("show section schema", () => {
547
+ console.log("Section schema:", JSON.stringify(sectionSchema));
548
+ });
792
549
  });
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/shared/bricks/manifests/sidebar.manifest.ts"],"sourcesContent":["import { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps, group } from \"../props/helpers\";\nimport { VscLayoutSidebarLeftOff } from \"react-icons/vsc\";\nimport { Type } from \"@sinclair/typebox\";\nimport { string, urlOrPageIdRef } from \"../props/string\";\nimport { backgroundColorRef } from \"../props/background\";\nimport { borderRef } from \"../props/border\";\nimport { fixedPositioned } from \"../props/position\";\nimport type { BrickProps } from \"../props/types\";\nimport { shadowRef } from \"../props/effects\";\nimport type { BrickExample } from \"./_types\";\n\nexport const manifest = defineBrickManifest({\n type: \"sidebar\",\n category: \"layout\",\n name: \"Sidebar\",\n description: \"A sidebar element\",\n inlineDragDisabled: true,\n isGlobalBrick: true,\n duplicatable: false,\n resizable: false,\n movable: false,\n aiInstructions: `\n This brick should be used on most sites/pages for navigation. By default, it will display links\n to the main pages of the site. You can customize the links by using the 'navigation.navItems' prop.\n `.trim(),\n icon: VscLayoutSidebarLeftOff,\n props: defineProps({\n container: Type.Optional(\n group({\n title: \"Main element\",\n children: {\n backgroundColor: Type.Optional(backgroundColorRef()),\n border: Type.Optional(borderRef()),\n shadow: Type.Optional(shadowRef()),\n fixedPositioned: Type.Optional(fixedPositioned()),\n },\n metadata: {\n \"ui:responsive\": true,\n },\n }),\n ),\n navigation: Type.Optional(\n group({\n title: \"Links\",\n children: {\n navItems: Type.Optional(\n Type.Array(\n Type.Object({\n urlOrPageId: urlOrPageIdRef(),\n label: Type.Optional(string(\"Label\")),\n }),\n { title: \"Navigation items\", default: [] },\n ),\n ),\n },\n }),\n ),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: BrickExample<Manifest>[] = [\n {\n description: \"Standard sidebar with navigation links base on site pages\",\n type: \"sidebar\",\n props: {},\n },\n {\n description: \"Sidebar with specified navigation links\",\n type: \"sidebar\",\n props: {\n container: {\n backgroundColor: \"#f0f0f0\",\n },\n navigation: {\n navItems: [\n { urlOrPageId: \"https://google.com\", label: \"Google\" },\n { urlOrPageId: \"https://bing.com\", label: \"Bing\" },\n ],\n },\n },\n },\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAS,+BAA+B;AACxC,SAAS,YAAY;AASd,IAAM,WAAW,oBAAoB;AAAA,EAC1C,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,aAAa;AAAA,EACb,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,WAAW;AAAA,EACX,SAAS;AAAA,EACT,gBAAgB;AAAA;AAAA;AAAA,IAGd,KAAK;AAAA,EACP,MAAM;AAAA,EACN,OAAO,YAAY;AAAA,IACjB,WAAW,KAAK;AAAA,MACd,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,UAAU;AAAA,UACR,iBAAiB,KAAK,SAAS,mBAAmB,CAAC;AAAA,UACnD,QAAQ,KAAK,SAAS,UAAU,CAAC;AAAA,UACjC,QAAQ,KAAK,SAAS,UAAU,CAAC;AAAA,UACjC,iBAAiB,KAAK,SAAS,gBAAgB,CAAC;AAAA,QAClD;AAAA,QACA,UAAU;AAAA,UACR,iBAAiB;AAAA,QACnB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,UAAU;AAAA,UACR,UAAU,KAAK;AAAA,YACb,KAAK;AAAA,cACH,KAAK,OAAO;AAAA,gBACV,aAAa,eAAe;AAAA,gBAC5B,OAAO,KAAK,SAAS,OAAO,OAAO,CAAC;AAAA,cACtC,CAAC;AAAA,cACD,EAAE,OAAO,oBAAoB,SAAS,CAAC,EAAE;AAAA,YAC3C;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH,CAAC;AAIM,IAAM,WAAqC;AAAA,EAChD;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO,CAAC;AAAA,EACV;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,WAAW;AAAA,QACT,iBAAiB;AAAA,MACnB;AAAA,MACA,YAAY;AAAA,QACV,UAAU;AAAA,UACR,EAAE,aAAa,sBAAsB,OAAO,SAAS;AAAA,UACrD,EAAE,aAAa,oBAAoB,OAAO,OAAO;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/shared/bricks/props/common.ts"],"sourcesContent":["import { type Static, type TString, Type } from \"@sinclair/typebox\";\nimport { typedRef } from \"~/shared/utils/typed-ref\";\nimport { cssLengthRef } from \"./css-length\";\nimport { alignSelfRef } from \"./align\";\n\nexport function hidden() {\n return Type.Object(\n {\n desktop: Type.Optional(Type.Boolean()),\n mobile: Type.Optional(Type.Boolean()),\n },\n {\n // $id: \"styles:hidden\",\n title: \"Hidden\",\n description: \"Used to hide the brick on desktop or mobile.\",\n \"ui:field\": \"hidden\",\n },\n );\n}\n\nexport const commonProps = {\n lastTouched: Type.Optional(\n Type.Number({\n \"ui:field\": \"hidden\",\n \"ai:hidden\": true,\n }),\n ),\n hidden: Type.Optional(typedRef(\"styles:hidden\")),\n editable: Type.Optional(\n Type.Boolean({\n \"ui:field\": \"hidden\",\n \"ai:hidden\": true,\n }),\n ),\n width: Type.Optional(\n cssLengthRef({\n title: \"Fixed Width\",\n description:\n \"Set a fixed width for the brick. If not set, the brick will be responsive and will follow the flex layout of its parent section.\",\n \"ai:instructions\": \"Use percentage values to make the width responsive, like '50%'\",\n \"ui:field\": \"hidden\",\n }) as TString,\n ),\n height: Type.Optional(\n cssLengthRef({\n title: \"Fixed height\",\n description:\n \"Set a fixed height for the brick. If not set, the brick will be responsive and will follow the flex layout of its parent section.\",\n \"ui:field\": \"hidden\",\n }),\n ),\n grow: Type.Optional(\n Type.Boolean({\n title: \"Auto expand\",\n description: \"If set, the brick will grow to fill the available space of its parent section or box.\",\n \"ui:styleId\": \"styles:grow\",\n \"ui:responsive\": true,\n }),\n ),\n alignSelf: Type.Optional(alignSelfRef()),\n};\n\nconst commonPropsSchema = Type.Object(commonProps);\nexport type CommonBrickProps = Static<typeof commonPropsSchema>;\n"],"mappings":";;;;;;;;;;;;;AAAA,SAAoC,YAAY;AAKzC,SAAS,SAAS;AACvB,SAAO,KAAK;AAAA,IACV;AAAA,MACE,SAAS,KAAK,SAAS,KAAK,QAAQ,CAAC;AAAA,MACrC,QAAQ,KAAK,SAAS,KAAK,QAAQ,CAAC;AAAA,IACtC;AAAA,IACA;AAAA;AAAA,MAEE,OAAO;AAAA,MACP,aAAa;AAAA,MACb,YAAY;AAAA,IACd;AAAA,EACF;AACF;AAEO,IAAM,cAAc;AAAA,EACzB,aAAa,KAAK;AAAA,IAChB,KAAK,OAAO;AAAA,MACV,YAAY;AAAA,MACZ,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EACA,QAAQ,KAAK,SAAS,SAAS,eAAe,CAAC;AAAA,EAC/C,UAAU,KAAK;AAAA,IACb,KAAK,QAAQ;AAAA,MACX,YAAY;AAAA,MACZ,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EACA,OAAO,KAAK;AAAA,IACV,aAAa;AAAA,MACX,OAAO;AAAA,MACP,aACE;AAAA,MACF,mBAAmB;AAAA,MACnB,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EACA,QAAQ,KAAK;AAAA,IACX,aAAa;AAAA,MACX,OAAO;AAAA,MACP,aACE;AAAA,MACF,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EACA,MAAM,KAAK;AAAA,IACT,KAAK,QAAQ;AAAA,MACX,OAAO;AAAA,MACP,aAAa;AAAA,MACb,cAAc;AAAA,MACd,iBAAiB;AAAA,IACnB,CAAC;AAAA,EACH;AAAA,EACA,WAAW,KAAK,SAAS,aAAa,CAAC;AACzC;AAEA,IAAM,oBAAoB,KAAK,OAAO,WAAW;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/shared/bricks/manifests/map.manifest.ts"],"sourcesContent":["import { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps } from \"../props/helpers\";\nimport { LiaMapMarkedAltSolid } from \"react-icons/lia\";\nimport { roundingRef } from \"../props/border\";\nimport { shadowRef } from \"../props/effects\";\nimport type { BrickProps } from \"../props/types\";\nimport { Type } from \"@sinclair/typebox\";\nimport { number } from \"../props/number\";\nimport { string } from \"../props/string\";\nimport type { BrickExample } from \"./_types\";\n\nexport const DEFAULTS = {\n lat: 48.8566, // Default latitude (Paris)\n lng: 2.3522, // Default longitude (Paris)\n zoom: 15, // Default zoom level\n};\n\nexport const manifest = defineBrickManifest({\n type: \"map\",\n name: \"Map\",\n description: \"A map element showing a location\",\n aiInstructions:\n \"This brick can be used to show a location on a map. Use the 'location' prop to set the coordinates and an optional tooltip.\",\n minWidth: {\n desktop: 280,\n mobile: 280,\n },\n minHeight: {\n desktop: 200,\n mobile: 120,\n },\n defaultHeight: {\n desktop: \"320px\",\n mobile: \"280px\",\n },\n defaultWidth: {\n desktop: \"380px\",\n mobile: \"100%\",\n },\n icon: LiaMapMarkedAltSolid,\n props: defineProps({\n // location: geolocation({ defaultZoom: DEFAULTS.zoom }),\n lat: string(\"Latitude\", { \"ui:field\": \"hidden\" }),\n lng: string(\"Longitude\", { \"ui:field\": \"hidden\" }),\n address: string(\"Address\", {\n \"ui:field\": \"geoaddress\",\n metadata: {\n category: \"content\",\n },\n }),\n tooltip: Type.Optional(\n string(\"Tooltip\", {\n metadata: {\n category: \"content\",\n },\n }),\n ),\n zoom: Type.Optional(\n number(\"Zoom\", {\n description: \"Zoom level for the map\",\n \"ui:instructions\": \"The zoom level should be between 0 (world view) and 21 (street view).\",\n \"ui:field\": \"slider\",\n minimum: 12,\n maximum: 18,\n default: DEFAULTS.zoom,\n metadata: {\n category: \"content\",\n },\n }),\n ),\n rounding: Type.Optional(\n roundingRef({\n default: \"rounded-xl\",\n }),\n ),\n shadow: Type.Optional(shadowRef()),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: BrickExample<Manifest>[] = [\n {\n description: \"Map showing a specific location\",\n type: \"map\",\n props: {\n lat: \"37.7749\",\n lng: \"-122.4194\",\n address: \"San Francisco, CA\",\n tooltip: \"San Francisco, CA\",\n shadow: \"shadow-md\",\n width: \"40%\",\n height: \"250px\",\n },\n },\n {\n description: \"Map with custom styles\",\n type: \"map\",\n props: {\n lat: \"40.7128\",\n lng: \"-74.0060\",\n address: \"New York, NY\",\n tooltip: \"New York, NY\",\n shadow: \"shadow-lg\",\n width: \"100%\",\n height: \"400px\",\n },\n },\n {\n description: \"Business location map with high zoom level and rounded corners\",\n type: \"map\",\n props: {\n lat: \"34.0522\",\n lng: \"-118.2437\",\n address: \"Los Angeles, CA\",\n tooltip: \"Our Los Angeles Office\",\n zoom: 18,\n rounding: \"rounded-2xl\",\n shadow: \"shadow-xl\",\n },\n },\n {\n description: \"Event venue map with medium zoom and subtle shadow\",\n type: \"map\",\n props: {\n lat: \"41.8781\",\n lng: \"-87.6298\",\n address: \"Chicago, IL\",\n tooltip: \"Conference Center - Chicago\",\n zoom: 16,\n rounding: \"rounded-lg\",\n shadow: \"shadow-sm\",\n },\n },\n {\n description: \"Restaurant location with default zoom and sharp corners\",\n type: \"map\",\n props: {\n lat: \"25.7617\",\n lng: \"-80.1918\",\n address: \"Miami, FL\",\n tooltip: \"Oceanview Restaurant & Bar\",\n zoom: 15,\n rounding: \"rounded-none\",\n shadow: \"shadow-md\",\n },\n },\n {\n description: \"Hotel location with low zoom for area overview\",\n type: \"map\",\n props: {\n lat: \"36.1699\",\n lng: \"-115.1398\",\n address: \"Las Vegas, NV\",\n tooltip: \"Downtown Las Vegas Hotel\",\n zoom: 13,\n rounding: \"rounded-xl\",\n shadow: \"shadow-lg\",\n },\n },\n {\n description: \"Store location with maximum zoom for street view detail\",\n type: \"map\",\n props: {\n lat: \"47.6062\",\n lng: \"-122.3321\",\n address: \"Seattle, WA\",\n tooltip: \"Seattle Flagship Store\",\n zoom: 18,\n rounding: \"rounded-md\",\n shadow: \"shadow-sm\",\n },\n },\n {\n description: \"Park location with moderate zoom and minimal styling\",\n type: \"map\",\n props: {\n lat: \"39.7392\",\n lng: \"-104.9903\",\n address: \"Denver, CO\",\n tooltip: \"City Park Recreation Area\",\n zoom: 14,\n rounding: \"rounded-sm\",\n },\n },\n {\n description: \"Dynamic business location using company query\",\n type: \"map\",\n props: {\n lat: \"{{company.latitude}}\",\n lng: \"{{company.longitude}}\",\n address: \"{{company.address}}\",\n tooltip: \"{{company.name}} - {{company.address}}\",\n zoom: 16,\n rounding: \"rounded-lg\",\n shadow: \"shadow-md\",\n },\n },\n {\n description: \"Dynamic event venue using event query\",\n type: \"map\",\n props: {\n lat: \"{{event.venueLatitude}}\",\n lng: \"{{event.venueLongitude}}\",\n address: \"{{event.venueAddress}}\",\n tooltip: \"{{event.title}} - {{event.venueName}}\",\n zoom: 17,\n rounding: \"rounded-xl\",\n shadow: \"shadow-lg\",\n },\n },\n];\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/shared/bricks/manifests/footer.manifest.ts"],"sourcesContent":["import { type Static, Type } from \"@sinclair/typebox\";\nimport { VscLayoutPanelOff } from \"react-icons/vsc\";\nimport { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { array, defineProps } from \"../props/helpers\";\nimport { imageRef } from \"../props/image\";\nimport { colorPresetRef } from \"../props/color-preset\";\nimport { string, urlOrPageIdRef } from \"../props/string\";\nimport { fontSizeRef } from \"../props/text\";\nimport type { BrickProps } from \"../props/types\";\nimport { toLLMSchema } from \"~/shared/utils/llm\";\nimport { cssLengthRef } from \"../props/css-length\";\nimport type { BrickExample } from \"./_types\";\n\nexport const manifest = defineBrickManifest({\n type: \"footer\",\n name: \"Footer\",\n category: \"layout\",\n description: \"A footer with links and an optional logo.\",\n aiInstructions: \"This brick should be used on most sites/pages. It must be placed on its own section.\",\n icon: VscLayoutPanelOff,\n staticClasses: \"flex-1\",\n isGlobalBrick: true,\n hideInLibrary: true,\n resizable: false,\n movable: false,\n defaultWidth: {\n desktop: \"100%\",\n mobile: \"100%\",\n },\n props: defineProps(\n {\n colorPreset: Type.Optional(\n colorPresetRef({\n title: \"Color preset\",\n default: { color: \"neutral-600\" },\n }),\n ),\n padding: Type.Optional(\n cssLengthRef({\n default: \"4rem\",\n description: \"Padding inside the footer.\",\n title: \"Padding\",\n \"ui:responsive\": true,\n \"ui:placeholder\": \"Not specified\",\n \"ui:styleId\": \"styles:padding\",\n }),\n ),\n logo: Type.Optional(imageRef({ title: \"Logo\", \"ui:no-object-options\": true, \"ui:no-alt-text\": true })),\n fontSize: Type.Optional(fontSizeRef({ default: \"text-sm\", \"ui:no-extra-large-sizes\": true })),\n // rows:Type.Optional(number(\"Rows\", { default: 1, \"ui:field\": \"slider\", minimum: 1, maximum: 5 })),\n linksSections: array(\n Type.Object(\n {\n sectionTitle: string(\"Title\"),\n links: array(\n Type.Object({\n title: string(\"Title\"),\n url: urlOrPageIdRef(),\n }),\n {\n title: \"Links\",\n },\n ),\n },\n {\n examples: [\n {\n sectionTitle: \"Quick Links\",\n links: [\n { title: \"Home\", url: \"/\" },\n { title: \"About\", url: \"page-id-of-about-page\" },\n { title: \"Our Services\", url: \"page-id-of-services-page\" },\n ],\n },\n {\n sectionTitle: \"Legal\",\n links: [\n { title: \"Privacy Policy\", url: \"page-id-of-privacy-policy\" },\n { title: \"Terms of Service\", url: \"page-id-of-terms\" },\n { title: \"Our law firm\", url: \"https://my.external.lawfirm.com\" },\n ],\n },\n ],\n },\n ),\n {\n title: \"Links\",\n \"ui:displayField\": \"sectionTitle\",\n \"ui:options\": {\n orderable: true, // Enable drag & drop reordering\n removable: true, // Enable delete button\n addable: true, // Enable add button\n },\n description: \"List of Links Sections. Each section contains a title and a list of links.\",\n metadata: {\n category: \"content\",\n },\n },\n ),\n },\n { noGrow: true, noAlignSelf: true },\n ),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const footerSchemaPropsLLM = toLLMSchema(manifest.props);\n\nexport type FooterProps = Static<Manifest[\"props\"]>;\n\nexport const examples: BrickExample<Manifest>[] = [\n {\n description: \"Simple footer with logo on the left\",\n type: \"footer\",\n props: {\n // backgroundColor: \"#f8f9fa\",\n logo: {\n src: \"https://via.placeholder.com/120x40.png?text=Logo\",\n alt: \"Company logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Quick Links\",\n links: [\n { title: \"Home\", url: \"/\" },\n { title: \"About\", url: \"/about\" },\n { title: \"Contact\", url: \"/contact\" },\n ],\n },\n {\n sectionTitle: \"Legal\",\n links: [\n { title: \"Privacy Policy\", url: \"/privacy\" },\n { title: \"Terms of Service\", url: \"/terms\" },\n ],\n },\n ],\n },\n },\n {\n description: \"Corporate footer with centered logo\",\n type: \"footer\",\n props: {\n // backgroundColor: \"#2c3e50\",\n logo: {\n src: \"https://via.placeholder.com/150x50.png?text=Corporate\",\n alt: \"Corporate logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Products\",\n links: [\n { title: \"Software Solutions\", url: \"/products/software\" },\n { title: \"Consulting\", url: \"/products/consulting\" },\n { title: \"Support\", url: \"/products/support\" },\n { title: \"Training\", url: \"/products/training\" },\n ],\n },\n {\n sectionTitle: \"Company\",\n links: [\n { title: \"About Us\", url: \"/about\" },\n { title: \"Careers\", url: \"/careers\" },\n { title: \"News\", url: \"/news\" },\n { title: \"Investors\", url: \"/investors\" },\n ],\n },\n {\n sectionTitle: \"Resources\",\n links: [\n { title: \"Documentation\", url: \"/docs\" },\n { title: \"API Reference\", url: \"/api\" },\n { title: \"Community\", url: \"/community\" },\n { title: \"Blog\", url: \"/blog\" },\n ],\n },\n ],\n },\n },\n {\n description: \"E-commerce footer with logo on the right\",\n type: \"footer\",\n props: {\n // backgroundColor: \"#ffffff\",\n logo: {\n src: \"https://via.placeholder.com/140x45.png?text=Shop\",\n alt: \"Shop logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Shop\",\n links: [\n { title: \"All Products\", url: \"/products\" },\n { title: \"New Arrivals\", url: \"/new\" },\n { title: \"Sale\", url: \"/sale\" },\n { title: \"Gift Cards\", url: \"/gift-cards\" },\n ],\n },\n {\n sectionTitle: \"Customer Service\",\n links: [\n { title: \"Help Center\", url: \"/help\" },\n { title: \"Returns\", url: \"/returns\" },\n { title: \"Shipping Info\", url: \"/shipping\" },\n { title: \"Size Guide\", url: \"/size-guide\" },\n ],\n },\n {\n sectionTitle: \"Account\",\n links: [\n { title: \"My Account\", url: \"/account\" },\n { title: \"Order History\", url: \"/orders\" },\n { title: \"Wishlist\", url: \"/wishlist\" },\n ],\n },\n ],\n },\n },\n {\n description: \"Large organization footer with multiple rows\",\n type: \"footer\",\n props: {\n // backgroundColor: \"#1a1a1a\",\n logo: {\n src: \"https://via.placeholder.com/180x60.png?text=Enterprise\",\n alt: \"Enterprise logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Products & Services\",\n links: [\n { title: \"Cloud Solutions\", url: \"/cloud\" },\n { title: \"Data Analytics\", url: \"/analytics\" },\n { title: \"AI & Machine Learning\", url: \"/ai\" },\n { title: \"Cybersecurity\", url: \"/security\" },\n { title: \"DevOps Tools\", url: \"/devops\" },\n { title: \"IoT Platform\", url: \"/iot\" },\n ],\n },\n {\n sectionTitle: \"Industries\",\n links: [\n { title: \"Healthcare\", url: \"/industries/healthcare\" },\n { title: \"Finance\", url: \"/industries/finance\" },\n { title: \"Retail\", url: \"/industries/retail\" },\n { title: \"Manufacturing\", url: \"/industries/manufacturing\" },\n { title: \"Education\", url: \"/industries/education\" },\n { title: \"Government\", url: \"/industries/government\" },\n ],\n },\n {\n sectionTitle: \"Resources\",\n links: [\n { title: \"Documentation\", url: \"/docs\" },\n { title: \"API Reference\", url: \"/api\" },\n { title: \"Tutorials\", url: \"/tutorials\" },\n { title: \"Webinars\", url: \"/webinars\" },\n { title: \"White Papers\", url: \"/whitepapers\" },\n { title: \"Case Studies\", url: \"/case-studies\" },\n ],\n },\n {\n sectionTitle: \"Support & Community\",\n links: [\n { title: \"Help Center\", url: \"/help\" },\n { title: \"Community Forum\", url: \"/forum\" },\n { title: \"Contact Support\", url: \"/support\" },\n { title: \"Service Status\", url: \"/status\" },\n { title: \"Partner Portal\", url: \"/partners\" },\n { title: \"Developer Hub\", url: \"/developers\" },\n ],\n },\n ],\n },\n },\n {\n description: \"Startup footer with minimal links and left logo\",\n type: \"footer\",\n props: {\n // backgroundColor: \"#f5f5f5\",\n logo: {\n src: \"https://via.placeholder.com/100x35.png?text=Startup\",\n alt: \"Startup logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Company\",\n links: [\n { title: \"About\", url: \"/about\" },\n { title: \"Team\", url: \"/team\" },\n { title: \"Jobs\", url: \"/jobs\" },\n ],\n },\n {\n sectionTitle: \"Product\",\n links: [\n { title: \"Features\", url: \"/features\" },\n { title: \"Pricing\", url: \"/pricing\" },\n { title: \"Demo\", url: \"/demo\" },\n ],\n },\n {\n sectionTitle: \"Support\",\n links: [\n { title: \"Help\", url: \"/help\" },\n { title: \"Contact\", url: \"/contact\" },\n ],\n },\n ],\n },\n },\n {\n description: \"Agency footer with centered logo and creative sections\",\n type: \"footer\",\n props: {\n // backgroundColor: \"#6366f1\",\n logo: {\n src: \"https://via.placeholder.com/130x45.png?text=Agency\",\n alt: \"Creative agency logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Services\",\n links: [\n { title: \"Web Design\", url: \"/services/web-design\" },\n { title: \"Branding\", url: \"/services/branding\" },\n { title: \"Digital Marketing\", url: \"/services/marketing\" },\n { title: \"Photography\", url: \"/services/photography\" },\n ],\n },\n {\n sectionTitle: \"Portfolio\",\n links: [\n { title: \"Recent Work\", url: \"/portfolio\" },\n { title: \"Case Studies\", url: \"/case-studies\" },\n { title: \"Client Reviews\", url: \"/reviews\" },\n ],\n },\n {\n sectionTitle: \"Connect\",\n links: [\n { title: \"Contact Us\", url: \"/contact\" },\n { title: \"Get Quote\", url: \"/quote\" },\n { title: \"Newsletter\", url: \"/newsletter\" },\n ],\n },\n ],\n },\n },\n {\n description: \"SaaS platform footer with comprehensive links\",\n type: \"footer\",\n props: {\n logo: {\n src: \"https://via.placeholder.com/160x50.png?text=SaaS+Platform\",\n alt: \"SaaS platform logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Platform\",\n links: [\n { title: \"Dashboard\", url: \"/dashboard\" },\n { title: \"Analytics\", url: \"/analytics\" },\n { title: \"Integrations\", url: \"/integrations\" },\n { title: \"API\", url: \"/api\" },\n ],\n },\n {\n sectionTitle: \"Solutions\",\n links: [\n { title: \"For Startups\", url: \"/solutions/startups\" },\n { title: \"For Enterprise\", url: \"/solutions/enterprise\" },\n { title: \"For Agencies\", url: \"/solutions/agencies\" },\n { title: \"For Developers\", url: \"/solutions/developers\" },\n ],\n },\n {\n sectionTitle: \"Resources\",\n links: [\n { title: \"Blog\", url: \"/blog\" },\n { title: \"Documentation\", url: \"/docs\" },\n { title: \"Help Center\", url: \"/help\" },\n { title: \"Community\", url: \"/community\" },\n ],\n },\n {\n sectionTitle: \"Company\",\n links: [\n { title: \"About Us\", url: \"/about\" },\n { title: \"Careers\", url: \"/careers\" },\n { title: \"Press\", url: \"/press\" },\n { title: \"Legal\", url: \"/legal\" },\n ],\n },\n ],\n },\n },\n {\n description: \"Non-profit footer with mission-focused links\",\n type: \"footer\",\n props: {\n logo: {\n src: \"https://via.placeholder.com/140x50.png?text=Non+Profit\",\n alt: \"Non-profit organization logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Our Work\",\n links: [\n { title: \"Programs\", url: \"/programs\" },\n { title: \"Impact\", url: \"/impact\" },\n { title: \"Success Stories\", url: \"/stories\" },\n { title: \"Research\", url: \"/research\" },\n ],\n },\n {\n sectionTitle: \"Get Involved\",\n links: [\n { title: \"Donate\", url: \"/donate\" },\n { title: \"Volunteer\", url: \"/volunteer\" },\n { title: \"Events\", url: \"/events\" },\n { title: \"Partner with Us\", url: \"/partnerships\" },\n ],\n },\n {\n sectionTitle: \"About\",\n links: [\n { title: \"Our Mission\", url: \"/mission\" },\n { title: \"Leadership\", url: \"/leadership\" },\n { title: \"Annual Reports\", url: \"/reports\" },\n { title: \"Contact\", url: \"/contact\" },\n ],\n },\n ],\n },\n },\n {\n description: \"Tech blog footer with right-aligned logo\",\n type: \"footer\",\n props: {\n logo: {\n src: \"https://via.placeholder.com/120x40.png?text=Tech+Blog\",\n alt: \"Tech blog logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Categories\",\n links: [\n { title: \"Web Development\", url: \"/category/web-dev\" },\n { title: \"AI & ML\", url: \"/category/ai-ml\" },\n { title: \"DevOps\", url: \"/category/devops\" },\n { title: \"Mobile\", url: \"/category/mobile\" },\n ],\n },\n {\n sectionTitle: \"Popular\",\n links: [\n { title: \"Latest Posts\", url: \"/latest\" },\n { title: \"Trending\", url: \"/trending\" },\n { title: \"Best of 2024\", url: \"/best-2024\" },\n { title: \"Tutorials\", url: \"/tutorials\" },\n ],\n },\n {\n sectionTitle: \"Community\",\n links: [\n { title: \"Newsletter\", url: \"/newsletter\" },\n { title: \"Discord\", url: \"/discord\" },\n { title: \"Contributors\", url: \"/contributors\" },\n { title: \"Write for Us\", url: \"/write\" },\n ],\n },\n ],\n },\n },\n {\n description: \"Restaurant footer with location and menu links\",\n type: \"footer\",\n props: {\n logo: {\n src: \"https://via.placeholder.com/150x60.png?text=Restaurant\",\n alt: \"Restaurant logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Menu\",\n links: [\n { title: \"Appetizers\", url: \"/menu/appetizers\" },\n { title: \"Main Courses\", url: \"/menu/mains\" },\n { title: \"Desserts\", url: \"/menu/desserts\" },\n { title: \"Beverages\", url: \"/menu/drinks\" },\n ],\n },\n {\n sectionTitle: \"Services\",\n links: [\n { title: \"Reservations\", url: \"/reservations\" },\n { title: \"Catering\", url: \"/catering\" },\n { title: \"Private Events\", url: \"/events\" },\n { title: \"Gift Cards\", url: \"/gift-cards\" },\n ],\n },\n {\n sectionTitle: \"Info\",\n links: [\n { title: \"About Us\", url: \"/about\" },\n { title: \"Location\", url: \"/location\" },\n { title: \"Hours\", url: \"/hours\" },\n { title: \"Contact\", url: \"/contact\" },\n ],\n },\n ],\n },\n },\n];\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/shared/bricks/manifests/form.manifest.ts"],"sourcesContent":["import { type Static, Type } from \"@sinclair/typebox\";\nimport { FaWpforms } from \"react-icons/fa6\";\nimport { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { StringEnum } from \"~/shared/utils/string-enum\";\nimport { borderRef, roundingRef } from \"../props/border\";\nimport { datarecord } from \"../props/datarecord\";\nimport { defineProps, group } from \"../props/helpers\";\nimport { string } from \"../props/string\";\nimport type { BrickProps } from \"../props/types\";\nimport { fontSizeRef } from \"../props/text\";\nimport { colorPresetRef } from \"../props/color-preset\";\nimport { directionRef } from \"../props/direction\";\nimport { cssLengthRef } from \"../props/css-length\";\nimport type { BrickExample } from \"./_types\";\n\nexport const manifest = defineBrickManifest({\n type: \"form\",\n name: \"Form\",\n description: \"A form element.\",\n aiInstructions: `PURPOSE\nDynamic form generator. Fields are inferred from the referenced datarecord schema (datarecordId). You NEVER list fields manually and the form does not accept children.\n\nREQUIRED\n• datarecordId must reference an existing datarecord definition.\n\nCOLOR & STYLE\n• Optional colorPreset sets background + text. If omitted the form inherits parent background.\n• Allowed tokens: primary-/secondary-/accent-/neutral-/base-*** (and gradient variants). Do NOT invent success, warning, danger, info, etc. Map them (success->secondary or primary; warning->accent; danger->accent/primary).\n• Use rounding + border + padding for emphasis. Keep padding modest (1–3rem) unless it's a feature form hero (max ~4rem).\n\nLAYOUT\n• direction controls stacking (flex-col vs flex-row). Wide multi-column layouts usually flex-row on desktop, stacked (flex-col) on mobile.\n• Use mobileProps to reduce padding or switch direction ONLY if necessary. (If switching direction, you must repeat required props.)\n\nBUTTON GROUP\n• Only supply button overrides you actually change (color, size, position, rounding). Unspecified values fallback to defaults.\n• If button.size = wide then hide position (handled by schema metadata automatically—don't circumvent).\n\nCONTENT STRINGS\n• title, intro, buttonLabel, successMessage, errorMessage should be concise.\n• Avoid marketing fluff inside intro beyond one short paragraph.\n\nDYNAMIC DATA\n• Do not interpolate inside datarecordId (it must be a static id).\n• You MAY interpolate page queries aliases in title/intro (e.g. \"Apply for {{job.title}}\") if those fields exist in surrounding dataset context.\n\nDON'TS\n✗ Don't invent props.\n✗ Don't add HTML tags except basic inline markup if absolutely needed (prefer plain text).\n✗ Don't set impossible color tokens.\n\nDO\n✓ Keep examples lean.\n✓ Use semantic color mapping guidelines.\n✓ Provide accessible, human-readable labels.\n`,\n isContainer: false,\n icon: FaWpforms,\n minWidth: {\n desktop: 300,\n },\n props: defineProps({\n datarecordId: datarecord(\"Datarecord ID\", {\n description: \"The ID of the datarecord to use to generate the form fields. The datarecord must exist.\",\n \"ui:responsive\": \"desktop\",\n }),\n colorPreset: Type.Optional(\n colorPresetRef({\n title: \"Color\",\n default: \"base-200\",\n }),\n ),\n direction: Type.Optional(\n directionRef({\n title: \"Direction\",\n description: \"The direction of the form fields\",\n default: \"flex-col\",\n \"ui:responsive\": \"desktop\",\n \"ui:desktop-only\": true,\n }),\n ),\n padding: Type.Optional(\n cssLengthRef({\n default: \"2rem\",\n description: \"Padding inside the form.\",\n title: \"Padding\",\n \"ui:responsive\": true,\n \"ui:placeholder\": \"Not specified\",\n \"ui:styleId\": \"styles:padding\",\n }),\n ),\n rounding: Type.Optional(\n roundingRef({\n default: \"rounded-md\",\n }),\n ),\n border: Type.Optional(borderRef({})),\n fontSize: Type.Optional(fontSizeRef({ default: \"inherit\", \"ui:no-extra-large-sizes\": true })),\n button: group({\n title: \"Button\",\n children: {\n color: Type.Optional(\n StringEnum([\"btn-neutral\", \"btn-primary\", \"btn-secondary\", \"btn-accent\"], {\n enumNames: [\"Neutral\", \"Primary\", \"Secondary\", \"Accent\"],\n title: \"Color\",\n default: \"btn-primary\",\n }),\n ),\n size: Type.Optional(\n StringEnum([\"block\", \"wide\"], {\n title: \"Size\",\n description: \"Button sizes.\",\n enumNames: [\"Block\", \"Wide\"],\n default: \"block\",\n \"ui:responsive\": \"desktop\",\n }),\n ),\n position: Type.Optional(\n StringEnum([\"justify-start\", \"justify-center\", \"justify-end\"], {\n title: \"Button Position\",\n description: \"The position of the button in the form\",\n enumNames: [\"Left\", \"Center\", \"Right\"],\n default: \"justify-end\",\n \"ui:responsive\": \"desktop\",\n metadata: {\n filter: (manifestProps: Manifest[\"props\"], formData: Static<Manifest[\"props\"]>) => {\n return formData.button?.size !== \"wide\";\n },\n },\n }),\n ),\n rounding: Type.Optional(roundingRef({ default: \"rounded-md\" })),\n },\n }),\n\n title: Type.Optional(\n Type.String({\n title: \"Form title\",\n default: \"My form\",\n metadata: {\n category: \"content\",\n },\n }),\n ),\n intro: Type.Optional(\n Type.String({\n title: \"Intro\",\n description: \"The intro text of the form\",\n \"ui:multiline\": true,\n metadata: {\n category: \"content\",\n },\n }),\n ),\n buttonLabel: Type.Optional(\n string(\"Button Label\", {\n default: \"Submit\",\n metadata: { category: \"content\" },\n }),\n ),\n successMessage: Type.Optional(\n Type.String({\n title: \"Success Message\",\n description: \"The message to display when the form is successfully submitted\",\n default: \"Thank you for your submission!\",\n metadata: {\n category: \"content\",\n },\n }),\n ),\n errorMessage: Type.Optional(\n Type.String({\n title: \"Error Message\",\n description: \"The message to display when the form submission fails\",\n default: \"There was an error submitting the form. Please try again later.\",\n metadata: {\n category: \"content\",\n },\n }),\n ),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: BrickExample<Manifest>[] = [\n {\n description: \"Basic contact form\",\n type: \"form\",\n props: {\n title: \"Contact Us\",\n intro: \"We'd love to hear from you. Send us a message and we'll respond as soon as possible.\",\n direction: \"flex-row\",\n datarecordId: \"contacts\",\n buttonLabel: \"Send Message\",\n button: {\n size: \"block\",\n },\n },\n },\n {\n description: \"User registration form with large button\",\n type: \"form\",\n props: {\n title: \"Create Account\",\n intro: \"Join our platform and start your journey today.\",\n direction: \"flex-row\",\n datarecordId: \"user-registration\",\n buttonLabel: \"Register\",\n button: {\n size: \"wide\",\n },\n },\n },\n {\n description: \"Responsive newsletter subscription: desktop horizontal -> mobile vertical\",\n type: \"form\",\n props: {\n title: \"Stay Updated\",\n intro: \"Subscribe for product news and occasional tips.\",\n direction: \"flex-row\",\n datarecordId: \"newsletter-subscription\",\n padding: \"3rem\",\n buttonLabel: \"Subscribe\",\n button: { size: \"block\" },\n colorPreset: { color: \"neutral-100\" },\n },\n mobileProps: {\n title: \"Stay Updated\",\n intro: \"Subscribe for product news and occasional tips.\",\n direction: \"flex-col\",\n datarecordId: \"newsletter-subscription\",\n padding: \"2rem\",\n buttonLabel: \"Subscribe\",\n button: { size: \"block\" },\n colorPreset: { color: \"neutral-100\" },\n },\n },\n {\n description: \"Newsletter subscription form (horizontal) with large padding\",\n type: \"form\",\n props: {\n title: \"Stay Updated\",\n intro: \"Subscribe to our newsletter for the latest updates and exclusive content.\",\n direction: \"flex-col\",\n datarecordId: \"newsletter-subscription\",\n padding: \"3rem\",\n buttonLabel: \"Subscribe\",\n button: {\n size: \"block\",\n },\n },\n },\n {\n description: \"Minimal inline signup form (no background colorPreset, inherits parent)\",\n type: \"form\",\n props: {\n title: \"Join Beta\",\n intro: \"Access early features before public launch.\",\n direction: \"flex-row\",\n datarecordId: \"beta-signup\",\n buttonLabel: \"Request Access\",\n button: { size: \"block\" },\n padding: \"1.5rem\",\n },\n },\n {\n description: \"Dark themed form using neutral-800 background and accent button\",\n type: \"form\",\n props: {\n title: \"Feedback\",\n intro: \"Tell us how we can improve the product.\",\n direction: \"flex-col\",\n datarecordId: \"product-feedback\",\n buttonLabel: \"Send Feedback\",\n colorPreset: { color: \"neutral-800\" },\n padding: \"2.5rem\",\n button: { color: \"btn-accent\" },\n rounding: \"rounded-lg\",\n border: { width: \"border\", color: \"border-neutral-700\" },\n },\n },\n {\n description: \"Gradient emphasis form (primary gradient) for event signup\",\n type: \"form\",\n props: {\n title: \"Conference RSVP\",\n intro: \"Reserve your seat for {{event.title}}.\",\n direction: \"flex-col\",\n datarecordId: \"event-registration\",\n buttonLabel: \"Reserve Seat\",\n colorPreset: { color: \"primary-gradient-400\", gradientDirection: \"bg-gradient-to-br\" },\n padding: \"3rem\",\n button: { color: \"btn-secondary\" },\n rounding: \"rounded-xl\",\n border: { width: \"border-2\", color: \"border-primary-300\" },\n },\n },\n {\n description: \"Event registration form\",\n type: \"form\",\n props: {\n title: \"Conference Registration\",\n intro: \"Register for the Annual Tech Conference 2025. Early bird pricing ends soon!\",\n direction: \"flex-col\",\n datarecordId: \"event-registration\",\n buttonLabel: \"Register Now\",\n button: {\n size: \"block\",\n },\n },\n },\n {\n description: \"Job application form\",\n type: \"form\",\n props: {\n title: \"Apply for Position\",\n intro: \"We're excited to learn more about you! Please fill out this application form completely.\",\n direction: \"flex-col\",\n datarecordId: \"job-application\",\n buttonLabel: \"Submit Application\",\n button: {\n size: \"block\",\n },\n },\n },\n {\n description: \"Dynamic job application (title interpolated) mapping dataset field\",\n type: \"form\",\n props: {\n title: \"Apply for {{job.title}}\",\n intro: \"Join our team in {{job.location}}.\",\n direction: \"flex-col\",\n datarecordId: \"job-application\",\n buttonLabel: \"Apply Now\",\n colorPreset: { color: \"secondary-100\" },\n button: { size: \"block\", color: \"btn-primary\" },\n padding: \"2rem\",\n },\n },\n];\n"],"mappings":"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","names":[]}