@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.
- package/dist/shared/ai/schemas.d.ts +11 -2
- package/dist/shared/ai/schemas.d.ts.map +1 -1
- package/dist/shared/ai/schemas.js +43 -8
- package/dist/shared/ai/schemas.js.map +1 -1
- package/dist/shared/ai/types.d.ts +125 -65
- package/dist/shared/ai/types.d.ts.map +1 -1
- package/dist/shared/ajv.js +2 -2
- package/dist/shared/attributes.d.ts +3 -1
- package/dist/shared/attributes.d.ts.map +1 -1
- package/dist/shared/attributes.js +9 -9
- package/dist/shared/brick-manifest.js +4 -4
- package/dist/shared/bricks/manifests/_types.d.ts +9 -0
- package/dist/shared/bricks/manifests/_types.d.ts.map +1 -0
- package/dist/shared/bricks/manifests/_types.js +3 -0
- package/dist/shared/bricks/manifests/_types.js.map +1 -0
- package/dist/shared/bricks/manifests/accordion.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/accordion.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/accordion.manifest.js +5 -5
- package/dist/shared/bricks/manifests/all-manifests.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/all-manifests.js +28 -28
- package/dist/shared/bricks/manifests/box.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/box.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/box.manifest.js +5 -5
- package/dist/shared/bricks/manifests/button.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/button.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/button.manifest.js +5 -5
- package/dist/shared/bricks/manifests/card.manifest.d.ts +8 -7
- package/dist/shared/bricks/manifests/card.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/card.manifest.js +5 -5
- package/dist/shared/bricks/manifests/carousel.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/carousel.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/carousel.manifest.js +5 -5
- package/dist/shared/bricks/manifests/footer.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/footer.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/footer.manifest.js +5 -5
- package/dist/shared/bricks/manifests/form.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/form.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/form.manifest.js +5 -5
- package/dist/shared/bricks/manifests/hero.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/hero.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/hero.manifest.js +5 -5
- package/dist/shared/bricks/manifests/html.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/html.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/html.manifest.js +5 -5
- package/dist/shared/bricks/manifests/icon.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/icon.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/icon.manifest.js +5 -5
- package/dist/shared/bricks/manifests/image.manifest.d.ts +1 -0
- package/dist/shared/bricks/manifests/image.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/image.manifest.js +5 -5
- package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/images-gallery.manifest.js +5 -5
- package/dist/shared/bricks/manifests/map.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/map.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/map.manifest.js +5 -5
- package/dist/shared/bricks/manifests/navbar.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/navbar.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/navbar.manifest.js +5 -5
- package/dist/shared/bricks/manifests/sidebar.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/sidebar.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/sidebar.manifest.js +5 -5
- package/dist/shared/bricks/manifests/social-links.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/social-links.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/social-links.manifest.js +5 -5
- package/dist/shared/bricks/manifests/spacer.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/spacer.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/spacer.manifest.js +5 -5
- package/dist/shared/bricks/manifests/table.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/table.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/table.manifest.js +5 -5
- package/dist/shared/bricks/manifests/tabs.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/tabs.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/tabs.manifest.js +5 -5
- package/dist/shared/bricks/manifests/testimonials.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/testimonials.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/testimonials.manifest.js +5 -5
- package/dist/shared/bricks/manifests/text.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/text.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/text.manifest.js +5 -5
- package/dist/shared/bricks/manifests/timeline.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/timeline.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/timeline.manifest.js +5 -5
- package/dist/shared/bricks/manifests/video.manifest.d.ts +2 -6
- package/dist/shared/bricks/manifests/video.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/video.manifest.js +5 -5
- package/dist/shared/bricks/props/dynamic.js +2 -2
- package/dist/shared/bricks/props/geolocation.js +1 -1
- package/dist/shared/bricks/props/string.js +1 -1
- package/dist/shared/bricks.d.ts +5 -3
- package/dist/shared/bricks.d.ts.map +1 -1
- package/dist/shared/bricks.js +31 -29
- package/dist/shared/{chunk-CKFRSHR2.js → chunk-2IHKVMKW.js} +3 -3
- package/dist/shared/chunk-2IHKVMKW.js.map +1 -0
- package/dist/shared/{chunk-P3RH5URN.js → chunk-2VDR4ZYY.js} +3 -3
- package/dist/shared/chunk-2VDR4ZYY.js.map +1 -0
- package/dist/shared/{chunk-MLZT7MRQ.js → chunk-36PLZKMW.js} +4 -4
- package/dist/shared/chunk-36PLZKMW.js.map +1 -0
- package/dist/shared/{chunk-QQQ3FYPG.js → chunk-42OUNI7C.js} +123 -5
- package/dist/shared/chunk-42OUNI7C.js.map +1 -0
- package/dist/shared/{chunk-2HO4FHLM.js → chunk-4MNWMEMM.js} +118 -152
- package/dist/shared/chunk-4MNWMEMM.js.map +1 -0
- package/dist/shared/chunk-CRS7QCPZ.js +308 -0
- package/dist/shared/chunk-CRS7QCPZ.js.map +1 -0
- package/dist/shared/{chunk-WGDUJSSS.js → chunk-DFAFDBYZ.js} +4 -4
- package/dist/shared/chunk-DFAFDBYZ.js.map +1 -0
- package/dist/shared/{chunk-FVU5PXRC.js → chunk-DV3G7X34.js} +2 -2
- package/dist/shared/{chunk-TB3X4LRQ.js → chunk-EVLRH6VG.js} +2 -2
- package/dist/shared/{chunk-Z35I5JM5.js → chunk-F247VKAE.js} +3 -3
- package/dist/shared/chunk-F247VKAE.js.map +1 -0
- package/dist/shared/{chunk-QL3T5HJQ.js → chunk-FOGAVJC2.js} +2 -2
- package/dist/shared/chunk-FOGAVJC2.js.map +1 -0
- package/dist/shared/{chunk-4WI23M7W.js → chunk-FQDR2BBZ.js} +3 -3
- package/dist/shared/chunk-FQDR2BBZ.js.map +1 -0
- package/dist/shared/{chunk-3KLRW4I2.js → chunk-GFAQWQER.js} +182 -124
- package/dist/shared/chunk-GFAQWQER.js.map +1 -0
- package/dist/shared/{chunk-DRTGM2UJ.js → chunk-GIGFNQBO.js} +2 -2
- package/dist/shared/chunk-GIGFNQBO.js.map +1 -0
- package/dist/shared/{chunk-SHUGHJ7V.js → chunk-GQTZPN5D.js} +3 -3
- package/dist/shared/chunk-GQTZPN5D.js.map +1 -0
- package/dist/shared/{chunk-D4YQ6ABM.js → chunk-H5JM2M2T.js} +211 -34
- package/dist/shared/chunk-H5JM2M2T.js.map +1 -0
- package/dist/shared/{chunk-NT3IW52F.js → chunk-HTUSL2U7.js} +2 -2
- package/dist/shared/{chunk-BW6EFRSF.js → chunk-IQIISR22.js} +2 -2
- package/dist/shared/{chunk-BW6EFRSF.js.map → chunk-IQIISR22.js.map} +1 -1
- package/dist/shared/{chunk-Z2NTDFB4.js → chunk-KEM5N6GJ.js} +4 -4
- package/dist/shared/chunk-KEM5N6GJ.js.map +1 -0
- package/dist/shared/{chunk-V3UA3LRK.js → chunk-KIDICX3Y.js} +32 -7
- package/dist/shared/chunk-KIDICX3Y.js.map +1 -0
- package/dist/shared/chunk-KILJYJFE.js +354 -0
- package/dist/shared/chunk-KILJYJFE.js.map +1 -0
- package/dist/shared/{chunk-GRMY35BU.js → chunk-L6C7HUSA.js} +148 -20
- package/dist/shared/chunk-L6C7HUSA.js.map +1 -0
- package/dist/shared/{chunk-GCQURRVB.js → chunk-LCJ2VFPM.js} +4 -4
- package/dist/shared/chunk-LCJ2VFPM.js.map +1 -0
- package/dist/shared/{chunk-QSND5IWT.js → chunk-LLNPH3XR.js} +19 -36
- package/dist/shared/chunk-LLNPH3XR.js.map +1 -0
- package/dist/shared/{chunk-LXAO3JA6.js → chunk-LTIJI7Y3.js} +4 -4
- package/dist/shared/chunk-LTIJI7Y3.js.map +1 -0
- package/dist/shared/{chunk-6E42XWFH.js → chunk-MFNHFN2B.js} +3 -3
- package/dist/shared/{chunk-6E42XWFH.js.map → chunk-MFNHFN2B.js.map} +1 -1
- package/dist/shared/{chunk-TEO6TJOM.js → chunk-N3BEBLWF.js} +27 -26
- package/dist/shared/{chunk-TEO6TJOM.js.map → chunk-N3BEBLWF.js.map} +1 -1
- package/dist/shared/{chunk-UQF52PWK.js → chunk-N3ZTQD5I.js} +2 -2
- package/dist/shared/chunk-N3ZTQD5I.js.map +1 -0
- package/dist/shared/{chunk-EQMU6NIU.js → chunk-TNTFKLCR.js} +16 -13
- package/dist/shared/chunk-TNTFKLCR.js.map +1 -0
- package/dist/shared/{chunk-EWSPTRDL.js → chunk-U5ZECCJM.js} +102 -16
- package/dist/shared/chunk-U5ZECCJM.js.map +1 -0
- package/dist/shared/{chunk-O5PLB3YB.js → chunk-UXTASZ23.js} +16 -10
- package/dist/shared/chunk-UXTASZ23.js.map +1 -0
- package/dist/shared/{chunk-BMWRR4DI.js → chunk-YWOTQWIQ.js} +3 -3
- package/dist/shared/chunk-YWOTQWIQ.js.map +1 -0
- package/dist/shared/{chunk-GPCI2N2A.js → chunk-ZR6R6Z6O.js} +106 -5
- package/dist/shared/chunk-ZR6R6Z6O.js.map +1 -0
- package/dist/shared/{chunk-U7TVEPKA.js → chunk-ZRRAK5NS.js} +3 -3
- package/dist/shared/chunk-ZRRAK5NS.js.map +1 -0
- package/dist/shared/context.d.ts +1 -0
- package/dist/shared/context.d.ts.map +1 -1
- package/dist/shared/datarecords/types.d.ts +7 -60
- package/dist/shared/datarecords/types.d.ts.map +1 -1
- package/dist/shared/datarecords/types.js +3 -5
- package/dist/shared/datasources/external/threads/media/fetcher.js +3 -3
- package/dist/shared/datasources/types.js +2 -2
- package/dist/shared/datasources.d.ts +1 -1
- package/dist/shared/datasources.d.ts.map +1 -1
- package/dist/shared/datasources.js +1 -3
- package/dist/shared/datasources.js.map +1 -1
- package/dist/shared/page.d.ts.map +1 -1
- package/dist/shared/page.js +31 -31
- package/dist/shared/site.d.ts +6 -6
- package/dist/shared/site.js +36 -36
- package/dist/shared/site.js.map +1 -1
- package/dist/shared/sitemap.d.ts +6 -5
- package/dist/shared/sitemap.d.ts.map +1 -1
- package/dist/shared/sitemap.js +32 -32
- package/dist/shared/theme.js +3 -3
- package/dist/shared/utils/llm.js +2 -2
- package/dist/shared/utils/schema-registry.js +2 -2
- package/dist/shared/utils/schema.js +3 -3
- package/package.json +2 -2
- package/src/shared/ai/schemas.ts +46 -10
- package/src/shared/ai/types.ts +128 -60
- package/src/shared/attributes.ts +11 -3
- package/src/shared/bricks/manifests/_types.ts +9 -0
- package/src/shared/bricks/manifests/accordion.manifest.ts +128 -161
- package/src/shared/bricks/manifests/all-manifests.ts +1 -0
- package/src/shared/bricks/manifests/box.manifest.ts +195 -129
- package/src/shared/bricks/manifests/button.manifest.ts +158 -71
- package/src/shared/bricks/manifests/card.manifest.ts +200 -28
- package/src/shared/bricks/manifests/carousel.manifest.ts +154 -22
- package/src/shared/bricks/manifests/footer.manifest.ts +2 -5
- package/src/shared/bricks/manifests/form.manifest.ts +122 -7
- package/src/shared/bricks/manifests/hero.manifest.ts +103 -18
- package/src/shared/bricks/manifests/html.manifest.ts +2 -5
- package/src/shared/bricks/manifests/icon.manifest.ts +216 -36
- package/src/shared/bricks/manifests/image.manifest.ts +103 -2
- package/src/shared/bricks/manifests/images-gallery.manifest.ts +2 -5
- package/src/shared/bricks/manifests/map.manifest.ts +2 -5
- package/src/shared/bricks/manifests/navbar.manifest.ts +2 -5
- package/src/shared/bricks/manifests/sidebar.manifest.ts +2 -5
- package/src/shared/bricks/manifests/social-links.manifest.ts +2 -5
- package/src/shared/bricks/manifests/spacer.manifest.ts +2 -5
- package/src/shared/bricks/manifests/table.manifest.ts +2 -5
- package/src/shared/bricks/manifests/tabs.manifest.ts +2 -5
- package/src/shared/bricks/manifests/testimonials.manifest.ts +2 -5
- package/src/shared/bricks/manifests/text.manifest.ts +31 -10
- package/src/shared/bricks/manifests/timeline.manifest.ts +2 -5
- package/src/shared/bricks/manifests/video.manifest.ts +2 -5
- package/src/shared/bricks/props/string.ts +1 -1
- package/src/shared/bricks.ts +12 -9
- package/src/shared/context.ts +1 -0
- package/src/shared/datarecords/types.ts +47 -37
- package/src/shared/datasources.ts +2 -4
- package/src/shared/page.ts +0 -1
- package/src/shared/site.ts +3 -3
- package/src/shared/sitemap.ts +2 -0
- package/src/shared/tests/schema-registry.test.ts +0 -2
- package/src/shared/utils/schema-registry.ts +5 -5
- package/src/shared/utils/tests/schema.test.ts +43 -2
- package/dist/shared/chunk-2HO4FHLM.js.map +0 -1
- package/dist/shared/chunk-3KLRW4I2.js.map +0 -1
- package/dist/shared/chunk-4WI23M7W.js.map +0 -1
- package/dist/shared/chunk-BMWRR4DI.js.map +0 -1
- package/dist/shared/chunk-CKFRSHR2.js.map +0 -1
- package/dist/shared/chunk-D4YQ6ABM.js.map +0 -1
- package/dist/shared/chunk-DRTGM2UJ.js.map +0 -1
- package/dist/shared/chunk-EQMU6NIU.js.map +0 -1
- package/dist/shared/chunk-EWSPTRDL.js.map +0 -1
- package/dist/shared/chunk-GCQURRVB.js.map +0 -1
- package/dist/shared/chunk-GPCI2N2A.js.map +0 -1
- package/dist/shared/chunk-GRMY35BU.js.map +0 -1
- package/dist/shared/chunk-LXAO3JA6.js.map +0 -1
- package/dist/shared/chunk-MLZT7MRQ.js.map +0 -1
- package/dist/shared/chunk-O5PLB3YB.js.map +0 -1
- package/dist/shared/chunk-P3RH5URN.js.map +0 -1
- package/dist/shared/chunk-QL3T5HJQ.js.map +0 -1
- package/dist/shared/chunk-QQQ3FYPG.js.map +0 -1
- package/dist/shared/chunk-QSND5IWT.js.map +0 -1
- package/dist/shared/chunk-SHUGHJ7V.js.map +0 -1
- package/dist/shared/chunk-U7TVEPKA.js.map +0 -1
- package/dist/shared/chunk-UQF52PWK.js.map +0 -1
- package/dist/shared/chunk-V3UA3LRK.js.map +0 -1
- package/dist/shared/chunk-WGDUJSSS.js.map +0 -1
- package/dist/shared/chunk-X6N463D4.js +0 -222
- package/dist/shared/chunk-X6N463D4.js.map +0 -1
- package/dist/shared/chunk-X75YV73Q.js +0 -178
- package/dist/shared/chunk-X75YV73Q.js.map +0 -1
- package/dist/shared/chunk-Z2NTDFB4.js.map +0 -1
- package/dist/shared/chunk-Z35I5JM5.js.map +0 -1
- package/dist/shared/schema-registry.d.ts +0 -5
- package/dist/shared/schema-registry.d.ts.map +0 -1
- package/dist/shared/schema-registry.js +0 -119
- package/dist/shared/schema-registry.js.map +0 -1
- package/src/shared/schema-registry.ts +0 -82
- /package/dist/shared/{chunk-FVU5PXRC.js.map → chunk-DV3G7X34.js.map} +0 -0
- /package/dist/shared/{chunk-TB3X4LRQ.js.map → chunk-EVLRH6VG.js.map} +0 -0
- /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-
|
|
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-
|
|
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>— 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&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-
|
|
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-
|
|
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-
|
|
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-
|
|
8
|
+
} from "./chunk-EVLRH6VG.js";
|
|
9
9
|
import {
|
|
10
10
|
loopRef
|
|
11
|
-
} from "./chunk-
|
|
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
|
|
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"
|
|
62
|
-
enumNames: ["Top", "Middle", "Bottom"
|
|
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: "
|
|
149
|
+
description: "Feature highlight card with centered image (imagePosition=middle)",
|
|
114
150
|
type: "card",
|
|
115
151
|
props: {
|
|
116
|
-
cardImage: {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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: "
|
|
165
|
+
description: "Case study card with image at the bottom (imagePosition=bottom)",
|
|
126
166
|
type: "card",
|
|
127
167
|
props: {
|
|
128
|
-
title: "
|
|
129
|
-
text: "
|
|
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: "
|
|
180
|
+
description: "Quote / testimonial style card without a title (uses noTitle=true)",
|
|
134
181
|
type: "card",
|
|
135
182
|
props: {
|
|
136
|
-
|
|
137
|
-
text: "
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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: "
|
|
262
|
+
description: "Blog post card with image at the bottom",
|
|
146
263
|
type: "card",
|
|
147
264
|
props: {
|
|
148
|
-
title: "
|
|
149
|
-
text:
|
|
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/
|
|
152
|
-
alt: "
|
|
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: "
|
|
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-
|
|
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-
|
|
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-
|
|
260
|
+
//# sourceMappingURL=chunk-HTUSL2U7.js.map
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
import {
|
|
18
18
|
icon,
|
|
19
19
|
urlOrPageId
|
|
20
|
-
} from "./chunk-
|
|
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-
|
|
794
|
+
//# sourceMappingURL=chunk-IQIISR22.js.map
|