@upstart.gg/sdk 0.0.135 → 0.0.137
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +38 -8
- package/dist/shared/ai/schemas.js.map +1 -1
- package/dist/shared/ai/types.d.ts +93 -81
- package/dist/shared/ai/types.d.ts.map +1 -1
- package/dist/shared/ajv.js +33 -32
- package/dist/shared/ajv.js.map +1 -1
- package/dist/shared/attributes.d.ts +86 -86
- package/dist/shared/attributes.d.ts.map +1 -1
- package/dist/shared/attributes.js +22 -25
- package/dist/shared/brick-manifest.d.ts +8 -5
- package/dist/shared/brick-manifest.d.ts.map +1 -1
- package/dist/shared/brick-manifest.js +3 -18
- 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/accordion.manifest.d.ts +4 -8
- package/dist/shared/bricks/manifests/accordion.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/accordion.manifest.js +13 -20
- package/dist/shared/bricks/manifests/all-manifests.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/all-manifests.js +44 -43
- package/dist/shared/bricks/manifests/all-props.d.ts +1501 -0
- package/dist/shared/bricks/manifests/all-props.d.ts.map +1 -0
- package/dist/shared/bricks/manifests/all-props.js +243 -0
- package/dist/shared/bricks/manifests/all-props.js.map +1 -0
- package/dist/shared/bricks/manifests/box.manifest.d.ts +4 -8
- package/dist/shared/bricks/manifests/box.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/box.manifest.js +16 -20
- package/dist/shared/bricks/manifests/button.manifest.d.ts +5 -12
- package/dist/shared/bricks/manifests/button.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/button.manifest.js +13 -20
- package/dist/shared/bricks/manifests/card.manifest.d.ts +10 -9
- package/dist/shared/bricks/manifests/card.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/card.manifest.js +18 -20
- package/dist/shared/bricks/manifests/carousel.manifest.d.ts +4 -8
- package/dist/shared/bricks/manifests/carousel.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/carousel.manifest.js +15 -20
- package/dist/shared/bricks/manifests/footer.manifest.d.ts +5 -9
- package/dist/shared/bricks/manifests/footer.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/footer.manifest.js +13 -20
- package/dist/shared/bricks/manifests/form.manifest.d.ts +5 -9
- package/dist/shared/bricks/manifests/form.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/form.manifest.js +13 -20
- package/dist/shared/bricks/manifests/hero.manifest.d.ts +4 -8
- package/dist/shared/bricks/manifests/hero.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/hero.manifest.js +13 -20
- package/dist/shared/bricks/manifests/html.manifest.d.ts +3 -7
- package/dist/shared/bricks/manifests/html.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/html.manifest.js +8 -20
- package/dist/shared/bricks/manifests/icon.manifest.d.ts +3 -7
- package/dist/shared/bricks/manifests/icon.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/icon.manifest.js +13 -20
- package/dist/shared/bricks/manifests/image.manifest.d.ts +3 -2
- package/dist/shared/bricks/manifests/image.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/image.manifest.js +16 -20
- package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts +4 -8
- package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/images-gallery.manifest.js +15 -20
- package/dist/shared/bricks/manifests/map.manifest.d.ts +3 -7
- package/dist/shared/bricks/manifests/map.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/map.manifest.js +11 -20
- package/dist/shared/bricks/manifests/navbar.manifest.d.ts +7 -11
- package/dist/shared/bricks/manifests/navbar.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/navbar.manifest.js +15 -20
- package/dist/shared/bricks/manifests/sidebar.manifest.d.ts +3 -7
- package/dist/shared/bricks/manifests/sidebar.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/sidebar.manifest.js +13 -20
- package/dist/shared/bricks/manifests/social-links.manifest.d.ts +4 -8
- package/dist/shared/bricks/manifests/social-links.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/social-links.manifest.js +14 -20
- package/dist/shared/bricks/manifests/spacer.manifest.d.ts +3 -7
- package/dist/shared/bricks/manifests/spacer.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/spacer.manifest.js +8 -20
- package/dist/shared/bricks/manifests/table.manifest.d.ts +6 -10
- package/dist/shared/bricks/manifests/table.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/table.manifest.js +15 -20
- package/dist/shared/bricks/manifests/tabs.manifest.d.ts +6 -10
- package/dist/shared/bricks/manifests/tabs.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/tabs.manifest.js +15 -20
- package/dist/shared/bricks/manifests/testimonials.manifest.d.ts +4 -8
- package/dist/shared/bricks/manifests/testimonials.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/testimonials.manifest.js +18 -20
- package/dist/shared/bricks/manifests/text.manifest.d.ts +4 -12
- package/dist/shared/bricks/manifests/text.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/text.manifest.js +13 -20
- package/dist/shared/bricks/manifests/timeline.manifest.d.ts +9 -13
- package/dist/shared/bricks/manifests/timeline.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/timeline.manifest.js +15 -20
- package/dist/shared/bricks/manifests/video.manifest.d.ts +3 -7
- package/dist/shared/bricks/manifests/video.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/video.manifest.js +11 -20
- package/dist/shared/bricks/props/align.d.ts +0 -3
- package/dist/shared/bricks/props/align.d.ts.map +1 -1
- package/dist/shared/bricks/props/align.js +4 -11
- package/dist/shared/bricks/props/background.d.ts +2 -8
- package/dist/shared/bricks/props/background.d.ts.map +1 -1
- package/dist/shared/bricks/props/background.js +4 -9
- package/dist/shared/bricks/props/border.d.ts +0 -7
- package/dist/shared/bricks/props/border.d.ts.map +1 -1
- package/dist/shared/bricks/props/border.js +5 -10
- package/dist/shared/bricks/props/color-preset.d.ts +316 -6
- package/dist/shared/bricks/props/color-preset.d.ts.map +1 -1
- package/dist/shared/bricks/props/color-preset.js +2 -5
- package/dist/shared/bricks/props/color.d.ts +3 -5
- package/dist/shared/bricks/props/color.d.ts.map +1 -1
- package/dist/shared/bricks/props/color.js +3 -8
- package/dist/shared/bricks/props/common.d.ts.map +1 -1
- package/dist/shared/bricks/props/common.js +4 -5
- package/dist/shared/bricks/props/css-length.d.ts +0 -1
- package/dist/shared/bricks/props/css-length.d.ts.map +1 -1
- package/dist/shared/bricks/props/css-length.js +1 -4
- package/dist/shared/bricks/props/datasource.d.ts +3 -3
- package/dist/shared/bricks/props/datasource.d.ts.map +1 -1
- package/dist/shared/bricks/props/datasource.js +74 -76
- package/dist/shared/bricks/props/datasource.js.map +1 -1
- package/dist/shared/bricks/props/date.js +21 -4
- package/dist/shared/bricks/props/date.js.map +1 -1
- package/dist/shared/bricks/props/direction.d.ts +1 -2
- package/dist/shared/bricks/props/direction.d.ts.map +1 -1
- package/dist/shared/bricks/props/direction.js +4 -7
- package/dist/shared/bricks/props/dynamic.d.ts +5 -67
- package/dist/shared/bricks/props/dynamic.d.ts.map +1 -1
- package/dist/shared/bricks/props/dynamic.js +6 -24
- package/dist/shared/bricks/props/effects.d.ts +1 -3
- package/dist/shared/bricks/props/effects.d.ts.map +1 -1
- package/dist/shared/bricks/props/effects.js +4 -9
- package/dist/shared/bricks/props/geolocation.d.ts.map +1 -1
- package/dist/shared/bricks/props/geolocation.js +3 -6
- package/dist/shared/bricks/props/geolocation.js.map +1 -1
- package/dist/shared/bricks/props/helpers.js +5 -6
- package/dist/shared/bricks/props/image.d.ts +2 -8
- package/dist/shared/bricks/props/image.d.ts.map +1 -1
- package/dist/shared/bricks/props/image.js +4 -7
- package/dist/shared/bricks/props/string.d.ts +2 -5
- package/dist/shared/bricks/props/string.d.ts.map +1 -1
- package/dist/shared/bricks/props/string.js +3 -10
- package/dist/shared/bricks/props/tags.d.ts +0 -1
- package/dist/shared/bricks/props/tags.d.ts.map +1 -1
- package/dist/shared/bricks/props/tags.js +3 -6
- package/dist/shared/bricks/props/text.d.ts +0 -3
- package/dist/shared/bricks/props/text.d.ts.map +1 -1
- package/dist/shared/bricks/props/text.js +4 -11
- package/dist/shared/bricks/props/types.d.ts +2 -2
- package/dist/shared/bricks/props/types.d.ts.map +1 -1
- package/dist/shared/bricks.d.ts +64 -152
- package/dist/shared/bricks.d.ts.map +1 -1
- package/dist/shared/bricks.js +49 -52
- package/dist/shared/chunk-2O5HVPID.js +41 -0
- package/dist/shared/chunk-2O5HVPID.js.map +1 -0
- package/dist/shared/{chunk-F22LDHEO.js → chunk-2U5U3CCJ.js} +3 -18
- package/dist/shared/chunk-2U5U3CCJ.js.map +1 -0
- package/dist/shared/{chunk-LXAO3JA6.js → chunk-4KY7OZWD.js} +35 -35
- package/dist/shared/chunk-4KY7OZWD.js.map +1 -0
- package/dist/shared/{chunk-TNMNMYOB.js → chunk-5RCC2STG.js} +2 -13
- package/dist/shared/chunk-5RCC2STG.js.map +1 -0
- package/dist/shared/{chunk-V3UA3LRK.js → chunk-6AE7UD73.js} +56 -37
- package/dist/shared/chunk-6AE7UD73.js.map +1 -0
- package/dist/shared/chunk-7U5WPHXB.js +346 -0
- package/dist/shared/chunk-7U5WPHXB.js.map +1 -0
- package/dist/shared/{chunk-Q4NPPLEU.js → chunk-BHARJBEK.js} +2 -9
- package/dist/shared/chunk-BHARJBEK.js.map +1 -0
- package/dist/shared/chunk-BZTWZC77.js +530 -0
- package/dist/shared/chunk-BZTWZC77.js.map +1 -0
- package/dist/shared/{chunk-QSND5IWT.js → chunk-DCM4732T.js} +24 -43
- package/dist/shared/chunk-DCM4732T.js.map +1 -0
- package/dist/shared/{chunk-W6MRYRGJ.js → chunk-DRQKKPTX.js} +6 -20
- package/dist/shared/chunk-DRQKKPTX.js.map +1 -0
- package/dist/shared/{chunk-CSF2WQX2.js → chunk-EID5HPF3.js} +15 -12
- package/dist/shared/chunk-EID5HPF3.js.map +1 -0
- package/dist/shared/chunk-EMF5TCPX.js +389 -0
- package/dist/shared/chunk-EMF5TCPX.js.map +1 -0
- package/dist/shared/chunk-FD7YYFRI.js +225 -0
- package/dist/shared/chunk-FD7YYFRI.js.map +1 -0
- package/dist/shared/{chunk-MLZT7MRQ.js → chunk-FHA4DFIM.js} +26 -27
- package/dist/shared/chunk-FHA4DFIM.js.map +1 -0
- package/dist/shared/{chunk-GRMY35BU.js → chunk-FUUSAMN3.js} +165 -40
- package/dist/shared/chunk-FUUSAMN3.js.map +1 -0
- package/dist/shared/chunk-GDYCCB3B.js +22 -0
- package/dist/shared/chunk-GDYCCB3B.js.map +1 -0
- package/dist/shared/chunk-GLV6QIIM.js +41 -0
- package/dist/shared/chunk-GLV6QIIM.js.map +1 -0
- package/dist/shared/chunk-H6TMBELF.js +374 -0
- package/dist/shared/chunk-H6TMBELF.js.map +1 -0
- package/dist/shared/{chunk-BMWRR4DI.js → chunk-HUWMIXNN.js} +26 -28
- package/dist/shared/chunk-HUWMIXNN.js.map +1 -0
- package/dist/shared/chunk-HY7JOP3J.js +150 -0
- package/dist/shared/chunk-HY7JOP3J.js.map +1 -0
- package/dist/shared/{chunk-TFGGYU6Y.js → chunk-IEMCCHM4.js} +7 -12
- package/dist/shared/chunk-IEMCCHM4.js.map +1 -0
- package/dist/shared/{chunk-TB3X4LRQ.js → chunk-J45LSQT6.js} +2 -2
- package/dist/shared/chunk-J45LSQT6.js.map +1 -0
- package/dist/shared/{chunk-WGDUJSSS.js → chunk-JF52BBFD.js} +27 -28
- package/dist/shared/chunk-JF52BBFD.js.map +1 -0
- package/dist/shared/{chunk-GPCI2N2A.js → chunk-JLDAS3VE.js} +136 -33
- package/dist/shared/chunk-JLDAS3VE.js.map +1 -0
- package/dist/shared/{chunk-SE6O65HC.js → chunk-JSDKK5QN.js} +10 -23
- package/dist/shared/chunk-JSDKK5QN.js.map +1 -0
- package/dist/shared/chunk-JW7MQAU4.js +354 -0
- package/dist/shared/chunk-JW7MQAU4.js.map +1 -0
- package/dist/shared/{chunk-RV7AYVFV.js → chunk-KKWT3OXF.js} +4 -19
- package/dist/shared/chunk-KKWT3OXF.js.map +1 -0
- package/dist/shared/{chunk-TEO6TJOM.js → chunk-KQH6V22E.js} +36 -35
- package/dist/shared/{chunk-TEO6TJOM.js.map → chunk-KQH6V22E.js.map} +1 -1
- package/dist/shared/{chunk-3KLRW4I2.js → chunk-LGDDJJHK.js} +212 -156
- package/dist/shared/chunk-LGDDJJHK.js.map +1 -0
- package/dist/shared/{chunk-QL3T5HJQ.js → chunk-LGGPCCCY.js} +3 -3
- package/dist/shared/chunk-LGGPCCCY.js.map +1 -0
- package/dist/shared/{chunk-2HO4FHLM.js → chunk-LPAQ47C6.js} +137 -171
- package/dist/shared/chunk-LPAQ47C6.js.map +1 -0
- package/dist/shared/chunk-MO6CRLQA.js +73 -0
- package/dist/shared/chunk-MO6CRLQA.js.map +1 -0
- package/dist/shared/{chunk-SHUGHJ7V.js → chunk-MYOLWTB2.js} +29 -32
- package/dist/shared/chunk-MYOLWTB2.js.map +1 -0
- package/dist/shared/{chunk-Z2NTDFB4.js → chunk-O24RDXZS.js} +34 -34
- package/dist/shared/chunk-O24RDXZS.js.map +1 -0
- package/dist/shared/{chunk-BPBKHEQ5.js → chunk-OJ6KL7FU.js} +1 -8
- package/dist/shared/chunk-OJ6KL7FU.js.map +1 -0
- package/dist/shared/{chunk-GCQURRVB.js → chunk-PF75LW33.js} +24 -27
- package/dist/shared/chunk-PF75LW33.js.map +1 -0
- package/dist/shared/{chunk-EWSPTRDL.js → chunk-QEJGPYTB.js} +132 -48
- package/dist/shared/chunk-QEJGPYTB.js.map +1 -0
- package/dist/shared/{chunk-P3RH5URN.js → chunk-SK2O7GFC.js} +17 -18
- package/dist/shared/chunk-SK2O7GFC.js.map +1 -0
- package/dist/shared/{chunk-UQF52PWK.js → chunk-SQXZNGQF.js} +8 -23
- package/dist/shared/chunk-SQXZNGQF.js.map +1 -0
- package/dist/shared/{chunk-NTLAKMMQ.js → chunk-SRYBJ6NQ.js} +6 -17
- package/dist/shared/chunk-SRYBJ6NQ.js.map +1 -0
- package/dist/shared/{chunk-O5PLB3YB.js → chunk-T6C3NG2L.js} +68 -59
- package/dist/shared/chunk-T6C3NG2L.js.map +1 -0
- package/dist/shared/{chunk-U7TVEPKA.js → chunk-TBT2PTGB.js} +41 -33
- package/dist/shared/chunk-TBT2PTGB.js.map +1 -0
- package/dist/shared/{chunk-CKFRSHR2.js → chunk-U4KZUX37.js} +18 -19
- package/dist/shared/chunk-U4KZUX37.js.map +1 -0
- package/dist/shared/{chunk-4WI23M7W.js → chunk-VSLRTXLF.js} +11 -4
- package/dist/shared/chunk-VSLRTXLF.js.map +1 -0
- package/dist/shared/{chunk-BHC2A43S.js → chunk-VTCHJT4O.js} +3 -3
- package/dist/shared/{chunk-BHC2A43S.js.map → chunk-VTCHJT4O.js.map} +1 -1
- package/dist/shared/{chunk-DRTGM2UJ.js → chunk-W2RFDII5.js} +3 -3
- package/dist/shared/chunk-W2RFDII5.js.map +1 -0
- package/dist/shared/{chunk-Y74LZNND.js → chunk-WPZV3LYL.js} +4 -10
- package/dist/shared/chunk-WPZV3LYL.js.map +1 -0
- package/dist/shared/chunk-XFZQGRRL.js +101 -0
- package/dist/shared/chunk-XFZQGRRL.js.map +1 -0
- package/dist/shared/{chunk-QQQ3FYPG.js → chunk-XK2CERPB.js} +147 -31
- package/dist/shared/chunk-XK2CERPB.js.map +1 -0
- package/dist/shared/chunk-XNRSL6FL.js +78 -0
- package/dist/shared/chunk-XNRSL6FL.js.map +1 -0
- package/dist/shared/{chunk-2RK3CPYJ.js → chunk-XXPSM6UA.js} +9 -12
- package/dist/shared/chunk-XXPSM6UA.js.map +1 -0
- package/dist/shared/{chunk-ZLYIRH2B.js → chunk-ZRBTAC3G.js} +3 -18
- package/dist/shared/chunk-ZRBTAC3G.js.map +1 -0
- package/dist/shared/{chunk-Z35I5JM5.js → chunk-ZVJNRKT4.js} +18 -20
- package/dist/shared/chunk-ZVJNRKT4.js.map +1 -0
- package/dist/shared/context.d.ts +402 -22
- package/dist/shared/context.d.ts.map +1 -1
- package/dist/shared/context.js +93 -0
- package/dist/shared/context.js.map +1 -1
- package/dist/shared/datarecords/external/airtable/types.d.ts +1 -1
- package/dist/shared/datarecords/external/airtable/types.d.ts.map +1 -1
- package/dist/shared/datarecords/external/airtable/types.js +2 -1
- package/dist/shared/datarecords/types.d.ts +10 -63
- package/dist/shared/datarecords/types.d.ts.map +1 -1
- package/dist/shared/datarecords/types.js +5 -6
- package/dist/shared/datasources/external/instagram/feed/schema.d.ts +1 -1
- package/dist/shared/datasources/external/instagram/feed/schema.d.ts.map +1 -1
- package/dist/shared/datasources/external/instagram/feed/schema.js +4 -1
- package/dist/shared/datasources/external/instagram/feed/schema.js.map +1 -1
- package/dist/shared/datasources/external/mastodon/status/schema.d.ts +6 -6
- package/dist/shared/datasources/external/mastodon/status/schema.d.ts.map +1 -1
- package/dist/shared/datasources/external/mastodon/status/schema.js +6 -19
- package/dist/shared/datasources/external/mastodon/status/schema.js.map +1 -1
- package/dist/shared/datasources/external/meta/oauth/config.d.ts +2 -2
- package/dist/shared/datasources/external/meta/oauth/config.d.ts.map +1 -1
- package/dist/shared/datasources/external/meta/oauth/config.js +4 -1
- package/dist/shared/datasources/external/meta/oauth/config.js.map +1 -1
- package/dist/shared/datasources/external/threads/media/fetcher.js +3 -3
- package/dist/shared/datasources/external/threads/media/schema.d.ts +1 -1
- package/dist/shared/datasources/external/threads/media/schema.d.ts.map +1 -1
- package/dist/shared/datasources/external/threads/media/schema.js +4 -8
- package/dist/shared/datasources/external/threads/media/schema.js.map +1 -1
- package/dist/shared/datasources/internal/blog/schema.d.ts +1 -1
- package/dist/shared/datasources/internal/blog/schema.d.ts.map +1 -1
- package/dist/shared/datasources/internal/blog/schema.js +4 -1
- package/dist/shared/datasources/internal/blog/schema.js.map +1 -1
- package/dist/shared/datasources/types.d.ts +25 -25
- package/dist/shared/datasources/types.d.ts.map +1 -1
- package/dist/shared/datasources/types.js +3 -16
- 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/images.d.ts +1 -1
- package/dist/shared/images.d.ts.map +1 -1
- package/dist/shared/images.js +4 -38
- package/dist/shared/images.js.map +1 -1
- package/dist/shared/page.d.ts +139 -22
- package/dist/shared/page.d.ts.map +1 -1
- package/dist/shared/page.js +51 -49
- package/dist/shared/responsive.js +1 -1
- package/dist/shared/site.d.ts +80 -197
- package/dist/shared/site.d.ts.map +1 -1
- package/dist/shared/site.js +55 -114
- package/dist/shared/site.js.map +1 -1
- package/dist/shared/sitemap.d.ts +6 -327
- package/dist/shared/sitemap.d.ts.map +1 -1
- package/dist/shared/sitemap.js +50 -58
- package/dist/shared/theme.d.ts +0 -37
- package/dist/shared/theme.d.ts.map +1 -1
- package/dist/shared/theme.js +4 -21
- package/dist/shared/utils/llm.d.ts +1 -10
- package/dist/shared/utils/llm.d.ts.map +1 -1
- package/dist/shared/utils/llm.js +1 -18
- package/dist/shared/utils/schema.d.ts +3 -2
- package/dist/shared/utils/schema.d.ts.map +1 -1
- package/dist/shared/utils/schema.js +2 -17
- package/dist/shared/utils/string-enum.d.ts +9 -3
- package/dist/shared/utils/string-enum.d.ts.map +1 -1
- package/dist/shared/utils/string-enum.js +1 -1
- package/package.json +21 -5
- package/src/shared/ai/schemas.ts +41 -10
- package/src/shared/ai/types.ts +78 -76
- package/src/shared/attributes.ts +56 -46
- package/src/shared/brick-manifest.ts +5 -6
- package/src/shared/bricks/manifests/_types.ts +9 -0
- package/src/shared/bricks/manifests/accordion.manifest.ts +138 -171
- package/src/shared/bricks/manifests/all-manifests.ts +1 -0
- package/src/shared/bricks/manifests/all-props.ts +165 -0
- package/src/shared/bricks/manifests/box.manifest.ts +214 -150
- package/src/shared/bricks/manifests/button.manifest.ts +204 -79
- package/src/shared/bricks/manifests/card.manifest.ts +229 -43
- package/src/shared/bricks/manifests/carousel.manifest.ts +165 -35
- package/src/shared/bricks/manifests/footer.manifest.ts +18 -20
- package/src/shared/bricks/manifests/form.manifest.ts +136 -22
- package/src/shared/bricks/manifests/hero.manifest.ts +121 -38
- package/src/shared/bricks/manifests/html.manifest.ts +2 -5
- package/src/shared/bricks/manifests/icon.manifest.ts +225 -46
- package/src/shared/bricks/manifests/image.manifest.ts +125 -21
- package/src/shared/bricks/manifests/images-gallery.manifest.ts +15 -20
- package/src/shared/bricks/manifests/map.manifest.ts +12 -15
- package/src/shared/bricks/manifests/navbar.manifest.ts +22 -26
- package/src/shared/bricks/manifests/sidebar.manifest.ts +11 -14
- package/src/shared/bricks/manifests/social-links.manifest.ts +19 -24
- package/src/shared/bricks/manifests/spacer.manifest.ts +2 -5
- package/src/shared/bricks/manifests/table.manifest.ts +17 -20
- package/src/shared/bricks/manifests/tabs.manifest.ts +16 -21
- package/src/shared/bricks/manifests/testimonials.manifest.ts +23 -25
- package/src/shared/bricks/manifests/text.manifest.ts +47 -29
- package/src/shared/bricks/manifests/timeline.manifest.ts +31 -29
- package/src/shared/bricks/manifests/video.manifest.ts +11 -15
- package/src/shared/bricks/props/align.ts +0 -13
- package/src/shared/bricks/props/background.ts +1 -14
- package/src/shared/bricks/props/border.ts +2 -13
- package/src/shared/bricks/props/color-preset.ts +9 -10
- package/src/shared/bricks/props/color.ts +7 -18
- package/src/shared/bricks/props/common.ts +6 -7
- package/src/shared/bricks/props/css-length.ts +0 -5
- package/src/shared/bricks/props/datasource.ts +72 -74
- package/src/shared/bricks/props/direction.ts +1 -5
- package/src/shared/bricks/props/dynamic.ts +0 -11
- package/src/shared/bricks/props/effects.ts +0 -9
- package/src/shared/bricks/props/geolocation.ts +3 -3
- package/src/shared/bricks/props/helpers.ts +1 -1
- package/src/shared/bricks/props/image.ts +4 -16
- package/src/shared/bricks/props/string.ts +6 -19
- package/src/shared/bricks/props/tags.ts +0 -5
- package/src/shared/bricks/props/tests/background.test.ts +1 -15
- package/src/shared/bricks/props/tests/image.test.ts +3 -9
- package/src/shared/bricks/props/tests/string.test.ts +2 -26
- package/src/shared/bricks/props/text.ts +0 -12
- package/src/shared/bricks/props/types.ts +4 -3
- package/src/shared/bricks.ts +164 -1025
- package/src/shared/context.ts +24 -23
- package/src/shared/datarecords/external/airtable/types.ts +12 -11
- package/src/shared/datarecords/types.ts +22 -44
- package/src/shared/datasources/external/instagram/feed/schema.ts +2 -1
- package/src/shared/datasources/external/mastodon/status/schema.ts +4 -19
- package/src/shared/datasources/external/meta/oauth/config.ts +2 -1
- package/src/shared/datasources/external/threads/media/schema.ts +2 -8
- package/src/shared/datasources/internal/blog/schema.ts +2 -1
- package/src/shared/datasources/types.ts +64 -79
- package/src/shared/datasources.ts +2 -4
- package/src/shared/images.ts +12 -18
- package/src/shared/page.ts +9 -2
- package/src/shared/site.ts +3 -3
- package/src/shared/sitemap.ts +3 -68
- package/src/shared/tests/attributes.test.ts +2 -0
- package/src/shared/theme.ts +81 -96
- package/src/shared/utils/llm.ts +5 -191
- package/src/shared/utils/schema.ts +71 -244
- package/src/shared/utils/string-enum.ts +25 -4
- package/src/shared/utils/tests/schema.test.ts +112 -314
- package/dist/shared/chunk-2HO4FHLM.js.map +0 -1
- package/dist/shared/chunk-2RK3CPYJ.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-6E42XWFH.js +0 -103
- package/dist/shared/chunk-6E42XWFH.js.map +0 -1
- package/dist/shared/chunk-A2QPY54H.js +0 -13
- package/dist/shared/chunk-A2QPY54H.js.map +0 -1
- package/dist/shared/chunk-BMWRR4DI.js.map +0 -1
- package/dist/shared/chunk-BPBKHEQ5.js.map +0 -1
- package/dist/shared/chunk-BW6EFRSF.js +0 -794
- package/dist/shared/chunk-BW6EFRSF.js.map +0 -1
- package/dist/shared/chunk-CKFRSHR2.js.map +0 -1
- package/dist/shared/chunk-CSF2WQX2.js.map +0 -1
- package/dist/shared/chunk-D4YQ6ABM.js +0 -338
- package/dist/shared/chunk-D4YQ6ABM.js.map +0 -1
- package/dist/shared/chunk-DRTGM2UJ.js.map +0 -1
- package/dist/shared/chunk-EQMU6NIU.js +0 -1222
- package/dist/shared/chunk-EQMU6NIU.js.map +0 -1
- package/dist/shared/chunk-EWSPTRDL.js.map +0 -1
- package/dist/shared/chunk-F22LDHEO.js.map +0 -1
- package/dist/shared/chunk-FVU5PXRC.js +0 -244
- package/dist/shared/chunk-FVU5PXRC.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-JK2FWFJU.js +0 -15
- package/dist/shared/chunk-JK2FWFJU.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-NT3IW52F.js +0 -260
- package/dist/shared/chunk-NT3IW52F.js.map +0 -1
- package/dist/shared/chunk-NTLAKMMQ.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-Q4NPPLEU.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-RV7AYVFV.js.map +0 -1
- package/dist/shared/chunk-SE6O65HC.js.map +0 -1
- package/dist/shared/chunk-SHUGHJ7V.js.map +0 -1
- package/dist/shared/chunk-TB3X4LRQ.js.map +0 -1
- package/dist/shared/chunk-TFGGYU6Y.js.map +0 -1
- package/dist/shared/chunk-TNMNMYOB.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-W6MRYRGJ.js.map +0 -1
- package/dist/shared/chunk-WGDUJSSS.js.map +0 -1
- package/dist/shared/chunk-WKN566LN.js +0 -29
- package/dist/shared/chunk-WKN566LN.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-Y74LZNND.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/chunk-ZLYIRH2B.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/dist/shared/tests/schema-registry.test.d.ts +0 -2
- package/dist/shared/tests/schema-registry.test.d.ts.map +0 -1
- package/dist/shared/utils/schema-registry.d.ts +0 -5
- package/dist/shared/utils/schema-registry.d.ts.map +0 -1
- package/dist/shared/utils/schema-registry.js +0 -29
- package/dist/shared/utils/tests/schema-registry.test.d.ts +0 -2
- package/dist/shared/utils/tests/schema-registry.test.d.ts.map +0 -1
- package/dist/shared/utils/typed-ref.d.ts +0 -43
- package/dist/shared/utils/typed-ref.d.ts.map +0 -1
- package/dist/shared/utils/typed-ref.js +0 -10
- package/dist/shared/utils/typed-ref.js.map +0 -1
- package/src/shared/schema-registry.ts +0 -82
- package/src/shared/tests/schema-registry.test.ts +0 -14
- package/src/shared/utils/schema-registry.ts +0 -82
- package/src/shared/utils/tests/schema-registry.test.ts +0 -13
- package/src/shared/utils/typed-ref.ts +0 -53
- /package/dist/shared/{utils/schema-registry.js.map → bricks/manifests/_types.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/bricks.ts"],"sourcesContent":["import { Type, type Static, type TObject } from \"@sinclair/typebox\";\nimport { customAlphabet } from \"nanoid\";\nimport { brickTypes, defaultProps } from \"./bricks/manifests/all-manifests\";\nimport { cssLengthRef } from \"./bricks/props/css-length\";\nimport { colorPresetRef } from \"./bricks/props/color-preset\";\nimport { mergeIgnoringArrays } from \"./utils/merge\";\nimport { getSchemaDefaults } from \"./utils/schema\";\nimport { StringEnum } from \"./utils/string-enum\";\nimport { alignItemsRef, justifyContentRef } from \"./bricks/props/align\";\nimport type { CommonBrickProps } from \"./bricks/props/common\";\nimport { directionRef } from \"./bricks/props/direction\";\nimport type { PageAttributes, SiteAttributes } from \"./attributes\";\nimport { toLLMSchema } from \"./utils/llm\";\nimport { backgroundRef } from \"./bricks/props/background\";\n\n/**\n * Generates a unique identifier for bricks.\n */\nexport const generateId = customAlphabet(\"azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN\", 7);\n\nconst brickAbsolutePositionSchema = Type.Object({\n left: Type.Optional(\n Type.String({\n title: \"top\",\n description: \"The left position in css unit.\",\n }),\n ),\n top: Type.Optional(\n Type.String({\n title: \"top\",\n description: \"The top position in css unit.\",\n }),\n ),\n right: Type.Optional(\n Type.String({\n title: \"right\",\n description: \"The right position in css unit.\",\n }),\n ),\n bottom: Type.Optional(\n Type.String({\n title: \"bottom\",\n description: \"The bottom position in css unit.\",\n }),\n ),\n inset: Type.Optional(\n Type.String({\n title: \"inset\",\n description: \"The inset position in css unit.\",\n }),\n ),\n translateX: Type.Optional(\n Type.String({\n title: \"translateX\",\n description: \"The translateX position in css unit.\",\n }),\n ),\n translateY: Type.Optional(\n Type.String({\n title: \"translateY\",\n description: \"The translateY position in css unit.\",\n }),\n ),\n rotate: Type.Optional(\n Type.String({\n title: \"rotate\",\n description: \"The rotate position in css unit.\",\n }),\n ),\n});\n\nexport type BrickAbsolutePosition = Static<typeof brickAbsolutePositionSchema>;\n\nexport const brickTypeSchema = StringEnum(Object.keys(defaultProps), {\n title: \"Brick type\",\n});\n\nexport const brickSchema = Type.Object(\n {\n id: Type.String({\n title: \"ID\",\n description: \"A unique identifier for the brick.\",\n }),\n type: brickTypeSchema,\n label: Type.Optional(\n Type.String({\n title: \"Label\",\n description: \"A human-readable label for the brick. Used for organization and identification.\",\n }),\n ),\n props: Type.Any({\n title: \"Props\",\n description: \"The static props of the brick. The available props depends on the brick type.\",\n }),\n mobileProps: Type.Optional(\n Type.Any({\n title: \"Props\",\n description:\n \"The overriden props for mobile, merged with desktop props. Same type as props but partial.\",\n }),\n ),\n },\n { additionalProperties: true },\n);\n\nexport function makeFullBrickSchemaForLLM(type: string, props: TObject) {\n return toLLMSchema(\n Type.Object(\n {\n id: Type.String({\n title: \"ID\",\n description: \"A unique identifier for the brick.\",\n }),\n type: Type.Literal(type),\n props,\n mobileProps: Type.Optional(Type.Partial(props)),\n },\n { additionalProperties: false },\n ),\n );\n}\n\nexport type Brick = Omit<Static<typeof brickSchema>, \"props\" | \"mobileProps\"> & {\n props: CommonBrickProps & Record<string, unknown>;\n mobileProps?: CommonBrickProps & Record<string, unknown>;\n};\n\nexport const sectionProps = Type.Object(\n {\n colorPreset: Type.Optional(\n colorPresetRef({\n title: \"Color\",\n }),\n ),\n backgroundImage: Type.Optional(\n backgroundRef({\n title: \"Background\",\n description:\n \"The background image of the section. Prefer to set background images on sections rather than on individual bricks.\",\n }),\n ),\n direction: directionRef({\n default: \"flex-row\",\n title: \"Direction\",\n description: \"The direction of the section. Only apply to desktop. On mobile, it is always vertical.\",\n \"ui:responsive\": \"desktop\",\n }),\n minHeight: Type.Optional(\n cssLengthRef({\n title: \"Min height\",\n default: \"fit-content\",\n description:\n \"The min height of the section. default is 'fit-content'. You can also use the keyword 'full' to make it full viewport height. Lastly, you can use any valid CSS length unit.\",\n \"ui:field\": \"hidden\",\n }),\n ),\n variant: Type.Optional(\n StringEnum([\"navbar\", \"footer\", \"sidebar\"], {\n title: \"Custom section variant\",\n description: \"Used for custom styling and layout.\",\n enumNames: [\"Navbar\", \"Footer\", \"Sidebar\"],\n \"ui:field\": \"hidden\",\n \"ai:hidden\": true,\n }),\n ),\n maxWidth: Type.Optional(\n StringEnum([\"max-w-screen-lg\", \"max-w-screen-xl\", \"max-w-screen-2xl\", \"max-w-full\"], {\n title: \"Max width\",\n default: \"max-w-full\",\n enumNames: [\"M\", \"L\", \"XL\", \"Full\"],\n description: \"The maximum width of the section. Desktop only\",\n \"ai:instructions\":\n \"Choose the most appropriate max width for the section. The value 'max-w-full' is the most common and the default. Use the same value for all sections on the same page unless there is a good reason to do otherwise.\",\n displayAs: \"button-group\",\n \"ui:responsive\": \"desktop\",\n }),\n ),\n verticalMargin: Type.Optional(\n cssLengthRef({\n title: \"Vertical Margin\",\n description:\n \"The vertical margin of the section. By default, all sections touch each other with no space in between. If you want to add space between sections, set this value to e.g. '2rem' or '32px'. Adding a vertical margin will reveal the background color of the page.\",\n default: \"0\",\n \"ui:styleId\": \"styles:verticalMargin\",\n }),\n ),\n justifyContent: Type.Optional(\n justifyContentRef({\n default: \"justify-center\",\n }),\n ),\n alignItems: Type.Optional(\n alignItemsRef({\n default: \"items-center\",\n }),\n ),\n padding: Type.Optional(\n cssLengthRef({\n default: \"2rem\",\n description: \"Padding inside the section.\",\n title: \"Padding\",\n \"ui:responsive\": true,\n \"ui:placeholder\": \"Not specified\",\n \"ui:styleId\": \"styles:padding\",\n }),\n ),\n gap: Type.Optional(\n cssLengthRef({\n title: \"Gap\",\n description: \"The gap between the bricks in the section.\",\n default: \"20px\",\n \"ui:styleId\": \"styles:gap\",\n }),\n ),\n wrap: Type.Optional(\n Type.Boolean({\n title: \"Wrap\",\n description: \"Wrap bricks if they overflow the section.\",\n default: true,\n \"ui:styleId\": \"styles:wrap\",\n }),\n ),\n lastTouched: Type.Optional(\n Type.Number({\n description: \"Do not use this field. It is used internally by the editor.\",\n \"ui:field\": \"hidden\",\n \"ai:hidden\": true,\n }),\n ),\n },\n {\n additionalProperties: false,\n },\n);\n\nexport const sectionSchema = Type.Object(\n {\n id: Type.String({\n description: \"The unique ID of the section. Use a human readable url-safe slug\",\n examples: [\"content-section\", \"contact-section\"],\n }),\n label: Type.String({\n description: \"The label of the section. Shown only to the website owner, not public.\",\n examples: [\"Content\", \"Contact\"],\n }),\n order: Type.Number({\n description: \"Determines section order in the page (lower numbers appear first). 0-based\",\n }),\n props: sectionProps,\n mobileProps: Type.Optional(Type.Partial(sectionProps, { additionalProperties: false })),\n bricks: Type.Array(brickSchema),\n },\n {\n description: \"Sections are direct children of the page that are stacked vertically.\",\n },\n);\n\nexport const sectionSchemaLLM = toLLMSchema(sectionSchema);\nexport const sectionSchemaNoBricks = Type.Omit(sectionSchema, [\"bricks\"]);\nexport const sectionSchemaNoBricksLLM = toLLMSchema(sectionSchemaNoBricks);\n\nconst sectionDefaultprops = getSchemaDefaults(sectionSchema.properties.props, \"desktop\") as Section[\"props\"];\nconst sectionMobileDefaultprops = getSchemaDefaults(\n sectionSchema.properties.mobileProps,\n \"mobile\",\n) as Section[\"mobileProps\"];\n\nexport type Section = Static<typeof sectionSchema>;\n\nexport function processSections(\n sections: Section[],\n siteAttributes: SiteAttributes,\n pageAttributes: PageAttributes,\n): Section[] {\n const processSection = (section: Section) => {\n return {\n ...section,\n props: mergeIgnoringArrays({} as Section[\"props\"], sectionDefaultprops, section.props),\n mobileProps: mergeIgnoringArrays({}, sectionMobileDefaultprops, section.mobileProps || {}),\n bricks: section.bricks.map(processBrick).filter(Boolean) as Brick[],\n } as const;\n };\n\n const finalSections = sections.map(processSection);\n\n if (siteAttributes.navbar && !pageAttributes.noNavbar) {\n finalSections.unshift(\n processSection({\n order: -1,\n id: \"navbar-section\",\n label: \"Navbar\",\n props: {\n variant: \"navbar\",\n direction: \"flex-row\",\n },\n mobileProps: {},\n bricks: [\n {\n id: \"navbar\",\n type: \"navbar\",\n props: siteAttributes.navbar,\n },\n ],\n }),\n );\n }\n if (siteAttributes.footer && !pageAttributes.noFooter) {\n finalSections.push(\n processSection({\n order: 1000,\n id: \"footer-section\",\n label: \"Footer\",\n props: {\n variant: \"footer\",\n direction: \"flex-row\",\n },\n mobileProps: {},\n bricks: [\n {\n id: \"footer\",\n type: \"footer\",\n props: siteAttributes.footer,\n },\n ],\n }),\n );\n }\n\n return finalSections satisfies Section[];\n}\n\n/**\n * process a brick and add default props\n */\nexport function processBrick<T extends Brick>(brick: T): T {\n const defProps = defaultProps[brick.type];\n // if (!defProps) {\n // console.warn(`No default props found for brick type: ${brick.type}`);\n // return false; // or throw an error if you prefer\n // }\n const result = {\n ...brick,\n props: mergeIgnoringArrays({} as Brick[\"props\"], defProps.props, {\n ...brick.props,\n ...(brick.props.$children\n ? { $children: (brick.props.$children as T[]).map(processBrick).filter(Boolean) }\n : {}),\n }),\n };\n\n if (!result.props.width) {\n result.props.grow = true;\n }\n\n return result;\n}\n\nexport function createEmptyBrick(type: string, ghost = false): Brick {\n const props = { ...defaultProps[type].props, ghost };\n const newBrick = {\n id: `b-${generateId()}`,\n type,\n props,\n };\n return newBrick;\n}\n\nexport const sectionsExamples: { label: string; description: string; example: Section }[] = [\n {\n label: \"Hero section with centered 'hero' and 'button' bricks\",\n description: `A simple hero section with a title and a light primary background.\nThe \"hero\" brick does not have a colorPreset so it is transparent and inherits the background/text-color settings from the section.\nBricks are centered both vertically and horizontally using justifyContent and alignItems.\nBricks are stacked vertically using the \"direction\" set to \"flex-col\".\n`,\n example: {\n id: \"hero-section\",\n label: \"Hero\",\n order: 0,\n props: {\n colorPreset: { color: \"primary-100\" },\n direction: \"flex-col\",\n padding: \"6rem\",\n gap: \"3rem\",\n justifyContent: \"justify-center\",\n alignItems: \"items-center\",\n },\n bricks: [\n {\n id: \"hero\",\n type: \"hero\",\n label: \"Main hero title\",\n props: {\n content: \"<h1 style='text-align:center'>Welcome to my SaaS</h1>\",\n tagline: \"The future of productivity starts here\",\n },\n },\n {\n id: \"cta-button\",\n type: \"button\",\n label: \"Call to action button\",\n props: {\n label: \"Get Started\",\n href: \"/signup\",\n colorPreset: { color: \"primary-500\", variant: \"solid\" },\n },\n },\n ],\n },\n },\n {\n label: \"Contact section with a text and a form\",\n description: `A contact section with a title and a form.\nThe section has a light gray background using a colorPreset.\nBricks are stacked vertically using the \"direction\" set to \"flex-col\".\n`,\n example: {\n id: \"contact-section\",\n label: \"Contact\",\n order: 1,\n props: {\n colorPreset: { color: \"gray-100\" },\n direction: \"flex-col\",\n padding: \"4rem\",\n gap: \"2rem\",\n justifyContent: \"justify-center\",\n alignItems: \"items-center\",\n },\n bricks: [\n {\n id: \"contact-title\",\n type: \"text\",\n props: {\n content: \"<h2>Get in Touch</h2>\",\n },\n },\n {\n id: \"contact-form\",\n type: \"form\",\n props: {\n title: \"Contact Us\",\n fields: [\n { name: \"name\", label: \"Name\", type: \"text\", required: true },\n { name: \"email\", label: \"Email\", type: \"email\", required: true },\n { name: \"message\", label: \"Message\", type: \"textarea\", required: true },\n ],\n },\n },\n ],\n },\n },\n {\n label: \"Feature showcase with horizontal layout and container brick\",\n description: `A features section using horizontal layout with a container \"box\" brick that holds multiple feature items.\nThe box brick is the only container type that can hold $children (other bricks).\nThis demonstrates nested brick structure where the box contains multiple feature bricks.`,\n example: {\n id: \"features-section\",\n label: \"Features\",\n order: 2,\n props: {\n direction: \"flex-col\",\n padding: \"5rem\",\n gap: \"3rem\",\n maxWidth: \"max-w-screen-xl\",\n justifyContent: \"justify-center\",\n alignItems: \"items-center\",\n },\n bricks: [\n {\n id: \"features-title\",\n type: \"text\",\n props: {\n content: \"<h2 style='text-align:center'>Our Features</h2>\",\n },\n },\n {\n id: \"features-container\",\n type: \"box\",\n props: {\n direction: \"flex-row\",\n gap: \"2rem\",\n padding: \"2rem\",\n $children: [\n {\n id: \"feature-1\",\n type: \"text\",\n props: {\n content: \"<h3>Fast</h3><p>Lightning-fast performance for your needs.</p>\",\n colorPreset: { color: \"blue-500\" },\n },\n },\n {\n id: \"feature-2\",\n type: \"text\",\n props: {\n content: \"<h3>Secure</h3><p>Enterprise-grade security built-in.</p>\",\n colorPreset: { color: \"green-500\" },\n },\n },\n {\n id: \"feature-3\",\n type: \"text\",\n props: {\n content: \"<h3>Scalable</h3><p>Grows with your business seamlessly.</p>\",\n colorPreset: { color: \"purple-500\" },\n },\n },\n ],\n },\n },\n ],\n },\n },\n {\n label: \"Media-rich section with image and text side by side\",\n description: `A content section using horizontal layout to place an image next to text content.\nDemonstrates how direction \"flex-row\" arranges bricks horizontally.\nThe section uses responsive mobile overrides to stack vertically on mobile.`,\n example: {\n id: \"about-section\",\n label: \"About\",\n order: 3,\n props: {\n direction: \"flex-row\",\n padding: \"4rem\",\n gap: \"3rem\",\n alignItems: \"items-center\",\n maxWidth: \"max-w-screen-xl\",\n },\n mobileProps: {\n direction: \"flex-col\",\n padding: \"2rem\",\n },\n bricks: [\n {\n id: \"about-image\",\n type: \"image\",\n props: {\n src: \"https://example.com/about-image.jpg\",\n alt: \"About our company\",\n width: \"400px\",\n height: \"300px\",\n },\n },\n {\n id: \"about-text\",\n type: \"text\",\n props: {\n content:\n \"<h2>About Us</h2><p>We are a leading company in innovative solutions, dedicated to transforming how businesses operate in the digital age.</p>\",\n },\n },\n ],\n },\n },\n {\n label: \"Complex nested layout with multiple container levels\",\n description: `Advanced example showing deeply nested brick structure using multiple box containers.\nDemonstrates how box bricks can contain other box bricks, creating sophisticated layouts.\nShows responsive design with different mobile arrangements.`,\n example: {\n id: \"complex-layout-section\",\n label: \"Complex layout\",\n order: 4,\n props: {\n direction: \"flex-col\",\n padding: \"4rem\",\n gap: \"2rem\",\n backgroundImage: { image: \"https://example.com/bg.jpg\" },\n },\n bricks: [\n {\n id: \"main-container\",\n type: \"box\",\n props: {\n direction: \"flex-row\",\n gap: \"2rem\",\n padding: \"2rem\",\n $children: [\n {\n id: \"left-column\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1rem\",\n colorPreset: { color: \"gray-50\" },\n padding: \"1.5rem\",\n $children: [\n {\n id: \"left-title\",\n type: \"text\",\n props: {\n content: \"<h3>Left Column</h3>\",\n },\n },\n {\n id: \"left-button\",\n type: \"button\",\n props: {\n label: \"Learn More\",\n href: \"/learn\",\n colorPreset: { color: \"blue-500\", variant: \"outline\" },\n },\n },\n ],\n },\n },\n {\n id: \"right-column\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1rem\",\n colorPreset: { color: \"blue-50\" },\n padding: \"1.5rem\",\n $children: [\n {\n id: \"right-image\",\n type: \"image\",\n props: {\n src: \"https://example.com/feature.jpg\",\n alt: \"Feature showcase\",\n width: \"100%\",\n },\n },\n {\n id: \"right-text\",\n type: \"text\",\n props: {\n content: \"<p>Detailed description of our amazing features and capabilities.</p>\",\n },\n },\n ],\n },\n },\n ],\n mobileProps: {\n direction: \"flex-col\",\n },\n },\n },\n ],\n },\n },\n {\n label: \"Footer-style section with multiple columns\",\n description: `A footer-like section demonstrating horizontal layout with multiple informational columns.\nUses the footer variant for special styling and contains multiple text bricks arranged horizontally.\nShows how to create multi-column layouts using direction and gap properties.`,\n example: {\n id: \"info-footer-section\",\n label: \"Info footer\",\n order: 5,\n props: {\n variant: \"footer\",\n direction: \"flex-row\",\n padding: \"3rem\",\n gap: \"4rem\",\n colorPreset: { color: \"gray-800\" },\n justifyContent: \"justify-center\",\n },\n mobileProps: {\n direction: \"flex-col\",\n gap: \"2rem\",\n },\n bricks: [\n {\n id: \"company-info\",\n type: \"text\",\n props: {\n content:\n \"<h4 style='color:white'>Company</h4><p style='color:gray'>About Us<br>Careers<br>Contact</p>\",\n },\n },\n {\n id: \"product-info\",\n type: \"text\",\n props: {\n content:\n \"<h4 style='color:white'>Product</h4><p style='color:gray'>Features<br>Pricing<br>Documentation</p>\",\n },\n },\n {\n id: \"support-info\",\n type: \"text\",\n props: {\n content:\n \"<h4 style='color:white'>Support</h4><p style='color:gray'>Help Center<br>Community<br>Status</p>\",\n },\n },\n ],\n },\n },\n {\n label: \"Video showcase section with title and description\",\n description: `A media section featuring a YouTube video with accompanying text.\nShows how to use video bricks for multimedia content.\nThe section uses a light background to make the video stand out.`,\n example: {\n id: \"video-showcase-section\",\n label: \"Video showcase\",\n order: 6,\n props: {\n direction: \"flex-col\",\n padding: \"4rem\",\n gap: \"2rem\",\n colorPreset: { color: \"gray-50\" },\n alignItems: \"items-center\",\n maxWidth: \"max-w-screen-lg\",\n },\n bricks: [\n {\n id: \"video-title\",\n type: \"text\",\n props: {\n content: \"<h2 style='text-align:center'>Watch Our Demo</h2>\",\n },\n },\n {\n id: \"demo-video\",\n type: \"video\",\n props: {\n url: \"https://www.youtube.com/watch?v=dQw4w9WgXcQ\",\n title: \"Product Demo Video\",\n },\n },\n {\n id: \"video-description\",\n type: \"text\",\n props: {\n content:\n \"<p style='text-align:center'>See how our platform can transform your workflow in just 2 minutes.</p>\",\n },\n },\n ],\n },\n },\n {\n label: \"Image gallery section with carousel\",\n description: `A media-rich section showcasing an image carousel.\nDemonstrates how to use carousel bricks for displaying multiple images.\nPerfect for portfolios, product showcases, or photo galleries.`,\n example: {\n id: \"gallery-section\",\n label: \"Gallery\",\n order: 7,\n props: {\n direction: \"flex-col\",\n padding: \"4rem\",\n gap: \"2rem\",\n alignItems: \"items-center\",\n },\n bricks: [\n {\n id: \"gallery-title\",\n type: \"text\",\n props: {\n content: \"<h2 style='text-align:center'>Our Portfolio</h2>\",\n },\n },\n {\n id: \"portfolio-carousel\",\n type: \"carousel\",\n props: {\n images: [\n { src: \"https://example.com/project1.jpg\", alt: \"Project 1\" },\n { src: \"https://example.com/project2.jpg\", alt: \"Project 2\" },\n { src: \"https://example.com/project3.jpg\", alt: \"Project 3\" },\n ],\n autoplay: true,\n showDots: true,\n },\n },\n ],\n },\n },\n {\n label: \"Interactive form section with styled inputs\",\n description: `A comprehensive form section for user registration or contact.\nShows how to create forms with various field types and validation.\nUses a card-like appearance with rounded corners and shadow.`,\n example: {\n id: \"signup-form-section\",\n label: \"Signup form\",\n order: 8,\n props: {\n direction: \"flex-col\",\n padding: \"4rem\",\n gap: \"2rem\",\n colorPreset: { color: \"blue-50\" },\n alignItems: \"items-center\",\n },\n bricks: [\n {\n id: \"form-header\",\n type: \"text\",\n props: {\n content:\n \"<h2 style='text-align:center'>Join Our Platform</h2><p style='text-align:center'>Create your account and start building today.</p>\",\n },\n },\n {\n id: \"registration-form\",\n type: \"form\",\n props: {\n title: \"Sign Up\",\n submitLabel: \"Create Account\",\n fields: [\n { name: \"firstName\", label: \"First Name\", type: \"text\", required: true },\n { name: \"lastName\", label: \"Last Name\", type: \"text\", required: true },\n { name: \"email\", label: \"Email Address\", type: \"email\", required: true },\n { name: \"password\", label: \"Password\", type: \"password\", required: true },\n { name: \"company\", label: \"Company\", type: \"text\", required: false },\n { name: \"newsletter\", label: \"Subscribe to newsletter\", type: \"checkbox\", required: false },\n ],\n colorPreset: { color: \"white\" },\n shadow: \"shadow-lg\",\n rounding: \"rounded-lg\",\n padding: \"2rem\",\n },\n },\n ],\n },\n },\n {\n label: \"Testimonials section with customer feedback\",\n description: `A social proof section using the testimonials brick to display customer feedback.\nShows how to structure testimonials with avatars, company information, and social icons.\nPerfect for building trust and credibility with potential customers.`,\n example: {\n id: \"testimonials-section\",\n label: \"Testimonials\",\n order: 9,\n props: {\n direction: \"flex-col\",\n padding: \"5rem\",\n gap: \"3rem\",\n colorPreset: { color: \"purple-50\" },\n alignItems: \"items-center\",\n },\n bricks: [\n {\n id: \"testimonials-title\",\n type: \"text\",\n props: {\n content: \"<h2 style='text-align:center'>What Our Customers Say</h2>\",\n },\n },\n {\n id: \"customer-testimonials\",\n type: \"testimonials\",\n props: {\n testimonials: [\n {\n text: \"This platform has completely transformed how we handle our projects. The automation features and intuitive interface have saved us countless hours every week.\",\n author: \"Sarah Johnson\",\n company: \"TechCorp Solutions\",\n avatar: {\n src: \"https://via.placeholder.com/80x80.png?text=SJ\",\n alt: \"Sarah Johnson profile photo\",\n },\n socialIcon: \"mdi:linkedin\",\n },\n {\n text: \"Outstanding customer support and regular feature updates. We've been using this for over a year and it keeps getting better. Highly recommend!\",\n author: \"Mike Chen\",\n company: \"StartupFlow\",\n avatar: {\n src: \"https://via.placeholder.com/80x80.png?text=MC\",\n alt: \"Mike Chen profile photo\",\n },\n socialIcon: \"mdi:twitter\",\n },\n {\n text: \"The results speak for themselves - our productivity increased by 40% after implementing this solution. It's like having an extra team member.\",\n author: \"Emily Rodriguez\",\n company: \"Digital Agency Pro\",\n avatar: {\n src: \"https://via.placeholder.com/80x80.png?text=ER\",\n alt: \"Emily Rodriguez profile photo\",\n },\n socialIcon: \"mdi:briefcase\",\n },\n ],\n colorPreset: { color: \"white\" },\n shadow: \"shadow-lg\",\n padding: \"2rem\",\n gap: \"2rem\",\n },\n },\n ],\n },\n },\n {\n label: \"Location and contact information with map\",\n description: `A contact section featuring an interactive map alongside contact details.\nShows how to combine map bricks with text and contact information.\nPerfect for businesses with physical locations.`,\n example: {\n id: \"location-section\",\n label: \"Location\",\n order: 10,\n props: {\n direction: \"flex-row\",\n padding: \"4rem\",\n gap: \"3rem\",\n alignItems: \"items-start\",\n },\n mobileProps: {\n direction: \"flex-col\",\n },\n bricks: [\n {\n id: \"contact-details\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"2rem\",\n padding: \"2rem\",\n colorPreset: { color: \"gray-50\" },\n rounding: \"rounded-lg\",\n $children: [\n {\n id: \"office-title\",\n type: \"text\",\n props: {\n content: \"<h3>Visit Our Office</h3>\",\n },\n },\n {\n id: \"address\",\n type: \"text\",\n props: {\n content:\n \"<p><strong>Address:</strong><br>123 Business Street<br>Suite 100<br>San Francisco, CA 94105</p>\",\n },\n },\n {\n id: \"contact-info\",\n type: \"text\",\n props: {\n content:\n \"<p><strong>Phone:</strong> +1 (555) 123-4567<br><strong>Email:</strong> hello@company.com</p>\",\n },\n },\n {\n id: \"hours\",\n type: \"text\",\n props: {\n content:\n \"<p><strong>Business Hours:</strong><br>Monday - Friday: 9:00 AM - 6:00 PM<br>Saturday: 10:00 AM - 4:00 PM</p>\",\n },\n },\n ],\n },\n },\n {\n id: \"office-map\",\n type: \"map\",\n props: {\n address: \"123 Business Street, San Francisco, CA 94105\",\n zoom: 15,\n height: \"400px\",\n },\n },\n ],\n },\n },\n {\n label: \"Statistics showcase with icons and numbers\",\n description: `A metrics section displaying key statistics using icon and text bricks.\nDemonstrates how to create compelling data visualizations.\nUses horizontal layout with consistent spacing and visual hierarchy.`,\n example: {\n id: \"stats-section\",\n label: \"Stats\",\n order: 11,\n props: {\n direction: \"flex-col\",\n padding: \"5rem\",\n gap: \"3rem\",\n colorPreset: { color: \"gradient\", gradientDirection: \"bg-gradient-to-r\" },\n alignItems: \"items-center\",\n },\n bricks: [\n {\n id: \"stats-title\",\n type: \"text\",\n props: {\n content: \"<h2 style='text-align:center; color:white'>Our Impact</h2>\",\n },\n },\n {\n id: \"stats-container\",\n type: \"box\",\n props: {\n direction: \"flex-row\",\n gap: \"4rem\",\n justifyContent: \"justify-center\",\n $children: [\n {\n id: \"users-stat\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1rem\",\n alignItems: \"items-center\",\n $children: [\n {\n id: \"users-icon\",\n type: \"icon\",\n props: {\n icon: \"users\",\n size: \"3rem\",\n color: \"white\",\n },\n },\n {\n id: \"users-number\",\n type: \"text\",\n props: {\n content:\n \"<h3 style='color:white; text-align:center'>50K+</h3><p style='color:white; text-align:center'>Active Users</p>\",\n },\n },\n ],\n },\n },\n {\n id: \"projects-stat\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1rem\",\n alignItems: \"items-center\",\n $children: [\n {\n id: \"projects-icon\",\n type: \"icon\",\n props: {\n icon: \"briefcase\",\n size: \"3rem\",\n color: \"white\",\n },\n },\n {\n id: \"projects-number\",\n type: \"text\",\n props: {\n content:\n \"<h3 style='color:white; text-align:center'>100K+</h3><p style='color:white; text-align:center'>Projects Created</p>\",\n },\n },\n ],\n },\n },\n {\n id: \"satisfaction-stat\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1rem\",\n alignItems: \"items-center\",\n $children: [\n {\n id: \"satisfaction-icon\",\n type: \"icon\",\n props: {\n icon: \"star\",\n size: \"3rem\",\n color: \"white\",\n },\n },\n {\n id: \"satisfaction-number\",\n type: \"text\",\n props: {\n content:\n \"<h3 style='color:white; text-align:center'>98%</h3><p style='color:white; text-align:center'>Satisfaction Rate</p>\",\n },\n },\n ],\n },\n },\n ],\n mobileProps: {\n direction: \"flex-col\",\n gap: \"2rem\",\n },\n },\n },\n ],\n },\n },\n {\n label: \"Social links and newsletter signup\",\n description: `A community engagement section combining social media links with newsletter signup.\nShows how to use social-links bricks and forms together.\nCreates a cohesive call-to-action for community building.`,\n example: {\n id: \"community-section\",\n label: \"Community\",\n order: 12,\n props: {\n direction: \"flex-col\",\n padding: \"4rem\",\n gap: \"3rem\",\n colorPreset: { color: \"indigo-100\" },\n alignItems: \"items-center\",\n maxWidth: \"max-w-full\",\n },\n bricks: [\n {\n id: \"community-title\",\n type: \"text\",\n props: {\n content:\n \"<h2 style='text-align:center'>Stay Connected</h2><p style='text-align:center'>Join our community and never miss an update.</p>\",\n },\n },\n {\n id: \"social-links\",\n type: \"social-links\",\n props: {\n links: [\n { platform: \"twitter\", url: \"https://twitter.com/company\" },\n { platform: \"linkedin\", url: \"https://linkedin.com/company/company\" },\n { platform: \"github\", url: \"https://github.com/company\" },\n { platform: \"youtube\", url: \"https://youtube.com/company\" },\n ],\n size: \"large\",\n style: \"filled\",\n },\n },\n {\n id: \"newsletter-form\",\n type: \"form\",\n props: {\n title: \"Subscribe to Our Newsletter\",\n subtitle: \"Get weekly updates and exclusive content delivered to your inbox.\",\n submitLabel: \"Subscribe\",\n fields: [\n {\n name: \"email\",\n label: \"Email Address\",\n type: \"email\",\n required: true,\n placeholder: \"your@email.com\",\n },\n ],\n colorPreset: { color: \"white\" },\n rounding: \"rounded-lg\",\n padding: \"2rem\",\n shadow: \"shadow-md\",\n },\n },\n ],\n },\n },\n {\n label: \"Pricing table with multiple options\",\n description: `A pricing section using card bricks to create a comparison table.\nDemonstrates how to structure pricing tiers with different features.\nUses consistent styling with highlighted premium option.`,\n example: {\n id: \"pricing-section\",\n label: \"Pricing\",\n order: 13,\n props: {\n direction: \"flex-col\",\n padding: \"5rem\",\n gap: \"3rem\",\n alignItems: \"items-center\",\n },\n bricks: [\n {\n id: \"pricing-header\",\n type: \"text\",\n props: {\n content:\n \"<h2 style='text-align:center'>Choose Your Plan</h2><p style='text-align:center'>Select the perfect plan for your needs.</p>\",\n },\n },\n {\n id: \"pricing-cards\",\n type: \"box\",\n props: {\n direction: \"flex-row\",\n gap: \"2rem\",\n justifyContent: \"justify-center\",\n $children: [\n {\n id: \"basic-plan\",\n type: \"card\",\n props: {\n title: \"Basic\",\n subtitle: \"$9/month\",\n content: \"• 5 Projects<br>• 10GB Storage<br>• Email Support<br>• Basic Templates\",\n colorPreset: { color: \"white\" },\n border: { width: \"border-2\", color: \"border-gray-200\" },\n rounding: \"rounded-lg\",\n padding: \"2rem\",\n shadow: \"shadow-md\",\n },\n },\n {\n id: \"pro-plan\",\n type: \"card\",\n props: {\n title: \"Pro\",\n subtitle: \"$29/month\",\n content:\n \"• Unlimited Projects<br>• 100GB Storage<br>• Priority Support<br>• Premium Templates<br>• Advanced Analytics\",\n colorPreset: { color: \"blue-500\" },\n rounding: \"rounded-lg\",\n padding: \"2rem\",\n shadow: \"shadow-lg\",\n border: { width: \"border-2\", color: \"border-blue-400\" },\n },\n },\n {\n id: \"enterprise-plan\",\n type: \"card\",\n props: {\n title: \"Enterprise\",\n subtitle: \"Custom\",\n content:\n \"• Everything in Pro<br>• Unlimited Storage<br>• 24/7 Phone Support<br>• Custom Integrations<br>• Dedicated Account Manager\",\n colorPreset: { color: \"white\" },\n border: { width: \"border-2\", color: \"border-gray-200\" },\n rounding: \"rounded-lg\",\n padding: \"2rem\",\n shadow: \"shadow-md\",\n },\n },\n ],\n mobileProps: {\n direction: \"flex-col\",\n },\n },\n },\n ],\n },\n },\n];\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/bricks/manifests/hero.manifest.ts"],"sourcesContent":["import { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps } from \"../props/helpers\";\nimport { textContentRef } from \"../props/text\";\nimport { BsAlphabetUppercase } from \"react-icons/bs\";\nimport type { BrickProps } from \"../props/types\";\nimport { Type } from \"@sinclair/typebox\";\nimport { shadowRef, textShadowRef } from \"../props/effects\";\nimport { borderRef, roundingRef } from \"../props/border\";\nimport { colorPresetRef } from \"../props/color-preset\";\nimport { alignItemsRef, justifyContentRef } from \"../props/align\";\nimport { cssLengthRef } from \"../props/css-length\";\n\nexport const manifest = defineBrickManifest({\n type: \"hero\",\n category: \"basic\",\n name: \"Hero\",\n description: \"A big textual element for home pages.\",\n aiInstructions: `Displays a large text element that can be used to display a title and an optional tagline.\nTypically used on home pages to grab the user's attention. It's better NOT to provide the colorPreset prop so that the Hero inherits the background of its parent box or section.`,\n icon: BsAlphabetUppercase,\n\n defaultWidth: { desktop: \"60dvw\", mobile: \"auto\" },\n\n // Force the wrapper direction to be the same as the text direction\n staticClasses: \"flex-col\",\n\n props: defineProps({\n content: textContentRef({\n title: \"Hero title\",\n default: \"<h1 style='text-align:center'>Lorem Ipsum<br />dolor sit amet</h1>\",\n }),\n tagline: Type.Optional(\n textContentRef({\n title: \"Hero tagline\",\n default: \"<p style='text-align:center'>Use our platform to build your business with confidence.</p>\",\n }),\n ),\n colorPreset: Type.Optional(\n colorPresetRef({\n title: \"Color\",\n }),\n ),\n\n textShadow: Type.Optional(\n textShadowRef({\n default: \"text-shadow-sm\",\n }),\n ),\n padding: Type.Optional(\n cssLengthRef({\n default: \"6rem\",\n description: \"Padding inside the hero.\",\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 shadow: Type.Optional(shadowRef()),\n justifyContent: Type.Optional(\n justifyContentRef({\n default: \"justify-center\",\n }),\n ),\n alignItems: Type.Optional(\n alignItemsRef({\n default: \"items-center\",\n }),\n ),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: {\n description: string;\n type: string;\n props: BrickProps<Manifest>[\"brick\"][\"props\"];\n}[] = [\n {\n description: \"Simple welcome hero with primary background\",\n type: \"hero\",\n props: {\n content: \"Welcome to Our Platform\",\n tagline: \"The future of productivity starts here\",\n padding: \"3rem\",\n colorPreset: {\n color: \"primary-400\",\n },\n },\n },\n {\n description: \"Startup hero with primary gradient background to bottom-right\",\n type: \"hero\",\n props: {\n content: \"Build Something Amazing\",\n tagline: \"Turn your ideas into reality with our cutting-edge tools\",\n padding: \"3rem\",\n colorPreset: {\n color: \"primary-500\",\n gradientDirection: \"bg-gradient-to-br\",\n },\n },\n },\n {\n description: \"Construction company hero with bold presence\",\n type: \"hero\",\n props: {\n content: \"Building Tomorrow Today\",\n tagline: \"Quality construction services for residential and commercial projects\",\n padding: \"3rem\",\n },\n },\n {\n description: \"Fashion brand hero with modern appeal\",\n type: \"hero\",\n props: {\n content: \"Express Your Style\",\n tagline: \"Contemporary fashion that speaks to your individuality\",\n padding: \"6rem\",\n },\n },\n {\n description: \"Law firm hero with authoritative tone\",\n type: \"hero\",\n props: {\n content: \"Justice You Can Trust\",\n tagline: \"Experienced legal representation for individuals and businesses\",\n padding: \"6rem\",\n colorPreset: {\n color: \"neutral-800\",\n },\n },\n },\n {\n description: \"Photography studio hero with artistic flair\",\n type: \"hero\",\n props: {\n content: \"Capturing Life's Moments\",\n tagline: \"Professional photography services for weddings, portraits, and events\",\n },\n },\n {\n description: \"Restaurant hero with warm colors and rounded design\",\n type: \"hero\",\n props: {\n content: \"Authentic Italian Cuisine\",\n tagline: \"Fresh ingredients, traditional recipes, unforgettable flavors\",\n padding: \"4rem\",\n colorPreset: {\n color: \"orange-600\",\n },\n rounding: \"rounded-xl\",\n shadow: \"shadow-lg\",\n },\n },\n {\n description: \"Tech company hero with success gradient and modern styling\",\n type: \"hero\",\n props: {\n content: \"Innovation Redefined\",\n tagline: \"Pushing the boundaries of what's possible with AI technology\",\n padding: \"5rem\",\n colorPreset: {\n color: \"success-500\",\n gradientDirection: \"bg-gradient-to-r\",\n },\n textShadow: \"text-shadow-lg\",\n border: {\n width: \"border-2\",\n color: \"border-success-300\",\n },\n },\n },\n {\n description: \"Medical practice hero with trust-inspiring design\",\n type: \"hero\",\n props: {\n content: \"Your Health, Our Priority\",\n tagline: \"Comprehensive healthcare services with compassionate care\",\n padding: \"4rem\",\n colorPreset: {\n color: \"blue-500\",\n },\n rounding: \"rounded-lg\",\n justifyContent: \"justify-start\",\n alignItems: \"items-start\",\n },\n },\n {\n description: \"Creative agency hero with warning accent and diagonal gradient\",\n type: \"hero\",\n props: {\n content: \"Creative Solutions\",\n tagline: \"Bold designs that make your brand unforgettable\",\n padding: \"3rem\",\n colorPreset: {\n color: \"warning-400\",\n gradientDirection: \"bg-gradient-to-tl\",\n },\n shadow: \"shadow-xl\",\n border: {\n width: \"border\",\n color: \"border-warning-200\",\n },\n },\n },\n {\n description: \"Fitness studio hero with danger color and strong presence\",\n type: \"hero\",\n props: {\n content: \"Transform Your Body\",\n tagline: \"High-intensity training programs that deliver real results\",\n padding: \"5rem\",\n colorPreset: {\n color: \"danger-600\",\n },\n textShadow: \"text-shadow-md\",\n rounding: \"rounded-2xl\",\n justifyContent: \"justify-center\",\n alignItems: \"items-center\",\n },\n },\n {\n description: \"Minimalist hero with neutral tones and subtle effects\",\n type: \"hero\",\n props: {\n content: \"Simplicity Perfected\",\n tagline: \"Clean design solutions for modern businesses\",\n padding: \"8rem\",\n colorPreset: {\n color: \"neutral-100\",\n },\n shadow: \"shadow-sm\",\n border: {\n width: \"border\",\n color: \"border-neutral-300\",\n },\n rounding: \"rounded-md\",\n },\n },\n {\n description: \"Dynamic company hero using business query data\",\n type: \"hero\",\n props: {\n content: \"Welcome to {{company.name}}\",\n tagline: \"{{company.tagline}} - Serving {{company.location}} since {{company.foundedYear}}\",\n padding: \"4rem\",\n colorPreset: {\n color: \"primary-500\",\n },\n },\n },\n {\n description: \"Dynamic employee spotlight using employee query\",\n type: \"hero\",\n props: {\n content: \"Meet {{employee.fullName}}\",\n tagline:\n \"{{employee.position}} at {{employee.department}} - {{employee.yearsExperience}} years of experience\",\n padding: \"3rem\",\n colorPreset: {\n color: \"secondary-400\",\n gradientDirection: \"bg-gradient-to-r\",\n },\n },\n },\n {\n description: \"Dynamic product launch hero using product query\",\n type: \"hero\",\n props: {\n content: \"Introducing {{product.name}}\",\n tagline: \"{{product.description}} - Starting at ${{product.price}}\",\n padding: \"5rem\",\n colorPreset: {\n color: \"accent-600\",\n },\n shadow: \"shadow-lg\",\n rounding: \"rounded-xl\",\n },\n },\n {\n description: \"Dynamic event announcement using event query\",\n type: \"hero\",\n props: {\n content: \"{{event.title}}\",\n tagline: \"Join us on {{event.date}} at {{event.venue}} - {{event.city}}\",\n padding: \"4rem\",\n colorPreset: {\n color: \"primary-400\",\n gradientDirection: \"bg-gradient-to-br\",\n },\n textShadow: \"text-shadow-md\",\n },\n },\n {\n description: \"Dynamic blog post hero using article query\",\n type: \"hero\",\n props: {\n content: \"{{article.title}}\",\n tagline: \"By {{article.author}} • Published {{article.publishDate}} • {{article.readTime}} min read\",\n padding: \"3rem\",\n colorPreset: {\n color: \"neutral-700\",\n },\n justifyContent: \"justify-start\",\n alignItems: \"items-start\",\n },\n },\n {\n description: \"Dynamic service promotion using service query\",\n type: \"hero\",\n props: {\n content: \"{{service.name}}\",\n tagline: \"{{service.description}} - {{service.duration}} • Starting at ${{service.price}}\",\n padding: \"6rem\",\n colorPreset: {\n color: \"secondary-500\",\n gradientDirection: \"bg-gradient-to-tl\",\n },\n border: {\n width: \"border-2\",\n color: \"border-secondary-300\",\n },\n },\n },\n {\n description: \"Dynamic property showcase using property query\",\n type: \"hero\",\n props: {\n content: \"{{property.address}}\",\n tagline:\n \"${{property.price}} • {{property.bedrooms}} bed, {{property.bathrooms}} bath • {{property.squareFootage}} sq ft\",\n padding: \"4rem\",\n colorPreset: {\n color: \"accent-500\",\n },\n rounding: \"rounded-lg\",\n shadow: \"shadow-md\",\n },\n },\n {\n description: \"Dynamic course announcement using course query\",\n type: \"hero\",\n props: {\n content: \"{{course.title}}\",\n tagline:\n \"Learn {{course.subject}} with {{course.instructor}} • {{course.duration}} • {{course.skillLevel}} level\",\n padding: \"5rem\",\n colorPreset: {\n color: \"primary-600\",\n },\n textShadow: \"text-shadow-lg\",\n justifyContent: \"justify-center\",\n alignItems: \"items-center\",\n },\n },\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,SAAS,2BAA2B;AAEpC,SAAS,YAAY;AAOd,IAAM,WAAW,oBAAoB;AAAA,EAC1C,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,aAAa;AAAA,EACb,gBAAgB;AAAA;AAAA,EAEhB,MAAM;AAAA,EAEN,cAAc,EAAE,SAAS,SAAS,QAAQ,OAAO;AAAA;AAAA,EAGjD,eAAe;AAAA,EAEf,OAAO,YAAY;AAAA,IACjB,SAAS,eAAe;AAAA,MACtB,OAAO;AAAA,MACP,SAAS;AAAA,IACX,CAAC;AAAA,IACD,SAAS,KAAK;AAAA,MACZ,eAAe;AAAA,QACb,OAAO;AAAA,QACP,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,aAAa,KAAK;AAAA,MAChB,eAAe;AAAA,QACb,OAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IAEA,YAAY,KAAK;AAAA,MACf,cAAc;AAAA,QACZ,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,SAAS,KAAK;AAAA,MACZ,aAAa;AAAA,QACX,SAAS;AAAA,QACT,aAAa;AAAA,QACb,mBAAmB;AAAA,QACnB,OAAO;AAAA,QACP,iBAAiB;AAAA,QACjB,kBAAkB;AAAA,QAClB,cAAc;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,IACA,UAAU,KAAK;AAAA,MACb,YAAY;AAAA,QACV,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,QAAQ,KAAK,SAAS,UAAU,CAAC;AAAA,IACjC,QAAQ,KAAK,SAAS,UAAU,CAAC;AAAA,IACjC,gBAAgB,KAAK;AAAA,MACnB,kBAAkB;AAAA,QAChB,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,YAAY,KAAK;AAAA,MACf,cAAc;AAAA,QACZ,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH,CAAC;AAIM,IAAM,WAIP;AAAA,EACJ;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,QACX,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,QACX,OAAO;AAAA,QACP,mBAAmB;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,QACX,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,QACX,OAAO;AAAA,MACT;AAAA,MACA,UAAU;AAAA,MACV,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,QACX,OAAO;AAAA,QACP,mBAAmB;AAAA,MACrB;AAAA,MACA,YAAY;AAAA,MACZ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,QACX,OAAO;AAAA,MACT;AAAA,MACA,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,QACX,OAAO;AAAA,QACP,mBAAmB;AAAA,MACrB;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,QACX,OAAO;AAAA,MACT;AAAA,MACA,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,QACX,OAAO;AAAA,MACT;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,MACT;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,QACX,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SACE;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,QACX,OAAO;AAAA,QACP,mBAAmB;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,QACX,OAAO;AAAA,MACT;AAAA,MACA,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,QACX,OAAO;AAAA,QACP,mBAAmB;AAAA,MACrB;AAAA,MACA,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,QACX,OAAO;AAAA,MACT;AAAA,MACA,gBAAgB;AAAA,MAChB,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,QACX,OAAO;AAAA,QACP,mBAAmB;AAAA,MACrB;AAAA,MACA,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SACE;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,QACX,OAAO;AAAA,MACT;AAAA,MACA,UAAU;AAAA,MACV,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SACE;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,QACX,OAAO;AAAA,MACT;AAAA,MACA,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,YAAY;AAAA,IACd;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/bricks/props/text.ts"],"sourcesContent":["import { type StringOptions, Type, type Static } from \"@sinclair/typebox\";\nimport { StringEnum } from \"~/shared/utils/string-enum\";\nimport { typedRef } from \"~/shared/utils/typed-ref\";\n\ntype Options = StringOptions & {\n \"ui:no-extra-large-sizes\"?: boolean;\n};\n\nexport function fontSize(options: Options = {}) {\n return StringEnum([\"inherit\", \"text-xs\", \"text-sm\", \"text-base\", \"text-lg\", \"text-xl\"], {\n enumNames: [\"Same as parent\", \"Extra small\", \"Small\", \"Medium\", \"Large\", \"Extra large\"],\n default: \"inherit\",\n title: \"Font size\",\n // $id: \"styles:fontSize\",\n \"ui:styleId\": \"styles:fontSize\",\n \"ui:field\": \"enum\",\n \"ui:display\": \"select\",\n ...options,\n });\n}\n\nexport type FontSizeSettings = Static<ReturnType<typeof fontSize>>;\n\nexport function fontSizeRef(options: Options = {}) {\n return typedRef(\"styles:fontSize\", options);\n}\n\nexport function fontSizeXL(options: Options = {}) {\n return StringEnum(\n [\n \"inherit\",\n \"text-xs\",\n \"text-sm\",\n \"text-base\",\n \"text-lg\",\n \"text-xl\",\n \"text-2xl\",\n \"text-3xl\",\n \"text-4xl\",\n \"text-5xl\",\n \"text-6xl\",\n \"text-7xl\",\n ],\n {\n enumNames: [\n \"Same as parent\",\n \"Extra small\",\n \"Small\",\n \"Medium\",\n \"Large\",\n \"Extra large\",\n \"Extra large (2x)\",\n \"Extra large (3x)\",\n \"Extra large (4x)\",\n \"Extra large (5x)\",\n \"Extra large (6x)\",\n \"Extra large (7x)\",\n ],\n default: \"inherit\",\n title: \"Font size\",\n // $id: \"styles:fontSize\",\n \"ui:styleId\": \"styles:fontSize\",\n \"ui:field\": \"enum\",\n \"ui:display\": \"select\",\n ...options,\n },\n );\n}\nexport function fontSizeXLRef(options: Options = {}) {\n return typedRef(\"styles:fontSizeXL\", options);\n}\n\ntype TextContentOptions = {\n showInSettings?: boolean;\n disableSizing?: boolean;\n disableAlignment?: boolean;\n};\n\nexport function textContent({\n title = \"Text\",\n default: defaults,\n showInSettings,\n disableSizing = false,\n disableAlignment = false,\n ...rest\n}: TextContentOptions & StringOptions = {}) {\n return Type.String({\n title,\n description:\n \"Text content. Can contain basic HTML tags like `<strong>`, `<em>`, `<br>` and `<a>` as well as `<p>` and `<span>` and lists <ul> <ol> <li>.\",\n // $id: \"content:text\",\n default: defaults ?? \"My text\",\n \"ui:disable-sizing\": disableSizing,\n \"ui:disable-alignment\": disableAlignment,\n // metadata: {\n // category: \"content\",\n // },\n ...rest,\n \"ui:field\": showInSettings ? \"string\" : \"hidden\",\n });\n}\n\nexport type TextContentSettings = Static<ReturnType<typeof textContent>>;\n\nexport function textContentRef(options: TextContentOptions & StringOptions = {}) {\n return typedRef(\"content:text\", options);\n}\n"],"mappings":";;;;;;;;;;AAAA,SAA6B,YAAyB;AAQ/C,SAAS,SAAS,UAAmB,CAAC,GAAG;AAC9C,SAAO,WAAW,CAAC,WAAW,WAAW,WAAW,aAAa,WAAW,SAAS,GAAG;AAAA,IACtF,WAAW,CAAC,kBAAkB,eAAe,SAAS,UAAU,SAAS,aAAa;AAAA,IACtF,SAAS;AAAA,IACT,OAAO;AAAA;AAAA,IAEP,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,GAAG;AAAA,EACL,CAAC;AACH;AAIO,SAAS,YAAY,UAAmB,CAAC,GAAG;AACjD,SAAO,SAAS,mBAAmB,OAAO;AAC5C;AAEO,SAAS,WAAW,UAAmB,CAAC,GAAG;AAChD,SAAO;AAAA,IACL;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,MACE,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,SAAS;AAAA,MACT,OAAO;AAAA;AAAA,MAEP,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,GAAG;AAAA,IACL;AAAA,EACF;AACF;AACO,SAAS,cAAc,UAAmB,CAAC,GAAG;AACnD,SAAO,SAAS,qBAAqB,OAAO;AAC9C;AAQO,SAAS,YAAY;AAAA,EAC1B,QAAQ;AAAA,EACR,SAAS;AAAA,EACT;AAAA,EACA,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,GAAG;AACL,IAAwC,CAAC,GAAG;AAC1C,SAAO,KAAK,OAAO;AAAA,IACjB;AAAA,IACA,aACE;AAAA;AAAA,IAEF,SAAS,YAAY;AAAA,IACrB,qBAAqB;AAAA,IACrB,wBAAwB;AAAA;AAAA;AAAA;AAAA,IAIxB,GAAG;AAAA,IACH,YAAY,iBAAiB,WAAW;AAAA,EAC1C,CAAC;AACH;AAIO,SAAS,eAAe,UAA8C,CAAC,GAAG;AAC/E,SAAO,SAAS,gBAAgB,OAAO;AACzC;","names":[]}
|
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
toLLMSchema
|
|
5
|
-
} from "./chunk-BW6EFRSF.js";
|
|
6
|
-
import {
|
|
7
|
-
StringEnum
|
|
8
|
-
} from "./chunk-JK2FWFJU.js";
|
|
9
|
-
|
|
10
|
-
// src/shared/theme.ts
|
|
11
|
-
import { Type } from "@sinclair/typebox";
|
|
12
|
-
import chroma from "chroma-js";
|
|
13
|
-
import { colorPalette } from "@upstart.gg/style-system/colors";
|
|
14
|
-
var fontStacks = [
|
|
15
|
-
{ value: "system-ui", label: "System UI" },
|
|
16
|
-
{ value: "transitional", label: "Transitional" },
|
|
17
|
-
{ value: "old-style", label: "Old style" },
|
|
18
|
-
{ value: "humanist", label: "Humanist" },
|
|
19
|
-
{ value: "geometric-humanist", label: "Geometric humanist" },
|
|
20
|
-
{ value: "classical-humanist", label: "Classical humanist" },
|
|
21
|
-
{ value: "neo-grotesque", label: "Neo-grotesque" },
|
|
22
|
-
{ value: "monospace-slab-serif", label: "Monospace slab serif" },
|
|
23
|
-
{ value: "monospace-code", label: "Monospace code" },
|
|
24
|
-
{ value: "industrial", label: "Industrial" },
|
|
25
|
-
{ value: "rounded-sans", label: "Rounded sans" },
|
|
26
|
-
{ value: "slab-serif", label: "Slab serif" },
|
|
27
|
-
{ value: "antique", label: "Antique" },
|
|
28
|
-
{ value: "didone", label: "Didone" },
|
|
29
|
-
{ value: "handwritten", label: "Handwritten" }
|
|
30
|
-
];
|
|
31
|
-
var headingFont = Type.Object(
|
|
32
|
-
{
|
|
33
|
-
type: StringEnum(["stack", "theme", "google"], {
|
|
34
|
-
title: "Type of font",
|
|
35
|
-
description: "The type of font. Can be a font stack, a theme font or a Google font"
|
|
36
|
-
}),
|
|
37
|
-
family: Type.String({
|
|
38
|
-
title: "Family",
|
|
39
|
-
description: "The font family (eg. the name of the font)"
|
|
40
|
-
})
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
title: "Headings font",
|
|
44
|
-
description: "Used for titles and headings",
|
|
45
|
-
additionalProperties: false
|
|
46
|
-
}
|
|
47
|
-
);
|
|
48
|
-
var bodyFont = Type.Object(
|
|
49
|
-
{
|
|
50
|
-
type: StringEnum(["stack", "theme", "google"], {
|
|
51
|
-
title: "Type of font",
|
|
52
|
-
description: "The type of font. Can be a font stack, a theme font or a Google font"
|
|
53
|
-
}),
|
|
54
|
-
family: Type.String({
|
|
55
|
-
title: "Family",
|
|
56
|
-
description: "The font family (eg. the name of the font)"
|
|
57
|
-
})
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
title: "Body font",
|
|
61
|
-
description: "Used for paragraphs and body text",
|
|
62
|
-
additionalProperties: false
|
|
63
|
-
}
|
|
64
|
-
);
|
|
65
|
-
var themeSchema = Type.Object(
|
|
66
|
-
{
|
|
67
|
-
id: Type.String({ title: "ID", description: "The unique identifier of the theme" }),
|
|
68
|
-
name: Type.String({ title: "Name", description: "The name of the theme" }),
|
|
69
|
-
description: Type.String({ title: "Description", description: "The description of the theme" }),
|
|
70
|
-
tags: Type.Array(Type.String({ title: "Tag" }), { title: "Tags", description: "The tags of the theme" }),
|
|
71
|
-
browserColorScheme: StringEnum(["light", "dark"], {
|
|
72
|
-
title: "Browser scheme",
|
|
73
|
-
description: "Color of browser-provided UI. Either 'light' or 'dark'"
|
|
74
|
-
}),
|
|
75
|
-
// Define the theme colors
|
|
76
|
-
colors: Type.Object(
|
|
77
|
-
{
|
|
78
|
-
primary: Type.String({
|
|
79
|
-
title: "Primary",
|
|
80
|
-
description: "The brand's primary color.",
|
|
81
|
-
"ai:instructions": "Use oklch() css notation.",
|
|
82
|
-
examples: ["oklch(0.62 0.241 354.308)"]
|
|
83
|
-
}),
|
|
84
|
-
secondary: Type.String({
|
|
85
|
-
title: "Secondary",
|
|
86
|
-
description: "The brand's second most used color",
|
|
87
|
-
"ai:instructions": "Use oklch() css notation.",
|
|
88
|
-
examples: ["oklch(0.65 0.22 185)"]
|
|
89
|
-
}),
|
|
90
|
-
accent: Type.String({
|
|
91
|
-
title: "Accent",
|
|
92
|
-
description: "The brand's least used color",
|
|
93
|
-
"ai:instructions": "Use oklch() css notation.",
|
|
94
|
-
examples: ["oklch(0.82 0.18 85)"]
|
|
95
|
-
}),
|
|
96
|
-
neutral: Type.String({
|
|
97
|
-
title: "Neutral",
|
|
98
|
-
description: "The base neutral color",
|
|
99
|
-
"ai:instructions": "Use oklch() css notation.",
|
|
100
|
-
examples: ["oklch(0.38 0.08 280)"]
|
|
101
|
-
}),
|
|
102
|
-
base100: Type.String({
|
|
103
|
-
title: "Base",
|
|
104
|
-
description: "Base surface color of page, used for blank backgrounds. Should be white or near-white for light color-schemes, and black or near-black for dark color-schemes.",
|
|
105
|
-
"ai:instructions": "Use oklab() css notation.",
|
|
106
|
-
examples: ["oklch(0.99 0.008 92)"]
|
|
107
|
-
}),
|
|
108
|
-
base200: Type.String({
|
|
109
|
-
title: "Base 2",
|
|
110
|
-
description: "Should be darker than base 100 but still light for light color-schemes, and lighter but still dark for dark color-schemes.",
|
|
111
|
-
"ai:instructions": "Use oklab() css notation.",
|
|
112
|
-
examples: ["oklch(0.97 0.01 85)"]
|
|
113
|
-
}),
|
|
114
|
-
base300: Type.String({
|
|
115
|
-
title: "Base 3",
|
|
116
|
-
description: "3rd base color, should be darker than base 200 for light color-schemes, and lighter than base 200 for dark color-schemes.",
|
|
117
|
-
"ai:instructions": "Use oklab() css notation.",
|
|
118
|
-
examples: ["oklch(0.95 0.02 80)"]
|
|
119
|
-
})
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
title: "Theme base colors",
|
|
123
|
-
description: "The base colors of the theme. Each theme must declare all these colors",
|
|
124
|
-
additionalProperties: false
|
|
125
|
-
}
|
|
126
|
-
),
|
|
127
|
-
// Define the theme typography
|
|
128
|
-
typography: Type.Object(
|
|
129
|
-
{
|
|
130
|
-
base: Type.Number({
|
|
131
|
-
title: "Base font size",
|
|
132
|
-
description: "The base font size in pixels. It is safe to keep it as is.",
|
|
133
|
-
"ai:instructions": "A safe value is 16."
|
|
134
|
-
}),
|
|
135
|
-
heading: headingFont,
|
|
136
|
-
body: bodyFont,
|
|
137
|
-
alternatives: Type.Array(
|
|
138
|
-
Type.Object(
|
|
139
|
-
{
|
|
140
|
-
body: bodyFont,
|
|
141
|
-
heading: headingFont
|
|
142
|
-
},
|
|
143
|
-
{ additionalProperties: false }
|
|
144
|
-
),
|
|
145
|
-
{
|
|
146
|
-
title: "Alternative fonts",
|
|
147
|
-
description: "Alternative fonts that can be suggested to the user. Takes the same shape"
|
|
148
|
-
}
|
|
149
|
-
)
|
|
150
|
-
},
|
|
151
|
-
{ additionalProperties: false }
|
|
152
|
-
)
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
additionalProperties: false
|
|
156
|
-
}
|
|
157
|
-
);
|
|
158
|
-
var themesArray = Type.Array(themeSchema);
|
|
159
|
-
var themesArrayLLM = toLLMSchema(themesArray);
|
|
160
|
-
var defaultTheme = {
|
|
161
|
-
id: "_default_",
|
|
162
|
-
name: "default",
|
|
163
|
-
description: "Default Upstart theme",
|
|
164
|
-
tags: ["gradient", "vibrant", "modern", "creative", "dynamic", "artistic", "bold"],
|
|
165
|
-
browserColorScheme: "light",
|
|
166
|
-
colors: {
|
|
167
|
-
base100: "#FFF",
|
|
168
|
-
// Warm white background
|
|
169
|
-
base200: "#F5F0E1",
|
|
170
|
-
// Soft cream in hex
|
|
171
|
-
base300: "#F0E3D2",
|
|
172
|
-
// Light warm gray in hex
|
|
173
|
-
primary: "#FF6F20",
|
|
174
|
-
// A vibrant orange in hex
|
|
175
|
-
secondary: "#00BFFF",
|
|
176
|
-
// A bright cyan in hex
|
|
177
|
-
accent: "#A4D65E",
|
|
178
|
-
// A lively lime green in hex
|
|
179
|
-
neutral: "#B0B0B0"
|
|
180
|
-
// A balanced gray in hex
|
|
181
|
-
},
|
|
182
|
-
typography: {
|
|
183
|
-
base: 16,
|
|
184
|
-
heading: { type: "stack", family: "system-ui" },
|
|
185
|
-
body: { type: "stack", family: "system-ui" },
|
|
186
|
-
alternatives: []
|
|
187
|
-
}
|
|
188
|
-
};
|
|
189
|
-
function isDefaultTheme(theme) {
|
|
190
|
-
return theme.id === defaultTheme.id;
|
|
191
|
-
}
|
|
192
|
-
function processTheme(theme) {
|
|
193
|
-
return {
|
|
194
|
-
...theme,
|
|
195
|
-
typography: {
|
|
196
|
-
...theme.typography,
|
|
197
|
-
base: 16
|
|
198
|
-
// override any base size
|
|
199
|
-
},
|
|
200
|
-
colors: Object.entries(theme.colors).reduce(
|
|
201
|
-
(acc, [key, value]) => {
|
|
202
|
-
const fixedColor = fixOklchColor(value);
|
|
203
|
-
return {
|
|
204
|
-
// biome-ignore lint/performance/noAccumulatingSpread: <explanation>
|
|
205
|
-
...acc,
|
|
206
|
-
[key]: fixedColor
|
|
207
|
-
};
|
|
208
|
-
},
|
|
209
|
-
{}
|
|
210
|
-
)
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
function fixOklchColor(color) {
|
|
214
|
-
const valid = chroma.valid(color);
|
|
215
|
-
if (valid) {
|
|
216
|
-
return color;
|
|
217
|
-
}
|
|
218
|
-
const oklchRegex = /ok(lch|lab)\(([^)]+)\)/;
|
|
219
|
-
if (oklchRegex.test(color)) {
|
|
220
|
-
const withoutComma = color.replace(/,/g, " ");
|
|
221
|
-
if (chroma.valid(withoutComma)) {
|
|
222
|
-
return withoutComma;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
if (/^([a-z]+)-([0-9]+)$/.test(color)) {
|
|
226
|
-
const [name, shade] = color.split("-");
|
|
227
|
-
const twColor = colorPalette[name]?.[shade];
|
|
228
|
-
if (twColor) {
|
|
229
|
-
return twColor;
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
return color;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
export {
|
|
236
|
-
fontStacks,
|
|
237
|
-
themeSchema,
|
|
238
|
-
themesArray,
|
|
239
|
-
themesArrayLLM,
|
|
240
|
-
defaultTheme,
|
|
241
|
-
isDefaultTheme,
|
|
242
|
-
processTheme
|
|
243
|
-
};
|
|
244
|
-
//# sourceMappingURL=chunk-FVU5PXRC.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/theme.ts"],"sourcesContent":["import { Type, type Static } from \"@sinclair/typebox\";\nimport chroma from \"chroma-js\";\nimport { colorPalette } from \"@upstart.gg/style-system/colors\";\nimport { StringEnum } from \"./utils/string-enum\";\nimport { toLLMSchema } from \"./utils/llm\";\n\nexport const fontStacks = [\n { value: \"system-ui\", label: \"System UI\" },\n { value: \"transitional\", label: \"Transitional\" },\n { value: \"old-style\", label: \"Old style\" },\n { value: \"humanist\", label: \"Humanist\" },\n { value: \"geometric-humanist\", label: \"Geometric humanist\" },\n { value: \"classical-humanist\", label: \"Classical humanist\" },\n { value: \"neo-grotesque\", label: \"Neo-grotesque\" },\n { value: \"monospace-slab-serif\", label: \"Monospace slab serif\" },\n { value: \"monospace-code\", label: \"Monospace code\" },\n { value: \"industrial\", label: \"Industrial\" },\n { value: \"rounded-sans\", label: \"Rounded sans\" },\n { value: \"slab-serif\", label: \"Slab serif\" },\n { value: \"antique\", label: \"Antique\" },\n { value: \"didone\", label: \"Didone\" },\n { value: \"handwritten\", label: \"Handwritten\" },\n];\n\nconst headingFont = Type.Object(\n {\n type: StringEnum([\"stack\", \"theme\", \"google\"], {\n title: \"Type of font\",\n description: \"The type of font. Can be a font stack, a theme font or a Google font\",\n }),\n family: Type.String({\n title: \"Family\",\n description: \"The font family (eg. the name of the font)\",\n }),\n },\n {\n title: \"Headings font\",\n description: \"Used for titles and headings\",\n additionalProperties: false,\n },\n);\n\nconst bodyFont = Type.Object(\n {\n type: StringEnum([\"stack\", \"theme\", \"google\"], {\n title: \"Type of font\",\n description: \"The type of font. Can be a font stack, a theme font or a Google font\",\n }),\n family: Type.String({\n title: \"Family\",\n description: \"The font family (eg. the name of the font)\",\n }),\n },\n {\n title: \"Body font\",\n description: \"Used for paragraphs and body text\",\n additionalProperties: false,\n },\n);\n\nexport const themeSchema = Type.Object(\n {\n id: Type.String({ title: \"ID\", description: \"The unique identifier of the theme\" }),\n name: Type.String({ title: \"Name\", description: \"The name of the theme\" }),\n description: Type.String({ title: \"Description\", description: \"The description of the theme\" }),\n tags: Type.Array(Type.String({ title: \"Tag\" }), { title: \"Tags\", description: \"The tags of the theme\" }),\n browserColorScheme: StringEnum([\"light\", \"dark\"], {\n title: \"Browser scheme\",\n description: \"Color of browser-provided UI. Either 'light' or 'dark'\",\n }),\n // Define the theme colors\n colors: Type.Object(\n {\n primary: Type.String({\n title: \"Primary\",\n description: \"The brand's primary color.\",\n \"ai:instructions\": \"Use oklch() css notation.\",\n examples: [\"oklch(0.62 0.241 354.308)\"],\n }),\n secondary: Type.String({\n title: \"Secondary\",\n description: \"The brand's second most used color\",\n \"ai:instructions\": \"Use oklch() css notation.\",\n examples: [\"oklch(0.65 0.22 185)\"],\n }),\n accent: Type.String({\n title: \"Accent\",\n description: \"The brand's least used color\",\n \"ai:instructions\": \"Use oklch() css notation.\",\n examples: [\"oklch(0.82 0.18 85)\"],\n }),\n neutral: Type.String({\n title: \"Neutral\",\n description: \"The base neutral color\",\n \"ai:instructions\": \"Use oklch() css notation.\",\n examples: [\"oklch(0.38 0.08 280)\"],\n }),\n base100: Type.String({\n title: \"Base\",\n description:\n \"Base surface color of page, used for blank backgrounds. Should be white or near-white for light color-schemes, and black or near-black for dark color-schemes.\",\n \"ai:instructions\": \"Use oklab() css notation.\",\n examples: [\"oklch(0.99 0.008 92)\"],\n }),\n base200: Type.String({\n title: \"Base 2\",\n description:\n \"Should be darker than base 100 but still light for light color-schemes, and lighter but still dark for dark color-schemes.\",\n \"ai:instructions\": \"Use oklab() css notation.\",\n examples: [\"oklch(0.97 0.01 85)\"],\n }),\n base300: Type.String({\n title: \"Base 3\",\n description:\n \"3rd base color, should be darker than base 200 for light color-schemes, and lighter than base 200 for dark color-schemes.\",\n \"ai:instructions\": \"Use oklab() css notation.\",\n examples: [\"oklch(0.95 0.02 80)\"],\n }),\n },\n {\n title: \"Theme base colors\",\n description: \"The base colors of the theme. Each theme must declare all these colors\",\n additionalProperties: false,\n },\n ),\n\n // Define the theme typography\n typography: Type.Object(\n {\n base: Type.Number({\n title: \"Base font size\",\n description: \"The base font size in pixels. It is safe to keep it as is.\",\n \"ai:instructions\": \"A safe value is 16.\",\n }),\n heading: headingFont,\n body: bodyFont,\n alternatives: Type.Array(\n Type.Object(\n {\n body: bodyFont,\n heading: headingFont,\n },\n { additionalProperties: false },\n ),\n {\n title: \"Alternative fonts\",\n description: \"Alternative fonts that can be suggested to the user. Takes the same shape\",\n },\n ),\n },\n { additionalProperties: false },\n ),\n },\n {\n additionalProperties: false,\n },\n);\n\nexport type Theme = Static<typeof themeSchema>;\nexport const themesArray = Type.Array(themeSchema);\nexport const themesArrayLLM = toLLMSchema(themesArray);\n\nexport type ThemesArray = Static<typeof themesArray>;\nexport type FontType = Theme[\"typography\"][\"body\"];\n\nexport const defaultTheme: Theme = {\n id: \"_default_\",\n name: \"default\",\n description: \"Default Upstart theme\",\n tags: [\"gradient\", \"vibrant\", \"modern\", \"creative\", \"dynamic\", \"artistic\", \"bold\"],\n browserColorScheme: \"light\",\n colors: {\n base100: \"#FFF\", // Warm white background\n base200: \"#F5F0E1\", // Soft cream in hex\n base300: \"#F0E3D2\", // Light warm gray in hex\n primary: \"#FF6F20\", // A vibrant orange in hex\n secondary: \"#00BFFF\", // A bright cyan in hex\n accent: \"#A4D65E\", // A lively lime green in hex\n neutral: \"#B0B0B0\", // A balanced gray in hex\n },\n typography: {\n base: 16,\n heading: { type: \"stack\", family: \"system-ui\" },\n body: { type: \"stack\", family: \"system-ui\" },\n alternatives: [],\n },\n};\n\nexport function isDefaultTheme(theme: Theme): boolean {\n return theme.id === defaultTheme.id;\n}\n\n/**\n * Process a theme, eventually fixing colors and translating them to oklch notations\n * @param theme\n */\nexport function processTheme(theme: Theme): Theme {\n return {\n ...theme,\n typography: {\n ...theme.typography,\n base: 16, // override any base size\n },\n colors: Object.entries(theme.colors).reduce(\n (acc, [key, value]) => {\n const fixedColor = fixOklchColor(value);\n return {\n // biome-ignore lint/performance/noAccumulatingSpread: <explanation>\n ...acc,\n [key]: fixedColor,\n };\n },\n {} as typeof theme.colors,\n ),\n };\n}\n\nfunction fixOklchColor(color: string) {\n const valid = chroma.valid(color);\n if (valid) {\n return color;\n }\n // Try to fix the color if it looks like oklch\n const oklchRegex = /ok(lch|lab)\\(([^)]+)\\)/;\n if (oklchRegex.test(color)) {\n const withoutComma = color.replace(/,/g, \" \");\n if (chroma.valid(withoutComma)) {\n return withoutComma;\n }\n }\n // tailwind colors\n if (/^([a-z]+)-([0-9]+)$/.test(color)) {\n const [name, shade] = color.split(\"-\");\n // @ts-ignore\n const twColor = colorPalette[name]?.[shade] as string | undefined;\n if (twColor) {\n return twColor;\n }\n }\n return color;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
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 { imageRef } from \"../props/image\";\nimport { string } from \"../props/string\";\nimport type { BrickProps } from \"../props/types\";\nimport { colorPresetRef } from \"../props/color-preset\";\nimport { borderRef, roundingRef } from \"../props/border\";\nimport { loopRef } from \"../props/dynamic\";\nimport { cssLengthRef } from \"../props/css-length\";\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 colorPresetRef({\n title: \"Color\",\n }),\n ),\n loop: Type.Optional(loopRef()),\n images: Type.Array(\n Type.Object({\n image: imageRef({\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(string(\"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 cssLengthRef({\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 cssLengthRef({\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: Type.Optional(roundingRef()),\n border: Type.Optional(borderRef()),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: {\n description: string;\n type: string;\n props: BrickProps<Manifest>[\"brick\"][\"props\"];\n}[] = [\n {\n description: \"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":[]}
|