@upstart.gg/sdk 0.0.136 → 0.0.138

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 (461) hide show
  1. package/dist/shared/ai/schemas.d.ts.map +1 -1
  2. package/dist/shared/ai/schemas.js +26 -31
  3. package/dist/shared/ai/schemas.js.map +1 -1
  4. package/dist/shared/ai/types.d.ts +14 -62
  5. package/dist/shared/ai/types.d.ts.map +1 -1
  6. package/dist/shared/ajv.js +33 -31
  7. package/dist/shared/ajv.js.map +1 -1
  8. package/dist/shared/attributes.d.ts +91 -85
  9. package/dist/shared/attributes.d.ts.map +1 -1
  10. package/dist/shared/attributes.js +21 -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 +14 -20
  17. package/dist/shared/bricks/manifests/all-manifests.js +45 -43
  18. package/dist/shared/bricks/manifests/all-props.d.ts +1511 -0
  19. package/dist/shared/bricks/manifests/all-props.d.ts.map +1 -0
  20. package/dist/shared/bricks/manifests/all-props.js +244 -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 +17 -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 +14 -20
  28. package/dist/shared/bricks/manifests/card.manifest.d.ts +5 -3
  29. package/dist/shared/bricks/manifests/card.manifest.d.ts.map +1 -1
  30. package/dist/shared/bricks/manifests/card.manifest.js +19 -20
  31. package/dist/shared/bricks/manifests/carousel.manifest.d.ts +3 -2
  32. package/dist/shared/bricks/manifests/carousel.manifest.d.ts.map +1 -1
  33. package/dist/shared/bricks/manifests/carousel.manifest.js +16 -20
  34. package/dist/shared/bricks/manifests/footer.manifest.d.ts +5 -3
  35. package/dist/shared/bricks/manifests/footer.manifest.d.ts.map +1 -1
  36. package/dist/shared/bricks/manifests/footer.manifest.js +14 -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 +14 -20
  40. package/dist/shared/bricks/manifests/hero.manifest.d.ts +3 -5
  41. package/dist/shared/bricks/manifests/hero.manifest.d.ts.map +1 -1
  42. package/dist/shared/bricks/manifests/hero.manifest.js +14 -20
  43. package/dist/shared/bricks/manifests/html.manifest.d.ts +2 -1
  44. package/dist/shared/bricks/manifests/html.manifest.d.ts.map +1 -1
  45. package/dist/shared/bricks/manifests/html.manifest.js +9 -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 +14 -20
  49. package/dist/shared/bricks/manifests/image.manifest.d.ts +3 -2
  50. package/dist/shared/bricks/manifests/image.manifest.d.ts.map +1 -1
  51. package/dist/shared/bricks/manifests/image.manifest.js +17 -20
  52. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts +4 -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 +16 -20
  55. package/dist/shared/bricks/manifests/map.manifest.d.ts +2 -1
  56. package/dist/shared/bricks/manifests/map.manifest.d.ts.map +1 -1
  57. package/dist/shared/bricks/manifests/map.manifest.js +12 -20
  58. package/dist/shared/bricks/manifests/navbar.manifest.d.ts +7 -5
  59. package/dist/shared/bricks/manifests/navbar.manifest.d.ts.map +1 -1
  60. package/dist/shared/bricks/manifests/navbar.manifest.js +16 -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 +14 -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 +15 -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 +9 -20
  70. package/dist/shared/bricks/manifests/table.manifest.d.ts +5 -4
  71. package/dist/shared/bricks/manifests/table.manifest.d.ts.map +1 -1
  72. package/dist/shared/bricks/manifests/table.manifest.js +16 -20
  73. package/dist/shared/bricks/manifests/tabs.manifest.d.ts +5 -5
  74. package/dist/shared/bricks/manifests/tabs.manifest.d.ts.map +1 -1
  75. package/dist/shared/bricks/manifests/tabs.manifest.js +16 -20
  76. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts +5 -3
  77. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts.map +1 -1
  78. package/dist/shared/bricks/manifests/testimonials.manifest.js +19 -20
  79. package/dist/shared/bricks/manifests/text.manifest.d.ts +3 -10
  80. package/dist/shared/bricks/manifests/text.manifest.d.ts.map +1 -1
  81. package/dist/shared/bricks/manifests/text.manifest.js +14 -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 +16 -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 +12 -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 +5 -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/grow.d.ts +3 -0
  127. package/dist/shared/bricks/props/grow.d.ts.map +1 -0
  128. package/dist/shared/{utils/typed-ref.js → bricks/props/grow.js} +5 -5
  129. package/dist/shared/bricks/props/helpers.js +6 -6
  130. package/dist/shared/bricks/props/image.d.ts +3 -8
  131. package/dist/shared/bricks/props/image.d.ts.map +1 -1
  132. package/dist/shared/bricks/props/image.js +4 -7
  133. package/dist/shared/bricks/props/string.d.ts +2 -5
  134. package/dist/shared/bricks/props/string.d.ts.map +1 -1
  135. package/dist/shared/bricks/props/string.js +3 -10
  136. package/dist/shared/bricks/props/tags.d.ts +0 -1
  137. package/dist/shared/bricks/props/tags.d.ts.map +1 -1
  138. package/dist/shared/bricks/props/tags.js +3 -6
  139. package/dist/shared/bricks/props/text.d.ts +0 -3
  140. package/dist/shared/bricks/props/text.d.ts.map +1 -1
  141. package/dist/shared/bricks/props/text.js +4 -11
  142. package/dist/shared/bricks/props/types.d.ts +2 -2
  143. package/dist/shared/bricks/props/types.d.ts.map +1 -1
  144. package/dist/shared/bricks.d.ts +65 -154
  145. package/dist/shared/bricks.d.ts.map +1 -1
  146. package/dist/shared/bricks.js +48 -52
  147. package/dist/shared/chunk-2EOCK66Z.js +19 -0
  148. package/dist/shared/chunk-2EOCK66Z.js.map +1 -0
  149. package/dist/shared/{chunk-F22LDHEO.js → chunk-2U5U3CCJ.js} +3 -18
  150. package/dist/shared/chunk-2U5U3CCJ.js.map +1 -0
  151. package/dist/shared/{chunk-2RK3CPYJ.js → chunk-2UEPTT5J.js} +12 -19
  152. package/dist/shared/chunk-2UEPTT5J.js.map +1 -0
  153. package/dist/shared/{chunk-W6MRYRGJ.js → chunk-2Z5WOCFS.js} +46 -20
  154. package/dist/shared/chunk-2Z5WOCFS.js.map +1 -0
  155. package/dist/shared/{chunk-CRS7QCPZ.js → chunk-34IUWNRX.js} +65 -27
  156. package/dist/shared/chunk-34IUWNRX.js.map +1 -0
  157. package/dist/shared/chunk-57NRTXRA.js +309 -0
  158. package/dist/shared/chunk-57NRTXRA.js.map +1 -0
  159. package/dist/shared/{chunk-UXTASZ23.js → chunk-5HJT5NJ3.js} +66 -63
  160. package/dist/shared/chunk-5HJT5NJ3.js.map +1 -0
  161. package/dist/shared/{chunk-H5JM2M2T.js → chunk-5J4Y43RM.js} +58 -185
  162. package/dist/shared/chunk-5J4Y43RM.js.map +1 -0
  163. package/dist/shared/{chunk-RV7AYVFV.js → chunk-5OVOXUFX.js} +6 -20
  164. package/dist/shared/chunk-5OVOXUFX.js.map +1 -0
  165. package/dist/shared/{chunk-TNMNMYOB.js → chunk-5RCC2STG.js} +2 -13
  166. package/dist/shared/chunk-5RCC2STG.js.map +1 -0
  167. package/dist/shared/{chunk-42OUNI7C.js → chunk-5SNSUC6Q.js} +27 -29
  168. package/dist/shared/chunk-5SNSUC6Q.js.map +1 -0
  169. package/dist/shared/{chunk-ZR6R6Z6O.js → chunk-B5T2LFV2.js} +34 -36
  170. package/dist/shared/chunk-B5T2LFV2.js.map +1 -0
  171. package/dist/shared/{chunk-Q4NPPLEU.js → chunk-BHARJBEK.js} +2 -9
  172. package/dist/shared/chunk-BHARJBEK.js.map +1 -0
  173. package/dist/shared/{chunk-LLNPH3XR.js → chunk-DCM4732T.js} +6 -8
  174. package/dist/shared/chunk-DCM4732T.js.map +1 -0
  175. package/dist/shared/{chunk-LCJ2VFPM.js → chunk-E3ZW57HF.js} +32 -26
  176. package/dist/shared/chunk-E3ZW57HF.js.map +1 -0
  177. package/dist/shared/{chunk-CSF2WQX2.js → chunk-EID5HPF3.js} +15 -12
  178. package/dist/shared/chunk-EID5HPF3.js.map +1 -0
  179. package/dist/shared/chunk-EMF5TCPX.js +389 -0
  180. package/dist/shared/chunk-EMF5TCPX.js.map +1 -0
  181. package/dist/shared/chunk-EUFVTHAG.js +33 -0
  182. package/dist/shared/chunk-EUFVTHAG.js.map +1 -0
  183. package/dist/shared/{chunk-2IHKVMKW.js → chunk-FC52EHCC.js} +18 -19
  184. package/dist/shared/chunk-FC52EHCC.js.map +1 -0
  185. package/dist/shared/chunk-FD7YYFRI.js +225 -0
  186. package/dist/shared/chunk-FD7YYFRI.js.map +1 -0
  187. package/dist/shared/{chunk-KILJYJFE.js → chunk-FVV27R73.js} +20 -105
  188. package/dist/shared/chunk-FVV27R73.js.map +1 -0
  189. package/dist/shared/{chunk-N3ZTQD5I.js → chunk-FYGFB5U5.js} +10 -23
  190. package/dist/shared/chunk-FYGFB5U5.js.map +1 -0
  191. package/dist/shared/chunk-GDYCCB3B.js +22 -0
  192. package/dist/shared/chunk-GDYCCB3B.js.map +1 -0
  193. package/dist/shared/chunk-GLV6QIIM.js +41 -0
  194. package/dist/shared/chunk-GLV6QIIM.js.map +1 -0
  195. package/dist/shared/{chunk-EVLRH6VG.js → chunk-GNTJT7MR.js} +2 -2
  196. package/dist/shared/chunk-GNTJT7MR.js.map +1 -0
  197. package/dist/shared/chunk-HHUFGV7J.js +259 -0
  198. package/dist/shared/chunk-HHUFGV7J.js.map +1 -0
  199. package/dist/shared/{chunk-TFGGYU6Y.js → chunk-IEMCCHM4.js} +7 -12
  200. package/dist/shared/chunk-IEMCCHM4.js.map +1 -0
  201. package/dist/shared/{chunk-GIGFNQBO.js → chunk-IMDOF55E.js} +12 -4
  202. package/dist/shared/chunk-IMDOF55E.js.map +1 -0
  203. package/dist/shared/{chunk-N3BEBLWF.js → chunk-IPWYNE6Y.js} +34 -34
  204. package/dist/shared/chunk-J6R3GSKS.js +386 -0
  205. package/dist/shared/chunk-J6R3GSKS.js.map +1 -0
  206. package/dist/shared/{chunk-ZRRAK5NS.js → chunk-KRODRZNS.js} +41 -33
  207. package/dist/shared/chunk-KRODRZNS.js.map +1 -0
  208. package/dist/shared/chunk-KTA7XES3.js +168 -0
  209. package/dist/shared/chunk-KTA7XES3.js.map +1 -0
  210. package/dist/shared/{chunk-2VDR4ZYY.js → chunk-L4W4B2RQ.js} +26 -82
  211. package/dist/shared/chunk-L4W4B2RQ.js.map +1 -0
  212. package/dist/shared/chunk-MO6CRLQA.js +73 -0
  213. package/dist/shared/chunk-MO6CRLQA.js.map +1 -0
  214. package/dist/shared/{chunk-GQTZPN5D.js → chunk-NTP6BKRU.js} +29 -32
  215. package/dist/shared/chunk-NTP6BKRU.js.map +1 -0
  216. package/dist/shared/{chunk-DFAFDBYZ.js → chunk-O53V22BK.js} +34 -27
  217. package/dist/shared/chunk-O53V22BK.js.map +1 -0
  218. package/dist/shared/{chunk-BPBKHEQ5.js → chunk-OJ6KL7FU.js} +1 -8
  219. package/dist/shared/chunk-OJ6KL7FU.js.map +1 -0
  220. package/dist/shared/{chunk-F247VKAE.js → chunk-ORIUCOED.js} +18 -20
  221. package/dist/shared/chunk-ORIUCOED.js.map +1 -0
  222. package/dist/shared/{chunk-GFAQWQER.js → chunk-PFZMRSHJ.js} +33 -35
  223. package/dist/shared/chunk-PFZMRSHJ.js.map +1 -0
  224. package/dist/shared/{chunk-KIDICX3Y.js → chunk-QHKOAIOK.js} +43 -78
  225. package/dist/shared/chunk-QHKOAIOK.js.map +1 -0
  226. package/dist/shared/{chunk-4MNWMEMM.js → chunk-RDOCVLCF.js} +21 -21
  227. package/dist/shared/chunk-RDOCVLCF.js.map +1 -0
  228. package/dist/shared/{chunk-FQDR2BBZ.js → chunk-RFH7PEVS.js} +13 -5
  229. package/dist/shared/chunk-RFH7PEVS.js.map +1 -0
  230. package/dist/shared/chunk-T3UPW5OW.js +79 -0
  231. package/dist/shared/chunk-T3UPW5OW.js.map +1 -0
  232. package/dist/shared/{chunk-L6C7HUSA.js → chunk-TGKNA2JS.js} +21 -24
  233. package/dist/shared/chunk-TGKNA2JS.js.map +1 -0
  234. package/dist/shared/chunk-TZ6X7ZM5.js +158 -0
  235. package/dist/shared/chunk-TZ6X7ZM5.js.map +1 -0
  236. package/dist/shared/{chunk-BHC2A43S.js → chunk-UC75KRLX.js} +3 -3
  237. package/dist/shared/{chunk-BHC2A43S.js.map → chunk-UC75KRLX.js.map} +1 -1
  238. package/dist/shared/{chunk-LTIJI7Y3.js → chunk-VMIJ6MG5.js} +34 -34
  239. package/dist/shared/chunk-VMIJ6MG5.js.map +1 -0
  240. package/dist/shared/{chunk-NTLAKMMQ.js → chunk-VYA2FCTY.js} +6 -17
  241. package/dist/shared/chunk-VYA2FCTY.js.map +1 -0
  242. package/dist/shared/{chunk-Y74LZNND.js → chunk-WPZV3LYL.js} +4 -10
  243. package/dist/shared/chunk-WPZV3LYL.js.map +1 -0
  244. package/dist/shared/chunk-XFZQGRRL.js +101 -0
  245. package/dist/shared/chunk-XFZQGRRL.js.map +1 -0
  246. package/dist/shared/{chunk-FOGAVJC2.js → chunk-XYWSIMZ6.js} +3 -3
  247. package/dist/shared/chunk-XYWSIMZ6.js.map +1 -0
  248. package/dist/shared/{chunk-ZLYIRH2B.js → chunk-ZRBTAC3G.js} +3 -18
  249. package/dist/shared/chunk-ZRBTAC3G.js.map +1 -0
  250. package/dist/shared/{chunk-36PLZKMW.js → chunk-ZYQZUWF7.js} +26 -27
  251. package/dist/shared/chunk-ZYQZUWF7.js.map +1 -0
  252. package/dist/shared/chunk-ZZVYD4BG.js +41 -0
  253. package/dist/shared/chunk-ZZVYD4BG.js.map +1 -0
  254. package/dist/shared/context.d.ts +406 -23
  255. package/dist/shared/context.d.ts.map +1 -1
  256. package/dist/shared/context.js +94 -0
  257. package/dist/shared/context.js.map +1 -1
  258. package/dist/shared/datarecords/external/airtable/types.d.ts +1 -1
  259. package/dist/shared/datarecords/external/airtable/types.d.ts.map +1 -1
  260. package/dist/shared/datarecords/external/airtable/types.js +2 -1
  261. package/dist/shared/datarecords/types.d.ts +3 -3
  262. package/dist/shared/datarecords/types.d.ts.map +1 -1
  263. package/dist/shared/datarecords/types.js +3 -2
  264. package/dist/shared/datasources/external/instagram/feed/schema.d.ts +1 -1
  265. package/dist/shared/datasources/external/instagram/feed/schema.d.ts.map +1 -1
  266. package/dist/shared/datasources/external/instagram/feed/schema.js +4 -1
  267. package/dist/shared/datasources/external/instagram/feed/schema.js.map +1 -1
  268. package/dist/shared/datasources/external/mastodon/status/schema.d.ts +6 -6
  269. package/dist/shared/datasources/external/mastodon/status/schema.d.ts.map +1 -1
  270. package/dist/shared/datasources/external/mastodon/status/schema.js +6 -19
  271. package/dist/shared/datasources/external/mastodon/status/schema.js.map +1 -1
  272. package/dist/shared/datasources/external/meta/oauth/config.d.ts +2 -2
  273. package/dist/shared/datasources/external/meta/oauth/config.d.ts.map +1 -1
  274. package/dist/shared/datasources/external/meta/oauth/config.js +4 -1
  275. package/dist/shared/datasources/external/meta/oauth/config.js.map +1 -1
  276. package/dist/shared/datasources/external/threads/media/schema.d.ts +1 -1
  277. package/dist/shared/datasources/external/threads/media/schema.d.ts.map +1 -1
  278. package/dist/shared/datasources/external/threads/media/schema.js +4 -8
  279. package/dist/shared/datasources/external/threads/media/schema.js.map +1 -1
  280. package/dist/shared/datasources/internal/blog/schema.d.ts +1 -1
  281. package/dist/shared/datasources/internal/blog/schema.d.ts.map +1 -1
  282. package/dist/shared/datasources/internal/blog/schema.js +4 -1
  283. package/dist/shared/datasources/internal/blog/schema.js.map +1 -1
  284. package/dist/shared/datasources/types.d.ts +25 -25
  285. package/dist/shared/datasources/types.d.ts.map +1 -1
  286. package/dist/shared/datasources/types.js +3 -16
  287. package/dist/shared/images.d.ts +1 -1
  288. package/dist/shared/images.d.ts.map +1 -1
  289. package/dist/shared/images.js +4 -38
  290. package/dist/shared/images.js.map +1 -1
  291. package/dist/shared/page.d.ts +141 -22
  292. package/dist/shared/page.d.ts.map +1 -1
  293. package/dist/shared/page.js +52 -49
  294. package/dist/shared/responsive.js +1 -1
  295. package/dist/shared/site.d.ts +81 -191
  296. package/dist/shared/site.d.ts.map +1 -1
  297. package/dist/shared/site.js +56 -114
  298. package/dist/shared/site.js.map +1 -1
  299. package/dist/shared/sitemap.d.ts +4 -326
  300. package/dist/shared/sitemap.d.ts.map +1 -1
  301. package/dist/shared/sitemap.js +51 -58
  302. package/dist/shared/theme.d.ts +0 -37
  303. package/dist/shared/theme.d.ts.map +1 -1
  304. package/dist/shared/theme.js +4 -21
  305. package/dist/shared/utils/llm.d.ts +1 -10
  306. package/dist/shared/utils/llm.d.ts.map +1 -1
  307. package/dist/shared/utils/llm.js +1 -18
  308. package/dist/shared/utils/schema.d.ts +3 -7
  309. package/dist/shared/utils/schema.d.ts.map +1 -1
  310. package/dist/shared/utils/schema.js +2 -19
  311. package/dist/shared/utils/string-enum.d.ts +9 -3
  312. package/dist/shared/utils/string-enum.d.ts.map +1 -1
  313. package/dist/shared/utils/string-enum.js +1 -1
  314. package/package.json +21 -5
  315. package/src/shared/ai/schemas.ts +25 -30
  316. package/src/shared/ai/types.ts +23 -89
  317. package/src/shared/attributes.ts +53 -51
  318. package/src/shared/brick-manifest.ts +5 -6
  319. package/src/shared/bricks/manifests/accordion.manifest.ts +11 -11
  320. package/src/shared/bricks/manifests/all-props.ts +165 -0
  321. package/src/shared/bricks/manifests/box.manifest.ts +19 -21
  322. package/src/shared/bricks/manifests/button.manifest.ts +54 -16
  323. package/src/shared/bricks/manifests/card.manifest.ts +45 -174
  324. package/src/shared/bricks/manifests/carousel.manifest.ts +11 -13
  325. package/src/shared/bricks/manifests/footer.manifest.ts +16 -15
  326. package/src/shared/bricks/manifests/form.manifest.ts +14 -15
  327. package/src/shared/bricks/manifests/hero.manifest.ts +58 -265
  328. package/src/shared/bricks/manifests/html.manifest.ts +6 -0
  329. package/src/shared/bricks/manifests/icon.manifest.ts +10 -99
  330. package/src/shared/bricks/manifests/image.manifest.ts +22 -23
  331. package/src/shared/bricks/manifests/images-gallery.manifest.ts +21 -15
  332. package/src/shared/bricks/manifests/map.manifest.ts +19 -75
  333. package/src/shared/bricks/manifests/navbar.manifest.ts +20 -21
  334. package/src/shared/bricks/manifests/sidebar.manifest.ts +9 -10
  335. package/src/shared/bricks/manifests/social-links.manifest.ts +17 -20
  336. package/src/shared/bricks/manifests/spacer.manifest.ts +0 -1
  337. package/src/shared/bricks/manifests/table.manifest.ts +21 -15
  338. package/src/shared/bricks/manifests/tabs.manifest.ts +26 -445
  339. package/src/shared/bricks/manifests/testimonials.manifest.ts +47 -244
  340. package/src/shared/bricks/manifests/text.manifest.ts +28 -59
  341. package/src/shared/bricks/manifests/timeline.manifest.ts +29 -24
  342. package/src/shared/bricks/manifests/video.manifest.ts +9 -10
  343. package/src/shared/bricks/props/align.ts +0 -13
  344. package/src/shared/bricks/props/background.ts +3 -15
  345. package/src/shared/bricks/props/border.ts +2 -13
  346. package/src/shared/bricks/props/color-preset.ts +9 -10
  347. package/src/shared/bricks/props/color.ts +12 -20
  348. package/src/shared/bricks/props/common.ts +8 -15
  349. package/src/shared/bricks/props/css-length.ts +0 -5
  350. package/src/shared/bricks/props/datasource.ts +72 -74
  351. package/src/shared/bricks/props/direction.ts +1 -5
  352. package/src/shared/bricks/props/dynamic.ts +0 -11
  353. package/src/shared/bricks/props/effects.ts +0 -9
  354. package/src/shared/bricks/props/geolocation.ts +3 -3
  355. package/src/shared/bricks/props/grow.ts +11 -0
  356. package/src/shared/bricks/props/helpers.ts +1 -1
  357. package/src/shared/bricks/props/image.ts +44 -16
  358. package/src/shared/bricks/props/string.ts +7 -18
  359. package/src/shared/bricks/props/tags.ts +0 -5
  360. package/src/shared/bricks/props/tests/background.test.ts +1 -15
  361. package/src/shared/bricks/props/tests/image.test.ts +3 -9
  362. package/src/shared/bricks/props/tests/string.test.ts +2 -26
  363. package/src/shared/bricks/props/text.ts +0 -12
  364. package/src/shared/bricks/props/types.ts +4 -3
  365. package/src/shared/bricks.ts +166 -1020
  366. package/src/shared/context.ts +24 -24
  367. package/src/shared/datarecords/external/airtable/types.ts +12 -11
  368. package/src/shared/datarecords/types.ts +2 -34
  369. package/src/shared/datasources/external/instagram/feed/schema.ts +2 -1
  370. package/src/shared/datasources/external/mastodon/status/schema.ts +4 -19
  371. package/src/shared/datasources/external/meta/oauth/config.ts +2 -1
  372. package/src/shared/datasources/external/threads/media/schema.ts +2 -8
  373. package/src/shared/datasources/internal/blog/schema.ts +2 -1
  374. package/src/shared/datasources/types.ts +64 -79
  375. package/src/shared/images.ts +12 -18
  376. package/src/shared/page.ts +10 -1
  377. package/src/shared/site.ts +1 -0
  378. package/src/shared/sitemap.ts +3 -70
  379. package/src/shared/tests/attributes.test.ts +2 -0
  380. package/src/shared/theme.ts +81 -96
  381. package/src/shared/utils/llm.ts +5 -191
  382. package/src/shared/utils/schema.ts +95 -258
  383. package/src/shared/utils/string-enum.ts +25 -4
  384. package/src/shared/utils/tests/schema.test.ts +278 -314
  385. package/dist/shared/chunk-2IHKVMKW.js.map +0 -1
  386. package/dist/shared/chunk-2RK3CPYJ.js.map +0 -1
  387. package/dist/shared/chunk-2VDR4ZYY.js.map +0 -1
  388. package/dist/shared/chunk-36PLZKMW.js.map +0 -1
  389. package/dist/shared/chunk-42OUNI7C.js.map +0 -1
  390. package/dist/shared/chunk-4MNWMEMM.js.map +0 -1
  391. package/dist/shared/chunk-A2QPY54H.js +0 -13
  392. package/dist/shared/chunk-A2QPY54H.js.map +0 -1
  393. package/dist/shared/chunk-BPBKHEQ5.js.map +0 -1
  394. package/dist/shared/chunk-CRS7QCPZ.js.map +0 -1
  395. package/dist/shared/chunk-CSF2WQX2.js.map +0 -1
  396. package/dist/shared/chunk-DFAFDBYZ.js.map +0 -1
  397. package/dist/shared/chunk-DV3G7X34.js +0 -244
  398. package/dist/shared/chunk-DV3G7X34.js.map +0 -1
  399. package/dist/shared/chunk-EVLRH6VG.js.map +0 -1
  400. package/dist/shared/chunk-F22LDHEO.js.map +0 -1
  401. package/dist/shared/chunk-F247VKAE.js.map +0 -1
  402. package/dist/shared/chunk-FOGAVJC2.js.map +0 -1
  403. package/dist/shared/chunk-FQDR2BBZ.js.map +0 -1
  404. package/dist/shared/chunk-GFAQWQER.js.map +0 -1
  405. package/dist/shared/chunk-GIGFNQBO.js.map +0 -1
  406. package/dist/shared/chunk-GQTZPN5D.js.map +0 -1
  407. package/dist/shared/chunk-H5JM2M2T.js.map +0 -1
  408. package/dist/shared/chunk-HTUSL2U7.js +0 -260
  409. package/dist/shared/chunk-HTUSL2U7.js.map +0 -1
  410. package/dist/shared/chunk-IQIISR22.js +0 -794
  411. package/dist/shared/chunk-IQIISR22.js.map +0 -1
  412. package/dist/shared/chunk-JK2FWFJU.js +0 -15
  413. package/dist/shared/chunk-JK2FWFJU.js.map +0 -1
  414. package/dist/shared/chunk-KEM5N6GJ.js +0 -505
  415. package/dist/shared/chunk-KEM5N6GJ.js.map +0 -1
  416. package/dist/shared/chunk-KIDICX3Y.js.map +0 -1
  417. package/dist/shared/chunk-KILJYJFE.js.map +0 -1
  418. package/dist/shared/chunk-L6C7HUSA.js.map +0 -1
  419. package/dist/shared/chunk-LCJ2VFPM.js.map +0 -1
  420. package/dist/shared/chunk-LLNPH3XR.js.map +0 -1
  421. package/dist/shared/chunk-LTIJI7Y3.js.map +0 -1
  422. package/dist/shared/chunk-MFNHFN2B.js +0 -103
  423. package/dist/shared/chunk-MFNHFN2B.js.map +0 -1
  424. package/dist/shared/chunk-N3ZTQD5I.js.map +0 -1
  425. package/dist/shared/chunk-NTLAKMMQ.js.map +0 -1
  426. package/dist/shared/chunk-Q4NPPLEU.js.map +0 -1
  427. package/dist/shared/chunk-RV7AYVFV.js.map +0 -1
  428. package/dist/shared/chunk-SE6O65HC.js +0 -44
  429. package/dist/shared/chunk-SE6O65HC.js.map +0 -1
  430. package/dist/shared/chunk-TFGGYU6Y.js.map +0 -1
  431. package/dist/shared/chunk-TNMNMYOB.js.map +0 -1
  432. package/dist/shared/chunk-TNTFKLCR.js +0 -1225
  433. package/dist/shared/chunk-TNTFKLCR.js.map +0 -1
  434. package/dist/shared/chunk-U5ZECCJM.js +0 -464
  435. package/dist/shared/chunk-U5ZECCJM.js.map +0 -1
  436. package/dist/shared/chunk-UXTASZ23.js.map +0 -1
  437. package/dist/shared/chunk-W6MRYRGJ.js.map +0 -1
  438. package/dist/shared/chunk-WKN566LN.js +0 -29
  439. package/dist/shared/chunk-WKN566LN.js.map +0 -1
  440. package/dist/shared/chunk-Y74LZNND.js.map +0 -1
  441. package/dist/shared/chunk-YWOTQWIQ.js +0 -572
  442. package/dist/shared/chunk-YWOTQWIQ.js.map +0 -1
  443. package/dist/shared/chunk-ZLYIRH2B.js.map +0 -1
  444. package/dist/shared/chunk-ZR6R6Z6O.js.map +0 -1
  445. package/dist/shared/chunk-ZRRAK5NS.js.map +0 -1
  446. package/dist/shared/tests/schema-registry.test.d.ts +0 -2
  447. package/dist/shared/tests/schema-registry.test.d.ts.map +0 -1
  448. package/dist/shared/utils/schema-registry.d.ts +0 -5
  449. package/dist/shared/utils/schema-registry.d.ts.map +0 -1
  450. package/dist/shared/utils/schema-registry.js +0 -29
  451. package/dist/shared/utils/tests/schema-registry.test.d.ts +0 -2
  452. package/dist/shared/utils/tests/schema-registry.test.d.ts.map +0 -1
  453. package/dist/shared/utils/typed-ref.d.ts +0 -43
  454. package/dist/shared/utils/typed-ref.d.ts.map +0 -1
  455. package/dist/shared/utils/typed-ref.js.map +0 -1
  456. package/src/shared/tests/schema-registry.test.ts +0 -12
  457. package/src/shared/utils/schema-registry.ts +0 -82
  458. package/src/shared/utils/tests/schema-registry.test.ts +0 -13
  459. package/src/shared/utils/typed-ref.ts +0 -53
  460. /package/dist/shared/{utils/schema-registry.js.map → bricks/props/grow.js.map} +0 -0
  461. /package/dist/shared/{chunk-N3BEBLWF.js.map → chunk-IPWYNE6Y.js.map} +0 -0
