@upstart.gg/sdk 0.0.135 → 0.0.136

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 (258) 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 +43 -8
  4. package/dist/shared/ai/schemas.js.map +1 -1
  5. package/dist/shared/ai/types.d.ts +125 -65
  6. package/dist/shared/ai/types.d.ts.map +1 -1
  7. package/dist/shared/ajv.js +2 -2
  8. package/dist/shared/attributes.d.ts +3 -1
  9. package/dist/shared/attributes.d.ts.map +1 -1
  10. package/dist/shared/attributes.js +9 -9
  11. package/dist/shared/brick-manifest.js +4 -4
  12. package/dist/shared/bricks/manifests/_types.d.ts +9 -0
  13. package/dist/shared/bricks/manifests/_types.d.ts.map +1 -0
  14. package/dist/shared/bricks/manifests/_types.js +3 -0
  15. package/dist/shared/bricks/manifests/_types.js.map +1 -0
  16. package/dist/shared/bricks/manifests/accordion.manifest.d.ts +2 -6
  17. package/dist/shared/bricks/manifests/accordion.manifest.d.ts.map +1 -1
  18. package/dist/shared/bricks/manifests/accordion.manifest.js +5 -5
  19. package/dist/shared/bricks/manifests/all-manifests.d.ts.map +1 -1
  20. package/dist/shared/bricks/manifests/all-manifests.js +28 -28
  21. package/dist/shared/bricks/manifests/box.manifest.d.ts +2 -6
  22. package/dist/shared/bricks/manifests/box.manifest.d.ts.map +1 -1
  23. package/dist/shared/bricks/manifests/box.manifest.js +5 -5
  24. package/dist/shared/bricks/manifests/button.manifest.d.ts +2 -6
  25. package/dist/shared/bricks/manifests/button.manifest.d.ts.map +1 -1
  26. package/dist/shared/bricks/manifests/button.manifest.js +5 -5
  27. package/dist/shared/bricks/manifests/card.manifest.d.ts +8 -7
  28. package/dist/shared/bricks/manifests/card.manifest.d.ts.map +1 -1
  29. package/dist/shared/bricks/manifests/card.manifest.js +5 -5
  30. package/dist/shared/bricks/manifests/carousel.manifest.d.ts +2 -6
  31. package/dist/shared/bricks/manifests/carousel.manifest.d.ts.map +1 -1
  32. package/dist/shared/bricks/manifests/carousel.manifest.js +5 -5
  33. package/dist/shared/bricks/manifests/footer.manifest.d.ts +2 -6
  34. package/dist/shared/bricks/manifests/footer.manifest.d.ts.map +1 -1
  35. package/dist/shared/bricks/manifests/footer.manifest.js +5 -5
  36. package/dist/shared/bricks/manifests/form.manifest.d.ts +2 -6
  37. package/dist/shared/bricks/manifests/form.manifest.d.ts.map +1 -1
  38. package/dist/shared/bricks/manifests/form.manifest.js +5 -5
  39. package/dist/shared/bricks/manifests/hero.manifest.d.ts +2 -6
  40. package/dist/shared/bricks/manifests/hero.manifest.d.ts.map +1 -1
  41. package/dist/shared/bricks/manifests/hero.manifest.js +5 -5
  42. package/dist/shared/bricks/manifests/html.manifest.d.ts +2 -6
  43. package/dist/shared/bricks/manifests/html.manifest.d.ts.map +1 -1
  44. package/dist/shared/bricks/manifests/html.manifest.js +5 -5
  45. package/dist/shared/bricks/manifests/icon.manifest.d.ts +2 -6
  46. package/dist/shared/bricks/manifests/icon.manifest.d.ts.map +1 -1
  47. package/dist/shared/bricks/manifests/icon.manifest.js +5 -5
  48. package/dist/shared/bricks/manifests/image.manifest.d.ts +1 -0
  49. package/dist/shared/bricks/manifests/image.manifest.d.ts.map +1 -1
  50. package/dist/shared/bricks/manifests/image.manifest.js +5 -5
  51. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts +2 -6
  52. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts.map +1 -1
  53. package/dist/shared/bricks/manifests/images-gallery.manifest.js +5 -5
  54. package/dist/shared/bricks/manifests/map.manifest.d.ts +2 -6
  55. package/dist/shared/bricks/manifests/map.manifest.d.ts.map +1 -1
  56. package/dist/shared/bricks/manifests/map.manifest.js +5 -5
  57. package/dist/shared/bricks/manifests/navbar.manifest.d.ts +2 -6
  58. package/dist/shared/bricks/manifests/navbar.manifest.d.ts.map +1 -1
  59. package/dist/shared/bricks/manifests/navbar.manifest.js +5 -5
  60. package/dist/shared/bricks/manifests/sidebar.manifest.d.ts +2 -6
  61. package/dist/shared/bricks/manifests/sidebar.manifest.d.ts.map +1 -1
  62. package/dist/shared/bricks/manifests/sidebar.manifest.js +5 -5
  63. package/dist/shared/bricks/manifests/social-links.manifest.d.ts +2 -6
  64. package/dist/shared/bricks/manifests/social-links.manifest.d.ts.map +1 -1
  65. package/dist/shared/bricks/manifests/social-links.manifest.js +5 -5
  66. package/dist/shared/bricks/manifests/spacer.manifest.d.ts +2 -6
  67. package/dist/shared/bricks/manifests/spacer.manifest.d.ts.map +1 -1
  68. package/dist/shared/bricks/manifests/spacer.manifest.js +5 -5
  69. package/dist/shared/bricks/manifests/table.manifest.d.ts +2 -6
  70. package/dist/shared/bricks/manifests/table.manifest.d.ts.map +1 -1
  71. package/dist/shared/bricks/manifests/table.manifest.js +5 -5
  72. package/dist/shared/bricks/manifests/tabs.manifest.d.ts +2 -6
  73. package/dist/shared/bricks/manifests/tabs.manifest.d.ts.map +1 -1
  74. package/dist/shared/bricks/manifests/tabs.manifest.js +5 -5
  75. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts +2 -6
  76. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts.map +1 -1
  77. package/dist/shared/bricks/manifests/testimonials.manifest.js +5 -5
  78. package/dist/shared/bricks/manifests/text.manifest.d.ts +2 -6
  79. package/dist/shared/bricks/manifests/text.manifest.d.ts.map +1 -1
  80. package/dist/shared/bricks/manifests/text.manifest.js +5 -5
  81. package/dist/shared/bricks/manifests/timeline.manifest.d.ts +2 -6
  82. package/dist/shared/bricks/manifests/timeline.manifest.d.ts.map +1 -1
  83. package/dist/shared/bricks/manifests/timeline.manifest.js +5 -5
  84. package/dist/shared/bricks/manifests/video.manifest.d.ts +2 -6
  85. package/dist/shared/bricks/manifests/video.manifest.d.ts.map +1 -1
  86. package/dist/shared/bricks/manifests/video.manifest.js +5 -5
  87. package/dist/shared/bricks/props/dynamic.js +2 -2
  88. package/dist/shared/bricks/props/geolocation.js +1 -1
  89. package/dist/shared/bricks/props/string.js +1 -1
  90. package/dist/shared/bricks.d.ts +5 -3
  91. package/dist/shared/bricks.d.ts.map +1 -1
  92. package/dist/shared/bricks.js +31 -29
  93. package/dist/shared/{chunk-CKFRSHR2.js → chunk-2IHKVMKW.js} +3 -3
  94. package/dist/shared/chunk-2IHKVMKW.js.map +1 -0
  95. package/dist/shared/{chunk-P3RH5URN.js → chunk-2VDR4ZYY.js} +3 -3
  96. package/dist/shared/chunk-2VDR4ZYY.js.map +1 -0
  97. package/dist/shared/{chunk-MLZT7MRQ.js → chunk-36PLZKMW.js} +4 -4
  98. package/dist/shared/chunk-36PLZKMW.js.map +1 -0
  99. package/dist/shared/{chunk-QQQ3FYPG.js → chunk-42OUNI7C.js} +123 -5
  100. package/dist/shared/chunk-42OUNI7C.js.map +1 -0
  101. package/dist/shared/{chunk-2HO4FHLM.js → chunk-4MNWMEMM.js} +118 -152
  102. package/dist/shared/chunk-4MNWMEMM.js.map +1 -0
  103. package/dist/shared/chunk-CRS7QCPZ.js +308 -0
  104. package/dist/shared/chunk-CRS7QCPZ.js.map +1 -0
  105. package/dist/shared/{chunk-WGDUJSSS.js → chunk-DFAFDBYZ.js} +4 -4
  106. package/dist/shared/chunk-DFAFDBYZ.js.map +1 -0
  107. package/dist/shared/{chunk-FVU5PXRC.js → chunk-DV3G7X34.js} +2 -2
  108. package/dist/shared/{chunk-TB3X4LRQ.js → chunk-EVLRH6VG.js} +2 -2
  109. package/dist/shared/{chunk-Z35I5JM5.js → chunk-F247VKAE.js} +3 -3
  110. package/dist/shared/chunk-F247VKAE.js.map +1 -0
  111. package/dist/shared/{chunk-QL3T5HJQ.js → chunk-FOGAVJC2.js} +2 -2
  112. package/dist/shared/chunk-FOGAVJC2.js.map +1 -0
  113. package/dist/shared/{chunk-4WI23M7W.js → chunk-FQDR2BBZ.js} +3 -3
  114. package/dist/shared/chunk-FQDR2BBZ.js.map +1 -0
  115. package/dist/shared/{chunk-3KLRW4I2.js → chunk-GFAQWQER.js} +182 -124
  116. package/dist/shared/chunk-GFAQWQER.js.map +1 -0
  117. package/dist/shared/{chunk-DRTGM2UJ.js → chunk-GIGFNQBO.js} +2 -2
  118. package/dist/shared/chunk-GIGFNQBO.js.map +1 -0
  119. package/dist/shared/{chunk-SHUGHJ7V.js → chunk-GQTZPN5D.js} +3 -3
  120. package/dist/shared/chunk-GQTZPN5D.js.map +1 -0
  121. package/dist/shared/{chunk-D4YQ6ABM.js → chunk-H5JM2M2T.js} +211 -34
  122. package/dist/shared/chunk-H5JM2M2T.js.map +1 -0
  123. package/dist/shared/{chunk-NT3IW52F.js → chunk-HTUSL2U7.js} +2 -2
  124. package/dist/shared/{chunk-BW6EFRSF.js → chunk-IQIISR22.js} +2 -2
  125. package/dist/shared/{chunk-BW6EFRSF.js.map → chunk-IQIISR22.js.map} +1 -1
  126. package/dist/shared/{chunk-Z2NTDFB4.js → chunk-KEM5N6GJ.js} +4 -4
  127. package/dist/shared/chunk-KEM5N6GJ.js.map +1 -0
  128. package/dist/shared/{chunk-V3UA3LRK.js → chunk-KIDICX3Y.js} +32 -7
  129. package/dist/shared/chunk-KIDICX3Y.js.map +1 -0
  130. package/dist/shared/chunk-KILJYJFE.js +354 -0
  131. package/dist/shared/chunk-KILJYJFE.js.map +1 -0
  132. package/dist/shared/{chunk-GRMY35BU.js → chunk-L6C7HUSA.js} +148 -20
  133. package/dist/shared/chunk-L6C7HUSA.js.map +1 -0
  134. package/dist/shared/{chunk-GCQURRVB.js → chunk-LCJ2VFPM.js} +4 -4
  135. package/dist/shared/chunk-LCJ2VFPM.js.map +1 -0
  136. package/dist/shared/{chunk-QSND5IWT.js → chunk-LLNPH3XR.js} +19 -36
  137. package/dist/shared/chunk-LLNPH3XR.js.map +1 -0
  138. package/dist/shared/{chunk-LXAO3JA6.js → chunk-LTIJI7Y3.js} +4 -4
  139. package/dist/shared/chunk-LTIJI7Y3.js.map +1 -0
  140. package/dist/shared/{chunk-6E42XWFH.js → chunk-MFNHFN2B.js} +3 -3
  141. package/dist/shared/{chunk-6E42XWFH.js.map → chunk-MFNHFN2B.js.map} +1 -1
  142. package/dist/shared/{chunk-TEO6TJOM.js → chunk-N3BEBLWF.js} +27 -26
  143. package/dist/shared/{chunk-TEO6TJOM.js.map → chunk-N3BEBLWF.js.map} +1 -1
  144. package/dist/shared/{chunk-UQF52PWK.js → chunk-N3ZTQD5I.js} +2 -2
  145. package/dist/shared/chunk-N3ZTQD5I.js.map +1 -0
  146. package/dist/shared/{chunk-EQMU6NIU.js → chunk-TNTFKLCR.js} +16 -13
  147. package/dist/shared/chunk-TNTFKLCR.js.map +1 -0
  148. package/dist/shared/{chunk-EWSPTRDL.js → chunk-U5ZECCJM.js} +102 -16
  149. package/dist/shared/chunk-U5ZECCJM.js.map +1 -0
  150. package/dist/shared/{chunk-O5PLB3YB.js → chunk-UXTASZ23.js} +16 -10
  151. package/dist/shared/chunk-UXTASZ23.js.map +1 -0
  152. package/dist/shared/{chunk-BMWRR4DI.js → chunk-YWOTQWIQ.js} +3 -3
  153. package/dist/shared/chunk-YWOTQWIQ.js.map +1 -0
  154. package/dist/shared/{chunk-GPCI2N2A.js → chunk-ZR6R6Z6O.js} +106 -5
  155. package/dist/shared/chunk-ZR6R6Z6O.js.map +1 -0
  156. package/dist/shared/{chunk-U7TVEPKA.js → chunk-ZRRAK5NS.js} +3 -3
  157. package/dist/shared/chunk-ZRRAK5NS.js.map +1 -0
  158. package/dist/shared/context.d.ts +1 -0
  159. package/dist/shared/context.d.ts.map +1 -1
  160. package/dist/shared/datarecords/types.d.ts +7 -60
  161. package/dist/shared/datarecords/types.d.ts.map +1 -1
  162. package/dist/shared/datarecords/types.js +3 -5
  163. package/dist/shared/datasources/external/threads/media/fetcher.js +3 -3
  164. package/dist/shared/datasources/types.js +2 -2
  165. package/dist/shared/datasources.d.ts +1 -1
  166. package/dist/shared/datasources.d.ts.map +1 -1
  167. package/dist/shared/datasources.js +1 -3
  168. package/dist/shared/datasources.js.map +1 -1
  169. package/dist/shared/page.d.ts.map +1 -1
  170. package/dist/shared/page.js +31 -31
  171. package/dist/shared/site.d.ts +6 -6
  172. package/dist/shared/site.js +36 -36
  173. package/dist/shared/site.js.map +1 -1
  174. package/dist/shared/sitemap.d.ts +6 -5
  175. package/dist/shared/sitemap.d.ts.map +1 -1
  176. package/dist/shared/sitemap.js +32 -32
  177. package/dist/shared/theme.js +3 -3
  178. package/dist/shared/utils/llm.js +2 -2
  179. package/dist/shared/utils/schema-registry.js +2 -2
  180. package/dist/shared/utils/schema.js +3 -3
  181. package/package.json +2 -2
  182. package/src/shared/ai/schemas.ts +46 -10
  183. package/src/shared/ai/types.ts +128 -60
  184. package/src/shared/attributes.ts +11 -3
  185. package/src/shared/bricks/manifests/_types.ts +9 -0
  186. package/src/shared/bricks/manifests/accordion.manifest.ts +128 -161
  187. package/src/shared/bricks/manifests/all-manifests.ts +1 -0
  188. package/src/shared/bricks/manifests/box.manifest.ts +195 -129
  189. package/src/shared/bricks/manifests/button.manifest.ts +158 -71
  190. package/src/shared/bricks/manifests/card.manifest.ts +200 -28
  191. package/src/shared/bricks/manifests/carousel.manifest.ts +154 -22
  192. package/src/shared/bricks/manifests/footer.manifest.ts +2 -5
  193. package/src/shared/bricks/manifests/form.manifest.ts +122 -7
  194. package/src/shared/bricks/manifests/hero.manifest.ts +103 -18
  195. package/src/shared/bricks/manifests/html.manifest.ts +2 -5
  196. package/src/shared/bricks/manifests/icon.manifest.ts +216 -36
  197. package/src/shared/bricks/manifests/image.manifest.ts +103 -2
  198. package/src/shared/bricks/manifests/images-gallery.manifest.ts +2 -5
  199. package/src/shared/bricks/manifests/map.manifest.ts +2 -5
  200. package/src/shared/bricks/manifests/navbar.manifest.ts +2 -5
  201. package/src/shared/bricks/manifests/sidebar.manifest.ts +2 -5
  202. package/src/shared/bricks/manifests/social-links.manifest.ts +2 -5
  203. package/src/shared/bricks/manifests/spacer.manifest.ts +2 -5
  204. package/src/shared/bricks/manifests/table.manifest.ts +2 -5
  205. package/src/shared/bricks/manifests/tabs.manifest.ts +2 -5
  206. package/src/shared/bricks/manifests/testimonials.manifest.ts +2 -5
  207. package/src/shared/bricks/manifests/text.manifest.ts +31 -10
  208. package/src/shared/bricks/manifests/timeline.manifest.ts +2 -5
  209. package/src/shared/bricks/manifests/video.manifest.ts +2 -5
  210. package/src/shared/bricks/props/string.ts +1 -1
  211. package/src/shared/bricks.ts +12 -9
  212. package/src/shared/context.ts +1 -0
  213. package/src/shared/datarecords/types.ts +47 -37
  214. package/src/shared/datasources.ts +2 -4
  215. package/src/shared/page.ts +0 -1
  216. package/src/shared/site.ts +3 -3
  217. package/src/shared/sitemap.ts +2 -0
  218. package/src/shared/tests/schema-registry.test.ts +0 -2
  219. package/src/shared/utils/schema-registry.ts +5 -5
  220. package/src/shared/utils/tests/schema.test.ts +43 -2
  221. package/dist/shared/chunk-2HO4FHLM.js.map +0 -1
  222. package/dist/shared/chunk-3KLRW4I2.js.map +0 -1
  223. package/dist/shared/chunk-4WI23M7W.js.map +0 -1
  224. package/dist/shared/chunk-BMWRR4DI.js.map +0 -1
  225. package/dist/shared/chunk-CKFRSHR2.js.map +0 -1
  226. package/dist/shared/chunk-D4YQ6ABM.js.map +0 -1
  227. package/dist/shared/chunk-DRTGM2UJ.js.map +0 -1
  228. package/dist/shared/chunk-EQMU6NIU.js.map +0 -1
  229. package/dist/shared/chunk-EWSPTRDL.js.map +0 -1
  230. package/dist/shared/chunk-GCQURRVB.js.map +0 -1
  231. package/dist/shared/chunk-GPCI2N2A.js.map +0 -1
  232. package/dist/shared/chunk-GRMY35BU.js.map +0 -1
  233. package/dist/shared/chunk-LXAO3JA6.js.map +0 -1
  234. package/dist/shared/chunk-MLZT7MRQ.js.map +0 -1
  235. package/dist/shared/chunk-O5PLB3YB.js.map +0 -1
  236. package/dist/shared/chunk-P3RH5URN.js.map +0 -1
  237. package/dist/shared/chunk-QL3T5HJQ.js.map +0 -1
  238. package/dist/shared/chunk-QQQ3FYPG.js.map +0 -1
  239. package/dist/shared/chunk-QSND5IWT.js.map +0 -1
  240. package/dist/shared/chunk-SHUGHJ7V.js.map +0 -1
  241. package/dist/shared/chunk-U7TVEPKA.js.map +0 -1
  242. package/dist/shared/chunk-UQF52PWK.js.map +0 -1
  243. package/dist/shared/chunk-V3UA3LRK.js.map +0 -1
  244. package/dist/shared/chunk-WGDUJSSS.js.map +0 -1
  245. package/dist/shared/chunk-X6N463D4.js +0 -222
  246. package/dist/shared/chunk-X6N463D4.js.map +0 -1
  247. package/dist/shared/chunk-X75YV73Q.js +0 -178
  248. package/dist/shared/chunk-X75YV73Q.js.map +0 -1
  249. package/dist/shared/chunk-Z2NTDFB4.js.map +0 -1
  250. package/dist/shared/chunk-Z35I5JM5.js.map +0 -1
  251. package/dist/shared/schema-registry.d.ts +0 -5
  252. package/dist/shared/schema-registry.d.ts.map +0 -1
  253. package/dist/shared/schema-registry.js +0 -119
  254. package/dist/shared/schema-registry.js.map +0 -1
  255. package/src/shared/schema-registry.ts +0 -82
  256. /package/dist/shared/{chunk-FVU5PXRC.js.map → chunk-DV3G7X34.js.map} +0 -0
  257. /package/dist/shared/{chunk-TB3X4LRQ.js.map → chunk-EVLRH6VG.js.map} +0 -0
  258. /package/dist/shared/{chunk-NT3IW52F.js.map → chunk-HTUSL2U7.js.map} +0 -0
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-BHC2A43S.js";
6
6
  import {
7
7
  defineBrickManifest
8
- } from "./chunk-TB3X4LRQ.js";
8
+ } from "./chunk-EVLRH6VG.js";
9
9
 
