@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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/shared/bricks/manifests/images-gallery.manifest.ts"],"sourcesContent":["import { Type } from \"@sinclair/typebox\";\nimport { IoGridOutline } from \"react-icons/io5\";\nimport { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps } from \"../props/helpers\";\nimport { image } from \"../props/image\";\nimport { colorPreset } from \"../props/color-preset\";\nimport { border, rounding } from \"../props/border\";\nimport { loop } from \"../props/dynamic\";\nimport { cssLength } from \"../props/css-length\";\nimport type { BrickExample } from \"./_types\";\nimport { grow } from \"../props/grow\";\n\nexport const manifest = defineBrickManifest({\n type: \"images-gallery\",\n name: \"Gallery\",\n category: \"media\",\n description: \"Displays an images collection.\",\n aiInstructions:\n \"This brick should mostly be used for image galleries. Prefer using card bricks for product showcases, articles lists with images, or other collections.\",\n consumesMultipleQueryRows: true,\n defaultInspectorTab: \"content\",\n isContainer: false,\n minHeight: {\n desktop: 200,\n },\n minWidth: {\n desktop: 300,\n },\n defaultWidth: {\n desktop: \"400px\",\n mobile: \"100%\",\n },\n icon: IoGridOutline,\n props: defineProps({\n colorPreset: Type.Optional(\n colorPreset({\n title: \"Color\",\n }),\n ),\n loop: Type.Optional(loop()),\n images: Type.Array(\n Type.Object({\n image: image({\n \"ui:responsive\": \"desktop\",\n \"ui:no-alt-text\": true,\n \"ui:no-object-options\": true,\n \"ui:placeholder\": \"https://example.com/image.jpg\",\n }),\n legend: Type.Optional(Type.String({ title: \"Legend\" })),\n }),\n {\n title: \"Images\",\n default: [],\n maxItems: 12,\n metadata: {\n category: \"content\",\n consumeQuery: true,\n },\n examples: [\n {\n image: { src: \"https://via.placeholder.com/300x200.png?text=Image+1\" },\n legend: \"Image 1\",\n },\n {\n image: { src: \"https://via.placeholder.com/300x200.png?text=Image+2\" },\n legend: \"Image 2\",\n },\n {\n image: { src: \"https://via.placeholder.com/300x200.png?text=Image+3\" },\n legend: \"Image 3\",\n },\n ],\n },\n ),\n columns: Type.Optional(\n Type.Number({\n title: \"Columns\",\n description:\n \"Number of columns. Only applies to desktop screens. On mobile, it will always display 1 column.\",\n minimum: 1,\n maximum: 6,\n default: 3,\n \"ui:field\": \"slider\",\n \"ui:responsive\": \"desktop\",\n }),\n ),\n gap: Type.Optional(\n cssLength({\n title: \"Gap\",\n description: \"The gap between the images.\",\n default: \"1rem\",\n \"ui:styleId\": \"styles:gap\",\n }),\n ),\n padding: Type.Optional(\n cssLength({\n default: \"3rem\",\n description: \"Padding inside the gallery.\",\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: rounding(),\n border: Type.Optional(border()),\n\n // Override grow to default to true\n grow: Type.Optional(\n grow({\n default: true,\n }),\n ),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: BrickExample<Manifest>[] = [\n {\n description: \"Product portfolio gallery (3-column grid)\",\n type: \"images-gallery\",\n props: {\n columns: 3,\n gap: \"2.5rem\",\n padding: \"p-4\",\n images: [\n {\n image: {\n src: \"https://via.placeholder.com/400x400.png?text=Product+1\",\n },\n legend: \"Premium wireless headphones\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/400x400.png?text=Product+2\",\n },\n legend: \"Bluetooth speaker\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/400x400.png?text=Product+3\",\n },\n legend: \"Smart fitness tracker\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/400x400.png?text=Product+4\",\n },\n legend: \"Wireless charging pad\",\n },\n ],\n },\n },\n {\n description: \"Team photos gallery (4-column grid), light neutral background\",\n type: \"images-gallery\",\n props: {\n columns: 4,\n gap: \"1rem\",\n padding: \"p-6\",\n images: [\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=CEO\",\n },\n legend: \"Sarah Johnson - Chief Executive Officer\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=CTO\",\n },\n legend: \"Mike Chen - Chief Technology Officer\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Design\",\n },\n legend: \"Emily Rodriguez - Head of Design\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Marketing\",\n },\n legend: \"David Park - Marketing Director\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Sales\",\n },\n legend: \"Lisa Wong - Sales Manager\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Support\",\n },\n legend: \"Alex Thompson - Customer Support Lead\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Dev\",\n },\n legend: \"Carlos Martinez - Senior Developer\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=HR\",\n },\n legend: \"Jennifer Adams - HR Specialist\",\n },\n ],\n colorPreset: {\n color: \"neutral-100\",\n },\n },\n },\n {\n description: \"Project showcase (2-column grid with larger spacing)\",\n type: \"images-gallery\",\n props: {\n columns: 2,\n gap: \"1rem\",\n padding: \"p-6\",\n images: [\n {\n image: {\n src: \"https://via.placeholder.com/600x400.png?text=Website+Redesign\",\n },\n legend: \"Modern e-commerce website redesign project\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/600x400.png?text=Mobile+App\",\n },\n legend: \"iOS and Android mobile application\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/600x400.png?text=Brand+Identity\",\n },\n legend: \"Complete brand identity design package\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/600x400.png?text=Dashboard+UI\",\n },\n legend: \"Analytics dashboard user interface\",\n },\n ],\n },\n },\n {\n description: \"Event photos gallery with tight spacing and minimal padding\",\n type: \"images-gallery\",\n props: {\n columns: 4,\n gap: \"1rem\",\n padding: \"p-6\",\n images: [\n {\n image: {\n src: \"https://via.placeholder.com/250x180.png?text=Opening\",\n },\n legend: \"Conference opening ceremony\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/250x180.png?text=Keynote\",\n },\n legend: \"Keynote presentation\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/250x180.png?text=Workshop\",\n },\n legend: \"Technical workshop session\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/250x180.png?text=Networking\",\n },\n legend: \"Networking lunch break\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/250x180.png?text=Panel\",\n },\n legend: \"Expert panel discussion\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/250x180.png?text=Awards\",\n },\n legend: \"Awards ceremony\",\n },\n ],\n },\n },\n {\n description: \"Photography portfolio with single column layout and primary background\",\n type: \"images-gallery\",\n props: {\n columns: 1,\n gap: \"3rem\",\n padding: \"4rem\",\n colorPreset: {\n color: \"primary-50\",\n },\n rounding: \"rounded-lg\",\n images: [\n {\n image: {\n src: \"https://via.placeholder.com/800x600.png?text=Landscape+1\",\n },\n legend: \"Mountain sunrise landscape photography\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/800x600.png?text=Portrait+1\",\n },\n legend: \"Professional business portrait session\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/800x600.png?text=Architecture+1\",\n },\n legend: \"Modern architectural photography\",\n },\n ],\n },\n },\n {\n description: \"Real estate property gallery with secondary colors and borders\",\n type: \"images-gallery\",\n props: {\n columns: 3,\n gap: \"1.5rem\",\n padding: \"2rem\",\n colorPreset: {\n color: \"secondary-100\",\n },\n border: {\n width: \"border\",\n color: \"border-secondary-300\",\n },\n rounding: \"rounded-xl\",\n images: [\n {\n image: {\n src: \"https://via.placeholder.com/400x300.png?text=Living+Room\",\n },\n legend: \"Spacious living room with natural light\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/400x300.png?text=Kitchen\",\n },\n legend: \"Modern kitchen with granite countertops\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/400x300.png?text=Master+Bedroom\",\n },\n legend: \"Master bedroom with walk-in closet\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/400x300.png?text=Bathroom\",\n },\n legend: \"Luxury bathroom with marble finishes\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/400x300.png?text=Backyard\",\n },\n legend: \"Private backyard with pool\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/400x300.png?text=Garage\",\n },\n legend: \"Two-car garage with storage\",\n },\n ],\n },\n },\n {\n description: \"Restaurant food gallery with 5-column grid and accent colors\",\n type: \"images-gallery\",\n props: {\n columns: 5,\n gap: \"0.75rem\",\n padding: \"1.5rem\",\n colorPreset: {\n color: \"accent-200\",\n },\n rounding: \"rounded-md\",\n images: [\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Appetizer\",\n },\n legend: \"Bruschetta with fresh tomatoes\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Soup\",\n },\n legend: \"Creamy mushroom bisque\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Salad\",\n },\n legend: \"Mediterranean quinoa salad\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Main+Course\",\n },\n legend: \"Grilled salmon with herbs\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Dessert\",\n },\n legend: \"Chocolate lava cake\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Beverage\",\n },\n legend: \"Artisan coffee selection\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Pasta\",\n },\n legend: \"Homemade fettuccine alfredo\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Pizza\",\n },\n legend: \"Wood-fired margherita pizza\",\n },\n ],\n },\n },\n {\n description: \"Art gallery exhibition with 6-column grid and minimal styling\",\n type: \"images-gallery\",\n props: {\n columns: 6,\n gap: \"0.5rem\",\n padding: \"1rem\",\n images: [\n {\n image: {\n src: \"https://via.placeholder.com/200x250.png?text=Abstract+1\",\n },\n legend: \"Abstract composition #1\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/200x250.png?text=Portrait+Art\",\n },\n legend: \"Contemporary portrait\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/200x250.png?text=Landscape+Art\",\n },\n legend: \"Impressionist landscape\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/200x250.png?text=Still+Life\",\n },\n legend: \"Modern still life\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/200x250.png?text=Sculpture\",\n },\n legend: \"Bronze sculpture piece\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/200x250.png?text=Digital+Art\",\n },\n legend: \"Digital artwork collection\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/200x250.png?text=Mixed+Media\",\n },\n legend: \"Mixed media installation\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/200x250.png?text=Photography\",\n },\n legend: \"Fine art photography\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/200x250.png?text=Watercolor\",\n },\n legend: \"Watercolor painting\",\n },\n ],\n },\n },\n {\n description: \"Fashion lookbook with 2-column layout and neutral dark theme\",\n type: \"images-gallery\",\n props: {\n columns: 2,\n gap: \"2rem\",\n padding: \"3rem\",\n colorPreset: {\n color: \"neutral-800\",\n },\n border: {\n width: \"border-2\",\n color: \"border-neutral-600\",\n },\n rounding: \"rounded-2xl\",\n images: [\n {\n image: {\n src: \"https://via.placeholder.com/400x600.png?text=Spring+Look\",\n },\n legend: \"Spring casual collection 2024\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/400x600.png?text=Summer+Look\",\n },\n legend: \"Summer evening wear\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/400x600.png?text=Business+Look\",\n },\n legend: \"Professional business attire\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/400x600.png?text=Weekend+Look\",\n },\n legend: \"Weekend comfort style\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/400x600.png?text=Formal+Look\",\n },\n legend: \"Formal evening collection\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/400x600.png?text=Street+Style\",\n },\n legend: \"Urban street fashion\",\n },\n ],\n },\n },\n {\n description: \"Travel destinations gallery with 3-column grid and no legends\",\n type: \"images-gallery\",\n props: {\n columns: 3,\n gap: \"1.25rem\",\n padding: \"2.5rem\",\n colorPreset: {\n color: \"primary-100\",\n },\n rounding: \"rounded-lg\",\n border: {\n width: \"border\",\n color: \"border-primary-200\",\n },\n images: [\n {\n image: {\n src: \"https://via.placeholder.com/350x250.png?text=Paris\",\n },\n },\n {\n image: {\n src: \"https://via.placeholder.com/350x250.png?text=Tokyo\",\n },\n },\n {\n image: {\n src: \"https://via.placeholder.com/350x250.png?text=New+York\",\n },\n },\n {\n image: {\n src: \"https://via.placeholder.com/350x250.png?text=London\",\n },\n },\n {\n image: {\n src: \"https://via.placeholder.com/350x250.png?text=Rome\",\n },\n },\n {\n image: {\n src: \"https://via.placeholder.com/350x250.png?text=Barcelona\",\n },\n },\n ],\n },\n },\n {\n description: \"Technical equipment gallery with 4-column grid and accent styling\",\n type: \"images-gallery\",\n props: {\n columns: 4,\n gap: \"1rem\",\n padding: \"2rem\",\n colorPreset: {\n color: \"accent-100\",\n },\n border: {\n width: \"border-4\",\n color: \"border-accent-400\",\n },\n rounding: \"rounded-xl\",\n images: [\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Camera\",\n },\n legend: \"Professional DSLR camera\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Laptop\",\n },\n legend: \"High-performance laptop\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Microphone\",\n },\n legend: \"Studio recording microphone\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Monitor\",\n },\n legend: \"4K professional monitor\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Tablet\",\n },\n legend: \"Digital drawing tablet\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Speakers\",\n },\n legend: \"Studio monitor speakers\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Keyboard\",\n },\n legend: \"Mechanical keyboard\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/300x300.png?text=Mouse\",\n },\n legend: \"Precision gaming mouse\",\n },\n ],\n },\n },\n {\n description: \"Minimal product showcase with large gaps and no padding\",\n type: \"images-gallery\",\n props: {\n columns: 3,\n gap: \"4rem\",\n padding: \"0rem\",\n images: [\n {\n image: {\n src: \"https://via.placeholder.com/400x400.png?text=Watch\",\n },\n legend: \"Luxury Swiss timepiece\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/400x400.png?text=Jewelry\",\n },\n legend: \"Handcrafted gold necklace\",\n },\n {\n image: {\n src: \"https://via.placeholder.com/400x400.png?text=Sunglasses\",\n },\n legend: \"Designer sunglasses collection\",\n },\n ],\n },\n },\n {\n description: \"Dynamic product gallery using products query with loop\",\n type: \"images-gallery\",\n props: {\n columns: 4,\n gap: \"1.5rem\",\n padding: \"2rem\",\n colorPreset: {\n color: \"primary-50\",\n },\n rounding: \"rounded-lg\",\n border: {\n width: \"border\",\n color: \"border-primary-200\",\n },\n images: [\n {\n image: {\n src: \"{{products.image}}\",\n },\n legend: \"{{products.name}} - ${{products.price}}\",\n },\n ],\n loop: {\n over: \"products\",\n },\n },\n },\n {\n description: \"Portfolio showcase using portfolioProjects query with loop\",\n type: \"images-gallery\",\n props: {\n columns: 3,\n gap: \"2rem\",\n padding: \"3rem\",\n colorPreset: {\n color: \"secondary-100\",\n },\n rounding: \"rounded-xl\",\n images: [\n {\n image: {\n src: \"{{portfolioProjects.thumbnail}}\",\n },\n legend:\n \"{{portfolioProjects.projectName}} - {{portfolioProjects.clientName}} ({{portfolioProjects.year}})\",\n },\n ],\n loop: {\n over: \"portfolioProjects\",\n },\n },\n },\n {\n description: \"Event photo gallery using eventPhotos query with loop\",\n type: \"images-gallery\",\n props: {\n columns: 5,\n gap: \"1rem\",\n padding: \"1.5rem\",\n colorPreset: {\n color: \"accent-50\",\n },\n border: {\n width: \"border-2\",\n color: \"border-accent-300\",\n },\n rounding: \"rounded-md\",\n images: [\n {\n image: {\n src: \"{{eventPhotos.imageUrl}}\",\n },\n legend: \"{{eventPhotos.caption}} - {{eventPhotos.eventDate}}\",\n },\n ],\n loop: {\n over: \"eventPhotos\",\n },\n },\n },\n {\n description: \"Team member gallery using teamMembers query with loop\",\n type: \"images-gallery\",\n props: {\n columns: 6,\n gap: \"0.75rem\",\n padding: \"2.5rem\",\n colorPreset: {\n color: \"neutral-100\",\n },\n rounding: \"rounded-lg\",\n border: {\n width: \"border\",\n color: \"border-neutral-300\",\n },\n images: [\n {\n image: {\n src: \"{{teamMembers.profilePhoto}}\",\n },\n legend: \"{{teamMembers.fullName}} - {{teamMembers.position}}\",\n },\n ],\n loop: {\n over: \"teamMembers\",\n },\n },\n },\n];\n"],"mappings":"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","names":[]}
@@ -6,7 +6,8 @@ import { Type } from "@sinclair/typebox";
6
6
  function color(options = {}) {
7
7
  return Type.String({
8
8
  title: "Text color",
9
- "ai:instructions": "hex/rgb/rgba color or classes like `text-<variant>-<shade>`, variants being `primary`, `secondary`, `accent` and `neutral`, and shades between 50 and 900",
9
+ "ai:instructions": "Format is `text-<variant>-<shade>`, variants being `primary`, `secondary`, `accent` and `neutral`, and shades between 50 and 900",
10
+ pattern: "^text-(primary|secondary|accent|neutral|base|inherit)-?(50|100|200|300|400|500|600|700|800|900)?$",
10
11
  "ui:styleId": "styles:color",
11
12
  "ui:field": "color",
12
13
  "ui:color-type": "text",
@@ -16,7 +17,8 @@ function color(options = {}) {
16
17
  function borderColor(options = {}) {
17
18
  return Type.String({
18
19
  title: "Border color",
19
- "ai:instructions": "hex/rgb/rgba color or classes like `border-<variant>-<shade>`, variants being `primary`, `secondary`, `accent` and `neutral`, and shades between 50 and 900",
20
+ "ai:instructions": "Format is `border-<variant>-<shade>`, variants being `primary`, `secondary`, `accent` and `neutral`, and shades between 50 and 900",
21
+ pattern: "^border-(primary|secondary|accent|neutral|base)-?(50|100|200|300|400|500|600|700|800|900)?$",
20
22
  "ui:styleId": "styles:borderColor",
21
23
  "ui:field": "color",
22
24
  "ui:color-type": "border",
@@ -28,4 +30,4 @@ export {
28
30
  color,
29
31
  borderColor
30
32
  };
31
- //# sourceMappingURL=chunk-JSDKK5QN.js.map
33
+ //# sourceMappingURL=chunk-EUFVTHAG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/shared/bricks/props/color.ts"],"sourcesContent":["import { type Static, type StringOptions, Type } from \"@sinclair/typebox\";\n\nexport function color(options: StringOptions = {}) {\n return Type.String({\n title: \"Text color\",\n \"ai:instructions\":\n \"Format is `text-<variant>-<shade>`, variants being `primary`, `secondary`, `accent` and `neutral`, and shades between 50 and 900\",\n pattern:\n \"^text-(primary|secondary|accent|neutral|base|inherit)-?(50|100|200|300|400|500|600|700|800|900)?$\",\n \"ui:styleId\": \"styles:color\",\n \"ui:field\": \"color\",\n \"ui:color-type\": \"text\",\n ...options,\n });\n}\n\nexport type ColorSettings = Static<ReturnType<typeof color>>;\n\nexport function borderColor(options: StringOptions = {}) {\n return Type.String({\n title: \"Border color\",\n \"ai:instructions\":\n \"Format is `border-<variant>-<shade>`, variants being `primary`, `secondary`, `accent` and `neutral`, and shades between 50 and 900\",\n pattern: \"^border-(primary|secondary|accent|neutral|base)-?(50|100|200|300|400|500|600|700|800|900)?$\",\n \"ui:styleId\": \"styles:borderColor\",\n \"ui:field\": \"color\",\n \"ui:color-type\": \"border\",\n ...options,\n });\n}\n\nexport type BorderColorSettings = Static<ReturnType<typeof borderColor>>;\n"],"mappings":";;;;AAAA,SAA0C,YAAY;AAE/C,SAAS,MAAM,UAAyB,CAAC,GAAG;AACjD,SAAO,KAAK,OAAO;AAAA,IACjB,OAAO;AAAA,IACP,mBACE;AAAA,IACF,SACE;AAAA,IACF,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,GAAG;AAAA,EACL,CAAC;AACH;AAIO,SAAS,YAAY,UAAyB,CAAC,GAAG;AACvD,SAAO,KAAK,OAAO;AAAA,IACjB,OAAO;AAAA,IACP,mBACE;AAAA,IACF,SAAS;AAAA,IACT,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,GAAG;AAAA,EACL,CAAC;AACH;","names":[]}
@@ -5,23 +5,23 @@ import {
5
5
  } from "./chunk-6WIMWLCJ.js";
6
6
  import {
7
7
  border
8
- } from "./chunk-SRYBJ6NQ.js";
8
+ } from "./chunk-VYA2FCTY.js";
9
9
  import {
10
10
  defineProps,
11
11
  group
12
- } from "./chunk-VTCHJT4O.js";
12
+ } from "./chunk-UC75KRLX.js";
13
13
  import {
14
- urlOrPageId
15
- } from "./chunk-SQXZNGQF.js";
14
+ backgroundColor
15
+ } from "./chunk-5OVOXUFX.js";
16
16
  import {
17
17
  shadow
18
18
  } from "./chunk-5RCC2STG.js";
19
19
  import {
20
- backgroundColor
21
- } from "./chunk-KKWT3OXF.js";
20
+ urlOrPageId
21
+ } from "./chunk-FYGFB5U5.js";
22
22
  import {
23
23
  defineBrickManifest
24
- } from "./chunk-J45LSQT6.js";
24
+ } from "./chunk-GNTJT7MR.js";
25
25
 
26
26
  // src/shared/bricks/manifests/sidebar.manifest.ts
27
27
  import { VscLayoutSidebarLeftOff } from "react-icons/vsc";
@@ -101,4 +101,4 @@ export {
101
101
  manifest,
102
102
  examples
103
103
  };
104
- //# sourceMappingURL=chunk-U4KZUX37.js.map
104
+ //# sourceMappingURL=chunk-FC52EHCC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/shared/bricks/manifests/sidebar.manifest.ts"],"sourcesContent":["import { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps, group } from \"../props/helpers\";\nimport { VscLayoutSidebarLeftOff } from \"react-icons/vsc\";\nimport { Type } from \"@sinclair/typebox\";\nimport { urlOrPageId } from \"../props/string\";\nimport { backgroundColor } from \"../props/background\";\nimport { border } from \"../props/border\";\nimport { fixedPositioned } from \"../props/position\";\nimport { shadow } from \"../props/effects\";\nimport type { BrickExample } from \"./_types\";\n\nexport const manifest = defineBrickManifest({\n type: \"sidebar\",\n category: \"layout\",\n name: \"Sidebar\",\n description: \"A sidebar element\",\n inlineDragDisabled: true,\n isGlobalBrick: true,\n duplicatable: false,\n resizable: false,\n movable: false,\n aiInstructions: `\n This brick should be used on most sites/pages for navigation. By default, it will display links\n to the main pages of the site. You can customize the links by using the 'navigation.navItems' prop.\n `.trim(),\n icon: VscLayoutSidebarLeftOff,\n props: defineProps({\n container: Type.Optional(\n group({\n title: \"Main element\",\n children: {\n backgroundColor: Type.Optional(backgroundColor()),\n border: Type.Optional(border()),\n shadow: Type.Optional(shadow()),\n fixedPositioned: Type.Optional(fixedPositioned()),\n },\n metadata: {\n \"ui:responsive\": true,\n },\n }),\n ),\n navigation: Type.Optional(\n group({\n title: \"Links\",\n children: {\n navItems: Type.Optional(\n Type.Array(\n Type.Object({\n urlOrPageId: urlOrPageId(),\n label: Type.Optional(Type.String({ title: \"Label\" })),\n }),\n { title: \"Navigation items\", default: [] },\n ),\n ),\n },\n }),\n ),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: BrickExample<Manifest>[] = [\n {\n description: \"Standard sidebar with navigation links base on site pages\",\n type: \"sidebar\",\n props: {},\n },\n {\n description: \"Sidebar with specified navigation links\",\n type: \"sidebar\",\n props: {\n container: {\n backgroundColor: \"#f0f0f0\",\n },\n navigation: {\n navItems: [\n { urlOrPageId: \"https://google.com\", label: \"Google\" },\n { urlOrPageId: \"https://bing.com\", label: \"Bing\" },\n ],\n },\n },\n },\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAS,+BAA+B;AACxC,SAAS,YAAY;AAQd,IAAM,WAAW,oBAAoB;AAAA,EAC1C,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,aAAa;AAAA,EACb,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,WAAW;AAAA,EACX,SAAS;AAAA,EACT,gBAAgB;AAAA;AAAA;AAAA,IAGd,KAAK;AAAA,EACP,MAAM;AAAA,EACN,OAAO,YAAY;AAAA,IACjB,WAAW,KAAK;AAAA,MACd,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,UAAU;AAAA,UACR,iBAAiB,KAAK,SAAS,gBAAgB,CAAC;AAAA,UAChD,QAAQ,KAAK,SAAS,OAAO,CAAC;AAAA,UAC9B,QAAQ,KAAK,SAAS,OAAO,CAAC;AAAA,UAC9B,iBAAiB,KAAK,SAAS,gBAAgB,CAAC;AAAA,QAClD;AAAA,QACA,UAAU;AAAA,UACR,iBAAiB;AAAA,QACnB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,UAAU;AAAA,UACR,UAAU,KAAK;AAAA,YACb,KAAK;AAAA,cACH,KAAK,OAAO;AAAA,gBACV,aAAa,YAAY;AAAA,gBACzB,OAAO,KAAK,SAAS,KAAK,OAAO,EAAE,OAAO,QAAQ,CAAC,CAAC;AAAA,cACtD,CAAC;AAAA,cACD,EAAE,OAAO,oBAAoB,SAAS,CAAC,EAAE;AAAA,YAC3C;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH,CAAC;AAIM,IAAM,WAAqC;AAAA,EAChD;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO,CAAC;AAAA,EACV;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,WAAW;AAAA,QACT,iBAAiB;AAAA,MACnB;AAAA,MACA,YAAY;AAAA,QACV,UAAU;AAAA,UACR,EAAE,aAAa,sBAAsB,OAAO,SAAS;AAAA,UACrD,EAAE,aAAa,oBAAoB,OAAO,OAAO;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -2,23 +2,23 @@
2
2
 
3
3
  import {
4
4
  color
5
- } from "./chunk-JSDKK5QN.js";
5
+ } from "./chunk-EUFVTHAG.js";
6
6
  import {
7
7
  defineProps
8
- } from "./chunk-VTCHJT4O.js";
8
+ } from "./chunk-UC75KRLX.js";
9
+ import {
10
+ loop
11
+ } from "./chunk-XFZQGRRL.js";
9
12
  import {
10
13
  icon,
11
14
  urlOrPageId
12
- } from "./chunk-SQXZNGQF.js";
15
+ } from "./chunk-FYGFB5U5.js";
13
16
  import {
14
17
  cssLength
15
18
  } from "./chunk-OJ6KL7FU.js";