@@ -1,14 +1,14 @@
1
1
  import { defineBrickManifest } from "~/shared/brick-manifest";
2
2
  import { defineProps } from "../props/helpers";
3
3
  import { Type } from "@sinclair/typebox";
4
- import { borderRef, roundingRef } from "../props/border";
5
- import { shadowRef } from "../props/effects";
6
- import { cssLengthRef } from "../props/css-length";
7
- import { directionRef } from "../props/direction";
4
+ import { border, rounding } from "../props/border";
5
+ import { shadow } from "../props/effects";
6
+ import { cssLength } from "../props/css-length";
7
+ import { direction } from "../props/direction";
8
8
  import { RxBox } from "react-icons/rx";
9
- import { alignItemsRef, justifyContentRef } from "../props/align";
10
- import { colorPresetRef } from "../props/color-preset";
11
- import { loopRef } from "../props/dynamic";
9
+ import { alignItems, justifyContent } from "../props/align";
10
+ import { colorPreset } from "../props/color-preset";
11
+ import { loop } from "../props/dynamic";
12
12
  import type { BrickExample } from "./_types";
13
13
 
14
14
  // Generic container can hold any type of array data source
@@ -67,27 +67,27 @@ AVOID:
67
67
  icon: RxBox,
68
68
  props: defineProps({
69
69
  colorPreset: Type.Optional(
70
- colorPresetRef({
70
+ colorPreset({
71
71
  title: "Color",
72
72
  }),
73
73
  ),
74
- direction: directionRef({
74
+ direction: direction({
75
75
  default: "flex-col",
76
76
  title: "Direction",
77
77
  description: "Direction of the box layout",
78
78
  }),
79
79
  justifyContent: Type.Optional(
80
- justifyContentRef({
80
+ justifyContent({
81
81
  default: "justify-center",
82
82
  }),
83
83
  ),
84
84
  alignItems: Type.Optional(
85
- alignItemsRef({
85
+ alignItems({
86
86
  default: "items-stretch",
87
87
  }),
88
88
  ),
89
89
  gap: Type.Optional(
90
- cssLengthRef({
90
+ cssLength({
91
91
  title: "Gap",
92
92
  default: "1rem",
93
93
  description: "Gap between children bricks.",
@@ -98,7 +98,7 @@ AVOID:
98
98
  }),
99
99
  ),
100
100
  padding: Type.Optional(
101
- cssLengthRef({
101
+ cssLength({
102
102
  default: "1rem",
103
103
  description: "Padding inside the box.",
104
104
  "ai:instructions": "Use only a single value like '1rem' or '10px'",
@@ -115,14 +115,12 @@ AVOID:
115
115
  "ui:styleId": "styles:wrap",
116
116
  }),
117
117
  ),
118
- rounding: Type.Optional(
119
- roundingRef({
120
- default: "rounded-md",
121
- }),
122
- ),
123
- border: Type.Optional(borderRef()),
124
- shadow: Type.Optional(shadowRef()),
125
- loop: Type.Optional(loopRef()),
118
+ rounding: rounding({
119
+ default: "rounded-md",
120
+ }),
121
+ border: Type.Optional(border()),
122
+ shadow: Type.Optional(shadow()),
123
+ loop: Type.Optional(loop()),
126
124
  $children: Type.Array(Type.Any(), {
127
125
  "ui:field": "hidden",
128
126
  description: "List of nested bricks",
@@ -2,11 +2,11 @@ import { Type } from "@sinclair/typebox";
2
2
  import { RxButton } from "react-icons/rx";
3
3
  import { defineBrickManifest } from "~/shared/brick-manifest";
4
4
  import { defineProps } from "../props/helpers";
5
- import { string, urlOrPageIdRef } from "../props/string";
6
- import type { BrickProps } from "../props/types";
7
- import { borderRef, roundingRef } from "../props/border";
8
- import { fontSizeRef } from "../props/text";
9
- import { colorPresetRef } from "../props/color-preset";
5
+ import { urlOrPageId } from "../props/string";
6
+ import { rounding } from "../props/border";
7
+ import { StringEnum } from "~/shared/utils/string-enum";
8
+ import { fontSize } from "../props/text";
9
+ import { colorPreset } from "../props/color-preset";
10
10
  import type { BrickExample } from "./_types";
11
11
 
12
12
  export const manifest = defineBrickManifest({
@@ -26,6 +26,7 @@ STYLING GUIDELINES:
26
26
  - colorPreset: Use "primary-500" for main CTAs, "secondary-500" for secondary actions, "neutral-500" for low-priority actions, "accent-500" for highlight actions
27
27
  - fontSize: "text-sm" for compact buttons, "text-base" for standard, "text-lg" for emphasis, "text-xl" for hero buttons
28
28
  - rounding: "rounded-none" for sharp/modern, "rounded-md" for standard, "rounded-lg" for friendly, "rounded-full" for pills
29
+ - fill: Use "solid" for primary actions with background color, "outline" for secondary actions with transparent background and border
29
30
  - link: Use full URLs for external (https://example.com), relative paths for internal (/about), or page IDs for site pages (about-us)
30
31
 
31
32
  DYNAMIC CONTENT:
@@ -48,15 +49,15 @@ AVOID:
48
49
  props: defineProps(
49
50
  {
50
51
  colorPreset: Type.Optional(
51
- colorPresetRef({
52
+ colorPreset({
52
53
  default: { color: "primary-500" },
53
54
  title: "Color",
54
55
  "ui:default-gradient-direction": "bg-gradient-to-b",
55
56
  }),
56
57
  ),
57
- label: string("Label", { default: "My button", metadata: { category: "content" } }),
58
+ label: Type.String({ title: "Label", default: "My button", metadata: { category: "content" } }),
58
59
  fontSize: Type.Optional(
59
- fontSizeRef({
60
+ fontSize({
60
61
  title: "Font size",
61
62
  description: "The font size of the button text.",
62
63
  default: "text-base",
@@ -65,12 +66,21 @@ AVOID:
65
66
  }),
66
67
  ),
67
68
  rounding: Type.Optional(
68
- roundingRef({
69
+ rounding({
69
70
  default: "rounded-md",
70
71
  }),
71
72
  ),
72
- border: Type.Optional(borderRef({ default: { width: "border-0" }, "ui:responsive": "desktop" })),
73
- link: urlOrPageIdRef({
73
+ fill: Type.Optional(
74
+ StringEnum(["solid", "outline"], {
75
+ title: "Fill",
76
+ description: "Button appearance style - solid background or outlined.",
77
+ default: "solid",
78
+ enumNames: ["Solid", "Outline"],
79
+ "ui:field": "enum",
80
+ "ui:display": "select",
81
+ }),
82
+ ),
83
+ link: urlOrPageId({
74
84
  title: "Link",
75
85
  "ui:placeholder": "https://example.com",
76
86
  metadata: { category: "content" },
@@ -93,6 +103,7 @@ export const examples: BrickExample<Manifest>[] = [
93
103
  colorPreset: { color: "primary-500" },
94
104
  fontSize: "text-base",
95
105
  rounding: "rounded-md",
106
+ fill: "solid",
96
107
  },
97
108
  },
98
109
  {
@@ -104,6 +115,7 @@ export const examples: BrickExample<Manifest>[] = [
104
115
  colorPreset: { color: "secondary-500" },
105
116
  fontSize: "text-base",
106
117
  rounding: "rounded-md",
118
+ fill: "outline",
107
119
  },
108
120
  },
109
121
  {
@@ -150,7 +162,7 @@ export const examples: BrickExample<Manifest>[] = [
150
162
  colorPreset: { color: "secondary-600" },
151
163
  fontSize: "text-base",
152
164
  rounding: "rounded-lg",
153
- border: { width: "border", color: "border-secondary-800" },
165
+ fill: "outline",
154
166
  },
155
167
  },
156
168
 
@@ -188,7 +200,7 @@ export const examples: BrickExample<Manifest>[] = [
188
200
  colorPreset: { color: "primary-600" },
189
201
  fontSize: "text-base",
190
202
  rounding: "rounded-md",
191
- border: { width: "border", color: "border-primary-800" },
203
+ fill: "outline",
192
204
  },
193
205
  },
194
206
  {
@@ -235,7 +247,7 @@ export const examples: BrickExample<Manifest>[] = [
235
247
  colorPreset: { color: "primary-600" },
236
248
  fontSize: "text-xl",
237
249
  rounding: "rounded-xl",
238
- border: { width: "border-2", color: "border-primary-800" },
250
+ fill: "outline",
239
251
  },
240
252
  },
241
253
  {
@@ -258,7 +270,7 @@ export const examples: BrickExample<Manifest>[] = [
258
270
  colorPreset: { color: "primary-500" },
259
271
  fontSize: "text-base",
260
272
  rounding: "rounded-none",
261
- border: { width: "border-2", color: "border-primary-700" },
273
+ fill: "outline",
262
274
  },
263
275
  },
264
276
 
@@ -289,7 +301,33 @@ export const examples: BrickExample<Manifest>[] = [
289
301
  },
290
302
  fontSize: "text-base",
291
303
  rounding: "rounded-md",
292
- border: { width: "border", color: "border-accent-800" },
304
+ fill: "outline",
305
+ },
306
+ },
307
+
308
+ // FILL STYLE COMPARISON EXAMPLES
309
+ {
310
+ description: "Solid fill button - Traditional filled background style",
311
+ type: "button",
312
+ props: {
313
+ label: "Solid Button",
314
+ link: "/solid",
315
+ colorPreset: { color: "primary-500" },
316
+ fontSize: "text-base",
317
+ rounding: "rounded-md",
318
+ fill: "solid",
319
+ },
320
+ },
321
+ {
322
+ description: "Outline fill button - Transparent background with border",
323
+ type: "button",
324
+ props: {
325
+ label: "Outline Button",
326
+ link: "/outline",
327
+ colorPreset: { color: "primary-500" },
328
+ fontSize: "text-base",
329
+ rounding: "rounded-md",
330
+ fill: "outline",
293
331
  },
294
332
  },
295
333
  ];
@@ -1,24 +1,33 @@
1
1
  import { defineBrickManifest } from "~/shared/brick-manifest";
2
2
  import { defineProps } from "../props/helpers";
3
- import { textContentRef } from "../props/text";
3
+ import { textContent } from "../props/text";
4
4
  import { BsCardText } from "react-icons/bs";
5
- import { imageRef } from "../props/image";
5
+ import { image } from "../props/image";
6
6
  import { type Static, Type } from "@sinclair/typebox";
7
7
  import type { BrickProps } from "../props/types";
8
- import { shadowRef } from "../props/effects";
9
- import { borderRef, roundingRef } from "../props/border";
10
- import { colorPresetRef } from "../props/color-preset";
11
- import { loopRef } from "../props/dynamic";
8
+ import { shadow } from "../props/effects";
9
+ import { border, rounding } from "../props/border";
10
+ import { colorPreset } from "../props/color-preset";
11
+ import { loop } from "../props/dynamic";
12
12
  import { StringEnum } from "~/shared/utils/string-enum";
13
- import { urlOrPageIdRef } from "../props/string";
13
+ import { urlOrPageId } from "../props/string";
14
14
  import type { BrickExample } from "./_types";
15
+ import { grow } from "../props/grow";
15
16
 
16
17
  export const manifest = defineBrickManifest({
17
18
  type: "card",
18
19
  name: "Card",
19
- description: "A card that can have a title, image, and content.",
20
- aiInstructions:
21
- "Use this brick to create visually distinct content blocks (product, feature, testimonial, event, article, CTA, etc.).\n\nGuidelines:\n- Button is REQUIRED. Always provide a short action label (1–3 words) and pick a color matching semantic weight (primary/accent for primary actions, neutral/secondary for low emphasis).\n- Image is OPTIONAL. If present you may set imagePosition to top | middle | bottom. Default is top. Pick middle for vertically centered feature highlights, bottom for caption-first layouts.\n- Set noTitle: true when the card is intentionally title-less (e.g. a quote card or pure media focus). Do NOT include an empty title string alongside noTitle.\n- Use dynamic tokens (e.g. {{products.price}}) instead of duplicating literal values.\n- Prefer gradient presets for more visual emphasis (e.g. primary-gradient-400 with gradientDirection).\n- border + rounding + shadow should be cohesive: stronger borders pair well with larger rounding + moderate shadow; minimal / flat cards may use border-0 + no shadow.\n- For internal navigation you can supply a page ID (e.g. 'about') OR a relative/absolute URL (e.g. '/pricing', 'https://example.com').\n- Keep HTML inside text minimal (<strong>, <em>, <br>) — for richer structure consider multiple bricks instead.\n- Avoid mixing noTitle with large heading text embedded inside the text field — in that case keep a proper title.\n\nReturn ONLY valid properties defined in the schema; do not invent new ones.",
20
+ description: "A card that can have a title, image, content, and button.",
21
+ aiInstructions: `Use this brick to create visually distinct content blocks (product, feature, event, article, blog post, etc.).
22
+
23
+ Guidelines:
24
+ - Always provide a short button label (1-3 words) and pick a color matching semantic weight (primary/accent for primary actions, neutral/secondary for low emphasis).
25
+ - Set noTitle: true when the card is intentionally title-less (e.g. a quote card or pure media focus).
26
+ - Use dynamic tokens (e.g. {{products.price}}) instead of duplicating literal values.
27
+ - border + rounding + shadow should be cohesive: stronger borders pair well with larger rounding + moderate shadow; minimal / flat cards may use border-0 + no shadow.
28
+ - For internal navigation, always supply a page ID (e.g. 'about') instead of a full URL. Use placeholders like {{page.$slug}} for dynamic page links.
29
+ - Keep HTML inside text minimal (<strong>, <em>, <br>, <p>) — for richer structure consider multiple bricks instead.
30
+ - Avoid mixing noTitle with large heading text embedded inside the text field — in that case keep a proper title.`,
22
31
  icon: BsCardText,
23
32
  defaultWidth: { desktop: "400px", mobile: "100%" },
24
33
  minWidth: { desktop: 300 },
@@ -26,14 +35,13 @@ export const manifest = defineBrickManifest({
26
35
  maxWidth: { desktop: 650 },
27
36
  props: defineProps({
28
37
  colorPreset: Type.Optional(
29
- colorPresetRef({
38
+ colorPreset({
30
39
  title: "Color preset",
31
40
  default: { color: "base-100" },
32
41
  }),
33
42
  ),
34
-
35
43
  cardImage: Type.Optional(
36
- imageRef({
44
+ image({
37
45
  "ui:responsive": "desktop",
38
46
  metadata: {
39
47
  category: "content",
@@ -63,24 +71,24 @@ export const manifest = defineBrickManifest({
63
71
  "ui:responsive": "desktop",
64
72
  }),
65
73
  ),
66
- title: Type.Optional(textContentRef({ title: "Title" })),
67
- text: Type.Optional(textContentRef({ title: "Text" })),
74
+ title: Type.Optional(textContent({ title: "Title" })),
75
+ text: Type.Optional(textContent({ title: "Text" })),
68
76
  rounding: Type.Optional(
69
- roundingRef({
77
+ rounding({
70
78
  default: "rounded-md",
71
79
  }),
72
80
  ),
73
81
  border: Type.Optional(
74
- borderRef({
82
+ border({
75
83
  // default: { width: "border", color: "border-base-300" },
76
84
  }),
77
85
  ),
78
86
  shadow: Type.Optional(
79
- shadowRef({
87
+ shadow({
80
88
  default: "shadow-sm",
81
89
  }),
82
90
  ),
83
- loop: Type.Optional(loopRef()),
91
+ loop: Type.Optional(loop()),
84
92
  button: Type.Object(
85
93
  {
86
94
  label: Type.String({
@@ -91,7 +99,7 @@ export const manifest = defineBrickManifest({
91
99
  category: "content",
92
100
  },
93
101
  }),
94
- url: urlOrPageIdRef({
102
+ url: urlOrPageId({
95
103
  title: "Button URL",
96
104
  description: "The URL the button should link to.",
97
105
  metadata: {
@@ -108,6 +116,11 @@ export const manifest = defineBrickManifest({
108
116
  },
109
117
  { title: "Button", description: "Button displayed at the bottom of the card" },
110
118
  ),
119
+ grow: Type.Optional(
120
+ grow({
121
+ default: true,
122
+ }),
123
+ ),
111
124
  }),
112
125
  });
113
126
 
@@ -174,7 +187,7 @@ export const examples: BrickExample<Manifest>[] = [
174
187
  },
175
188
  // INTERNAL PAGE ID LINK VARIANT
176
189
  {
177
- description: "Internal navigation card using a page ID instead of a URL",
190
+ description: "Internal navigation card using a page ID for the button URL (page id = 'about')",
178
191
  type: "card",
179
192
  props: {
180
193
  title: "About Our Mission",
@@ -186,7 +199,8 @@ export const examples: BrickExample<Manifest>[] = [
186
199
  },
187
200
  // GRADIENT & STRONG BORDER VARIANT
188
201
  {
189
- description: "High-emphasis promotional card using gradient background and thick border",
202
+ description:
203
+ "High-emphasis promotional card using gradient background and thick border, linking to the page with id 'pricing-page'",
190
204
  type: "card",
191
205
  props: {
192
206
  title: "Limited Time Offer",
@@ -195,37 +209,24 @@ export const examples: BrickExample<Manifest>[] = [
195
209
  border: { width: "border-4", color: "border-primary-400" },
196
210
  rounding: "rounded-xl",
197
211
  shadow: "shadow-lg",
198
- button: { label: "Upgrade", url: "/pricing", color: "btn-accent" },
212
+ button: { label: "Upgrade", url: "pricing-page", color: "btn-accent" },
199
213
  },
200
214
  },
201
215
  // MINIMAL / FLAT VARIANT (no border, no shadow, subtle preset)
202
216
  {
203
- description: "Minimal flat information card (border-0, no shadow)",
217
+ description:
218
+ "Minimal flat information card (border-0, no shadow) linking to the page with id 'status-page'",
204
219
  type: "card",
205
220
  props: {
206
221
  title: "Maintenance Window",
207
222
  text: "Scheduled maintenance on Saturday 02:00–03:00 UTC. API responses may be delayed.",
208
223
  colorPreset: { color: "neutral-50" },
209
224
  border: { width: "border-0", color: "border-neutral-200" },
210
- button: { label: "Status Page", url: "/status", color: "btn-neutral" },
211
- },
212
- },
213
- // DARK / INVERTED VARIANT
214
- {
215
- description: "Dark themed spotlight card (primary-800 background)",
216
- type: "card",
217
- props: {
218
- title: "Night Mode Preview",
219
- text: "Experience the new adaptive dark theme optimized for low ambient light environments.",
220
- colorPreset: { color: "primary-800" },
221
- border: { width: "border", color: "border-primary-600" },
222
- rounding: "rounded-lg",
223
- shadow: "shadow-md",
224
- button: { label: "Preview", url: "/themes/dark", color: "btn-primary" },
225
+ button: { label: "Status Page", url: "status-page", color: "btn-neutral" },
225
226
  },
226
227
  },
227
228
  {
228
- description: "Feature card with large padding and background",
229
+ description: "Feature card with large padding and background, linking to a dynamic product page",
229
230
  type: "card",
230
231
  props: {
231
232
  title: "Key Feature",
@@ -236,13 +237,13 @@ export const examples: BrickExample<Manifest>[] = [
236
237
  shadow: "shadow-sm",
237
238
  button: {
238
239
  label: "Discover More",
239
- url: "/features",
240
+ url: "/product/{{ product.$slug }}",
240
241
  color: "btn-primary",
241
242
  },
242
243
  },
243
244
  },
244
245
  {
245
- description: "Blog post card with image at the bottom",
246
+ description: "Blog post card with image at the bottom, linking to a dynamic blog post",
246
247
  type: "card",
247
248
  props: {
248
249
  title: "Future of Tech",
@@ -256,65 +257,8 @@ export const examples: BrickExample<Manifest>[] = [
256
257
  url: "/blog/{{ blogPosts.$slug }}",
257
258
  color: "btn-primary",
258
259
  },
259
- },
260
- },
261
- {
262
- description: "Minimal centered card without image",
263
- type: "card",
264
- props: {
265
- title: "Simple Announcement",
266
- text: "Important updates will be posted here regularly.",
267
- button: {
268
- label: "View Updates",
269
- url: "/updates",
270
- color: "btn-neutral",
271
- },
272
- },
273
- },
274
- {
275
- description: "Event card with multiple variants",
276
- type: "card",
277
- props: {
278
- cardImage: {
279
- src: "https://via.placeholder.com/400x250",
280
- alt: "Event venue",
281
- },
282
- title: "Annual Conference 2025",
283
- text: "Join us for three days of inspiring talks, networking opportunities, and hands-on workshops.",
284
- button: {
285
- label: "Register Now",
286
- url: "/events/conference-2025",
287
- color: "btn-primary",
288
- },
289
- },
290
- },
291
- {
292
- description: "News article card with compact layout",
293
- type: "card",
294
- props: {
295
- cardImage: {
296
- src: "https://via.placeholder.com/120x120",
297
- alt: "News thumbnail",
298
- },
299
- title: "Breaking News Update",
300
- text: "Latest developments in the ongoing story with expert analysis and community reactions.",
301
- button: {
302
- label: "Read Full Article",
303
- url: "/news/breaking-update",
304
- color: "btn-secondary",
305
- },
306
- },
307
- },
308
- {
309
- description: "Call-to-action card with prominent styling",
310
- type: "card",
311
- props: {
312
- title: "Get Started Today",
313
- text: "Transform your workflow with our powerful tools. Sign up now and get 30 days free!",
314
- button: {
315
- label: "Sign Up Now",
316
- url: "/signup",
317
- color: "btn-primary",
260
+ loop: {
261
+ over: "blogPosts",
318
262
  },
319
263
  },
320
264
  },
@@ -416,77 +360,4 @@ export const examples: BrickExample<Manifest>[] = [
416
360
  },
417
361
  },
418
362
  },
419
- {
420
- description: "Testimonial card using customerReviews query with ratings",
421
- type: "card",
422
- props: {
423
- cardImage: {
424
- src: "{{customerReviews.customerPhoto}}",
425
- alt: "{{customerReviews.customerName}}",
426
- },
427
- imagePosition: "top",
428
- title: "{{customerReviews.customerName}}",
429
- text: '"{{customerReviews.review}}"<br><br><strong>Rating: {{customerReviews.rating}}/5 stars</strong><br>{{customerReviews.company}} • {{customerReviews.position}}',
430
- colorPreset: { color: "neutral-50" },
431
- rounding: "rounded-xl",
432
- shadow: "shadow-lg",
433
- button: {
434
- label: "See All Reviews",
435
- url: "/reviews",
436
- color: "btn-neutral",
437
- },
438
- loop: {
439
- over: "customerReviews",
440
- },
441
- },
442
- },
443
- {
444
- description: "Service offering card using companyServices query with pricing tiers",
445
- type: "card",
446
- props: {
447
- cardImage: {
448
- src: "{{companyServices.icon}}",
449
- alt: "{{companyServices.serviceName}}",
450
- },
451
- imagePosition: "top",
452
- title: "{{companyServices.serviceName}}",
453
- text: "{{companyServices.description}}<br><br><strong>Starting at ${{companyServices.startingPrice}}</strong><br>Duration: {{companyServices.duration}}<br>Includes: {{companyServices.features}}",
454
- colorPreset: { color: "primary-100" },
455
- border: { width: "border", color: "border-primary-300" },
456
- rounding: "rounded-lg",
457
- shadow: "shadow-md",
458
- button: {
459
- label: "Learn More",
460
- url: "{{companyServices.detailsUrl}}",
461
- color: "btn-primary",
462
- },
463
- loop: {
464
- over: "companyServices",
465
- },
466
- },
467
- },
468
- {
469
- description: "Portfolio project card using portfolioWork query with project details",
470
- type: "card",
471
- props: {
472
- cardImage: {
473
- src: "{{portfolioWork.thumbnail}}",
474
- alt: "{{portfolioWork.projectName}}",
475
- },
476
- imagePosition: "top",
477
- title: "{{portfolioWork.projectName}}",
478
- text: "<strong>Client:</strong> {{portfolioWork.clientName}}<br><strong>Year:</strong> {{portfolioWork.year}}<br><strong>Category:</strong> {{portfolioWork.category}}<br><br>{{portfolioWork.description}}",
479
- colorPreset: { color: "secondary-100" },
480
- rounding: "rounded-md",
481
- shadow: "shadow-sm",
482
- button: {
483
- label: "View Project",
484
- url: "{{portfolioWork.projectUrl}}",
485
- color: "btn-secondary",
486
- },
487
- loop: {
488
- over: "portfolioWork",
489
- },
490
- },
491
- },
492
363
  ];
@@ -2,13 +2,11 @@ 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";
12
10
  import type { BrickExample } from "./_types";
13
11
 
14
12
  export const manifest = defineBrickManifest({
@@ -69,12 +67,12 @@ AVOID:
69
67
  icon: TbCarouselHorizontal,
70
68
  props: defineProps({
71
69
  colorPreset: Type.Optional(
72
- colorPresetRef({
70
+ colorPreset({
73
71
  title: "Color",
74
72
  }),
75
73
  ),
76
74
  padding: Type.Optional(
77
- cssLengthRef({
75
+ cssLength({
78
76
  default: "1rem",
79
77
  description: "Padding inside the carousel.",
80
78
  "ai:instructions": "Use only a single value like '1rem' or '10px'",
@@ -87,12 +85,12 @@ AVOID:
87
85
  images: Type.Optional(
88
86
  Type.Array(
89
87
  Type.Object({
90
- src: imageRef({
88
+ src: image({
91
89
  "ui:responsive": "desktop",
92
90
  "ui:no-alt-text": true,
93
91
  "ui:no-object-options": true,
94
92
  }),
95
- legend: string("Legend"),
93
+ legend: Type.String({ title: "Legend" }),
96
94
  }),
97
95
  {
98
96
  title: "Images",
@@ -105,11 +103,11 @@ AVOID:
105
103
  ),
106
104
  ),
107
105
  borderRadius: Type.Optional(
108
- roundingRef({
106
+ rounding({
109
107
  default: "rounded-md",
110
108
  }),
111
109
  ),
112
- loop: Type.Optional(loopRef()),
110
+ loop: Type.Optional(loop()),
113
111
  }),
114
112
  });
115
113