10
10
  // src/shared/bricks/manifests/html.manifest.ts
11
11
  import { BsCodeSquare } from "react-icons/bs";
@@ -126,4 +126,4 @@ export {
126
126
  manifest,
127
127
  examples
128
128
  };
129
- //# sourceMappingURL=chunk-DRTGM2UJ.js.map
129
+ //# sourceMappingURL=chunk-GIGFNQBO.js.map
@@ -0,0 +1 @@
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\";\nimport type { BrickExample } from \"./_types\";\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: BrickExample<Manifest>[] = [\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;AAGd,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,WAAqC;AAAA,EAChD;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":[]}
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-BHC2A43S.js";
6
6
  import {
7
7
  defineBrickManifest
8
- } from "./chunk-TB3X4LRQ.js";
8
+ } from "./chunk-EVLRH6VG.js";
9
9
  import {
10
10
  fontSizeRef
11
11
  } from "./chunk-F22LDHEO.js";
@@ -15,7 +15,7 @@ import {
15
15
  import {
16
16
  iconRef,
17
17
  string
18
- } from "./chunk-UQF52PWK.js";
18
+ } from "./chunk-N3ZTQD5I.js";
19
19
  import {
20
20
  borderRef,
21
21
  roundingRef
@@ -516,4 +516,4 @@ export {
516
516
  manifest,
517
517
  examples
518
518
  };
519
- //# sourceMappingURL=chunk-SHUGHJ7V.js.map
519
+ //# sourceMappingURL=chunk-GQTZPN5D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/shared/bricks/manifests/social-links.manifest.ts"],"sourcesContent":["import { Type } from \"@sinclair/typebox\";\nimport { TiSocialFlickr } from \"react-icons/ti\";\nimport { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps } from \"../props/helpers\";\nimport { iconRef, string } from \"../props/string\";\nimport type { BrickProps } from \"../props/types\";\nimport { fontSizeRef } from \"../props/text\";\nimport { directionRef } from \"../props/direction\";\nimport { colorPresetRef } from \"../props/color-preset\";\nimport { borderRef, roundingRef } from \"../props/border\";\nimport { cssLengthRef } from \"../props/css-length\";\nimport type { BrickExample } from \"./_types\";\n\nexport const manifest = defineBrickManifest({\n type: \"social-links\",\n name: \"Social links\",\n description: \"A list of social media links\",\n icon: TiSocialFlickr,\n defaultWidth: {\n mobile: \"100%\",\n },\n props: defineProps({\n colorPreset: Type.Optional(\n colorPresetRef({\n title: \"Color\",\n }),\n ),\n links: Type.Array(\n Type.Object({\n icon: Type.Optional(\n iconRef({\n \"ui:default-icon-collection\": \"cib\",\n }),\n ),\n label: Type.Optional(string(\"Label\")),\n href: string(\"Link\"),\n }),\n {\n title: \"Social Links\",\n description: \"List of social media links\",\n default: [\n {\n href: \"https://facebook.com/company\",\n label: \"Facebook\",\n icon: \"mdi:facebook\",\n },\n {\n href: \"https://twitter.com/company\",\n label: \"Twitter\",\n icon: \"mdi:twitter\",\n },\n {\n href: \"https://instagram.com/company\",\n label: \"Instagram\",\n icon: \"mdi:instagram\",\n },\n ],\n \"ui:widget\": \"array\",\n \"ui:displayField\": \"label\",\n \"ui:options\": {\n orderable: true, // Enable drag & drop reordering\n removable: true, // Enable delete button\n addable: true, // Enable add button\n },\n metadata: {\n category: \"content\",\n },\n },\n ),\n direction: Type.Optional(\n directionRef({\n default: \"flex-row\",\n }),\n ),\n fontSize: Type.Optional(fontSizeRef()),\n padding: Type.Optional(\n cssLengthRef({\n default: \"2rem\",\n description: \"Padding.\",\n \"ai:instructions\": \"Use only a single value like '1rem' or '10px'\",\n title: \"Padding\",\n \"ui:responsive\": true,\n \"ui:placeholder\": \"Not specified\",\n \"ui:styleId\": \"styles:padding\",\n }),\n ),\n rounding: Type.Optional(\n roundingRef({\n default: \"rounded-md\",\n }),\n ),\n border: Type.Optional(borderRef()),\n iconOnly: Type.Optional(\n Type.Boolean({\n title: \"Only icons\",\n description: \"If set, the brick will only display the icons without labels.\",\n }),\n ),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: BrickExample<Manifest>[] = [\n {\n description: \"Social icons displayed horizontally, without labels\",\n type: \"social-links\",\n props: {\n iconOnly: true,\n links: [\n {\n href: \"https://facebook.com/company\",\n label: \"Facebook\",\n icon: \"mdi:facebook\",\n },\n {\n href: \"https://twitter.com/company\",\n label: \"Twitter\",\n icon: \"mdi:twitter\",\n },\n {\n href: \"https://instagram.com/company\",\n label: \"Instagram\",\n icon: \"mdi:instagram\",\n },\n ],\n },\n },\n {\n description: \"Social icons displayed vertically, without labels\",\n type: \"social-links\",\n props: {\n iconOnly: true,\n direction: \"flex-col\",\n links: [\n {\n href: \"https://facebook.com/company\",\n label: \"Facebook\",\n icon: \"mdi:facebook\",\n },\n {\n href: \"https://twitter.com/company\",\n label: \"Twitter\",\n icon: \"mdi:twitter\",\n },\n {\n href: \"https://instagram.com/company\",\n label: \"Instagram\",\n icon: \"mdi:instagram\",\n },\n ],\n },\n },\n {\n description: \"Social icons displayed horizontally, with labels\",\n type: \"social-links\",\n props: {\n iconOnly: false,\n links: [\n {\n href: \"https://facebook.com/company\",\n label: \"Facebook\",\n icon: \"mdi:facebook\",\n },\n {\n href: \"https://twitter.com/company\",\n label: \"Twitter\",\n icon: \"mdi:twitter\",\n },\n {\n href: \"https://instagram.com/company\",\n label: \"Instagram\",\n icon: \"mdi:instagram\",\n },\n {\n href: \"https://linkedin.com/company/company\",\n label: \"LinkedIn\",\n icon: \"mdi:linkedin\",\n },\n ],\n },\n },\n {\n description: \"Social icons displayed vertically, with labels\",\n type: \"social-links\",\n props: {\n iconOnly: false,\n direction: \"flex-col\",\n links: [\n {\n href: \"https://facebook.com/company\",\n label: \"Facebook\",\n icon: \"mdi:facebook\",\n },\n {\n href: \"https://twitter.com/company\",\n label: \"Twitter\",\n icon: \"mdi:twitter\",\n },\n {\n href: \"https://instagram.com/company\",\n label: \"Instagram\",\n icon: \"mdi:instagram\",\n },\n {\n href: \"https://linkedin.com/company/company\",\n label: \"LinkedIn\",\n icon: \"mdi:linkedin\",\n },\n ],\n },\n },\n {\n description: \"Professional social links with labels\",\n type: \"social-links\",\n props: {\n iconOnly: false,\n links: [\n {\n href: \"https://linkedin.com/in/johndoe\",\n label: \"Connect on LinkedIn\",\n icon: \"mdi:linkedin\",\n },\n {\n href: \"https://github.com/johndoe\",\n label: \"View GitHub Profile\",\n icon: \"mdi:github\",\n },\n {\n href: \"https://twitter.com/johndoe\",\n label: \"Follow on Twitter\",\n icon: \"mdi:twitter\",\n },\n {\n href: \"mailto:john@example.com\",\n label: \"Send Email\",\n icon: \"mdi:email\",\n },\n ],\n },\n },\n {\n description: \"Creative portfolio social links (icon-only inline)\",\n type: \"social-links\",\n props: {\n iconOnly: true,\n links: [\n {\n href: \"https://dribbble.com/designer\",\n label: \"Dribbble\",\n icon: \"mdi:dribbble\",\n },\n {\n href: \"https://behance.net/designer\",\n label: \"Behance\",\n icon: \"mdi:behance\",\n },\n {\n href: \"https://instagram.com/designer\",\n label: \"Instagram\",\n icon: \"mdi:instagram\",\n },\n {\n href: \"https://pinterest.com/designer\",\n label: \"Pinterest\",\n icon: \"mdi:pinterest\",\n },\n {\n href: \"https://youtube.com/designer\",\n label: \"YouTube\",\n icon: \"mdi:youtube\",\n },\n ],\n },\n },\n {\n description: \"Developer/tech social links with labels\",\n type: \"social-links\",\n props: {\n iconOnly: false,\n direction: \"flex-col\",\n links: [\n {\n href: \"https://github.com/developer\",\n label: \"GitHub\",\n icon: \"mdi:github\",\n },\n {\n href: \"https://stackoverflow.com/users/developer\",\n label: \"Stack Overflow\",\n icon: \"mdi:stack-overflow\",\n },\n {\n href: \"https://dev.to/developer\",\n label: \"Dev.to\",\n icon: \"mdi:dev-to\",\n },\n {\n href: \"https://codepen.io/developer\",\n label: \"CodePen\",\n icon: \"mdi:codepen\",\n },\n ],\n },\n },\n {\n description: \"Music artist social platforms (block layout)\",\n type: \"social-links\",\n props: {\n iconOnly: true,\n direction: \"flex-col\",\n links: [\n {\n href: \"https://spotify.com/artist/musician\",\n label: \"Listen on Spotify\",\n icon: \"mdi:spotify\",\n },\n {\n href: \"https://music.apple.com/artist/musician\",\n label: \"Apple Music\",\n icon: \"mdi:apple\",\n },\n {\n href: \"https://soundcloud.com/musician\",\n label: \"SoundCloud\",\n icon: \"mdi:soundcloud\",\n },\n {\n href: \"https://youtube.com/musician\",\n label: \"YouTube Channel\",\n icon: \"mdi:youtube\",\n },\n {\n href: \"https://bandcamp.com/musician\",\n label: \"Bandcamp\",\n icon: \"mdi:bandcamp\",\n },\n ],\n },\n },\n {\n description: \"Business contact icons only\",\n type: \"social-links\",\n props: {\n iconOnly: true,\n links: [\n {\n href: \"tel:+1234567890\",\n label: \"Phone\",\n icon: \"mdi:phone\",\n },\n {\n href: \"mailto:contact@business.com\",\n label: \"Email\",\n icon: \"mdi:email\",\n },\n {\n href: \"https://maps.google.com/business\",\n label: \"Location\",\n icon: \"mdi:map-marker\",\n },\n {\n href: \"https://business.com\",\n label: \"Website\",\n icon: \"mdi:web\",\n },\n ],\n },\n },\n {\n description: \"Gaming content creator links (inline with labels)\",\n type: \"social-links\",\n props: {\n iconOnly: false,\n links: [\n {\n href: \"https://twitch.tv/gamer\",\n label: \"Twitch\",\n icon: \"mdi:twitch\",\n },\n {\n href: \"https://youtube.com/gamer\",\n label: \"YouTube\",\n icon: \"mdi:youtube\",\n },\n {\n href: \"https://discord.gg/gamer\",\n label: \"Discord\",\n icon: \"mdi:discord\",\n },\n {\n href: \"https://tiktok.com/@gamer\",\n label: \"TikTok\",\n icon: \"mdi:tiktok\",\n },\n ],\n },\n },\n {\n description: \"Restaurant social presence (block layout)\",\n type: \"social-links\",\n props: {\n iconOnly: false,\n direction: \"flex-col\",\n links: [\n {\n href: \"https://facebook.com/restaurant\",\n label: \"Follow us on Facebook\",\n icon: \"mdi:facebook\",\n },\n {\n href: \"https://instagram.com/restaurant\",\n label: \"See photos on Instagram\",\n icon: \"mdi:instagram\",\n },\n {\n href: \"https://yelp.com/restaurant\",\n label: \"Review us on Yelp\",\n icon: \"mdi:yelp\",\n },\n {\n href: \"https://tripadvisor.com/restaurant\",\n label: \"TripAdvisor Reviews\",\n icon: \"mdi:tripadvisor\",\n },\n {\n href: \"tel:+1234567890\",\n label: \"Call for Reservations\",\n icon: \"mdi:phone\",\n },\n ],\n },\n },\n {\n description: \"Minimal footer social icons\",\n type: \"social-links\",\n props: {\n iconOnly: true,\n direction: \"flex-row\",\n links: [\n {\n href: \"https://twitter.com/company\",\n label: \"Twitter\",\n icon: \"mdi:twitter\",\n },\n {\n href: \"https://linkedin.com/company/company\",\n label: \"LinkedIn\",\n icon: \"mdi:linkedin\",\n },\n {\n href: \"mailto:hello@company.com\",\n label: \"Email\",\n icon: \"mdi:email\",\n },\n ],\n },\n },\n {\n description: \"E-commerce store social channels (inline with labels)\",\n type: \"social-links\",\n props: {\n iconOnly: false,\n direction: \"flex-row\",\n links: [\n {\n href: \"https://facebook.com/store\",\n label: \"Facebook\",\n icon: \"mdi:facebook\",\n },\n {\n href: \"https://instagram.com/store\",\n label: \"Instagram\",\n icon: \"mdi:instagram\",\n },\n {\n href: \"https://pinterest.com/store\",\n label: \"Pinterest\",\n icon: \"mdi:pinterest\",\n },\n {\n href: \"https://youtube.com/store\",\n label: \"YouTube\",\n icon: \"mdi:youtube\",\n },\n {\n href: \"https://tiktok.com/@store\",\n label: \"TikTok\",\n icon: \"mdi:tiktok\",\n },\n ],\n },\n },\n];\n"],"mappings":"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","names":[]}
@@ -5,16 +5,19 @@ import {
5
5
  } from "./chunk-BHC2A43S.js";
6
6
  import {
7
7
  defineBrickManifest
8
- } from "./chunk-TB3X4LRQ.js";
8
+ } from "./chunk-EVLRH6VG.js";
9
9
  import {
10
10
  loopRef
11
- } from "./chunk-BW6EFRSF.js";
11
+ } from "./chunk-IQIISR22.js";
12
12
  import {
13
13
  textContentRef
14
14
  } from "./chunk-F22LDHEO.js";
