@upstart.gg/sdk 0.0.136 → 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.map +1 -1
- package/dist/shared/ai/schemas.js +24 -29
- package/dist/shared/ai/schemas.js.map +1 -1
- package/dist/shared/ai/types.d.ts +13 -61
- 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 +83 -85
- package/dist/shared/attributes.d.ts.map +1 -1
- package/dist/shared/attributes.js +20 -23
- 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/accordion.manifest.d.ts +2 -2
- 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.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 +2 -2
- 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 +3 -6
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +3 -3
- 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 +2 -2
- 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 +1 -1
- 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 +1 -1
- 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 +2 -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 +2 -2
- 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 +1 -1
- 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 +5 -5
- 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 +1 -1
- 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 +2 -2
- 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 +1 -1
- 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 +4 -4
- 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 +4 -4
- 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 +2 -2
- 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 +2 -6
- 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 +7 -7
- 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 +1 -1
- 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 -154
- package/dist/shared/bricks.d.ts.map +1 -1
- package/dist/shared/bricks.js +47 -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-LTIJI7Y3.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-KIDICX3Y.js → chunk-6AE7UD73.js} +27 -33
- package/dist/shared/chunk-6AE7UD73.js.map +1 -0
- package/dist/shared/{chunk-CRS7QCPZ.js → chunk-7U5WPHXB.js} +65 -27
- 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-H5JM2M2T.js → chunk-BZTWZC77.js} +46 -31
- package/dist/shared/chunk-BZTWZC77.js.map +1 -0
- package/dist/shared/{chunk-LLNPH3XR.js → chunk-DCM4732T.js} +6 -8
- 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-36PLZKMW.js → chunk-FHA4DFIM.js} +26 -27
- package/dist/shared/chunk-FHA4DFIM.js.map +1 -0
- package/dist/shared/{chunk-L6C7HUSA.js → chunk-FUUSAMN3.js} +21 -24
- 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-YWOTQWIQ.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-EVLRH6VG.js → chunk-J45LSQT6.js} +2 -2
- package/dist/shared/chunk-J45LSQT6.js.map +1 -0
- package/dist/shared/{chunk-DFAFDBYZ.js → chunk-JF52BBFD.js} +27 -28
- package/dist/shared/chunk-JF52BBFD.js.map +1 -0
- package/dist/shared/{chunk-ZR6R6Z6O.js → chunk-JLDAS3VE.js} +34 -32
- 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-KILJYJFE.js → chunk-JW7MQAU4.js} +19 -19
- 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-N3BEBLWF.js → chunk-KQH6V22E.js} +34 -34
- package/dist/shared/{chunk-GFAQWQER.js → chunk-LGDDJJHK.js} +33 -35
- package/dist/shared/chunk-LGDDJJHK.js.map +1 -0
- package/dist/shared/{chunk-FOGAVJC2.js → chunk-LGGPCCCY.js} +3 -3
- package/dist/shared/{chunk-4MNWMEMM.js → chunk-LPAQ47C6.js} +23 -23
- 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-GQTZPN5D.js → chunk-MYOLWTB2.js} +29 -32
- package/dist/shared/chunk-MYOLWTB2.js.map +1 -0
- package/dist/shared/{chunk-KEM5N6GJ.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-LCJ2VFPM.js → chunk-PF75LW33.js} +24 -27
- package/dist/shared/chunk-PF75LW33.js.map +1 -0
- package/dist/shared/{chunk-U5ZECCJM.js → chunk-QEJGPYTB.js} +32 -34
- package/dist/shared/chunk-QEJGPYTB.js.map +1 -0
- package/dist/shared/{chunk-2VDR4ZYY.js → chunk-SK2O7GFC.js} +17 -18
- package/dist/shared/chunk-SK2O7GFC.js.map +1 -0
- package/dist/shared/{chunk-N3ZTQD5I.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-UXTASZ23.js → chunk-T6C3NG2L.js} +66 -63
- package/dist/shared/chunk-T6C3NG2L.js.map +1 -0
- package/dist/shared/{chunk-ZRRAK5NS.js → chunk-TBT2PTGB.js} +41 -33
- package/dist/shared/chunk-TBT2PTGB.js.map +1 -0
- package/dist/shared/{chunk-2IHKVMKW.js → chunk-U4KZUX37.js} +18 -19
- package/dist/shared/chunk-U4KZUX37.js.map +1 -0
- package/dist/shared/{chunk-FQDR2BBZ.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-GIGFNQBO.js → chunk-W2RFDII5.js} +3 -3
- 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-42OUNI7C.js → chunk-XK2CERPB.js} +27 -29
- 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-F247VKAE.js → chunk-ZVJNRKT4.js} +18 -20
- package/dist/shared/chunk-ZVJNRKT4.js.map +1 -0
- package/dist/shared/context.d.ts +402 -23
- 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 +3 -3
- package/dist/shared/datarecords/types.d.ts.map +1 -1
- package/dist/shared/datarecords/types.js +3 -2
- 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/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/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 +74 -191
- 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 +4 -326
- 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 +24 -29
- package/src/shared/ai/types.ts +22 -88
- package/src/shared/attributes.ts +53 -51
- package/src/shared/brick-manifest.ts +5 -6
- package/src/shared/bricks/manifests/accordion.manifest.ts +11 -11
- package/src/shared/bricks/manifests/all-props.ts +165 -0
- package/src/shared/bricks/manifests/box.manifest.ts +19 -21
- package/src/shared/bricks/manifests/button.manifest.ts +54 -16
- package/src/shared/bricks/manifests/card.manifest.ts +32 -18
- package/src/shared/bricks/manifests/carousel.manifest.ts +11 -13
- package/src/shared/bricks/manifests/footer.manifest.ts +16 -15
- package/src/shared/bricks/manifests/form.manifest.ts +14 -15
- package/src/shared/bricks/manifests/hero.manifest.ts +18 -20
- package/src/shared/bricks/manifests/icon.manifest.ts +9 -10
- package/src/shared/bricks/manifests/image.manifest.ts +22 -19
- package/src/shared/bricks/manifests/images-gallery.manifest.ts +13 -15
- package/src/shared/bricks/manifests/map.manifest.ts +10 -10
- package/src/shared/bricks/manifests/navbar.manifest.ts +20 -21
- package/src/shared/bricks/manifests/sidebar.manifest.ts +9 -9
- package/src/shared/bricks/manifests/social-links.manifest.ts +17 -19
- package/src/shared/bricks/manifests/table.manifest.ts +15 -15
- package/src/shared/bricks/manifests/tabs.manifest.ts +14 -16
- package/src/shared/bricks/manifests/testimonials.manifest.ts +21 -20
- package/src/shared/bricks/manifests/text.manifest.ts +16 -19
- package/src/shared/bricks/manifests/timeline.manifest.ts +29 -24
- package/src/shared/bricks/manifests/video.manifest.ts +9 -10
- 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 +5 -18
- 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 +156 -1020
- package/src/shared/context.ts +24 -24
- package/src/shared/datarecords/external/airtable/types.ts +12 -11
- package/src/shared/datarecords/types.ts +2 -34
- 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/images.ts +12 -18
- package/src/shared/page.ts +9 -1
- package/src/shared/sitemap.ts +3 -70
- 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 +70 -313
- package/dist/shared/chunk-2IHKVMKW.js.map +0 -1
- package/dist/shared/chunk-2RK3CPYJ.js.map +0 -1
- package/dist/shared/chunk-2VDR4ZYY.js.map +0 -1
- package/dist/shared/chunk-36PLZKMW.js.map +0 -1
- package/dist/shared/chunk-42OUNI7C.js.map +0 -1
- package/dist/shared/chunk-4MNWMEMM.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-BPBKHEQ5.js.map +0 -1
- package/dist/shared/chunk-CRS7QCPZ.js.map +0 -1
- package/dist/shared/chunk-CSF2WQX2.js.map +0 -1
- package/dist/shared/chunk-DFAFDBYZ.js.map +0 -1
- package/dist/shared/chunk-DV3G7X34.js +0 -244
- package/dist/shared/chunk-DV3G7X34.js.map +0 -1
- package/dist/shared/chunk-EVLRH6VG.js.map +0 -1
- package/dist/shared/chunk-F22LDHEO.js.map +0 -1
- package/dist/shared/chunk-F247VKAE.js.map +0 -1
- package/dist/shared/chunk-FQDR2BBZ.js.map +0 -1
- package/dist/shared/chunk-GFAQWQER.js.map +0 -1
- package/dist/shared/chunk-GQTZPN5D.js.map +0 -1
- package/dist/shared/chunk-H5JM2M2T.js.map +0 -1
- package/dist/shared/chunk-HTUSL2U7.js +0 -260
- package/dist/shared/chunk-HTUSL2U7.js.map +0 -1
- package/dist/shared/chunk-IQIISR22.js +0 -794
- package/dist/shared/chunk-IQIISR22.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-KEM5N6GJ.js.map +0 -1
- package/dist/shared/chunk-KIDICX3Y.js.map +0 -1
- package/dist/shared/chunk-KILJYJFE.js.map +0 -1
- package/dist/shared/chunk-L6C7HUSA.js.map +0 -1
- package/dist/shared/chunk-LCJ2VFPM.js.map +0 -1
- package/dist/shared/chunk-LLNPH3XR.js.map +0 -1
- package/dist/shared/chunk-LTIJI7Y3.js.map +0 -1
- package/dist/shared/chunk-MFNHFN2B.js +0 -103
- package/dist/shared/chunk-MFNHFN2B.js.map +0 -1
- package/dist/shared/chunk-N3ZTQD5I.js.map +0 -1
- package/dist/shared/chunk-NTLAKMMQ.js.map +0 -1
- package/dist/shared/chunk-Q4NPPLEU.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-TFGGYU6Y.js.map +0 -1
- package/dist/shared/chunk-TNMNMYOB.js.map +0 -1
- package/dist/shared/chunk-TNTFKLCR.js +0 -1225
- package/dist/shared/chunk-TNTFKLCR.js.map +0 -1
- package/dist/shared/chunk-U5ZECCJM.js.map +0 -1
- package/dist/shared/chunk-UXTASZ23.js.map +0 -1
- package/dist/shared/chunk-W6MRYRGJ.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-Y74LZNND.js.map +0 -1
- package/dist/shared/chunk-YWOTQWIQ.js.map +0 -1
- package/dist/shared/chunk-ZLYIRH2B.js.map +0 -1
- package/dist/shared/chunk-ZR6R6Z6O.js.map +0 -1
- package/dist/shared/chunk-ZRRAK5NS.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/schema-registry.js.map +0 -1
- 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/tests/schema-registry.test.ts +0 -12
- 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/{chunk-N3BEBLWF.js.map → chunk-KQH6V22E.js.map} +0 -0
- /package/dist/shared/{chunk-FOGAVJC2.js.map → chunk-LGGPCCCY.js.map} +0 -0
- /package/dist/shared/{chunk-GIGFNQBO.js.map → chunk-W2RFDII5.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/bricks/manifests/accordion.manifest.ts"],"sourcesContent":["import { Type } from \"@sinclair/typebox\";\nimport { TfiLayoutAccordionSeparated } from \"react-icons/tfi\";\nimport { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { StringEnum } from \"~/shared/utils/string-enum\";\nimport { boolean } from \"../props/boolean\";\nimport { defineProps } from \"../props/helpers\";\nimport { colorPresetRef } from \"../props/color-preset\";\nimport { fontSizeRef, textContentRef } from \"../props/text\";\nimport type { BrickProps } from \"../props/types\";\nimport { loopRef } from \"../props/dynamic\";\nimport { cssLengthRef } from \"../props/css-length\";\nimport type { BrickExample } from \"./_types\";\n\nexport const manifest = defineBrickManifest({\n type: \"accordion\",\n name: \"Accordion\",\n description: \"An accordion/collapse element for expandable content\",\n aiInstructions: `Use this accordion component for organizing collapsible content sections that help save space and improve content accessibility.\n\nWHEN TO USE:\n- FAQ sections with questions and detailed answers\n- Product feature lists with expandable descriptions \n- Documentation sections with organized topics\n- Step-by-step processes or tutorials\n- Menu categories (restaurant, services, pricing tiers)\n- Legal documents with different sections\n- Course curricula with lesson breakdowns\n- Support categories with help topics\n\nSTYLING GUIDELINES:\n- colorPreset: Use \"primary-500\" for branded sections, \"secondary-400\" for features, \"neutral-200\" for documentation, \"accent-500\" for highlights\n- fontSize: \"text-sm\" for compact content, \"text-base\" for standard, \"text-lg\" for emphasis\n- rounding: \"rounded-none\" for sharp/corporate, \"rounded-md\" for standard, \"rounded-lg\" for friendly, \"rounded-xl\"/\"rounded-2xl\"/\"rounded-3xl\" for modern\n- gap: \"1px\" for minimal separation, \"0.5rem\" for comfortable, \"1rem\" for spacious layouts\n- restrictOneOpen: true for FAQs/single focus, false for reference materials/feature lists\n\nCONTENT ORGANIZATION:\n- Use clear, descriptive titles that preview the content\n- Keep expandable content concise but comprehensive\n- Support HTML formatting in content (lists, links, line breaks)\n- Set defaultOpen: true for most important/frequently accessed items\n\nDYNAMIC CONTENT:\n- Support template variables in titles: \"{{category.name}} - {{category.count}} items\"\n- Dynamic content: \"Learn about {{product.features}} and {{product.benefits}}\"\n- Loop over data: Display product categories, team departments, or service areas\n\nAVOID:\n- Too many items (>10) without organization\n- Very long titles that don't fit on mobile\n- Empty or placeholder content in collapsed sections\n- Mixing different content types in the same accordion`,\n icon: TfiLayoutAccordionSeparated,\n\n defaultWidth: { desktop: \"450px\", mobile: \"100%\" },\n\n props: defineProps({\n items: Type.Array(\n Type.Object({\n title: textContentRef({\n title: \"Title\",\n default: \"My title\",\n disableSizing: true,\n showInSettings: true,\n }),\n content: textContentRef({ title: \"Content\", default: \"Expandable content goes here\" }),\n defaultOpen: Type.Optional(boolean(\"Open by default\", false)),\n }),\n {\n title: \"Accordion items\",\n metadata: {\n category: \"content\",\n },\n },\n ),\n fontSize: Type.Optional(fontSizeRef({ default: \"inherit\" })),\n restrictOneOpen: boolean(\"Restrict to one open item\", false, {\n description:\n \"Restrict to one open item at a time. If false, multiple items can be open simultaneously.\",\n }),\n gap: Type.Optional(\n cssLengthRef({\n title: \"Gap\",\n description: \"The gap between the accordion items.\",\n default: \"1px\",\n \"ui:styleId\": \"styles:gap\",\n }),\n ),\n rounding: Type.Optional(\n StringEnum(\n [\n \"rounded-auto\",\n \"rounded-none\",\n \"rounded-sm\",\n \"rounded-md\",\n \"rounded-lg\",\n \"rounded-xl\",\n \"rounded-2xl\",\n \"rounded-3xl\",\n ],\n {\n title: \"Corner rounding\",\n enumNames: [\"Auto\", \"None\", \"Small\", \"Medium\", \"Large\", \"Extra large\", \"2xl\", \"3xl\"],\n \"ui:placeholder\": \"Not specified\",\n \"ui:field\": \"enum\",\n \"ui:display\": \"select\",\n \"ui:styleId\": \"styles:rounding\",\n default: \"rounded-auto\",\n },\n ),\n ),\n colorPreset: Type.Optional(\n colorPresetRef({\n title: \"Color\",\n default: { color: \"bg-primary-500 text-primary-500-content\" },\n }),\n ),\n loop: Type.Optional(loopRef()),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: BrickExample<Manifest>[] = [\n // FAQ SECTIONS\n {\n description: \"FAQ section with single open restriction - Classic use case for customer support\",\n type: \"accordion\",\n props: {\n restrictOneOpen: true,\n colorPreset: { color: \"primary-500\" },\n rounding: \"rounded-md\",\n gap: \"0.5rem\",\n items: [\n {\n title: \"What is included in the basic plan?\",\n content:\n \"The basic plan includes access to all core features, up to 10 projects, 5GB storage, email support, and basic analytics. You can upgrade at any time to access advanced features like API access, priority support, and unlimited projects.\",\n defaultOpen: true,\n },\n {\n title: \"How do I cancel my subscription?\",\n content:\n \"You can cancel your subscription at any time from your account settings. Go to Billing > Manage Subscription > Cancel. Your access will continue until the end of your current billing period, and you won't be charged for the next cycle.\",\n },\n {\n title: \"Is there a free trial available?\",\n content:\n \"Yes! We offer a 14-day free trial with full access to all premium features. No credit card required to start. You can upgrade to a paid plan anytime during or after the trial period.\",\n },\n {\n title: \"What payment methods do you accept?\",\n content:\n \"We accept all major credit cards (Visa, MasterCard, American Express), PayPal, and bank transfers for annual subscriptions. All payments are processed securely through our payment partners.\",\n },\n ],\n },\n },\n\n // PRODUCT FEATURES\n {\n description: \"Product features with multiple open panels - Good for showcasing software capabilities\",\n type: \"accordion\",\n props: {\n restrictOneOpen: false,\n colorPreset: { color: \"secondary-400\" },\n rounding: \"rounded-lg\",\n gap: \"0.5rem\",\n fontSize: \"text-base\",\n items: [\n {\n title: \"Advanced Analytics Dashboard\",\n content:\n \"Get detailed insights into your business performance with real-time analytics, custom reports, and data visualization tools. Track key metrics, monitor trends, and make data-driven decisions.\",\n defaultOpen: true,\n },\n {\n title: \"Team Collaboration Tools\",\n content:\n \"Work seamlessly with your team using built-in collaboration features including shared workspaces, real-time editing, comments, and task management. Perfect for remote and hybrid teams.\",\n defaultOpen: true,\n },\n {\n title: \"API Integration & Automation\",\n content:\n \"Connect with over 1000+ popular tools and services through our robust API. Set up automated workflows, sync data across platforms, and streamline your business processes.\",\n },\n {\n title: \"Enterprise Security\",\n content:\n \"Bank-level security with end-to-end encryption, SSO integration, two-factor authentication, and compliance with SOC 2, GDPR, and HIPAA standards.\",\n },\n ],\n },\n },\n\n // DOCUMENTATION & GUIDES\n {\n description: \"Documentation sections with neutral colors - Perfect for help centers and knowledge bases\",\n type: \"accordion\",\n props: {\n restrictOneOpen: false,\n colorPreset: { color: \"neutral-200\" },\n fontSize: \"text-lg\",\n rounding: \"rounded-md\",\n gap: \"2px\",\n items: [\n {\n title: \"Getting Started\",\n content:\n \"Learn the basics of our platform with step-by-step tutorials, setup guides, and quick start examples. Perfect for new users who want to get up and running quickly.\",\n },\n {\n title: \"API Reference\",\n content:\n \"Complete API documentation with endpoints, parameters, response examples, and SDKs for popular programming languages including JavaScript, Python, PHP, and Ruby.\",\n },\n {\n title: \"Advanced Configuration\",\n content:\n \"Deep dive into advanced features, custom configurations, webhooks, and enterprise-level integrations. Includes code samples and best practices.\",\n },\n ],\n },\n },\n\n // MENU & CATALOG SECTIONS\n {\n description:\n \"Restaurant menu sections with accent colors - Great for organizing menu items or service categories\",\n type: \"accordion\",\n props: {\n restrictOneOpen: true,\n colorPreset: { color: \"accent-500\" },\n rounding: \"rounded-xl\",\n gap: \"1rem\",\n items: [\n {\n title: \"Appetizers & Starters\",\n content:\n \"Bruschetta with Fresh Tomatoes - $8.99<br/>Calamari Rings with Marinara - $12.99<br/>Spinach & Artichoke Dip - $10.99<br/>Buffalo Wings (6 pieces) - $9.99\",\n defaultOpen: true,\n },\n {\n title: \"Main Courses\",\n content:\n \"Grilled Salmon with Herbs - $18.99<br/>Chicken Parmesan with Pasta - $16.99<br/>Ribeye Steak (12oz) - $24.99<br/>Vegetarian Lasagna - $14.99\",\n },\n {\n title: \"Desserts\",\n content:\n \"Tiramisu - $7.99<br/>Chocolate Lava Cake - $8.99<br/>New York Cheesecake - $6.99<br/>Gelato (3 scoops) - $5.99\",\n },\n ],\n },\n },\n\n // COURSE & EDUCATIONAL CONTENT\n {\n description:\n \"Course curriculum with primary colors - Excellent for educational content and training programs\",\n type: \"accordion\",\n props: {\n restrictOneOpen: false,\n colorPreset: { color: \"primary-600\" },\n rounding: \"rounded-sm\",\n gap: \"1px\",\n fontSize: \"text-base\",\n items: [\n {\n title: \"Week 1: Introduction to Web Development\",\n content:\n \"Learn the fundamentals of HTML, CSS, and basic JavaScript. Set up your development environment and create your first web page. Includes hands-on exercises and project templates.\",\n },\n {\n title: \"Week 2: Responsive Design & CSS Framework\",\n content:\n \"Master responsive web design principles, CSS Grid, Flexbox, and popular frameworks like Bootstrap and Tailwind CSS. Build mobile-first designs that work on all devices.\",\n },\n {\n title: \"Week 3: JavaScript Fundamentals\",\n content:\n \"Deep dive into JavaScript programming including variables, functions, objects, arrays, DOM manipulation, and event handling. Build interactive web applications.\",\n },\n {\n title: \"Week 4: Modern JavaScript & APIs\",\n content:\n \"Learn ES6+ features, async/await, fetch API, and how to work with external APIs. Create dynamic applications that interact with real-world data sources.\",\n },\n ],\n },\n },\n\n // SUPPORT & HELP SECTIONS\n {\n description: \"Support categories with sharp corners - Modern corporate style for help centers\",\n type: \"accordion\",\n props: {\n restrictOneOpen: false,\n colorPreset: { color: \"primary-300\" },\n rounding: \"rounded-none\",\n gap: \"0px\",\n fontSize: \"text-base\",\n items: [\n {\n title: \"Account & Billing\",\n content:\n \"Get help with account settings, password reset, billing questions, subscription management, and payment issues. Average response time: 2 hours during business hours.\",\n },\n {\n title: \"Technical Support\",\n content:\n \"Troubleshoot technical issues, API problems, integration questions, and performance concerns. Includes access to our knowledge base and video tutorials.\",\n },\n {\n title: \"Sales & Partnerships\",\n content:\n \"Inquiries about enterprise solutions, custom pricing, partnership opportunities, and bulk discounts. Schedule a call with our sales team for personalized assistance.\",\n },\n {\n title: \"Feature Requests\",\n content:\n \"Submit ideas for new features, improvements, and integrations. Our product team reviews all suggestions and provides updates on development roadmap.\",\n },\n ],\n },\n },\n\n // PRICING & COMPARISON\n {\n description: \"Product pricing comparison with multiple defaults open - Perfect for plan comparisons\",\n type: \"accordion\",\n props: {\n restrictOneOpen: false,\n colorPreset: { color: \"secondary-500\" },\n rounding: \"rounded-lg\",\n gap: \"0.5rem\",\n fontSize: \"text-base\",\n items: [\n {\n title: \"Basic Plan - $9/month\",\n content:\n \"✓ Up to 5 projects<br/>✓ 10GB storage<br/>✓ Email support<br/>✓ Basic analytics<br/>✓ Mobile app access<br/>✗ API access<br/>✗ Custom integrations\",\n defaultOpen: true,\n },\n {\n title: \"Pro Plan - $29/month\",\n content:\n \"✓ Unlimited projects<br/>✓ 100GB storage<br/>✓ Priority support<br/>✓ Advanced analytics<br/>✓ API access<br/>✓ Custom integrations<br/>✓ Team collaboration\",\n defaultOpen: true,\n },\n {\n title: \"Enterprise Plan - Custom pricing\",\n content:\n \"✓ Everything in Pro<br/>✓ Unlimited storage<br/>✓ Dedicated support<br/>✓ White-label options<br/>✓ SSO integration<br/>✓ Custom contracts<br/>✓ On-premise deployment\",\n },\n ],\n },\n },\n\n // DYNAMIC CONTENT EXAMPLES\n {\n description: \"Dynamic team member accordion using template variables - Shows data-driven content\",\n type: \"accordion\",\n props: {\n restrictOneOpen: true,\n colorPreset: { color: \"accent-400\" },\n rounding: \"rounded-lg\",\n gap: \"0.5rem\",\n items: [\n {\n title: \"Meet {{team.leader.name}} - {{team.leader.role}}\",\n content:\n \"{{team.leader.bio}} <br/><br/>Experience: {{team.leader.experience}} years<br/>Email: {{team.leader.email}}<br/>Location: {{team.leader.location}}\",\n defaultOpen: true,\n },\n {\n title: \"{{team.designer.name}} - {{team.designer.role}}\",\n content:\n \"{{team.designer.bio}} <br/><br/>Specializes in: {{team.designer.specialties}}<br/>Portfolio: <a href='{{team.designer.portfolio}}'>View Work</a>\",\n },\n {\n title: \"{{team.developer.name}} - {{team.developer.role}}\",\n content:\n \"{{team.developer.bio}} <br/><br/>Technologies: {{team.developer.skills}}<br/>GitHub: <a href='{{team.developer.github}}'>@{{team.developer.username}}</a>\",\n },\n ],\n },\n },\n\n // SPECIAL STYLING VARIATIONS\n {\n description: \"Legal documents with dark theme and large gaps - Professional legal content presentation\",\n type: \"accordion\",\n props: {\n restrictOneOpen: true,\n colorPreset: { color: \"neutral-800\" },\n rounding: \"rounded-lg\",\n gap: \"1.5rem\",\n fontSize: \"text-sm\",\n items: [\n {\n title: \"Terms of Service\",\n content:\n \"By accessing and using this website, you accept and agree to be bound by the terms and provision of this agreement. These terms apply to all visitors, users, and others who access or use the service.\",\n },\n {\n title: \"Privacy Policy\",\n content:\n \"We collect information you provide directly to us, such as when you create an account, make a purchase, or contact us. We use this information to provide, maintain, and improve our services.\",\n },\n {\n title: \"Cookie Policy\",\n content:\n \"We use cookies and similar tracking technologies to track activity on our service and hold certain information. You can instruct your browser to refuse all cookies or indicate when a cookie is being sent.\",\n },\n ],\n },\n },\n\n {\n description: \"Ultra-rounded modern design with 3xl rounding - Contemporary aesthetic for creative brands\",\n type: \"accordion\",\n props: {\n restrictOneOpen: true,\n colorPreset: { color: \"accent-300\" },\n rounding: \"rounded-3xl\",\n gap: \"1.5rem\",\n fontSize: \"text-lg\",\n items: [\n {\n title: \"Design Philosophy\",\n content:\n \"We believe in creating digital experiences that are both beautiful and functional. Our approach combines user-centered design with cutting-edge technology to deliver exceptional results.\",\n },\n {\n title: \"Our Process\",\n content:\n \"Discovery → Strategy → Design → Development → Testing → Launch. Each phase includes client collaboration, iterative feedback, and quality assurance to ensure optimal outcomes.\",\n },\n {\n title: \"Why Choose Us\",\n content:\n \"15+ years experience, 200+ successful projects, award-winning designs, and a commitment to excellence. We're not just service providers - we're strategic partners in your success.\",\n },\n ],\n },\n },\n];\n"],"mappings":"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","names":[]}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
// src/shared/utils/typed-ref.ts
|
|
5
|
-
import { Type } from "@sinclair/typebox";
|
|
6
|
-
function typedRef(id, options = {}) {
|
|
7
|
-
return Type.Ref(id, { ...options });
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export {
|
|
11
|
-
typedRef
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=chunk-A2QPY54H.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/utils/typed-ref.ts"],"sourcesContent":["import { type SchemaOptions, TSchema, Type, TypeRegistry } from \"@sinclair/typebox\";\nimport type { alignItems, alignSelf, justifyContent } from \"../bricks/props/align\";\nimport type { background, backgroundColor } from \"../bricks/props/background\";\nimport type { border, rounding } from \"../bricks/props/border\";\nimport type { borderColor, color } from \"../bricks/props/color\";\nimport type { hidden } from \"../bricks/props/common\";\nimport type { cssLength } from \"../bricks/props/css-length\";\nimport type { shadow, textShadow } from \"../bricks/props/effects\";\nimport type { fontSize, fontSizeXL, textContent } from \"../bricks/props/text\";\nimport type { icon, urlOrPageId } from \"../bricks/props/string\";\nimport type { colorPreset } from \"../bricks/props/color-preset\";\nimport type { image } from \"../bricks/props/image\";\nimport type { direction } from \"../bricks/props/direction\";\nimport type { loop, queryUse } from \"../bricks/props/dynamic\";\nimport type { tags } from \"../bricks/props/tags\";\n\nexport interface SchemaTypeMap {\n \"styles:background\": ReturnType<typeof background>;\n \"styles:backgroundColor\": ReturnType<typeof backgroundColor>;\n \"styles:justifyContent\": ReturnType<typeof justifyContent>;\n \"styles:alignItems\": ReturnType<typeof alignItems>;\n \"styles:alignSelf\": ReturnType<typeof alignSelf>;\n \"styles:fontSize\": ReturnType<typeof fontSize>;\n \"styles:fontSizeXL\": ReturnType<typeof fontSizeXL>;\n \"styles:hidden\": ReturnType<typeof hidden>;\n \"styles:border\": ReturnType<typeof border>;\n \"styles:color\": ReturnType<typeof color>;\n \"styles:borderColor\": ReturnType<typeof borderColor>;\n \"styles:direction\": ReturnType<typeof direction>;\n \"styles:shadow\": ReturnType<typeof shadow>;\n \"styles:textShadow\": ReturnType<typeof textShadow>;\n \"styles:cssLength\": ReturnType<typeof cssLength>;\n \"styles:rounding\": ReturnType<typeof rounding>;\n \"presets:color\": ReturnType<typeof colorPreset>;\n \"assets:image\": ReturnType<typeof image>;\n \"content:text\": ReturnType<typeof textContent>;\n \"content:urlOrPageId\": ReturnType<typeof urlOrPageId>;\n \"content:loop\": ReturnType<typeof loop>;\n \"content:queryUse\": ReturnType<typeof queryUse>;\n \"assets:icon\": ReturnType<typeof icon>;\n \"content:tags\": ReturnType<typeof tags>;\n\n // Add other schema mappings here\n}\n\n// Create a typed ref helper\nexport function typedRef<K extends keyof SchemaTypeMap>(\n id: K,\n options: SchemaOptions = {},\n): SchemaTypeMap[K] {\n // Force the type to be a TypeBox type\n return Type.Ref(id, { ...options }) as unknown as SchemaTypeMap[K];\n}\n"],"mappings":";;;;AAAA,SAAsC,YAA0B;AA8CzD,SAAS,SACd,IACA,UAAyB,CAAC,GACR;AAElB,SAAO,KAAK,IAAI,IAAI,EAAE,GAAG,QAAQ,CAAC;AACpC;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/bricks/props/css-length.ts"],"sourcesContent":["import { type Static, Type, type StringOptions } from \"@sinclair/typebox\";\nimport { typedRef } from \"~/shared/utils/typed-ref\";\n\nexport const cssUnits = [\"px\", \"%\", \"em\", \"rem\", \"vh\", \"vw\", \"dvh\", \"dvw\", \"rlh\", \"lh\", \"cqh\", \"cqw\"];\n\nexport function cssLength(options: StringOptions = {}) {\n return Type.String({\n title: \"Length\",\n // $id: \"styles:cssLength\",\n description: `A CSS length value. Must be a number with a unit (e.g. \"10px\", \"50%\"). The unit can be one of the following: ${cssUnits?.join(\", \")}.`,\n default: options.default,\n \"ui:field\": \"css-length\",\n \"ui:css-units\": cssUnits,\n examples: [\"100px\", \"50%\", \"2em\", \"1.5rem\"],\n ...options,\n });\n}\n\nexport type CssLength = Static<ReturnType<typeof cssLength>>;\n\nexport function cssLengthRef(options: StringOptions = {}) {\n return typedRef(\"styles:cssLength\", options);\n}\n\nexport function isCssLength(value: string | number | undefined): boolean {\n if (typeof value !== \"string\") {\n return false;\n }\n // Check if the value is something like a number + a css unit (e.g., \"20px\", \"50%\")\n const cssLengthPattern = new RegExp(`^-?\\\\d+(?:\\\\.\\\\d+)?\\\\s*(${cssUnits.join(\"|\")})$`);\n return cssLengthPattern.test(value);\n}\n"],"mappings":";;;;;;;AAAA,SAAsB,YAAgC;AAG/C,IAAM,WAAW,CAAC,MAAM,KAAK,MAAM,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,MAAM,OAAO,KAAK;AAE7F,SAAS,UAAU,UAAyB,CAAC,GAAG;AACrD,SAAO,KAAK,OAAO;AAAA,IACjB,OAAO;AAAA;AAAA,IAEP,aAAa,gHAAgH,UAAU,KAAK,IAAI,CAAC;AAAA,IACjJ,SAAS,QAAQ;AAAA,IACjB,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,UAAU,CAAC,SAAS,OAAO,OAAO,QAAQ;AAAA,IAC1C,GAAG;AAAA,EACL,CAAC;AACH;AAIO,SAAS,aAAa,UAAyB,CAAC,GAAG;AACxD,SAAO,SAAS,oBAAoB,OAAO;AAC7C;AAEO,SAAS,YAAY,OAA6C;AACvE,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA,EACT;AAEA,QAAM,mBAAmB,IAAI,OAAO,2BAA2B,SAAS,KAAK,GAAG,CAAC,IAAI;AACrF,SAAO,iBAAiB,KAAK,KAAK;AACpC;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/bricks/manifests/button.manifest.ts"],"sourcesContent":["import { Type } from \"@sinclair/typebox\";\nimport { RxButton } from \"react-icons/rx\";\nimport { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps } from \"../props/helpers\";\nimport { string, urlOrPageIdRef } from \"../props/string\";\nimport type { BrickProps } from \"../props/types\";\nimport { borderRef, roundingRef } from \"../props/border\";\nimport { fontSizeRef } from \"../props/text\";\nimport { colorPresetRef } from \"../props/color-preset\";\nimport type { BrickExample } from \"./_types\";\n\nexport const manifest = defineBrickManifest({\n type: \"button\",\n name: \"Button\",\n category: \"basic\",\n description: \"A button\",\n aiInstructions: `Use this button component for navigation and call-to-action elements throughout the site.\n\nWHEN TO USE:\n- Navigation links (Learn More, About Us, Contact)\n- Call-to-action buttons (Sign Up, Get Started, Buy Now)\n- External links (Download, Visit Website, Social Media)\n- Internal page navigation (Go to Services, View Portfolio)\n\nSTYLING GUIDELINES:\n- colorPreset: Use \"primary-500\" for main CTAs, \"secondary-500\" for secondary actions, \"neutral-500\" for low-priority actions, \"accent-500\" for highlight actions\n- fontSize: \"text-sm\" for compact buttons, \"text-base\" for standard, \"text-lg\" for emphasis, \"text-xl\" for hero buttons\n- rounding: \"rounded-none\" for sharp/modern, \"rounded-md\" for standard, \"rounded-lg\" for friendly, \"rounded-full\" for pills\n- link: Use full URLs for external (https://example.com), relative paths for internal (/about), or page IDs for site pages (about-us)\n\nDYNAMIC CONTENT:\n- Support template variables: \"Buy {{product.name}}\" or \"Contact {{employee.name}}\"\n- Link to dynamic pages: \"/products/{{product.id}}\" or \"/team/{{employee.slug}}\"\n\nAVOID:\n- Using in forms (forms have dedicated submit buttons)\n- Empty or unclear labels (use descriptive action words)\n- Mixing multiple high-emphasis colors on same page`,\n resizable: \"horizontal\",\n icon: RxButton,\n minWidth: {\n desktop: 120,\n mobile: 120,\n },\n defaultWidth: {\n mobile: \"100%\",\n },\n props: defineProps(\n {\n colorPreset: Type.Optional(\n colorPresetRef({\n default: { color: \"primary-500\" },\n title: \"Color\",\n \"ui:default-gradient-direction\": \"bg-gradient-to-b\",\n }),\n ),\n label: string(\"Label\", { default: \"My button\", metadata: { category: \"content\" } }),\n fontSize: Type.Optional(\n fontSizeRef({\n title: \"Font size\",\n description: \"The font size of the button text.\",\n default: \"text-base\",\n \"ui:responsive\": \"desktop\",\n \"ui:no-extra-large-sizes\": true,\n }),\n ),\n rounding: Type.Optional(\n roundingRef({\n default: \"rounded-md\",\n }),\n ),\n border: Type.Optional(borderRef({ default: { width: \"border-0\" }, \"ui:responsive\": \"desktop\" })),\n link: urlOrPageIdRef({\n title: \"Link\",\n \"ui:placeholder\": \"https://example.com\",\n metadata: { category: \"content\" },\n }),\n },\n { noGrow: true },\n ),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: BrickExample<Manifest>[] = [\n // BASIC BUTTON TYPES\n {\n description: \"Primary call-to-action button - Use for main actions users should take\",\n type: \"button\",\n props: {\n label: \"Get Started\",\n link: \"/signup\",\n colorPreset: { color: \"primary-500\" },\n fontSize: \"text-base\",\n rounding: \"rounded-md\",\n },\n },\n {\n description: \"Secondary button - Use for supporting actions or alternatives\",\n type: \"button\",\n props: {\n label: \"Learn More\",\n link: \"/about\",\n colorPreset: { color: \"secondary-500\" },\n fontSize: \"text-base\",\n rounding: \"rounded-md\",\n },\n },\n {\n description: \"Neutral button - Use for low-priority actions or navigation\",\n type: \"button\",\n props: {\n label: \"View Details\",\n link: \"/details\",\n colorPreset: { color: \"neutral-500\" },\n fontSize: \"text-sm\",\n rounding: \"rounded-md\",\n },\n },\n {\n description: \"Accent button - Use for special promotions or highlighted actions\",\n type: \"button\",\n props: {\n label: \"Special Offer\",\n link: \"/promo\",\n colorPreset: { color: \"accent-500\" },\n fontSize: \"text-lg\",\n rounding: \"rounded-lg\",\n },\n },\n\n // EXTERNAL LINK EXAMPLES\n {\n description: \"External website link - Full URL for outside navigation\",\n type: \"button\",\n props: {\n label: \"Visit Our Store\",\n link: \"https://store.example.com\",\n colorPreset: { color: \"primary-500\" },\n fontSize: \"text-base\",\n rounding: \"rounded-md\",\n },\n },\n {\n description: \"Download button - Direct file download link\",\n type: \"button\",\n props: {\n label: \"Download PDF\",\n link: \"https://example.com/brochure.pdf\",\n colorPreset: { color: \"secondary-600\" },\n fontSize: \"text-base\",\n rounding: \"rounded-lg\",\n border: { width: \"border\", color: \"border-secondary-800\" },\n },\n },\n\n // INTERNAL NAVIGATION EXAMPLES\n {\n description: \"Internal page navigation using page ID reference\",\n type: \"button\",\n props: {\n label: \"Contact Us\",\n link: \"contact\",\n colorPreset: { color: \"neutral-600\" },\n fontSize: \"text-base\",\n rounding: \"rounded-md\",\n },\n },\n {\n description: \"Internal relative URL navigation\",\n type: \"button\",\n props: {\n label: \"Our Services\",\n link: \"/services\",\n colorPreset: { color: \"primary-500\" },\n fontSize: \"text-base\",\n rounding: \"rounded-md\",\n },\n },\n\n // DYNAMIC CONTENT EXAMPLES\n {\n description: \"Dynamic product purchase button using product query data\",\n type: \"button\",\n props: {\n label: \"Buy {{product.name}} - ${{product.price}}\",\n link: \"/checkout/{{product.id}}\",\n colorPreset: { color: \"primary-600\" },\n fontSize: \"text-base\",\n rounding: \"rounded-md\",\n border: { width: \"border\", color: \"border-primary-800\" },\n },\n },\n {\n description: \"Dynamic employee contact button using team member data\",\n type: \"button\",\n props: {\n label: \"Contact {{employee.name}}\",\n link: \"mailto:{{employee.email}}\",\n colorPreset: { color: \"neutral-500\" },\n fontSize: \"text-sm\",\n rounding: \"rounded-md\",\n },\n },\n {\n description: \"Dynamic event registration using event query data\",\n type: \"button\",\n props: {\n label: \"Register for {{event.title}}\",\n link: \"/events/{{event.slug}}/register\",\n colorPreset: { color: \"accent-500\" },\n fontSize: \"text-base\",\n rounding: \"rounded-lg\",\n },\n },\n\n // STYLING VARIATIONS\n {\n description: \"Small compact button - Use in tight spaces or secondary contexts\",\n type: \"button\",\n props: {\n label: \"Edit\",\n link: \"/edit\",\n colorPreset: { color: \"neutral-400\" },\n fontSize: \"text-sm\",\n rounding: \"rounded-sm\",\n },\n },\n {\n description: \"Large hero button - Use for prominent call-to-actions\",\n type: \"button\",\n props: {\n label: \"Start Free Trial\",\n link: \"/trial\",\n colorPreset: { color: \"primary-600\" },\n fontSize: \"text-xl\",\n rounding: \"rounded-xl\",\n border: { width: \"border-2\", color: \"border-primary-800\" },\n },\n },\n {\n description: \"Pill-shaped button - Modern rounded design\",\n type: \"button\",\n props: {\n label: \"Subscribe\",\n link: \"/newsletter\",\n colorPreset: { color: \"accent-500\" },\n fontSize: \"text-base\",\n rounding: \"rounded-full\",\n },\n },\n {\n description: \"Sharp modern button - Angular design with no rounding\",\n type: \"button\",\n props: {\n label: \"Join Now\",\n link: \"/join\",\n colorPreset: { color: \"primary-500\" },\n fontSize: \"text-base\",\n rounding: \"rounded-none\",\n border: { width: \"border-2\", color: \"border-primary-700\" },\n },\n },\n\n // GRADIENT EXAMPLES\n {\n description: \"Gradient button - Eye-catching with color transitions\",\n type: \"button\",\n props: {\n label: \"Premium Upgrade\",\n link: \"/upgrade\",\n colorPreset: {\n color: \"primary-500\",\n gradientDirection: \"bg-gradient-to-r\",\n },\n fontSize: \"text-lg\",\n rounding: \"rounded-lg\",\n },\n },\n {\n description: \"Diagonal gradient button - Unique visual appeal\",\n type: \"button\",\n props: {\n label: \"Launch Campaign\",\n link: \"/campaigns/new\",\n colorPreset: {\n color: \"accent-600\",\n gradientDirection: \"bg-gradient-to-br\",\n },\n fontSize: \"text-base\",\n rounding: \"rounded-md\",\n border: { width: \"border\", color: \"border-accent-800\" },\n },\n },\n];\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/datarecords/external/airtable/types.ts"],"sourcesContent":["import { Type, type Static } from \"@sinclair/typebox\";\n\nexport const airtableFields = Type.Array(\n Type.Object({\n id: Type.String(),\n name: Type.String(),\n type: Type.String(),\n }),\n);\nexport type AirtableFields = Static<typeof airtableFields>;\n\nconst createAirtableTableResponseSchema = Type.Object({\n id: Type.String(),\n name: Type.String(),\n description: Type.String(),\n primaryFieldId: Type.String(),\n fields: airtableFields,\n});\n\nexport type CreateAirtableTableResponse = Static<typeof createAirtableTableResponseSchema>;\n\nexport const airtableOptions = Type.Object({\n externalUrl: Type.Optional(Type.String()),\n baseId: Type.String({\n pattern: \"^app[A-Za-z0-9]+$\",\n description: 'Airtable Base ID starting with \"app\"',\n }),\n baseName: Type.Optional(\n Type.String({\n description: \"Airtable Base Name\",\n }),\n ),\n tableId: Type.String({\n pattern: \"^tbl[A-Za-z0-9]+$\",\n description: 'Airtable Table ID starting with \"tbl\"',\n }),\n tableName: Type.Optional(\n Type.String({\n description: \"Table name as shown in Airtable interface\",\n }),\n ),\n fields: Type.Optional(airtableFields),\n});\nexport type AirtableOptions = Static<typeof airtableOptions>;\n\nexport type AirtableBases = {\n id: string;\n name: string;\n}[];\n\nexport const AirtableFieldTypes = Type.Union([\n Type.Literal(\"number\"),\n Type.Literal(\"checkbox\"),\n Type.Literal(\"date\"),\n Type.Literal(\"dateTime\"),\n Type.Literal(\"email\"),\n Type.Literal(\"url\"),\n Type.Literal(\"singleLineText\"),\n Type.Literal(\"multilineText\"),\n Type.Literal(\"singleSelect\"),\n Type.Literal(\"multipleSelects\"),\n]);\nexport type AirtableFieldType = Static<typeof AirtableFieldTypes>;\n"],"mappings":";;;;AAAA,SAAS,YAAyB;AAE3B,IAAM,iBAAiB,KAAK;AAAA,EACjC,KAAK,OAAO;AAAA,IACV,IAAI,KAAK,OAAO;AAAA,IAChB,MAAM,KAAK,OAAO;AAAA,IAClB,MAAM,KAAK,OAAO;AAAA,EACpB,CAAC;AACH;AAGA,IAAM,oCAAoC,KAAK,OAAO;AAAA,EACpD,IAAI,KAAK,OAAO;AAAA,EAChB,MAAM,KAAK,OAAO;AAAA,EAClB,aAAa,KAAK,OAAO;AAAA,EACzB,gBAAgB,KAAK,OAAO;AAAA,EAC5B,QAAQ;AACV,CAAC;AAIM,IAAM,kBAAkB,KAAK,OAAO;AAAA,EACzC,aAAa,KAAK,SAAS,KAAK,OAAO,CAAC;AAAA,EACxC,QAAQ,KAAK,OAAO;AAAA,IAClB,SAAS;AAAA,IACT,aAAa;AAAA,EACf,CAAC;AAAA,EACD,UAAU,KAAK;AAAA,IACb,KAAK,OAAO;AAAA,MACV,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EACA,SAAS,KAAK,OAAO;AAAA,IACnB,SAAS;AAAA,IACT,aAAa;AAAA,EACf,CAAC;AAAA,EACD,WAAW,KAAK;AAAA,IACd,KAAK,OAAO;AAAA,MACV,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EACA,QAAQ,KAAK,SAAS,cAAc;AACtC,CAAC;AAQM,IAAM,qBAAqB,KAAK,MAAM;AAAA,EAC3C,KAAK,QAAQ,QAAQ;AAAA,EACrB,KAAK,QAAQ,UAAU;AAAA,EACvB,KAAK,QAAQ,MAAM;AAAA,EACnB,KAAK,QAAQ,UAAU;AAAA,EACvB,KAAK,QAAQ,OAAO;AAAA,EACpB,KAAK,QAAQ,KAAK;AAAA,EAClB,KAAK,QAAQ,gBAAgB;AAAA,EAC7B,KAAK,QAAQ,eAAe;AAAA,EAC5B,KAAK,QAAQ,cAAc;AAAA,EAC3B,KAAK,QAAQ,iBAAiB;AAChC,CAAC;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/bricks/manifests/table.manifest.ts"],"sourcesContent":["import { Type } from \"@sinclair/typebox\";\nimport { RiTable2 } from \"react-icons/ri\";\nimport { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps } from \"../props/helpers\";\nimport { string } from \"../props/string\";\nimport type { BrickProps } from \"../props/types\";\nimport { colorPresetRef } from \"../props/color-preset\";\nimport { borderRef, roundingRef } from \"../props/border\";\nimport { loopRef } from \"../props/dynamic\";\nimport { cssLengthRef } from \"../props/css-length\";\nimport { fontSizeRef } from \"../props/text\";\nimport { StringEnum } from \"~/shared/utils/string-enum\";\nimport type { BrickExample } from \"./_types\";\n\nexport const manifest = defineBrickManifest({\n type: \"table\",\n name: \"Table\",\n category: \"widgets\",\n description: \"Displays data in a structured table format with customizable columns and rows.\",\n aiInstructions:\n \"Use this brick to display structured data like product listings, pricing tables, user lists, or any tabular data. Can consume dynamic data from queries or use static data. Each column can be customized for content type and alignment.\",\n consumesMultipleQueryRows: true,\n defaultInspectorTab: \"content\",\n isContainer: false,\n minHeight: {\n desktop: 200,\n },\n minWidth: {\n desktop: 400,\n },\n defaultWidth: {\n desktop: \"100%\",\n mobile: \"100%\",\n },\n icon: RiTable2,\n props: defineProps({\n colorPreset: Type.Optional(\n colorPresetRef({\n title: \"Color\",\n }),\n ),\n loop: Type.Optional(loopRef()),\n columns: Type.Array(\n Type.Object({\n header: string(\"Header\", {\n default: \"Column Header\",\n metadata: { category: \"content\" },\n }),\n field: string(\"Field\", {\n default: \"fieldName\",\n description: \"The field name from the data source or static content\",\n metadata: { category: \"content\" },\n }),\n width: Type.Optional(\n StringEnum([\"auto\", \"min\", \"1fr\", \"2fr\", \"3fr\"], {\n title: \"Width\",\n description: \"Column width behavior\",\n enumNames: [\"Auto\", \"Minimum\", \"1 fraction\", \"2 fractions\", \"3 fractions\"],\n default: \"auto\",\n }),\n ),\n align: Type.Optional(\n StringEnum([\"left\", \"center\", \"right\"], {\n title: \"Alignment\",\n description: \"Text alignment in this column\",\n enumNames: [\"Left\", \"Center\", \"Right\"],\n default: \"left\",\n }),\n ),\n type: Type.Optional(\n StringEnum([\"text\", \"image\", \"link\", \"currency\", \"date\"], {\n title: \"Content Type\",\n description: \"How to render the content in this column\",\n enumNames: [\"Text\", \"Image\", \"Link\", \"Currency\", \"Date\"],\n default: \"text\",\n }),\n ),\n }),\n {\n title: \"Columns\",\n default: [\n { header: \"Name\", field: \"name\", width: \"2fr\", align: \"left\", type: \"text\" },\n { header: \"Email\", field: \"email\", width: \"2fr\", align: \"left\", type: \"text\" },\n { header: \"Role\", field: \"role\", width: \"1fr\", align: \"left\", type: \"text\" },\n ],\n metadata: {\n category: \"content\",\n },\n },\n ),\n rows: Type.Optional(\n Type.Array(Type.Record(Type.String(), Type.Any()), {\n title: \"Static Data\",\n description: \"Static table data when not using dynamic queries\",\n default: [\n { name: \"John Doe\", email: \"john@example.com\", role: \"Manager\" },\n { name: \"Jane Smith\", email: \"jane@example.com\", role: \"Developer\" },\n { name: \"Mike Johnson\", email: \"mike@example.com\", role: \"Designer\" },\n ],\n metadata: {\n category: \"content\",\n consumeQuery: true,\n },\n }),\n ),\n showHeader: Type.Optional(\n Type.Boolean({\n title: \"Show Header\",\n description: \"Display the table header row\",\n default: true,\n }),\n ),\n striped: Type.Optional(\n Type.Boolean({\n title: \"Striped Rows\",\n description: \"Alternate row colors for better readability\",\n default: true,\n }),\n ),\n hover: Type.Optional(\n Type.Boolean({\n title: \"Hover Effect\",\n description: \"Highlight rows on hover\",\n default: true,\n }),\n ),\n fontSize: Type.Optional(\n fontSizeRef({\n title: \"Font Size\",\n description: \"Text size for table content\",\n default: \"text-sm\",\n }),\n ),\n padding: Type.Optional(\n cssLengthRef({\n default: \"1rem\",\n description: \"Padding inside table cells\",\n title: \"Cell Padding\",\n \"ui:responsive\": true,\n \"ui:placeholder\": \"Not specified\",\n \"ui:styleId\": \"styles:padding\",\n }),\n ),\n rounding: Type.Optional(\n roundingRef({\n default: \"rounded-lg\",\n }),\n ),\n border: Type.Optional(\n borderRef({\n default: { width: \"border\", color: \"border-gray-200\" },\n }),\n ),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: BrickExample<Manifest>[] = [\n {\n description: \"Team members table with basic information\",\n type: \"table\",\n props: {\n showHeader: true,\n striped: true,\n hover: true,\n columns: [\n { header: \"Name\", field: \"name\", width: \"2fr\", align: \"left\", type: \"text\" },\n { header: \"Email\", field: \"email\", width: \"2fr\", align: \"left\", type: \"text\" },\n { header: \"Department\", field: \"department\", width: \"1fr\", align: \"left\", type: \"text\" },\n { header: \"Role\", field: \"role\", width: \"1fr\", align: \"left\", type: \"text\" },\n ],\n rows: [\n {\n name: \"Sarah Johnson\",\n email: \"sarah@company.com\",\n department: \"Engineering\",\n role: \"Senior Developer\",\n },\n { name: \"Mike Chen\", email: \"mike@company.com\", department: \"Design\", role: \"UX Designer\" },\n {\n name: \"Emily Rodriguez\",\n email: \"emily@company.com\",\n department: \"Marketing\",\n role: \"Content Manager\",\n },\n { name: \"David Park\", email: \"david@company.com\", department: \"Sales\", role: \"Account Executive\" },\n ],\n colorPreset: { color: \"neutral-50\" },\n fontSize: \"text-sm\",\n padding: \"0.75rem\",\n },\n },\n {\n description: \"Product pricing table with currency formatting\",\n type: \"table\",\n props: {\n showHeader: true,\n striped: false,\n hover: true,\n columns: [\n { header: \"Product\", field: \"product\", width: \"2fr\", align: \"left\", type: \"text\" },\n { header: \"Category\", field: \"category\", width: \"1fr\", align: \"center\", type: \"text\" },\n { header: \"Price\", field: \"price\", width: \"1fr\", align: \"right\", type: \"currency\" },\n { header: \"Stock\", field: \"stock\", width: \"1fr\", align: \"center\", type: \"text\" },\n ],\n rows: [\n { product: \"Wireless Headphones\", category: \"Audio\", price: \"299.99\", stock: \"In Stock\" },\n { product: \"Bluetooth Speaker\", category: \"Audio\", price: \"149.99\", stock: \"Low Stock\" },\n { product: \"Smartphone\", category: \"Mobile\", price: \"699.99\", stock: \"In Stock\" },\n { product: \"Laptop Stand\", category: \"Accessories\", price: \"79.99\", stock: \"Out of Stock\" },\n ],\n colorPreset: { color: \"primary-50\" },\n fontSize: \"text-base\",\n border: { width: \"border-2\", color: \"border-primary-300\" },\n rounding: \"rounded-xl\",\n },\n },\n {\n description: \"Event schedule table with dates and links\",\n type: \"table\",\n props: {\n showHeader: true,\n striped: true,\n hover: false,\n columns: [\n { header: \"Event\", field: \"event\", width: \"2fr\", align: \"left\", type: \"text\" },\n { header: \"Date\", field: \"date\", width: \"1fr\", align: \"center\", type: \"date\" },\n { header: \"Location\", field: \"location\", width: \"1fr\", align: \"center\", type: \"text\" },\n { header: \"Register\", field: \"link\", width: \"1fr\", align: \"center\", type: \"link\" },\n ],\n rows: [\n {\n event: \"Web Development Workshop\",\n date: \"2024-03-15\",\n location: \"Room A\",\n link: \"/events/workshop\",\n },\n { event: \"Design Thinking Seminar\", date: \"2024-03-22\", location: \"Room B\", link: \"/events/seminar\" },\n { event: \"Networking Event\", date: \"2024-03-29\", location: \"Main Hall\", link: \"/events/networking\" },\n ],\n colorPreset: { color: \"secondary-100\" },\n fontSize: \"text-sm\",\n padding: \"1rem\",\n },\n },\n {\n description: \"Comparison table with centered alignment\",\n type: \"table\",\n props: {\n showHeader: true,\n striped: false,\n hover: false,\n columns: [\n { header: \"Feature\", field: \"feature\", width: \"2fr\", align: \"left\", type: \"text\" },\n { header: \"Basic\", field: \"basic\", width: \"1fr\", align: \"center\", type: \"text\" },\n { header: \"Pro\", field: \"pro\", width: \"1fr\", align: \"center\", type: \"text\" },\n { header: \"Enterprise\", field: \"enterprise\", width: \"1fr\", align: \"center\", type: \"text\" },\n ],\n rows: [\n { feature: \"Storage Space\", basic: \"10GB\", pro: \"100GB\", enterprise: \"Unlimited\" },\n { feature: \"Users\", basic: \"5\", pro: \"25\", enterprise: \"Unlimited\" },\n { feature: \"Support\", basic: \"Email\", pro: \"Priority\", enterprise: \"Dedicated\" },\n { feature: \"API Access\", basic: \"❌\", pro: \"✅\", enterprise: \"✅\" },\n ],\n colorPreset: { color: \"accent-50\" },\n border: { width: \"border\", color: \"border-accent-300\" },\n fontSize: \"text-base\",\n padding: \"1.25rem\",\n rounding: \"rounded-lg\",\n },\n },\n {\n description: \"Simple data table without header\",\n type: \"table\",\n props: {\n showHeader: false,\n striped: true,\n hover: true,\n columns: [\n { header: \"\", field: \"label\", width: \"1fr\", align: \"left\", type: \"text\" },\n { header: \"\", field: \"value\", width: \"1fr\", align: \"right\", type: \"text\" },\n ],\n rows: [\n { label: \"Founded\", value: \"2010\" },\n { label: \"Employees\", value: \"250+\" },\n { label: \"Locations\", value: \"15 cities\" },\n { label: \"Revenue\", value: \"$50M+\" },\n ],\n colorPreset: { color: \"neutral-100\" },\n fontSize: \"text-sm\",\n padding: \"0.5rem\",\n border: { width: \"border-0\", color: \"\" },\n },\n },\n {\n description: \"Dynamic employee table using employees query\",\n type: \"table\",\n props: {\n showHeader: true,\n striped: true,\n hover: true,\n columns: [\n { header: \"Full Name\", field: \"fullName\", width: \"2fr\", align: \"left\", type: \"text\" },\n { header: \"Position\", field: \"position\", width: \"2fr\", align: \"left\", type: \"text\" },\n { header: \"Department\", field: \"department\", width: \"1fr\", align: \"center\", type: \"text\" },\n { header: \"Start Date\", field: \"startDate\", width: \"1fr\", align: \"center\", type: \"date\" },\n ],\n rows: [\n {\n fullName: \"{{employees.fullName}}\",\n position: \"{{employees.position}}\",\n department: \"{{employees.department}}\",\n startDate: \"{{employees.startDate}}\",\n },\n ],\n loop: { over: \"employees\" },\n colorPreset: { color: \"primary-50\" },\n fontSize: \"text-sm\",\n padding: \"0.75rem\",\n },\n },\n {\n description: \"Product catalog using products query with pricing\",\n type: \"table\",\n props: {\n showHeader: true,\n striped: false,\n hover: true,\n columns: [\n { header: \"Product\", field: \"name\", width: \"2fr\", align: \"left\", type: \"text\" },\n { header: \"Category\", field: \"category\", width: \"1fr\", align: \"center\", type: \"text\" },\n { header: \"Price\", field: \"price\", width: \"1fr\", align: \"right\", type: \"currency\" },\n { header: \"Status\", field: \"status\", width: \"1fr\", align: \"center\", type: \"text\" },\n ],\n rows: [\n {\n name: \"{{products.name}}\",\n category: \"{{products.category}}\",\n price: \"{{products.price}}\",\n status: \"{{products.availability}}\",\n },\n ],\n loop: { over: \"products\" },\n colorPreset: { color: \"secondary-100\" },\n border: { width: \"border-2\", color: \"border-secondary-300\" },\n rounding: \"rounded-xl\",\n },\n },\n {\n description: \"Orders dashboard using orders query with links\",\n type: \"table\",\n props: {\n showHeader: true,\n striped: true,\n hover: true,\n columns: [\n { header: \"Order ID\", field: \"orderId\", width: \"1fr\", align: \"left\", type: \"text\" },\n { header: \"Customer\", field: \"customerName\", width: \"2fr\", align: \"left\", type: \"text\" },\n { header: \"Total\", field: \"total\", width: \"1fr\", align: \"right\", type: \"currency\" },\n { header: \"Status\", field: \"status\", width: \"1fr\", align: \"center\", type: \"text\" },\n { header: \"View\", field: \"viewLink\", width: \"1fr\", align: \"center\", type: \"link\" },\n ],\n rows: [\n {\n orderId: \"{{orders.id}}\",\n customerName: \"{{orders.customerName}}\",\n total: \"{{orders.total}}\",\n status: \"{{orders.status}}\",\n viewLink: \"/orders/{{orders.id}}\",\n },\n ],\n loop: { over: \"orders\" },\n colorPreset: { color: \"accent-50\" },\n fontSize: \"text-sm\",\n },\n },\n {\n description: \"Event attendees using attendees query\",\n type: \"table\",\n props: {\n showHeader: true,\n striped: true,\n hover: false,\n columns: [\n { header: \"Name\", field: \"name\", width: \"2fr\", align: \"left\", type: \"text\" },\n { header: \"Email\", field: \"email\", width: \"2fr\", align: \"left\", type: \"text\" },\n { header: \"Company\", field: \"company\", width: \"1fr\", align: \"left\", type: \"text\" },\n {\n header: \"Registration Date\",\n field: \"registrationDate\",\n width: \"1fr\",\n align: \"center\",\n type: \"date\",\n },\n ],\n rows: [\n {\n name: \"{{attendees.fullName}}\",\n email: \"{{attendees.email}}\",\n company: \"{{attendees.company}}\",\n registrationDate: \"{{attendees.registrationDate}}\",\n },\n ],\n loop: { over: \"attendees\" },\n colorPreset: { color: \"neutral-100\" },\n border: { width: \"border\", color: \"border-neutral-300\" },\n padding: \"1rem\",\n },\n },\n {\n description: \"Invoice items using invoiceItems query with detailed pricing\",\n type: \"table\",\n props: {\n showHeader: true,\n striped: false,\n hover: false,\n columns: [\n { header: \"Description\", field: \"description\", width: \"3fr\", align: \"left\", type: \"text\" },\n { header: \"Quantity\", field: \"quantity\", width: \"1fr\", align: \"center\", type: \"text\" },\n { header: \"Unit Price\", field: \"unitPrice\", width: \"1fr\", align: \"right\", type: \"currency\" },\n { header: \"Total\", field: \"total\", width: \"1fr\", align: \"right\", type: \"currency\" },\n ],\n rows: [\n {\n description: \"{{invoiceItems.description}}\",\n quantity: \"{{invoiceItems.quantity}}\",\n unitPrice: \"{{invoiceItems.unitPrice}}\",\n total: \"{{invoiceItems.lineTotal}}\",\n },\n ],\n loop: { over: \"invoiceItems\" },\n colorPreset: { color: \"primary-100\" },\n border: { width: \"border-2\", color: \"border-primary-400\" },\n fontSize: \"text-base\",\n padding: \"1rem\",\n rounding: \"rounded-lg\",\n },\n },\n];\n"],"mappings":"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","names":[]}
|
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
toLLMSchema
|
|
5
|
-
} from "./chunk-IQIISR22.js";
|
|
6
|
-
import {
|
|
7
|
-
StringEnum
|
|
8
|
-
} from "./chunk-JK2FWFJU.js";
|
|
9
|
-
|
|
10
|
-
// src/shared/theme.ts
|
|
11
|
-
import { Type } from "@sinclair/typebox";
|
|
12
|
-
import chroma from "chroma-js";
|
|
13
|
-
import { colorPalette } from "@upstart.gg/style-system/colors";
|
|
14
|
-
var fontStacks = [
|
|
15
|
-
{ value: "system-ui", label: "System UI" },
|
|
16
|
-
{ value: "transitional", label: "Transitional" },
|
|
17
|
-
{ value: "old-style", label: "Old style" },
|
|
18
|
-
{ value: "humanist", label: "Humanist" },
|
|
19
|
-
{ value: "geometric-humanist", label: "Geometric humanist" },
|
|
20
|
-
{ value: "classical-humanist", label: "Classical humanist" },
|
|
21
|
-
{ value: "neo-grotesque", label: "Neo-grotesque" },
|
|
22
|
-
{ value: "monospace-slab-serif", label: "Monospace slab serif" },
|
|
23
|
-
{ value: "monospace-code", label: "Monospace code" },
|
|
24
|
-
{ value: "industrial", label: "Industrial" },
|
|
25
|
-
{ value: "rounded-sans", label: "Rounded sans" },
|
|
26
|
-
{ value: "slab-serif", label: "Slab serif" },
|
|
27
|
-
{ value: "antique", label: "Antique" },
|
|
28
|
-
{ value: "didone", label: "Didone" },
|
|
29
|
-
{ value: "handwritten", label: "Handwritten" }
|
|
30
|
-
];
|
|
31
|
-
var headingFont = Type.Object(
|
|
32
|
-
{
|
|
33
|
-
type: StringEnum(["stack", "theme", "google"], {
|
|
34
|
-
title: "Type of font",
|
|
35
|
-
description: "The type of font. Can be a font stack, a theme font or a Google font"
|
|
36
|
-
}),
|
|
37
|
-
family: Type.String({
|
|
38
|
-
title: "Family",
|
|
39
|
-
description: "The font family (eg. the name of the font)"
|
|
40
|
-
})
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
title: "Headings font",
|
|
44
|
-
description: "Used for titles and headings",
|
|
45
|
-
additionalProperties: false
|
|
46
|
-
}
|
|
47
|
-
);
|
|
48
|
-
var bodyFont = Type.Object(
|
|
49
|
-
{
|
|
50
|
-
type: StringEnum(["stack", "theme", "google"], {
|
|
51
|
-
title: "Type of font",
|
|
52
|
-
description: "The type of font. Can be a font stack, a theme font or a Google font"
|
|
53
|
-
}),
|
|
54
|
-
family: Type.String({
|
|
55
|
-
title: "Family",
|
|
56
|
-
description: "The font family (eg. the name of the font)"
|
|
57
|
-
})
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
title: "Body font",
|
|
61
|
-
description: "Used for paragraphs and body text",
|
|
62
|
-
additionalProperties: false
|
|
63
|
-
}
|
|
64
|
-
);
|
|
65
|
-
var themeSchema = Type.Object(
|
|
66
|
-
{
|
|
67
|
-
id: Type.String({ title: "ID", description: "The unique identifier of the theme" }),
|
|
68
|
-
name: Type.String({ title: "Name", description: "The name of the theme" }),
|
|
69
|
-
description: Type.String({ title: "Description", description: "The description of the theme" }),
|
|
70
|
-
tags: Type.Array(Type.String({ title: "Tag" }), { title: "Tags", description: "The tags of the theme" }),
|
|
71
|
-
browserColorScheme: StringEnum(["light", "dark"], {
|
|
72
|
-
title: "Browser scheme",
|
|
73
|
-
description: "Color of browser-provided UI. Either 'light' or 'dark'"
|
|
74
|
-
}),
|
|
75
|
-
// Define the theme colors
|
|
76
|
-
colors: Type.Object(
|
|
77
|
-
{
|
|
78
|
-
primary: Type.String({
|
|
79
|
-
title: "Primary",
|
|
80
|
-
description: "The brand's primary color.",
|
|
81
|
-
"ai:instructions": "Use oklch() css notation.",
|
|
82
|
-
examples: ["oklch(0.62 0.241 354.308)"]
|
|
83
|
-
}),
|
|
84
|
-
secondary: Type.String({
|
|
85
|
-
title: "Secondary",
|
|
86
|
-
description: "The brand's second most used color",
|
|
87
|
-
"ai:instructions": "Use oklch() css notation.",
|
|
88
|
-
examples: ["oklch(0.65 0.22 185)"]
|
|
89
|
-
}),
|
|
90
|
-
accent: Type.String({
|
|
91
|
-
title: "Accent",
|
|
92
|
-
description: "The brand's least used color",
|
|
93
|
-
"ai:instructions": "Use oklch() css notation.",
|
|
94
|
-
examples: ["oklch(0.82 0.18 85)"]
|
|
95
|
-
}),
|
|
96
|
-
neutral: Type.String({
|
|
97
|
-
title: "Neutral",
|
|
98
|
-
description: "The base neutral color",
|
|
99
|
-
"ai:instructions": "Use oklch() css notation.",
|
|
100
|
-
examples: ["oklch(0.38 0.08 280)"]
|
|
101
|
-
}),
|
|
102
|
-
base100: Type.String({
|
|
103
|
-
title: "Base",
|
|
104
|
-
description: "Base surface color of page, used for blank backgrounds. Should be white or near-white for light color-schemes, and black or near-black for dark color-schemes.",
|
|
105
|
-
"ai:instructions": "Use oklab() css notation.",
|
|
106
|
-
examples: ["oklch(0.99 0.008 92)"]
|
|
107
|
-
}),
|
|
108
|
-
base200: Type.String({
|
|
109
|
-
title: "Base 2",
|
|
110
|
-
description: "Should be darker than base 100 but still light for light color-schemes, and lighter but still dark for dark color-schemes.",
|
|
111
|
-
"ai:instructions": "Use oklab() css notation.",
|
|
112
|
-
examples: ["oklch(0.97 0.01 85)"]
|
|
113
|
-
}),
|
|
114
|
-
base300: Type.String({
|
|
115
|
-
title: "Base 3",
|
|
116
|
-
description: "3rd base color, should be darker than base 200 for light color-schemes, and lighter than base 200 for dark color-schemes.",
|
|
117
|
-
"ai:instructions": "Use oklab() css notation.",
|
|
118
|
-
examples: ["oklch(0.95 0.02 80)"]
|
|
119
|
-
})
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
title: "Theme base colors",
|
|
123
|
-
description: "The base colors of the theme. Each theme must declare all these colors",
|
|
124
|
-
additionalProperties: false
|
|
125
|
-
}
|
|
126
|
-
),
|
|
127
|
-
// Define the theme typography
|
|
128
|
-
typography: Type.Object(
|
|
129
|
-
{
|
|
130
|
-
base: Type.Number({
|
|
131
|
-
title: "Base font size",
|
|
132
|
-
description: "The base font size in pixels. It is safe to keep it as is.",
|
|
133
|
-
"ai:instructions": "A safe value is 16."
|
|
134
|
-
}),
|
|
135
|
-
heading: headingFont,
|
|
136
|
-
body: bodyFont,
|
|
137
|
-
alternatives: Type.Array(
|
|
138
|
-
Type.Object(
|
|
139
|
-
{
|
|
140
|
-
body: bodyFont,
|
|
141
|
-
heading: headingFont
|
|
142
|
-
},
|
|
143
|
-
{ additionalProperties: false }
|
|
144
|
-
),
|
|
145
|
-
{
|
|
146
|
-
title: "Alternative fonts",
|
|
147
|
-
description: "Alternative fonts that can be suggested to the user. Takes the same shape"
|
|
148
|
-
}
|
|
149
|
-
)
|
|
150
|
-
},
|
|
151
|
-
{ additionalProperties: false }
|
|
152
|
-
)
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
additionalProperties: false
|
|
156
|
-
}
|
|
157
|
-
);
|
|
158
|
-
var themesArray = Type.Array(themeSchema);
|
|
159
|
-
var themesArrayLLM = toLLMSchema(themesArray);
|
|
160
|
-
var defaultTheme = {
|
|
161
|
-
id: "_default_",
|
|
162
|
-
name: "default",
|
|
163
|
-
description: "Default Upstart theme",
|
|
164
|
-
tags: ["gradient", "vibrant", "modern", "creative", "dynamic", "artistic", "bold"],
|
|
165
|
-
browserColorScheme: "light",
|
|
166
|
-
colors: {
|
|
167
|
-
base100: "#FFF",
|
|
168
|
-
// Warm white background
|
|
169
|
-
base200: "#F5F0E1",
|
|
170
|
-
// Soft cream in hex
|
|
171
|
-
base300: "#F0E3D2",
|
|
172
|
-
// Light warm gray in hex
|
|
173
|
-
primary: "#FF6F20",
|
|
174
|
-
// A vibrant orange in hex
|
|
175
|
-
secondary: "#00BFFF",
|
|
176
|
-
// A bright cyan in hex
|
|
177
|
-
accent: "#A4D65E",
|
|
178
|
-
// A lively lime green in hex
|
|
179
|
-
neutral: "#B0B0B0"
|
|
180
|
-
// A balanced gray in hex
|
|
181
|
-
},
|
|
182
|
-
typography: {
|
|
183
|
-
base: 16,
|
|
184
|
-
heading: { type: "stack", family: "system-ui" },
|
|
185
|
-
body: { type: "stack", family: "system-ui" },
|
|
186
|
-
alternatives: []
|
|
187
|
-
}
|
|
188
|
-
};
|
|
189
|
-
function isDefaultTheme(theme) {
|
|
190
|
-
return theme.id === defaultTheme.id;
|
|
191
|
-
}
|
|
192
|
-
function processTheme(theme) {
|
|
193
|
-
return {
|
|
194
|
-
...theme,
|
|
195
|
-
typography: {
|
|
196
|
-
...theme.typography,
|
|
197
|
-
base: 16
|
|
198
|
-
// override any base size
|
|
199
|
-
},
|
|
200
|
-
colors: Object.entries(theme.colors).reduce(
|
|
201
|
-
(acc, [key, value]) => {
|
|
202
|
-
const fixedColor = fixOklchColor(value);
|
|
203
|
-
return {
|
|
204
|
-
// biome-ignore lint/performance/noAccumulatingSpread: <explanation>
|
|
205
|
-
...acc,
|
|
206
|
-
[key]: fixedColor
|
|
207
|
-
};
|
|
208
|
-
},
|
|
209
|
-
{}
|
|
210
|
-
)
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
function fixOklchColor(color) {
|
|
214
|
-
const valid = chroma.valid(color);
|
|
215
|
-
if (valid) {
|
|
216
|
-
return color;
|
|
217
|
-
}
|
|
218
|
-
const oklchRegex = /ok(lch|lab)\(([^)]+)\)/;
|
|
219
|
-
if (oklchRegex.test(color)) {
|
|
220
|
-
const withoutComma = color.replace(/,/g, " ");
|
|
221
|
-
if (chroma.valid(withoutComma)) {
|
|
222
|
-
return withoutComma;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
if (/^([a-z]+)-([0-9]+)$/.test(color)) {
|
|
226
|
-
const [name, shade] = color.split("-");
|
|
227
|
-
const twColor = colorPalette[name]?.[shade];
|
|
228
|
-
if (twColor) {
|
|
229
|
-
return twColor;
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
return color;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
export {
|
|
236
|
-
fontStacks,
|
|
237
|
-
themeSchema,
|
|
238
|
-
themesArray,
|
|
239
|
-
themesArrayLLM,
|
|
240
|
-
defaultTheme,
|
|
241
|
-
isDefaultTheme,
|
|
242
|
-
processTheme
|
|
243
|
-
};
|
|
244
|
-
//# sourceMappingURL=chunk-DV3G7X34.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/theme.ts"],"sourcesContent":["import { Type, type Static } from \"@sinclair/typebox\";\nimport chroma from \"chroma-js\";\nimport { colorPalette } from \"@upstart.gg/style-system/colors\";\nimport { StringEnum } from \"./utils/string-enum\";\nimport { toLLMSchema } from \"./utils/llm\";\n\nexport const fontStacks = [\n { value: \"system-ui\", label: \"System UI\" },\n { value: \"transitional\", label: \"Transitional\" },\n { value: \"old-style\", label: \"Old style\" },\n { value: \"humanist\", label: \"Humanist\" },\n { value: \"geometric-humanist\", label: \"Geometric humanist\" },\n { value: \"classical-humanist\", label: \"Classical humanist\" },\n { value: \"neo-grotesque\", label: \"Neo-grotesque\" },\n { value: \"monospace-slab-serif\", label: \"Monospace slab serif\" },\n { value: \"monospace-code\", label: \"Monospace code\" },\n { value: \"industrial\", label: \"Industrial\" },\n { value: \"rounded-sans\", label: \"Rounded sans\" },\n { value: \"slab-serif\", label: \"Slab serif\" },\n { value: \"antique\", label: \"Antique\" },\n { value: \"didone\", label: \"Didone\" },\n { value: \"handwritten\", label: \"Handwritten\" },\n];\n\nconst headingFont = Type.Object(\n {\n type: StringEnum([\"stack\", \"theme\", \"google\"], {\n title: \"Type of font\",\n description: \"The type of font. Can be a font stack, a theme font or a Google font\",\n }),\n family: Type.String({\n title: \"Family\",\n description: \"The font family (eg. the name of the font)\",\n }),\n },\n {\n title: \"Headings font\",\n description: \"Used for titles and headings\",\n additionalProperties: false,\n },\n);\n\nconst bodyFont = Type.Object(\n {\n type: StringEnum([\"stack\", \"theme\", \"google\"], {\n title: \"Type of font\",\n description: \"The type of font. Can be a font stack, a theme font or a Google font\",\n }),\n family: Type.String({\n title: \"Family\",\n description: \"The font family (eg. the name of the font)\",\n }),\n },\n {\n title: \"Body font\",\n description: \"Used for paragraphs and body text\",\n additionalProperties: false,\n },\n);\n\nexport const themeSchema = Type.Object(\n {\n id: Type.String({ title: \"ID\", description: \"The unique identifier of the theme\" }),\n name: Type.String({ title: \"Name\", description: \"The name of the theme\" }),\n description: Type.String({ title: \"Description\", description: \"The description of the theme\" }),\n tags: Type.Array(Type.String({ title: \"Tag\" }), { title: \"Tags\", description: \"The tags of the theme\" }),\n browserColorScheme: StringEnum([\"light\", \"dark\"], {\n title: \"Browser scheme\",\n description: \"Color of browser-provided UI. Either 'light' or 'dark'\",\n }),\n // Define the theme colors\n colors: Type.Object(\n {\n primary: Type.String({\n title: \"Primary\",\n description: \"The brand's primary color.\",\n \"ai:instructions\": \"Use oklch() css notation.\",\n examples: [\"oklch(0.62 0.241 354.308)\"],\n }),\n secondary: Type.String({\n title: \"Secondary\",\n description: \"The brand's second most used color\",\n \"ai:instructions\": \"Use oklch() css notation.\",\n examples: [\"oklch(0.65 0.22 185)\"],\n }),\n accent: Type.String({\n title: \"Accent\",\n description: \"The brand's least used color\",\n \"ai:instructions\": \"Use oklch() css notation.\",\n examples: [\"oklch(0.82 0.18 85)\"],\n }),\n neutral: Type.String({\n title: \"Neutral\",\n description: \"The base neutral color\",\n \"ai:instructions\": \"Use oklch() css notation.\",\n examples: [\"oklch(0.38 0.08 280)\"],\n }),\n base100: Type.String({\n title: \"Base\",\n description:\n \"Base surface color of page, used for blank backgrounds. Should be white or near-white for light color-schemes, and black or near-black for dark color-schemes.\",\n \"ai:instructions\": \"Use oklab() css notation.\",\n examples: [\"oklch(0.99 0.008 92)\"],\n }),\n base200: Type.String({\n title: \"Base 2\",\n description:\n \"Should be darker than base 100 but still light for light color-schemes, and lighter but still dark for dark color-schemes.\",\n \"ai:instructions\": \"Use oklab() css notation.\",\n examples: [\"oklch(0.97 0.01 85)\"],\n }),\n base300: Type.String({\n title: \"Base 3\",\n description:\n \"3rd base color, should be darker than base 200 for light color-schemes, and lighter than base 200 for dark color-schemes.\",\n \"ai:instructions\": \"Use oklab() css notation.\",\n examples: [\"oklch(0.95 0.02 80)\"],\n }),\n },\n {\n title: \"Theme base colors\",\n description: \"The base colors of the theme. Each theme must declare all these colors\",\n additionalProperties: false,\n },\n ),\n\n // Define the theme typography\n typography: Type.Object(\n {\n base: Type.Number({\n title: \"Base font size\",\n description: \"The base font size in pixels. It is safe to keep it as is.\",\n \"ai:instructions\": \"A safe value is 16.\",\n }),\n heading: headingFont,\n body: bodyFont,\n alternatives: Type.Array(\n Type.Object(\n {\n body: bodyFont,\n heading: headingFont,\n },\n { additionalProperties: false },\n ),\n {\n title: \"Alternative fonts\",\n description: \"Alternative fonts that can be suggested to the user. Takes the same shape\",\n },\n ),\n },\n { additionalProperties: false },\n ),\n },\n {\n additionalProperties: false,\n },\n);\n\nexport type Theme = Static<typeof themeSchema>;\nexport const themesArray = Type.Array(themeSchema);\nexport const themesArrayLLM = toLLMSchema(themesArray);\n\nexport type ThemesArray = Static<typeof themesArray>;\nexport type FontType = Theme[\"typography\"][\"body\"];\n\nexport const defaultTheme: Theme = {\n id: \"_default_\",\n name: \"default\",\n description: \"Default Upstart theme\",\n tags: [\"gradient\", \"vibrant\", \"modern\", \"creative\", \"dynamic\", \"artistic\", \"bold\"],\n browserColorScheme: \"light\",\n colors: {\n base100: \"#FFF\", // Warm white background\n base200: \"#F5F0E1\", // Soft cream in hex\n base300: \"#F0E3D2\", // Light warm gray in hex\n primary: \"#FF6F20\", // A vibrant orange in hex\n secondary: \"#00BFFF\", // A bright cyan in hex\n accent: \"#A4D65E\", // A lively lime green in hex\n neutral: \"#B0B0B0\", // A balanced gray in hex\n },\n typography: {\n base: 16,\n heading: { type: \"stack\", family: \"system-ui\" },\n body: { type: \"stack\", family: \"system-ui\" },\n alternatives: [],\n },\n};\n\nexport function isDefaultTheme(theme: Theme): boolean {\n return theme.id === defaultTheme.id;\n}\n\n/**\n * Process a theme, eventually fixing colors and translating them to oklch notations\n * @param theme\n */\nexport function processTheme(theme: Theme): Theme {\n return {\n ...theme,\n typography: {\n ...theme.typography,\n base: 16, // override any base size\n },\n colors: Object.entries(theme.colors).reduce(\n (acc, [key, value]) => {\n const fixedColor = fixOklchColor(value);\n return {\n // biome-ignore lint/performance/noAccumulatingSpread: <explanation>\n ...acc,\n [key]: fixedColor,\n };\n },\n {} as typeof theme.colors,\n ),\n };\n}\n\nfunction fixOklchColor(color: string) {\n const valid = chroma.valid(color);\n if (valid) {\n return color;\n }\n // Try to fix the color if it looks like oklch\n const oklchRegex = /ok(lch|lab)\\(([^)]+)\\)/;\n if (oklchRegex.test(color)) {\n const withoutComma = color.replace(/,/g, \" \");\n if (chroma.valid(withoutComma)) {\n return withoutComma;\n }\n }\n // tailwind colors\n if (/^([a-z]+)-([0-9]+)$/.test(color)) {\n const [name, shade] = color.split(\"-\");\n // @ts-ignore\n const twColor = colorPalette[name]?.[shade] as string | undefined;\n if (twColor) {\n return twColor;\n }\n }\n return color;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/brick-manifest.ts"],"sourcesContent":["import type { TObject, TProperties, TArray } from \"@sinclair/typebox\";\nimport type { IconBase, IconType } from \"react-icons/lib\";\nimport { getSchemaDefaults } from \"./utils/schema\";\nimport type { ReactNode } from \"react\";\n\nexport type BrickCategory = \"layout\" | \"basic\" | \"media\" | \"widgets\" | \"container\";\n\ntype BrickManifestProps<BProps extends TProperties, DSSchema extends TObject | TArray<TObject>> = {\n type: string;\n category?: BrickCategory;\n name: string;\n icon: IconType;\n iconClassName?: string;\n staticClasses?: string;\n description?: string;\n // Min width in pixels\n minWidth?: {\n mobile?: number;\n desktop?: number;\n };\n // Max width in pixels\n maxWidth?: {\n mobile?: number;\n desktop?: number;\n };\n // Min height in pixels\n minHeight?: {\n mobile?: number;\n desktop?: number;\n };\n // Max height in pixels\n maxHeight?: {\n mobile?: number;\n desktop?: number;\n };\n // default width can be in various css units, but should be a number\n defaultWidth?: {\n mobile?: string;\n desktop?: string;\n };\n defaultHeight?: {\n mobile?: string;\n desktop?: string;\n };\n props: TObject<BProps>;\n hideInLibrary?: boolean;\n\n isGlobalBrick?: boolean;\n /**\n * If true, the brick can consume multiple rows of data from a data source.\n * This is useful for bricks that display lists or collections of items.\n */\n consumesMultipleQueryRows?: boolean;\n defaultInspectorTab?: \"preset\" | \"style\" | \"content\";\n deletable?: boolean;\n movable?: boolean;\n resizable?: boolean | \"horizontal\" | \"vertical\";\n duplicatable?: boolean;\n /**\n * Some specific bricks like sidebar or header may not be draggable inline, as we want to place them manually in the layout.\n */\n inlineDragDisabled?: boolean;\n isContainer?: boolean;\n aiInstructions?: string;\n};\n\nexport function defineBrickManifest<BProps extends TProperties, DSSchema extends TObject | TArray<TObject>>({\n props,\n defaultHeight,\n defaultWidth,\n category = \"widgets\",\n isContainer = false,\n hideInLibrary = false,\n isGlobalBrick = false,\n deletable = true,\n movable = true,\n resizable = true,\n duplicatable = true,\n defaultInspectorTab = \"preset\",\n icon,\n ...rest\n}: BrickManifestProps<BProps, DSSchema>) {\n return {\n ...rest,\n icon,\n props,\n category,\n defaultInspectorTab,\n hideInLibrary,\n deletable,\n movable,\n resizable,\n duplicatable,\n isContainer,\n isGlobalBrick,\n defaultWidth: { mobile: defaultWidth?.mobile ?? \"auto\", desktop: defaultWidth?.desktop ?? \"auto\" },\n defaultHeight: {\n mobile: defaultHeight?.mobile ?? \"auto\",\n desktop: defaultHeight?.desktop ?? \"auto\",\n },\n } as const;\n}\n\nexport type BrickManifest = ReturnType<typeof defineBrickManifest>;\n\nexport function getBrickManifestDefaults<M extends BrickManifest>(manifest: M) {\n return {\n manifest,\n props: getSchemaDefaults(manifest.props),\n mobileProps: {},\n };\n}\n\nexport type BrickDefaults = ReturnType<typeof getBrickManifestDefaults>;\n\nexport type BrickConstraints = Pick<\n BrickManifest,\n \"defaultWidth\" | \"defaultHeight\" | \"minWidth\" | \"minHeight\" | \"maxWidth\" | \"resizable\" | \"movable\"\n>;\n"],"mappings":";;;;;;;AAkEO,SAAS,oBAA4F;AAAA,EAC1G;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,sBAAsB;AAAA,EACtB;AAAA,EACA,GAAG;AACL,GAAyC;AACvC,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,EAAE,QAAQ,cAAc,UAAU,QAAQ,SAAS,cAAc,WAAW,OAAO;AAAA,IACjG,eAAe;AAAA,MACb,QAAQ,eAAe,UAAU;AAAA,MACjC,SAAS,eAAe,WAAW;AAAA,IACrC;AAAA,EACF;AACF;AAIO,SAAS,yBAAkD,UAAa;AAC7E,SAAO;AAAA,IACL;AAAA,IACA,OAAO,kBAAkB,SAAS,KAAK;AAAA,IACvC,aAAa,CAAC;AAAA,EAChB;AACF;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/bricks/props/text.ts"],"sourcesContent":["import { type StringOptions, Type, type Static } from \"@sinclair/typebox\";\nimport { StringEnum } from \"~/shared/utils/string-enum\";\nimport { typedRef } from \"~/shared/utils/typed-ref\";\n\ntype Options = StringOptions & {\n \"ui:no-extra-large-sizes\"?: boolean;\n};\n\nexport function fontSize(options: Options = {}) {\n return StringEnum([\"inherit\", \"text-xs\", \"text-sm\", \"text-base\", \"text-lg\", \"text-xl\"], {\n enumNames: [\"Same as parent\", \"Extra small\", \"Small\", \"Medium\", \"Large\", \"Extra large\"],\n default: \"inherit\",\n title: \"Font size\",\n // $id: \"styles:fontSize\",\n \"ui:styleId\": \"styles:fontSize\",\n \"ui:field\": \"enum\",\n \"ui:display\": \"select\",\n ...options,\n });\n}\n\nexport type FontSizeSettings = Static<ReturnType<typeof fontSize>>;\n\nexport function fontSizeRef(options: Options = {}) {\n return typedRef(\"styles:fontSize\", options);\n}\n\nexport function fontSizeXL(options: Options = {}) {\n return StringEnum(\n [\n \"inherit\",\n \"text-xs\",\n \"text-sm\",\n \"text-base\",\n \"text-lg\",\n \"text-xl\",\n \"text-2xl\",\n \"text-3xl\",\n \"text-4xl\",\n \"text-5xl\",\n \"text-6xl\",\n \"text-7xl\",\n ],\n {\n enumNames: [\n \"Same as parent\",\n \"Extra small\",\n \"Small\",\n \"Medium\",\n \"Large\",\n \"Extra large\",\n \"Extra large (2x)\",\n \"Extra large (3x)\",\n \"Extra large (4x)\",\n \"Extra large (5x)\",\n \"Extra large (6x)\",\n \"Extra large (7x)\",\n ],\n default: \"inherit\",\n title: \"Font size\",\n // $id: \"styles:fontSize\",\n \"ui:styleId\": \"styles:fontSize\",\n \"ui:field\": \"enum\",\n \"ui:display\": \"select\",\n ...options,\n },\n );\n}\nexport function fontSizeXLRef(options: Options = {}) {\n return typedRef(\"styles:fontSizeXL\", options);\n}\n\ntype TextContentOptions = {\n showInSettings?: boolean;\n disableSizing?: boolean;\n disableAlignment?: boolean;\n};\n\nexport function textContent({\n title = \"Text\",\n default: defaults,\n showInSettings,\n disableSizing = false,\n disableAlignment = false,\n ...rest\n}: TextContentOptions & StringOptions = {}) {\n return Type.String({\n title,\n description:\n \"Text content. Can contain basic HTML tags like `<strong>`, `<em>`, `<br>` and `<a>` as well as `<p>` and `<span>` and lists <ul> <ol> <li>.\",\n // $id: \"content:text\",\n default: defaults ?? \"My text\",\n \"ui:disable-sizing\": disableSizing,\n \"ui:disable-alignment\": disableAlignment,\n // metadata: {\n // category: \"content\",\n // },\n ...rest,\n \"ui:field\": showInSettings ? \"string\" : \"hidden\",\n });\n}\n\nexport type TextContentSettings = Static<ReturnType<typeof textContent>>;\n\nexport function textContentRef(options: TextContentOptions & StringOptions = {}) {\n return typedRef(\"content:text\", options);\n}\n"],"mappings":";;;;;;;;;;AAAA,SAA6B,YAAyB;AAQ/C,SAAS,SAAS,UAAmB,CAAC,GAAG;AAC9C,SAAO,WAAW,CAAC,WAAW,WAAW,WAAW,aAAa,WAAW,SAAS,GAAG;AAAA,IACtF,WAAW,CAAC,kBAAkB,eAAe,SAAS,UAAU,SAAS,aAAa;AAAA,IACtF,SAAS;AAAA,IACT,OAAO;AAAA;AAAA,IAEP,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,GAAG;AAAA,EACL,CAAC;AACH;AAIO,SAAS,YAAY,UAAmB,CAAC,GAAG;AACjD,SAAO,SAAS,mBAAmB,OAAO;AAC5C;AAEO,SAAS,WAAW,UAAmB,CAAC,GAAG;AAChD,SAAO;AAAA,IACL;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,MACE,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,SAAS;AAAA,MACT,OAAO;AAAA;AAAA,MAEP,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,GAAG;AAAA,IACL;AAAA,EACF;AACF;AACO,SAAS,cAAc,UAAmB,CAAC,GAAG;AACnD,SAAO,SAAS,qBAAqB,OAAO;AAC9C;AAQO,SAAS,YAAY;AAAA,EAC1B,QAAQ;AAAA,EACR,SAAS;AAAA,EACT;AAAA,EACA,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,GAAG;AACL,IAAwC,CAAC,GAAG;AAC1C,SAAO,KAAK,OAAO;AAAA,IACjB;AAAA,IACA,aACE;AAAA;AAAA,IAEF,SAAS,YAAY;AAAA,IACrB,qBAAqB;AAAA,IACrB,wBAAwB;AAAA;AAAA;AAAA;AAAA,IAIxB,GAAG;AAAA,IACH,YAAY,iBAAiB,WAAW;AAAA,EAC1C,CAAC;AACH;AAIO,SAAS,eAAe,UAA8C,CAAC,GAAG;AAC/E,SAAO,SAAS,gBAAgB,OAAO;AACzC;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/bricks/manifests/video.manifest.ts"],"sourcesContent":["import { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps } from \"../props/helpers\";\nimport { RxVideo } from \"react-icons/rx\";\nimport { string } from \"../props/string\";\nimport type { BrickProps } from \"../props/types\";\nimport { borderRef, roundingRef } from \"../props/border\";\nimport { shadowRef } from \"../props/effects\";\nimport { Type } from \"@sinclair/typebox\";\nimport { cssLengthRef } from \"../props/css-length\";\nimport type { BrickExample } from \"./_types\";\n\nexport const manifest = defineBrickManifest({\n type: \"video\",\n name: \"Video\",\n category: \"media\",\n description: \"An embedded video player for YouTube / Vimeo / Wistia links\",\n icon: RxVideo,\n defaultWidth: {\n mobile: \"auto\",\n desktop: `${(360 * 16) / 9}px`, // 16:9 aspect ratio\n },\n defaultHeight: {\n mobile: \"168px\",\n desktop: \"360px\", // 16:9 aspect ratio\n },\n minWidth: {\n mobile: 300,\n desktop: (360 * 16) / 9,\n },\n minHeight: {\n mobile: 168,\n desktop: 360, // 16:9 aspect ratio\n },\n props: defineProps({\n url: string(\"Video URL\", {\n description:\n \"URL of the video to embed. It can be a YouTube link or an embed link. It also supports Vimeo and Wistia links.\",\n default: \"https://www.youtube.com/watch?v=dQw4w9WgXcQ\",\n metadata: {\n category: \"content\",\n \"ui:responsive\": \"desktop\",\n },\n }),\n padding: Type.Optional(\n cssLengthRef({\n description: \"Padding inside the video player.\",\n \"ai:instructions\": \"Use only a single value like '1rem' or '10px'\",\n title: \"Padding\",\n \"ui:responsive\": true,\n \"ui:placeholder\": \"Not specified\",\n \"ui:styleId\": \"styles:padding\",\n }),\n ),\n rounding: Type.Optional(\n roundingRef({\n default: \"rounded-md\",\n }),\n ),\n border: Type.Optional(borderRef()),\n shadow: Type.Optional(shadowRef()),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: BrickExample<Manifest>[] = [\n {\n description: \"A YouTube video\",\n type: \"video\",\n props: {\n url: \"https://www.youtube.com/watch?v=dQw4w9WgXcQ\",\n },\n },\n {\n description: \"An embedded YouTube video\",\n type: \"video\",\n props: {\n url: \"https://www.youtube.com/embed/dQw4w9WgXcQ\",\n },\n },\n {\n description: \"A Vimeo video\",\n type: \"video\",\n props: {\n url: \"https://vimeo.com/123456789\",\n },\n },\n {\n description: \"Dynamic course video using course query\",\n type: \"video\",\n props: {\n url: \"{{course.videoUrl}}\",\n padding: \"1rem\",\n rounding: \"rounded-lg\",\n shadow: \"shadow-md\",\n },\n },\n {\n description: \"Dynamic product demo video using product query\",\n type: \"video\",\n props: {\n url: \"{{product.demoVideoUrl}}\",\n padding: \"0.5rem\",\n rounding: \"rounded-xl\",\n shadow: \"shadow-lg\",\n border: {\n width: \"border-2\",\n color: \"border-primary-300\",\n },\n },\n },\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAS,eAAe;AAKxB,SAAS,YAAY;AAId,IAAM,WAAW,oBAAoB;AAAA,EAC1C,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AAAA,EACb,MAAM;AAAA,EACN,cAAc;AAAA,IACZ,QAAQ;AAAA,IACR,SAAS,GAAI,MAAM,KAAM,CAAC;AAAA;AAAA,EAC5B;AAAA,EACA,eAAe;AAAA,IACb,QAAQ;AAAA,IACR,SAAS;AAAA;AAAA,EACX;AAAA,EACA,UAAU;AAAA,IACR,QAAQ;AAAA,IACR,SAAU,MAAM,KAAM;AAAA,EACxB;AAAA,EACA,WAAW;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA;AAAA,EACX;AAAA,EACA,OAAO,YAAY;AAAA,IACjB,KAAK,OAAO,aAAa;AAAA,MACvB,aACE;AAAA,MACF,SAAS;AAAA,MACT,UAAU;AAAA,QACR,UAAU;AAAA,QACV,iBAAiB;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,IACD,SAAS,KAAK;AAAA,MACZ,aAAa;AAAA,QACX,aAAa;AAAA,QACb,mBAAmB;AAAA,QACnB,OAAO;AAAA,QACP,iBAAiB;AAAA,QACjB,kBAAkB;AAAA,QAClB,cAAc;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,IACA,UAAU,KAAK;AAAA,MACb,YAAY;AAAA,QACV,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,QAAQ,KAAK,SAAS,UAAU,CAAC;AAAA,IACjC,QAAQ,KAAK,SAAS,UAAU,CAAC;AAAA,EACnC,CAAC;AACH,CAAC;AAIM,IAAM,WAAqC;AAAA,EAChD;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,KAAK;AAAA,MACL,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,MACL,KAAK;AAAA,MACL,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/page.ts"],"sourcesContent":["import { pageAttributesSchema } from \"./attributes\";\nimport { sectionSchema } from \"./bricks\";\nimport { Type, type Static } from \"@sinclair/typebox\";\n\nexport const pageSchema = Type.Object({\n id: Type.String({\n description: \"The unique ID of the page. Use a human readable url-safe slug\",\n examples: [\"home\", \"about-us\", \"products-list\"],\n }),\n label: Type.String({\n description: \"The label (name) of the page\",\n examples: [\"Home\", \"About us\", \"Products\"],\n }),\n sections: Type.Array(sectionSchema, {\n description: \"The sections of the page. See the Section schema\",\n }),\n attributes: pageAttributesSchema,\n});\n\nexport type Page = Static<typeof pageSchema>;\nexport type VersionedPage = Page & { version: string };\n\n/**\n * Page context represents the page config PLUS:\n * - the pathParams of the actual request.\n * - the resolved data for the page.\n */\nexport type PageContext = VersionedPage & {\n pathParams?: Record<string, string>;\n data?: Record<string, unknown[]>;\n};\n"],"mappings":";;;;;;;;;;AAEA,SAAS,YAAyB;AAE3B,IAAM,aAAa,KAAK,OAAO;AAAA,EACpC,IAAI,KAAK,OAAO;AAAA,IACd,aAAa;AAAA,IACb,UAAU,CAAC,QAAQ,YAAY,eAAe;AAAA,EAChD,CAAC;AAAA,EACD,OAAO,KAAK,OAAO;AAAA,IACjB,aAAa;AAAA,IACb,UAAU,CAAC,QAAQ,YAAY,UAAU;AAAA,EAC3C,CAAC;AAAA,EACD,UAAU,KAAK,MAAM,eAAe;AAAA,IAClC,aAAa;AAAA,EACf,CAAC;AAAA,EACD,YAAY;AACd,CAAC;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/bricks/manifests/box.manifest.ts"],"sourcesContent":["import { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps } from \"../props/helpers\";\nimport { Type } from \"@sinclair/typebox\";\nimport { borderRef, roundingRef } from \"../props/border\";\nimport { shadowRef } from \"../props/effects\";\nimport { cssLengthRef } from \"../props/css-length\";\nimport { directionRef } from \"../props/direction\";\nimport { RxBox } from \"react-icons/rx\";\nimport { alignItemsRef, justifyContentRef } from \"../props/align\";\nimport { colorPresetRef } from \"../props/color-preset\";\nimport { loopRef } from \"../props/dynamic\";\nimport type { BrickExample } from \"./_types\";\n\n// Generic container can hold any type of array data source\nexport const manifest = defineBrickManifest({\n type: \"box\",\n category: \"container\",\n name: \"Box\",\n description: \"A container for stacking bricks horizontally or vertically.\",\n aiInstructions: `Use the box component as a flexible container for organizing and arranging multiple bricks in horizontal or vertical layouts.\n\nWHEN TO USE:\n- Grouping related content elements (text + image + button)\n- Creating card-like layouts with multiple components\n- Building responsive grid systems with wrapping\n- Organizing form elements or input groups\n- Displaying repeated data from queries (products, team members, blog posts)\n- Creating structured layouts with consistent spacing\n\nLAYOUT GUIDELINES:\n- direction: \"flex-col\" for vertical stacking, \"flex-row\" for horizontal arrangement\n- gap: \"0.5rem\" for tight spacing, \"1rem\" for standard, \"2rem\" for spacious layouts\n- padding: \"1rem\" for standard padding, \"2rem\" for generous spacing, \"0\" for edge-to-edge\n- wrap: true for responsive grids that wrap on smaller screens, false for fixed layouts\n- justifyContent: \"justify-start\" for left-align, \"justify-center\" for center, \"justify-between\" for space-between\n- alignItems: \"items-stretch\" for equal heights, \"items-center\" for center-align, \"items-start\" for top-align\n\nSTYLING OPTIONS:\n- colorPreset: Use light backgrounds like \"primary-50\", \"neutral-100\", \"secondary-100\" for content containers\n- rounding: \"rounded-md\" for standard, \"rounded-lg\" for friendly, \"rounded-xl\"/\"rounded-2xl\" for modern\n- border: Add subtle borders with \"border\" width and colors like \"border-gray-200\", \"border-primary-300\"\n- shadow: \"shadow-sm\" for subtle depth, \"shadow-md\" for cards, \"shadow-lg\" for prominence\n\nCONTENT RULES:\n- Must contain at least 2 child bricks to be useful\n- Cannot contain other box components as direct children\n- Commonly contains: text, image, button, icon combinations\n- Perfect for repeating patterns using loop data\n\nDYNAMIC CONTENT:\n- Use loop property to repeat the box itself over data queries\n- Template variables work in all child components: \"{{ product.name}}\", \"{{user.email}}\"\n- Great for: product catalogs, team directories, blog listings\n\nAVOID:\n- Single child elements (use individual brick instead)\n- Nesting boxes inside boxes (use single box with proper layout)\n- Complex nested structures (break into separate boxes)`,\n isContainer: true,\n defaultWidth: {\n desktop: \"auto\",\n mobile: \"100%\",\n },\n defaultHeight: {\n desktop: \"auto\",\n },\n icon: RxBox,\n props: defineProps({\n colorPreset: Type.Optional(\n colorPresetRef({\n title: \"Color\",\n }),\n ),\n direction: directionRef({\n default: \"flex-col\",\n title: \"Direction\",\n description: \"Direction of the box layout\",\n }),\n justifyContent: Type.Optional(\n justifyContentRef({\n default: \"justify-center\",\n }),\n ),\n alignItems: Type.Optional(\n alignItemsRef({\n default: \"items-stretch\",\n }),\n ),\n gap: Type.Optional(\n cssLengthRef({\n title: \"Gap\",\n default: \"1rem\",\n description: \"Gap between children bricks.\",\n \"ai:instructions\":\n \"Can be a tailwind gap class like 'gap-1' or 'gap-2', or a custom value like '10px'\",\n \"ui:placeholder\": \"Not specified\",\n \"ui:styleId\": \"styles:gap\",\n }),\n ),\n padding: Type.Optional(\n cssLengthRef({\n default: \"1rem\",\n description: \"Padding inside the box.\",\n \"ai:instructions\": \"Use only a single value like '1rem' or '10px'\",\n title: \"Padding\",\n \"ui:placeholder\": \"Not specified\",\n \"ui:styleId\": \"styles:padding\",\n }),\n ),\n wrap: Type.Optional(\n Type.Boolean({\n title: \"Wrap\",\n description: \"Wrap bricks if they overflow the section.\",\n default: false,\n \"ui:styleId\": \"styles:wrap\",\n }),\n ),\n rounding: Type.Optional(\n roundingRef({\n default: \"rounded-md\",\n }),\n ),\n border: Type.Optional(borderRef()),\n shadow: Type.Optional(shadowRef()),\n loop: Type.Optional(loopRef()),\n $children: Type.Array(Type.Any(), {\n \"ui:field\": \"hidden\",\n description: \"List of nested bricks\",\n default: [],\n examples: [\n [\n {\n type: \"text\",\n props: {\n content: \"Hello World\",\n },\n },\n {\n type: \"image\",\n props: {\n src: \"https://via.placeholder.com/150\",\n alt: \"Placeholder Image\",\n },\n },\n ],\n ],\n }),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: BrickExample<Manifest>[] = [\n // BASIC LAYOUTS\n {\n description: \"Simple vertical layout - Basic text and image combination\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1rem\",\n padding: \"1.5rem\",\n $children: [\n {\n type: \"text\",\n props: {\n content:\n \"<h3>Welcome to Our Service</h3><p>We provide innovative solutions for modern businesses.</p>\",\n },\n },\n {\n type: \"image\",\n props: {\n src: \"https://via.placeholder.com/300x200\",\n alt: \"Service showcase\",\n },\n },\n {\n type: \"button\",\n props: {\n label: \"Learn More\",\n link: \"/services\",\n },\n },\n ],\n },\n },\n\n {\n description: \"Horizontal layout with wrapping - Perfect for responsive image galleries\",\n type: \"box\",\n props: {\n direction: \"flex-row\",\n gap: \"1rem\",\n wrap: true,\n justifyContent: \"justify-center\",\n padding: \"1rem\",\n $children: [\n {\n type: \"image\",\n props: {\n src: \"https://via.placeholder.com/150\",\n alt: \"Gallery image 1\",\n },\n },\n {\n type: \"image\",\n props: {\n src: \"https://via.placeholder.com/150\",\n alt: \"Gallery image 2\",\n },\n },\n {\n type: \"image\",\n props: {\n src: \"https://via.placeholder.com/150\",\n alt: \"Gallery image 3\",\n },\n },\n {\n type: \"image\",\n props: {\n src: \"https://via.placeholder.com/150\",\n alt: \"Gallery image 4\",\n },\n },\n ],\n },\n },\n\n // STYLED CONTAINERS\n {\n description: \"Content card with background and border - Professional presentation style\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1rem\",\n padding: \"2rem\",\n colorPreset: { color: \"primary-50\" },\n border: { width: \"border\", color: \"border-primary-200\" },\n rounding: \"rounded-lg\",\n shadow: \"shadow-md\",\n $children: [\n {\n type: \"text\",\n props: {\n content:\n \"<h3>Featured Article</h3><p>Discover the latest trends in technology and innovation that are shaping our future.</p>\",\n },\n },\n {\n type: \"image\",\n props: {\n src: \"https://via.placeholder.com/400x250\",\n alt: \"Technology trends\",\n },\n },\n {\n type: \"button\",\n props: {\n label: \"Read Full Article\",\n link: \"/articles/tech-trends\",\n },\n },\n ],\n },\n },\n\n // DYNAMIC CONTENT EXAMPLES\n {\n description: \"Employee directory using dynamic data - Shows team member profiles\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1.5rem\",\n padding: \"2rem\",\n colorPreset: { color: \"neutral-100\" },\n rounding: \"rounded-lg\",\n border: { width: \"border\", color: \"border-neutral-300\" },\n loop: { over: \"allEmployees\" },\n $children: [\n {\n type: \"image\",\n props: {\n src: \"{{allEmployees.photo}}\",\n alt: \"Photo of {{allEmployees.name}}\",\n },\n },\n {\n type: \"text\",\n props: {\n content:\n \"<h3>{{allEmployees.name}}</h3><p><strong>{{allEmployees.position}}</strong></p><p>{{allEmployees.department}} • {{allEmployees.email}}</p>\",\n },\n },\n {\n type: \"button\",\n props: {\n label: \"Contact {{allEmployees.name}}\",\n link: \"mailto:{{allEmployees.email}}\",\n },\n },\n ],\n },\n },\n\n {\n description: \"Blog post cards with horizontal layout - Great for article previews\",\n type: \"box\",\n props: {\n direction: \"flex-row\",\n gap: \"2rem\",\n padding: \"1.5rem\",\n justifyContent: \"justify-start\",\n alignItems: \"items-stretch\",\n colorPreset: { color: \"secondary-50\" },\n rounding: \"rounded-lg\",\n shadow: \"shadow-sm\",\n loop: { over: \"blogPosts\" },\n $children: [\n {\n type: \"image\",\n props: {\n src: \"{{blogPosts.featuredImage}}\",\n alt: \"{{blogPosts.title}}\",\n },\n },\n {\n type: \"text\",\n props: {\n content:\n \"<h4>{{blogPosts.title}}</h4><p>{{blogPosts.excerpt}}</p><p><em>By {{blogPosts.author}} • {{blogPosts.publishDate}}</em></p>\",\n },\n },\n {\n type: \"button\",\n props: {\n label: \"Read More\",\n link: \"/blog/{{blogPosts.slug}}\",\n },\n },\n ],\n },\n },\n\n {\n description: \"Product showcase cards with pricing - Perfect for e-commerce displays\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1rem\",\n padding: \"1.5rem\",\n justifyContent: \"justify-center\",\n alignItems: \"items-center\",\n colorPreset: { color: \"accent-50\" },\n border: { width: \"border-2\", color: \"border-accent-200\" },\n rounding: \"rounded-xl\",\n shadow: \"shadow-md\",\n loop: { over: \"featuredProducts\" },\n $children: [\n {\n type: \"image\",\n props: {\n src: \"{{featuredProducts.image}}\",\n alt: \"{{featuredProducts.name}}\",\n },\n },\n {\n type: \"text\",\n props: {\n content:\n \"<h3>{{featuredProducts.name}}</h3><p>{{featuredProducts.description}}</p><p><strong>${{featuredProducts.price}}</strong></p>\",\n },\n },\n {\n type: \"button\",\n props: {\n label: \"Add to Cart\",\n link: \"/cart/add/{{featuredProducts.id}}\",\n },\n },\n ],\n },\n },\n\n // RESPONSIVE GRID LAYOUTS\n {\n description: \"Team members with wrapping - Responsive grid that adapts to screen size\",\n type: \"box\",\n props: {\n direction: \"flex-row\",\n gap: \"2rem\",\n padding: \"2rem\",\n wrap: true,\n justifyContent: \"justify-center\",\n alignItems: \"items-start\",\n colorPreset: { color: \"secondary-100\" },\n rounding: \"rounded-lg\",\n loop: { over: \"teamMembers\" },\n $children: [\n {\n type: \"image\",\n props: {\n src: \"{{teamMembers.avatar}}\",\n alt: \"{{teamMembers.fullName}}\",\n },\n },\n {\n type: \"text\",\n props: {\n content:\n \"<h4>{{teamMembers.fullName}}</h4><p><strong>{{teamMembers.role}}</strong></p><p>{{teamMembers.bio}}</p>\",\n },\n },\n {\n type: \"button\",\n props: {\n label: \"View Profile\",\n link: \"/team/{{teamMembers.slug}}\",\n },\n },\n ],\n },\n },\n\n {\n description: \"Event listings with accent styling - Prominent call-to-action design\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1.25rem\",\n padding: \"2.5rem\",\n alignItems: \"items-center\",\n colorPreset: { color: \"accent-100\" },\n border: { width: \"border-2\", color: \"border-accent-300\" },\n rounding: \"rounded-lg\",\n shadow: \"shadow-lg\",\n loop: { over: \"upcomingEvents\" },\n $children: [\n {\n type: \"icon\",\n props: {\n icon: \"mdi:calendar-event\",\n size: \"2rem\",\n color: \"#f59e0b\",\n },\n },\n {\n type: \"text\",\n props: {\n content:\n \"<h3>{{upcomingEvents.title}}</h3><p><strong>{{upcomingEvents.date}} at {{upcomingEvents.time}}</strong></p><p>{{upcomingEvents.venue}} • {{upcomingEvents.city}}</p><p>{{upcomingEvents.description}}</p>\",\n },\n },\n {\n type: \"button\",\n props: {\n label: \"Register Now\",\n link: \"/events/{{upcomingEvents.slug}}/register\",\n },\n },\n ],\n },\n },\n\n // TESTIMONIALS & REVIEWS\n {\n description: \"Customer testimonials with star ratings - Social proof presentation\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1rem\",\n padding: \"3rem\",\n justifyContent: \"justify-center\",\n alignItems: \"items-center\",\n colorPreset: { color: \"neutral-50\" },\n shadow: \"shadow-lg\",\n rounding: \"rounded-2xl\",\n loop: { over: \"customerTestimonials\" },\n $children: [\n {\n type: \"icon\",\n props: {\n icon: \"mdi:format-quote-open\",\n size: \"2rem\",\n color: \"#6b7280\",\n },\n },\n {\n type: \"text\",\n props: {\n content:\n '<p style=\"text-align: center\"><em>\"{{customerTestimonials.quote}}\"</em></p><p style=\"text-align: center\"><strong>{{customerTestimonials.customerName}}</strong></p><p style=\"text-align: center\">{{customerTestimonials.company}} • {{customerTestimonials.position}}</p>',\n },\n },\n {\n type: \"icon\",\n props: {\n icon: \"mdi:star\",\n size: \"1.5rem\",\n color: \"#fbbf24\",\n },\n },\n ],\n },\n },\n\n {\n description: \"Portfolio project showcase - Creative work presentation with client details\",\n type: \"box\",\n props: {\n direction: \"flex-row\",\n gap: \"1.5rem\",\n padding: \"2rem\",\n alignItems: \"items-start\",\n justifyContent: \"justify-start\",\n colorPreset: { color: \"primary-50\" },\n border: { width: \"border\", color: \"border-primary-200\" },\n rounding: \"rounded-lg\",\n loop: { over: \"portfolioProjects\" },\n $children: [\n {\n type: \"image\",\n props: {\n src: \"{{portfolioProjects.thumbnail}}\",\n alt: \"{{portfolioProjects.projectName}}\",\n },\n },\n {\n type: \"text\",\n props: {\n content:\n \"<h4>{{portfolioProjects.projectName}}</h4><p><strong>{{portfolioProjects.client}}</strong></p><p>{{portfolioProjects.category}} • {{portfolioProjects.year}}</p><p>{{portfolioProjects.shortDescription}}</p>\",\n },\n },\n {\n type: \"button\",\n props: {\n label: \"View Project\",\n link: \"/portfolio/{{portfolioProjects.slug}}\",\n },\n },\n ],\n },\n },\n\n // NEWS & ARTICLES\n {\n description: \"News article previews with categories - Clean editorial layout\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1.5rem\",\n padding: \"2rem\",\n colorPreset: { color: \"neutral-100\" },\n border: { width: \"border\", color: \"border-neutral-300\" },\n rounding: \"rounded-md\",\n loop: { over: \"latestNews\" },\n $children: [\n {\n type: \"text\",\n props: {\n content:\n \"<h3>{{latestNews.headline}}</h3><p><strong>{{latestNews.category}}</strong> • {{latestNews.publishedDate}}</p><p>{{latestNews.summary}}</p>\",\n },\n },\n {\n type: \"button\",\n props: {\n label: \"Read Full Article\",\n link: \"/news/{{latestNews.slug}}\",\n },\n },\n ],\n },\n },\n\n // SERVICE OFFERINGS\n {\n description: \"Service packages with icons and pricing - Professional service presentation\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1rem\",\n padding: \"2rem\",\n justifyContent: \"justify-center\",\n alignItems: \"items-center\",\n colorPreset: { color: \"secondary-200\" },\n rounding: \"rounded-xl\",\n shadow: \"shadow-md\",\n loop: { over: \"companyServices\" },\n $children: [\n {\n type: \"icon\",\n props: {\n icon: \"{{companyServices.iconName}}\",\n size: \"2.5rem\",\n color: \"{{companyServices.iconColor}}\",\n },\n },\n {\n type: \"text\",\n props: {\n content:\n \"<h4 style='text-align: center'>{{companyServices.serviceName}}</h4><p style='text-align: center'>{{companyServices.description}}</p><p style='text-align: center'><strong>Starting at ${{companyServices.price}}</strong></p>\",\n },\n },\n {\n type: \"button\",\n props: {\n label: \"Learn More\",\n link: \"/services/{{companyServices.serviceSlug}}\",\n },\n },\n ],\n },\n },\n];\n"],"mappings":"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","names":[]}
|