16
- import {
17
- loop
18
- } from "./chunk-XFZQGRRL.js";
19
19
  import {
20
20
  defineBrickManifest
21
- } from "./chunk-J45LSQT6.js";
21
+ } from "./chunk-GNTJT7MR.js";
22
22
 
23
23
  // src/shared/bricks/manifests/icon.manifest.ts
24
24
  import { PiConfetti } from "react-icons/pi";
@@ -32,10 +32,8 @@ var manifest = defineBrickManifest({
32
32
 
33
33
  WHEN TO USE:
34
34
  - Navigation elements (menu, close, arrow buttons)
35
- - Social media links (Facebook, Twitter, Instagram, LinkedIn)
36
35
  - Contact information (email, phone, location markers)
37
36
  - User interface actions (search, shopping cart, download)
38
- - Status indicators (success, warning, error, info)
39
37
  - Content enhancement (stars, hearts, thumbs up)
40
38
  - Feature highlights (checkmarks, shields, awards)
41
39
 
@@ -45,14 +43,11 @@ ICON SELECTION:
45
43
 
46
44
  SIZING GUIDELINES:
47
45
  - size: "1em" for inline text icons, "1.5em" for buttons, "2em" for headers
48
- - Common sizes: "16px", "20px", "24px", "32px" for pixel precision
49
46
  - Use "em" units to scale with text, "px" for fixed sizes
50
47
  - Large decorative icons: "3em", "4em", or "48px", "64px"
51
48
 
52
49
  COLOR OPTIONS:
53
50
  - color: "currentColor" inherits text color (default)
54
- - Hex colors: "#1877f2" (Facebook blue), "#ff0000" (red), "#10b981" (green)
55
- - Use brand colors for social media icons
56
51
  - Match color scheme: warnings (orange/yellow), errors (red), success (green)
57
52
 
58
53
  INTERACTIVE ICONS:
@@ -60,7 +55,7 @@ INTERACTIVE ICONS:
60
55
  - External links: "https://facebook.com/yourpage"
61
56
  - Email links: "mailto:contact@example.com"
62
57
  - Phone links: "tel:+1234567890"
63
- - Internal pages: "/contact", "/about"
58
+ - For internal pages, use page IDs: "page_12345"
64
59
 
65
60
  DYNAMIC CONTENT:
66
61
  - Use template variables: icon: "{{ service.iconName }}"
@@ -264,86 +259,6 @@ var examples = [
264
259
  size: "1.4em",
265
260
  color: "#3b82f6"
266
261
  }
267
- },
268
- // ACTION ICONS
269
- {
270
- description: "Download icon with link - File downloads",
271
- type: "icon",
272
- props: {
273
- icon: "mdi:download",
274
- size: "1.4em",
275
- color: "#8b5cf6",
276
- link: "/files/brochure.pdf"
277
- }
278
- },
279
- {
280
- description: "Share icon - Content sharing functionality",
281
- type: "icon",
282
- props: {
283
- icon: "mdi:share-variant",
284
- size: "1.2em",
285
- color: "#6b7280"
286
- }
287
- },
288
- {
289
- description: "Print icon - Document printing",
290
- type: "icon",
291
- props: {
292
- icon: "mdi:printer",
293
- size: "1.3em",
294
- color: "#374151"
295
- }
296
- },
297
- // LARGE DECORATIVE ICONS
298
- {
299
- description: "Large security shield icon - Trust and safety messaging",
300
- type: "icon",
301
- props: {
302
- icon: "mdi:shield-check",
303
- size: "3em",
304
- color: "#10b981"
305
- }
306
- },
307
- {
308
- description: "Large rocket icon - Innovation and growth themes",
309
- type: "icon",
310
- props: {
311
- icon: "mdi:rocket",
312
- size: "2.5em",
313
- color: "#f59e0b"
314
- }
315
- },
316
- // DYNAMIC CONTENT EXAMPLES
317
- {
318
- description: "Dynamic service icon using template variables - Data-driven icons",
319
- type: "icon",
320
- props: {
321
- icon: "{{service.iconName}}",
322
- size: "2em",
323
- color: "{{service.brandColor}}",
324
- link: "/services/{{service.slug}}"
325
- }
326
- },
327
- {
328
- description: "Dynamic social media icon with loop - Multiple social platforms",
329
- type: "icon",
330
- props: {
331
- icon: "{{socialLinks.iconName}}",
332
- size: "1.6em",
333
- color: "{{socialLinks.brandColor}}",
334
- link: "{{socialLinks.url}}",
335
- loop: { over: "socialLinks" }
336
- }
337
- },
338
- {
339
- description: "Team member contact icon - Dynamic contact information",
340
- type: "icon",
341
- props: {
342
- icon: "mdi:email",
343
- size: "1.2em",
344
- color: "#4f46e5",
345
- link: "mailto:{{teamMember.email}}"
346
- }
347
262
  }
348
263
  ];
