@upstart.gg/sdk 0.0.135 → 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 (473) hide show
  1. package/dist/shared/ai/schemas.d.ts +11 -2
  2. package/dist/shared/ai/schemas.d.ts.map +1 -1
  3. package/dist/shared/ai/schemas.js +38 -8
  4. package/dist/shared/ai/schemas.js.map +1 -1
  5. package/dist/shared/ai/types.d.ts +93 -81
  6. package/dist/shared/ai/types.d.ts.map +1 -1
  7. package/dist/shared/ajv.js +33 -32
  8. package/dist/shared/ajv.js.map +1 -1
  9. package/dist/shared/attributes.d.ts +86 -86
  10. package/dist/shared/attributes.d.ts.map +1 -1
  11. package/dist/shared/attributes.js +22 -25
  12. package/dist/shared/brick-manifest.d.ts +8 -5
  13. package/dist/shared/brick-manifest.d.ts.map +1 -1
  14. package/dist/shared/brick-manifest.js +3 -18
  15. package/dist/shared/bricks/manifests/_types.d.ts +9 -0
  16. package/dist/shared/bricks/manifests/_types.d.ts.map +1 -0
  17. package/dist/shared/bricks/manifests/_types.js +3 -0
  18. package/dist/shared/bricks/manifests/accordion.manifest.d.ts +4 -8
  19. package/dist/shared/bricks/manifests/accordion.manifest.d.ts.map +1 -1
  20. package/dist/shared/bricks/manifests/accordion.manifest.js +13 -20
  21. package/dist/shared/bricks/manifests/all-manifests.d.ts.map +1 -1
  22. package/dist/shared/bricks/manifests/all-manifests.js +44 -43
  23. package/dist/shared/bricks/manifests/all-props.d.ts +1501 -0
  24. package/dist/shared/bricks/manifests/all-props.d.ts.map +1 -0
  25. package/dist/shared/bricks/manifests/all-props.js +243 -0
  26. package/dist/shared/bricks/manifests/all-props.js.map +1 -0
  27. package/dist/shared/bricks/manifests/box.manifest.d.ts +4 -8
  28. package/dist/shared/bricks/manifests/box.manifest.d.ts.map +1 -1
  29. package/dist/shared/bricks/manifests/box.manifest.js +16 -20
  30. package/dist/shared/bricks/manifests/button.manifest.d.ts +5 -12
  31. package/dist/shared/bricks/manifests/button.manifest.d.ts.map +1 -1
  32. package/dist/shared/bricks/manifests/button.manifest.js +13 -20
  33. package/dist/shared/bricks/manifests/card.manifest.d.ts +10 -9
  34. package/dist/shared/bricks/manifests/card.manifest.d.ts.map +1 -1
  35. package/dist/shared/bricks/manifests/card.manifest.js +18 -20
  36. package/dist/shared/bricks/manifests/carousel.manifest.d.ts +4 -8
  37. package/dist/shared/bricks/manifests/carousel.manifest.d.ts.map +1 -1
  38. package/dist/shared/bricks/manifests/carousel.manifest.js +15 -20
  39. package/dist/shared/bricks/manifests/footer.manifest.d.ts +5 -9
  40. package/dist/shared/bricks/manifests/footer.manifest.d.ts.map +1 -1
  41. package/dist/shared/bricks/manifests/footer.manifest.js +13 -20
  42. package/dist/shared/bricks/manifests/form.manifest.d.ts +5 -9
  43. package/dist/shared/bricks/manifests/form.manifest.d.ts.map +1 -1
  44. package/dist/shared/bricks/manifests/form.manifest.js +13 -20
  45. package/dist/shared/bricks/manifests/hero.manifest.d.ts +4 -8
  46. package/dist/shared/bricks/manifests/hero.manifest.d.ts.map +1 -1
  47. package/dist/shared/bricks/manifests/hero.manifest.js +13 -20
  48. package/dist/shared/bricks/manifests/html.manifest.d.ts +3 -7
  49. package/dist/shared/bricks/manifests/html.manifest.d.ts.map +1 -1
  50. package/dist/shared/bricks/manifests/html.manifest.js +8 -20
  51. package/dist/shared/bricks/manifests/icon.manifest.d.ts +3 -7
  52. package/dist/shared/bricks/manifests/icon.manifest.d.ts.map +1 -1
  53. package/dist/shared/bricks/manifests/icon.manifest.js +13 -20
  54. package/dist/shared/bricks/manifests/image.manifest.d.ts +3 -2
  55. package/dist/shared/bricks/manifests/image.manifest.d.ts.map +1 -1
  56. package/dist/shared/bricks/manifests/image.manifest.js +16 -20
  57. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts +4 -8
  58. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts.map +1 -1
  59. package/dist/shared/bricks/manifests/images-gallery.manifest.js +15 -20
  60. package/dist/shared/bricks/manifests/map.manifest.d.ts +3 -7
  61. package/dist/shared/bricks/manifests/map.manifest.d.ts.map +1 -1
  62. package/dist/shared/bricks/manifests/map.manifest.js +11 -20
  63. package/dist/shared/bricks/manifests/navbar.manifest.d.ts +7 -11
  64. package/dist/shared/bricks/manifests/navbar.manifest.d.ts.map +1 -1
  65. package/dist/shared/bricks/manifests/navbar.manifest.js +15 -20
  66. package/dist/shared/bricks/manifests/sidebar.manifest.d.ts +3 -7
  67. package/dist/shared/bricks/manifests/sidebar.manifest.d.ts.map +1 -1
  68. package/dist/shared/bricks/manifests/sidebar.manifest.js +13 -20
  69. package/dist/shared/bricks/manifests/social-links.manifest.d.ts +4 -8
  70. package/dist/shared/bricks/manifests/social-links.manifest.d.ts.map +1 -1
  71. package/dist/shared/bricks/manifests/social-links.manifest.js +14 -20
  72. package/dist/shared/bricks/manifests/spacer.manifest.d.ts +3 -7
  73. package/dist/shared/bricks/manifests/spacer.manifest.d.ts.map +1 -1
  74. package/dist/shared/bricks/manifests/spacer.manifest.js +8 -20
  75. package/dist/shared/bricks/manifests/table.manifest.d.ts +6 -10
  76. package/dist/shared/bricks/manifests/table.manifest.d.ts.map +1 -1
  77. package/dist/shared/bricks/manifests/table.manifest.js +15 -20
  78. package/dist/shared/bricks/manifests/tabs.manifest.d.ts +6 -10
  79. package/dist/shared/bricks/manifests/tabs.manifest.d.ts.map +1 -1
  80. package/dist/shared/bricks/manifests/tabs.manifest.js +15 -20
  81. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts +4 -8
  82. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts.map +1 -1
  83. package/dist/shared/bricks/manifests/testimonials.manifest.js +18 -20
  84. package/dist/shared/bricks/manifests/text.manifest.d.ts +4 -12
  85. package/dist/shared/bricks/manifests/text.manifest.d.ts.map +1 -1
  86. package/dist/shared/bricks/manifests/text.manifest.js +13 -20
  87. package/dist/shared/bricks/manifests/timeline.manifest.d.ts +9 -13
  88. package/dist/shared/bricks/manifests/timeline.manifest.d.ts.map +1 -1
  89. package/dist/shared/bricks/manifests/timeline.manifest.js +15 -20
  90. package/dist/shared/bricks/manifests/video.manifest.d.ts +3 -7
  91. package/dist/shared/bricks/manifests/video.manifest.d.ts.map +1 -1
  92. package/dist/shared/bricks/manifests/video.manifest.js +11 -20
  93. package/dist/shared/bricks/props/align.d.ts +0 -3
  94. package/dist/shared/bricks/props/align.d.ts.map +1 -1
  95. package/dist/shared/bricks/props/align.js +4 -11
  96. package/dist/shared/bricks/props/background.d.ts +2 -8
  97. package/dist/shared/bricks/props/background.d.ts.map +1 -1
  98. package/dist/shared/bricks/props/background.js +4 -9
  99. package/dist/shared/bricks/props/border.d.ts +0 -7
  100. package/dist/shared/bricks/props/border.d.ts.map +1 -1
  101. package/dist/shared/bricks/props/border.js +5 -10
  102. package/dist/shared/bricks/props/color-preset.d.ts +316 -6
  103. package/dist/shared/bricks/props/color-preset.d.ts.map +1 -1
  104. package/dist/shared/bricks/props/color-preset.js +2 -5
  105. package/dist/shared/bricks/props/color.d.ts +3 -5
  106. package/dist/shared/bricks/props/color.d.ts.map +1 -1
  107. package/dist/shared/bricks/props/color.js +3 -8
  108. package/dist/shared/bricks/props/common.d.ts.map +1 -1
  109. package/dist/shared/bricks/props/common.js +4 -5
  110. package/dist/shared/bricks/props/css-length.d.ts +0 -1
  111. package/dist/shared/bricks/props/css-length.d.ts.map +1 -1
  112. package/dist/shared/bricks/props/css-length.js +1 -4
  113. package/dist/shared/bricks/props/datasource.d.ts +3 -3
  114. package/dist/shared/bricks/props/datasource.d.ts.map +1 -1
  115. package/dist/shared/bricks/props/datasource.js +74 -76
  116. package/dist/shared/bricks/props/datasource.js.map +1 -1
  117. package/dist/shared/bricks/props/date.js +21 -4
  118. package/dist/shared/bricks/props/date.js.map +1 -1
  119. package/dist/shared/bricks/props/direction.d.ts +1 -2
  120. package/dist/shared/bricks/props/direction.d.ts.map +1 -1
  121. package/dist/shared/bricks/props/direction.js +4 -7
  122. package/dist/shared/bricks/props/dynamic.d.ts +5 -67
  123. package/dist/shared/bricks/props/dynamic.d.ts.map +1 -1
  124. package/dist/shared/bricks/props/dynamic.js +6 -24
  125. package/dist/shared/bricks/props/effects.d.ts +1 -3
  126. package/dist/shared/bricks/props/effects.d.ts.map +1 -1
  127. package/dist/shared/bricks/props/effects.js +4 -9
  128. package/dist/shared/bricks/props/geolocation.d.ts.map +1 -1
  129. package/dist/shared/bricks/props/geolocation.js +3 -6
  130. package/dist/shared/bricks/props/geolocation.js.map +1 -1
  131. package/dist/shared/bricks/props/helpers.js +5 -6
  132. package/dist/shared/bricks/props/image.d.ts +2 -8
  133. package/dist/shared/bricks/props/image.d.ts.map +1 -1
  134. package/dist/shared/bricks/props/image.js +4 -7
  135. package/dist/shared/bricks/props/string.d.ts +2 -5
  136. package/dist/shared/bricks/props/string.d.ts.map +1 -1
  137. package/dist/shared/bricks/props/string.js +3 -10
  138. package/dist/shared/bricks/props/tags.d.ts +0 -1
  139. package/dist/shared/bricks/props/tags.d.ts.map +1 -1
  140. package/dist/shared/bricks/props/tags.js +3 -6
  141. package/dist/shared/bricks/props/text.d.ts +0 -3
  142. package/dist/shared/bricks/props/text.d.ts.map +1 -1
  143. package/dist/shared/bricks/props/text.js +4 -11
  144. package/dist/shared/bricks/props/types.d.ts +2 -2
  145. package/dist/shared/bricks/props/types.d.ts.map +1 -1
  146. package/dist/shared/bricks.d.ts +64 -152
  147. package/dist/shared/bricks.d.ts.map +1 -1
  148. package/dist/shared/bricks.js +49 -52
  149. package/dist/shared/chunk-2O5HVPID.js +41 -0
  150. package/dist/shared/chunk-2O5HVPID.js.map +1 -0
  151. package/dist/shared/{chunk-F22LDHEO.js → chunk-2U5U3CCJ.js} +3 -18
  152. package/dist/shared/chunk-2U5U3CCJ.js.map +1 -0
  153. package/dist/shared/{chunk-LXAO3JA6.js → chunk-4KY7OZWD.js} +35 -35
  154. package/dist/shared/chunk-4KY7OZWD.js.map +1 -0
  155. package/dist/shared/{chunk-TNMNMYOB.js → chunk-5RCC2STG.js} +2 -13
  156. package/dist/shared/chunk-5RCC2STG.js.map +1 -0
  157. package/dist/shared/{chunk-V3UA3LRK.js → chunk-6AE7UD73.js} +56 -37
  158. package/dist/shared/chunk-6AE7UD73.js.map +1 -0
  159. package/dist/shared/chunk-7U5WPHXB.js +346 -0
  160. package/dist/shared/chunk-7U5WPHXB.js.map +1 -0
  161. package/dist/shared/{chunk-Q4NPPLEU.js → chunk-BHARJBEK.js} +2 -9
  162. package/dist/shared/chunk-BHARJBEK.js.map +1 -0
  163. package/dist/shared/chunk-BZTWZC77.js +530 -0
  164. package/dist/shared/chunk-BZTWZC77.js.map +1 -0
  165. package/dist/shared/{chunk-QSND5IWT.js → chunk-DCM4732T.js} +24 -43
  166. package/dist/shared/chunk-DCM4732T.js.map +1 -0
  167. package/dist/shared/{chunk-W6MRYRGJ.js → chunk-DRQKKPTX.js} +6 -20
  168. package/dist/shared/chunk-DRQKKPTX.js.map +1 -0
  169. package/dist/shared/{chunk-CSF2WQX2.js → chunk-EID5HPF3.js} +15 -12
  170. package/dist/shared/chunk-EID5HPF3.js.map +1 -0
  171. package/dist/shared/chunk-EMF5TCPX.js +389 -0
  172. package/dist/shared/chunk-EMF5TCPX.js.map +1 -0
  173. package/dist/shared/chunk-FD7YYFRI.js +225 -0
  174. package/dist/shared/chunk-FD7YYFRI.js.map +1 -0
  175. package/dist/shared/{chunk-MLZT7MRQ.js → chunk-FHA4DFIM.js} +26 -27
  176. package/dist/shared/chunk-FHA4DFIM.js.map +1 -0
  177. package/dist/shared/{chunk-GRMY35BU.js → chunk-FUUSAMN3.js} +165 -40
  178. package/dist/shared/chunk-FUUSAMN3.js.map +1 -0
  179. package/dist/shared/chunk-GDYCCB3B.js +22 -0
  180. package/dist/shared/chunk-GDYCCB3B.js.map +1 -0
  181. package/dist/shared/chunk-GLV6QIIM.js +41 -0
  182. package/dist/shared/chunk-GLV6QIIM.js.map +1 -0
  183. package/dist/shared/chunk-H6TMBELF.js +374 -0
  184. package/dist/shared/chunk-H6TMBELF.js.map +1 -0
  185. package/dist/shared/{chunk-BMWRR4DI.js → chunk-HUWMIXNN.js} +26 -28
  186. package/dist/shared/chunk-HUWMIXNN.js.map +1 -0
  187. package/dist/shared/chunk-HY7JOP3J.js +150 -0
  188. package/dist/shared/chunk-HY7JOP3J.js.map +1 -0
  189. package/dist/shared/{chunk-TFGGYU6Y.js → chunk-IEMCCHM4.js} +7 -12
  190. package/dist/shared/chunk-IEMCCHM4.js.map +1 -0
  191. package/dist/shared/{chunk-TB3X4LRQ.js → chunk-J45LSQT6.js} +2 -2
  192. package/dist/shared/chunk-J45LSQT6.js.map +1 -0
  193. package/dist/shared/{chunk-WGDUJSSS.js → chunk-JF52BBFD.js} +27 -28
  194. package/dist/shared/chunk-JF52BBFD.js.map +1 -0
  195. package/dist/shared/{chunk-GPCI2N2A.js → chunk-JLDAS3VE.js} +136 -33
  196. package/dist/shared/chunk-JLDAS3VE.js.map +1 -0
  197. package/dist/shared/{chunk-SE6O65HC.js → chunk-JSDKK5QN.js} +10 -23
  198. package/dist/shared/chunk-JSDKK5QN.js.map +1 -0
  199. package/dist/shared/chunk-JW7MQAU4.js +354 -0
  200. package/dist/shared/chunk-JW7MQAU4.js.map +1 -0
  201. package/dist/shared/{chunk-RV7AYVFV.js → chunk-KKWT3OXF.js} +4 -19
  202. package/dist/shared/chunk-KKWT3OXF.js.map +1 -0
  203. package/dist/shared/{chunk-TEO6TJOM.js → chunk-KQH6V22E.js} +36 -35
  204. package/dist/shared/{chunk-TEO6TJOM.js.map → chunk-KQH6V22E.js.map} +1 -1
  205. package/dist/shared/{chunk-3KLRW4I2.js → chunk-LGDDJJHK.js} +212 -156
  206. package/dist/shared/chunk-LGDDJJHK.js.map +1 -0
  207. package/dist/shared/{chunk-QL3T5HJQ.js → chunk-LGGPCCCY.js} +3 -3
  208. package/dist/shared/chunk-LGGPCCCY.js.map +1 -0
  209. package/dist/shared/{chunk-2HO4FHLM.js → chunk-LPAQ47C6.js} +137 -171
  210. package/dist/shared/chunk-LPAQ47C6.js.map +1 -0
  211. package/dist/shared/chunk-MO6CRLQA.js +73 -0
  212. package/dist/shared/chunk-MO6CRLQA.js.map +1 -0
  213. package/dist/shared/{chunk-SHUGHJ7V.js → chunk-MYOLWTB2.js} +29 -32
  214. package/dist/shared/chunk-MYOLWTB2.js.map +1 -0
  215. package/dist/shared/{chunk-Z2NTDFB4.js → chunk-O24RDXZS.js} +34 -34
  216. package/dist/shared/chunk-O24RDXZS.js.map +1 -0
  217. package/dist/shared/{chunk-BPBKHEQ5.js → chunk-OJ6KL7FU.js} +1 -8
  218. package/dist/shared/chunk-OJ6KL7FU.js.map +1 -0
  219. package/dist/shared/{chunk-GCQURRVB.js → chunk-PF75LW33.js} +24 -27
  220. package/dist/shared/chunk-PF75LW33.js.map +1 -0
  221. package/dist/shared/{chunk-EWSPTRDL.js → chunk-QEJGPYTB.js} +132 -48
  222. package/dist/shared/chunk-QEJGPYTB.js.map +1 -0
  223. package/dist/shared/{chunk-P3RH5URN.js → chunk-SK2O7GFC.js} +17 -18
  224. package/dist/shared/chunk-SK2O7GFC.js.map +1 -0
  225. package/dist/shared/{chunk-UQF52PWK.js → chunk-SQXZNGQF.js} +8 -23
  226. package/dist/shared/chunk-SQXZNGQF.js.map +1 -0
  227. package/dist/shared/{chunk-NTLAKMMQ.js → chunk-SRYBJ6NQ.js} +6 -17
  228. package/dist/shared/chunk-SRYBJ6NQ.js.map +1 -0
  229. package/dist/shared/{chunk-O5PLB3YB.js → chunk-T6C3NG2L.js} +68 -59
  230. package/dist/shared/chunk-T6C3NG2L.js.map +1 -0
  231. package/dist/shared/{chunk-U7TVEPKA.js → chunk-TBT2PTGB.js} +41 -33
  232. package/dist/shared/chunk-TBT2PTGB.js.map +1 -0
  233. package/dist/shared/{chunk-CKFRSHR2.js → chunk-U4KZUX37.js} +18 -19
  234. package/dist/shared/chunk-U4KZUX37.js.map +1 -0
  235. package/dist/shared/{chunk-4WI23M7W.js → chunk-VSLRTXLF.js} +11 -4
  236. package/dist/shared/chunk-VSLRTXLF.js.map +1 -0
  237. package/dist/shared/{chunk-BHC2A43S.js → chunk-VTCHJT4O.js} +3 -3
  238. package/dist/shared/{chunk-BHC2A43S.js.map → chunk-VTCHJT4O.js.map} +1 -1
  239. package/dist/shared/{chunk-DRTGM2UJ.js → chunk-W2RFDII5.js} +3 -3
  240. package/dist/shared/chunk-W2RFDII5.js.map +1 -0
  241. package/dist/shared/{chunk-Y74LZNND.js → chunk-WPZV3LYL.js} +4 -10
  242. package/dist/shared/chunk-WPZV3LYL.js.map +1 -0
  243. package/dist/shared/chunk-XFZQGRRL.js +101 -0
  244. package/dist/shared/chunk-XFZQGRRL.js.map +1 -0
  245. package/dist/shared/{chunk-QQQ3FYPG.js → chunk-XK2CERPB.js} +147 -31
  246. package/dist/shared/chunk-XK2CERPB.js.map +1 -0
  247. package/dist/shared/chunk-XNRSL6FL.js +78 -0
  248. package/dist/shared/chunk-XNRSL6FL.js.map +1 -0
  249. package/dist/shared/{chunk-2RK3CPYJ.js → chunk-XXPSM6UA.js} +9 -12
  250. package/dist/shared/chunk-XXPSM6UA.js.map +1 -0
  251. package/dist/shared/{chunk-ZLYIRH2B.js → chunk-ZRBTAC3G.js} +3 -18
  252. package/dist/shared/chunk-ZRBTAC3G.js.map +1 -0
  253. package/dist/shared/{chunk-Z35I5JM5.js → chunk-ZVJNRKT4.js} +18 -20
  254. package/dist/shared/chunk-ZVJNRKT4.js.map +1 -0
  255. package/dist/shared/context.d.ts +402 -22
  256. package/dist/shared/context.d.ts.map +1 -1
  257. package/dist/shared/context.js +93 -0
  258. package/dist/shared/context.js.map +1 -1
  259. package/dist/shared/datarecords/external/airtable/types.d.ts +1 -1
  260. package/dist/shared/datarecords/external/airtable/types.d.ts.map +1 -1
  261. package/dist/shared/datarecords/external/airtable/types.js +2 -1
  262. package/dist/shared/datarecords/types.d.ts +10 -63
  263. package/dist/shared/datarecords/types.d.ts.map +1 -1
  264. package/dist/shared/datarecords/types.js +5 -6
  265. package/dist/shared/datasources/external/instagram/feed/schema.d.ts +1 -1
  266. package/dist/shared/datasources/external/instagram/feed/schema.d.ts.map +1 -1
  267. package/dist/shared/datasources/external/instagram/feed/schema.js +4 -1
  268. package/dist/shared/datasources/external/instagram/feed/schema.js.map +1 -1
  269. package/dist/shared/datasources/external/mastodon/status/schema.d.ts +6 -6
  270. package/dist/shared/datasources/external/mastodon/status/schema.d.ts.map +1 -1
  271. package/dist/shared/datasources/external/mastodon/status/schema.js +6 -19
  272. package/dist/shared/datasources/external/mastodon/status/schema.js.map +1 -1
  273. package/dist/shared/datasources/external/meta/oauth/config.d.ts +2 -2
  274. package/dist/shared/datasources/external/meta/oauth/config.d.ts.map +1 -1
  275. package/dist/shared/datasources/external/meta/oauth/config.js +4 -1
  276. package/dist/shared/datasources/external/meta/oauth/config.js.map +1 -1
  277. package/dist/shared/datasources/external/threads/media/fetcher.js +3 -3
  278. package/dist/shared/datasources/external/threads/media/schema.d.ts +1 -1
  279. package/dist/shared/datasources/external/threads/media/schema.d.ts.map +1 -1
  280. package/dist/shared/datasources/external/threads/media/schema.js +4 -8
  281. package/dist/shared/datasources/external/threads/media/schema.js.map +1 -1
  282. package/dist/shared/datasources/internal/blog/schema.d.ts +1 -1
  283. package/dist/shared/datasources/internal/blog/schema.d.ts.map +1 -1
  284. package/dist/shared/datasources/internal/blog/schema.js +4 -1
  285. package/dist/shared/datasources/internal/blog/schema.js.map +1 -1
  286. package/dist/shared/datasources/types.d.ts +25 -25
  287. package/dist/shared/datasources/types.d.ts.map +1 -1
  288. package/dist/shared/datasources/types.js +3 -16
  289. package/dist/shared/datasources.d.ts +1 -1
  290. package/dist/shared/datasources.d.ts.map +1 -1
  291. package/dist/shared/datasources.js +1 -3
  292. package/dist/shared/datasources.js.map +1 -1
  293. package/dist/shared/images.d.ts +1 -1
  294. package/dist/shared/images.d.ts.map +1 -1
  295. package/dist/shared/images.js +4 -38
  296. package/dist/shared/images.js.map +1 -1
  297. package/dist/shared/page.d.ts +139 -22
  298. package/dist/shared/page.d.ts.map +1 -1
  299. package/dist/shared/page.js +51 -49
  300. package/dist/shared/responsive.js +1 -1
  301. package/dist/shared/site.d.ts +80 -197
  302. package/dist/shared/site.d.ts.map +1 -1
  303. package/dist/shared/site.js +55 -114
  304. package/dist/shared/site.js.map +1 -1
  305. package/dist/shared/sitemap.d.ts +6 -327
  306. package/dist/shared/sitemap.d.ts.map +1 -1
  307. package/dist/shared/sitemap.js +50 -58
  308. package/dist/shared/theme.d.ts +0 -37
  309. package/dist/shared/theme.d.ts.map +1 -1
  310. package/dist/shared/theme.js +4 -21
  311. package/dist/shared/utils/llm.d.ts +1 -10
  312. package/dist/shared/utils/llm.d.ts.map +1 -1
  313. package/dist/shared/utils/llm.js +1 -18
  314. package/dist/shared/utils/schema.d.ts +3 -2
  315. package/dist/shared/utils/schema.d.ts.map +1 -1
  316. package/dist/shared/utils/schema.js +2 -17
  317. package/dist/shared/utils/string-enum.d.ts +9 -3
  318. package/dist/shared/utils/string-enum.d.ts.map +1 -1
  319. package/dist/shared/utils/string-enum.js +1 -1
  320. package/package.json +21 -5
  321. package/src/shared/ai/schemas.ts +41 -10
  322. package/src/shared/ai/types.ts +78 -76
  323. package/src/shared/attributes.ts +56 -46
  324. package/src/shared/brick-manifest.ts +5 -6
  325. package/src/shared/bricks/manifests/_types.ts +9 -0
  326. package/src/shared/bricks/manifests/accordion.manifest.ts +138 -171
  327. package/src/shared/bricks/manifests/all-manifests.ts +1 -0
  328. package/src/shared/bricks/manifests/all-props.ts +165 -0
  329. package/src/shared/bricks/manifests/box.manifest.ts +214 -150
  330. package/src/shared/bricks/manifests/button.manifest.ts +204 -79
  331. package/src/shared/bricks/manifests/card.manifest.ts +229 -43
  332. package/src/shared/bricks/manifests/carousel.manifest.ts +165 -35
  333. package/src/shared/bricks/manifests/footer.manifest.ts +18 -20
  334. package/src/shared/bricks/manifests/form.manifest.ts +136 -22
  335. package/src/shared/bricks/manifests/hero.manifest.ts +121 -38
  336. package/src/shared/bricks/manifests/html.manifest.ts +2 -5
  337. package/src/shared/bricks/manifests/icon.manifest.ts +225 -46
  338. package/src/shared/bricks/manifests/image.manifest.ts +125 -21
  339. package/src/shared/bricks/manifests/images-gallery.manifest.ts +15 -20
  340. package/src/shared/bricks/manifests/map.manifest.ts +12 -15
  341. package/src/shared/bricks/manifests/navbar.manifest.ts +22 -26
  342. package/src/shared/bricks/manifests/sidebar.manifest.ts +11 -14
  343. package/src/shared/bricks/manifests/social-links.manifest.ts +19 -24
  344. package/src/shared/bricks/manifests/spacer.manifest.ts +2 -5
  345. package/src/shared/bricks/manifests/table.manifest.ts +17 -20
  346. package/src/shared/bricks/manifests/tabs.manifest.ts +16 -21
  347. package/src/shared/bricks/manifests/testimonials.manifest.ts +23 -25
  348. package/src/shared/bricks/manifests/text.manifest.ts +47 -29
  349. package/src/shared/bricks/manifests/timeline.manifest.ts +31 -29
  350. package/src/shared/bricks/manifests/video.manifest.ts +11 -15
  351. package/src/shared/bricks/props/align.ts +0 -13
  352. package/src/shared/bricks/props/background.ts +1 -14
  353. package/src/shared/bricks/props/border.ts +2 -13
  354. package/src/shared/bricks/props/color-preset.ts +9 -10
  355. package/src/shared/bricks/props/color.ts +7 -18
  356. package/src/shared/bricks/props/common.ts +6 -7
  357. package/src/shared/bricks/props/css-length.ts +0 -5
  358. package/src/shared/bricks/props/datasource.ts +72 -74
  359. package/src/shared/bricks/props/direction.ts +1 -5
  360. package/src/shared/bricks/props/dynamic.ts +0 -11
  361. package/src/shared/bricks/props/effects.ts +0 -9
  362. package/src/shared/bricks/props/geolocation.ts +3 -3
  363. package/src/shared/bricks/props/helpers.ts +1 -1
  364. package/src/shared/bricks/props/image.ts +4 -16
  365. package/src/shared/bricks/props/string.ts +6 -19
  366. package/src/shared/bricks/props/tags.ts +0 -5
  367. package/src/shared/bricks/props/tests/background.test.ts +1 -15
  368. package/src/shared/bricks/props/tests/image.test.ts +3 -9
  369. package/src/shared/bricks/props/tests/string.test.ts +2 -26
  370. package/src/shared/bricks/props/text.ts +0 -12
  371. package/src/shared/bricks/props/types.ts +4 -3
  372. package/src/shared/bricks.ts +164 -1025
  373. package/src/shared/context.ts +24 -23
  374. package/src/shared/datarecords/external/airtable/types.ts +12 -11
  375. package/src/shared/datarecords/types.ts +22 -44
  376. package/src/shared/datasources/external/instagram/feed/schema.ts +2 -1
  377. package/src/shared/datasources/external/mastodon/status/schema.ts +4 -19
  378. package/src/shared/datasources/external/meta/oauth/config.ts +2 -1
  379. package/src/shared/datasources/external/threads/media/schema.ts +2 -8
  380. package/src/shared/datasources/internal/blog/schema.ts +2 -1
  381. package/src/shared/datasources/types.ts +64 -79
  382. package/src/shared/datasources.ts +2 -4
  383. package/src/shared/images.ts +12 -18
  384. package/src/shared/page.ts +9 -2
  385. package/src/shared/site.ts +3 -3
  386. package/src/shared/sitemap.ts +3 -68
  387. package/src/shared/tests/attributes.test.ts +2 -0
  388. package/src/shared/theme.ts +81 -96
  389. package/src/shared/utils/llm.ts +5 -191
  390. package/src/shared/utils/schema.ts +71 -244
  391. package/src/shared/utils/string-enum.ts +25 -4
  392. package/src/shared/utils/tests/schema.test.ts +112 -314
  393. package/dist/shared/chunk-2HO4FHLM.js.map +0 -1
  394. package/dist/shared/chunk-2RK3CPYJ.js.map +0 -1
  395. package/dist/shared/chunk-3KLRW4I2.js.map +0 -1
  396. package/dist/shared/chunk-4WI23M7W.js.map +0 -1
  397. package/dist/shared/chunk-6E42XWFH.js +0 -103
  398. package/dist/shared/chunk-6E42XWFH.js.map +0 -1
  399. package/dist/shared/chunk-A2QPY54H.js +0 -13
  400. package/dist/shared/chunk-A2QPY54H.js.map +0 -1
  401. package/dist/shared/chunk-BMWRR4DI.js.map +0 -1
  402. package/dist/shared/chunk-BPBKHEQ5.js.map +0 -1
  403. package/dist/shared/chunk-BW6EFRSF.js +0 -794
  404. package/dist/shared/chunk-BW6EFRSF.js.map +0 -1
  405. package/dist/shared/chunk-CKFRSHR2.js.map +0 -1
  406. package/dist/shared/chunk-CSF2WQX2.js.map +0 -1
  407. package/dist/shared/chunk-D4YQ6ABM.js +0 -338
  408. package/dist/shared/chunk-D4YQ6ABM.js.map +0 -1
  409. package/dist/shared/chunk-DRTGM2UJ.js.map +0 -1
  410. package/dist/shared/chunk-EQMU6NIU.js +0 -1222
  411. package/dist/shared/chunk-EQMU6NIU.js.map +0 -1
  412. package/dist/shared/chunk-EWSPTRDL.js.map +0 -1
  413. package/dist/shared/chunk-F22LDHEO.js.map +0 -1
  414. package/dist/shared/chunk-FVU5PXRC.js +0 -244
  415. package/dist/shared/chunk-FVU5PXRC.js.map +0 -1
  416. package/dist/shared/chunk-GCQURRVB.js.map +0 -1
  417. package/dist/shared/chunk-GPCI2N2A.js.map +0 -1
  418. package/dist/shared/chunk-GRMY35BU.js.map +0 -1
  419. package/dist/shared/chunk-JK2FWFJU.js +0 -15
  420. package/dist/shared/chunk-JK2FWFJU.js.map +0 -1
  421. package/dist/shared/chunk-LXAO3JA6.js.map +0 -1
  422. package/dist/shared/chunk-MLZT7MRQ.js.map +0 -1
  423. package/dist/shared/chunk-NT3IW52F.js +0 -260
  424. package/dist/shared/chunk-NT3IW52F.js.map +0 -1
  425. package/dist/shared/chunk-NTLAKMMQ.js.map +0 -1
  426. package/dist/shared/chunk-O5PLB3YB.js.map +0 -1
  427. package/dist/shared/chunk-P3RH5URN.js.map +0 -1
  428. package/dist/shared/chunk-Q4NPPLEU.js.map +0 -1
  429. package/dist/shared/chunk-QL3T5HJQ.js.map +0 -1
  430. package/dist/shared/chunk-QQQ3FYPG.js.map +0 -1
  431. package/dist/shared/chunk-QSND5IWT.js.map +0 -1
  432. package/dist/shared/chunk-RV7AYVFV.js.map +0 -1
  433. package/dist/shared/chunk-SE6O65HC.js.map +0 -1
  434. package/dist/shared/chunk-SHUGHJ7V.js.map +0 -1
  435. package/dist/shared/chunk-TB3X4LRQ.js.map +0 -1
  436. package/dist/shared/chunk-TFGGYU6Y.js.map +0 -1
  437. package/dist/shared/chunk-TNMNMYOB.js.map +0 -1
  438. package/dist/shared/chunk-U7TVEPKA.js.map +0 -1
  439. package/dist/shared/chunk-UQF52PWK.js.map +0 -1
  440. package/dist/shared/chunk-V3UA3LRK.js.map +0 -1
  441. package/dist/shared/chunk-W6MRYRGJ.js.map +0 -1
  442. package/dist/shared/chunk-WGDUJSSS.js.map +0 -1
  443. package/dist/shared/chunk-WKN566LN.js +0 -29
  444. package/dist/shared/chunk-WKN566LN.js.map +0 -1
  445. package/dist/shared/chunk-X6N463D4.js +0 -222
  446. package/dist/shared/chunk-X6N463D4.js.map +0 -1
  447. package/dist/shared/chunk-X75YV73Q.js +0 -178
  448. package/dist/shared/chunk-X75YV73Q.js.map +0 -1
  449. package/dist/shared/chunk-Y74LZNND.js.map +0 -1
  450. package/dist/shared/chunk-Z2NTDFB4.js.map +0 -1
  451. package/dist/shared/chunk-Z35I5JM5.js.map +0 -1
  452. package/dist/shared/chunk-ZLYIRH2B.js.map +0 -1
  453. package/dist/shared/schema-registry.d.ts +0 -5
  454. package/dist/shared/schema-registry.d.ts.map +0 -1
  455. package/dist/shared/schema-registry.js +0 -119
  456. package/dist/shared/schema-registry.js.map +0 -1
  457. package/dist/shared/tests/schema-registry.test.d.ts +0 -2
  458. package/dist/shared/tests/schema-registry.test.d.ts.map +0 -1
  459. package/dist/shared/utils/schema-registry.d.ts +0 -5
  460. package/dist/shared/utils/schema-registry.d.ts.map +0 -1
  461. package/dist/shared/utils/schema-registry.js +0 -29
  462. package/dist/shared/utils/tests/schema-registry.test.d.ts +0 -2
  463. package/dist/shared/utils/tests/schema-registry.test.d.ts.map +0 -1
  464. package/dist/shared/utils/typed-ref.d.ts +0 -43
  465. package/dist/shared/utils/typed-ref.d.ts.map +0 -1
  466. package/dist/shared/utils/typed-ref.js +0 -10
  467. package/dist/shared/utils/typed-ref.js.map +0 -1
  468. package/src/shared/schema-registry.ts +0 -82
  469. package/src/shared/tests/schema-registry.test.ts +0 -14
  470. package/src/shared/utils/schema-registry.ts +0 -82
  471. package/src/shared/utils/tests/schema-registry.test.ts +0 -13
  472. package/src/shared/utils/typed-ref.ts +0 -53
  473. /package/dist/shared/{utils/schema-registry.js.map → bricks/manifests/_types.js.map} +0 -0
