@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
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
defaultProps,
|
|
5
|
+
manifests
|
|
6
|
+
} from "./chunk-KQH6V22E.js";
|
|
7
|
+
import {
|
|
8
|
+
mergeIgnoringArrays
|
|
9
|
+
} from "./chunk-3ZDN5BWN.js";
|
|
10
|
+
import {
|
|
11
|
+
direction
|
|
12
|
+
} from "./chunk-WPZV3LYL.js";
|
|
13
|
+
import {
|
|
14
|
+
cssLength
|
|
15
|
+
} from "./chunk-OJ6KL7FU.js";
|
|
16
|
+
import {
|
|
17
|
+
alignItems,
|
|
18
|
+
justifyContent
|
|
19
|
+
} from "./chunk-ZRBTAC3G.js";
|
|
20
|
+
import {
|
|
21
|
+
background
|
|
22
|
+
} from "./chunk-KKWT3OXF.js";
|
|
23
|
+
import {
|
|
24
|
+
colorPreset
|
|
25
|
+
} from "./chunk-IEMCCHM4.js";
|
|
26
|
+
import {
|
|
27
|
+
toLLMSchema
|
|
28
|
+
} from "./chunk-MO6CRLQA.js";
|
|
29
|
+
import {
|
|
30
|
+
getSchemaDefaults
|
|
31
|
+
} from "./chunk-HY7JOP3J.js";
|
|
32
|
+
import {
|
|
33
|
+
StringEnum
|
|
34
|
+
} from "./chunk-GDYCCB3B.js";
|
|
35
|
+
|
|
36
|
+
// src/shared/bricks.ts
|
|
37
|
+
import { Type } from "@sinclair/typebox";
|
|
38
|
+
import { customAlphabet } from "nanoid";
|
|
39
|
+
var generateId = customAlphabet("azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN", 7);
|
|
40
|
+
var brickAbsolutePositionSchema = Type.Object({
|
|
41
|
+
left: Type.Optional(
|
|
42
|
+
Type.String({
|
|
43
|
+
title: "top",
|
|
44
|
+
description: "The left position in css unit."
|
|
45
|
+
})
|
|
46
|
+
),
|
|
47
|
+
top: Type.Optional(
|
|
48
|
+
Type.String({
|
|
49
|
+
title: "top",
|
|
50
|
+
description: "The top position in css unit."
|
|
51
|
+
})
|
|
52
|
+
),
|
|
53
|
+
right: Type.Optional(
|
|
54
|
+
Type.String({
|
|
55
|
+
title: "right",
|
|
56
|
+
description: "The right position in css unit."
|
|
57
|
+
})
|
|
58
|
+
),
|
|
59
|
+
bottom: Type.Optional(
|
|
60
|
+
Type.String({
|
|
61
|
+
title: "bottom",
|
|
62
|
+
description: "The bottom position in css unit."
|
|
63
|
+
})
|
|
64
|
+
),
|
|
65
|
+
inset: Type.Optional(
|
|
66
|
+
Type.String({
|
|
67
|
+
title: "inset",
|
|
68
|
+
description: "The inset position in css unit."
|
|
69
|
+
})
|
|
70
|
+
),
|
|
71
|
+
translateX: Type.Optional(
|
|
72
|
+
Type.String({
|
|
73
|
+
title: "translateX",
|
|
74
|
+
description: "The translateX position in css unit."
|
|
75
|
+
})
|
|
76
|
+
),
|
|
77
|
+
translateY: Type.Optional(
|
|
78
|
+
Type.String({
|
|
79
|
+
title: "translateY",
|
|
80
|
+
description: "The translateY position in css unit."
|
|
81
|
+
})
|
|
82
|
+
),
|
|
83
|
+
rotate: Type.Optional(
|
|
84
|
+
Type.String({
|
|
85
|
+
title: "rotate",
|
|
86
|
+
description: "The rotate position in css unit."
|
|
87
|
+
})
|
|
88
|
+
)
|
|
89
|
+
});
|
|
90
|
+
var brickTypeSchema = StringEnum(Object.keys(defaultProps), {
|
|
91
|
+
title: "Brick type"
|
|
92
|
+
});
|
|
93
|
+
var brickSchema = Type.Object({
|
|
94
|
+
id: Type.String({
|
|
95
|
+
title: "ID",
|
|
96
|
+
description: "A unique identifier for the brick."
|
|
97
|
+
}),
|
|
98
|
+
type: brickTypeSchema,
|
|
99
|
+
label: Type.Optional(
|
|
100
|
+
Type.String({
|
|
101
|
+
title: "Label",
|
|
102
|
+
description: "A human-readable label for the brick. Used for organization and identification."
|
|
103
|
+
})
|
|
104
|
+
),
|
|
105
|
+
props: Type.Any({
|
|
106
|
+
title: "Props",
|
|
107
|
+
description: "The static props of the brick. The available props depends on the brick type."
|
|
108
|
+
}),
|
|
109
|
+
mobileProps: Type.Optional(
|
|
110
|
+
Type.Any({
|
|
111
|
+
title: "Props",
|
|
112
|
+
description: "The overriden props for mobile, merged with desktop props. Same type as props but partial."
|
|
113
|
+
})
|
|
114
|
+
)
|
|
115
|
+
});
|
|
116
|
+
function makeFullBrickSchemaForLLM(type, otherTypes) {
|
|
117
|
+
const originalProps = Type.Pick(brickSchema, ["props"]);
|
|
118
|
+
const props = otherTypes ? Type.Composite([
|
|
119
|
+
Type.Omit(brickSchema, ["props"]),
|
|
120
|
+
Type.Object({
|
|
121
|
+
props: Type.Composite([
|
|
122
|
+
originalProps,
|
|
123
|
+
Type.Object({
|
|
124
|
+
$children: Type.Union(
|
|
125
|
+
otherTypes.map(
|
|
126
|
+
(t) => Type.Object({
|
|
127
|
+
id: Type.String({
|
|
128
|
+
title: "ID",
|
|
129
|
+
description: "A unique identifier for the brick."
|
|
130
|
+
}),
|
|
131
|
+
type: Type.Literal(t),
|
|
132
|
+
props: manifests[t].props,
|
|
133
|
+
mobileProps: Type.Optional(Type.Partial(manifests[t].props))
|
|
134
|
+
})
|
|
135
|
+
)
|
|
136
|
+
)
|
|
137
|
+
})
|
|
138
|
+
])
|
|
139
|
+
})
|
|
140
|
+
]) : manifests[type].props;
|
|
141
|
+
return toLLMSchema(
|
|
142
|
+
Type.Object(
|
|
143
|
+
{
|
|
144
|
+
id: Type.String({
|
|
145
|
+
title: "ID",
|
|
146
|
+
description: "A unique identifier for the brick."
|
|
147
|
+
}),
|
|
148
|
+
type: Type.Literal(type),
|
|
149
|
+
props,
|
|
150
|
+
mobileProps: Type.Optional(Type.Partial(manifests[type].props))
|
|
151
|
+
}
|
|
152
|
+
// IMPORTANT: DO NOT set "additionalProperties" to `false` because it would break validation with Cabidela library
|
|
153
|
+
// { additionalProperties: false },
|
|
154
|
+
)
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
var sectionProps = Type.Object({
|
|
158
|
+
colorPreset: Type.Optional(
|
|
159
|
+
colorPreset({
|
|
160
|
+
title: "Color"
|
|
161
|
+
})
|
|
162
|
+
),
|
|
163
|
+
backgroundImage: Type.Optional(
|
|
164
|
+
background({
|
|
165
|
+
title: "Background"
|
|
166
|
+
})
|
|
167
|
+
),
|
|
168
|
+
direction: Type.Optional(
|
|
169
|
+
direction({
|
|
170
|
+
default: "flex-row",
|
|
171
|
+
title: "Direction",
|
|
172
|
+
description: "The direction of the section. Only apply to desktop. On mobile, it is always vertical. By default, horizontal (row), which is the most common.",
|
|
173
|
+
"ui:responsive": "desktop"
|
|
174
|
+
})
|
|
175
|
+
),
|
|
176
|
+
minHeight: Type.Optional(
|
|
177
|
+
cssLength({
|
|
178
|
+
title: "Min height",
|
|
179
|
+
default: "fit-content",
|
|
180
|
+
description: "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.",
|
|
181
|
+
"ui:field": "hidden"
|
|
182
|
+
})
|
|
183
|
+
),
|
|
184
|
+
variant: Type.Optional(
|
|
185
|
+
StringEnum(["navbar", "footer", "sidebar"], {
|
|
186
|
+
title: "Custom section variant",
|
|
187
|
+
description: "Used for custom styling and layout.",
|
|
188
|
+
enumNames: ["Navbar", "Footer", "Sidebar"],
|
|
189
|
+
"ui:field": "hidden",
|
|
190
|
+
"ai:hidden": true
|
|
191
|
+
})
|
|
192
|
+
),
|
|
193
|
+
maxWidth: Type.Optional(
|
|
194
|
+
StringEnum(["max-w-screen-lg", "max-w-screen-xl", "max-w-screen-2xl", "max-w-full"], {
|
|
195
|
+
title: "Max width",
|
|
196
|
+
default: "max-w-full",
|
|
197
|
+
enumNames: ["M", "L", "XL", "Full"],
|
|
198
|
+
description: "The maximum width of the section. Desktop only",
|
|
199
|
+
"ai:instructions": "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.",
|
|
200
|
+
displayAs: "button-group",
|
|
201
|
+
"ui:responsive": "desktop"
|
|
202
|
+
})
|
|
203
|
+
),
|
|
204
|
+
verticalMargin: Type.Optional(
|
|
205
|
+
cssLength({
|
|
206
|
+
title: "Vertical Margin",
|
|
207
|
+
description: "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.",
|
|
208
|
+
default: "0",
|
|
209
|
+
"ui:styleId": "styles:verticalMargin"
|
|
210
|
+
})
|
|
211
|
+
),
|
|
212
|
+
justifyContent: Type.Optional(
|
|
213
|
+
justifyContent({
|
|
214
|
+
default: "justify-center"
|
|
215
|
+
})
|
|
216
|
+
),
|
|
217
|
+
alignItems: Type.Optional(
|
|
218
|
+
alignItems({
|
|
219
|
+
default: "items-center"
|
|
220
|
+
})
|
|
221
|
+
),
|
|
222
|
+
padding: Type.Optional(
|
|
223
|
+
cssLength({
|
|
224
|
+
default: "2rem",
|
|
225
|
+
description: "Padding inside the section.",
|
|
226
|
+
title: "Padding",
|
|
227
|
+
"ui:responsive": true,
|
|
228
|
+
"ui:placeholder": "Not specified",
|
|
229
|
+
"ui:styleId": "styles:padding"
|
|
230
|
+
})
|
|
231
|
+
),
|
|
232
|
+
gap: Type.Optional(
|
|
233
|
+
cssLength({
|
|
234
|
+
title: "Gap",
|
|
235
|
+
description: "The gap between the bricks in the section.",
|
|
236
|
+
default: "2rem",
|
|
237
|
+
"ui:styleId": "styles:gap"
|
|
238
|
+
})
|
|
239
|
+
),
|
|
240
|
+
wrap: Type.Optional(
|
|
241
|
+
Type.Boolean({
|
|
242
|
+
title: "Wrap",
|
|
243
|
+
description: "Wrap bricks if they overflow the section.",
|
|
244
|
+
default: true,
|
|
245
|
+
"ui:styleId": "styles:wrap"
|
|
246
|
+
})
|
|
247
|
+
),
|
|
248
|
+
lastTouched: Type.Optional(
|
|
249
|
+
Type.Number({
|
|
250
|
+
description: "Do not use this field. It is used internally by the editor.",
|
|
251
|
+
"ui:field": "hidden",
|
|
252
|
+
"ai:hidden": true
|
|
253
|
+
})
|
|
254
|
+
)
|
|
255
|
+
});
|
|
256
|
+
var sectionSchema = Type.Object(
|
|
257
|
+
{
|
|
258
|
+
id: Type.String({
|
|
259
|
+
description: "The unique ID of the section. Use a human readable url-safe slug",
|
|
260
|
+
examples: ["content-section", "contact-section"]
|
|
261
|
+
}),
|
|
262
|
+
label: Type.String({
|
|
263
|
+
description: "The label of the section. Shown only to the website owner, not public.",
|
|
264
|
+
examples: ["Content", "Contact"]
|
|
265
|
+
}),
|
|
266
|
+
order: Type.Number({
|
|
267
|
+
description: "Determines section order in the page (lower numbers appear first). 0-based"
|
|
268
|
+
}),
|
|
269
|
+
props: sectionProps,
|
|
270
|
+
mobileProps: Type.Optional(Type.Partial(sectionProps)),
|
|
271
|
+
bricks: Type.Array(brickSchema)
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
description: "Sections are direct children of the page that are stacked vertically."
|
|
275
|
+
}
|
|
276
|
+
);
|
|
277
|
+
var sectionSchemaNoBricks = Type.Omit(sectionSchema, ["bricks"]);
|
|
278
|
+
var sectionDefaultprops = getSchemaDefaults(sectionSchema.properties.props, "desktop");
|
|
279
|
+
var sectionMobileDefaultprops = getSchemaDefaults(
|
|
280
|
+
sectionSchema.properties.mobileProps,
|
|
281
|
+
"mobile"
|
|
282
|
+
);
|
|
283
|
+
function processSections(sections, siteAttributes, pageAttributes) {
|
|
284
|
+
const processSection = (section) => {
|
|
285
|
+
return {
|
|
286
|
+
...section,
|
|
287
|
+
props: mergeIgnoringArrays({}, sectionDefaultprops, section.props),
|
|
288
|
+
mobileProps: mergeIgnoringArrays({}, sectionMobileDefaultprops, section.mobileProps || {}),
|
|
289
|
+
bricks: section.bricks.map(processBrick).filter(Boolean)
|
|
290
|
+
};
|
|
291
|
+
};
|
|
292
|
+
const finalSections = sections.map(processSection);
|
|
293
|
+
if (siteAttributes.navbar && !pageAttributes.noNavbar) {
|
|
294
|
+
finalSections.unshift(
|
|
295
|
+
processSection({
|
|
296
|
+
order: -1,
|
|
297
|
+
id: "navbar-section",
|
|
298
|
+
label: "Navbar",
|
|
299
|
+
props: {
|
|
300
|
+
variant: "navbar",
|
|
301
|
+
direction: "flex-row"
|
|
302
|
+
},
|
|
303
|
+
mobileProps: {},
|
|
304
|
+
bricks: [
|
|
305
|
+
{
|
|
306
|
+
id: "navbar",
|
|
307
|
+
type: "navbar",
|
|
308
|
+
props: siteAttributes.navbar
|
|
309
|
+
}
|
|
310
|
+
]
|
|
311
|
+
})
|
|
312
|
+
);
|
|
313
|
+
}
|
|
314
|
+
if (siteAttributes.footer && !pageAttributes.noFooter) {
|
|
315
|
+
finalSections.push(
|
|
316
|
+
processSection({
|
|
317
|
+
order: 1e3,
|
|
318
|
+
id: "footer-section",
|
|
319
|
+
label: "Footer",
|
|
320
|
+
props: {
|
|
321
|
+
variant: "footer",
|
|
322
|
+
direction: "flex-row"
|
|
323
|
+
},
|
|
324
|
+
mobileProps: {},
|
|
325
|
+
bricks: [
|
|
326
|
+
{
|
|
327
|
+
id: "footer",
|
|
328
|
+
type: "footer",
|
|
329
|
+
props: siteAttributes.footer
|
|
330
|
+
}
|
|
331
|
+
]
|
|
332
|
+
})
|
|
333
|
+
);
|
|
334
|
+
}
|
|
335
|
+
return finalSections;
|
|
336
|
+
}
|
|
337
|
+
function processBrick(brick) {
|
|
338
|
+
const defProps = defaultProps[brick.type];
|
|
339
|
+
const result = {
|
|
340
|
+
...brick,
|
|
341
|
+
props: mergeIgnoringArrays({}, defProps.props, {
|
|
342
|
+
...brick.props,
|
|
343
|
+
...brick.props.$children ? { $children: brick.props.$children.map(processBrick).filter(Boolean) } : {}
|
|
344
|
+
})
|
|
345
|
+
};
|
|
346
|
+
return result;
|
|
347
|
+
}
|
|
348
|
+
function getDefaultPropsForBrick(type) {
|
|
349
|
+
return defaultProps[type].props;
|
|
350
|
+
}
|
|
351
|
+
function createEmptyBrick(type, ghost = false) {
|
|
352
|
+
const props = { ...defaultProps[type].props, ghost };
|
|
353
|
+
const newBrick = {
|
|
354
|
+
id: `b-${generateId()}`,
|
|
355
|
+
type,
|
|
356
|
+
props
|
|
357
|
+
};
|
|
358
|
+
return newBrick;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
export {
|
|
362
|
+
generateId,
|
|
363
|
+
brickTypeSchema,
|
|
364
|
+
brickSchema,
|
|
365
|
+
makeFullBrickSchemaForLLM,
|
|
366
|
+
sectionProps,
|
|
367
|
+
sectionSchema,
|
|
368
|
+
sectionSchemaNoBricks,
|
|
369
|
+
processSections,
|
|
370
|
+
processBrick,
|
|
371
|
+
getDefaultPropsForBrick,
|
|
372
|
+
createEmptyBrick
|
|
373
|
+
};
|
|
374
|
+
//# sourceMappingURL=chunk-H6TMBELF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/bricks.ts"],"sourcesContent":["import { Type, type Static } from \"@sinclair/typebox\";\nimport { customAlphabet } from \"nanoid\";\nimport { defaultProps, manifests } from \"./bricks/manifests/all-manifests\";\nimport { cssLength } from \"./bricks/props/css-length\";\nimport { colorPreset } from \"./bricks/props/color-preset\";\nimport { mergeIgnoringArrays } from \"./utils/merge\";\nimport { getSchemaDefaults } from \"./utils/schema\";\nimport { StringEnum } from \"./utils/string-enum\";\nimport { alignItems, justifyContent } from \"./bricks/props/align\";\nimport type { CommonBrickProps } from \"./bricks/props/common\";\nimport { direction } from \"./bricks/props/direction\";\nimport type { PageAttributes, SiteAttributes } from \"./attributes\";\nimport { toLLMSchema } from \"./utils/llm\";\nimport { background } 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 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\nexport function makeFullBrickSchemaForLLM(type: string, otherTypes?: string[]) {\n const originalProps = Type.Pick(brickSchema, [\"props\"]);\n const props = otherTypes\n ? Type.Composite([\n Type.Omit(brickSchema, [\"props\"]),\n Type.Object({\n props: Type.Composite([\n originalProps,\n Type.Object({\n $children: Type.Union(\n otherTypes.map((t) =>\n Type.Object({\n id: Type.String({\n title: \"ID\",\n description: \"A unique identifier for the brick.\",\n }),\n type: Type.Literal(t),\n props: manifests[t].props,\n mobileProps: Type.Optional(Type.Partial(manifests[t].props)),\n }),\n ),\n ),\n }),\n ]),\n }),\n ])\n : manifests[type].props;\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(manifests[type].props)),\n },\n // IMPORTANT: DO NOT set \"additionalProperties\" to `false` because it would break validation with Cabidela library\n // { additionalProperties: false },\n ),\n );\n}\n\nexport type Brick = Omit<Static<typeof brickSchema>, \"props\" | \"mobileProps\"> & {\n props: CommonBrickProps & Record<string, unknown>;\n mobileProps?: Partial<CommonBrickProps & Record<string, unknown>>;\n};\n\nexport const sectionProps = Type.Object({\n colorPreset: Type.Optional(\n colorPreset({\n title: \"Color\",\n }),\n ),\n backgroundImage: Type.Optional(\n background({\n title: \"Background\",\n }),\n ),\n direction: Type.Optional(\n direction({\n default: \"flex-row\",\n title: \"Direction\",\n description:\n \"The direction of the section. Only apply to desktop. On mobile, it is always vertical. By default, horizontal (row), which is the most common.\",\n \"ui:responsive\": \"desktop\",\n }),\n ),\n minHeight: Type.Optional(\n cssLength({\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 cssLength({\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 justifyContent({\n default: \"justify-center\",\n }),\n ),\n alignItems: Type.Optional(\n alignItems({\n default: \"items-center\",\n }),\n ),\n padding: Type.Optional(\n cssLength({\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 cssLength({\n title: \"Gap\",\n description: \"The gap between the bricks in the section.\",\n default: \"2rem\",\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\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)),\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 sectionSchemaNoBricks = Type.Omit(sectionSchema, [\"bricks\"]);\nexport type SectionSchemaNoBricks = Static<typeof 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 return result;\n}\n\nexport function getDefaultPropsForBrick(type: string) {\n return defaultProps[type].props;\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"],"mappings":"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","names":[]}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
border,
|
|
5
|
+
rounding
|
|
6
|
+
} from "./chunk-SRYBJ6NQ.js";
|
|
6
7
|
import {
|
|
7
|
-
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
defineProps
|
|
9
|
+
} from "./chunk-VTCHJT4O.js";
|
|
9
10
|
import {
|
|
10
|
-
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
cssLength
|
|
12
|
+
} from "./chunk-OJ6KL7FU.js";
|
|
12
13
|
import {
|
|
13
|
-
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
loop
|
|
15
|
+
} from "./chunk-XFZQGRRL.js";
|
|
15
16
|
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
} from "./chunk-NTLAKMMQ.js";
|
|
17
|
+
shadow
|
|
18
|
+
} from "./chunk-5RCC2STG.js";
|
|
19
19
|
import {
|
|
20
|
-
|
|
21
|
-
} from "./chunk-
|
|
20
|
+
colorPreset
|
|
21
|
+
} from "./chunk-IEMCCHM4.js";
|
|
22
22
|
import {
|
|
23
|
-
|
|
24
|
-
} from "./chunk-
|
|
23
|
+
defineBrickManifest
|
|
24
|
+
} from "./chunk-J45LSQT6.js";
|
|
25
25
|
import {
|
|
26
26
|
StringEnum
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-GDYCCB3B.js";
|
|
28
28
|
|
|
29
29
|
// src/shared/bricks/manifests/tabs.manifest.ts
|
|
30
30
|
import { Type } from "@sinclair/typebox";
|
|
@@ -59,7 +59,7 @@ var manifest = defineBrickManifest({
|
|
|
59
59
|
icon: HiOutlineViewColumns,
|
|
60
60
|
props: defineProps({
|
|
61
61
|
colorPreset: Type.Optional(
|
|
62
|
-
|
|
62
|
+
colorPreset({
|
|
63
63
|
title: "Color"
|
|
64
64
|
})
|
|
65
65
|
),
|
|
@@ -107,7 +107,7 @@ var manifest = defineBrickManifest({
|
|
|
107
107
|
})
|
|
108
108
|
),
|
|
109
109
|
padding: Type.Optional(
|
|
110
|
-
|
|
110
|
+
cssLength({
|
|
111
111
|
default: "1.5rem",
|
|
112
112
|
description: "Padding inside each tab panel.",
|
|
113
113
|
"ai:instructions": "Use values like '1rem', '1.5rem', or '2rem' for tab content padding",
|
|
@@ -117,7 +117,7 @@ var manifest = defineBrickManifest({
|
|
|
117
117
|
})
|
|
118
118
|
),
|
|
119
119
|
gap: Type.Optional(
|
|
120
|
-
|
|
120
|
+
cssLength({
|
|
121
121
|
title: "Tab Gap",
|
|
122
122
|
default: "0.5rem",
|
|
123
123
|
description: "Gap between tab buttons.",
|
|
@@ -126,14 +126,12 @@ var manifest = defineBrickManifest({
|
|
|
126
126
|
"ui:styleId": "styles:gap"
|
|
127
127
|
})
|
|
128
128
|
),
|
|
129
|
-
rounding:
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
),
|
|
134
|
-
|
|
135
|
-
shadow: Type.Optional(shadowRef()),
|
|
136
|
-
loop: Type.Optional(loopRef()),
|
|
129
|
+
rounding: rounding({
|
|
130
|
+
default: "rounded-md"
|
|
131
|
+
}),
|
|
132
|
+
border: Type.Optional(border()),
|
|
133
|
+
shadow: Type.Optional(shadow()),
|
|
134
|
+
loop: Type.Optional(loop()),
|
|
137
135
|
$children: Type.Array(Type.Array(Type.Any()), {
|
|
138
136
|
"ui:field": "hidden",
|
|
139
137
|
description: "Array of child brick arrays - each sub-array represents the content for one tab",
|
|
@@ -569,4 +567,4 @@ export {
|
|
|
569
567
|
manifest,
|
|
570
568
|
examples
|
|
571
569
|
};
|
|
572
|
-
//# sourceMappingURL=chunk-
|
|
570
|
+
//# sourceMappingURL=chunk-HUWMIXNN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/bricks/manifests/tabs.manifest.ts"],"sourcesContent":["import { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps } from \"../props/helpers\";\nimport { Type } from \"@sinclair/typebox\";\nimport { border, rounding } from \"../props/border\";\nimport { shadow } from \"../props/effects\";\nimport type { BrickProps } from \"../props/types\";\nimport { cssLength } from \"../props/css-length\";\nimport { HiOutlineViewColumns } from \"react-icons/hi2\";\nimport { colorPreset } from \"../props/color-preset\";\nimport { loop } from \"../props/dynamic\";\nimport { StringEnum } from \"~/shared/utils/string-enum\";\nimport type { BrickExample } from \"./_types\";\n\n// Tab configuration schema\nconst tabRef = Type.Object({\n label: Type.String({\n title: \"Tab Label\",\n description: \"The text shown on the tab button\",\n \"ai:instructions\": \"Use a short, descriptive label for the tab\",\n }),\n id: Type.Optional(\n Type.String({\n title: \"Tab ID\",\n description: \"Unique identifier for the tab (auto-generated if not provided)\",\n }),\n ),\n});\n\nexport const manifest = defineBrickManifest({\n type: \"tabs\",\n category: \"container\",\n name: \"Tabs\",\n description: \"A tabbed container that displays different content panels based on the selected tab.\",\n aiInstructions:\n \"Tabs are containers for organizing content into multiple panels. Each tab has a label and contains child bricks. Users can click tab buttons to switch between different content panels. Ideal for organizing related content, settings panels, or product information.\",\n isContainer: true,\n defaultWidth: {\n desktop: \"100%\",\n mobile: \"100%\",\n },\n defaultHeight: {\n desktop: \"auto\",\n },\n icon: HiOutlineViewColumns,\n props: defineProps({\n colorPreset: Type.Optional(\n colorPreset({\n title: \"Color\",\n }),\n ),\n tabs: Type.Array(tabRef, {\n title: \"Tabs\",\n description: \"List of tab configurations\",\n default: [{ label: \"Tab 1\" }, { label: \"Tab 2\" }],\n \"ai:instructions\":\n \"Each tab should have a descriptive label. Content for each tab is defined in the $children array.\",\n examples: [\n [{ label: \"Overview\" }, { label: \"Features\" }, { label: \"Pricing\" }],\n [{ label: \"About\" }, { label: \"Services\" }, { label: \"Contact\" }],\n ],\n }),\n defaultTab: Type.Optional(\n Type.Number({\n title: \"Default Tab\",\n description: \"Index of the tab to show by default (0-based)\",\n default: 0,\n minimum: 0,\n \"ai:instructions\": \"Use 0 for the first tab, 1 for the second tab, etc.\",\n }),\n ),\n tabPosition: Type.Optional(\n StringEnum([\"top\", \"bottom\"], {\n title: \"Tab Position\",\n description: \"Position of the tab buttons relative to content\",\n default: \"top\",\n \"ai:instructions\":\n \"Use 'top' for tabs above content (most common) or 'bottom' for tabs below content\",\n }),\n ),\n tabStyle: Type.Optional(\n StringEnum([\"pills\", \"underline\", \"bordered\"], {\n title: \"Tab Style\",\n description: \"Visual style of the tab buttons\",\n default: \"underline\",\n \"ai:instructions\":\n \"Pills are rounded buttons, underline shows a line under active tab, bordered shows tabs with borders\",\n }),\n ),\n fullWidth: Type.Optional(\n Type.Boolean({\n title: \"Full Width Tabs\",\n description: \"Make tab buttons span the full width of the container\",\n default: false,\n \"ai:instructions\": \"Enable this to make tab buttons evenly distribute across the full width\",\n }),\n ),\n padding: Type.Optional(\n cssLength({\n default: \"1.5rem\",\n description: \"Padding inside each tab panel.\",\n \"ai:instructions\": \"Use values like '1rem', '1.5rem', or '2rem' for tab content padding\",\n title: \"Content Padding\",\n \"ui:placeholder\": \"Not specified\",\n \"ui:styleId\": \"styles:padding\",\n }),\n ),\n gap: Type.Optional(\n cssLength({\n title: \"Tab Gap\",\n default: \"0.5rem\",\n description: \"Gap between tab buttons.\",\n \"ai:instructions\": \"Small values like '0.25rem' or '0.5rem' work best for tab spacing\",\n \"ui:placeholder\": \"Not specified\",\n \"ui:styleId\": \"styles:gap\",\n }),\n ),\n rounding: rounding({\n default: \"rounded-md\",\n }),\n border: Type.Optional(border()),\n shadow: Type.Optional(shadow()),\n loop: Type.Optional(loop()),\n $children: Type.Array(Type.Array(Type.Any()), {\n \"ui:field\": \"hidden\",\n description: \"Array of child brick arrays - each sub-array represents the content for one tab\",\n default: [[], []],\n examples: [\n [\n // Tab 1 content\n [\n {\n type: \"text\",\n props: {\n content: \"<h3>Overview</h3><p>This is the overview tab content.</p>\",\n },\n },\n ],\n // Tab 2 content\n [\n {\n type: \"text\",\n props: {\n content: \"<h3>Features</h3><p>Here are our key features.</p>\",\n },\n },\n {\n type: \"button\",\n props: {\n text: \"Learn More\",\n link: \"/features\",\n },\n },\n ],\n ],\n ],\n }),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: BrickExample<Manifest>[] = [\n {\n description: \"Simple tabs with basic content in each panel\",\n type: \"tabs\",\n props: {\n tabs: [{ label: \"About\" }, { label: \"Services\" }, { label: \"Contact\" }],\n defaultTab: 0,\n tabStyle: \"underline\",\n $children: [\n [\n {\n type: \"text\",\n props: {\n content: \"<h3>About Us</h3><p>We are a company focused on delivering exceptional results.</p>\",\n },\n },\n ],\n [\n {\n type: \"text\",\n props: {\n content: \"<h3>Our Services</h3><p>We offer a wide range of professional services.</p>\",\n },\n },\n {\n type: \"button\",\n props: {\n text: \"View All Services\",\n link: \"/services\",\n },\n },\n ],\n [\n {\n type: \"text\",\n props: {\n content:\n \"<h3>Contact Information</h3><p>Email: hello@company.com</p><p>Phone: (555) 123-4567</p>\",\n },\n },\n ],\n ],\n },\n },\n {\n description: \"Product information tabs with pills style and custom styling\",\n type: \"tabs\",\n props: {\n tabs: [{ label: \"Overview\" }, { label: \"Specifications\" }, { label: \"Reviews\" }, { label: \"Support\" }],\n defaultTab: 0,\n tabStyle: \"pills\",\n fullWidth: true,\n colorPreset: {\n color: \"primary-50\",\n },\n border: {\n width: \"border\",\n color: \"border-primary-200\",\n },\n rounding: \"rounded-lg\",\n padding: \"2rem\",\n $children: [\n [\n {\n type: \"text\",\n props: {\n content: \"<h3>Product Overview</h3><p>This product revolutionizes the way you work.</p>\",\n },\n },\n {\n type: \"image\",\n props: {\n src: \"https://via.placeholder.com/400x200\",\n alt: \"Product image\",\n },\n },\n ],\n [\n {\n type: \"text\",\n props: {\n content:\n '<h3>Technical Specifications</h3><ul><li>Weight: 2.5 lbs</li><li>Dimensions: 12\" x 8\" x 2\"</li><li>Battery: 8 hours</li></ul>',\n },\n },\n ],\n [\n {\n type: \"text\",\n props: {\n content:\n '<h3>Customer Reviews</h3><p>★★★★★ \"Amazing product, highly recommend!\"</p><p>★★★★☆ \"Great value for money.\"</p>',\n },\n },\n ],\n [\n {\n type: \"text\",\n props: {\n content: \"<h3>Support</h3><p>Need help? Contact our support team.</p>\",\n },\n },\n {\n type: \"button\",\n props: {\n text: \"Contact Support\",\n link: \"/support\",\n },\n },\n ],\n ],\n },\n },\n {\n description: \"Portfolio sections with bordered tabs\",\n type: \"tabs\",\n props: {\n tabs: [{ label: \"Web Design\" }, { label: \"Mobile Apps\" }, { label: \"Branding\" }],\n defaultTab: 0,\n tabStyle: \"bordered\",\n shadow: \"shadow-md\",\n rounding: \"rounded-xl\",\n $children: [\n [\n {\n type: \"text\",\n props: {\n content: \"<h3>Web Design Projects</h3><p>Beautiful, responsive websites that convert.</p>\",\n },\n },\n {\n type: \"image\",\n props: {\n src: \"https://via.placeholder.com/600x300\",\n alt: \"Web design portfolio\",\n },\n },\n ],\n [\n {\n type: \"text\",\n props: {\n content: \"<h3>Mobile Applications</h3><p>Native and cross-platform mobile solutions.</p>\",\n },\n },\n {\n type: \"image\",\n props: {\n src: \"https://via.placeholder.com/300x500\",\n alt: \"Mobile app portfolio\",\n },\n },\n ],\n [\n {\n type: \"text\",\n props: {\n content:\n \"<h3>Brand Identity</h3><p>Comprehensive branding solutions for modern businesses.</p>\",\n },\n },\n {\n type: \"image\",\n props: {\n src: \"https://via.placeholder.com/500x400\",\n alt: \"Branding portfolio\",\n },\n },\n ],\n ],\n },\n },\n {\n description: \"FAQ sections with bottom-positioned tabs\",\n type: \"tabs\",\n props: {\n tabs: [{ label: \"General\" }, { label: \"Billing\" }, { label: \"Technical\" }],\n defaultTab: 0,\n tabPosition: \"bottom\",\n tabStyle: \"underline\",\n padding: \"1.5rem\",\n $children: [\n [\n {\n type: \"text\",\n props: {\n content:\n \"<h3>General Questions</h3><p><strong>What is your company about?</strong></p><p>We provide excellent services to our customers.</p><p><strong>Where are you located?</strong></p><p>We have offices worldwide.</p>\",\n },\n },\n ],\n [\n {\n type: \"text\",\n props: {\n content:\n \"<h3>Billing Questions</h3><p><strong>How does billing work?</strong></p><p>We bill monthly based on usage.</p><p><strong>Can I change my plan?</strong></p><p>Yes, you can upgrade or downgrade anytime.</p>\",\n },\n },\n ],\n [\n {\n type: \"text\",\n props: {\n content:\n \"<h3>Technical Support</h3><p><strong>How do I reset my password?</strong></p><p>Use the forgot password link on the login page.</p><p><strong>Is there an API?</strong></p><p>Yes, we have a comprehensive REST API.</p>\",\n },\n },\n ],\n ],\n },\n },\n {\n description: \"Team member profiles using teamMembers query with dynamic tabs\",\n type: \"tabs\",\n props: {\n loop: {\n over: \"teamMembers\",\n },\n tabs: [{ label: \"{{teamMembers.name}}\" }],\n tabStyle: \"pills\",\n fullWidth: false,\n colorPreset: {\n color: \"secondary-100\",\n },\n padding: \"2rem\",\n $children: [\n [\n {\n type: \"image\",\n props: {\n src: \"{{teamMembers.photo}}\",\n alt: \"{{teamMembers.name}}\",\n },\n },\n {\n type: \"text\",\n props: {\n content:\n \"<h3>{{teamMembers.name}}</h3><p><strong>{{teamMembers.position}}</strong></p><p>{{teamMembers.bio}}</p><p>Email: {{teamMembers.email}}</p>\",\n },\n },\n ],\n ],\n },\n },\n {\n description: \"Product categories using productCategories query\",\n type: \"tabs\",\n props: {\n loop: {\n over: \"productCategories\",\n },\n tabs: [{ label: \"{{productCategories.categoryName}}\" }],\n tabStyle: \"bordered\",\n fullWidth: true,\n border: {\n width: \"border-2\",\n color: \"border-primary-300\",\n },\n rounding: \"rounded-lg\",\n shadow: \"shadow-lg\",\n $children: [\n [\n {\n type: \"text\",\n props: {\n content:\n \"<h3>{{productCategories.categoryName}}</h3><p>{{productCategories.description}}</p><p>{{productCategories.productCount}} products available</p>\",\n },\n },\n {\n type: \"button\",\n props: {\n text: \"Browse {{productCategories.categoryName}}\",\n link: \"/products/{{productCategories.slug}}\",\n },\n },\n ],\n ],\n },\n },\n {\n description: \"Service packages with pricing information\",\n type: \"tabs\",\n props: {\n tabs: [{ label: \"Basic\" }, { label: \"Professional\" }, { label: \"Enterprise\" }],\n defaultTab: 1,\n tabStyle: \"pills\",\n fullWidth: true,\n colorPreset: {\n color: \"accent-50\",\n },\n border: {\n width: \"border\",\n color: \"border-accent-200\",\n },\n rounding: \"rounded-xl\",\n shadow: \"shadow-md\",\n padding: \"2.5rem\",\n $children: [\n [\n {\n type: \"text\",\n props: {\n content:\n \"<h3>Basic Package</h3><p><strong>$99/month</strong></p><ul><li>5 Projects</li><li>10GB Storage</li><li>Email Support</li></ul>\",\n },\n },\n {\n type: \"button\",\n props: {\n text: \"Choose Basic\",\n link: \"/pricing/basic\",\n },\n },\n ],\n [\n {\n type: \"text\",\n props: {\n content:\n \"<h3>Professional Package</h3><p><strong>$199/month</strong></p><ul><li>25 Projects</li><li>100GB Storage</li><li>Priority Support</li><li>Advanced Analytics</li></ul>\",\n },\n },\n {\n type: \"button\",\n props: {\n text: \"Choose Professional\",\n link: \"/pricing/professional\",\n },\n },\n ],\n [\n {\n type: \"text\",\n props: {\n content:\n \"<h3>Enterprise Package</h3><p><strong>$499/month</strong></p><ul><li>Unlimited Projects</li><li>1TB Storage</li><li>24/7 Phone Support</li><li>Custom Integrations</li><li>Dedicated Account Manager</li></ul>\",\n },\n },\n {\n type: \"button\",\n props: {\n text: \"Contact Sales\",\n link: \"/contact/enterprise\",\n },\n },\n ],\n ],\n },\n },\n {\n description: \"Documentation sections with technical content\",\n type: \"tabs\",\n props: {\n tabs: [\n { label: \"Getting Started\" },\n { label: \"API Reference\" },\n { label: \"Examples\" },\n { label: \"Troubleshooting\" },\n ],\n defaultTab: 0,\n tabStyle: \"underline\",\n tabPosition: \"top\",\n padding: \"1.5rem\",\n colorPreset: {\n color: \"neutral-50\",\n },\n $children: [\n [\n {\n type: \"text\",\n props: {\n content:\n \"<h3>Getting Started</h3><p>Welcome to our platform! Here's how to get started:</p><ol><li>Create an account</li><li>Set up your first project</li><li>Invite team members</li></ol>\",\n },\n },\n ],\n [\n {\n type: \"text\",\n props: {\n content:\n \"<h3>API Reference</h3><p>Our REST API provides programmatic access to all features:</p><pre>GET /api/v1/projects</pre><pre>POST /api/v1/projects</pre>\",\n },\n },\n ],\n [\n {\n type: \"text\",\n props: {\n content:\n \"<h3>Code Examples</h3><p>Here are some common use cases:</p><pre>curl -X GET https://api.example.com/projects</pre>\",\n },\n },\n ],\n [\n {\n type: \"text\",\n props: {\n content:\n \"<h3>Troubleshooting</h3><p><strong>Issue:</strong> Cannot connect to API</p><p><strong>Solution:</strong> Check your API key and network connection.</p>\",\n },\n },\n ],\n ],\n },\n },\n];\n"],"mappings":"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","names":[]}
|