@upstart.gg/sdk 0.0.137 → 0.0.138

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/dist/shared/ai/schemas.js +2 -2
  2. package/dist/shared/ai/schemas.js.map +1 -1
  3. package/dist/shared/ai/types.d.ts +2 -2
  4. package/dist/shared/ai/types.d.ts.map +1 -1
  5. package/dist/shared/ajv.js +26 -25
  6. package/dist/shared/ajv.js.map +1 -1
  7. package/dist/shared/attributes.d.ts +8 -0
  8. package/dist/shared/attributes.d.ts.map +1 -1
  9. package/dist/shared/attributes.js +15 -14
  10. package/dist/shared/brick-manifest.js +2 -2
  11. package/dist/shared/bricks/manifests/accordion.manifest.js +8 -7
  12. package/dist/shared/bricks/manifests/all-manifests.js +38 -37
  13. package/dist/shared/bricks/manifests/all-props.d.ts +32 -22
  14. package/dist/shared/bricks/manifests/all-props.d.ts.map +1 -1
  15. package/dist/shared/bricks/manifests/all-props.js +40 -39
  16. package/dist/shared/bricks/manifests/all-props.js.map +1 -1
  17. package/dist/shared/bricks/manifests/box.manifest.js +11 -10
  18. package/dist/shared/bricks/manifests/button.manifest.js +10 -9
  19. package/dist/shared/bricks/manifests/card.manifest.d.ts +2 -0
  20. package/dist/shared/bricks/manifests/card.manifest.d.ts.map +1 -1
  21. package/dist/shared/bricks/manifests/card.manifest.js +13 -12
  22. package/dist/shared/bricks/manifests/carousel.manifest.d.ts +1 -0
  23. package/dist/shared/bricks/manifests/carousel.manifest.d.ts.map +1 -1
  24. package/dist/shared/bricks/manifests/carousel.manifest.js +11 -10
  25. package/dist/shared/bricks/manifests/footer.manifest.d.ts +2 -0
  26. package/dist/shared/bricks/manifests/footer.manifest.d.ts.map +1 -1
  27. package/dist/shared/bricks/manifests/footer.manifest.js +9 -8
  28. package/dist/shared/bricks/manifests/form.manifest.js +9 -8
  29. package/dist/shared/bricks/manifests/hero.manifest.d.ts +2 -4
  30. package/dist/shared/bricks/manifests/hero.manifest.d.ts.map +1 -1
  31. package/dist/shared/bricks/manifests/hero.manifest.js +10 -9
  32. package/dist/shared/bricks/manifests/html.manifest.d.ts +1 -0
  33. package/dist/shared/bricks/manifests/html.manifest.d.ts.map +1 -1
  34. package/dist/shared/bricks/manifests/html.manifest.js +6 -5
  35. package/dist/shared/bricks/manifests/icon.manifest.d.ts.map +1 -1
  36. package/dist/shared/bricks/manifests/icon.manifest.js +9 -8
  37. package/dist/shared/bricks/manifests/image.manifest.d.ts +1 -0
  38. package/dist/shared/bricks/manifests/image.manifest.d.ts.map +1 -1
  39. package/dist/shared/bricks/manifests/image.manifest.js +12 -11
  40. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts +2 -0
  41. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts.map +1 -1
  42. package/dist/shared/bricks/manifests/images-gallery.manifest.js +11 -10
  43. package/dist/shared/bricks/manifests/map.manifest.d.ts +1 -0
  44. package/dist/shared/bricks/manifests/map.manifest.d.ts.map +1 -1
  45. package/dist/shared/bricks/manifests/map.manifest.js +9 -8
  46. package/dist/shared/bricks/manifests/navbar.manifest.d.ts +2 -0
  47. package/dist/shared/bricks/manifests/navbar.manifest.d.ts.map +1 -1
  48. package/dist/shared/bricks/manifests/navbar.manifest.js +11 -10
  49. package/dist/shared/bricks/manifests/sidebar.manifest.d.ts.map +1 -1
  50. package/dist/shared/bricks/manifests/sidebar.manifest.js +11 -10
  51. package/dist/shared/bricks/manifests/social-links.manifest.d.ts.map +1 -1
  52. package/dist/shared/bricks/manifests/social-links.manifest.js +10 -9
  53. package/dist/shared/bricks/manifests/spacer.manifest.d.ts.map +1 -1
  54. package/dist/shared/bricks/manifests/spacer.manifest.js +6 -5
  55. package/dist/shared/bricks/manifests/table.manifest.d.ts +1 -0
  56. package/dist/shared/bricks/manifests/table.manifest.d.ts.map +1 -1
  57. package/dist/shared/bricks/manifests/table.manifest.js +10 -9
  58. package/dist/shared/bricks/manifests/tabs.manifest.d.ts +1 -1
  59. package/dist/shared/bricks/manifests/tabs.manifest.d.ts.map +1 -1
  60. package/dist/shared/bricks/manifests/tabs.manifest.js +11 -10
  61. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts +3 -1
  62. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts.map +1 -1
  63. package/dist/shared/bricks/manifests/testimonials.manifest.js +13 -12
  64. package/dist/shared/bricks/manifests/text.manifest.d.ts +2 -5
  65. package/dist/shared/bricks/manifests/text.manifest.d.ts.map +1 -1
  66. package/dist/shared/bricks/manifests/text.manifest.js +10 -9
  67. package/dist/shared/bricks/manifests/timeline.manifest.js +11 -10
  68. package/dist/shared/bricks/manifests/video.manifest.js +9 -8
  69. package/dist/shared/bricks/props/background.d.ts.map +1 -1
  70. package/dist/shared/bricks/props/background.js +1 -1
  71. package/dist/shared/bricks/props/border.js +2 -2
  72. package/dist/shared/bricks/props/color.d.ts.map +1 -1
  73. package/dist/shared/bricks/props/color.js +1 -1
  74. package/dist/shared/bricks/props/common.d.ts.map +1 -1
  75. package/dist/shared/bricks/props/common.js +2 -1
  76. package/dist/shared/bricks/props/grow.d.ts +3 -0
  77. package/dist/shared/bricks/props/grow.d.ts.map +1 -0
  78. package/dist/shared/bricks/props/grow.js +10 -0
  79. package/dist/shared/bricks/props/grow.js.map +1 -0
  80. package/dist/shared/bricks/props/helpers.js +3 -2
  81. package/dist/shared/bricks/props/image.d.ts +1 -0
  82. package/dist/shared/bricks/props/image.d.ts.map +1 -1
  83. package/dist/shared/bricks/props/image.js +1 -1
  84. package/dist/shared/bricks/props/string.d.ts.map +1 -1
  85. package/dist/shared/bricks/props/string.js +1 -1
  86. package/dist/shared/bricks.d.ts +18 -17
  87. package/dist/shared/bricks.d.ts.map +1 -1
  88. package/dist/shared/bricks.js +39 -38
  89. package/dist/shared/chunk-2EOCK66Z.js +19 -0
  90. package/dist/shared/chunk-2EOCK66Z.js.map +1 -0
  91. package/dist/shared/{chunk-XXPSM6UA.js → chunk-2UEPTT5J.js} +5 -9
  92. package/dist/shared/chunk-2UEPTT5J.js.map +1 -0
  93. package/dist/shared/{chunk-DRQKKPTX.js → chunk-2Z5WOCFS.js} +41 -1
  94. package/dist/shared/chunk-2Z5WOCFS.js.map +1 -0
  95. package/dist/shared/{chunk-7U5WPHXB.js → chunk-34IUWNRX.js} +7 -7
  96. package/dist/shared/chunk-57NRTXRA.js +309 -0
  97. package/dist/shared/chunk-57NRTXRA.js.map +1 -0
  98. package/dist/shared/{chunk-T6C3NG2L.js → chunk-5HJT5NJ3.js} +8 -8
  99. package/dist/shared/{chunk-BZTWZC77.js → chunk-5J4Y43RM.js} +37 -179
  100. package/dist/shared/chunk-5J4Y43RM.js.map +1 -0
  101. package/dist/shared/{chunk-KKWT3OXF.js → chunk-5OVOXUFX.js} +3 -2
  102. package/dist/shared/{chunk-KKWT3OXF.js.map → chunk-5OVOXUFX.js.map} +1 -1
  103. package/dist/shared/{chunk-XK2CERPB.js → chunk-5SNSUC6Q.js} +7 -7
  104. package/dist/shared/{chunk-JLDAS3VE.js → chunk-B5T2LFV2.js} +10 -14
  105. package/dist/shared/chunk-B5T2LFV2.js.map +1 -0
  106. package/dist/shared/{chunk-PF75LW33.js → chunk-E3ZW57HF.js} +18 -9
  107. package/dist/shared/chunk-E3ZW57HF.js.map +1 -0
  108. package/dist/shared/{chunk-JSDKK5QN.js → chunk-EUFVTHAG.js} +5 -3
  109. package/dist/shared/chunk-EUFVTHAG.js.map +1 -0
  110. package/dist/shared/{chunk-U4KZUX37.js → chunk-FC52EHCC.js} +8 -8
  111. package/dist/shared/chunk-FC52EHCC.js.map +1 -0
  112. package/dist/shared/{chunk-JW7MQAU4.js → chunk-FVV27R73.js} +9 -94
  113. package/dist/shared/chunk-FVV27R73.js.map +1 -0
  114. package/dist/shared/{chunk-SQXZNGQF.js → chunk-FYGFB5U5.js} +3 -1
  115. package/dist/shared/chunk-FYGFB5U5.js.map +1 -0
  116. package/dist/shared/{chunk-J45LSQT6.js → chunk-GNTJT7MR.js} +2 -2
  117. package/dist/shared/chunk-HHUFGV7J.js +259 -0
  118. package/dist/shared/chunk-HHUFGV7J.js.map +1 -0
  119. package/dist/shared/{chunk-W2RFDII5.js → chunk-IMDOF55E.js} +12 -4
  120. package/dist/shared/chunk-IMDOF55E.js.map +1 -0
  121. package/dist/shared/{chunk-KQH6V22E.js → chunk-IPWYNE6Y.js} +25 -25
  122. package/dist/shared/{chunk-H6TMBELF.js → chunk-J6R3GSKS.js} +46 -34
  123. package/dist/shared/chunk-J6R3GSKS.js.map +1 -0
  124. package/dist/shared/{chunk-TBT2PTGB.js → chunk-KRODRZNS.js} +9 -9
  125. package/dist/shared/chunk-KTA7XES3.js +168 -0
  126. package/dist/shared/chunk-KTA7XES3.js.map +1 -0
  127. package/dist/shared/{chunk-SK2O7GFC.js → chunk-L4W4B2RQ.js} +15 -70
  128. package/dist/shared/chunk-L4W4B2RQ.js.map +1 -0
  129. package/dist/shared/{chunk-MYOLWTB2.js → chunk-NTP6BKRU.js} +9 -9
  130. package/dist/shared/chunk-NTP6BKRU.js.map +1 -0
  131. package/dist/shared/{chunk-JF52BBFD.js → chunk-O53V22BK.js} +18 -10
  132. package/dist/shared/chunk-O53V22BK.js.map +1 -0
  133. package/dist/shared/{chunk-ZVJNRKT4.js → chunk-ORIUCOED.js} +7 -7
  134. package/dist/shared/{chunk-LGDDJJHK.js → chunk-PFZMRSHJ.js} +11 -11
  135. package/dist/shared/{chunk-6AE7UD73.js → chunk-QHKOAIOK.js} +31 -60
  136. package/dist/shared/chunk-QHKOAIOK.js.map +1 -0
  137. package/dist/shared/{chunk-LPAQ47C6.js → chunk-RDOCVLCF.js} +11 -11
  138. package/dist/shared/{chunk-VSLRTXLF.js → chunk-RFH7PEVS.js} +5 -4
  139. package/dist/shared/chunk-RFH7PEVS.js.map +1 -0
  140. package/dist/shared/{chunk-XNRSL6FL.js → chunk-T3UPW5OW.js} +5 -4
  141. package/dist/shared/{chunk-XNRSL6FL.js.map → chunk-T3UPW5OW.js.map} +1 -1
  142. package/dist/shared/{chunk-FUUSAMN3.js → chunk-TGKNA2JS.js} +8 -8
  143. package/dist/shared/{chunk-HY7JOP3J.js → chunk-TZ6X7ZM5.js} +19 -11
  144. package/dist/shared/chunk-TZ6X7ZM5.js.map +1 -0
  145. package/dist/shared/{chunk-VTCHJT4O.js → chunk-UC75KRLX.js} +2 -2
  146. package/dist/shared/{chunk-4KY7OZWD.js → chunk-VMIJ6MG5.js} +13 -13
  147. package/dist/shared/{chunk-SRYBJ6NQ.js → chunk-VYA2FCTY.js} +2 -2
  148. package/dist/shared/{chunk-LGGPCCCY.js → chunk-XYWSIMZ6.js} +3 -3
  149. package/dist/shared/chunk-XYWSIMZ6.js.map +1 -0
  150. package/dist/shared/{chunk-FHA4DFIM.js → chunk-ZYQZUWF7.js} +10 -10
  151. package/dist/shared/{chunk-2O5HVPID.js → chunk-ZZVYD4BG.js} +3 -3
  152. package/dist/shared/context.d.ts +4 -0
  153. package/dist/shared/context.d.ts.map +1 -1
  154. package/dist/shared/context.js +43 -42
  155. package/dist/shared/context.js.map +1 -1
  156. package/dist/shared/page.d.ts +2 -0
  157. package/dist/shared/page.d.ts.map +1 -1
  158. package/dist/shared/page.js +41 -40
  159. package/dist/shared/site.d.ts +7 -0
  160. package/dist/shared/site.d.ts.map +1 -1
  161. package/dist/shared/site.js +43 -42
  162. package/dist/shared/sitemap.js +42 -41
  163. package/dist/shared/utils/schema.d.ts +0 -5
  164. package/dist/shared/utils/schema.d.ts.map +1 -1
  165. package/dist/shared/utils/schema.js +1 -3
  166. package/package.json +2 -2
  167. package/src/shared/ai/schemas.ts +1 -1
  168. package/src/shared/ai/types.ts +2 -2
  169. package/src/shared/bricks/manifests/card.manifest.ts +25 -168
  170. package/src/shared/bricks/manifests/hero.manifest.ts +44 -249
  171. package/src/shared/bricks/manifests/html.manifest.ts +6 -0
  172. package/src/shared/bricks/manifests/icon.manifest.ts +1 -89
  173. package/src/shared/bricks/manifests/image.manifest.ts +0 -4
  174. package/src/shared/bricks/manifests/images-gallery.manifest.ts +8 -0
  175. package/src/shared/bricks/manifests/map.manifest.ts +9 -65
  176. package/src/shared/bricks/manifests/sidebar.manifest.ts +0 -1
  177. package/src/shared/bricks/manifests/social-links.manifest.ts +0 -1
  178. package/src/shared/bricks/manifests/spacer.manifest.ts +0 -1
  179. package/src/shared/bricks/manifests/table.manifest.ts +6 -0
  180. package/src/shared/bricks/manifests/tabs.manifest.ts +12 -429
  181. package/src/shared/bricks/manifests/testimonials.manifest.ts +28 -226
  182. package/src/shared/bricks/manifests/text.manifest.ts +16 -44
  183. package/src/shared/bricks/props/background.ts +2 -1
  184. package/src/shared/bricks/props/color.ts +5 -2
  185. package/src/shared/bricks/props/common.ts +2 -8
  186. package/src/shared/bricks/props/grow.ts +11 -0
  187. package/src/shared/bricks/props/image.ts +40 -0
  188. package/src/shared/bricks/props/string.ts +2 -0
  189. package/src/shared/bricks.ts +33 -23
  190. package/src/shared/page.ts +1 -0
  191. package/src/shared/site.ts +1 -0
  192. package/src/shared/utils/schema.ts +28 -18
  193. package/src/shared/utils/tests/schema.test.ts +211 -4
  194. package/dist/shared/chunk-6AE7UD73.js.map +0 -1
  195. package/dist/shared/chunk-BZTWZC77.js.map +0 -1
  196. package/dist/shared/chunk-DRQKKPTX.js.map +0 -1
  197. package/dist/shared/chunk-H6TMBELF.js.map +0 -1
  198. package/dist/shared/chunk-HUWMIXNN.js +0 -570
  199. package/dist/shared/chunk-HUWMIXNN.js.map +0 -1
  200. package/dist/shared/chunk-HY7JOP3J.js.map +0 -1
  201. package/dist/shared/chunk-JF52BBFD.js.map +0 -1
  202. package/dist/shared/chunk-JLDAS3VE.js.map +0 -1
  203. package/dist/shared/chunk-JSDKK5QN.js.map +0 -1
  204. package/dist/shared/chunk-JW7MQAU4.js.map +0 -1
  205. package/dist/shared/chunk-LGGPCCCY.js.map +0 -1
  206. package/dist/shared/chunk-MYOLWTB2.js.map +0 -1
  207. package/dist/shared/chunk-O24RDXZS.js +0 -505
  208. package/dist/shared/chunk-O24RDXZS.js.map +0 -1
  209. package/dist/shared/chunk-PF75LW33.js.map +0 -1
  210. package/dist/shared/chunk-QEJGPYTB.js +0 -462
  211. package/dist/shared/chunk-QEJGPYTB.js.map +0 -1
  212. package/dist/shared/chunk-SK2O7GFC.js.map +0 -1
  213. package/dist/shared/chunk-SQXZNGQF.js.map +0 -1
  214. package/dist/shared/chunk-U4KZUX37.js.map +0 -1
  215. package/dist/shared/chunk-VSLRTXLF.js.map +0 -1
  216. package/dist/shared/chunk-W2RFDII5.js.map +0 -1
  217. package/dist/shared/chunk-XXPSM6UA.js.map +0 -1
  218. /package/dist/shared/{chunk-7U5WPHXB.js.map → chunk-34IUWNRX.js.map} +0 -0
  219. /package/dist/shared/{chunk-T6C3NG2L.js.map → chunk-5HJT5NJ3.js.map} +0 -0
  220. /package/dist/shared/{chunk-XK2CERPB.js.map → chunk-5SNSUC6Q.js.map} +0 -0
  221. /package/dist/shared/{chunk-J45LSQT6.js.map → chunk-GNTJT7MR.js.map} +0 -0
  222. /package/dist/shared/{chunk-KQH6V22E.js.map → chunk-IPWYNE6Y.js.map} +0 -0
  223. /package/dist/shared/{chunk-TBT2PTGB.js.map → chunk-KRODRZNS.js.map} +0 -0
  224. /package/dist/shared/{chunk-ZVJNRKT4.js.map → chunk-ORIUCOED.js.map} +0 -0
  225. /package/dist/shared/{chunk-LGDDJJHK.js.map → chunk-PFZMRSHJ.js.map} +0 -0
  226. /package/dist/shared/{chunk-LPAQ47C6.js.map → chunk-RDOCVLCF.js.map} +0 -0
  227. /package/dist/shared/{chunk-FUUSAMN3.js.map → chunk-TGKNA2JS.js.map} +0 -0
  228. /package/dist/shared/{chunk-VTCHJT4O.js.map → chunk-UC75KRLX.js.map} +0 -0
  229. /package/dist/shared/{chunk-4KY7OZWD.js.map → chunk-VMIJ6MG5.js.map} +0 -0
  230. /package/dist/shared/{chunk-SRYBJ6NQ.js.map → chunk-VYA2FCTY.js.map} +0 -0
  231. /package/dist/shared/{chunk-FHA4DFIM.js.map → chunk-ZYQZUWF7.js.map} +0 -0
  232. /package/dist/shared/{chunk-2O5HVPID.js.map → chunk-ZZVYD4BG.js.map} +0 -0