15
15
  import {
16
16
  shadowRef
17
17
  } from "./chunk-TNMNMYOB.js";
18
+ import {
19
+ urlOrPageIdRef
20
+ } from "./chunk-N3ZTQD5I.js";
18
21
  import {
19
22
  imageRef
20
23
  } from "./chunk-W6MRYRGJ.js";
@@ -36,7 +39,7 @@ var manifest = defineBrickManifest({
36
39
  type: "card",
37
40
  name: "Card",
38
41
  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.",
42
+ aiInstructions: "Use this brick to create visually distinct content blocks (product, feature, testimonial, event, article, CTA, etc.).\n\nGuidelines:\n- Button is REQUIRED. Always provide a short action label (1\u20133 words) and pick a color matching semantic weight (primary/accent for primary actions, neutral/secondary for low emphasis).\n- Image is OPTIONAL. If present you may set imagePosition to top | middle | bottom. Default is top. Pick middle for vertically centered feature highlights, bottom for caption-first layouts.\n- Set noTitle: true when the card is intentionally title-less (e.g. a quote card or pure media focus). Do NOT include an empty title string alongside noTitle.\n- Use dynamic tokens (e.g. {{products.price}}) instead of duplicating literal values.\n- Prefer gradient presets for more visual emphasis (e.g. primary-gradient-400 with gradientDirection).\n- border + rounding + shadow should be cohesive: stronger borders pair well with larger rounding + moderate shadow; minimal / flat cards may use border-0 + no shadow.\n- For internal navigation you can supply a page ID (e.g. 'about') OR a relative/absolute URL (e.g. '/pricing', 'https://example.com').\n- Keep HTML inside text minimal (<strong>, <em>, <br>) \u2014 for richer structure consider multiple bricks instead.\n- Avoid mixing noTitle with large heading text embedded inside the text field \u2014 in that case keep a proper title.\n\nReturn ONLY valid properties defined in the schema; do not invent new ones.",
40
43
  icon: BsCardText,
41
44
  defaultWidth: { desktop: "400px", mobile: "100%" },
42
45
  minWidth: { desktop: 300 },
@@ -58,8 +61,8 @@ var manifest = defineBrickManifest({
58
61
  })
59
62
  ),
60
63
  imagePosition: Type.Optional(
61
- StringEnum(["top", "middle", "bottom", "left", "right"], {
62
- enumNames: ["Top", "Middle", "Bottom", "Left", "Right"],
64
+ StringEnum(["top", "middle", "bottom"], {
65
+ enumNames: ["Top", "Middle", "Bottom"],
63
66
  title: "Image Position",
64
67
  description: "Where the image should be placed in the card",
65
68
  default: "top",
@@ -97,7 +100,34 @@ var manifest = defineBrickManifest({
97
100
  default: "shadow-sm"
98
101
  })
99
102
  ),
100
- loop: Type.Optional(loopRef())
103
+ loop: Type.Optional(loopRef()),
104
+ button: Type.Object(
105
+ {
106
+ label: Type.String({
107
+ title: "Button label",
108
+ default: "Click me",
109
+ examples: ["Learn more", "Buy now", "Sign up"],
110
+ metadata: {
111
+ category: "content"
112
+ }
113
+ }),
114
+ url: urlOrPageIdRef({
115
+ title: "Button URL",
116
+ description: "The URL the button should link to.",
117
+ metadata: {
118
+ category: "content"
119
+ }
120
+ }),
121
+ color: Type.Optional(
122
+ StringEnum(["btn-neutral", "btn-primary", "btn-secondary", "btn-accent"], {
123
+ enumNames: ["Neutral", "Primary", "Secondary", "Accent"],
124
+ title: "Color",
125
+ default: "btn-primary"
126
+ })
127
+ )
128
+ },
129
+ { title: "Button", description: "Button displayed at the bottom of the card" }
130
+ )
101
131
  })
102
132
  });
103
133
  var examples = [
@@ -106,50 +136,142 @@ var examples = [
106
136
  type: "card",
107
137
  props: {
108
138
  title: "Card Title",
109
- text: "This is the body of the card."
139
+ text: "This is the body of the card.",
140
+ button: {
141
+ label: "Learn more",
142
+ url: "/learn-more",
143
+ color: "btn-primary"
144
+ }
110
145
  }
111
146
  },
147
+ // IMAGE POSITION MIDDLE VARIANT
112
148
  {
113
- description: "Product card with image on the left",
149
+ description: "Feature highlight card with centered image (imagePosition=middle)",
114
150
  type: "card",
115
151
  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."
152
+ cardImage: { src: "https://via.placeholder.com/420x240", alt: "Feature visual" },
153
+ imagePosition: "middle",
154
+ title: "Blazing Performance",
155
+ text: "Our new engine reduces processing time by 45% while maintaining reliability.",
156
+ colorPreset: { color: "primary-100" },
157
+ border: { width: "border", color: "border-primary-200" },
158
+ rounding: "rounded-lg",
159
+ shadow: "shadow-sm",
160
+ button: { label: "Learn More", url: "/features/performance", color: "btn-primary" }
122
161
  }
123
162
  },
163
+ // IMAGE POSITION BOTTOM VARIANT
124
164
  {
125
- description: "Feature card with large padding and background",
165
+ description: "Case study card with image at the bottom (imagePosition=bottom)",
126
166
  type: "card",
127
167
  props: {
128
- title: "Key Feature",
129
- text: "This feature provides exceptional value and enhances user experience significantly."
168
+ title: "Case Study: ScaleOps",
169
+ text: "How ScaleOps handled 10x growth with zero downtime using our platform.",
170
+ cardImage: { src: "https://via.placeholder.com/600x260", alt: "Scale graph" },
171
+ imagePosition: "bottom",
172
+ colorPreset: { color: "secondary-50" },
173
+ rounding: "rounded-md",
174
+ shadow: "shadow-sm",
175
+ button: { label: "Read Study", url: "/cases/scaleops", color: "btn-secondary" }
130
176
  }
131
177
  },
178
+ // NO TITLE VARIANT
132
179
  {
133
- description: "Blog post card with image at the bottom",
180
+ description: "Quote / testimonial style card without a title (uses noTitle=true)",
134
181
  type: "card",
135
182
  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"
183
+ noTitle: true,
184
+ text: '"This toolkit accelerated our launch by weeks \u2014 the component quality is outstanding."<br><em>\u2014 CTO, FinEdge</em>',
185
+ colorPreset: { color: "neutral-100" },
186
+ border: { width: "border", color: "border-neutral-300" },
187
+ rounding: "rounded-xl",
188
+ shadow: "shadow-sm",
189
+ button: { label: "See More", url: "/testimonials", color: "btn-neutral" }
190
+ }
191
+ },
192
+ // INTERNAL PAGE ID LINK VARIANT
193
+ {
194
+ description: "Internal navigation card using a page ID instead of a URL",
195
+ type: "card",
196
+ props: {
197
+ title: "About Our Mission",
198
+ text: "Learn how we're building an open, extensible site generation platform for modern teams.",
199
+ colorPreset: { color: "base-100" },
200
+ rounding: "rounded-md",
201
+ button: { label: "About Us", url: "about", color: "btn-primary" }
202
+ }
203
+ },
204
+ // GRADIENT & STRONG BORDER VARIANT
205
+ {
206
+ description: "High-emphasis promotional card using gradient background and thick border",
207
+ type: "card",
208
+ props: {
209
+ title: "Limited Time Offer",
210
+ text: "Upgrade now and receive a complimentary strategy session plus extended analytics access.",
211
+ colorPreset: { color: "primary-gradient-400", gradientDirection: "bg-gradient-to-tr" },
212
+ border: { width: "border-4", color: "border-primary-400" },
213
+ rounding: "rounded-xl",
214
+ shadow: "shadow-lg",
215
+ button: { label: "Upgrade", url: "/pricing", color: "btn-accent" }
216
+ }
217
+ },
218
+ // MINIMAL / FLAT VARIANT (no border, no shadow, subtle preset)
219
+ {
220
+ description: "Minimal flat information card (border-0, no shadow)",
221
+ type: "card",
222
+ props: {
223
+ title: "Maintenance Window",
224
+ text: "Scheduled maintenance on Saturday 02:00\u201303:00 UTC. API responses may be delayed.",
225
+ colorPreset: { color: "neutral-50" },
226
+ border: { width: "border-0", color: "border-neutral-200" },
227
+ button: { label: "Status Page", url: "/status", color: "btn-neutral" }
228
+ }
229
+ },
230
+ // DARK / INVERTED VARIANT
231
+ {
232
+ description: "Dark themed spotlight card (primary-800 background)",
233
+ type: "card",
234
+ props: {
235
+ title: "Night Mode Preview",
236
+ text: "Experience the new adaptive dark theme optimized for low ambient light environments.",
237
+ colorPreset: { color: "primary-800" },
238
+ border: { width: "border", color: "border-primary-600" },
239
+ rounding: "rounded-lg",
240
+ shadow: "shadow-md",
241
+ button: { label: "Preview", url: "/themes/dark", color: "btn-primary" }
242
+ }
243
+ },
244
+ {
245
+ description: "Feature card with large padding and background",
246
+ type: "card",
247
+ props: {
248
+ title: "Key Feature",
249
+ text: "This feature provides exceptional value and enhances user experience significantly.",
250
+ colorPreset: { color: "primary-50" },
251
+ border: { width: "border", color: "border-primary-200" },
252
+ rounding: "rounded-lg",
253
+ shadow: "shadow-sm",
254
+ button: {
255
+ label: "Discover More",
256
+ url: "/features",
257
+ color: "btn-primary"
141
258
  }
142
259
  }
143
260
  },
