@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
|
@@ -2,20 +2,59 @@ import { Type } from "@sinclair/typebox";
|
|
|
2
2
|
import { TbCarouselHorizontal } from "react-icons/tb";
|
|
3
3
|
import { defineBrickManifest } from "~/shared/brick-manifest";
|
|
4
4
|
import { defineProps } from "../props/helpers";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { cssLengthRef } from "../props/css-length";
|
|
5
|
+
import { image } from "../props/image";
|
|
6
|
+
import { rounding } from "../props/border";
|
|
7
|
+
import { colorPreset } from "../props/color-preset";
|
|
8
|
+
import { loop } from "../props/dynamic";
|
|
9
|
+
import { cssLength } from "../props/css-length";
|
|
10
|
+
import type { BrickExample } from "./_types";
|
|
12
11
|
|
|
13
12
|
export const manifest = defineBrickManifest({
|
|
14
13
|
type: "carousel",
|
|
15
14
|
name: "Carousel",
|
|
16
15
|
description: "An image carousel with navigation arrows and dots or numbers indicator",
|
|
17
|
-
aiInstructions:
|
|
18
|
-
|
|
16
|
+
aiInstructions: `Use the carousel component for showcasing sequential visual content with smooth navigation between images.
|
|
17
|
+
|
|
18
|
+
WHEN TO USE:
|
|
19
|
+
- Product galleries with multiple angles or variations
|
|
20
|
+
- Portfolio showcases with project images
|
|
21
|
+
- Step-by-step tutorials or processes (recipes, instructions)
|
|
22
|
+
- Before/after comparisons or transformations
|
|
23
|
+
- Team member profiles with photos
|
|
24
|
+
- Event photo galleries or highlights
|
|
25
|
+
- Feature demonstrations or software screenshots
|
|
26
|
+
- Travel destinations or location showcases
|
|
27
|
+
|
|
28
|
+
CONTENT GUIDELINES:
|
|
29
|
+
- Optimal range: 2-8 images for best user engagement (max 12 supported)
|
|
30
|
+
- Single image allowed only as placeholder for future expansion
|
|
31
|
+
- Each image needs: { src: { src, alt }, legend }
|
|
32
|
+
- Alt text MUST be descriptive and never empty
|
|
33
|
+
- Legend text should be concise (≤90 characters) and informative
|
|
34
|
+
- Use empty string ("") for legend only when no caption is intentionally desired
|
|
35
|
+
|
|
36
|
+
IMAGE CONSISTENCY:
|
|
37
|
+
- Keep aspect ratios similar across slides to prevent layout jumps
|
|
38
|
+
- Avoid mixing very tall portrait with very wide landscape images
|
|
39
|
+
- Use consistent image quality and style throughout carousel
|
|
40
|
+
- Consider loading performance with image optimization
|
|
41
|
+
|
|
42
|
+
STYLING OPTIONS:
|
|
43
|
+
- padding: "0" for edge-to-edge, "1rem" for standard, "2rem+" for generous spacing
|
|
44
|
+
- borderRadius: "rounded-none" for sharp/modern, "rounded-md" for standard, "rounded-xl" for friendly, "rounded-full" for circular (avatars)
|
|
45
|
+
- colorPreset: Use sparingly - "neutral-50"/"primary-50" for subtle framing, gradients for premium feel
|
|
46
|
+
|
|
47
|
+
DYNAMIC CONTENT:
|
|
48
|
+
- Use loop property with single template object for data-driven carousels
|
|
49
|
+
- Template variables in src and legend: "{{product.image}}", "{{team.name}} - {{team.role}}"
|
|
50
|
+
- Perfect for: product catalogs, team directories, portfolio projects, event galleries
|
|
51
|
+
|
|
52
|
+
AVOID:
|
|
53
|
+
- Including unrelated properties (buttons, titles outside legend)
|
|
54
|
+
- Heavy background colors that distract from images
|
|
55
|
+
- Inconsistent aspect ratios that cause jarring transitions
|
|
56
|
+
- More than 12 images (reduces focus and performance)
|
|
57
|
+
- Empty or placeholder alt text (accessibility requirement)`,
|
|
19
58
|
category: "media",
|
|
20
59
|
defaultInspectorTab: "content",
|
|
21
60
|
consumesMultipleQueryRows: true,
|
|
@@ -28,12 +67,12 @@ export const manifest = defineBrickManifest({
|
|
|
28
67
|
icon: TbCarouselHorizontal,
|
|
29
68
|
props: defineProps({
|
|
30
69
|
colorPreset: Type.Optional(
|
|
31
|
-
|
|
70
|
+
colorPreset({
|
|
32
71
|
title: "Color",
|
|
33
72
|
}),
|
|
34
73
|
),
|
|
35
74
|
padding: Type.Optional(
|
|
36
|
-
|
|
75
|
+
cssLength({
|
|
37
76
|
default: "1rem",
|
|
38
77
|
description: "Padding inside the carousel.",
|
|
39
78
|
"ai:instructions": "Use only a single value like '1rem' or '10px'",
|
|
@@ -46,12 +85,12 @@ export const manifest = defineBrickManifest({
|
|
|
46
85
|
images: Type.Optional(
|
|
47
86
|
Type.Array(
|
|
48
87
|
Type.Object({
|
|
49
|
-
src:
|
|
88
|
+
src: image({
|
|
50
89
|
"ui:responsive": "desktop",
|
|
51
90
|
"ui:no-alt-text": true,
|
|
52
91
|
"ui:no-object-options": true,
|
|
53
92
|
}),
|
|
54
|
-
legend:
|
|
93
|
+
legend: Type.String({ title: "Legend" }),
|
|
55
94
|
}),
|
|
56
95
|
{
|
|
57
96
|
title: "Images",
|
|
@@ -64,23 +103,20 @@ export const manifest = defineBrickManifest({
|
|
|
64
103
|
),
|
|
65
104
|
),
|
|
66
105
|
borderRadius: Type.Optional(
|
|
67
|
-
|
|
106
|
+
rounding({
|
|
68
107
|
default: "rounded-md",
|
|
69
108
|
}),
|
|
70
109
|
),
|
|
71
|
-
loop: Type.Optional(
|
|
110
|
+
loop: Type.Optional(loop()),
|
|
72
111
|
}),
|
|
73
112
|
});
|
|
74
113
|
|
|
75
114
|
export type Manifest = typeof manifest;
|
|
76
115
|
|
|
77
|
-
export const examples:
|
|
78
|
-
|
|
79
|
-
type: string;
|
|
80
|
-
props: BrickProps<Manifest>["brick"]["props"];
|
|
81
|
-
}[] = [
|
|
116
|
+
export const examples: BrickExample<Manifest>[] = [
|
|
117
|
+
// BASIC CAROUSEL EXAMPLES
|
|
82
118
|
{
|
|
83
|
-
description: "Basic image carousel with legends",
|
|
119
|
+
description: "Basic image carousel with legends - Simple content showcase",
|
|
84
120
|
type: "carousel",
|
|
85
121
|
props: {
|
|
86
122
|
images: [
|
|
@@ -108,8 +144,10 @@ export const examples: {
|
|
|
108
144
|
],
|
|
109
145
|
},
|
|
110
146
|
},
|
|
147
|
+
|
|
148
|
+
// PRODUCT & COMMERCIAL
|
|
111
149
|
{
|
|
112
|
-
description: "Product showcase carousel with rounded corners and padding",
|
|
150
|
+
description: "Product showcase carousel with rounded corners and padding - E-commerce gallery style",
|
|
113
151
|
type: "carousel",
|
|
114
152
|
props: {
|
|
115
153
|
images: [
|
|
@@ -144,11 +182,13 @@ export const examples: {
|
|
|
144
182
|
],
|
|
145
183
|
borderRadius: "rounded-xl",
|
|
146
184
|
padding: "2rem",
|
|
147
|
-
colorPreset: { color: "
|
|
185
|
+
colorPreset: { color: "neutral-50" },
|
|
148
186
|
},
|
|
149
187
|
},
|
|
188
|
+
|
|
189
|
+
// PORTFOLIO & CREATIVE
|
|
150
190
|
{
|
|
151
|
-
description: "Portfolio carousel with minimal styling",
|
|
191
|
+
description: "Portfolio carousel with minimal styling - Clean professional presentation",
|
|
152
192
|
type: "carousel",
|
|
153
193
|
props: {
|
|
154
194
|
images: [
|
|
@@ -178,8 +218,10 @@ export const examples: {
|
|
|
178
218
|
padding: "0",
|
|
179
219
|
},
|
|
180
220
|
},
|
|
221
|
+
|
|
222
|
+
// EVENTS & EXPERIENCES
|
|
181
223
|
{
|
|
182
|
-
description: "Event photos carousel with primary color theme",
|
|
224
|
+
description: "Event photos carousel with primary color theme - Conference or gathering highlights",
|
|
183
225
|
type: "carousel",
|
|
184
226
|
props: {
|
|
185
227
|
images: [
|
|
@@ -262,8 +304,10 @@ export const examples: {
|
|
|
262
304
|
padding: "1rem",
|
|
263
305
|
},
|
|
264
306
|
},
|
|
307
|
+
|
|
308
|
+
// TEAM & PEOPLE
|
|
265
309
|
{
|
|
266
|
-
description: "Team members carousel with
|
|
310
|
+
description: "Team members carousel with circular images - Professional team showcase",
|
|
267
311
|
type: "carousel",
|
|
268
312
|
props: {
|
|
269
313
|
images: [
|
|
@@ -296,13 +340,15 @@ export const examples: {
|
|
|
296
340
|
legend: "Emily Chen - Marketing Director",
|
|
297
341
|
},
|
|
298
342
|
],
|
|
299
|
-
colorPreset: { color: "
|
|
343
|
+
colorPreset: { color: "primary-50" },
|
|
300
344
|
borderRadius: "rounded-full",
|
|
301
345
|
padding: "2rem",
|
|
302
346
|
},
|
|
303
347
|
},
|
|
348
|
+
|
|
349
|
+
// TUTORIALS & PROCESSES
|
|
304
350
|
{
|
|
305
|
-
description: "Recipe steps carousel with detailed descriptions",
|
|
351
|
+
description: "Recipe steps carousel with detailed descriptions - Step-by-step instructional content",
|
|
306
352
|
type: "carousel",
|
|
307
353
|
props: {
|
|
308
354
|
images: [
|
|
@@ -335,7 +381,7 @@ export const examples: {
|
|
|
335
381
|
legend: "Step 4: Season and serve hot",
|
|
336
382
|
},
|
|
337
383
|
],
|
|
338
|
-
colorPreset: { color: "
|
|
384
|
+
colorPreset: { color: "accent-50" },
|
|
339
385
|
borderRadius: "rounded-md",
|
|
340
386
|
padding: "1.5rem",
|
|
341
387
|
},
|
|
@@ -374,7 +420,7 @@ export const examples: {
|
|
|
374
420
|
legend: "Living Room - After",
|
|
375
421
|
},
|
|
376
422
|
],
|
|
377
|
-
colorPreset: { color: "
|
|
423
|
+
colorPreset: { color: "accent-100" },
|
|
378
424
|
borderRadius: "rounded-lg",
|
|
379
425
|
padding: "1rem",
|
|
380
426
|
},
|
|
@@ -406,7 +452,7 @@ export const examples: {
|
|
|
406
452
|
legend: "Color Study #7 - 2024",
|
|
407
453
|
},
|
|
408
454
|
],
|
|
409
|
-
colorPreset: { color: "
|
|
455
|
+
colorPreset: { color: "neutral-900" },
|
|
410
456
|
borderRadius: "rounded-sm",
|
|
411
457
|
padding: "3rem",
|
|
412
458
|
},
|
|
@@ -459,7 +505,7 @@ export const examples: {
|
|
|
459
505
|
legend: "Weekend Casual - Relaxed Fit",
|
|
460
506
|
},
|
|
461
507
|
],
|
|
462
|
-
colorPreset: { color: "
|
|
508
|
+
colorPreset: { color: "secondary-100" },
|
|
463
509
|
borderRadius: "rounded-xl",
|
|
464
510
|
padding: "2rem",
|
|
465
511
|
},
|
|
@@ -491,7 +537,7 @@ export const examples: {
|
|
|
491
537
|
legend: "Electric Sedan",
|
|
492
538
|
},
|
|
493
539
|
],
|
|
494
|
-
colorPreset: { color: "
|
|
540
|
+
colorPreset: { color: "accent-50" },
|
|
495
541
|
borderRadius: "rounded-lg",
|
|
496
542
|
padding: "0.5rem",
|
|
497
543
|
},
|
|
@@ -530,13 +576,13 @@ export const examples: {
|
|
|
530
576
|
legend: "Security - Enterprise-grade protection",
|
|
531
577
|
},
|
|
532
578
|
],
|
|
533
|
-
colorPreset: { color: "
|
|
579
|
+
colorPreset: { color: "primary-50" },
|
|
534
580
|
borderRadius: "rounded-2xl",
|
|
535
581
|
padding: "4rem",
|
|
536
582
|
},
|
|
537
583
|
},
|
|
538
584
|
{
|
|
539
|
-
description: "Dynamic product gallery using products query
|
|
585
|
+
description: "Dynamic product gallery using products query - Data-driven product showcase",
|
|
540
586
|
type: "carousel",
|
|
541
587
|
props: {
|
|
542
588
|
images: [
|
|
@@ -556,6 +602,90 @@ export const examples: {
|
|
|
556
602
|
},
|
|
557
603
|
},
|
|
558
604
|
},
|
|
605
|
+
|
|
606
|
+
// DYNAMIC CONTENT EXAMPLES
|
|
607
|
+
{
|
|
608
|
+
description: "Loop template for portfolioProjects query (one object will repeat per row)",
|
|
609
|
+
type: "carousel",
|
|
610
|
+
props: {
|
|
611
|
+
images: [
|
|
612
|
+
{
|
|
613
|
+
src: {
|
|
614
|
+
src: "{{portfolioProjects.featuredImage}}",
|
|
615
|
+
alt: "{{portfolioProjects.projectName}} featured image",
|
|
616
|
+
},
|
|
617
|
+
legend:
|
|
618
|
+
"{{portfolioProjects.projectName}} – {{portfolioProjects.clientName}} ({{portfolioProjects.year}})",
|
|
619
|
+
},
|
|
620
|
+
],
|
|
621
|
+
colorPreset: { color: "neutral-50" },
|
|
622
|
+
borderRadius: "rounded-md",
|
|
623
|
+
padding: "1rem",
|
|
624
|
+
loop: {
|
|
625
|
+
over: "portfolioProjects",
|
|
626
|
+
},
|
|
627
|
+
},
|
|
628
|
+
},
|
|
629
|
+
|
|
630
|
+
// SPECIAL STYLING VARIATIONS
|
|
631
|
+
{
|
|
632
|
+
description: "Showcase carousel with subtle gradient background frame",
|
|
633
|
+
type: "carousel",
|
|
634
|
+
props: {
|
|
635
|
+
images: [
|
|
636
|
+
{
|
|
637
|
+
src: { src: "https://via.placeholder.com/900x500.png?text=Showcase+1", alt: "Showcase slide 1" },
|
|
638
|
+
legend: "Launch Dashboard",
|
|
639
|
+
},
|
|
640
|
+
{
|
|
641
|
+
src: { src: "https://via.placeholder.com/900x500.png?text=Showcase+2", alt: "Showcase slide 2" },
|
|
642
|
+
legend: "Collaboration Tools",
|
|
643
|
+
},
|
|
644
|
+
{
|
|
645
|
+
src: { src: "https://via.placeholder.com/900x500.png?text=Showcase+3", alt: "Showcase slide 3" },
|
|
646
|
+
legend: "Usage Analytics",
|
|
647
|
+
},
|
|
648
|
+
],
|
|
649
|
+
colorPreset: { color: "primary-gradient-300", gradientDirection: "bg-gradient-to-br" },
|
|
650
|
+
borderRadius: "rounded-xl",
|
|
651
|
+
padding: "2rem",
|
|
652
|
+
},
|
|
653
|
+
},
|
|
654
|
+
// MINIMAL EDGE (no padding, square corners)
|
|
655
|
+
{
|
|
656
|
+
description: "Minimal edge-to-edge carousel (no padding, no rounding)",
|
|
657
|
+
type: "carousel",
|
|
658
|
+
props: {
|
|
659
|
+
images: [
|
|
660
|
+
{
|
|
661
|
+
src: { src: "https://via.placeholder.com/800x400.png?text=Edge+1", alt: "Edge slide 1" },
|
|
662
|
+
legend: "",
|
|
663
|
+
},
|
|
664
|
+
{
|
|
665
|
+
src: { src: "https://via.placeholder.com/800x400.png?text=Edge+2", alt: "Edge slide 2" },
|
|
666
|
+
legend: "",
|
|
667
|
+
},
|
|
668
|
+
],
|
|
669
|
+
borderRadius: "rounded-none",
|
|
670
|
+
padding: "0",
|
|
671
|
+
},
|
|
672
|
+
},
|
|
673
|
+
// SINGLE IMAGE (acts as prepared placeholder carousel)
|
|
674
|
+
{
|
|
675
|
+
description: "Single-image carousel (placeholder for future expansion)",
|
|
676
|
+
type: "carousel",
|
|
677
|
+
props: {
|
|
678
|
+
images: [
|
|
679
|
+
{
|
|
680
|
+
src: { src: "https://via.placeholder.com/1000x420.png?text=Banner", alt: "Promotional banner" },
|
|
681
|
+
legend: "Early Access Program",
|
|
682
|
+
},
|
|
683
|
+
],
|
|
684
|
+
colorPreset: { color: "secondary-50" },
|
|
685
|
+
borderRadius: "rounded-lg",
|
|
686
|
+
padding: "1.25rem",
|
|
687
|
+
},
|
|
688
|
+
},
|
|
559
689
|
{
|
|
560
690
|
description: "Team member carousel using teamMembers query with roles and departments",
|
|
561
691
|
type: "carousel",
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { type Static, Type } from "@sinclair/typebox";
|
|
2
2
|
import { VscLayoutPanelOff } from "react-icons/vsc";
|
|
3
3
|
import { defineBrickManifest } from "~/shared/brick-manifest";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
4
|
+
import { defineProps } from "../props/helpers";
|
|
5
|
+
import { image } from "../props/image";
|
|
6
|
+
import { colorPreset } from "../props/color-preset";
|
|
7
|
+
import { urlOrPageId } from "../props/string";
|
|
8
|
+
import { fontSize } from "../props/text";
|
|
9
9
|
import type { BrickProps } from "../props/types";
|
|
10
10
|
import { toLLMSchema } from "~/shared/utils/llm";
|
|
11
|
-
import {
|
|
11
|
+
import { cssLength } from "../props/css-length";
|
|
12
|
+
import type { BrickExample } from "./_types";
|
|
12
13
|
|
|
13
14
|
export const manifest = defineBrickManifest({
|
|
14
15
|
type: "footer",
|
|
@@ -29,13 +30,13 @@ export const manifest = defineBrickManifest({
|
|
|
29
30
|
props: defineProps(
|
|
30
31
|
{
|
|
31
32
|
colorPreset: Type.Optional(
|
|
32
|
-
|
|
33
|
+
colorPreset({
|
|
33
34
|
title: "Color preset",
|
|
34
35
|
default: { color: "neutral-600" },
|
|
35
36
|
}),
|
|
36
37
|
),
|
|
37
38
|
padding: Type.Optional(
|
|
38
|
-
|
|
39
|
+
cssLength({
|
|
39
40
|
default: "4rem",
|
|
40
41
|
description: "Padding inside the footer.",
|
|
41
42
|
title: "Padding",
|
|
@@ -44,17 +45,17 @@ export const manifest = defineBrickManifest({
|
|
|
44
45
|
"ui:styleId": "styles:padding",
|
|
45
46
|
}),
|
|
46
47
|
),
|
|
47
|
-
logo: Type.Optional(
|
|
48
|
-
fontSize: Type.Optional(
|
|
48
|
+
logo: Type.Optional(image({ title: "Logo", "ui:no-object-options": true, "ui:no-alt-text": true })),
|
|
49
|
+
fontSize: Type.Optional(fontSize({ default: "text-sm", "ui:no-extra-large-sizes": true })),
|
|
49
50
|
// rows:Type.Optional(number("Rows", { default: 1, "ui:field": "slider", minimum: 1, maximum: 5 })),
|
|
50
|
-
linksSections:
|
|
51
|
+
linksSections: Type.Array(
|
|
51
52
|
Type.Object(
|
|
52
53
|
{
|
|
53
|
-
sectionTitle:
|
|
54
|
-
links:
|
|
54
|
+
sectionTitle: Type.String({ title: "Title" }),
|
|
55
|
+
links: Type.Array(
|
|
55
56
|
Type.Object({
|
|
56
|
-
title:
|
|
57
|
-
url:
|
|
57
|
+
title: Type.String({ title: "Title" }),
|
|
58
|
+
url: urlOrPageId(),
|
|
58
59
|
}),
|
|
59
60
|
{
|
|
60
61
|
title: "Links",
|
|
@@ -90,6 +91,7 @@ export const manifest = defineBrickManifest({
|
|
|
90
91
|
removable: true, // Enable delete button
|
|
91
92
|
addable: true, // Enable add button
|
|
92
93
|
},
|
|
94
|
+
default: [],
|
|
93
95
|
description: "List of Links Sections. Each section contains a title and a list of links.",
|
|
94
96
|
metadata: {
|
|
95
97
|
category: "content",
|
|
@@ -107,11 +109,7 @@ export const footerSchemaPropsLLM = toLLMSchema(manifest.props);
|
|
|
107
109
|
|
|
108
110
|
export type FooterProps = Static<Manifest["props"]>;
|
|
109
111
|
|
|
110
|
-
export const examples:
|
|
111
|
-
description: string;
|
|
112
|
-
type: string;
|
|
113
|
-
props: BrickProps<Manifest>["brick"]["props"];
|
|
114
|
-
}[] = [
|
|
112
|
+
export const examples: BrickExample<Manifest>[] = [
|
|
115
113
|
{
|
|
116
114
|
description: "Simple footer with logo on the left",
|
|
117
115
|
type: "footer",
|
|
@@ -2,22 +2,56 @@ import { type Static, Type } from "@sinclair/typebox";
|
|
|
2
2
|
import { FaWpforms } from "react-icons/fa6";
|
|
3
3
|
import { defineBrickManifest } from "~/shared/brick-manifest";
|
|
4
4
|
import { StringEnum } from "~/shared/utils/string-enum";
|
|
5
|
-
import {
|
|
5
|
+
import { border, rounding } from "../props/border";
|
|
6
6
|
import { datarecord } from "../props/datarecord";
|
|
7
7
|
import { defineProps, group } from "../props/helpers";
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { cssLengthRef } from "../props/css-length";
|
|
8
|
+
import { fontSize } from "../props/text";
|
|
9
|
+
import { colorPreset } from "../props/color-preset";
|
|
10
|
+
import { direction } from "../props/direction";
|
|
11
|
+
import { cssLength } from "../props/css-length";
|
|
12
|
+
import type { BrickExample } from "./_types";
|
|
14
13
|
|
|
15
14
|
export const manifest = defineBrickManifest({
|
|
16
15
|
type: "form",
|
|
17
16
|
name: "Form",
|
|
18
17
|
description: "A form element.",
|
|
19
|
-
aiInstructions: `
|
|
20
|
-
|
|
18
|
+
aiInstructions: `PURPOSE
|
|
19
|
+
Dynamic form generator. Fields are inferred from the referenced datarecord schema (datarecordId). You NEVER list fields manually and the form does not accept children.
|
|
20
|
+
|
|
21
|
+
REQUIRED
|
|
22
|
+
• datarecordId must reference an existing datarecord definition.
|
|
23
|
+
|
|
24
|
+
COLOR & STYLE
|
|
25
|
+
• Optional colorPreset sets background + text. If omitted the form inherits parent background.
|
|
26
|
+
• Allowed tokens: primary-/secondary-/accent-/neutral-/base-*** (and gradient variants). Do NOT invent success, warning, danger, info, etc. Map them (success->secondary or primary; warning->accent; danger->accent/primary).
|
|
27
|
+
• Use rounding + border + padding for emphasis. Keep padding modest (1–3rem) unless it's a feature form hero (max ~4rem).
|
|
28
|
+
|
|
29
|
+
LAYOUT
|
|
30
|
+
• direction controls stacking (flex-col vs flex-row). Wide multi-column layouts usually flex-row on desktop, stacked (flex-col) on mobile.
|
|
31
|
+
• Use mobileProps to reduce padding or switch direction ONLY if necessary. (If switching direction, you must repeat required props.)
|
|
32
|
+
|
|
33
|
+
BUTTON GROUP
|
|
34
|
+
• Only supply button overrides you actually change (color, size, position, rounding). Unspecified values fallback to defaults.
|
|
35
|
+
• If button.size = wide then hide position (handled by schema metadata automatically—don't circumvent).
|
|
36
|
+
|
|
37
|
+
CONTENT STRINGS
|
|
38
|
+
• title, intro, buttonLabel, successMessage, errorMessage should be concise.
|
|
39
|
+
• Avoid marketing fluff inside intro beyond one short paragraph.
|
|
40
|
+
|
|
41
|
+
DYNAMIC DATA
|
|
42
|
+
• Do not interpolate inside datarecordId (it must be a static id).
|
|
43
|
+
• You MAY interpolate page queries aliases in title/intro (e.g. "Apply for {{job.title}}") if those fields exist in surrounding dataset context.
|
|
44
|
+
|
|
45
|
+
DON'TS
|
|
46
|
+
✗ Don't invent props.
|
|
47
|
+
✗ Don't add HTML tags except basic inline markup if absolutely needed (prefer plain text).
|
|
48
|
+
✗ Don't set impossible color tokens.
|
|
49
|
+
|
|
50
|
+
DO
|
|
51
|
+
✓ Keep examples lean.
|
|
52
|
+
✓ Use semantic color mapping guidelines.
|
|
53
|
+
✓ Provide accessible, human-readable labels.
|
|
54
|
+
`,
|
|
21
55
|
isContainer: false,
|
|
22
56
|
icon: FaWpforms,
|
|
23
57
|
minWidth: {
|
|
@@ -29,13 +63,13 @@ There is no need to define the form fields manually and the form does not accept
|
|
|
29
63
|
"ui:responsive": "desktop",
|
|
30
64
|
}),
|
|
31
65
|
colorPreset: Type.Optional(
|
|
32
|
-
|
|
66
|
+
colorPreset({
|
|
33
67
|
title: "Color",
|
|
34
68
|
default: "base-200",
|
|
35
69
|
}),
|
|
36
70
|
),
|
|
37
71
|
direction: Type.Optional(
|
|
38
|
-
|
|
72
|
+
direction({
|
|
39
73
|
title: "Direction",
|
|
40
74
|
description: "The direction of the form fields",
|
|
41
75
|
default: "flex-col",
|
|
@@ -44,7 +78,7 @@ There is no need to define the form fields manually and the form does not accept
|
|
|
44
78
|
}),
|
|
45
79
|
),
|
|
46
80
|
padding: Type.Optional(
|
|
47
|
-
|
|
81
|
+
cssLength({
|
|
48
82
|
default: "2rem",
|
|
49
83
|
description: "Padding inside the form.",
|
|
50
84
|
title: "Padding",
|
|
@@ -54,12 +88,12 @@ There is no need to define the form fields manually and the form does not accept
|
|
|
54
88
|
}),
|
|
55
89
|
),
|
|
56
90
|
rounding: Type.Optional(
|
|
57
|
-
|
|
91
|
+
rounding({
|
|
58
92
|
default: "rounded-md",
|
|
59
93
|
}),
|
|
60
94
|
),
|
|
61
|
-
border: Type.Optional(
|
|
62
|
-
fontSize: Type.Optional(
|
|
95
|
+
border: Type.Optional(border({})),
|
|
96
|
+
fontSize: Type.Optional(fontSize({ default: "inherit", "ui:no-extra-large-sizes": true })),
|
|
63
97
|
button: group({
|
|
64
98
|
title: "Button",
|
|
65
99
|
children: {
|
|
@@ -93,7 +127,7 @@ There is no need to define the form fields manually and the form does not accept
|
|
|
93
127
|
},
|
|
94
128
|
}),
|
|
95
129
|
),
|
|
96
|
-
rounding:
|
|
130
|
+
rounding: rounding({ default: "rounded-md" }),
|
|
97
131
|
},
|
|
98
132
|
}),
|
|
99
133
|
|
|
@@ -117,7 +151,8 @@ There is no need to define the form fields manually and the form does not accept
|
|
|
117
151
|
}),
|
|
118
152
|
),
|
|
119
153
|
buttonLabel: Type.Optional(
|
|
120
|
-
|
|
154
|
+
Type.String({
|
|
155
|
+
title: "Button label",
|
|
121
156
|
default: "Submit",
|
|
122
157
|
metadata: { category: "content" },
|
|
123
158
|
}),
|
|
@@ -147,11 +182,7 @@ There is no need to define the form fields manually and the form does not accept
|
|
|
147
182
|
|
|
148
183
|
export type Manifest = typeof manifest;
|
|
149
184
|
|
|
150
|
-
export const examples:
|
|
151
|
-
description: string;
|
|
152
|
-
type: string;
|
|
153
|
-
props: BrickProps<Manifest>["brick"]["props"];
|
|
154
|
-
}[] = [
|
|
185
|
+
export const examples: BrickExample<Manifest>[] = [
|
|
155
186
|
{
|
|
156
187
|
description: "Basic contact form",
|
|
157
188
|
type: "form",
|
|
@@ -180,6 +211,30 @@ export const examples: {
|
|
|
180
211
|
},
|
|
181
212
|
},
|
|
182
213
|
},
|
|
214
|
+
{
|
|
215
|
+
description: "Responsive newsletter subscription: desktop horizontal -> mobile vertical",
|
|
216
|
+
type: "form",
|
|
217
|
+
props: {
|
|
218
|
+
title: "Stay Updated",
|
|
219
|
+
intro: "Subscribe for product news and occasional tips.",
|
|
220
|
+
direction: "flex-row",
|
|
221
|
+
datarecordId: "newsletter-subscription",
|
|
222
|
+
padding: "3rem",
|
|
223
|
+
buttonLabel: "Subscribe",
|
|
224
|
+
button: { size: "block" },
|
|
225
|
+
colorPreset: { color: "neutral-100" },
|
|
226
|
+
},
|
|
227
|
+
mobileProps: {
|
|
228
|
+
title: "Stay Updated",
|
|
229
|
+
intro: "Subscribe for product news and occasional tips.",
|
|
230
|
+
direction: "flex-col",
|
|
231
|
+
datarecordId: "newsletter-subscription",
|
|
232
|
+
padding: "2rem",
|
|
233
|
+
buttonLabel: "Subscribe",
|
|
234
|
+
button: { size: "block" },
|
|
235
|
+
colorPreset: { color: "neutral-100" },
|
|
236
|
+
},
|
|
237
|
+
},
|
|
183
238
|
{
|
|
184
239
|
description: "Newsletter subscription form (horizontal) with large padding",
|
|
185
240
|
type: "form",
|
|
@@ -195,6 +250,51 @@ export const examples: {
|
|
|
195
250
|
},
|
|
196
251
|
},
|
|
197
252
|
},
|
|
253
|
+
{
|
|
254
|
+
description: "Minimal inline signup form (no background colorPreset, inherits parent)",
|
|
255
|
+
type: "form",
|
|
256
|
+
props: {
|
|
257
|
+
title: "Join Beta",
|
|
258
|
+
intro: "Access early features before public launch.",
|
|
259
|
+
direction: "flex-row",
|
|
260
|
+
datarecordId: "beta-signup",
|
|
261
|
+
buttonLabel: "Request Access",
|
|
262
|
+
button: { size: "block" },
|
|
263
|
+
padding: "1.5rem",
|
|
264
|
+
},
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
description: "Dark themed form using neutral-800 background and accent button",
|
|
268
|
+
type: "form",
|
|
269
|
+
props: {
|
|
270
|
+
title: "Feedback",
|
|
271
|
+
intro: "Tell us how we can improve the product.",
|
|
272
|
+
direction: "flex-col",
|
|
273
|
+
datarecordId: "product-feedback",
|
|
274
|
+
buttonLabel: "Send Feedback",
|
|
275
|
+
colorPreset: { color: "neutral-800" },
|
|
276
|
+
padding: "2.5rem",
|
|
277
|
+
button: { color: "btn-accent" },
|
|
278
|
+
rounding: "rounded-lg",
|
|
279
|
+
border: { width: "border", color: "border-neutral-700" },
|
|
280
|
+
},
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
description: "Gradient emphasis form (primary gradient) for event signup",
|
|
284
|
+
type: "form",
|
|
285
|
+
props: {
|
|
286
|
+
title: "Conference RSVP",
|
|
287
|
+
intro: "Reserve your seat for {{event.title}}.",
|
|
288
|
+
direction: "flex-col",
|
|
289
|
+
datarecordId: "event-registration",
|
|
290
|
+
buttonLabel: "Reserve Seat",
|
|
291
|
+
colorPreset: { color: "primary-gradient-400", gradientDirection: "bg-gradient-to-br" },
|
|
292
|
+
padding: "3rem",
|
|
293
|
+
button: { color: "btn-secondary" },
|
|
294
|
+
rounding: "rounded-xl",
|
|
295
|
+
border: { width: "border-2", color: "border-primary-300" },
|
|
296
|
+
},
|
|
297
|
+
},
|
|
198
298
|
{
|
|
199
299
|
description: "Event registration form",
|
|
200
300
|
type: "form",
|
|
@@ -223,4 +323,18 @@ export const examples: {
|
|
|
223
323
|
},
|
|
224
324
|
},
|
|
225
325
|
},
|
|
326
|
+
{
|
|
327
|
+
description: "Dynamic job application (title interpolated) mapping dataset field",
|
|
328
|
+
type: "form",
|
|
329
|
+
props: {
|
|
330
|
+
title: "Apply for {{job.title}}",
|
|
331
|
+
intro: "Join our team in {{job.location}}.",
|
|
332
|
+
direction: "flex-col",
|
|
333
|
+
datarecordId: "job-application",
|
|
334
|
+
buttonLabel: "Apply Now",
|
|
335
|
+
colorPreset: { color: "secondary-100" },
|
|
336
|
+
button: { size: "block", color: "btn-primary" },
|
|
337
|
+
padding: "2rem",
|
|
338
|
+
},
|
|
339
|
+
},
|
|
226
340
|
];
|