@@ -12,27 +12,22 @@ import { loop } from "../props/dynamic";
12
12
  import { StringEnum } from "~/shared/utils/string-enum";
13
13
  import { urlOrPageId } from "../props/string";
14
14
  import type { BrickExample } from "./_types";
15
+ import { grow } from "../props/grow";
15
16
 
16
17
  export const manifest = defineBrickManifest({
17
18
  type: "card",
18
19
  name: "Card",
19
- description: "A card that can have a title, image, and content.",
20
- aiInstructions: `Use this brick to create visually distinct content blocks (product, feature, testimonial, event, article, CTA, etc.).
20
+ description: "A card that can have a title, image, content, and button.",
21
+ aiInstructions: `Use this brick to create visually distinct content blocks (product, feature, event, article, blog post, etc.).
21
22
 
22
- Guidelines:
23
- - Button is REQUIRED.
24
- - 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).
25
- - Image is OPTIONAL. If present you may set imagePosition to top | middle | bottom. Default is top.
26
- - Pick middle for vertically centered feature highlights, bottom for caption-first layouts.
23
+ Guidelines:
24
+ - Always provide a short button label (1-3 words) and pick a color matching semantic weight (primary/accent for primary actions, neutral/secondary for low emphasis).
27
25
  - Set noTitle: true when the card is intentionally title-less (e.g. a quote card or pure media focus).
28
- - Do NOT include an empty title string alongside noTitle.
29
26
  - Use dynamic tokens (e.g. {{products.price}}) instead of duplicating literal values.
30
- - Prefer gradient presets for more visual emphasis (e.g. primary-gradient-400 with gradientDirection).
31
27
  - border + rounding + shadow should be cohesive: stronger borders pair well with larger rounding + moderate shadow; minimal / flat cards may use border-0 + no shadow.
32
- - For internal navigation you can supply a page ID (e.g. 'about') OR a relative/absolute URL (e.g. '/pricing', 'https://example.com').
33
- - Keep HTML inside text minimal (<strong>, <em>, <br>) — for richer structure consider multiple bricks instead.
34
- - Avoid mixing noTitle with large heading text embedded inside the text field — in that case keep a proper title.
35
- - Return ONLY valid properties defined in the schema; do not invent new ones.`,
28
+ - For internal navigation, always supply a page ID (e.g. 'about') instead of a full URL. Use placeholders like {{page.$slug}} for dynamic page links.
29
+ - Keep HTML inside text minimal (<strong>, <em>, <br>, <p>) — for richer structure consider multiple bricks instead.
30
+ - Avoid mixing noTitle with large heading text embedded inside the text field — in that case keep a proper title.`,
36
31
  icon: BsCardText,
37
32
  defaultWidth: { desktop: "400px", mobile: "100%" },
38
33
  minWidth: { desktop: 300 },
@@ -45,7 +40,6 @@ export const manifest = defineBrickManifest({
45
40
  default: { color: "base-100" },
46
41
  }),
47
42
  ),