349
264
 
@@ -351,4 +266,4 @@ export {
351
266
  manifest,
352
267
  examples
353
268
  };
354
- //# sourceMappingURL=chunk-JW7MQAU4.js.map
269
+ //# sourceMappingURL=chunk-FVV27R73.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/shared/bricks/manifests/icon.manifest.ts"],"sourcesContent":["import { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps } from \"../props/helpers\";\nimport { PiConfetti } from \"react-icons/pi\";\nimport { icon, urlOrPageId } from \"../props/string\";\nimport { Type } from \"@sinclair/typebox\";\nimport { cssLength } from \"../props/css-length\";\nimport { color } from \"../props/color\";\nimport { loop } from \"../props/dynamic\";\nimport type { BrickExample } from \"./_types\";\n\nexport const manifest = defineBrickManifest({\n type: \"icon\",\n name: \"Icon\",\n category: \"basic\",\n description: \"An icon.\",\n aiInstructions: `Use the icon component for adding visual symbols and interactive elements throughout your design.\n\nWHEN TO USE:\n- Navigation elements (menu, close, arrow buttons)\n- Contact information (email, phone, location markers)\n- User interface actions (search, shopping cart, download)\n- Content enhancement (stars, hearts, thumbs up)\n- Feature highlights (checkmarks, shields, awards)\n\nICON SELECTION:\n- Use Iconify format: \"mdi:icon-name\", \"lucide:icon-name\", \"heroicons:icon-name\"\n- Examples: \"mdi:heart\", \"lucide:star\", \"heroicons:envelope\", \"mdi:facebook\"\n\nSIZING GUIDELINES:\n- size: \"1em\" for inline text icons, \"1.5em\" for buttons, \"2em\" for headers\n- Use \"em\" units to scale with text, \"px\" for fixed sizes\n- Large decorative icons: \"3em\", \"4em\", or \"48px\", \"64px\"\n\nCOLOR OPTIONS:\n- color: \"currentColor\" inherits text color (default)\n- Match color scheme: warnings (orange/yellow), errors (red), success (green)\n\nINTERACTIVE ICONS:\n- Add link property for clickable icons\n- External links: \"https://facebook.com/yourpage\"\n- Email links: \"mailto:contact@example.com\"\n- Phone links: \"tel:+1234567890\"\n- For internal pages, use page IDs: \"page_12345\"\n\nDYNAMIC CONTENT:\n- Use template variables: icon: \"{{ service.iconName }}\"\n- Dynamic colors: color: \"{{ brand.primaryColor }}\"\n- Loop over data for icon lists or social media sets\n\nAVOID:\n- Oversized icons that dominate content\n- Poor contrast (light icons on light backgrounds)\n- Inconsistent icon styles within the same design\n- Missing alt text context when icons convey important information`,\n resizable: false,\n staticClasses: \"!grow-0\",\n icon: PiConfetti,\n props: defineProps(\n {\n icon: icon({\n default: \"mdi:heart\",\n }),\n size: Type.Optional(\n cssLength({\n title: \"Size\",\n description: \"The size of the icon. Can be a CSS length value (e.g. '2em', '24px')\",\n default: \"1em\",\n \"ui:css-units\": [\"em\", \"rem\", \"px\"],\n \"ai:instructions\": \"Use 'em', 'rem', or 'px' for units. Example: '2em', '24px'\",\n }),\n ),\n color: Type.Optional(\n color({\n title: \"Color\",\n default: \"currentColor\",\n \"ui:hide-color-label\": true,\n }),\n ),\n link: Type.Optional(urlOrPageId({ title: \"Link\" })),\n loop: Type.Optional(loop()),\n },\n { noGrow: true },\n ),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: BrickExample<Manifest>[] = [\n // BASIC ICONS\n {\n description: \"Heart icon with default styling - Inherits text color and size\",\n type: \"icon\",\n props: {\n icon: \"mdi:heart\",\n },\n },\n {\n description: \"Star icon with gold color - Perfect for ratings and reviews\",\n type: \"icon\",\n props: {\n icon: \"mdi:star\",\n size: \"1.2em\",\n color: \"#fbbf24\",\n },\n },\n\n // NAVIGATION ICONS\n {\n description: \"Menu hamburger icon - Mobile navigation toggle\",\n type: \"icon\",\n props: {\n icon: \"mdi:menu\",\n size: \"1.8em\",\n color: \"#374151\",\n },\n },\n {\n description: \"Search icon - Search functionality indicator\",\n type: \"icon\",\n props: {\n icon: \"mdi:magnify\",\n size: \"1.2em\",\n color: \"#6b7280\",\n },\n },\n {\n description: \"Shopping cart icon - E-commerce navigation\",\n type: \"icon\",\n props: {\n icon: \"mdi:cart\",\n size: \"1.4em\",\n color: \"#059669\",\n },\n },\n {\n description: \"Arrow right icon - Navigation and call-to-action\",\n type: \"icon\",\n props: {\n icon: \"mdi:arrow-right\",\n size: \"1.1em\",\n color: \"currentColor\",\n },\n },\n\n // SOCIAL MEDIA ICONS\n {\n description: \"Facebook icon with official brand color and link\",\n type: \"icon\",\n props: {\n icon: \"mdi:facebook\",\n size: \"1.5em\",\n color: \"#1877f2\",\n link: \"https://facebook.com/yourpage\",\n },\n },\n {\n description: \"Twitter/X icon with link - Social media engagement\",\n type: \"icon\",\n props: {\n icon: \"mdi:twitter\",\n size: \"1.5em\",\n color: \"#000000\",\n link: \"https://x.com/yourhandle\",\n },\n },\n {\n description: \"Instagram icon with gradient-inspired color\",\n type: \"icon\",\n props: {\n icon: \"mdi:instagram\",\n size: \"1.5em\",\n color: \"#e1306c\",\n link: \"https://instagram.com/yourprofile\",\n },\n },\n {\n description: \"LinkedIn icon with professional blue\",\n type: \"icon\",\n props: {\n icon: \"mdi:linkedin\",\n size: \"1.5em\",\n color: \"#0077b5\",\n link: \"https://linkedin.com/company/yourcompany\",\n },\n },\n\n // CONTACT INFORMATION ICONS\n {\n description: \"Email icon with link - Contact information\",\n type: \"icon\",\n props: {\n icon: \"mdi:email\",\n size: \"1.3em\",\n color: \"#4f46e5\",\n link: \"mailto:contact@example.com\",\n },\n },\n {\n description: \"Phone icon with clickable link - Direct calling\",\n type: \"icon\",\n props: {\n icon: \"mdi:phone\",\n size: \"1.4em\",\n color: \"#10b981\",\n link: \"tel:+1234567890\",\n },\n },\n {\n description: \"Location marker icon - Address and directions\",\n type: \"icon\",\n props: {\n icon: \"mdi:map-marker\",\n size: \"1.6em\",\n color: \"#ef4444\",\n },\n },\n\n // STATUS & FEEDBACK ICONS\n {\n description: \"Success checkmark icon - Confirmation and completion\",\n type: \"icon\",\n props: {\n icon: \"mdi:check-circle\",\n size: \"1.5em\",\n color: \"#10b981\",\n },\n },\n {\n description: \"Warning icon - Alerts and cautions\",\n type: \"icon\",\n props: {\n icon: \"mdi:alert-triangle\",\n size: \"1.5em\",\n color: \"#f59e0b\",\n },\n },\n {\n description: \"Error icon - Problems and failures\",\n type: \"icon\",\n props: {\n icon: \"mdi:alert-circle\",\n size: \"1.5em\",\n color: \"#ef4444\",\n },\n },\n {\n description: \"Information icon - Help and guidance\",\n type: \"icon\",\n props: {\n icon: \"mdi:information\",\n size: \"1.4em\",\n color: \"#3b82f6\",\n },\n },\n];\n"],"mappings":"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","names":[]}
@@ -25,6 +25,7 @@ function urlOrPageId(options = {}) {
25
25
  {
26
26
  // $id: "content:urlOrPageId",
27
27
  title: "URL",
28
+ description: "A URL or a page ID",
28
29
  metadata: {
29
30
  category: "content"
30
31
  },
@@ -37,6 +38,7 @@ function urlOrPageId(options = {}) {
37
38
  function icon(options = {}) {
38
39
  return Type.String({
39
40
  title: "Icon",
41
+ description: "An icon from the Iconify collection",
40
42
  "ai:instructions": "Use a iconify reference like 'mdi:heart' or 'fa-solid:coffee'.",
41
43
  "ui:field": "iconify",
42
44
  // $id: "assets:icon",
@@ -52,4 +54,4 @@ export {
52
54
  urlOrPageId,
53
55
  icon
54
56
  };
55
- //# sourceMappingURL=chunk-SQXZNGQF.js.map
57
+ //# sourceMappingURL=chunk-FYGFB5U5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/shared/bricks/props/string.ts"],"sourcesContent":["import { type Static, Type, type StringOptions } from \"@sinclair/typebox\";\nimport type { FieldMetadata } from \"./types\";\n\ntype StrFieldOptions = StringOptions &\n FieldMetadata & {\n \"ui:multiline\"?: boolean;\n };\n\nexport function url(title = \"URL\", defaultValue?: string) {\n return Type.String({\n title,\n format: \"url\",\n \"ui:field\": \"url\",\n default: defaultValue,\n });\n}\n\nconst pageIdSchema = Type.String({\n \"ui:field\": \"page-id\",\n});\n\nexport function urlOrPageId(options: StringOptions = {}) {\n return Type.Union(\n [\n Type.String({\n format: \"url\",\n }),\n pageIdSchema,\n ],\n {\n // $id: \"content:urlOrPageId\",\n title: \"URL\",\n description: \"A URL or a page ID\",\n metadata: {\n category: \"content\",\n },\n \"ui:field\": \"url-page-id\",\n \"ai:instructions\":\n \"This field can be a URL or a page ID. Use the page ID when linking to a internal page, and a URL for external links. It can also contain page queries refrences like '/products/{{ categories.$slug }}' or '/blog/{{ blogPosts.$slug }}'.\",\n ...options,\n },\n );\n}\n\nexport type UrlOrPageIdSettings = Static<ReturnType<typeof urlOrPageId>>;\n\ntype IconOptions = StrFieldOptions & { \"ui:default-icon-collection\"?: string };\n\nexport function icon(options: IconOptions = {}) {\n return Type.String({\n title: \"Icon\",\n description: \"An icon from the Iconify collection\",\n \"ai:instructions\": \"Use a iconify reference like 'mdi:heart' or 'fa-solid:coffee'.\",\n \"ui:field\": \"iconify\",\n // $id: \"assets:icon\",\n metadata: {\n category: \"content\",\n },\n ...options,\n });\n}\n"],"mappings":";;;;AAAA,SAAsB,YAAgC;AAQ/C,SAAS,IAAI,QAAQ,OAAO,cAAuB;AACxD,SAAO,KAAK,OAAO;AAAA,IACjB;AAAA,IACA,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS;AAAA,EACX,CAAC;AACH;AAEA,IAAM,eAAe,KAAK,OAAO;AAAA,EAC/B,YAAY;AACd,CAAC;AAEM,SAAS,YAAY,UAAyB,CAAC,GAAG;AACvD,SAAO,KAAK;AAAA,IACV;AAAA,MACE,KAAK,OAAO;AAAA,QACV,QAAQ;AAAA,MACV,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IACA;AAAA;AAAA,MAEE,OAAO;AAAA,MACP,aAAa;AAAA,MACb,UAAU;AAAA,QACR,UAAU;AAAA,MACZ;AAAA,MACA,YAAY;AAAA,MACZ,mBACE;AAAA,MACF,GAAG;AAAA,IACL;AAAA,EACF;AACF;AAMO,SAAS,KAAK,UAAuB,CAAC,GAAG;AAC9C,SAAO,KAAK,OAAO;AAAA,IACjB,OAAO;AAAA,IACP,aAAa;AAAA,IACb,mBAAmB;AAAA,IACnB,YAAY;AAAA;AAAA,IAEZ,UAAU;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,IACA,GAAG;AAAA,EACL,CAAC;AACH;","names":[]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  import {
4
4
  getSchemaDefaults
5
- } from "./chunk-HY7JOP3J.js";
5
+ } from "./chunk-TZ6X7ZM5.js";
6
6
 
7
7
  // src/shared/brick-manifest.ts
8
8
  function defineBrickManifest({
@@ -53,4 +53,4 @@ export {
53
53
  defineBrickManifest,
54
54
  getBrickManifestDefaults
55
55
  };
56
- //# sourceMappingURL=chunk-J45LSQT6.js.map
56
+ //# sourceMappingURL=chunk-GNTJT7MR.js.map
@@ -0,0 +1,259 @@
1
+ /*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
2
+
3
+ import {
4
+ border,
5
+ rounding
6
+ } from "./chunk-VYA2FCTY.js";
7
+ import {
8
+ color
9
+ } from "./chunk-EUFVTHAG.js";
10
+ import {
11
+ defineProps
12
+ } from "./chunk-UC75KRLX.js";
13
+ import {
14
+ backgroundColor
15
+ } from "./chunk-5OVOXUFX.js";
16
+ import {
17
+ shadow,
18
+ textShadow
19
+ } from "./chunk-5RCC2STG.js";
20
+ import {
21
+ textContent
22
+ } from "./chunk-2U5U3CCJ.js";
23
+ import {
24
+ cssLength
25
+ } from "./chunk-OJ6KL7FU.js";
26
+ import {
27
+ alignItems,
28
+ justifyContent
29
+ } from "./chunk-ZRBTAC3G.js";
30
+ import {
31
+ defineBrickManifest
32
+ } from "./chunk-GNTJT7MR.js";
33
+
34
+ // src/shared/bricks/manifests/hero.manifest.ts
35
+ import { BsAlphabetUppercase } from "react-icons/bs";
36
+ import { Type } from "@sinclair/typebox";
37
+ var manifest = defineBrickManifest({
38
+ type: "hero",
39
+ category: "basic",
40
+ name: "Hero",
41
+ description: "A big textual element for home pages.",
42
+ aiInstructions: `PURPOSE
43
+ A prominent textual block (main heading + optional tagline) used to introduce a page, product, event, company, or dynamic entity.
44
+
45
+ STRUCTURE
46
+ 1. Always supply 'content' (can be plain text or simple HTML like <h1>, <strong>, <br/>).
47
+ 2. 'tagline' is optional. Prefer concise value (1 short sentence). Omit if not needed.
48
+ 3. Do NOT add buttons, images, forms, lists, or unrelated HTML here (use dedicated bricks for that).
49
+ 4. Hero should be placed in vertical sections, except for very specific cases.
50
+
51
+ COLOR & BACKGROUND
52
+ - Prefer omitting "colorPreset" so the hero inherits its parent section background.
53
+ - If you do set "colorPreset", ensure sufficient contrast between text and background.
54
+
55
+ LAYOUT & SPACING
56
+ \u2022 Use padding suited to visual weight: landing hero: 5-8rem desktop; simple page intro: 2-4rem.
57
+ \u2022 You may provide a mobile override via mobileProps (e.g. smaller padding such as 2rem).
58
+ \u2022 Keep justifyContent + alignItems consistent (usually center/center or start/start). Avoid mixing center with start.
59
+
60
+ TYPOGRAPHY
61
+ \u2022 'content' should typically render ONE main heading concept (avoid stacking multiple unrelated headings). Use <br/> to split lines when stylistic.
62
+ \u2022 Avoid overly long taglines (>140 chars).
63
+
64
+ DYNAMIC DATA
65
+ \u2022 You may interpolate page queries fields fields: {{company.name}}, {{product.name}}, etc.
66
+ \u2022 Ensure dynamic tokens exist in the referenced query context. Don't fabricate field names.
67
+
68
+ RESPONSIVE
69
+ \u2022 Use "mobileProps" only for necessary reductions (padding, alignment). Do not duplicate unchanged properties.
70
+
71
+ DON'TS
72
+ \u2717 Don't add properties that are not in the schema.
73
+ \u2717 Don't wrap everything with extraneous HTML containers.
74
+ \u2717 Don't use colorPreset plus a conflicting parent background rationale\u2014choose one.
75
+
76
+ DO
77
+ \u2713 Keep content focused.
78
+ \u2713 Wrap tagline in <p> for alignment control.
79
+ `,
80
+ icon: BsAlphabetUppercase,
81
+ defaultWidth: { desktop: "60dvw", mobile: "auto" },
82
+ // Force the wrapper direction to be the same as the text direction
83
+ staticClasses: "flex-col",
84
+ props: defineProps({
85
+ content: textContent({
86
+ title: "Hero title",
87
+ default: "<h1 style='text-align:center'>Lorem Ipsum<br />dolor sit amet</h1>"
88
+ }),
89
+ tagline: Type.Optional(
90
+ textContent({
91
+ title: "Hero tagline"
92
+ // default: "<p style='text-align:center'>Use our platform to build your business with confidence.</p>",
93
+ })
94
+ ),
95
+ backgroundColor: Type.Optional(
96
+ backgroundColor({
97
+ title: "Background color"
98
+ })
99
+ ),
100
+ color: Type.Optional(
101
+ color({
102
+ title: "Text color",
103
+ default: "text-inherit"
104
+ })
105
+ ),
106
+ textShadow: Type.Optional(
107
+ textShadow({
108
+ default: "text-shadow-sm"
109
+ })
110
+ ),
111
+ padding: Type.Optional(
112
+ cssLength({
113
+ default: "6rem",
114
+ description: "Padding inside the hero.",
115
+ "ai:instructions": "Use only a single value like '1rem' or '10px'",
116
+ title: "Padding",
117
+ "ui:responsive": true,
118
+ "ui:placeholder": "Not specified",
119
+ "ui:styleId": "styles:padding"
120
+ })
121
+ ),
122
+ rounding: rounding({
123
+ default: "rounded-md"
124
+ }),
125
+ border: Type.Optional(
126
+ border({
127
+ "ai:hidden": true
128
+ })
129
+ ),
130
+ shadow: Type.Optional(shadow()),
131
+ justifyContent: Type.Optional(
132
+ justifyContent({
133
+ default: "justify-center"
134
+ })
135
+ ),
136
+ alignItems: Type.Optional(
137
+ alignItems({
138
+ default: "items-center"
139
+ })
140
+ )
141
+ })
142
+ });
143
+ var examples = [
144
+ {
145
+ description: "Simple welcome hero with primary background, centered",
146
+ type: "hero",
147
+ props: {
148
+ content: "Welcome to Our Platform",
149
+ tagline: "<p style='text-align:center'>The future of productivity starts here</p>",
150
+ padding: "3rem"
151
+ }
152
+ },
153
+ {
154
+ description: "Startup hero with primary gradient background to bottom-right",
155
+ type: "hero",
156
+ props: {
157
+ content: "Build Something Amazing",
158
+ tagline: "<p style='text-align:center'>Turn your ideas into reality with our cutting-edge tools</p>",
159
+ padding: "3rem"
160
+ }
161
+ },
162
+ {
163
+ description: "Construction company hero with bold presence",
164
+ type: "hero",
165
+ props: {
166
+ content: "Building Tomorrow Today",
167
+ tagline: "<p style='text-align:center'>Quality construction services for residential and commercial projects</p>",
168
+ padding: "3rem"
169
+ }
170
+ },
171
+ {
172
+ description: "Fitness studio hero with accent strong presence",
173
+ type: "hero",
174
+ props: {
175
+ content: "Transform Your Body",
176
+ tagline: "<p style='text-align:center'>High-intensity training programs that deliver real results</p>",
177
+ padding: "5rem",
178
+ textShadow: "text-shadow-md",
179
+ rounding: "rounded-2xl",
180
+ justifyContent: "justify-center",
181
+ alignItems: "items-center"
182
+ }
183
+ },
184
+ {
185
+ description: "Responsive hero with large desktop padding and reduced mobile padding",
186
+ type: "hero",
187
+ props: {
188
+ content: "All-In-One Platform",
189
+ tagline: "<p style='text-align:center'>Design \u2022 <i>Launch</i> \u2022 Grow</p>",
190
+ padding: "8rem"
191
+ },
192
+ mobileProps: {
193
+ padding: "3rem"
194
+ }
195
+ },
196
+ {
197
+ description: "Hero using dynamic product dataset with light text shadow for contrast",
198
+ type: "hero",
199
+ props: {
200
+ content: "Introducing {{product.name}}",
201
+ tagline: "<p style='text-align:center'>{{product.shortTagline}}</p>",
202
+ padding: "5rem",
203
+ textShadow: "text-shadow-sm"
204
+ }
205
+ },
206
+ {
207
+ description: "Dynamic company hero using business query data; no tagline",
208
+ type: "hero",
209
+ props: {
210
+ content: "Welcome to {{company.name}}",
211
+ padding: "4rem"
212
+ }
213
+ },
214
+ {
215
+ description: "Dynamic employee spotlight using employee query",
216
+ type: "hero",
217
+ props: {
218
+ content: "Meet {{employee.fullName}}",
219
+ tagline: "<p style='text-align:center'>{{employee.position}} at {{employee.department}} - {{employee.yearsExperience}} years of experience</p>",
220
+ padding: "3rem"
221
+ }
222
+ },
223
+ {
224
+ description: "Dynamic product launch hero using product query",
225
+ type: "hero",
226
+ props: {
227
+ content: "Introducing {{product.name}}",
228
+ tagline: "<p style='text-align:center'>{{product.description}} - Starting at ${{product.price}}</p>",
229
+ padding: "5rem"
230
+ }
231
+ },
232
+ {
233
+ description: "Dynamic event announcement using 'allEvents' query, text shadow for contrast",
234
+ type: "hero",
235
+ props: {
236
+ content: "{{allEvents.title}}",
237
+ tagline: "<p style='text-align:center'>Join us on {{allEvents.date}} at {{allEvents.venue}} - {{allEvents.city}}</p>",
238
+ padding: "4rem",
239
+ textShadow: "text-shadow-md"
240
+ }
241
+ },
242
+ {
243
+ description: "Dynamic blog post hero using article query, alignment to left-center to be able to arrange a brick on its right",
244
+ type: "hero",
245
+ props: {
246
+ content: "{{article.title}}",
247
+ tagline: "<p style='text-align:center'>By {{article.author}} \u2022 Published {{article.publishDate}} \u2022 {{article.readTime}} min read</p>",
248
+ padding: "3rem",
249
+ justifyContent: "justify-start",
250
+ alignItems: "items-center"
251
+ }
252
+ }
253
+ ];
254
+
255
+ export {
256
+ manifest,
257
+ examples
258
+ };
259
+ //# sourceMappingURL=chunk-HHUFGV7J.js.map