@@ -2,20 +2,59 @@ import { Type } from "@sinclair/typebox";
2
2
  import { TbCarouselHorizontal } from "react-icons/tb";
3
3
  import { defineBrickManifest } from "~/shared/brick-manifest";
4
4
  import { defineProps } from "../props/helpers";
5
- import { imageRef } from "../props/image";
6
- import { string } from "../props/string";
7
- import type { BrickProps } from "../props/types";
8
- import { roundingRef } from "../props/border";
9
- import { colorPresetRef } from "../props/color-preset";
10
- import { loopRef } from "../props/dynamic";
11
- import { cssLengthRef } from "../props/css-length";
5
+ import { image } from "../props/image";
6
+ import { rounding } from "../props/border";
7
+ import { colorPreset } from "../props/color-preset";
8
+ import { loop } from "../props/dynamic";
9
+ import { cssLength } from "../props/css-length";
10
+ import type { BrickExample } from "./_types";
12
11
 
13
12
  export const manifest = defineBrickManifest({
14
13
  type: "carousel",
15
14
  name: "Carousel",
16
15
  description: "An image carousel with navigation arrows and dots or numbers indicator",
17
- aiInstructions:
18
- "Use this brick to create an image carousel or slideshow. It can display multiple images that users can navigate through using arrows or dots. Each image can have an optional legend or caption. This brick is ideal for showcasing portfolios, product images, or any visual content in an engaging way.",
16
+ aiInstructions: `Use the carousel component for showcasing sequential visual content with smooth navigation between images.
17
+
18
+ WHEN TO USE:
19
+ - Product galleries with multiple angles or variations
20
+ - Portfolio showcases with project images
21
+ - Step-by-step tutorials or processes (recipes, instructions)
22
+ - Before/after comparisons or transformations
23
+ - Team member profiles with photos
24
+ - Event photo galleries or highlights
25
+ - Feature demonstrations or software screenshots
26
+ - Travel destinations or location showcases
27
+
28
+ CONTENT GUIDELINES:
29
+ - Optimal range: 2-8 images for best user engagement (max 12 supported)
30
+ - Single image allowed only as placeholder for future expansion
31
+ - Each image needs: { src: { src, alt }, legend }
32
+ - Alt text MUST be descriptive and never empty
33
+ - Legend text should be concise (≤90 characters) and informative
34
+ - Use empty string ("") for legend only when no caption is intentionally desired
35
+
36
+ IMAGE CONSISTENCY:
37
+ - Keep aspect ratios similar across slides to prevent layout jumps
38
+ - Avoid mixing very tall portrait with very wide landscape images
39
+ - Use consistent image quality and style throughout carousel
40
+ - Consider loading performance with image optimization
41
+
42
+ STYLING OPTIONS:
43
+ - padding: "0" for edge-to-edge, "1rem" for standard, "2rem+" for generous spacing
44
+ - borderRadius: "rounded-none" for sharp/modern, "rounded-md" for standard, "rounded-xl" for friendly, "rounded-full" for circular (avatars)
45
+ - colorPreset: Use sparingly - "neutral-50"/"primary-50" for subtle framing, gradients for premium feel
46
+
47
+ DYNAMIC CONTENT:
48
+ - Use loop property with single template object for data-driven carousels
49
+ - Template variables in src and legend: "{{product.image}}", "{{team.name}} - {{team.role}}"
50
+ - Perfect for: product catalogs, team directories, portfolio projects, event galleries
51
+
52
+ AVOID:
53
+ - Including unrelated properties (buttons, titles outside legend)
54
+ - Heavy background colors that distract from images
55
+ - Inconsistent aspect ratios that cause jarring transitions
56
+ - More than 12 images (reduces focus and performance)
57
+ - Empty or placeholder alt text (accessibility requirement)`,
19
58
  category: "media",
20
59
  defaultInspectorTab: "content",
21
60
  consumesMultipleQueryRows: true,
@@ -28,12 +67,12 @@ export const manifest = defineBrickManifest({
28
67
  icon: TbCarouselHorizontal,
29
68
  props: defineProps({
30
69
  colorPreset: Type.Optional(
31
- colorPresetRef({
70
+ colorPreset({
32
71
  title: "Color",
33
72
  }),
34
73
  ),
35
74
  padding: Type.Optional(
36
- cssLengthRef({
75
+ cssLength({
37
76
  default: "1rem",
38
77
  description: "Padding inside the carousel.",
39
78
  "ai:instructions": "Use only a single value like '1rem' or '10px'",
@@ -46,12 +85,12 @@ export const manifest = defineBrickManifest({
46
85
  images: Type.Optional(
47
86
  Type.Array(
48
87
  Type.Object({
49
- src: imageRef({
88
+ src: image({
50
89
  "ui:responsive": "desktop",
51
90
  "ui:no-alt-text": true,
52
91
  "ui:no-object-options": true,
53
92
  }),
54
- legend: string("Legend"),
93
+ legend: Type.String({ title: "Legend" }),
55
94
  }),
56
95
  {
57
96
  title: "Images",
@@ -64,23 +103,20 @@ export const manifest = defineBrickManifest({
64
103
  ),
65
104
  ),
66
105
  borderRadius: Type.Optional(
67
- roundingRef({
106
+ rounding({
68
107
  default: "rounded-md",
69
108
  }),
70
109
  ),
71
- loop: Type.Optional(loopRef()),
110
+ loop: Type.Optional(loop()),
72
111
  }),
73
112
  });
74
113
 
75
114
  export type Manifest = typeof manifest;
76
115
 
77
- export const examples: {
78
- description: string;
79
- type: string;
80
- props: BrickProps<Manifest>["brick"]["props"];
81
- }[] = [
116
+ export const examples: BrickExample<Manifest>[] = [
117
+ // BASIC CAROUSEL EXAMPLES
82
118
  {
83
- description: "Basic image carousel with legends",
119
+ description: "Basic image carousel with legends - Simple content showcase",
84
120
  type: "carousel",
85
121
  props: {
86
122
  images: [
@@ -108,8 +144,10 @@ export const examples: {
108
144
  ],
109
145
  },
110
146
  },
147
+
148
+ // PRODUCT & COMMERCIAL
111
149
  {
112
- description: "Product showcase carousel with rounded corners and padding",
150
+ description: "Product showcase carousel with rounded corners and padding - E-commerce gallery style",
113
151
  type: "carousel",
114
152
  props: {
115
153
  images: [
@@ -144,11 +182,13 @@ export const examples: {
144
182
  ],
145
183
  borderRadius: "rounded-xl",
146
184
  padding: "2rem",
147
- colorPreset: { color: "gray-50" },
185
+ colorPreset: { color: "neutral-50" },
148
186
  },
149
187
  },
188
+
189
+ // PORTFOLIO & CREATIVE
150
190
  {
151
- description: "Portfolio carousel with minimal styling",
191
+ description: "Portfolio carousel with minimal styling - Clean professional presentation",
152
192
  type: "carousel",
153
193
  props: {
154
194
  images: [
@@ -178,8 +218,10 @@ export const examples: {
178
218
  padding: "0",
179
219
  },
180
220
  },
221
+
222
+ // EVENTS & EXPERIENCES
181
223
  {
182
- description: "Event photos carousel with primary color theme",
224
+ description: "Event photos carousel with primary color theme - Conference or gathering highlights",
183
225
  type: "carousel",
184
226
  props: {
185
227
  images: [
@@ -262,8 +304,10 @@ export const examples: {
262
304
  padding: "1rem",
263
305
  },
264
306
  },
307
+
308
+ // TEAM & PEOPLE
265
309
  {
266
- description: "Team members carousel with blue color scheme",
310
+ description: "Team members carousel with circular images - Professional team showcase",
267
311
  type: "carousel",
268
312
  props: {
269
313
  images: [
@@ -296,13 +340,15 @@ export const examples: {
296
340
  legend: "Emily Chen - Marketing Director",
297
341
  },
298
342
  ],
299
- colorPreset: { color: "blue-50" },
343
+ colorPreset: { color: "primary-50" },
300
344
  borderRadius: "rounded-full",
301
345
  padding: "2rem",
302
346
  },
303
347
  },
348
+
349
+ // TUTORIALS & PROCESSES
304
350
  {
305
- description: "Recipe steps carousel with detailed descriptions",
351
+ description: "Recipe steps carousel with detailed descriptions - Step-by-step instructional content",
306
352
  type: "carousel",
307
353
  props: {
308
354
  images: [
@@ -335,7 +381,7 @@ export const examples: {
335
381
  legend: "Step 4: Season and serve hot",
336
382
  },
337
383
  ],
338
- colorPreset: { color: "orange-50" },
384
+ colorPreset: { color: "accent-50" },
339
385
  borderRadius: "rounded-md",
340
386
  padding: "1.5rem",
341
387
  },
@@ -374,7 +420,7 @@ export const examples: {
374
420
  legend: "Living Room - After",
375
421
  },
376
422
  ],
377
- colorPreset: { color: "green-50" },
423
+ colorPreset: { color: "accent-100" },
378
424
  borderRadius: "rounded-lg",
379
425
  padding: "1rem",
380
426
  },
@@ -406,7 +452,7 @@ export const examples: {
406
452
  legend: "Color Study #7 - 2024",
407
453
  },
408
454
  ],
409
- colorPreset: { color: "gray-900" },
455
+ colorPreset: { color: "neutral-900" },
410
456
  borderRadius: "rounded-sm",
411
457
  padding: "3rem",
412
458
  },
@@ -459,7 +505,7 @@ export const examples: {
459
505
  legend: "Weekend Casual - Relaxed Fit",
460
506
  },
461
507
  ],
462
- colorPreset: { color: "purple-100" },
508
+ colorPreset: { color: "secondary-100" },
463
509
  borderRadius: "rounded-xl",
464
510
  padding: "2rem",
465
511
  },
@@ -491,7 +537,7 @@ export const examples: {
491
537
  legend: "Electric Sedan",
492
538
  },
493
539
  ],
494
- colorPreset: { color: "red-50" },
540
+ colorPreset: { color: "accent-50" },
495
541
  borderRadius: "rounded-lg",
496
542
  padding: "0.5rem",
497
543
  },
@@ -530,13 +576,13 @@ export const examples: {
530
576
  legend: "Security - Enterprise-grade protection",
531
577
  },
532
578
  ],
533
- colorPreset: { color: "indigo-50" },
579
+ colorPreset: { color: "primary-50" },
534
580
  borderRadius: "rounded-2xl",
535
581
  padding: "4rem",
536
582
  },
537
583
  },
538
584
  {
539
- description: "Dynamic product gallery using products query with pricing and details",
585
+ description: "Dynamic product gallery using products query - Data-driven product showcase",
540
586
  type: "carousel",
541
587
  props: {
542
588
  images: [
@@ -556,6 +602,90 @@ export const examples: {
556
602
  },
557
603
  },
558
604
  },
605
+
606
+ // DYNAMIC CONTENT EXAMPLES
607
+ {
608
+ description: "Loop template for portfolioProjects query (one object will repeat per row)",
609
+ type: "carousel",
610
+ props: {
611
+ images: [
612
+ {
613
+ src: {
614
+ src: "{{portfolioProjects.featuredImage}}",
615
+ alt: "{{portfolioProjects.projectName}} featured image",
616
+ },
617
+ legend:
618
+ "{{portfolioProjects.projectName}} – {{portfolioProjects.clientName}} ({{portfolioProjects.year}})",
619
+ },
620
+ ],
621
+ colorPreset: { color: "neutral-50" },
622
+ borderRadius: "rounded-md",
623
+ padding: "1rem",
624
+ loop: {
625
+ over: "portfolioProjects",
626
+ },
627
+ },
628
+ },
629
+
630
+ // SPECIAL STYLING VARIATIONS
631
+ {
632
+ description: "Showcase carousel with subtle gradient background frame",
633
+ type: "carousel",
634
+ props: {
635
+ images: [
636
+ {
637
+ src: { src: "https://via.placeholder.com/900x500.png?text=Showcase+1", alt: "Showcase slide 1" },
638
+ legend: "Launch Dashboard",
639
+ },
640
+ {
641
+ src: { src: "https://via.placeholder.com/900x500.png?text=Showcase+2", alt: "Showcase slide 2" },
642
+ legend: "Collaboration Tools",
643
+ },
644
+ {
645
+ src: { src: "https://via.placeholder.com/900x500.png?text=Showcase+3", alt: "Showcase slide 3" },
646
+ legend: "Usage Analytics",
647
+ },
648
+ ],
649
+ colorPreset: { color: "primary-gradient-300", gradientDirection: "bg-gradient-to-br" },
650
+ borderRadius: "rounded-xl",
651
+ padding: "2rem",
652
+ },
653
+ },
654
+ // MINIMAL EDGE (no padding, square corners)
655
+ {
656
+ description: "Minimal edge-to-edge carousel (no padding, no rounding)",
657
+ type: "carousel",
658
+ props: {
659
+ images: [
660
+ {
661
+ src: { src: "https://via.placeholder.com/800x400.png?text=Edge+1", alt: "Edge slide 1" },
662
+ legend: "",
663
+ },
664
+ {
665
+ src: { src: "https://via.placeholder.com/800x400.png?text=Edge+2", alt: "Edge slide 2" },
666
+ legend: "",
667
+ },
668
+ ],
669
+ borderRadius: "rounded-none",
670
+ padding: "0",
671
+ },
672
+ },
673
+ // SINGLE IMAGE (acts as prepared placeholder carousel)
674
+ {
675
+ description: "Single-image carousel (placeholder for future expansion)",
676
+ type: "carousel",
677
+ props: {
678
+ images: [
679
+ {
680
+ src: { src: "https://via.placeholder.com/1000x420.png?text=Banner", alt: "Promotional banner" },
681
+ legend: "Early Access Program",
682
+ },
683
+ ],
684
+ colorPreset: { color: "secondary-50" },
685
+ borderRadius: "rounded-lg",
686
+ padding: "1.25rem",
687
+ },
688
+ },
559
689
  {
560
690
  description: "Team member carousel using teamMembers query with roles and departments",
561
691
  type: "carousel",
@@ -1,14 +1,15 @@
1
1
  import { type Static, Type } from "@sinclair/typebox";
2
2
  import { VscLayoutPanelOff } from "react-icons/vsc";
3
3
  import { defineBrickManifest } from "~/shared/brick-manifest";
4
- import { array, defineProps } from "../props/helpers";
5
- import { imageRef } from "../props/image";
6
- import { colorPresetRef } from "../props/color-preset";
7
- import { string, urlOrPageIdRef } from "../props/string";
8
- import { fontSizeRef } from "../props/text";
4
+ import { defineProps } from "../props/helpers";
5
+ import { image } from "../props/image";
6
+ import { colorPreset } from "../props/color-preset";
7
+ import { urlOrPageId } from "../props/string";
8
+ import { fontSize } from "../props/text";
9
9
  import type { BrickProps } from "../props/types";
10
10
  import { toLLMSchema } from "~/shared/utils/llm";
11
- import { cssLengthRef } from "../props/css-length";
11
+ import { cssLength } from "../props/css-length";
12
+ import type { BrickExample } from "./_types";
12
13
 
13
14
  export const manifest = defineBrickManifest({
14
15
  type: "footer",
@@ -29,13 +30,13 @@ export const manifest = defineBrickManifest({
29
30
  props: defineProps(
30
31
  {
31
32
  colorPreset: Type.Optional(
32
- colorPresetRef({
33
+ colorPreset({
33
34
  title: "Color preset",
34
35
  default: { color: "neutral-600" },
35
36
  }),
36
37
  ),
37
38
  padding: Type.Optional(
38
- cssLengthRef({
39
+ cssLength({
39
40
  default: "4rem",
40
41
  description: "Padding inside the footer.",
41
42
  title: "Padding",
@@ -44,17 +45,17 @@ export const manifest = defineBrickManifest({
44
45
  "ui:styleId": "styles:padding",
45
46
  }),
46
47
  ),
47
- logo: Type.Optional(imageRef({ title: "Logo", "ui:no-object-options": true, "ui:no-alt-text": true })),
48
- fontSize: Type.Optional(fontSizeRef({ default: "text-sm", "ui:no-extra-large-sizes": true })),
48
+ logo: Type.Optional(image({ title: "Logo", "ui:no-object-options": true, "ui:no-alt-text": true })),
49
+ fontSize: Type.Optional(fontSize({ default: "text-sm", "ui:no-extra-large-sizes": true })),
49
50
  // rows:Type.Optional(number("Rows", { default: 1, "ui:field": "slider", minimum: 1, maximum: 5 })),
50
- linksSections: array(
51
+ linksSections: Type.Array(
51
52
  Type.Object(
52
53
  {
53
- sectionTitle: string("Title"),
54
- links: array(
54
+ sectionTitle: Type.String({ title: "Title" }),
55
+ links: Type.Array(
55
56
  Type.Object({
56
- title: string("Title"),
57
- url: urlOrPageIdRef(),
57
+ title: Type.String({ title: "Title" }),
58
+ url: urlOrPageId(),
58
59
  }),
59
60
  {
60
61
  title: "Links",
@@ -90,6 +91,7 @@ export const manifest = defineBrickManifest({
90
91
  removable: true, // Enable delete button
91
92
  addable: true, // Enable add button
92
93
  },
94
+ default: [],
93
95
  description: "List of Links Sections. Each section contains a title and a list of links.",
94
96
  metadata: {
95
97
  category: "content",
@@ -107,11 +109,7 @@ export const footerSchemaPropsLLM = toLLMSchema(manifest.props);
107
109
 
108
110
  export type FooterProps = Static<Manifest["props"]>;
109
111
 
110
- export const examples: {
111
- description: string;
112
- type: string;
113
- props: BrickProps<Manifest>["brick"]["props"];
114
- }[] = [
112
+ export const examples: BrickExample<Manifest>[] = [
115
113
  {
116
114
  description: "Simple footer with logo on the left",
117
115
  type: "footer",
@@ -2,22 +2,56 @@ import { type Static, Type } from "@sinclair/typebox";
2
2
  import { FaWpforms } from "react-icons/fa6";
3
3
  import { defineBrickManifest } from "~/shared/brick-manifest";
4
4
  import { StringEnum } from "~/shared/utils/string-enum";
5
- import { borderRef, roundingRef } from "../props/border";
5
+ import { border, rounding } from "../props/border";
6
6
  import { datarecord } from "../props/datarecord";
7
7
  import { defineProps, group } from "../props/helpers";
8
- import { string } from "../props/string";
9
- import type { BrickProps } from "../props/types";
10
- import { fontSizeRef } from "../props/text";
11
- import { colorPresetRef } from "../props/color-preset";
12
- import { directionRef } from "../props/direction";
13
- import { cssLengthRef } from "../props/css-length";
8
+ import { fontSize } from "../props/text";
9
+ import { colorPreset } from "../props/color-preset";
10
+ import { direction } from "../props/direction";
11
+ import { cssLength } from "../props/css-length";
12
+ import type { BrickExample } from "./_types";
14
13
 
15
14
  export const manifest = defineBrickManifest({
16
15
  type: "form",
17
16
  name: "Form",
18
17
  description: "A form element.",
19
- aiInstructions: `The form brick automatically renders form fields based on the datarecord id provided in the props.
20
- There is no need to define the form fields manually and the form does not accept any children`,
18
+ aiInstructions: `PURPOSE
19
+ Dynamic form generator. Fields are inferred from the referenced datarecord schema (datarecordId). You NEVER list fields manually and the form does not accept children.
20
+
21
+ REQUIRED
22
+ • datarecordId must reference an existing datarecord definition.
23
+
24
+ COLOR & STYLE
25
+ • Optional colorPreset sets background + text. If omitted the form inherits parent background.
26
+ • 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).
27
+ • Use rounding + border + padding for emphasis. Keep padding modest (1–3rem) unless it's a feature form hero (max ~4rem).
28
+
29
+ LAYOUT
30
+ • direction controls stacking (flex-col vs flex-row). Wide multi-column layouts usually flex-row on desktop, stacked (flex-col) on mobile.
31
+ • Use mobileProps to reduce padding or switch direction ONLY if necessary. (If switching direction, you must repeat required props.)
32
+
33
+ BUTTON GROUP
34
+ • Only supply button overrides you actually change (color, size, position, rounding). Unspecified values fallback to defaults.
35
+ • If button.size = wide then hide position (handled by schema metadata automatically—don't circumvent).
36
+
37
+ CONTENT STRINGS
38
+ • title, intro, buttonLabel, successMessage, errorMessage should be concise.
39
+ • Avoid marketing fluff inside intro beyond one short paragraph.
40
+
41
+ DYNAMIC DATA
42
+ • Do not interpolate inside datarecordId (it must be a static id).
43
+ • You MAY interpolate page queries aliases in title/intro (e.g. "Apply for {{job.title}}") if those fields exist in surrounding dataset context.
44
+
45
+ DON'TS
46
+ ✗ Don't invent props.
47
+ ✗ Don't add HTML tags except basic inline markup if absolutely needed (prefer plain text).
48
+ ✗ Don't set impossible color tokens.
49
+
50
+ DO
51
+ ✓ Keep examples lean.
52
+ ✓ Use semantic color mapping guidelines.
53
+ ✓ Provide accessible, human-readable labels.
54
+ `,
21
55
  isContainer: false,
22
56
  icon: FaWpforms,
23
57
  minWidth: {
@@ -29,13 +63,13 @@ There is no need to define the form fields manually and the form does not accept
29
63
  "ui:responsive": "desktop",
30
64
  }),
31
65
  colorPreset: Type.Optional(
32
- colorPresetRef({
66
+ colorPreset({
33
67
  title: "Color",
34
68
  default: "base-200",
35
69
  }),
36
70
  ),
37
71
  direction: Type.Optional(
38
- directionRef({
72
+ direction({
39
73
  title: "Direction",
40
74
  description: "The direction of the form fields",
41
75
  default: "flex-col",
@@ -44,7 +78,7 @@ There is no need to define the form fields manually and the form does not accept
44
78
  }),
45
79
  ),
46
80
  padding: Type.Optional(
47
- cssLengthRef({
81
+ cssLength({
48
82
  default: "2rem",
49
83
  description: "Padding inside the form.",
50
84
  title: "Padding",
@@ -54,12 +88,12 @@ There is no need to define the form fields manually and the form does not accept
54
88
  }),
55
89
  ),
56
90
  rounding: Type.Optional(
57
- roundingRef({
91
+ rounding({
58
92
  default: "rounded-md",
59
93
  }),
60
94
  ),
61
- border: Type.Optional(borderRef({})),
62
- fontSize: Type.Optional(fontSizeRef({ default: "inherit", "ui:no-extra-large-sizes": true })),
95
+ border: Type.Optional(border({})),
96
+ fontSize: Type.Optional(fontSize({ default: "inherit", "ui:no-extra-large-sizes": true })),
63
97
  button: group({
64
98
  title: "Button",
65
99
  children: {
@@ -93,7 +127,7 @@ There is no need to define the form fields manually and the form does not accept
93
127
  },
94
128
  }),
95
129
  ),
96
- rounding: Type.Optional(roundingRef({ default: "rounded-md" })),
130
+ rounding: rounding({ default: "rounded-md" }),
97
131
  },
98
132
  }),
99
133
 
@@ -117,7 +151,8 @@ There is no need to define the form fields manually and the form does not accept
117
151
  }),
118
152
  ),
119
153
  buttonLabel: Type.Optional(
120
- string("Button Label", {
154
+ Type.String({
155
+ title: "Button label",
121
156
  default: "Submit",
122
157
  metadata: { category: "content" },
123
158
  }),
@@ -147,11 +182,7 @@ There is no need to define the form fields manually and the form does not accept
147
182
 
148
183
  export type Manifest = typeof manifest;
149
184
 
150
- export const examples: {
151
- description: string;
152
- type: string;
153
- props: BrickProps<Manifest>["brick"]["props"];
154
- }[] = [
185
+ export const examples: BrickExample<Manifest>[] = [
155
186
  {
156
187
  description: "Basic contact form",
157
188
  type: "form",
@@ -180,6 +211,30 @@ export const examples: {
180
211
  },
181
212
  },
182
213
  },
214
+ {
215
+ description: "Responsive newsletter subscription: desktop horizontal -> mobile vertical",
216
+ type: "form",
217
+ props: {
218
+ title: "Stay Updated",
219
+ intro: "Subscribe for product news and occasional tips.",
220
+ direction: "flex-row",
221
+ datarecordId: "newsletter-subscription",
222
+ padding: "3rem",
223
+ buttonLabel: "Subscribe",
224
+ button: { size: "block" },
225
+ colorPreset: { color: "neutral-100" },
226
+ },
227
+ mobileProps: {
228
+ title: "Stay Updated",
229
+ intro: "Subscribe for product news and occasional tips.",
230
+ direction: "flex-col",
231
+ datarecordId: "newsletter-subscription",
232
+ padding: "2rem",
233
+ buttonLabel: "Subscribe",
234
+ button: { size: "block" },
235
+ colorPreset: { color: "neutral-100" },
236
+ },
237
+ },
183
238
  {
184
239
  description: "Newsletter subscription form (horizontal) with large padding",
185
240
  type: "form",
@@ -195,6 +250,51 @@ export const examples: {
195
250
  },
196
251
  },
197
252
  },
253
+ {
254
+ description: "Minimal inline signup form (no background colorPreset, inherits parent)",
255
+ type: "form",
256
+ props: {
257
+ title: "Join Beta",
258
+ intro: "Access early features before public launch.",
259
+ direction: "flex-row",
260
+ datarecordId: "beta-signup",
261
+ buttonLabel: "Request Access",
262
+ button: { size: "block" },
263
+ padding: "1.5rem",
264
+ },
265
+ },
266
+ {
267
+ description: "Dark themed form using neutral-800 background and accent button",
268
+ type: "form",
269
+ props: {
270
+ title: "Feedback",
271
+ intro: "Tell us how we can improve the product.",
272
+ direction: "flex-col",
273
+ datarecordId: "product-feedback",
274
+ buttonLabel: "Send Feedback",
275
+ colorPreset: { color: "neutral-800" },
276
+ padding: "2.5rem",
277
+ button: { color: "btn-accent" },
278
+ rounding: "rounded-lg",
279
+ border: { width: "border", color: "border-neutral-700" },
280
+ },
281
+ },
282
+ {
283
+ description: "Gradient emphasis form (primary gradient) for event signup",
284
+ type: "form",
285
+ props: {
286
+ title: "Conference RSVP",
287
+ intro: "Reserve your seat for {{event.title}}.",
288
+ direction: "flex-col",
289
+ datarecordId: "event-registration",
290
+ buttonLabel: "Reserve Seat",
291
+ colorPreset: { color: "primary-gradient-400", gradientDirection: "bg-gradient-to-br" },
292
+ padding: "3rem",
293
+ button: { color: "btn-secondary" },
294
+ rounding: "rounded-xl",
295
+ border: { width: "border-2", color: "border-primary-300" },
296
+ },
297
+ },
198
298
  {
199
299
  description: "Event registration form",
200
300
  type: "form",
@@ -223,4 +323,18 @@ export const examples: {
223
323
  },
224
324
  },
225
325
  },
326
+ {
327
+ description: "Dynamic job application (title interpolated) mapping dataset field",
328
+ type: "form",
329
+ props: {
330
+ title: "Apply for {{job.title}}",
331
+ intro: "Join our team in {{job.location}}.",
332
+ direction: "flex-col",
333
+ datarecordId: "job-application",
334
+ buttonLabel: "Apply Now",
335
+ colorPreset: { color: "secondary-100" },
336
+ button: { size: "block", color: "btn-primary" },
337
+ padding: "2rem",
338
+ },
339
+ },
226
340
  ];