144
261
  {
145
- description: "Testimonial card with right-side image",
262
+ description: "Blog post card with image at the bottom",
146
263
  type: "card",
147
264
  props: {
148
- title: "Customer Review",
149
- text: '"This product exceeded my expectations. The quality is outstanding and the customer service is top-notch!"',
265
+ title: "Future of Tech",
266
+ text: "Exploring emerging trends and innovations that will shape our digital landscape in the coming decade.",
150
267
  cardImage: {
151
- src: "https://via.placeholder.com/150x150",
152
- alt: "Customer photo"
268
+ src: "https://via.placeholder.com/400x200",
269
+ alt: "Technology concept"
270
+ },
271
+ button: {
272
+ label: "Read More",
273
+ url: "/blog/{{ blogPosts.$slug }}",
274
+ color: "btn-primary"
153
275
  }
154
276
  }
155
277
  },
@@ -158,7 +280,12 @@ var examples = [
158
280
  type: "card",
159
281
  props: {
160
282
  title: "Simple Announcement",
161
- text: "Important updates will be posted here regularly."
283
+ text: "Important updates will be posted here regularly.",
284
+ button: {
285
+ label: "View Updates",
286
+ url: "/updates",
287
+ color: "btn-neutral"
288
+ }
162
289
  }
163
290
  },
