@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 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/datasources/types.ts"],"sourcesContent":["import { Type, type Static } from \"@sinclair/typebox\";\nimport { StringEnum } from \"../utils/string-enum\";\nimport { toLLMSchema } from \"../utils/llm\";\n\nexport const providersSchema = StringEnum([\n // \"facebook-posts\",\n // \"instagram-feed\",\n // \"mastodon-account\",\n // \"mastodon-status\",\n // \"mastodon-status-list\",\n \"internal\",\n // \"rss\",\n // // \"threads-media\",\n // // \"tiktok-video\",\n // \"youtube-list\",\n // \"http-json\",\n // \"internal-blog\",\n // \"internal-changelog\",\n // // \"internal-contact-info\",\n // \"internal-faq\",\n // \"internal-links\",\n // \"internal-recipes\",\n // \"internal-restaurant\",\n // \"internal-cv\",\n]);\n\nexport type DatasourceProvider = Static<typeof providersSchema>;\n\n// const datasourceProviderManifest = Type.Composite([\n// Type.Object({\n// id: Type.String({\n// title: \"ID\",\n// description:\n// \"Unique identifier of the datasource. Used to reference the datasource in the system. Use a url-safe string like a slug.\",\n// }),\n// label: Type.String({ title: \"Label\", description: \"Label of the datasource displayed in the UI\" }),\n// schema: Type.Null({\n// description: \"Always null for provider datasources. The schema is defined by the provider.\",\n// }),\n// ttlMinutes: Type.Optional(\n// Type.Number({\n// title: \"Time to live\",\n// description:\n// \"Time to live in minutes. If set to -1, it never expires and has to be manually refreshed. If set to 0, the datasource is always fetched live. If > 0, then the datasource is feteched every N minutes.\",\n// }),\n// ),\n// refresh: Type.Optional(\n// Type.Object(\n// {\n// method: Type.Union([Type.Literal(\"interval\"), Type.Literal(\"manual\"), Type.Literal(\"live\")]),\n// interval: Type.Optional(Type.Number()),\n// },\n// {\n// title: \"Refresh options\",\n// description: \"Options to refresh the datasource\",\n// },\n// ),\n// ),\n// }),\n// ]);\n\n// export type DatasourceProviderManifest = Static<typeof datasourceProviderManifest>;\n\nconst datasourceInternalManifest = Type.Object(\n {\n id: Type.String({\n title: \"ID\",\n description:\n \"Unique identifier of the datasource. Used to reference the datasource in the system. Use a url-safe string like a slug.\",\n }),\n label: Type.String({ title: \"Label\", description: \"Label of the datasource displayed in the UI\" }),\n provider: Type.Literal(\"internal\", {\n title: \"Internal\",\n description: \"Internal datasource saved locally in Upstart.\",\n }),\n schema: Type.Any({\n title: \"Schema\",\n description: \"JSON Schema of datasource. MUST Always an array of objects.\",\n }),\n indexes: Type.Array(\n Type.Object({\n name: Type.String({ title: \"Index name\" }),\n fields: Type.Array(Type.String(), { title: \"Fields to index\" }),\n unique: Type.Optional(Type.Boolean({ title: \"Unique index\", default: false })),\n }),\n {\n title: \"Indexes\",\n description:\n \"IMPORTANT: Indexes to create on the datasource. use it to enforce uniqueness or improve query performance.\",\n },\n ),\n },\n {\n examples: [\n {\n id: \"customers\",\n label: \"Customers\",\n provider: \"internal\",\n schema: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\", title: \"Name\" },\n email: { type: \"string\", title: \"Email\", format: \"email\" },\n },\n required: [\"name\", \"email\"],\n title: \"Customer\",\n examples: [\n { name: \"John Doe\", email: \"john.doe@example.com\" },\n {\n name: \"Jane Smith\",\n email: \"jane.smith@example.com\",\n },\n {\n name: \"Alice Johnson\",\n email: \"alice.johnson@example.com\",\n },\n {\n name: \"Bob Brown\",\n email: \"bob.brown@example.com\",\n },\n {\n name: \"Charlie Davis\",\n email: \"charlie.davis@example.com\",\n },\n ],\n },\n },\n indexes: [\n {\n name: \"idx_customers_email\",\n fields: [\"email\"],\n unique: true,\n },\n ],\n },\n {\n id: \"blog_posts\",\n label: \"Blog Posts\",\n provider: \"internal\",\n schema: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n title: { type: \"string\", title: \"Title\" },\n content: { type: \"string\", title: \"Content\" },\n author: { type: \"string\", title: \"Author\" },\n },\n required: [\"title\", \"content\", \"author\"],\n title: \"Blog Post\",\n examples: [\n {\n title: \"My First Blog Post\",\n content: \"This is the content of my first blog post.\",\n author: \"John Doe\",\n },\n {\n title: \"Exploring the Cosmos\",\n content: \"A journey through the stars and galaxies.\",\n author: \"Jane Smith\",\n },\n {\n title: \"The Art of Cooking\",\n content: \"Delicious recipes and cooking tips.\",\n author: \"Alice Johnson\",\n },\n {\n title: \"Traveling the World\",\n content: \"My adventures in different countries.\",\n author: \"Bob Brown\",\n },\n {\n title: \"Technology Trends\",\n content: \"The latest trends in technology.\",\n author: \"Charlie Davis\",\n },\n ],\n },\n },\n indexes: [\n {\n name: \"idx_blog_posts_title\",\n fields: [\"title\"],\n unique: true,\n },\n ],\n },\n ],\n },\n);\n\nexport type InternalDatasource = Static<typeof datasourceInternalManifest>;\n\n// const datasourceJsonManifest = Type.Composite([\n// datasourceBaseFields,\n// Type.Object({\n// provider: Type.Literal(\"http-json\", {\n// title: \"JSON Array\",\n// description: \"JSON array datasource.\",\n// }),\n// options: httpJsonOptions,\n// schema: Type.Any({\n// title: \"Schema\",\n// description: \"JSON Schema of datasource. Always an array of objects.\",\n// examples: [\n// {\n// type: \"array\",\n// items: {\n// type: \"object\",\n// properties: {\n// id: { type: \"string\", title: \"ID\" },\n// title: { type: \"string\", title: \"Title\" },\n// firstname: { type: \"string\", title: \"Firstname\" },\n// lastname: { type: \"string\", title: \"Lastname\" },\n// createdAt: { type: \"string\", format: \"date-time\", title: \"Created at\" },\n// email: { type: \"string\", format: \"email\", title: \"Email\" },\n// },\n// required: [\"id\", \"title\", \"firstname\", \"lastname\", \"email\", \"createdAt\"],\n// title: \"Employee\",\n// },\n// title: \"Employees\",\n// description: \"Employees list\",\n// },\n// ],\n// }),\n// }),\n// ]);\n\n// type DatasourceJsonArrayManifest = Static<typeof datasourceJsonManifest>;\n\n// Fow now, let support only custom (internal) datasource\n// export const datasourceManifest = datasourceCustomManifest;\nexport const datasourceManifest = datasourceInternalManifest;\nexport const datasourceManifestLLM = toLLMSchema(datasourceManifest);\n\nexport type Datasource = Static<typeof datasourceManifest>;\nexport const datasourcesList = Type.Array(datasourceManifest);\nexport type DatasourcesList = Static<typeof datasourcesList>;\n\nconst stringFilter = Type.Object({\n field: Type.String(),\n op: StringEnum([\n \"eq\",\n \"ne\",\n \"contains\",\n \"notContains\",\n \"startsWith\",\n \"notStartsWith\",\n \"endsWith\",\n \"notEndsWith\",\n ]),\n value: Type.String(),\n});\n\nconst numberFilter = Type.Object({\n field: Type.String(),\n op: StringEnum([\"eq\", \"ne\", \"lt\", \"lte\", \"gt\", \"gte\"]),\n value: Type.Number(),\n});\n\nconst dateFilterAbsolute = Type.Object({\n field: Type.String(),\n op: StringEnum([\"before\", \"after\"]),\n value: Type.String(),\n});\n\nconst dateFilterRelative = Type.Object({\n field: Type.String(),\n op: StringEnum([\"beforeNow\", \"afterNow\"]),\n value: Type.Null(),\n});\n\nconst arrayFilter = Type.Object({\n field: Type.String(),\n op: StringEnum([\"contains\", \"notContains\", \"containsAll\", \"containsAny\", \"notContainsAny\"]),\n value: Type.Array(Type.String()),\n});\n\nconst booleanFilter = Type.Object({\n field: Type.String(),\n op: Type.Literal(\"eq\"),\n value: Type.Boolean(),\n});\n\nexport const queryFilter = Type.Union([\n stringFilter,\n numberFilter,\n dateFilterAbsolute,\n dateFilterRelative,\n arrayFilter,\n booleanFilter,\n]);\n\nconst filterExpression = Type.Recursive(\n (This) =>\n Type.Union(\n [\n Type.Object({\n op: Type.Literal(\"and\"),\n fields: Type.Array(Type.Union([queryFilter, This]), { title: \"Indexed Fields\" }),\n }),\n Type.Object({\n op: Type.Literal(\"or\"),\n fields: Type.Array(Type.Union([queryFilter, This])),\n }),\n ],\n {\n default: {\n op: \"and\",\n fields: [],\n },\n examples: [\n {\n op: \"and\",\n fields: [\n {\n field: \"$id\",\n op: \"eq\",\n value: \"123\",\n },\n {\n field: \"$publicationDate\",\n op: \"beforeNow\",\n },\n ],\n },\n ],\n },\n ),\n {\n title: \"Filter Expression\",\n description: \"Expression used to filter query results. Can be a combination of and/or conditions.\",\n },\n);\n\nexport const querySchema = Type.Object(\n {\n id: Type.String({\n title: \"Query ID\",\n description:\n \"Unique identifier for the query. Used to reference the query in the system. URL-safe string like a slug.\",\n }),\n label: Type.String({\n title: \"Label\",\n maxLength: 100,\n description: \"Label of the query displayed in the UI\",\n }),\n datasourceId: Type.String({\n title: \"Database\",\n description: \"ID of the datasource to query\",\n }),\n limit: Type.Number({\n title: \"Limit\",\n description: \"Limit the number of records to fetch from the datasource.\",\n minimum: 1,\n default: 10,\n }),\n sortDirection: Type.Optional(\n StringEnum([\"asc\", \"desc\"], {\n title: \"Sort\",\n enumNames: [\"Ascending\", \"Descending\"],\n description: \"Direction to sort the records by\",\n default: \"desc\",\n }),\n ),\n sortField: Type.Optional(\n Type.String({\n title: \"Sort Field\",\n description: \"Field to sort by (must be an indexed field)\",\n default: \"$publicationDate\",\n }),\n ),\n filters: Type.Optional(filterExpression),\n parameters: Type.Optional(\n Type.Array(\n Type.Object({\n field: Type.String({ title: \"Field\", description: \"Field name to use as parameter\" }),\n op: StringEnum(\n [\n \"eq\",\n \"ne\",\n \"contains\",\n \"notContains\",\n \"startsWith\",\n \"notStartsWith\",\n \"endsWith\",\n \"notEndsWith\",\n \"lt\",\n \"lte\",\n \"gt\",\n \"gte\",\n \"before\",\n \"after\",\n \"beforeNow\",\n \"afterNow\",\n \"containsAll\",\n \"containsAny\",\n \"notContainsAny\",\n ],\n { title: \"Operator\", description: \"Operator to use for the parameter\" },\n ),\n }),\n {\n title: \"Parameters\",\n description:\n \"Field name and operator that will be used as parameters when using the query in pages. Only indexed fields can be used as parameters.\",\n default: [],\n examples: [\n [{ field: \"$slug\", op: \"eq\" }],\n [{ field: \"category\", op: \"eq\" }],\n [{ field: \"tags\", op: \"containsAny\" }],\n [{ field: \"author\", op: \"eq\" }],\n [{ field: \"title\", op: \"contains\" }],\n ],\n },\n ),\n ),\n },\n {\n examples: [\n {\n id: \"latest-posts\",\n label: \"Latest posts\",\n datasourceId: \"blog_posts\",\n limit: 5,\n sortDirection: \"desc\",\n sortField: \"$publicationDate\",\n },\n {\n id: \"posts-by-category\",\n label: \"Posts by category\",\n datasourceId: \"blog_posts\",\n limit: 10,\n sortDirection: \"desc\",\n sortField: \"$publicationDate\",\n parameters: [{ field: \"category\", op: \"eq\" }],\n },\n {\n id: \"posts-by-tag\",\n label: \"Posts by tag\",\n datasourceId: \"blog_posts\",\n limit: 10,\n sortDirection: \"desc\",\n sortField: \"$publicationDate\",\n parameters: [{ field: \"tags\", op: \"containsAny\" }],\n },\n {\n id: \"author-posts\",\n label: \"Author posts\",\n datasourceId: \"blog_posts\",\n limit: 10,\n sortDirection: \"desc\",\n sortField: \"$publicationDate\",\n parameters: [{ field: \"author\", op: \"eq\" }],\n },\n {\n id: \"search-posts\",\n label: \"Search posts\",\n datasourceId: \"blog_posts\",\n limit: 10,\n sortDirection: \"desc\",\n sortField: \"$publicationDate\",\n parameters: [{ field: \"title\", op: \"contains\" }],\n },\n ],\n },\n);\n\nexport type Query = Static<typeof querySchema>;\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
StringEnum
|
|
5
|
+
} from "./chunk-GDYCCB3B.js";
|
|
6
|
+
|
|
7
|
+
// src/shared/theme.ts
|
|
8
|
+
import { Type } from "@sinclair/typebox";
|
|
9
|
+
import chroma from "chroma-js";
|
|
10
|
+
import { colorPalette } from "@upstart.gg/style-system/colors";
|
|
11
|
+
var fontStacks = [
|
|
12
|
+
{ value: "system-ui", label: "System UI" },
|
|
13
|
+
{ value: "transitional", label: "Transitional" },
|
|
14
|
+
{ value: "old-style", label: "Old style" },
|
|
15
|
+
{ value: "humanist", label: "Humanist" },
|
|
16
|
+
{ value: "geometric-humanist", label: "Geometric humanist" },
|
|
17
|
+
{ value: "classical-humanist", label: "Classical humanist" },
|
|
18
|
+
{ value: "neo-grotesque", label: "Neo-grotesque" },
|
|
19
|
+
{ value: "monospace-slab-serif", label: "Monospace slab serif" },
|
|
20
|
+
{ value: "monospace-code", label: "Monospace code" },
|
|
21
|
+
{ value: "industrial", label: "Industrial" },
|
|
22
|
+
{ value: "rounded-sans", label: "Rounded sans" },
|
|
23
|
+
{ value: "slab-serif", label: "Slab serif" },
|
|
24
|
+
{ value: "antique", label: "Antique" },
|
|
25
|
+
{ value: "didone", label: "Didone" },
|
|
26
|
+
{ value: "handwritten", label: "Handwritten" }
|
|
27
|
+
];
|
|
28
|
+
var headingFont = Type.Object(
|
|
29
|
+
{
|
|
30
|
+
type: StringEnum(["stack", "theme", "google"], {
|
|
31
|
+
title: "Type of font",
|
|
32
|
+
description: "The type of font. Can be a font stack, a theme font or a Google font"
|
|
33
|
+
}),
|
|
34
|
+
family: Type.String({
|
|
35
|
+
title: "Family",
|
|
36
|
+
description: "The font family (eg. the name of the font)"
|
|
37
|
+
})
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
title: "Headings font",
|
|
41
|
+
description: "Used for titles and headings"
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
var bodyFont = Type.Object(
|
|
45
|
+
{
|
|
46
|
+
type: StringEnum(["stack", "theme", "google"], {
|
|
47
|
+
title: "Type of font",
|
|
48
|
+
description: "The type of font. Can be a font stack, a theme font or a Google font"
|
|
49
|
+
}),
|
|
50
|
+
family: Type.String({
|
|
51
|
+
title: "Family",
|
|
52
|
+
description: "The font family (eg. the name of the font)"
|
|
53
|
+
})
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
title: "Body font",
|
|
57
|
+
description: "Used for paragraphs and body text"
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
var themeSchema = Type.Object({
|
|
61
|
+
id: Type.String({ title: "ID", description: "The unique identifier of the theme" }),
|
|
62
|
+
name: Type.String({ title: "Name", description: "The name of the theme" }),
|
|
63
|
+
description: Type.String({ title: "Description", description: "The description of the theme" }),
|
|
64
|
+
tags: Type.Array(Type.String({ title: "Tag" }), { title: "Tags", description: "The tags of the theme" }),
|
|
65
|
+
browserColorScheme: StringEnum(["light", "dark"], {
|
|
66
|
+
title: "Browser scheme",
|
|
67
|
+
description: "Color of browser-provided UI. Either 'light' or 'dark'"
|
|
68
|
+
}),
|
|
69
|
+
// Define the theme colors
|
|
70
|
+
colors: Type.Object(
|
|
71
|
+
{
|
|
72
|
+
primary: Type.String({
|
|
73
|
+
title: "Primary",
|
|
74
|
+
description: "The brand's primary color.",
|
|
75
|
+
"ai:instructions": "Use oklch() css notation.",
|
|
76
|
+
examples: ["oklch(0.62 0.241 354.308)"]
|
|
77
|
+
}),
|
|
78
|
+
secondary: Type.String({
|
|
79
|
+
title: "Secondary",
|
|
80
|
+
description: "The brand's second most used color",
|
|
81
|
+
"ai:instructions": "Use oklch() css notation.",
|
|
82
|
+
examples: ["oklch(0.65 0.22 185)"]
|
|
83
|
+
}),
|
|
84
|
+
accent: Type.String({
|
|
85
|
+
title: "Accent",
|
|
86
|
+
description: "The brand's least used color",
|
|
87
|
+
"ai:instructions": "Use oklch() css notation.",
|
|
88
|
+
examples: ["oklch(0.82 0.18 85)"]
|
|
89
|
+
}),
|
|
90
|
+
neutral: Type.String({
|
|
91
|
+
title: "Neutral",
|
|
92
|
+
description: "The base neutral color",
|
|
93
|
+
"ai:instructions": "Use oklch() css notation.",
|
|
94
|
+
examples: ["oklch(0.38 0.08 280)"]
|
|
95
|
+
}),
|
|
96
|
+
base100: Type.String({
|
|
97
|
+
title: "Base",
|
|
98
|
+
description: "Base surface color of page, used for blank backgrounds. Should be white or near-white for light color-schemes, and black or near-black for dark color-schemes.",
|
|
99
|
+
"ai:instructions": "Use oklab() css notation.",
|
|
100
|
+
examples: ["oklch(0.99 0.008 92)"]
|
|
101
|
+
}),
|
|
102
|
+
base200: Type.String({
|
|
103
|
+
title: "Base 2",
|
|
104
|
+
description: "Should be darker than base 100 but still light for light color-schemes, and lighter but still dark for dark color-schemes.",
|
|
105
|
+
"ai:instructions": "Use oklab() css notation.",
|
|
106
|
+
examples: ["oklch(0.97 0.01 85)"]
|
|
107
|
+
}),
|
|
108
|
+
base300: Type.String({
|
|
109
|
+
title: "Base 3",
|
|
110
|
+
description: "3rd base color, should be darker than base 200 for light color-schemes, and lighter than base 200 for dark color-schemes.",
|
|
111
|
+
"ai:instructions": "Use oklab() css notation.",
|
|
112
|
+
examples: ["oklch(0.95 0.02 80)"]
|
|
113
|
+
})
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
title: "Theme base colors",
|
|
117
|
+
description: "The base colors of the theme. Each theme must declare all these colors"
|
|
118
|
+
}
|
|
119
|
+
),
|
|
120
|
+
// Define the theme typography
|
|
121
|
+
typography: Type.Object({
|
|
122
|
+
base: Type.Number({
|
|
123
|
+
title: "Base font size",
|
|
124
|
+
description: "The base font size in pixels. It is safe to keep it as is.",
|
|
125
|
+
"ai:instructions": "A safe value is 16."
|
|
126
|
+
}),
|
|
127
|
+
heading: headingFont,
|
|
128
|
+
body: bodyFont,
|
|
129
|
+
alternatives: Type.Array(
|
|
130
|
+
Type.Object({
|
|
131
|
+
body: bodyFont,
|
|
132
|
+
heading: headingFont
|
|
133
|
+
}),
|
|
134
|
+
{
|
|
135
|
+
title: "Alternative fonts",
|
|
136
|
+
description: "Alternative fonts that can be suggested to the user. Takes the same shape"
|
|
137
|
+
}
|
|
138
|
+
)
|
|
139
|
+
})
|
|
140
|
+
});
|
|
141
|
+
var themesArray = Type.Array(themeSchema);
|
|
142
|
+
var defaultTheme = {
|
|
143
|
+
id: "_default_",
|
|
144
|
+
name: "default",
|
|
145
|
+
description: "Default Upstart theme",
|
|
146
|
+
tags: ["gradient", "vibrant", "modern", "creative", "dynamic", "artistic", "bold"],
|
|
147
|
+
browserColorScheme: "light",
|
|
148
|
+
colors: {
|
|
149
|
+
base100: "#FFF",
|
|
150
|
+
// Warm white background
|
|
151
|
+
base200: "#F5F0E1",
|
|
152
|
+
// Soft cream in hex
|
|
153
|
+
base300: "#F0E3D2",
|
|
154
|
+
// Light warm gray in hex
|
|
155
|
+
primary: "#FF6F20",
|
|
156
|
+
// A vibrant orange in hex
|
|
157
|
+
secondary: "#00BFFF",
|
|
158
|
+
// A bright cyan in hex
|
|
159
|
+
accent: "#A4D65E",
|
|
160
|
+
// A lively lime green in hex
|
|
161
|
+
neutral: "#B0B0B0"
|
|
162
|
+
// A balanced gray in hex
|
|
163
|
+
},
|
|
164
|
+
typography: {
|
|
165
|
+
base: 16,
|
|
166
|
+
heading: { type: "stack", family: "system-ui" },
|
|
167
|
+
body: { type: "stack", family: "system-ui" },
|
|
168
|
+
alternatives: []
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
function isDefaultTheme(theme) {
|
|
172
|
+
return theme.id === defaultTheme.id;
|
|
173
|
+
}
|
|
174
|
+
function processTheme(theme) {
|
|
175
|
+
return {
|
|
176
|
+
...theme,
|
|
177
|
+
typography: {
|
|
178
|
+
...theme.typography,
|
|
179
|
+
base: 16
|
|
180
|
+
// override any base size
|
|
181
|
+
},
|
|
182
|
+
colors: Object.entries(theme.colors).reduce(
|
|
183
|
+
(acc, [key, value]) => {
|
|
184
|
+
const fixedColor = fixOklchColor(value);
|
|
185
|
+
return {
|
|
186
|
+
// biome-ignore lint/performance/noAccumulatingSpread: <explanation>
|
|
187
|
+
...acc,
|
|
188
|
+
[key]: fixedColor
|
|
189
|
+
};
|
|
190
|
+
},
|
|
191
|
+
{}
|
|
192
|
+
)
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
function fixOklchColor(color) {
|
|
196
|
+
const valid = chroma.valid(color);
|
|
197
|
+
if (valid) {
|
|
198
|
+
return color;
|
|
199
|
+
}
|
|
200
|
+
const oklchRegex = /ok(lch|lab)\(([^)]+)\)/;
|
|
201
|
+
if (oklchRegex.test(color)) {
|
|
202
|
+
const withoutComma = color.replace(/,/g, " ");
|
|
203
|
+
if (chroma.valid(withoutComma)) {
|
|
204
|
+
return withoutComma;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (/^([a-z]+)-([0-9]+)$/.test(color)) {
|
|
208
|
+
const [name, shade] = color.split("-");
|
|
209
|
+
const twColor = colorPalette[name]?.[shade];
|
|
210
|
+
if (twColor) {
|
|
211
|
+
return twColor;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return color;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export {
|
|
218
|
+
fontStacks,
|
|
219
|
+
themeSchema,
|
|
220
|
+
themesArray,
|
|
221
|
+
defaultTheme,
|
|
222
|
+
isDefaultTheme,
|
|
223
|
+
processTheme
|
|
224
|
+
};
|
|
225
|
+
//# sourceMappingURL=chunk-FD7YYFRI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/theme.ts"],"sourcesContent":["import { Type, type Static } from \"@sinclair/typebox\";\nimport chroma from \"chroma-js\";\nimport { colorPalette } from \"@upstart.gg/style-system/colors\";\nimport { StringEnum } from \"./utils/string-enum\";\nimport { toLLMSchema } from \"./utils/llm\";\n\nexport const fontStacks = [\n { value: \"system-ui\", label: \"System UI\" },\n { value: \"transitional\", label: \"Transitional\" },\n { value: \"old-style\", label: \"Old style\" },\n { value: \"humanist\", label: \"Humanist\" },\n { value: \"geometric-humanist\", label: \"Geometric humanist\" },\n { value: \"classical-humanist\", label: \"Classical humanist\" },\n { value: \"neo-grotesque\", label: \"Neo-grotesque\" },\n { value: \"monospace-slab-serif\", label: \"Monospace slab serif\" },\n { value: \"monospace-code\", label: \"Monospace code\" },\n { value: \"industrial\", label: \"Industrial\" },\n { value: \"rounded-sans\", label: \"Rounded sans\" },\n { value: \"slab-serif\", label: \"Slab serif\" },\n { value: \"antique\", label: \"Antique\" },\n { value: \"didone\", label: \"Didone\" },\n { value: \"handwritten\", label: \"Handwritten\" },\n];\n\nconst headingFont = Type.Object(\n {\n type: StringEnum([\"stack\", \"theme\", \"google\"], {\n title: \"Type of font\",\n description: \"The type of font. Can be a font stack, a theme font or a Google font\",\n }),\n family: Type.String({\n title: \"Family\",\n description: \"The font family (eg. the name of the font)\",\n }),\n },\n {\n title: \"Headings font\",\n description: \"Used for titles and headings\",\n },\n);\n\nconst bodyFont = Type.Object(\n {\n type: StringEnum([\"stack\", \"theme\", \"google\"], {\n title: \"Type of font\",\n description: \"The type of font. Can be a font stack, a theme font or a Google font\",\n }),\n family: Type.String({\n title: \"Family\",\n description: \"The font family (eg. the name of the font)\",\n }),\n },\n {\n title: \"Body font\",\n description: \"Used for paragraphs and body text\",\n },\n);\n\nexport const themeSchema = Type.Object({\n id: Type.String({ title: \"ID\", description: \"The unique identifier of the theme\" }),\n name: Type.String({ title: \"Name\", description: \"The name of the theme\" }),\n description: Type.String({ title: \"Description\", description: \"The description of the theme\" }),\n tags: Type.Array(Type.String({ title: \"Tag\" }), { title: \"Tags\", description: \"The tags of the theme\" }),\n browserColorScheme: StringEnum([\"light\", \"dark\"], {\n title: \"Browser scheme\",\n description: \"Color of browser-provided UI. Either 'light' or 'dark'\",\n }),\n // Define the theme colors\n colors: Type.Object(\n {\n primary: Type.String({\n title: \"Primary\",\n description: \"The brand's primary color.\",\n \"ai:instructions\": \"Use oklch() css notation.\",\n examples: [\"oklch(0.62 0.241 354.308)\"],\n }),\n secondary: Type.String({\n title: \"Secondary\",\n description: \"The brand's second most used color\",\n \"ai:instructions\": \"Use oklch() css notation.\",\n examples: [\"oklch(0.65 0.22 185)\"],\n }),\n accent: Type.String({\n title: \"Accent\",\n description: \"The brand's least used color\",\n \"ai:instructions\": \"Use oklch() css notation.\",\n examples: [\"oklch(0.82 0.18 85)\"],\n }),\n neutral: Type.String({\n title: \"Neutral\",\n description: \"The base neutral color\",\n \"ai:instructions\": \"Use oklch() css notation.\",\n examples: [\"oklch(0.38 0.08 280)\"],\n }),\n base100: Type.String({\n title: \"Base\",\n description:\n \"Base surface color of page, used for blank backgrounds. Should be white or near-white for light color-schemes, and black or near-black for dark color-schemes.\",\n \"ai:instructions\": \"Use oklab() css notation.\",\n examples: [\"oklch(0.99 0.008 92)\"],\n }),\n base200: Type.String({\n title: \"Base 2\",\n description:\n \"Should be darker than base 100 but still light for light color-schemes, and lighter but still dark for dark color-schemes.\",\n \"ai:instructions\": \"Use oklab() css notation.\",\n examples: [\"oklch(0.97 0.01 85)\"],\n }),\n base300: Type.String({\n title: \"Base 3\",\n description:\n \"3rd base color, should be darker than base 200 for light color-schemes, and lighter than base 200 for dark color-schemes.\",\n \"ai:instructions\": \"Use oklab() css notation.\",\n examples: [\"oklch(0.95 0.02 80)\"],\n }),\n },\n {\n title: \"Theme base colors\",\n description: \"The base colors of the theme. Each theme must declare all these colors\",\n },\n ),\n\n // Define the theme typography\n typography: Type.Object({\n base: Type.Number({\n title: \"Base font size\",\n description: \"The base font size in pixels. It is safe to keep it as is.\",\n \"ai:instructions\": \"A safe value is 16.\",\n }),\n heading: headingFont,\n body: bodyFont,\n alternatives: Type.Array(\n Type.Object({\n body: bodyFont,\n heading: headingFont,\n }),\n {\n title: \"Alternative fonts\",\n description: \"Alternative fonts that can be suggested to the user. Takes the same shape\",\n },\n ),\n }),\n});\n\nexport type Theme = Static<typeof themeSchema>;\nexport const themesArray = Type.Array(themeSchema);\n\nexport type ThemesArray = Static<typeof themesArray>;\nexport type FontType = Theme[\"typography\"][\"body\"];\n\nexport const defaultTheme: Theme = {\n id: \"_default_\",\n name: \"default\",\n description: \"Default Upstart theme\",\n tags: [\"gradient\", \"vibrant\", \"modern\", \"creative\", \"dynamic\", \"artistic\", \"bold\"],\n browserColorScheme: \"light\",\n colors: {\n base100: \"#FFF\", // Warm white background\n base200: \"#F5F0E1\", // Soft cream in hex\n base300: \"#F0E3D2\", // Light warm gray in hex\n primary: \"#FF6F20\", // A vibrant orange in hex\n secondary: \"#00BFFF\", // A bright cyan in hex\n accent: \"#A4D65E\", // A lively lime green in hex\n neutral: \"#B0B0B0\", // A balanced gray in hex\n },\n typography: {\n base: 16,\n heading: { type: \"stack\", family: \"system-ui\" },\n body: { type: \"stack\", family: \"system-ui\" },\n alternatives: [],\n },\n};\n\nexport function isDefaultTheme(theme: Theme): boolean {\n return theme.id === defaultTheme.id;\n}\n\n/**\n * Process a theme, eventually fixing colors and translating them to oklch notations\n * @param theme\n */\nexport function processTheme(theme: Theme): Theme {\n return {\n ...theme,\n typography: {\n ...theme.typography,\n base: 16, // override any base size\n },\n colors: Object.entries(theme.colors).reduce(\n (acc, [key, value]) => {\n const fixedColor = fixOklchColor(value);\n return {\n // biome-ignore lint/performance/noAccumulatingSpread: <explanation>\n ...acc,\n [key]: fixedColor,\n };\n },\n {} as typeof theme.colors,\n ),\n };\n}\n\nfunction fixOklchColor(color: string) {\n const valid = chroma.valid(color);\n if (valid) {\n return color;\n }\n // Try to fix the color if it looks like oklch\n const oklchRegex = /ok(lch|lab)\\(([^)]+)\\)/;\n if (oklchRegex.test(color)) {\n const withoutComma = color.replace(/,/g, \" \");\n if (chroma.valid(withoutComma)) {\n return withoutComma;\n }\n }\n // tailwind colors\n if (/^([a-z]+)-([0-9]+)$/.test(color)) {\n const [name, shade] = color.split(\"-\");\n // @ts-ignore\n const twColor = colorPalette[name]?.[shade] as string | undefined;\n if (twColor) {\n return twColor;\n }\n }\n return color;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,31 +1,29 @@
|
|
|
1
1
|
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
-
array,
|
|
5
4
|
defineProps
|
|
6
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-VTCHJT4O.js";
|
|
7
6
|
import {
|
|
8
|
-
|
|
9
|
-
} from "./chunk-
|
|
7
|
+
fontSize
|
|
8
|
+
} from "./chunk-2U5U3CCJ.js";
|
|
10
9
|
import {
|
|
11
|
-
|
|
12
|
-
} from "./chunk-
|
|
10
|
+
image
|
|
11
|
+
} from "./chunk-DRQKKPTX.js";
|
|
13
12
|
import {
|
|
14
|
-
|
|
15
|
-
} from "./chunk-
|
|
13
|
+
urlOrPageId
|
|
14
|
+
} from "./chunk-SQXZNGQF.js";
|
|
16
15
|
import {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
} from "./chunk-UQF52PWK.js";
|
|
16
|
+
cssLength
|
|
17
|
+
} from "./chunk-OJ6KL7FU.js";
|
|
20
18
|
import {
|
|
21
|
-
|
|
22
|
-
} from "./chunk-
|
|
19
|
+
colorPreset
|
|
20
|
+
} from "./chunk-IEMCCHM4.js";
|
|
23
21
|
import {
|
|
24
|
-
|
|
25
|
-
} from "./chunk-
|
|
22
|
+
toLLMSchema
|
|
23
|
+
} from "./chunk-MO6CRLQA.js";
|
|
26
24
|
import {
|
|
27
|
-
|
|
28
|
-
} from "./chunk-
|
|
25
|
+
defineBrickManifest
|
|
26
|
+
} from "./chunk-J45LSQT6.js";
|
|
29
27
|
|
|
30
28
|
// src/shared/bricks/manifests/footer.manifest.ts
|
|
31
29
|
import { Type } from "@sinclair/typebox";
|
|
@@ -49,13 +47,13 @@ var manifest = defineBrickManifest({
|
|
|
49
47
|
props: defineProps(
|
|
50
48
|
{
|
|
51
49
|
colorPreset: Type.Optional(
|
|
52
|
-
|
|
50
|
+
colorPreset({
|
|
53
51
|
title: "Color preset",
|
|
54
52
|
default: { color: "neutral-600" }
|
|
55
53
|
})
|
|
56
54
|
),
|
|
57
55
|
padding: Type.Optional(
|
|
58
|
-
|
|
56
|
+
cssLength({
|
|
59
57
|
default: "4rem",
|
|
60
58
|
description: "Padding inside the footer.",
|
|
61
59
|
title: "Padding",
|
|
@@ -64,17 +62,17 @@ var manifest = defineBrickManifest({
|
|
|
64
62
|
"ui:styleId": "styles:padding"
|
|
65
63
|
})
|
|
66
64
|
),
|
|
67
|
-
logo: Type.Optional(
|
|
68
|
-
fontSize: Type.Optional(
|
|
65
|
+
logo: Type.Optional(image({ title: "Logo", "ui:no-object-options": true, "ui:no-alt-text": true })),
|
|
66
|
+
fontSize: Type.Optional(fontSize({ default: "text-sm", "ui:no-extra-large-sizes": true })),
|
|
69
67
|
// rows:Type.Optional(number("Rows", { default: 1, "ui:field": "slider", minimum: 1, maximum: 5 })),
|
|
70
|
-
linksSections:
|
|
68
|
+
linksSections: Type.Array(
|
|
71
69
|
Type.Object(
|
|
72
70
|
{
|
|
73
|
-
sectionTitle:
|
|
74
|
-
links:
|
|
71
|
+
sectionTitle: Type.String({ title: "Title" }),
|
|
72
|
+
links: Type.Array(
|
|
75
73
|
Type.Object({
|
|
76
|
-
title:
|
|
77
|
-
url:
|
|
74
|
+
title: Type.String({ title: "Title" }),
|
|
75
|
+
url: urlOrPageId()
|
|
78
76
|
}),
|
|
79
77
|
{
|
|
80
78
|
title: "Links"
|
|
@@ -113,6 +111,7 @@ var manifest = defineBrickManifest({
|
|
|
113
111
|
addable: true
|
|
114
112
|
// Enable add button
|
|
115
113
|
},
|
|
114
|
+
default: [],
|
|
116
115
|
description: "List of Links Sections. Each section contains a title and a list of links.",
|
|
117
116
|
metadata: {
|
|
118
117
|
category: "content"
|
|
@@ -535,4 +534,4 @@ export {
|
|
|
535
534
|
footerSchemaPropsLLM,
|
|
536
535
|
examples
|
|
537
536
|
};
|
|
538
|
-
//# sourceMappingURL=chunk-
|
|
537
|
+
//# sourceMappingURL=chunk-FHA4DFIM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/bricks/manifests/footer.manifest.ts"],"sourcesContent":["import { type Static, Type } from \"@sinclair/typebox\";\nimport { VscLayoutPanelOff } from \"react-icons/vsc\";\nimport { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps } from \"../props/helpers\";\nimport { image } from \"../props/image\";\nimport { colorPreset } from \"../props/color-preset\";\nimport { urlOrPageId } from \"../props/string\";\nimport { fontSize } from \"../props/text\";\nimport type { BrickProps } from \"../props/types\";\nimport { toLLMSchema } from \"~/shared/utils/llm\";\nimport { cssLength } from \"../props/css-length\";\nimport type { BrickExample } from \"./_types\";\n\nexport const manifest = defineBrickManifest({\n type: \"footer\",\n name: \"Footer\",\n category: \"layout\",\n description: \"A footer with links and an optional logo.\",\n aiInstructions: \"This brick should be used on most sites/pages. It must be placed on its own section.\",\n icon: VscLayoutPanelOff,\n staticClasses: \"flex-1\",\n isGlobalBrick: true,\n hideInLibrary: true,\n resizable: false,\n movable: false,\n defaultWidth: {\n desktop: \"100%\",\n mobile: \"100%\",\n },\n props: defineProps(\n {\n colorPreset: Type.Optional(\n colorPreset({\n title: \"Color preset\",\n default: { color: \"neutral-600\" },\n }),\n ),\n padding: Type.Optional(\n cssLength({\n default: \"4rem\",\n description: \"Padding inside the footer.\",\n title: \"Padding\",\n \"ui:responsive\": true,\n \"ui:placeholder\": \"Not specified\",\n \"ui:styleId\": \"styles:padding\",\n }),\n ),\n logo: Type.Optional(image({ title: \"Logo\", \"ui:no-object-options\": true, \"ui:no-alt-text\": true })),\n fontSize: Type.Optional(fontSize({ default: \"text-sm\", \"ui:no-extra-large-sizes\": true })),\n // rows:Type.Optional(number(\"Rows\", { default: 1, \"ui:field\": \"slider\", minimum: 1, maximum: 5 })),\n linksSections: Type.Array(\n Type.Object(\n {\n sectionTitle: Type.String({ title: \"Title\" }),\n links: Type.Array(\n Type.Object({\n title: Type.String({ title: \"Title\" }),\n url: urlOrPageId(),\n }),\n {\n title: \"Links\",\n },\n ),\n },\n {\n examples: [\n {\n sectionTitle: \"Quick Links\",\n links: [\n { title: \"Home\", url: \"/\" },\n { title: \"About\", url: \"page-id-of-about-page\" },\n { title: \"Our Services\", url: \"page-id-of-services-page\" },\n ],\n },\n {\n sectionTitle: \"Legal\",\n links: [\n { title: \"Privacy Policy\", url: \"page-id-of-privacy-policy\" },\n { title: \"Terms of Service\", url: \"page-id-of-terms\" },\n { title: \"Our law firm\", url: \"https://my.external.lawfirm.com\" },\n ],\n },\n ],\n },\n ),\n {\n title: \"Links\",\n \"ui:displayField\": \"sectionTitle\",\n \"ui:options\": {\n orderable: true, // Enable drag & drop reordering\n removable: true, // Enable delete button\n addable: true, // Enable add button\n },\n default: [],\n description: \"List of Links Sections. Each section contains a title and a list of links.\",\n metadata: {\n category: \"content\",\n },\n },\n ),\n },\n { noGrow: true, noAlignSelf: true },\n ),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const footerSchemaPropsLLM = toLLMSchema(manifest.props);\n\nexport type FooterProps = Static<Manifest[\"props\"]>;\n\nexport const examples: BrickExample<Manifest>[] = [\n {\n description: \"Simple footer with logo on the left\",\n type: \"footer\",\n props: {\n // backgroundColor: \"#f8f9fa\",\n logo: {\n src: \"https://via.placeholder.com/120x40.png?text=Logo\",\n alt: \"Company logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Quick Links\",\n links: [\n { title: \"Home\", url: \"/\" },\n { title: \"About\", url: \"/about\" },\n { title: \"Contact\", url: \"/contact\" },\n ],\n },\n {\n sectionTitle: \"Legal\",\n links: [\n { title: \"Privacy Policy\", url: \"/privacy\" },\n { title: \"Terms of Service\", url: \"/terms\" },\n ],\n },\n ],\n },\n },\n {\n description: \"Corporate footer with centered logo\",\n type: \"footer\",\n props: {\n // backgroundColor: \"#2c3e50\",\n logo: {\n src: \"https://via.placeholder.com/150x50.png?text=Corporate\",\n alt: \"Corporate logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Products\",\n links: [\n { title: \"Software Solutions\", url: \"/products/software\" },\n { title: \"Consulting\", url: \"/products/consulting\" },\n { title: \"Support\", url: \"/products/support\" },\n { title: \"Training\", url: \"/products/training\" },\n ],\n },\n {\n sectionTitle: \"Company\",\n links: [\n { title: \"About Us\", url: \"/about\" },\n { title: \"Careers\", url: \"/careers\" },\n { title: \"News\", url: \"/news\" },\n { title: \"Investors\", url: \"/investors\" },\n ],\n },\n {\n sectionTitle: \"Resources\",\n links: [\n { title: \"Documentation\", url: \"/docs\" },\n { title: \"API Reference\", url: \"/api\" },\n { title: \"Community\", url: \"/community\" },\n { title: \"Blog\", url: \"/blog\" },\n ],\n },\n ],\n },\n },\n {\n description: \"E-commerce footer with logo on the right\",\n type: \"footer\",\n props: {\n // backgroundColor: \"#ffffff\",\n logo: {\n src: \"https://via.placeholder.com/140x45.png?text=Shop\",\n alt: \"Shop logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Shop\",\n links: [\n { title: \"All Products\", url: \"/products\" },\n { title: \"New Arrivals\", url: \"/new\" },\n { title: \"Sale\", url: \"/sale\" },\n { title: \"Gift Cards\", url: \"/gift-cards\" },\n ],\n },\n {\n sectionTitle: \"Customer Service\",\n links: [\n { title: \"Help Center\", url: \"/help\" },\n { title: \"Returns\", url: \"/returns\" },\n { title: \"Shipping Info\", url: \"/shipping\" },\n { title: \"Size Guide\", url: \"/size-guide\" },\n ],\n },\n {\n sectionTitle: \"Account\",\n links: [\n { title: \"My Account\", url: \"/account\" },\n { title: \"Order History\", url: \"/orders\" },\n { title: \"Wishlist\", url: \"/wishlist\" },\n ],\n },\n ],\n },\n },\n {\n description: \"Large organization footer with multiple rows\",\n type: \"footer\",\n props: {\n // backgroundColor: \"#1a1a1a\",\n logo: {\n src: \"https://via.placeholder.com/180x60.png?text=Enterprise\",\n alt: \"Enterprise logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Products & Services\",\n links: [\n { title: \"Cloud Solutions\", url: \"/cloud\" },\n { title: \"Data Analytics\", url: \"/analytics\" },\n { title: \"AI & Machine Learning\", url: \"/ai\" },\n { title: \"Cybersecurity\", url: \"/security\" },\n { title: \"DevOps Tools\", url: \"/devops\" },\n { title: \"IoT Platform\", url: \"/iot\" },\n ],\n },\n {\n sectionTitle: \"Industries\",\n links: [\n { title: \"Healthcare\", url: \"/industries/healthcare\" },\n { title: \"Finance\", url: \"/industries/finance\" },\n { title: \"Retail\", url: \"/industries/retail\" },\n { title: \"Manufacturing\", url: \"/industries/manufacturing\" },\n { title: \"Education\", url: \"/industries/education\" },\n { title: \"Government\", url: \"/industries/government\" },\n ],\n },\n {\n sectionTitle: \"Resources\",\n links: [\n { title: \"Documentation\", url: \"/docs\" },\n { title: \"API Reference\", url: \"/api\" },\n { title: \"Tutorials\", url: \"/tutorials\" },\n { title: \"Webinars\", url: \"/webinars\" },\n { title: \"White Papers\", url: \"/whitepapers\" },\n { title: \"Case Studies\", url: \"/case-studies\" },\n ],\n },\n {\n sectionTitle: \"Support & Community\",\n links: [\n { title: \"Help Center\", url: \"/help\" },\n { title: \"Community Forum\", url: \"/forum\" },\n { title: \"Contact Support\", url: \"/support\" },\n { title: \"Service Status\", url: \"/status\" },\n { title: \"Partner Portal\", url: \"/partners\" },\n { title: \"Developer Hub\", url: \"/developers\" },\n ],\n },\n ],\n },\n },\n {\n description: \"Startup footer with minimal links and left logo\",\n type: \"footer\",\n props: {\n // backgroundColor: \"#f5f5f5\",\n logo: {\n src: \"https://via.placeholder.com/100x35.png?text=Startup\",\n alt: \"Startup logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Company\",\n links: [\n { title: \"About\", url: \"/about\" },\n { title: \"Team\", url: \"/team\" },\n { title: \"Jobs\", url: \"/jobs\" },\n ],\n },\n {\n sectionTitle: \"Product\",\n links: [\n { title: \"Features\", url: \"/features\" },\n { title: \"Pricing\", url: \"/pricing\" },\n { title: \"Demo\", url: \"/demo\" },\n ],\n },\n {\n sectionTitle: \"Support\",\n links: [\n { title: \"Help\", url: \"/help\" },\n { title: \"Contact\", url: \"/contact\" },\n ],\n },\n ],\n },\n },\n {\n description: \"Agency footer with centered logo and creative sections\",\n type: \"footer\",\n props: {\n // backgroundColor: \"#6366f1\",\n logo: {\n src: \"https://via.placeholder.com/130x45.png?text=Agency\",\n alt: \"Creative agency logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Services\",\n links: [\n { title: \"Web Design\", url: \"/services/web-design\" },\n { title: \"Branding\", url: \"/services/branding\" },\n { title: \"Digital Marketing\", url: \"/services/marketing\" },\n { title: \"Photography\", url: \"/services/photography\" },\n ],\n },\n {\n sectionTitle: \"Portfolio\",\n links: [\n { title: \"Recent Work\", url: \"/portfolio\" },\n { title: \"Case Studies\", url: \"/case-studies\" },\n { title: \"Client Reviews\", url: \"/reviews\" },\n ],\n },\n {\n sectionTitle: \"Connect\",\n links: [\n { title: \"Contact Us\", url: \"/contact\" },\n { title: \"Get Quote\", url: \"/quote\" },\n { title: \"Newsletter\", url: \"/newsletter\" },\n ],\n },\n ],\n },\n },\n {\n description: \"SaaS platform footer with comprehensive links\",\n type: \"footer\",\n props: {\n logo: {\n src: \"https://via.placeholder.com/160x50.png?text=SaaS+Platform\",\n alt: \"SaaS platform logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Platform\",\n links: [\n { title: \"Dashboard\", url: \"/dashboard\" },\n { title: \"Analytics\", url: \"/analytics\" },\n { title: \"Integrations\", url: \"/integrations\" },\n { title: \"API\", url: \"/api\" },\n ],\n },\n {\n sectionTitle: \"Solutions\",\n links: [\n { title: \"For Startups\", url: \"/solutions/startups\" },\n { title: \"For Enterprise\", url: \"/solutions/enterprise\" },\n { title: \"For Agencies\", url: \"/solutions/agencies\" },\n { title: \"For Developers\", url: \"/solutions/developers\" },\n ],\n },\n {\n sectionTitle: \"Resources\",\n links: [\n { title: \"Blog\", url: \"/blog\" },\n { title: \"Documentation\", url: \"/docs\" },\n { title: \"Help Center\", url: \"/help\" },\n { title: \"Community\", url: \"/community\" },\n ],\n },\n {\n sectionTitle: \"Company\",\n links: [\n { title: \"About Us\", url: \"/about\" },\n { title: \"Careers\", url: \"/careers\" },\n { title: \"Press\", url: \"/press\" },\n { title: \"Legal\", url: \"/legal\" },\n ],\n },\n ],\n },\n },\n {\n description: \"Non-profit footer with mission-focused links\",\n type: \"footer\",\n props: {\n logo: {\n src: \"https://via.placeholder.com/140x50.png?text=Non+Profit\",\n alt: \"Non-profit organization logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Our Work\",\n links: [\n { title: \"Programs\", url: \"/programs\" },\n { title: \"Impact\", url: \"/impact\" },\n { title: \"Success Stories\", url: \"/stories\" },\n { title: \"Research\", url: \"/research\" },\n ],\n },\n {\n sectionTitle: \"Get Involved\",\n links: [\n { title: \"Donate\", url: \"/donate\" },\n { title: \"Volunteer\", url: \"/volunteer\" },\n { title: \"Events\", url: \"/events\" },\n { title: \"Partner with Us\", url: \"/partnerships\" },\n ],\n },\n {\n sectionTitle: \"About\",\n links: [\n { title: \"Our Mission\", url: \"/mission\" },\n { title: \"Leadership\", url: \"/leadership\" },\n { title: \"Annual Reports\", url: \"/reports\" },\n { title: \"Contact\", url: \"/contact\" },\n ],\n },\n ],\n },\n },\n {\n description: \"Tech blog footer with right-aligned logo\",\n type: \"footer\",\n props: {\n logo: {\n src: \"https://via.placeholder.com/120x40.png?text=Tech+Blog\",\n alt: \"Tech blog logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Categories\",\n links: [\n { title: \"Web Development\", url: \"/category/web-dev\" },\n { title: \"AI & ML\", url: \"/category/ai-ml\" },\n { title: \"DevOps\", url: \"/category/devops\" },\n { title: \"Mobile\", url: \"/category/mobile\" },\n ],\n },\n {\n sectionTitle: \"Popular\",\n links: [\n { title: \"Latest Posts\", url: \"/latest\" },\n { title: \"Trending\", url: \"/trending\" },\n { title: \"Best of 2024\", url: \"/best-2024\" },\n { title: \"Tutorials\", url: \"/tutorials\" },\n ],\n },\n {\n sectionTitle: \"Community\",\n links: [\n { title: \"Newsletter\", url: \"/newsletter\" },\n { title: \"Discord\", url: \"/discord\" },\n { title: \"Contributors\", url: \"/contributors\" },\n { title: \"Write for Us\", url: \"/write\" },\n ],\n },\n ],\n },\n },\n {\n description: \"Restaurant footer with location and menu links\",\n type: \"footer\",\n props: {\n logo: {\n src: \"https://via.placeholder.com/150x60.png?text=Restaurant\",\n alt: \"Restaurant logo\",\n },\n linksSections: [\n {\n sectionTitle: \"Menu\",\n links: [\n { title: \"Appetizers\", url: \"/menu/appetizers\" },\n { title: \"Main Courses\", url: \"/menu/mains\" },\n { title: \"Desserts\", url: \"/menu/desserts\" },\n { title: \"Beverages\", url: \"/menu/drinks\" },\n ],\n },\n {\n sectionTitle: \"Services\",\n links: [\n { title: \"Reservations\", url: \"/reservations\" },\n { title: \"Catering\", url: \"/catering\" },\n { title: \"Private Events\", url: \"/events\" },\n { title: \"Gift Cards\", url: \"/gift-cards\" },\n ],\n },\n {\n sectionTitle: \"Info\",\n links: [\n { title: \"About Us\", url: \"/about\" },\n { title: \"Location\", url: \"/location\" },\n { title: \"Hours\", url: \"/hours\" },\n { title: \"Contact\", url: \"/contact\" },\n ],\n },\n ],\n },\n },\n];\n"],"mappings":"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","names":[]}
|