48
-
49
43
  cardImage: Type.Optional(
50
44
  image({
51
45
  "ui:responsive": "desktop",
@@ -122,6 +116,11 @@ export const manifest = defineBrickManifest({
122
116
  },
123
117
  { title: "Button", description: "Button displayed at the bottom of the card" },
124
118
  ),
119
+ grow: Type.Optional(
120
+ grow({
121
+ default: true,
122
+ }),
123
+ ),
125
124
  }),
126
125
  });
127
126
 
@@ -188,7 +187,7 @@ export const examples: BrickExample<Manifest>[] = [
188
187
  },
189
188
  // INTERNAL PAGE ID LINK VARIANT
190
189
  {
191
- description: "Internal navigation card using a page ID instead of a URL",
190
+ description: "Internal navigation card using a page ID for the button URL (page id = 'about')",
192
191
  type: "card",
193
192
  props: {
194
193
  title: "About Our Mission",
@@ -200,7 +199,8 @@ export const examples: BrickExample<Manifest>[] = [
200
199
  },
201
200
  // GRADIENT & STRONG BORDER VARIANT
202
201
  {
203
- description: "High-emphasis promotional card using gradient background and thick border",
202
+ description:
203
+ "High-emphasis promotional card using gradient background and thick border, linking to the page with id 'pricing-page'",
204
204
  type: "card",
205
205
  props: {
206
206
  title: "Limited Time Offer",
@@ -209,37 +209,24 @@ export const examples: BrickExample<Manifest>[] = [
209
209
  border: { width: "border-4", color: "border-primary-400" },
210
210
  rounding: "rounded-xl",
211
211
  shadow: "shadow-lg",
212
- button: { label: "Upgrade", url: "/pricing", color: "btn-accent" },
212
+ button: { label: "Upgrade", url: "pricing-page", color: "btn-accent" },
213
213
  },
214
214
  },
215
215
  // MINIMAL / FLAT VARIANT (no border, no shadow, subtle preset)
216
216
  {
217
- description: "Minimal flat information card (border-0, no shadow)",
217
+ description:
218
+ "Minimal flat information card (border-0, no shadow) linking to the page with id 'status-page'",
218
219
  type: "card",
219
220
  props: {
220
221
  title: "Maintenance Window",
221
222
  text: "Scheduled maintenance on Saturday 02:00–03:00 UTC. API responses may be delayed.",
222
223
  colorPreset: { color: "neutral-50" },
223
224
  border: { width: "border-0", color: "border-neutral-200" },
224
- button: { label: "Status Page", url: "/status", color: "btn-neutral" },
225
- },
226
- },
227
- // DARK / INVERTED VARIANT
228
- {
229
- description: "Dark themed spotlight card (primary-800 background)",
230
- type: "card",
231
- props: {
232
- title: "Night Mode Preview",
233
- text: "Experience the new adaptive dark theme optimized for low ambient light environments.",
234
- colorPreset: { color: "primary-800" },
235
- border: { width: "border", color: "border-primary-600" },
236
- rounding: "rounded-lg",
237
- shadow: "shadow-md",
238
- button: { label: "Preview", url: "/themes/dark", color: "btn-primary" },
225
+ button: { label: "Status Page", url: "status-page", color: "btn-neutral" },
239
226
  },
240
227
  },
241
228
  {
242
- description: "Feature card with large padding and background",
229
+ description: "Feature card with large padding and background, linking to a dynamic product page",
243
230
  type: "card",
244
231
  props: {
245
232
  title: "Key Feature",
@@ -250,13 +237,13 @@ export const examples: BrickExample<Manifest>[] = [
250
237
  shadow: "shadow-sm",
251
238
  button: {
252
239
  label: "Discover More",
253
- url: "/features",
240
+ url: "/product/{{ product.$slug }}",
254
241
  color: "btn-primary",
255
242
  },
256
243
  },
257
244
  },
258
245
  {
259
- description: "Blog post card with image at the bottom",
246
+ description: "Blog post card with image at the bottom, linking to a dynamic blog post",
260
247
  type: "card",
261
248
  props: {
262
249
  title: "Future of Tech",
@@ -270,65 +257,8 @@ export const examples: BrickExample<Manifest>[] = [
270
257
  url: "/blog/{{ blogPosts.$slug }}",
271
258
  color: "btn-primary",
272
259
  },
273
- },
274
- },
275
- {
276
- description: "Minimal centered card without image",
277
- type: "card",
278
- props: {
279
- title: "Simple Announcement",
280
- text: "Important updates will be posted here regularly.",
281
- button: {
282
- label: "View Updates",
283
- url: "/updates",
284
- color: "btn-neutral",
285
- },
286
- },
287
- },
288
- {
289
- description: "Event card with multiple variants",
290
- type: "card",
291
- props: {
292
- cardImage: {
293
- src: "https://via.placeholder.com/400x250",
294
- alt: "Event venue",
295
- },
296
- title: "Annual Conference 2025",
297
- text: "Join us for three days of inspiring talks, networking opportunities, and hands-on workshops.",
298
- button: {
299
- label: "Register Now",
300
- url: "/events/conference-2025",
301
- color: "btn-primary",
302
- },
303
- },
304
- },
305
- {
306
- description: "News article card with compact layout",
307
- type: "card",
308
- props: {
309
- cardImage: {
310
- src: "https://via.placeholder.com/120x120",
311
- alt: "News thumbnail",
312
- },
313
- title: "Breaking News Update",
314
- text: "Latest developments in the ongoing story with expert analysis and community reactions.",
315
- button: {
316
- label: "Read Full Article",
317
- url: "/news/breaking-update",
318
- color: "btn-secondary",
319
- },
320
- },
321
- },
322
- {
323
- description: "Call-to-action card with prominent styling",
324
- type: "card",
325
- props: {
326
- title: "Get Started Today",
327
- text: "Transform your workflow with our powerful tools. Sign up now and get 30 days free!",
328
- button: {
329
- label: "Sign Up Now",
330
- url: "/signup",
331
- color: "btn-primary",
260
+ loop: {
261
+ over: "blogPosts",
332
262
  },
333
263
  },
334
264
  },
@@ -430,77 +360,4 @@ export const examples: BrickExample<Manifest>[] = [
430
360
  },
431
361
  },
432
362
  },
433
- {
434
- description: "Testimonial card using customerReviews query with ratings",
435
- type: "card",
436
- props: {
437
- cardImage: {
438
- src: "{{customerReviews.customerPhoto}}",
439
- alt: "{{customerReviews.customerName}}",
440
- },
441
- imagePosition: "top",
442
- title: "{{customerReviews.customerName}}",
443
- text: '"{{customerReviews.review}}"<br><br><strong>Rating: {{customerReviews.rating}}/5 stars</strong><br>{{customerReviews.company}} • {{customerReviews.position}}',
444
- colorPreset: { color: "neutral-50" },
445
- rounding: "rounded-xl",
446
- shadow: "shadow-lg",
447
- button: {
448
- label: "See All Reviews",
449
- url: "/reviews",
450
- color: "btn-neutral",
451
- },
452
- loop: {
453
- over: "customerReviews",
454
- },
455
- },
456
- },
457
- {
458
- description: "Service offering card using companyServices query with pricing tiers",
459
- type: "card",
460
- props: {
461
- cardImage: {
462
- src: "{{companyServices.icon}}",
463
- alt: "{{companyServices.serviceName}}",
464
- },
465
- imagePosition: "top",
466
- title: "{{companyServices.serviceName}}",
467
- text: "{{companyServices.description}}<br><br><strong>Starting at ${{companyServices.startingPrice}}</strong><br>Duration: {{companyServices.duration}}<br>Includes: {{companyServices.features}}",
468
- colorPreset: { color: "primary-100" },
469
- border: { width: "border", color: "border-primary-300" },
470
- rounding: "rounded-lg",
471
- shadow: "shadow-md",
472
- button: {
473
- label: "Learn More",
474
- url: "{{companyServices.detailsUrl}}",
475
- color: "btn-primary",
476
- },
477
- loop: {
478
- over: "companyServices",
479
- },
480
- },
481
- },
482
- {
483
- description: "Portfolio project card using portfolioWork query with project details",
484
- type: "card",
485
- props: {
486
- cardImage: {
487
- src: "{{portfolioWork.thumbnail}}",
488
- alt: "{{portfolioWork.projectName}}",
489
- },
490
- imagePosition: "top",
491
- title: "{{portfolioWork.projectName}}",
492
- text: "<strong>Client:</strong> {{portfolioWork.clientName}}<br><strong>Year:</strong> {{portfolioWork.year}}<br><strong>Category:</strong> {{portfolioWork.category}}<br><br>{{portfolioWork.description}}",
493
- colorPreset: { color: "secondary-100" },
494
- rounding: "rounded-md",
495
- shadow: "shadow-sm",
496
- button: {
497
- label: "View Project",
498
- url: "{{portfolioWork.projectUrl}}",
499
- color: "btn-secondary",
500
- },
501
- loop: {
502
- over: "portfolioWork",
503
- },
504
- },
505
- },
506
363
  ];