164
291
  {
@@ -170,7 +297,12 @@ var examples = [
170
297
  alt: "Event venue"
171
298
  },
172
299
  title: "Annual Conference 2025",
173
- text: "Join us for three days of inspiring talks, networking opportunities, and hands-on workshops."
300
+ text: "Join us for three days of inspiring talks, networking opportunities, and hands-on workshops.",
301
+ button: {
302
+ label: "Register Now",
303
+ url: "/events/conference-2025",
304
+ color: "btn-primary"
305
+ }
174
306
  }
175
307
  },
176
308
  {
@@ -182,7 +314,12 @@ var examples = [
182
314
  alt: "News thumbnail"
183
315
  },
184
316
  title: "Breaking News Update",
185
- text: "Latest developments in the ongoing story with expert analysis and community reactions."
317
+ text: "Latest developments in the ongoing story with expert analysis and community reactions.",
318
+ button: {
319
+ label: "Read Full Article",
320
+ url: "/news/breaking-update",
321
+ color: "btn-secondary"
322
+ }
186
323
  }
187
324
  },
188
325
  {
@@ -190,7 +327,12 @@ var examples = [
190
327
  type: "card",
191
328
  props: {
192
329
  title: "Get Started Today",
193
- text: "Transform your workflow with our powerful tools. Sign up now and get 30 days free!"
330
+ text: "Transform your workflow with our powerful tools. Sign up now and get 30 days free!",
331
+ button: {
332
+ label: "Sign Up Now",
333
+ url: "/signup",
334
+ color: "btn-primary"
335
+ }
194
336
  }
195
337
  },
196
338
  {
@@ -207,6 +349,11 @@ var examples = [
207
349
  border: { width: "border", color: "border-primary-200" },
208
350
  rounding: "rounded-lg",
209
351
  shadow: "shadow-md",
352
+ button: {
353
+ label: "Buy Now",
354
+ url: "{{products.purchaseUrl}}",
355
+ color: "btn-primary"
356
+ },
210
357
  loop: {
211
358
  over: "products"
212
359
  }
@@ -226,6 +373,11 @@ var examples = [
226
373
  colorPreset: { color: "neutral-100" },
227
374
  rounding: "rounded-xl",
228
375
  shadow: "shadow-lg",
376
+ button: {
377
+ label: "Contact",
378
+ url: "mailto:{{teamMembers.email}}",
379
+ color: "btn-neutral"
380
+ },
229
381
  loop: {
230
382
  over: "teamMembers"
231
383
  }
@@ -246,6 +398,11 @@ var examples = [
246
398
  border: { width: "border", color: "border-secondary-300" },
247
399
  rounding: "rounded-md",
248
400
  shadow: "shadow-sm",
401
+ button: {
402
+ label: "Read More",
403
+ url: "{{blogPosts.url}}",
404
+ color: "btn-secondary"
405
+ },
249
406
  loop: {
250
407
  over: "blogPosts"
251
408
  }
@@ -266,6 +423,11 @@ var examples = [
266
423
  border: { width: "border-2", color: "border-accent-400" },
267
424
  rounding: "rounded-lg",
268
425
  shadow: "shadow-md",
426
+ button: {
427
+ label: "Book Tickets",
428
+ url: "{{upcomingEvents.ticketUrl}}",
429
+ color: "btn-accent"
430
+ },
269
431
  loop: {
270
432
  over: "upcomingEvents"
271
433
  }
@@ -279,12 +441,17 @@ var examples = [
279
441
  src: "{{customerReviews.customerPhoto}}",
280
442
  alt: "{{customerReviews.customerName}}"
281
443
  },
282
- imagePosition: "left",
444
+ imagePosition: "top",
283
445
  title: "{{customerReviews.customerName}}",
284
446
  text: '"{{customerReviews.review}}"<br><br><strong>Rating: {{customerReviews.rating}}/5 stars</strong><br>{{customerReviews.company}} \u2022 {{customerReviews.position}}',
285
447
  colorPreset: { color: "neutral-50" },
286
448
  rounding: "rounded-xl",
287
449
  shadow: "shadow-lg",
450
+ button: {
451
+ label: "See All Reviews",
452
+ url: "/reviews",
453
+ color: "btn-neutral"
454
+ },
288
455
  loop: {
289
456
  over: "customerReviews"
290
457
  }
@@ -305,6 +472,11 @@ var examples = [
305
472
  border: { width: "border", color: "border-primary-300" },
306
473
  rounding: "rounded-lg",
307
474
  shadow: "shadow-md",
475
+ button: {
476
+ label: "Learn More",
477
+ url: "{{companyServices.detailsUrl}}",
478
+ color: "btn-primary"
479
+ },
308
480
  loop: {
309
481
  over: "companyServices"
310
482
  }
@@ -324,6 +496,11 @@ var examples = [
324
496
  colorPreset: { color: "secondary-100" },
325
497
  rounding: "rounded-md",
326
498
  shadow: "shadow-sm",
499
+ button: {
500
+ label: "View Project",
501
+ url: "{{portfolioWork.projectUrl}}",
502
+ color: "btn-secondary"
503
+ },
327
504
  loop: {
328
505
  over: "portfolioWork"
329
506
  }
@@ -335,4 +512,4 @@ export {
335
512
  manifest,
336
513
  examples
337
514
  };
338
- //# sourceMappingURL=chunk-D4YQ6ABM.js.map
515
+ //# sourceMappingURL=chunk-H5JM2M2T.js.map
@@ -0,0 +1 @@
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\";\nimport { urlOrPageIdRef } from \"../props/string\";\nimport type { BrickExample } from \"./_types\";\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 visually distinct content blocks (product, feature, testimonial, event, article, CTA, etc.).\\n\\nGuidelines:\\n- Button is REQUIRED. Always provide a short action label (1–3 words) and pick a color matching semantic weight (primary/accent for primary actions, neutral/secondary for low emphasis).\\n- Image is OPTIONAL. If present you may set imagePosition to top | middle | bottom. Default is top. Pick middle for vertically centered feature highlights, bottom for caption-first layouts.\\n- Set noTitle: true when the card is intentionally title-less (e.g. a quote card or pure media focus). Do NOT include an empty title string alongside noTitle.\\n- Use dynamic tokens (e.g. {{products.price}}) instead of duplicating literal values.\\n- Prefer gradient presets for more visual emphasis (e.g. primary-gradient-400 with gradientDirection).\\n- border + rounding + shadow should be cohesive: stronger borders pair well with larger rounding + moderate shadow; minimal / flat cards may use border-0 + no shadow.\\n- For internal navigation you can supply a page ID (e.g. 'about') OR a relative/absolute URL (e.g. '/pricing', 'https://example.com').\\n- Keep HTML inside text minimal (<strong>, <em>, <br>) — for richer structure consider multiple bricks instead.\\n- Avoid mixing noTitle with large heading text embedded inside the text field — in that case keep a proper title.\\n\\nReturn ONLY valid properties defined in the schema; do not invent new ones.\",\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\"], {\n enumNames: [\"Top\", \"Middle\", \"Bottom\"],\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 button: Type.Object(\n {\n label: Type.String({\n title: \"Button label\",\n default: \"Click me\",\n examples: [\"Learn more\", \"Buy now\", \"Sign up\"],\n metadata: {\n category: \"content\",\n },\n }),\n url: urlOrPageIdRef({\n title: \"Button URL\",\n description: \"The URL the button should link to.\",\n metadata: {\n category: \"content\",\n },\n }),\n color: Type.Optional(\n StringEnum([\"btn-neutral\", \"btn-primary\", \"btn-secondary\", \"btn-accent\"], {\n enumNames: [\"Neutral\", \"Primary\", \"Secondary\", \"Accent\"],\n title: \"Color\",\n default: \"btn-primary\",\n }),\n ),\n },\n { title: \"Button\", description: \"Button displayed at the bottom of the card\" },\n ),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: BrickExample<Manifest>[] = [\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 button: {\n label: \"Learn more\",\n url: \"/learn-more\",\n color: \"btn-primary\",\n },\n },\n },\n // IMAGE POSITION MIDDLE VARIANT\n {\n description: \"Feature highlight card with centered image (imagePosition=middle)\",\n type: \"card\",\n props: {\n cardImage: { src: \"https://via.placeholder.com/420x240\", alt: \"Feature visual\" },\n imagePosition: \"middle\",\n title: \"Blazing Performance\",\n text: \"Our new engine reduces processing time by 45% while maintaining reliability.\",\n colorPreset: { color: \"primary-100\" },\n border: { width: \"border\", color: \"border-primary-200\" },\n rounding: \"rounded-lg\",\n shadow: \"shadow-sm\",\n button: { label: \"Learn More\", url: \"/features/performance\", color: \"btn-primary\" },\n },\n },\n // IMAGE POSITION BOTTOM VARIANT\n {\n description: \"Case study card with image at the bottom (imagePosition=bottom)\",\n type: \"card\",\n props: {\n title: \"Case Study: ScaleOps\",\n text: \"How ScaleOps handled 10x growth with zero downtime using our platform.\",\n cardImage: { src: \"https://via.placeholder.com/600x260\", alt: \"Scale graph\" },\n imagePosition: \"bottom\",\n colorPreset: { color: \"secondary-50\" },\n rounding: \"rounded-md\",\n shadow: \"shadow-sm\",\n button: { label: \"Read Study\", url: \"/cases/scaleops\", color: \"btn-secondary\" },\n },\n },\n // NO TITLE VARIANT\n {\n description: \"Quote / testimonial style card without a title (uses noTitle=true)\",\n type: \"card\",\n props: {\n noTitle: true,\n text: '\"This toolkit accelerated our launch by weeks — the component quality is outstanding.\"<br><em>— CTO, FinEdge</em>',\n colorPreset: { color: \"neutral-100\" },\n border: { width: \"border\", color: \"border-neutral-300\" },\n rounding: \"rounded-xl\",\n shadow: \"shadow-sm\",\n button: { label: \"See More\", url: \"/testimonials\", color: \"btn-neutral\" },\n },\n },\n // INTERNAL PAGE ID LINK VARIANT\n {\n description: \"Internal navigation card using a page ID instead of a URL\",\n type: \"card\",\n props: {\n title: \"About Our Mission\",\n text: \"Learn how we're building an open, extensible site generation platform for modern teams.\",\n colorPreset: { color: \"base-100\" },\n rounding: \"rounded-md\",\n button: { label: \"About Us\", url: \"about\", color: \"btn-primary\" },\n },\n },\n // GRADIENT & STRONG BORDER VARIANT\n {\n description: \"High-emphasis promotional card using gradient background and thick border\",\n type: \"card\",\n props: {\n title: \"Limited Time Offer\",\n text: \"Upgrade now and receive a complimentary strategy session plus extended analytics access.\",\n colorPreset: { color: \"primary-gradient-400\", gradientDirection: \"bg-gradient-to-tr\" },\n border: { width: \"border-4\", color: \"border-primary-400\" },\n rounding: \"rounded-xl\",\n shadow: \"shadow-lg\",\n button: { label: \"Upgrade\", url: \"/pricing\", color: \"btn-accent\" },\n },\n },\n // MINIMAL / FLAT VARIANT (no border, no shadow, subtle preset)\n {\n description: \"Minimal flat information card (border-0, no shadow)\",\n type: \"card\",\n props: {\n title: \"Maintenance Window\",\n text: \"Scheduled maintenance on Saturday 02:00–03:00 UTC. API responses may be delayed.\",\n colorPreset: { color: \"neutral-50\" },\n border: { width: \"border-0\", color: \"border-neutral-200\" },\n button: { label: \"Status Page\", url: \"/status\", color: \"btn-neutral\" },\n },\n },\n // DARK / INVERTED VARIANT\n {\n description: \"Dark themed spotlight card (primary-800 background)\",\n type: \"card\",\n props: {\n title: \"Night Mode Preview\",\n text: \"Experience the new adaptive dark theme optimized for low ambient light environments.\",\n colorPreset: { color: \"primary-800\" },\n border: { width: \"border\", color: \"border-primary-600\" },\n rounding: \"rounded-lg\",\n shadow: \"shadow-md\",\n button: { label: \"Preview\", url: \"/themes/dark\", color: \"btn-primary\" },\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 colorPreset: { color: \"primary-50\" },\n border: { width: \"border\", color: \"border-primary-200\" },\n rounding: \"rounded-lg\",\n shadow: \"shadow-sm\",\n button: {\n label: \"Discover More\",\n url: \"/features\",\n color: \"btn-primary\",\n },\n },\n },\n {\n description: \"Blog post card with image at the bottom\",\n type: \"card\",\n props: {\n title: \"Future of Tech\",\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 button: {\n label: \"Read More\",\n url: \"/blog/{{ blogPosts.$slug }}\",\n color: \"btn-primary\",\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 button: {\n label: \"View Updates\",\n url: \"/updates\",\n color: \"btn-neutral\",\n },\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 button: {\n label: \"Register Now\",\n url: \"/events/conference-2025\",\n color: \"btn-primary\",\n },\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 button: {\n label: \"Read Full Article\",\n url: \"/news/breaking-update\",\n color: \"btn-secondary\",\n },\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 button: {\n label: \"Sign Up Now\",\n url: \"/signup\",\n color: \"btn-primary\",\n },\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 button: {\n label: \"Buy Now\",\n url: \"{{products.purchaseUrl}}\",\n color: \"btn-primary\",\n },\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 button: {\n label: \"Contact\",\n url: \"mailto:{{teamMembers.email}}\",\n color: \"btn-neutral\",\n },\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 button: {\n label: \"Read More\",\n url: \"{{blogPosts.url}}\",\n color: \"btn-secondary\",\n },\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 button: {\n label: \"Book Tickets\",\n url: \"{{upcomingEvents.ticketUrl}}\",\n color: \"btn-accent\",\n },\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: \"top\",\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 button: {\n label: \"See All Reviews\",\n url: \"/reviews\",\n color: \"btn-neutral\",\n },\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 button: {\n label: \"Learn More\",\n url: \"{{companyServices.detailsUrl}}\",\n color: \"btn-primary\",\n },\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 button: {\n label: \"View Project\",\n url: \"{{portfolioWork.projectUrl}}\",\n color: \"btn-secondary\",\n },\n loop: {\n over: \"portfolioWork\",\n },\n },\n },\n];\n"],"mappings":"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","names":[]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  import {
4
4
  schemaRegistry
5
- } from "./chunk-BW6EFRSF.js";
5
+ } from "./chunk-IQIISR22.js";
6
6
 
7
7
  // src/shared/utils/schema.ts
8
8
  import { Kind } from "@sinclair/typebox";
@@ -257,4 +257,4 @@ export {
257
257
  resolveSchema,
258
258
  validate
259
259
  };
260
- //# sourceMappingURL=chunk-NT3IW52F.js.map
260
+ //# sourceMappingURL=chunk-HTUSL2U7.js.map
@@ -17,7 +17,7 @@ import {
17
17
  import {
18
18
  icon,
19
19
  urlOrPageId
20
- } from "./chunk-UQF52PWK.js";
20
+ } from "./chunk-N3ZTQD5I.js";
21
21
  import {
22
22
  image
23
23
  } from "./chunk-W6MRYRGJ.js";
@@ -791,4 +791,4 @@ export {
791
791
  loop,
792
792
  loopRef
793
793
  };
794
- //# sourceMappingURL=chunk-BW6EFRSF.js.map
794
+ //# sourceMappingURL=chunk-IQIISR22.js.map