@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
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/shared/bricks/props/dynamic.ts","../../src/shared/datasources/types.ts","../../src/shared/utils/llm.ts","../../src/shared/utils/schema-registry.ts"],"sourcesContent":["import { typedRef } from \"~/shared/utils/typed-ref\";\nimport { type ObjectOptions, Type, type Static } from \"@sinclair/typebox\";\nimport { queryFilter } from \"~/shared/datasources/types\";\n\nexport function queryUse() {\n return Type.Object(\n {\n queryId: Type.String({\n description: \"The Site Query ID to use.\",\n }),\n alias: Type.String({\n title: \"Alias\",\n minLength: 1,\n maxLength: 100,\n pattern: \"^[a-zA-Z0-9_]+$\",\n description:\n \"Alias for the query results, used in dynamic content. Use a simple keyword without spaces or special characters. Aliases are unique across the page.\",\n \"ai:instructions\":\n \"Use a simple keyword without spaces or special characters. Aliases are unique across the page. You can use the same query several times with different aliases in order to, for example, apply different parameters to the same query.\",\n }),\n params: Type.Optional(\n Type.Array(queryFilter, {\n description:\n \"Additional query parameters/filters to apply to the query. One can use placeholders in values like ':slug' to reference URL parameters.\",\n title: \"Query Parameters\",\n default: [],\n }),\n ),\n },\n {\n title: \"Query\",\n description:\n \"When set, this brick will loop through the results of the query and render the content for each item.\",\n // $id: \"content:queryUse\",\n \"ui:field\": \"query\",\n metadata: {\n category: \"content\",\n },\n examples: [\n { queryId: \"get-latest-posts\", alias: \"latestPosts\" },\n {\n queryId: \"get-user-profile\",\n alias: \"userProfile\",\n params: [{ field: \"userId\", op: \"eq\", value: \":slug\" }],\n },\n {\n queryId: \"get-posts-by-category\",\n alias: \"postsByCategory\",\n params: [{ field: \"category\", op: \"eq\", value: \":slug\" }],\n },\n ],\n },\n );\n}\n\nexport const queryUseSchema = queryUseRef();\n\nexport type QueryUseSettings = Static<ReturnType<typeof queryUse>>;\n\nexport function queryUseRef(options: ObjectOptions = {}) {\n return typedRef(\"content:queryUse\", options);\n}\n\nexport function loop(options: ObjectOptions = {}) {\n return Type.Object(\n {\n over: Type.String({\n title: \"Over\",\n description: \"The query alias to loop over. If not set, the brick will be rendered only once.\",\n \"ai:instructions\": \"Specify the Query Alias to loop over the results.\",\n }),\n overrideLimit: Type.Optional(\n Type.Number({\n minimum: 1,\n description:\n \"Override the limit of items to loop through. If not set, it will use the default limit of the query. If set to 1, it will not loop and will render only the first item.\",\n }),\n ),\n },\n {\n // $id: \"content:loop\",\n title: \"Repeat over\",\n description: \"Repeat this brick for each item in the specified query results.\",\n \"ui:field\": \"loop\",\n \"ui:hidden-if\": \"no-page-queries\",\n metadata: {\n category: \"content\",\n },\n examples: [\n {\n over: \"latestBlogPosts\",\n overrideLimit: 5,\n },\n {\n over: \"featuredProducts\",\n overrideLimit: 3,\n },\n {\n over: \"popularProducts\",\n },\n ],\n ...options,\n },\n );\n}\n\nexport type LoopSettings = Static<ReturnType<typeof loop>>;\n\nexport function loopRef(options: ObjectOptions = {}) {\n return typedRef(\"content:loop\", options);\n}\n","import { Type, type Static } from \"@sinclair/typebox\";\nimport { StringEnum } from \"../utils/string-enum\";\nimport { toLLMSchema } from \"../utils/llm\";\n\nexport const providersSchema = Type.Union([\n // Type.Literal(\"facebook-posts\"),\n // Type.Literal(\"instagram-feed\"),\n // Type.Literal(\"mastodon-account\"),\n // Type.Literal(\"mastodon-status\"),\n // Type.Literal(\"mastodon-status-list\"),\n Type.Literal(\"internal\"),\n // Type.Literal(\"rss\"),\n // // Type.Literal(\"threads-media\"),\n // // Type.Literal(\"tiktok-video\"),\n // Type.Literal(\"youtube-list\"),\n // Type.Literal(\"http-json\"),\n // Type.Literal(\"internal-blog\"),\n // Type.Literal(\"internal-changelog\"),\n // // Type.Literal(\"internal-contact-info\"),\n // Type.Literal(\"internal-faq\"),\n // Type.Literal(\"internal-links\"),\n // Type.Literal(\"internal-recipes\"),\n // Type.Literal(\"internal-restaurant\"),\n // Type.Literal(\"internal-cv\"),\n]);\n\nexport type DatasourceProvider = Static<typeof providersSchema>;\n\n// const datasourceProviderManifest = Type.Composite([\n// Type.Object({\n// id: Type.String({\n// title: \"ID\",\n// description:\n// \"Unique identifier of the datasource. Used to reference the datasource in the system. Use a url-safe string like a slug.\",\n// }),\n// label: Type.String({ title: \"Label\", description: \"Label of the datasource displayed in the UI\" }),\n// schema: Type.Null({\n// description: \"Always null for provider datasources. The schema is defined by the provider.\",\n// }),\n// ttlMinutes: Type.Optional(\n// Type.Number({\n// title: \"Time to live\",\n// description:\n// \"Time to live in minutes. If set to -1, it never expires and has to be manually refreshed. If set to 0, the datasource is always fetched live. If > 0, then the datasource is feteched every N minutes.\",\n// }),\n// ),\n// refresh: Type.Optional(\n// Type.Object(\n// {\n// method: Type.Union([Type.Literal(\"interval\"), Type.Literal(\"manual\"), Type.Literal(\"live\")]),\n// interval: Type.Optional(Type.Number()),\n// },\n// {\n// title: \"Refresh options\",\n// description: \"Options to refresh the datasource\",\n// },\n// ),\n// ),\n// }),\n// ]);\n\n// export type DatasourceProviderManifest = Static<typeof datasourceProviderManifest>;\n\nconst datasourceInternalManifest = Type.Object(\n {\n id: Type.String({\n title: \"ID\",\n description:\n \"Unique identifier of the datasource. Used to reference the datasource in the system. Use a url-safe string like a slug.\",\n }),\n label: Type.String({ title: \"Label\", description: \"Label of the datasource displayed in the UI\" }),\n provider: Type.Literal(\"internal\", {\n title: \"Internal\",\n description: \"Internal datasource saved locally in Upstart.\",\n }),\n schema: Type.Any({\n title: \"Schema\",\n description: \"JSON Schema of datasource. MUST Always an array of objects.\",\n }),\n indexes: Type.Optional(\n Type.Array(\n Type.Object({\n name: Type.String({ title: \"Index name\" }),\n fields: Type.Array(Type.String(), { title: \"Fields to index\" }),\n unique: Type.Optional(Type.Boolean({ title: \"Unique index\", default: false })),\n }),\n {\n title: \"Indexes\",\n description:\n \"IMPORTANT: Indexes to create on the datasource. use it to enforce uniqueness or improve query performance.\",\n },\n ),\n ),\n },\n {\n examples: [\n {\n id: \"customers\",\n label: \"Customers\",\n provider: \"internal\",\n schema: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\", title: \"Name\" },\n email: { type: \"string\", title: \"Email\", format: \"email\" },\n },\n required: [\"name\", \"email\"],\n title: \"Customer\",\n examples: [\n { name: \"John Doe\", email: \"john.doe@example.com\" },\n {\n name: \"Jane Smith\",\n email: \"jane.smith@example.com\",\n },\n {\n name: \"Alice Johnson\",\n email: \"alice.johnson@example.com\",\n },\n {\n name: \"Bob Brown\",\n email: \"bob.brown@example.com\",\n },\n {\n name: \"Charlie Davis\",\n email: \"charlie.davis@example.com\",\n },\n ],\n },\n },\n indexes: [\n {\n name: \"idx_customers_email\",\n fields: [\"email\"],\n unique: true,\n },\n ],\n },\n {\n id: \"blog_posts\",\n label: \"Blog Posts\",\n provider: \"internal\",\n schema: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n title: { type: \"string\", title: \"Title\" },\n content: { type: \"string\", title: \"Content\" },\n author: { type: \"string\", title: \"Author\" },\n },\n required: [\"title\", \"content\", \"author\"],\n title: \"Blog Post\",\n examples: [\n {\n title: \"My First Blog Post\",\n content: \"This is the content of my first blog post.\",\n author: \"John Doe\",\n },\n {\n title: \"Exploring the Cosmos\",\n content: \"A journey through the stars and galaxies.\",\n author: \"Jane Smith\",\n },\n {\n title: \"The Art of Cooking\",\n content: \"Delicious recipes and cooking tips.\",\n author: \"Alice Johnson\",\n },\n {\n title: \"Traveling the World\",\n content: \"My adventures in different countries.\",\n author: \"Bob Brown\",\n },\n {\n title: \"Technology Trends\",\n content: \"The latest trends in technology.\",\n author: \"Charlie Davis\",\n },\n ],\n },\n },\n indexes: [\n {\n name: \"idx_blog_posts_title\",\n fields: [\"title\"],\n unique: true,\n },\n ],\n },\n ],\n },\n);\n\nexport type InternalDatasource = Static<typeof datasourceInternalManifest>;\n\n// const datasourceJsonManifest = Type.Composite([\n// datasourceBaseFields,\n// Type.Object({\n// provider: Type.Literal(\"http-json\", {\n// title: \"JSON Array\",\n// description: \"JSON array datasource.\",\n// }),\n// options: httpJsonOptions,\n// schema: Type.Any({\n// title: \"Schema\",\n// description: \"JSON Schema of datasource. Always an array of objects.\",\n// examples: [\n// {\n// type: \"array\",\n// items: {\n// type: \"object\",\n// properties: {\n// id: { type: \"string\", title: \"ID\" },\n// title: { type: \"string\", title: \"Title\" },\n// firstname: { type: \"string\", title: \"Firstname\" },\n// lastname: { type: \"string\", title: \"Lastname\" },\n// createdAt: { type: \"string\", format: \"date-time\", title: \"Created at\" },\n// email: { type: \"string\", format: \"email\", title: \"Email\" },\n// },\n// required: [\"id\", \"title\", \"firstname\", \"lastname\", \"email\", \"createdAt\"],\n// title: \"Employee\",\n// },\n// title: \"Employees\",\n// description: \"Employees list\",\n// },\n// ],\n// }),\n// }),\n// ]);\n\n// type DatasourceJsonArrayManifest = Static<typeof datasourceJsonManifest>;\n\n// Fow now, let support only custom (internal) datasource\n// export const datasourceManifest = datasourceCustomManifest;\nexport const datasourceManifest = datasourceInternalManifest;\nexport const datasourceManifestLLM = toLLMSchema(datasourceManifest);\n\nexport type Datasource = Static<typeof datasourceManifest>;\nexport const datasourcesList = Type.Array(datasourceManifest);\nexport type DatasourcesList = Static<typeof datasourcesList>;\n\nconst stringFilter = Type.Object({\n field: Type.String(),\n op: Type.Union([\n Type.Literal(\"eq\"),\n Type.Literal(\"ne\"),\n Type.Literal(\"contains\"),\n Type.Literal(\"notContains\"),\n Type.Literal(\"startsWith\"),\n Type.Literal(\"notStartsWith\"),\n Type.Literal(\"endsWith\"),\n Type.Literal(\"notEndsWith\"),\n ]),\n value: Type.String(),\n});\n\nconst numberFilter = Type.Object({\n field: Type.String(),\n op: Type.Union([\n Type.Literal(\"eq\"),\n Type.Literal(\"ne\"),\n Type.Literal(\"lt\"),\n Type.Literal(\"lte\"),\n Type.Literal(\"gt\"),\n Type.Literal(\"gte\"),\n ]),\n value: Type.Number(),\n});\n\nconst dateFilterAbsolute = Type.Object({\n field: Type.String(),\n op: Type.Union([Type.Literal(\"before\"), Type.Literal(\"after\")]),\n value: Type.String(),\n});\n\nconst dateFilterRelative = Type.Object({\n field: Type.String(),\n op: Type.Union([Type.Literal(\"beforeNow\"), Type.Literal(\"afterNow\")]),\n value: Type.Null(),\n});\n\nconst arrayFilter = Type.Object({\n field: Type.String(),\n op: Type.Union([\n Type.Literal(\"contains\"),\n Type.Literal(\"notContains\"),\n Type.Literal(\"containsAll\"),\n Type.Literal(\"containsAny\"),\n Type.Literal(\"notContainsAny\"),\n ]),\n value: Type.Array(Type.String()),\n});\n\nconst booleanFilter = Type.Object({\n field: Type.String(),\n op: Type.Literal(\"eq\"),\n value: Type.Boolean(),\n});\n\nexport const queryFilter = Type.Union([\n stringFilter,\n numberFilter,\n dateFilterAbsolute,\n dateFilterRelative,\n arrayFilter,\n booleanFilter,\n]);\n\nconst filterExpression = Type.Recursive(\n (This) =>\n Type.Union(\n [\n Type.Object({\n op: Type.Literal(\"and\"),\n fields: Type.Array(Type.Union([queryFilter, This]), { title: \"Indexed Fields\" }),\n }),\n Type.Object({\n op: Type.Literal(\"or\"),\n fields: Type.Array(Type.Union([queryFilter, This])),\n }),\n ],\n {\n default: {\n op: \"and\",\n fields: [],\n },\n examples: [\n {\n op: \"and\",\n fields: [\n {\n field: \"$id\",\n op: \"eq\",\n value: \"123\",\n },\n {\n field: \"$publicationDate\",\n op: \"beforeNow\",\n },\n ],\n },\n ],\n },\n ),\n {\n title: \"Filter Expression\",\n description: \"Expression used to filter query results. Can be a combination of and/or conditions.\",\n },\n);\n\nexport const querySchema = Type.Object(\n {\n id: Type.String({\n title: \"Query ID\",\n description:\n \"Unique identifier for the query. Used to reference the query in the system. URL-safe string like a slug.\",\n }),\n label: Type.String({\n title: \"Label\",\n maxLength: 100,\n description: \"Label of the query displayed in the UI\",\n }),\n datasourceId: Type.String({\n title: \"Database\",\n description: \"ID of the datasource to query\",\n }),\n limit: Type.Number({\n title: \"Limit\",\n description: \"Limit the number of records to fetch from the datasource.\",\n minimum: 1,\n default: 10,\n }),\n sortDirection: Type.Optional(\n StringEnum([\"asc\", \"desc\"], {\n title: \"Sort\",\n enumNames: [\"Ascending\", \"Descending\"],\n description: \"Direction to sort the records by\",\n default: \"desc\",\n }),\n ),\n sortField: Type.Optional(\n Type.String({\n title: \"Sort Field\",\n description: \"Field to sort by (must be an indexed field)\",\n default: \"$publicationDate\",\n }),\n ),\n filters: Type.Optional(filterExpression),\n parameters: Type.Optional(\n Type.Array(\n Type.Object({\n field: Type.String({ title: \"Field\", description: \"Field name to use as parameter\" }),\n op: Type.Union(\n [\n Type.Literal(\"eq\"),\n Type.Literal(\"ne\"),\n Type.Literal(\"contains\"),\n Type.Literal(\"notContains\"),\n Type.Literal(\"startsWith\"),\n Type.Literal(\"notStartsWith\"),\n Type.Literal(\"endsWith\"),\n Type.Literal(\"notEndsWith\"),\n Type.Literal(\"lt\"),\n Type.Literal(\"lte\"),\n Type.Literal(\"gt\"),\n Type.Literal(\"gte\"),\n Type.Literal(\"before\"),\n Type.Literal(\"after\"),\n Type.Literal(\"beforeNow\"),\n Type.Literal(\"afterNow\"),\n Type.Literal(\"containsAll\"),\n Type.Literal(\"containsAny\"),\n Type.Literal(\"notContainsAny\"),\n ],\n { title: \"Operator\", description: \"Operator to use for the parameter\" },\n ),\n }),\n {\n title: \"Parameters\",\n description:\n \"Field name and operator that will be used as parameters when using the query in pages. Only indexed fields can be used as parameters.\",\n default: [],\n examples: [\n [{ field: \"$slug\", op: \"eq\" }],\n [{ field: \"category\", op: \"eq\" }],\n [{ field: \"tags\", op: \"containsAny\" }],\n [{ field: \"author\", op: \"eq\" }],\n [{ field: \"title\", op: \"contains\" }],\n ],\n },\n ),\n ),\n },\n {\n examples: [\n {\n id: \"latest-posts\",\n label: \"Latest posts\",\n datasourceId: \"blog_posts\",\n limit: 5,\n sortDirection: \"desc\",\n sortField: \"$publicationDate\",\n },\n {\n id: \"posts-by-category\",\n label: \"Posts by category\",\n datasourceId: \"blog_posts\",\n limit: 10,\n sortDirection: \"desc\",\n sortField: \"$publicationDate\",\n parameters: [{ field: \"category\", op: \"eq\" }],\n },\n {\n id: \"posts-by-tag\",\n label: \"Posts by tag\",\n datasourceId: \"blog_posts\",\n limit: 10,\n sortDirection: \"desc\",\n sortField: \"$publicationDate\",\n parameters: [{ field: \"tags\", op: \"containsAny\" }],\n },\n {\n id: \"author-posts\",\n label: \"Author posts\",\n datasourceId: \"blog_posts\",\n limit: 10,\n sortDirection: \"desc\",\n sortField: \"$publicationDate\",\n parameters: [{ field: \"author\", op: \"eq\" }],\n },\n {\n id: \"search-posts\",\n label: \"Search posts\",\n datasourceId: \"blog_posts\",\n limit: 10,\n sortDirection: \"desc\",\n sortField: \"$publicationDate\",\n parameters: [{ field: \"title\", op: \"contains\" }],\n },\n ],\n },\n);\n\nexport type Query = Static<typeof querySchema>;\n","import type { TObject, TSchema } from \"@sinclair/typebox\";\nimport { createAJVInstance } from \"../ajv\";\nimport { cloneDeep } from \"lodash-es\";\nimport { schemaRegistry } from \"./schema-registry\";\n\n/**\n * Clean all properties from custom metadata recursively. Custom metadata are key that:\n * - Either with the name \"metadata\"\n * - Or starting with \"ui:\"\n * Also removes properties that have \"ai:hidden\" set to true\n */\nexport function toLLMSchema<T extends TSchema = TObject>(schema: T): T {\n return cleanSchemaRecursive(inlineSchemaRefs(schema)) as T;\n}\n\n/**\n * Recursively removes custom metadata from schema and filters out properties with ai:hidden = true\n */\nfunction cleanSchemaRecursive(schema: TSchema): TSchema {\n // Create a new object without custom metadata properties\n const cleaned: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(schema)) {\n // Skip metadata properties and ui: properties\n if (key === \"metadata\" || key.startsWith(\"ui:\")) {\n continue;\n }\n\n // Handle nested objects and arrays\n if (value && typeof value === \"object\") {\n if (Array.isArray(value)) {\n // Handle arrays - clean each item if it's a schema\n cleaned[key] = value.map((item) => {\n if (item && typeof item === \"object\" && isSchemaLike(item)) {\n return cleanSchemaRecursive(item as TSchema);\n }\n return item;\n });\n } else if (isSchemaLike(value)) {\n // Handle nested schemas\n cleaned[key] = cleanSchemaRecursive(value as TSchema);\n } else if (\n key === \"properties\" ||\n key === \"definitions\" ||\n key === \"$defs\" ||\n key === \"patternProperties\"\n ) {\n // Handle schema property collections - filter out properties with ai:hidden = true\n const cleanedProps: Record<string, TSchema> = {};\n for (const [propKey, propValue] of Object.entries(value)) {\n if (propValue && typeof propValue === \"object\") {\n // Check if this property should be hidden from AI\n const propSchema = propValue as Record<string, unknown>;\n if (propSchema[\"ai:hidden\"] === true) {\n continue; // Skip this property\n }\n cleanedProps[propKey] = cleanSchemaRecursive(propValue as TSchema);\n } else {\n cleanedProps[propKey] = propValue as TSchema;\n }\n }\n cleaned[key] = cleanedProps;\n } else {\n // For other objects, recursively clean if they look like schemas\n cleaned[key] = value;\n }\n } else {\n // Keep primitive values as-is\n cleaned[key] = value;\n }\n }\n\n return cleaned as TSchema;\n}\n\n/**\n * Helper function to determine if an object looks like a schema\n */\nfunction isSchemaLike(obj: unknown): boolean {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n\n const schemaKeys = [\n \"type\",\n \"$ref\",\n \"properties\",\n \"items\",\n \"anyOf\",\n \"oneOf\",\n \"allOf\",\n \"not\",\n \"if\",\n \"then\",\n \"else\",\n ];\n return schemaKeys.some((key) => key in obj);\n}\n\ninterface SchemaWithDefs extends TSchema {\n $defs?: Record<string, TSchema>;\n}\n\n/**\n * Inlines referenced schemas from AJV into the schema's $defs section\n * @param schema - The schema containing $ref references\n * @param ajv - The AJV instance containing the referenced schemas\n * @returns A new schema with references inlined in $defs\n */\nexport function inlineSchemaRefs<T extends TSchema>(schema: T) {\n //\n const inlinedSchema = cloneDeep(schema) as T & SchemaWithDefs;\n // const inlinedSchema = JSON.parse(JSON.stringify(schema)) as T & SchemaWithDefs;\n const collectedRefs = new Set<string>();\n\n // Initialize $defs if it doesn't exist\n if (!inlinedSchema.$defs) {\n inlinedSchema.$defs = {};\n }\n\n /**\n * Recursively traverse the schema to find all $ref references\n */\n function collectRefs(obj: unknown): void {\n if (typeof obj !== \"object\" || obj === null) return;\n\n if (Array.isArray(obj)) {\n obj.forEach(collectRefs);\n return;\n }\n\n for (const [key, value] of Object.entries(obj as Record<string, unknown>)) {\n if (key === \"$ref\" && typeof value === \"string\") {\n // Extract the schema ID from the reference\n if (!value.startsWith(\"#/\")) {\n collectedRefs.add(value);\n }\n } else {\n collectRefs(value);\n }\n }\n }\n\n /**\n * Convert external $ref to local $defs reference\n */\n function convertRefsToLocal(obj: unknown, refMap: Map<string, string>): unknown {\n if (typeof obj !== \"object\" || obj === null) return obj;\n\n if (Array.isArray(obj)) {\n return obj.map((item) => convertRefsToLocal(item, refMap));\n }\n\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj as Record<string, unknown>)) {\n if (key === \"$ref\" && typeof value === \"string\") {\n const localRef = refMap.get(value);\n result[key] = localRef || value;\n } else {\n result[key] = convertRefsToLocal(value, refMap);\n }\n }\n return result;\n }\n\n // Collect all references in the schema\n collectRefs(inlinedSchema);\n\n // Map to track original ref -> local def reference\n const refToLocalMap = new Map<string, string>();\n\n // Process each collected reference\n for (const refId of collectedRefs) {\n // Get the schema from the registry\n const referencedSchema = schemaRegistry.get(refId);\n\n if (!referencedSchema) {\n // console.error(`Schema with ID \"${refId}\" not found in schema registry`, { referencedSchema });\n // throw new Error(`Schema with ID \"${refId}\" not found in schema registry`);\n continue;\n }\n\n // Create a safe key for $defs (remove special characters, use last part of URI)\n const defKey =\n refId.replace(/[^a-zA-Z0-9_-]/g, \"_\").replace(/^_+|_+$/g, \"\") ||\n refId\n .split(\"/\")\n .pop()\n ?.replace(/[^a-zA-Z0-9_-]/g, \"_\") ||\n `ref_${Object.keys(inlinedSchema.$defs!).length}`;\n\n // Ensure unique key\n let uniqueDefKey = defKey;\n let counter = 1;\n while (inlinedSchema.$defs![uniqueDefKey]) {\n uniqueDefKey = `${defKey}_${counter}`;\n counter++;\n }\n\n // Add to $defs\n const { $id, ...schemaWithoutId } = referencedSchema;\n inlinedSchema.$defs![uniqueDefKey] = schemaWithoutId;\n\n // Map original reference to local reference\n refToLocalMap.set(refId, `#/$defs/${uniqueDefKey}`);\n }\n\n // Convert all external references to local $defs references\n const finalSchema = convertRefsToLocal(inlinedSchema, refToLocalMap) as T & SchemaWithDefs;\n\n // Recursively inline references in the newly added $defs schemas\n if (finalSchema.$defs) {\n // Keep processing until no new references are found\n let foundNewRefs = true;\n while (foundNewRefs) {\n foundNewRefs = false;\n const newRefsFound = new Set<string>();\n\n // Check each $defs schema for new references\n for (const [defKey, defSchema] of Object.entries(finalSchema.$defs)) {\n const defCollectedRefs = new Set<string>();\n\n // Collect refs specifically for this schema\n function collectDefsRefs(obj: unknown): void {\n if (typeof obj !== \"object\" || obj === null) return;\n\n if (Array.isArray(obj)) {\n obj.forEach(collectDefsRefs);\n return;\n }\n\n for (const [key, value] of Object.entries(obj as Record<string, unknown>)) {\n if (key === \"$ref\" && typeof value === \"string\") {\n const refId = value.startsWith(\"#/\") ? value : value;\n if (!refId.startsWith(\"#/\")) {\n defCollectedRefs.add(refId);\n }\n } else {\n collectDefsRefs(value);\n }\n }\n }\n\n collectDefsRefs(defSchema);\n\n // Process any new references found in this $defs schema\n for (const refId of defCollectedRefs) {\n if (!refToLocalMap.has(refId)) {\n newRefsFound.add(refId);\n foundNewRefs = true;\n }\n }\n }\n\n // Add all newly found references to $defs\n for (const refId of newRefsFound) {\n const referencedSchema = schemaRegistry.get(refId);\n if (referencedSchema) {\n const newDefKey =\n refId.replace(/[^a-zA-Z0-9_-]/g, \"_\").replace(/^_+|_+$/g, \"\") ||\n `ref_${Object.keys(finalSchema.$defs).length}`;\n\n let uniqueNewDefKey = newDefKey;\n let counter = 1;\n while (finalSchema.$defs[uniqueNewDefKey]) {\n uniqueNewDefKey = `${newDefKey}_${counter}`;\n counter++;\n }\n\n finalSchema.$defs[uniqueNewDefKey] = referencedSchema;\n refToLocalMap.set(refId, `#/$defs/${uniqueNewDefKey}`);\n }\n }\n }\n\n // Finally, update all $defs schemas with converted references\n for (const [defKey, defSchema] of Object.entries(finalSchema.$defs)) {\n finalSchema.$defs[defKey] = convertRefsToLocal(defSchema, refToLocalMap) as TSchema;\n }\n }\n\n return finalSchema as T & { $defs: Record<string, TSchema> };\n}\n","import type { TSchema } from \"@sinclair/typebox\";\nimport { alignItems, alignSelf, justifyContent } from \"../bricks/props/align\";\nimport { background, backgroundColor } from \"../bricks/props/background\";\nimport { border, rounding } from \"../bricks/props/border\";\nimport { borderColor, color } from \"../bricks/props/color\";\nimport { hidden } from \"../bricks/props/common\";\nimport { cssLength } from \"../bricks/props/css-length\";\nimport { shadow, textShadow } from \"../bricks/props/effects\";\nimport { fontSize, textContent } from \"../bricks/props/text\";\nimport { icon, urlOrPageId } from \"../bricks/props/string\";\nimport { colorPreset } from \"../bricks/props/color-preset\";\nimport { image } from \"../bricks/props/image\";\nimport { direction } from \"../bricks/props/direction\";\nimport { loop, queryUse } from \"../bricks/props/dynamic\";\nimport { tags } from \"../bricks/props/tags\";\n\nexport const schemaRegistry = new Map<string, TSchema>();\n\nexport function registerSchema(id: string, schema: TSchema) {\n schemaRegistry.set(id, schema);\n}\n\nexport function unregisterSchema(id: string) {\n schemaRegistry.delete(id);\n}\n\nregisterSchema(\"styles:background\", background());\nregisterSchema(\"styles:backgroundColor\", backgroundColor());\nregisterSchema(\"styles:justifyContent\", justifyContent());\nregisterSchema(\"styles:alignItems\", alignItems());\nregisterSchema(\"styles:alignSelf\", alignSelf());\nregisterSchema(\"styles:rounding\", rounding());\nregisterSchema(\"styles:fontSize\", fontSize());\nregisterSchema(\"styles:hidden\", hidden());\nregisterSchema(\"styles:direction\", direction());\nregisterSchema(\"styles:border\", border());\nregisterSchema(\"styles:color\", color());\nregisterSchema(\"styles:borderColor\", borderColor());\nregisterSchema(\"styles:shadow\", shadow());\nregisterSchema(\"styles:textShadow\", textShadow());\nregisterSchema(\"styles:cssLength\", cssLength());\nregisterSchema(\"assets:image\", image());\nregisterSchema(\"assets:icon\", icon());\nregisterSchema(\"content:text\", textContent());\nregisterSchema(\"content:urlOrPageId\", urlOrPageId());\nregisterSchema(\"content:loop\", loop());\nregisterSchema(\"content:queryUse\", queryUse());\nregisterSchema(\"presets:color\", colorPreset());\nregisterSchema(\"content:tags\", tags());\n\n/**\n */\nfunction consolidateRefs() {\n // Helper to recursively resolve $refs in a schema\n function resolveRefs(schema: TSchema, visited: Set<TSchema> = new Set()) {\n if (!schema || typeof schema !== \"object\" || visited.has(schema)) return schema;\n visited.add(schema);\n if (\"$ref\" in schema && typeof (schema as any).$ref === \"string\") {\n const refSchema = schemaRegistry.get((schema as any).$ref);\n if (refSchema) {\n // Recursively resolve refs in the referenced schema\n return resolveRefs(refSchema, visited);\n }\n }\n for (const key of Object.keys(schema)) {\n const value = (schema as any)[key];\n if (Array.isArray(value)) {\n (schema as any)[key] = value.map((item: TSchema) => resolveRefs(item, visited));\n } else if (typeof value === \"object\" && value !== null) {\n (schema as any)[key] = resolveRefs(value as TSchema, visited);\n }\n }\n return schema;\n }\n\n // Rewrite all schemas in the registry to resolve $refs\n for (const [id, schema] of schemaRegistry.entries()) {\n schemaRegistry.set(id, resolveRefs(schema));\n }\n}\n\nconsolidateRefs();\n"],"mappings":"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","names":["Type","collectDefsRefs","Type"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/shared/bricks/manifests/sidebar.manifest.ts"],"sourcesContent":["import { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps, group } from \"../props/helpers\";\nimport { VscLayoutSidebarLeftOff } from \"react-icons/vsc\";\nimport { Type } from \"@sinclair/typebox\";\nimport { string, urlOrPageIdRef } from \"../props/string\";\nimport { backgroundColorRef } from \"../props/background\";\nimport { borderRef } from \"../props/border\";\nimport { fixedPositioned } from \"../props/position\";\nimport type { BrickProps } from \"../props/types\";\nimport { shadowRef } from \"../props/effects\";\n\nexport const manifest = defineBrickManifest({\n type: \"sidebar\",\n category: \"layout\",\n name: \"Sidebar\",\n description: \"A sidebar element\",\n inlineDragDisabled: true,\n isGlobalBrick: true,\n duplicatable: false,\n resizable: false,\n movable: false,\n aiInstructions: `\n This brick should be used on most sites/pages for navigation. By default, it will display links\n to the main pages of the site. You can customize the links by using the 'navigation.navItems' prop.\n `.trim(),\n icon: VscLayoutSidebarLeftOff,\n props: defineProps({\n container: Type.Optional(\n group({\n title: \"Main element\",\n children: {\n backgroundColor: Type.Optional(backgroundColorRef()),\n border: Type.Optional(borderRef()),\n shadow: Type.Optional(shadowRef()),\n fixedPositioned: Type.Optional(fixedPositioned()),\n },\n metadata: {\n \"ui:responsive\": true,\n },\n }),\n ),\n navigation: Type.Optional(\n group({\n title: \"Links\",\n children: {\n navItems: Type.Optional(\n Type.Array(\n Type.Object({\n urlOrPageId: urlOrPageIdRef(),\n label: Type.Optional(string(\"Label\")),\n }),\n { title: \"Navigation items\", default: [] },\n ),\n ),\n },\n }),\n ),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: {\n description: string;\n type: string;\n props: BrickProps<Manifest>[\"brick\"][\"props\"];\n}[] = [\n {\n description: \"Standard sidebar with navigation links base on site pages\",\n type: \"sidebar\",\n props: {},\n },\n {\n description: \"Sidebar with specified navigation links\",\n type: \"sidebar\",\n props: {\n container: {\n backgroundColor: \"#f0f0f0\",\n },\n navigation: {\n navItems: [\n { urlOrPageId: \"https://google.com\", label: \"Google\" },\n { urlOrPageId: \"https://bing.com\", label: \"Bing\" },\n ],\n },\n },\n },\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAS,+BAA+B;AACxC,SAAS,YAAY;AAQd,IAAM,WAAW,oBAAoB;AAAA,EAC1C,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,aAAa;AAAA,EACb,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,WAAW;AAAA,EACX,SAAS;AAAA,EACT,gBAAgB;AAAA;AAAA;AAAA,IAGd,KAAK;AAAA,EACP,MAAM;AAAA,EACN,OAAO,YAAY;AAAA,IACjB,WAAW,KAAK;AAAA,MACd,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,UAAU;AAAA,UACR,iBAAiB,KAAK,SAAS,mBAAmB,CAAC;AAAA,UACnD,QAAQ,KAAK,SAAS,UAAU,CAAC;AAAA,UACjC,QAAQ,KAAK,SAAS,UAAU,CAAC;AAAA,UACjC,iBAAiB,KAAK,SAAS,gBAAgB,CAAC;AAAA,QAClD;AAAA,QACA,UAAU;AAAA,UACR,iBAAiB;AAAA,QACnB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,UAAU;AAAA,UACR,UAAU,KAAK;AAAA,YACb,KAAK;AAAA,cACH,KAAK,OAAO;AAAA,gBACV,aAAa,eAAe;AAAA,gBAC5B,OAAO,KAAK,SAAS,OAAO,OAAO,CAAC;AAAA,cACtC,CAAC;AAAA,cACD,EAAE,OAAO,oBAAoB,SAAS,CAAC,EAAE;AAAA,YAC3C;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH,CAAC;AAIM,IAAM,WAIP;AAAA,EACJ;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO,CAAC;AAAA,EACV;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,WAAW;AAAA,QACT,iBAAiB;AAAA,MACnB;AAAA,MACA,YAAY;AAAA,QACV,UAAU;AAAA,UACR,EAAE,aAAa,sBAAsB,OAAO,SAAS;AAAA,UACrD,EAAE,aAAa,oBAAoB,OAAO,OAAO;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/shared/datarecords/external/airtable/types.ts"],"sourcesContent":["import { Type, type Static } from \"@sinclair/typebox\";\n\nexport const airtableFields = Type.Array(\n Type.Object({\n id: Type.String(),\n name: Type.String(),\n type: Type.String(),\n }),\n);\nexport type AirtableFields = Static<typeof airtableFields>;\n\nconst createAirtableTableResponseSchema = Type.Object({\n id: Type.String(),\n name: Type.String(),\n description: Type.String(),\n primaryFieldId: Type.String(),\n fields: airtableFields,\n});\n\nexport type CreateAirtableTableResponse = Static<typeof createAirtableTableResponseSchema>;\n\nexport const airtableOptions = Type.Object({\n externalUrl: Type.Optional(Type.String()),\n baseId: Type.String({\n pattern: \"^app[A-Za-z0-9]+$\",\n description: 'Airtable Base ID starting with \"app\"',\n }),\n baseName: Type.Optional(\n Type.String({\n description: \"Airtable Base Name\",\n }),\n ),\n tableId: Type.String({\n pattern: \"^tbl[A-Za-z0-9]+$\",\n description: 'Airtable Table ID starting with \"tbl\"',\n }),\n tableName: Type.Optional(\n Type.String({\n description: \"Table name as shown in Airtable interface\",\n }),\n ),\n fields: Type.Optional(airtableFields),\n});\nexport type AirtableOptions = Static<typeof airtableOptions>;\n\nexport type AirtableBases = {\n id: string;\n name: string;\n}[];\n\nexport const AirtableFieldTypes = Type.Union([\n Type.Literal(\"number\"),\n Type.Literal(\"checkbox\"),\n Type.Literal(\"date\"),\n Type.Literal(\"dateTime\"),\n Type.Literal(\"email\"),\n Type.Literal(\"url\"),\n Type.Literal(\"singleLineText\"),\n Type.Literal(\"multilineText\"),\n Type.Literal(\"singleSelect\"),\n Type.Literal(\"multipleSelects\"),\n]);\nexport type AirtableFieldType = Static<typeof AirtableFieldTypes>;\n"],"mappings":";;;;AAAA,SAAS,YAAyB;AAE3B,IAAM,iBAAiB,KAAK;AAAA,EACjC,KAAK,OAAO;AAAA,IACV,IAAI,KAAK,OAAO;AAAA,IAChB,MAAM,KAAK,OAAO;AAAA,IAClB,MAAM,KAAK,OAAO;AAAA,EACpB,CAAC;AACH;AAGA,IAAM,oCAAoC,KAAK,OAAO;AAAA,EACpD,IAAI,KAAK,OAAO;AAAA,EAChB,MAAM,KAAK,OAAO;AAAA,EAClB,aAAa,KAAK,OAAO;AAAA,EACzB,gBAAgB,KAAK,OAAO;AAAA,EAC5B,QAAQ;AACV,CAAC;AAIM,IAAM,kBAAkB,KAAK,OAAO;AAAA,EACzC,aAAa,KAAK,SAAS,KAAK,OAAO,CAAC;AAAA,EACxC,QAAQ,KAAK,OAAO;AAAA,IAClB,SAAS;AAAA,IACT,aAAa;AAAA,EACf,CAAC;AAAA,EACD,UAAU,KAAK;AAAA,IACb,KAAK,OAAO;AAAA,MACV,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EACA,SAAS,KAAK,OAAO;AAAA,IACnB,SAAS;AAAA,IACT,aAAa;AAAA,EACf,CAAC;AAAA,EACD,WAAW,KAAK;AAAA,IACd,KAAK,OAAO;AAAA,MACV,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EACA,QAAQ,KAAK,SAAS,cAAc;AACtC,CAAC;AAQM,IAAM,qBAAqB,KAAK,MAAM;AAAA,EAC3C,KAAK,QAAQ,QAAQ;AAAA,EACrB,KAAK,QAAQ,UAAU;AAAA,EACvB,KAAK,QAAQ,MAAM;AAAA,EACnB,KAAK,QAAQ,UAAU;AAAA,EACvB,KAAK,QAAQ,OAAO;AAAA,EACpB,KAAK,QAAQ,KAAK;AAAA,EAClB,KAAK,QAAQ,gBAAgB;AAAA,EAC7B,KAAK,QAAQ,eAAe;AAAA,EAC5B,KAAK,QAAQ,cAAc;AAAA,EAC3B,KAAK,QAAQ,iBAAiB;AAChC,CAAC;","names":[]}
@@ -1,338 +0,0 @@
1
- /*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
2
-
3
- import {
4
- defineProps
5
- } from "./chunk-BHC2A43S.js";
6
- import {
7
- defineBrickManifest
8
- } from "./chunk-TB3X4LRQ.js";
9
- import {
10
- loopRef
11
- } from "./chunk-BW6EFRSF.js";
12
- import {
13
- textContentRef
14
- } from "./chunk-F22LDHEO.js";
15
- import {
16
- shadowRef
17
- } from "./chunk-TNMNMYOB.js";
18
- import {
19
- imageRef
20
- } from "./chunk-W6MRYRGJ.js";
21
- import {
22
- borderRef,
23
- roundingRef
24
- } from "./chunk-NTLAKMMQ.js";
25
- import {
26
- colorPresetRef
27
- } from "./chunk-TFGGYU6Y.js";
28
- import {
29
- StringEnum
30
- } from "./chunk-JK2FWFJU.js";
31
-
32
- // src/shared/bricks/manifests/card.manifest.ts
33
- import { BsCardText } from "react-icons/bs";
34
- import { Type } from "@sinclair/typebox";
35
- var manifest = defineBrickManifest({
36
- type: "card",
37
- name: "Card",
38
- description: "A card that can have a title, image, and content.",
39
- aiInstructions: "Use this brick to create cards that contain an image, title, and text content. Cards are useful for displaying information in a concise and visually appealing way.",
40
- icon: BsCardText,
41
- defaultWidth: { desktop: "400px", mobile: "100%" },
42
- minWidth: { desktop: 300 },
43
- minHeight: { mobile: 200, desktop: 200 },
44
- maxWidth: { desktop: 650 },
45
- props: defineProps({
46
- colorPreset: Type.Optional(
47
- colorPresetRef({
48
- title: "Color preset",
49
- default: { color: "base-100" }
50
- })
51
- ),
52
- cardImage: Type.Optional(
53
- imageRef({
54
- "ui:responsive": "desktop",
55
- metadata: {
56
- category: "content"
57
- }
58
- })
59
- ),
60
- imagePosition: Type.Optional(
61
- StringEnum(["top", "middle", "bottom", "left", "right"], {
62
- enumNames: ["Top", "Middle", "Bottom", "Left", "Right"],
63
- title: "Image Position",
64
- description: "Where the image should be placed in the card",
65
- default: "top",
66
- "ui:responsive": "desktop",
67
- metadata: {
68
- category: "content",
69
- filter: (manifestProps, formData) => {
70
- return !!formData.cardImage?.src;
71
- }
72
- }
73
- })
74
- ),
75
- noTitle: Type.Optional(
76
- Type.Boolean({
77
- title: "No Title",
78
- description: "Whether to hide the card title",
79
- default: false,
80
- "ui:responsive": "desktop"
81
- })
82
- ),
83
- title: Type.Optional(textContentRef({ title: "Title" })),
84
- text: Type.Optional(textContentRef({ title: "Text" })),
85
- rounding: Type.Optional(
86
- roundingRef({
87
- default: "rounded-md"
88
- })
89
- ),
90
- border: Type.Optional(
91
- borderRef({
92
- // default: { width: "border", color: "border-base-300" },
93
- })
94
- ),
95
- shadow: Type.Optional(
96
- shadowRef({
97
- default: "shadow-sm"
98
- })
99
- ),
100
- loop: Type.Optional(loopRef())
101
- })
102
- });
103
- var examples = [
104
- {
105
- description: "A simple card with a title and content",
106
- type: "card",
107
- props: {
108
- title: "Card Title",
109
- text: "This is the body of the card."
110
- }
111
- },
112
- {
113
- description: "Product card with image on the left",
114
- type: "card",
115
- props: {
116
- cardImage: {
117
- src: "https://via.placeholder.com/200x200",
118
- alt: "Product image"
119
- },
120
- title: "Premium Headphones",
121
- text: "High-quality wireless headphones with noise cancellation and 30-hour battery life."
122
- }
123
- },
124
- {
125
- description: "Feature card with large padding and background",
126
- type: "card",
127
- props: {
128
- title: "Key Feature",
129
- text: "This feature provides exceptional value and enhances user experience significantly."
130
- }
131
- },
132
- {
133
- description: "Blog post card with image at the bottom",
134
- type: "card",
135
- props: {
136
- title: "The Future of Technology",
137
- text: "Exploring emerging trends and innovations that will shape our digital landscape in the coming decade.",
138
- cardImage: {
139
- src: "https://via.placeholder.com/400x200",
140
- alt: "Technology concept"
141
- }
142
- }
143
- },
144
- {
145
- description: "Testimonial card with right-side image",
146
- type: "card",
147
- props: {
148
- title: "Customer Review",
149
- text: '"This product exceeded my expectations. The quality is outstanding and the customer service is top-notch!"',
150
- cardImage: {
151
- src: "https://via.placeholder.com/150x150",
152
- alt: "Customer photo"
153
- }
154
- }
155
- },
156
- {
157
- description: "Minimal centered card without image",
158
- type: "card",
159
- props: {
160
- title: "Simple Announcement",
161
- text: "Important updates will be posted here regularly."
162
- }
163
- },
164
- {
165
- description: "Event card with multiple variants",
166
- type: "card",
167
- props: {
168
- cardImage: {
169
- src: "https://via.placeholder.com/400x250",
170
- alt: "Event venue"
171
- },
172
- title: "Annual Conference 2025",
173
- text: "Join us for three days of inspiring talks, networking opportunities, and hands-on workshops."
174
- }
175
- },
176
- {
177
- description: "News article card with compact layout",
178
- type: "card",
179
- props: {
180
- cardImage: {
181
- src: "https://via.placeholder.com/120x120",
182
- alt: "News thumbnail"
183
- },
184
- title: "Breaking News Update",
185
- text: "Latest developments in the ongoing story with expert analysis and community reactions."
186
- }
187
- },
188
- {
189
- description: "Call-to-action card with prominent styling",
190
- type: "card",
191
- props: {
192
- title: "Get Started Today",
193
- text: "Transform your workflow with our powerful tools. Sign up now and get 30 days free!"
194
- }
195
- },
196
- {
197
- description: "Dynamic product card using products query with pricing and details",
198
- type: "card",
199
- props: {
200
- cardImage: {
201
- src: "{{products.image}}",
202
- alt: "{{products.name}}"
203
- },
204
- title: "{{products.name}}",
205
- text: "{{products.description}}<br><strong>Price: ${{products.price}}</strong><br>Category: {{products.category}}",
206
- colorPreset: { color: "primary-50" },
207
- border: { width: "border", color: "border-primary-200" },
208
- rounding: "rounded-lg",
209
- shadow: "shadow-md",
210
- loop: {
211
- over: "products"
212
- }
213
- }
214
- },
215
- {
216
- description: "Employee profile card using teamMembers query with contact information",
217
- type: "card",
218
- props: {
219
- cardImage: {
220
- src: "{{teamMembers.photo}}",
221
- alt: "Photo of {{teamMembers.fullName}}"
222
- },
223
- imagePosition: "top",
224
- title: "{{teamMembers.fullName}}",
225
- text: "<strong>{{teamMembers.position}}</strong><br>{{teamMembers.department}}<br>Email: {{teamMembers.email}}<br>Phone: {{teamMembers.phone}}",
226
- colorPreset: { color: "neutral-100" },
227
- rounding: "rounded-xl",
228
- shadow: "shadow-lg",
229
- loop: {
230
- over: "teamMembers"
231
- }
232
- }
233
- },
234
- {
235
- description: "Blog post card using blogPosts query with author and date",
236
- type: "card",
237
- props: {
238
- cardImage: {
239
- src: "{{blogPosts.featuredImage}}",
240
- alt: "{{blogPosts.title}}"
241
- },
242
- imagePosition: "top",
243
- title: "{{blogPosts.title}}",
244
- text: "{{blogPosts.excerpt}}<br><br><em>By {{blogPosts.author}} \u2022 {{blogPosts.publishDate}}</em><br>Tags: {{blogPosts.tags}}",
245
- colorPreset: { color: "secondary-50" },
246
- border: { width: "border", color: "border-secondary-300" },
247
- rounding: "rounded-md",
248
- shadow: "shadow-sm",
249
- loop: {
250
- over: "blogPosts"
251
- }
252
- }
253
- },
254
- {
255
- description: "Event listing card using upcomingEvents query with venue details",
256
- type: "card",
257
- props: {
258
- cardImage: {
259
- src: "{{upcomingEvents.banner}}",
260
- alt: "{{upcomingEvents.title}}"
261
- },
262
- imagePosition: "top",
263
- title: "{{upcomingEvents.title}}",
264
- text: "<strong>{{upcomingEvents.date}} at {{upcomingEvents.time}}</strong><br>{{upcomingEvents.venue}}, {{upcomingEvents.city}}<br><br>{{upcomingEvents.description}}<br><br>Tickets: ${{upcomingEvents.price}}",
265
- colorPreset: { color: "accent-100" },
266
- border: { width: "border-2", color: "border-accent-400" },
267
- rounding: "rounded-lg",
268
- shadow: "shadow-md",
269
- loop: {
270
- over: "upcomingEvents"
271
- }
272
- }
273
- },
274
- {
275
- description: "Testimonial card using customerReviews query with ratings",
276
- type: "card",
277
- props: {
278
- cardImage: {
279
- src: "{{customerReviews.customerPhoto}}",
280
- alt: "{{customerReviews.customerName}}"
281
- },
282
- imagePosition: "left",
283
- title: "{{customerReviews.customerName}}",
284
- text: '"{{customerReviews.review}}"<br><br><strong>Rating: {{customerReviews.rating}}/5 stars</strong><br>{{customerReviews.company}} \u2022 {{customerReviews.position}}',
285
- colorPreset: { color: "neutral-50" },
286
- rounding: "rounded-xl",
287
- shadow: "shadow-lg",
288
- loop: {
289
- over: "customerReviews"
290
- }
291
- }
292
- },
293
- {
294
- description: "Service offering card using companyServices query with pricing tiers",
295
- type: "card",
296
- props: {
297
- cardImage: {
298
- src: "{{companyServices.icon}}",
299
- alt: "{{companyServices.serviceName}}"
300
- },
301
- imagePosition: "top",
302
- title: "{{companyServices.serviceName}}",
303
- text: "{{companyServices.description}}<br><br><strong>Starting at ${{companyServices.startingPrice}}</strong><br>Duration: {{companyServices.duration}}<br>Includes: {{companyServices.features}}",
304
- colorPreset: { color: "primary-100" },
305
- border: { width: "border", color: "border-primary-300" },
306
- rounding: "rounded-lg",
307
- shadow: "shadow-md",
308
- loop: {
309
- over: "companyServices"
310
- }
311
- }
312
- },
313
- {
314
- description: "Portfolio project card using portfolioWork query with project details",
315
- type: "card",
316
- props: {
317
- cardImage: {
318
- src: "{{portfolioWork.thumbnail}}",
319
- alt: "{{portfolioWork.projectName}}"
320
- },
321
- imagePosition: "top",
322
- title: "{{portfolioWork.projectName}}",
323
- text: "<strong>Client:</strong> {{portfolioWork.clientName}}<br><strong>Year:</strong> {{portfolioWork.year}}<br><strong>Category:</strong> {{portfolioWork.category}}<br><br>{{portfolioWork.description}}",
324
- colorPreset: { color: "secondary-100" },
325
- rounding: "rounded-md",
326
- shadow: "shadow-sm",
327
- loop: {
328
- over: "portfolioWork"
329
- }
330
- }
331
- }
332
- ];
333
-
334
- export {
335
- manifest,
336
- examples
337
- };
338
- //# sourceMappingURL=chunk-D4YQ6ABM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/shared/bricks/manifests/card.manifest.ts"],"sourcesContent":["import { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps } from \"../props/helpers\";\nimport { textContentRef } from \"../props/text\";\nimport { BsCardText } from \"react-icons/bs\";\nimport { imageRef } from \"../props/image\";\nimport { type Static, Type } from \"@sinclair/typebox\";\nimport type { BrickProps } from \"../props/types\";\nimport { shadowRef } from \"../props/effects\";\nimport { borderRef, roundingRef } from \"../props/border\";\nimport { colorPresetRef } from \"../props/color-preset\";\nimport { loopRef } from \"../props/dynamic\";\nimport { StringEnum } from \"~/shared/utils/string-enum\";\n\nexport const manifest = defineBrickManifest({\n type: \"card\",\n name: \"Card\",\n description: \"A card that can have a title, image, and content.\",\n aiInstructions:\n \"Use this brick to create cards that contain an image, title, and text content. Cards are useful for displaying information in a concise and visually appealing way.\",\n icon: BsCardText,\n defaultWidth: { desktop: \"400px\", mobile: \"100%\" },\n minWidth: { desktop: 300 },\n minHeight: { mobile: 200, desktop: 200 },\n maxWidth: { desktop: 650 },\n props: defineProps({\n colorPreset: Type.Optional(\n colorPresetRef({\n title: \"Color preset\",\n default: { color: \"base-100\" },\n }),\n ),\n\n cardImage: Type.Optional(\n imageRef({\n \"ui:responsive\": \"desktop\",\n metadata: {\n category: \"content\",\n },\n }),\n ),\n imagePosition: Type.Optional(\n StringEnum([\"top\", \"middle\", \"bottom\", \"left\", \"right\"], {\n enumNames: [\"Top\", \"Middle\", \"Bottom\", \"Left\", \"Right\"],\n title: \"Image Position\",\n description: \"Where the image should be placed in the card\",\n default: \"top\",\n \"ui:responsive\": \"desktop\",\n metadata: {\n category: \"content\",\n filter: (manifestProps: Manifest[\"props\"], formData: Static<Manifest[\"props\"]>) => {\n return !!formData.cardImage?.src;\n },\n },\n }),\n ),\n noTitle: Type.Optional(\n Type.Boolean({\n title: \"No Title\",\n description: \"Whether to hide the card title\",\n default: false,\n \"ui:responsive\": \"desktop\",\n }),\n ),\n title: Type.Optional(textContentRef({ title: \"Title\" })),\n text: Type.Optional(textContentRef({ title: \"Text\" })),\n rounding: Type.Optional(\n roundingRef({\n default: \"rounded-md\",\n }),\n ),\n border: Type.Optional(\n borderRef({\n // default: { width: \"border\", color: \"border-base-300\" },\n }),\n ),\n shadow: Type.Optional(\n shadowRef({\n default: \"shadow-sm\",\n }),\n ),\n loop: Type.Optional(loopRef()),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: {\n description: string;\n type: string;\n props: BrickProps<Manifest>[\"brick\"][\"props\"];\n}[] = [\n {\n description: \"A simple card with a title and content\",\n type: \"card\",\n props: {\n title: \"Card Title\",\n text: \"This is the body of the card.\",\n },\n },\n {\n description: \"Product card with image on the left\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"https://via.placeholder.com/200x200\",\n alt: \"Product image\",\n },\n title: \"Premium Headphones\",\n text: \"High-quality wireless headphones with noise cancellation and 30-hour battery life.\",\n },\n },\n {\n description: \"Feature card with large padding and background\",\n type: \"card\",\n props: {\n title: \"Key Feature\",\n text: \"This feature provides exceptional value and enhances user experience significantly.\",\n },\n },\n {\n description: \"Blog post card with image at the bottom\",\n type: \"card\",\n props: {\n title: \"The Future of Technology\",\n text: \"Exploring emerging trends and innovations that will shape our digital landscape in the coming decade.\",\n cardImage: {\n src: \"https://via.placeholder.com/400x200\",\n alt: \"Technology concept\",\n },\n },\n },\n {\n description: \"Testimonial card with right-side image\",\n type: \"card\",\n props: {\n title: \"Customer Review\",\n text: '\"This product exceeded my expectations. The quality is outstanding and the customer service is top-notch!\"',\n cardImage: {\n src: \"https://via.placeholder.com/150x150\",\n alt: \"Customer photo\",\n },\n },\n },\n {\n description: \"Minimal centered card without image\",\n type: \"card\",\n props: {\n title: \"Simple Announcement\",\n text: \"Important updates will be posted here regularly.\",\n },\n },\n {\n description: \"Event card with multiple variants\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"https://via.placeholder.com/400x250\",\n alt: \"Event venue\",\n },\n title: \"Annual Conference 2025\",\n text: \"Join us for three days of inspiring talks, networking opportunities, and hands-on workshops.\",\n },\n },\n {\n description: \"News article card with compact layout\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"https://via.placeholder.com/120x120\",\n alt: \"News thumbnail\",\n },\n title: \"Breaking News Update\",\n text: \"Latest developments in the ongoing story with expert analysis and community reactions.\",\n },\n },\n {\n description: \"Call-to-action card with prominent styling\",\n type: \"card\",\n props: {\n title: \"Get Started Today\",\n text: \"Transform your workflow with our powerful tools. Sign up now and get 30 days free!\",\n },\n },\n {\n description: \"Dynamic product card using products query with pricing and details\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"{{products.image}}\",\n alt: \"{{products.name}}\",\n },\n title: \"{{products.name}}\",\n text: \"{{products.description}}<br><strong>Price: ${{products.price}}</strong><br>Category: {{products.category}}\",\n colorPreset: { color: \"primary-50\" },\n border: { width: \"border\", color: \"border-primary-200\" },\n rounding: \"rounded-lg\",\n shadow: \"shadow-md\",\n loop: {\n over: \"products\",\n },\n },\n },\n {\n description: \"Employee profile card using teamMembers query with contact information\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"{{teamMembers.photo}}\",\n alt: \"Photo of {{teamMembers.fullName}}\",\n },\n imagePosition: \"top\",\n title: \"{{teamMembers.fullName}}\",\n text: \"<strong>{{teamMembers.position}}</strong><br>{{teamMembers.department}}<br>Email: {{teamMembers.email}}<br>Phone: {{teamMembers.phone}}\",\n colorPreset: { color: \"neutral-100\" },\n rounding: \"rounded-xl\",\n shadow: \"shadow-lg\",\n loop: {\n over: \"teamMembers\",\n },\n },\n },\n {\n description: \"Blog post card using blogPosts query with author and date\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"{{blogPosts.featuredImage}}\",\n alt: \"{{blogPosts.title}}\",\n },\n imagePosition: \"top\",\n title: \"{{blogPosts.title}}\",\n text: \"{{blogPosts.excerpt}}<br><br><em>By {{blogPosts.author}} • {{blogPosts.publishDate}}</em><br>Tags: {{blogPosts.tags}}\",\n colorPreset: { color: \"secondary-50\" },\n border: { width: \"border\", color: \"border-secondary-300\" },\n rounding: \"rounded-md\",\n shadow: \"shadow-sm\",\n loop: {\n over: \"blogPosts\",\n },\n },\n },\n {\n description: \"Event listing card using upcomingEvents query with venue details\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"{{upcomingEvents.banner}}\",\n alt: \"{{upcomingEvents.title}}\",\n },\n imagePosition: \"top\",\n title: \"{{upcomingEvents.title}}\",\n text: \"<strong>{{upcomingEvents.date}} at {{upcomingEvents.time}}</strong><br>{{upcomingEvents.venue}}, {{upcomingEvents.city}}<br><br>{{upcomingEvents.description}}<br><br>Tickets: ${{upcomingEvents.price}}\",\n colorPreset: { color: \"accent-100\" },\n border: { width: \"border-2\", color: \"border-accent-400\" },\n rounding: \"rounded-lg\",\n shadow: \"shadow-md\",\n loop: {\n over: \"upcomingEvents\",\n },\n },\n },\n {\n description: \"Testimonial card using customerReviews query with ratings\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"{{customerReviews.customerPhoto}}\",\n alt: \"{{customerReviews.customerName}}\",\n },\n imagePosition: \"left\",\n title: \"{{customerReviews.customerName}}\",\n text: '\"{{customerReviews.review}}\"<br><br><strong>Rating: {{customerReviews.rating}}/5 stars</strong><br>{{customerReviews.company}} • {{customerReviews.position}}',\n colorPreset: { color: \"neutral-50\" },\n rounding: \"rounded-xl\",\n shadow: \"shadow-lg\",\n loop: {\n over: \"customerReviews\",\n },\n },\n },\n {\n description: \"Service offering card using companyServices query with pricing tiers\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"{{companyServices.icon}}\",\n alt: \"{{companyServices.serviceName}}\",\n },\n imagePosition: \"top\",\n title: \"{{companyServices.serviceName}}\",\n text: \"{{companyServices.description}}<br><br><strong>Starting at ${{companyServices.startingPrice}}</strong><br>Duration: {{companyServices.duration}}<br>Includes: {{companyServices.features}}\",\n colorPreset: { color: \"primary-100\" },\n border: { width: \"border\", color: \"border-primary-300\" },\n rounding: \"rounded-lg\",\n shadow: \"shadow-md\",\n loop: {\n over: \"companyServices\",\n },\n },\n },\n {\n description: \"Portfolio project card using portfolioWork query with project details\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"{{portfolioWork.thumbnail}}\",\n alt: \"{{portfolioWork.projectName}}\",\n },\n imagePosition: \"top\",\n title: \"{{portfolioWork.projectName}}\",\n text: \"<strong>Client:</strong> {{portfolioWork.clientName}}<br><strong>Year:</strong> {{portfolioWork.year}}<br><strong>Category:</strong> {{portfolioWork.category}}<br><br>{{portfolioWork.description}}\",\n colorPreset: { color: \"secondary-100\" },\n rounding: \"rounded-md\",\n shadow: \"shadow-sm\",\n loop: {\n over: \"portfolioWork\",\n },\n },\n },\n];\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/shared/bricks/manifests/html.manifest.ts"],"sourcesContent":["import { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps } from \"../props/helpers\";\nimport type { BrickProps } from \"../props/types\";\nimport { BsCodeSquare } from \"react-icons/bs\";\n\nimport { Type } from \"@sinclair/typebox\";\n\nexport const manifest = defineBrickManifest({\n type: \"html\",\n name: \"Html\",\n category: \"widgets\",\n description:\n \"A flexible brick that accepts HTML content. Useful for embeding custom HTML or third-party widgets.\",\n aiInstructions:\n \"Use only this brick type when integrating third party widgets or custom HTML content. Most of the time, you should use other bricks that are more secure and easier to use.\",\n staticClasses: \"self-stretch\",\n defaultWidth: {\n mobile: \"auto\",\n desktop: \"300px\",\n },\n icon: BsCodeSquare,\n props: defineProps({\n html: Type.String({\n title: \"HTML Content\",\n description: \"The HTML content to render. Use with caution, as it can introduce security risks.\",\n default: \"<div>Your HTML content here</div>\",\n \"ui:placeholder\": \"<div>Your HTML content here</div>\",\n \"ui:multiline\": true,\n metadata: {\n category: \"content\",\n },\n }),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: {\n description: string;\n type: string;\n props: BrickProps<Manifest>[\"brick\"][\"props\"];\n}[] = [\n {\n description: \"A tally form\",\n type: \"html\",\n props: {\n html: '<iframe data-tally-src=\"https://tally.so/embed/wQZpd8?alignLeft=1&hideTitle=1&transparentBackground=1&dynamicHeight=1\" loading=\"lazy\" width=\"100%\" height=\"282\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\" title=\"test\"></iframe>',\n },\n },\n {\n description: \"YouTube video embed\",\n type: \"html\",\n props: {\n html: '<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/dQw4w9WgXcQ\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen></iframe>',\n },\n },\n {\n description: \"Google Maps embed\",\n type: \"html\",\n props: {\n html: '<iframe src=\"https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3024.309059887159!2d-74.00849368459473!3d40.71278097932847!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c25a165bedccab%3A0xa2008c34c27bfb67!2sWall%20St%2C%20New%20York%2C%20NY%2C%20USA!5e0!3m2!1sen!2sus!4v1620000000000\" width=\"100%\" height=\"300\" style=\"border:0;\" allowfullscreen=\"\" loading=\"lazy\"></iframe>',\n },\n },\n {\n description: \"Twitter tweet embed\",\n type: \"html\",\n props: {\n html: '<blockquote class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">Just setting up my twttr</p>&mdash; Jack Dorsey (@jack) <a href=\"https://twitter.com/jack/status/20?ref_src=twsrc%5Etfw\">March 21, 2006</a></blockquote> <script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>',\n },\n },\n {\n description: \"CodePen embed for code showcase\",\n type: \"html\",\n props: {\n html: '<iframe height=\"300\" style=\"width: 100%;\" scrolling=\"no\" title=\"CSS Animation Example\" src=\"https://codepen.io/team/codepen/embed/PNaGbb?height=300&theme-id=light&default-tab=result\" frameborder=\"no\" loading=\"lazy\" allowtransparency=\"true\" allowfullscreen=\"true\"></iframe>',\n },\n },\n {\n description: \"Calendly scheduling widget\",\n type: \"html\",\n props: {\n html: '<div class=\"calendly-inline-widget\" data-url=\"https://calendly.com/your-name/30min\" style=\"min-width:320px;height:630px;\"></div><script type=\"text/javascript\" src=\"https://assets.calendly.com/assets/external/widget.js\" async></script>',\n },\n },\n {\n description: \"Custom pricing table with CSS styling\",\n type: \"html\",\n props: {\n html: '<div style=\"display: flex; gap: 20px; justify-content: center;\"><div style=\"border: 2px solid #e2e8f0; border-radius: 12px; padding: 24px; text-align: center; background: white;\"><h3 style=\"margin: 0 0 16px; color: #1e293b;\">Basic</h3><div style=\"font-size: 32px; font-weight: bold; color: #0ea5e9;\">$9</div><p style=\"color: #64748b; margin: 8px 0 20px;\">per month</p><ul style=\"list-style: none; padding: 0; margin: 0;\"><li style=\"padding: 8px 0;\">✓ 5 Projects</li><li style=\"padding: 8px 0;\">✓ 10GB Storage</li><li style=\"padding: 8px 0;\">✓ Email Support</li></ul></div></div>',\n },\n },\n {\n description: \"Mailchimp newsletter signup form\",\n type: \"html\",\n props: {\n html: '<div id=\"mc_embed_signup\"><form action=\"https://your-domain.us1.list-manage.com/subscribe/post?u=123456789&amp;id=abcdefghij\" method=\"post\" id=\"mc-embedded-subscribe-form\" name=\"mc-embedded-subscribe-form\" class=\"validate\" target=\"_blank\" novalidate><div id=\"mc_embed_signup_scroll\"><div class=\"mc-field-group\"><label for=\"mce-EMAIL\">Email Address</label><input type=\"email\" value=\"\" name=\"EMAIL\" class=\"required email\" id=\"mce-EMAIL\" style=\"width: 100%; padding: 10px; margin: 8px 0; border: 1px solid #ccc; border-radius: 4px;\"></div><div id=\"mce-responses\" class=\"clear\"><div class=\"response\" id=\"mce-error-response\" style=\"display:none\"></div><div class=\"response\" id=\"mce-success-response\" style=\"display:none\"></div></div><div style=\"position: absolute; left: -5000px;\" aria-hidden=\"true\"><input type=\"text\" name=\"b_123456789_abcdefghij\" tabindex=\"-1\" value=\"\"></div><div class=\"clear\"><input type=\"submit\" value=\"Subscribe\" name=\"subscribe\" id=\"mc-embedded-subscribe\" class=\"button\" style=\"background: #007cba; color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer;\"></div></div></form></div>',\n },\n },\n {\n description: \"Stripe payment button integration\",\n type: \"html\",\n props: {\n html: '<script async src=\"https://js.stripe.com/v3/buy-button.js\"></script><stripe-buy-button buy-button-id=\"buy_btn_1234567890\" publishable-key=\"pk_test_1234567890\"></stripe-buy-button>',\n },\n },\n {\n description: \"Instagram post embed\",\n type: \"html\",\n props: {\n html: '<blockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-permalink=\"https://www.instagram.com/p/ABC123/\" data-instgrm-version=\"14\" style=\"background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"></blockquote><script async src=\"//www.instagram.com/embed.js\"></script>',\n },\n },\n {\n description: \"Custom countdown timer widget\",\n type: \"html\",\n props: {\n html: '<div style=\"text-align: center; padding: 20px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-radius: 12px; color: white;\"><h3 style=\"margin: 0 0 20px; font-size: 24px;\">Event Countdown</h3><div id=\"countdown\" style=\"display: flex; justify-content: center; gap: 20px;\"><div style=\"text-align: center;\"><div style=\"font-size: 32px; font-weight: bold;\">10</div><div style=\"font-size: 14px; opacity: 0.8;\">DAYS</div></div><div style=\"text-align: center;\"><div style=\"font-size: 32px; font-weight: bold;\">15</div><div style=\"font-size: 14px; opacity: 0.8;\">HOURS</div></div><div style=\"text-align: center;\"><div style=\"font-size: 32px; font-weight: bold;\">30</div><div style=\"font-size: 14px; opacity: 0.8;\">MINUTES</div></div></div></div>',\n },\n },\n {\n description: \"Interactive feedback widget with rating stars\",\n type: \"html\",\n props: {\n html: '<div style=\"border: 1px solid #e2e8f0; border-radius: 8px; padding: 24px; background: #f8fafc;\"><h4 style=\"margin: 0 0 16px; color: #1e293b;\">How was your experience?</h4><div style=\"display: flex; gap: 8px; margin: 16px 0;\"><span style=\"font-size: 24px; cursor: pointer; color: #fbbf24;\">★</span><span style=\"font-size: 24px; cursor: pointer; color: #fbbf24;\">★</span><span style=\"font-size: 24px; cursor: pointer; color: #fbbf24;\">★</span><span style=\"font-size: 24px; cursor: pointer; color: #fbbf24;\">★</span><span style=\"font-size: 24px; cursor: pointer; color: #d1d5db;\">★</span></div><textarea placeholder=\"Tell us more about your experience...\" style=\"width: 100%; height: 80px; padding: 12px; border: 1px solid #d1d5db; border-radius: 6px; resize: vertical; font-family: inherit;\"></textarea><button style=\"margin-top: 12px; background: #3b82f6; color: white; padding: 10px 20px; border: none; border-radius: 6px; cursor: pointer;\">Submit Feedback</button></div>',\n },\n },\n];\n"],"mappings":";;;;;;;;;;AAGA,SAAS,oBAAoB;AAE7B,SAAS,YAAY;AAEd,IAAM,WAAW,oBAAoB;AAAA,EAC1C,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aACE;AAAA,EACF,gBACE;AAAA,EACF,eAAe;AAAA,EACf,cAAc;AAAA,IACZ,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,EACN,OAAO,YAAY;AAAA,IACjB,MAAM,KAAK,OAAO;AAAA,MAChB,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,UAAU;AAAA,QACR,UAAU;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH,CAAC;AAIM,IAAM,WAIP;AAAA,EACJ;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}