@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,25 +1,26 @@
|
|
|
1
1
|
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
2
|
|
|
3
|
+
import {
|
|
4
|
+
rounding
|
|
5
|
+
} from "./chunk-SRYBJ6NQ.js";
|
|
3
6
|
import {
|
|
4
7
|
defineProps
|
|
5
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-VTCHJT4O.js";
|
|
6
9
|
import {
|
|
7
|
-
|
|
8
|
-
} from "./chunk-
|
|
10
|
+
fontSize
|
|
11
|
+
} from "./chunk-2U5U3CCJ.js";
|
|
9
12
|
import {
|
|
10
|
-
|
|
11
|
-
} from "./chunk-
|
|
13
|
+
urlOrPageId
|
|
14
|
+
} from "./chunk-SQXZNGQF.js";
|
|
12
15
|
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
} from "./chunk-N3ZTQD5I.js";
|
|
16
|
+
colorPreset
|
|
17
|
+
} from "./chunk-IEMCCHM4.js";
|
|
16
18
|
import {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
} from "./chunk-NTLAKMMQ.js";
|
|
19
|
+
defineBrickManifest
|
|
20
|
+
} from "./chunk-J45LSQT6.js";
|
|
20
21
|
import {
|
|
21
|
-
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
StringEnum
|
|
23
|
+
} from "./chunk-GDYCCB3B.js";
|
|
23
24
|
|
|
24
25
|
// src/shared/bricks/manifests/button.manifest.ts
|
|
25
26
|
import { Type } from "@sinclair/typebox";
|
|
@@ -41,6 +42,7 @@ STYLING GUIDELINES:
|
|
|
41
42
|
- colorPreset: Use "primary-500" for main CTAs, "secondary-500" for secondary actions, "neutral-500" for low-priority actions, "accent-500" for highlight actions
|
|
42
43
|
- fontSize: "text-sm" for compact buttons, "text-base" for standard, "text-lg" for emphasis, "text-xl" for hero buttons
|
|
43
44
|
- rounding: "rounded-none" for sharp/modern, "rounded-md" for standard, "rounded-lg" for friendly, "rounded-full" for pills
|
|
45
|
+
- fill: Use "solid" for primary actions with background color, "outline" for secondary actions with transparent background and border
|
|
44
46
|
- link: Use full URLs for external (https://example.com), relative paths for internal (/about), or page IDs for site pages (about-us)
|
|
45
47
|
|
|
46
48
|
DYNAMIC CONTENT:
|
|
@@ -63,15 +65,15 @@ AVOID:
|
|
|
63
65
|
props: defineProps(
|
|
64
66
|
{
|
|
65
67
|
colorPreset: Type.Optional(
|
|
66
|
-
|
|
68
|
+
colorPreset({
|
|
67
69
|
default: { color: "primary-500" },
|
|
68
70
|
title: "Color",
|
|
69
71
|
"ui:default-gradient-direction": "bg-gradient-to-b"
|
|
70
72
|
})
|
|
71
73
|
),
|
|
72
|
-
label:
|
|
74
|
+
label: Type.String({ title: "Label", default: "My button", metadata: { category: "content" } }),
|
|
73
75
|
fontSize: Type.Optional(
|
|
74
|
-
|
|
76
|
+
fontSize({
|
|
75
77
|
title: "Font size",
|
|
76
78
|
description: "The font size of the button text.",
|
|
77
79
|
default: "text-base",
|
|
@@ -80,12 +82,21 @@ AVOID:
|
|
|
80
82
|
})
|
|
81
83
|
),
|
|
82
84
|
rounding: Type.Optional(
|
|
83
|
-
|
|
85
|
+
rounding({
|
|
84
86
|
default: "rounded-md"
|
|
85
87
|
})
|
|
86
88
|
),
|
|
87
|
-
|
|
88
|
-
|
|
89
|
+
fill: Type.Optional(
|
|
90
|
+
StringEnum(["solid", "outline"], {
|
|
91
|
+
title: "Fill",
|
|
92
|
+
description: "Button appearance style - solid background or outlined.",
|
|
93
|
+
default: "solid",
|
|
94
|
+
enumNames: ["Solid", "Outline"],
|
|
95
|
+
"ui:field": "enum",
|
|
96
|
+
"ui:display": "select"
|
|
97
|
+
})
|
|
98
|
+
),
|
|
99
|
+
link: urlOrPageId({
|
|
89
100
|
title: "Link",
|
|
90
101
|
"ui:placeholder": "https://example.com",
|
|
91
102
|
metadata: { category: "content" }
|
|
@@ -104,7 +115,8 @@ var examples = [
|
|
|
104
115
|
link: "/signup",
|
|
105
116
|
colorPreset: { color: "primary-500" },
|
|
106
117
|
fontSize: "text-base",
|
|
107
|
-
rounding: "rounded-md"
|
|
118
|
+
rounding: "rounded-md",
|
|
119
|
+
fill: "solid"
|
|
108
120
|
}
|
|
109
121
|
},
|
|
110
122
|
{
|
|
@@ -115,7 +127,8 @@ var examples = [
|
|
|
115
127
|
link: "/about",
|
|
116
128
|
colorPreset: { color: "secondary-500" },
|
|
117
129
|
fontSize: "text-base",
|
|
118
|
-
rounding: "rounded-md"
|
|
130
|
+
rounding: "rounded-md",
|
|
131
|
+
fill: "outline"
|
|
119
132
|
}
|
|
120
133
|
},
|
|
121
134
|
{
|
|
@@ -161,7 +174,7 @@ var examples = [
|
|
|
161
174
|
colorPreset: { color: "secondary-600" },
|
|
162
175
|
fontSize: "text-base",
|
|
163
176
|
rounding: "rounded-lg",
|
|
164
|
-
|
|
177
|
+
fill: "outline"
|
|
165
178
|
}
|
|
166
179
|
},
|
|
167
180
|
// INTERNAL NAVIGATION EXAMPLES
|
|
@@ -197,7 +210,7 @@ var examples = [
|
|
|
197
210
|
colorPreset: { color: "primary-600" },
|
|
198
211
|
fontSize: "text-base",
|
|
199
212
|
rounding: "rounded-md",
|
|
200
|
-
|
|
213
|
+
fill: "outline"
|
|
201
214
|
}
|
|
202
215
|
},
|
|
203
216
|
{
|
|
@@ -243,7 +256,7 @@ var examples = [
|
|
|
243
256
|
colorPreset: { color: "primary-600" },
|
|
244
257
|
fontSize: "text-xl",
|
|
245
258
|
rounding: "rounded-xl",
|
|
246
|
-
|
|
259
|
+
fill: "outline"
|
|
247
260
|
}
|
|
248
261
|
},
|
|
249
262
|
{
|
|
@@ -266,7 +279,7 @@ var examples = [
|
|
|
266
279
|
colorPreset: { color: "primary-500" },
|
|
267
280
|
fontSize: "text-base",
|
|
268
281
|
rounding: "rounded-none",
|
|
269
|
-
|
|
282
|
+
fill: "outline"
|
|
270
283
|
}
|
|
271
284
|
},
|
|
272
285
|
// GRADIENT EXAMPLES
|
|
@@ -296,7 +309,32 @@ var examples = [
|
|
|
296
309
|
},
|
|
297
310
|
fontSize: "text-base",
|
|
298
311
|
rounding: "rounded-md",
|
|
299
|
-
|
|
312
|
+
fill: "outline"
|
|
313
|
+
}
|
|
314
|
+
},
|
|
315
|
+
// FILL STYLE COMPARISON EXAMPLES
|
|
316
|
+
{
|
|
317
|
+
description: "Solid fill button - Traditional filled background style",
|
|
318
|
+
type: "button",
|
|
319
|
+
props: {
|
|
320
|
+
label: "Solid Button",
|
|
321
|
+
link: "/solid",
|
|
322
|
+
colorPreset: { color: "primary-500" },
|
|
323
|
+
fontSize: "text-base",
|
|
324
|
+
rounding: "rounded-md",
|
|
325
|
+
fill: "solid"
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
description: "Outline fill button - Transparent background with border",
|
|
330
|
+
type: "button",
|
|
331
|
+
props: {
|
|
332
|
+
label: "Outline Button",
|
|
333
|
+
link: "/outline",
|
|
334
|
+
colorPreset: { color: "primary-500" },
|
|
335
|
+
fontSize: "text-base",
|
|
336
|
+
rounding: "rounded-md",
|
|
337
|
+
fill: "outline"
|
|
300
338
|
}
|
|
301
339
|
}
|
|
302
340
|
];
|
|
@@ -305,4 +343,4 @@ export {
|
|
|
305
343
|
manifest,
|
|
306
344
|
examples
|
|
307
345
|
};
|
|
308
|
-
//# sourceMappingURL=chunk-
|
|
346
|
+
//# sourceMappingURL=chunk-7U5WPHXB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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 { urlOrPageId } from \"../props/string\";\nimport { rounding } from \"../props/border\";\nimport { StringEnum } from \"~/shared/utils/string-enum\";\nimport { fontSize } from \"../props/text\";\nimport { colorPreset } 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- fill: Use \"solid\" for primary actions with background color, \"outline\" for secondary actions with transparent background and border\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 colorPreset({\n default: { color: \"primary-500\" },\n title: \"Color\",\n \"ui:default-gradient-direction\": \"bg-gradient-to-b\",\n }),\n ),\n label: Type.String({ title: \"Label\", default: \"My button\", metadata: { category: \"content\" } }),\n fontSize: Type.Optional(\n fontSize({\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 rounding({\n default: \"rounded-md\",\n }),\n ),\n fill: Type.Optional(\n StringEnum([\"solid\", \"outline\"], {\n title: \"Fill\",\n description: \"Button appearance style - solid background or outlined.\",\n default: \"solid\",\n enumNames: [\"Solid\", \"Outline\"],\n \"ui:field\": \"enum\",\n \"ui:display\": \"select\",\n }),\n ),\n link: urlOrPageId({\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 fill: \"solid\",\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 fill: \"outline\",\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 fill: \"outline\",\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 fill: \"outline\",\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 fill: \"outline\",\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 fill: \"outline\",\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 fill: \"outline\",\n },\n },\n\n // FILL STYLE COMPARISON EXAMPLES\n {\n description: \"Solid fill button - Traditional filled background style\",\n type: \"button\",\n props: {\n label: \"Solid Button\",\n link: \"/solid\",\n colorPreset: { color: \"primary-500\" },\n fontSize: \"text-base\",\n rounding: \"rounded-md\",\n fill: \"solid\",\n },\n },\n {\n description: \"Outline fill button - Transparent background with border\",\n type: \"button\",\n props: {\n label: \"Outline Button\",\n link: \"/outline\",\n colorPreset: { color: \"primary-500\" },\n fontSize: \"text-base\",\n rounding: \"rounded-md\",\n fill: \"outline\",\n },\n },\n];\n"],"mappings":"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","names":[]}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
typedRef
|
|
5
|
-
} from "./chunk-A2QPY54H.js";
|
|
6
3
|
|
|
7
4
|
// src/shared/bricks/props/tags.ts
|
|
8
5
|
import { Type } from "@sinclair/typebox";
|
|
@@ -23,12 +20,8 @@ function tags(options) {
|
|
|
23
20
|
}
|
|
24
21
|
);
|
|
25
22
|
}
|
|
26
|
-
function tagsRef(options = {}) {
|
|
27
|
-
return typedRef("content:tags", { ...options });
|
|
28
|
-
}
|
|
29
23
|
|
|
30
24
|
export {
|
|
31
|
-
tags
|
|
32
|
-
tagsRef
|
|
25
|
+
tags
|
|
33
26
|
};
|
|
34
|
-
//# sourceMappingURL=chunk-
|
|
27
|
+
//# sourceMappingURL=chunk-BHARJBEK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/bricks/props/tags.ts"],"sourcesContent":["import { type Static, Type, type StringOptions } from \"@sinclair/typebox\";\n\nexport function tags(options?: StringOptions) {\n return Type.Array(\n Type.String({\n title: options?.title ?? \"Tags\",\n ...options,\n }),\n {\n // $id: \"content:tags\",\n \"ui:field\": \"tags\",\n title: options?.title ?? \"Tags\",\n metadata: {\n category: \"content\",\n },\n ...options,\n },\n );\n}\n\nexport type TagsSettings = Static<ReturnType<typeof tags>>;\n"],"mappings":";;;;AAAA,SAAsB,YAAgC;AAE/C,SAAS,KAAK,SAAyB;AAC5C,SAAO,KAAK;AAAA,IACV,KAAK,OAAO;AAAA,MACV,OAAO,SAAS,SAAS;AAAA,MACzB,GAAG;AAAA,IACL,CAAC;AAAA,IACD;AAAA;AAAA,MAEE,YAAY;AAAA,MACZ,OAAO,SAAS,SAAS;AAAA,MACzB,UAAU;AAAA,QACR,UAAU;AAAA,MACZ;AAAA,MACA,GAAG;AAAA,IACL;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
border,
|
|
5
|
+
rounding
|
|
6
|
+
} from "./chunk-SRYBJ6NQ.js";
|
|
6
7
|
import {
|
|
7
|
-
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
defineProps
|
|
9
|
+
} from "./chunk-VTCHJT4O.js";
|
|
9
10
|
import {
|
|
10
|
-
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
textContent
|
|
12
|
+
} from "./chunk-2U5U3CCJ.js";
|
|
12
13
|
import {
|
|
13
|
-
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
image
|
|
15
|
+
} from "./chunk-DRQKKPTX.js";
|
|
15
16
|
import {
|
|
16
|
-
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
urlOrPageId
|
|
18
|
+
} from "./chunk-SQXZNGQF.js";
|
|
18
19
|
import {
|
|
19
|
-
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
loop
|
|
21
|
+
} from "./chunk-XFZQGRRL.js";
|
|
21
22
|
import {
|
|
22
|
-
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
shadow
|
|
24
|
+
} from "./chunk-5RCC2STG.js";
|
|
24
25
|
import {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
} from "./chunk-NTLAKMMQ.js";
|
|
26
|
+
colorPreset
|
|
27
|
+
} from "./chunk-IEMCCHM4.js";
|
|
28
28
|
import {
|
|
29
|
-
|
|
30
|
-
} from "./chunk-
|
|
29
|
+
defineBrickManifest
|
|
30
|
+
} from "./chunk-J45LSQT6.js";
|
|
31
31
|
import {
|
|
32
32
|
StringEnum
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-GDYCCB3B.js";
|
|
34
34
|
|
|
35
35
|
// src/shared/bricks/manifests/card.manifest.ts
|
|
36
36
|
import { BsCardText } from "react-icons/bs";
|
|
@@ -39,7 +39,22 @@ var manifest = defineBrickManifest({
|
|
|
39
39
|
type: "card",
|
|
40
40
|
name: "Card",
|
|
41
41
|
description: "A card that can have a title, image, and content.",
|
|
42
|
-
aiInstructions:
|
|
42
|
+
aiInstructions: `Use this brick to create visually distinct content blocks (product, feature, testimonial, event, article, CTA, etc.).
|
|
43
|
+
|
|
44
|
+
Guidelines:
|
|
45
|
+
- Button is REQUIRED.
|
|
46
|
+
- Always provide a short action label (1-3 words) and pick a color matching semantic weight (primary/accent for primary actions, neutral/secondary for low emphasis).
|
|
47
|
+
- Image is OPTIONAL. If present you may set imagePosition to top | middle | bottom. Default is top.
|
|
48
|
+
- Pick middle for vertically centered feature highlights, bottom for caption-first layouts.
|
|
49
|
+
- Set noTitle: true when the card is intentionally title-less (e.g. a quote card or pure media focus).
|
|
50
|
+
- Do NOT include an empty title string alongside noTitle.
|
|
51
|
+
- Use dynamic tokens (e.g. {{products.price}}) instead of duplicating literal values.
|
|
52
|
+
- Prefer gradient presets for more visual emphasis (e.g. primary-gradient-400 with gradientDirection).
|
|
53
|
+
- border + rounding + shadow should be cohesive: stronger borders pair well with larger rounding + moderate shadow; minimal / flat cards may use border-0 + no shadow.
|
|
54
|
+
- For internal navigation you can supply a page ID (e.g. 'about') OR a relative/absolute URL (e.g. '/pricing', 'https://example.com').
|
|
55
|
+
- Keep HTML inside text minimal (<strong>, <em>, <br>) \u2014 for richer structure consider multiple bricks instead.
|
|
56
|
+
- Avoid mixing noTitle with large heading text embedded inside the text field \u2014 in that case keep a proper title.
|
|
57
|
+
- Return ONLY valid properties defined in the schema; do not invent new ones.`,
|
|
43
58
|
icon: BsCardText,
|
|
44
59
|
defaultWidth: { desktop: "400px", mobile: "100%" },
|
|
45
60
|
minWidth: { desktop: 300 },
|
|
@@ -47,13 +62,13 @@ var manifest = defineBrickManifest({
|
|
|
47
62
|
maxWidth: { desktop: 650 },
|
|
48
63
|
props: defineProps({
|
|
49
64
|
colorPreset: Type.Optional(
|
|
50
|
-
|
|
65
|
+
colorPreset({
|
|
51
66
|
title: "Color preset",
|
|
52
67
|
default: { color: "base-100" }
|
|
53
68
|
})
|
|
54
69
|
),
|
|
55
70
|
cardImage: Type.Optional(
|
|
56
|
-
|
|
71
|
+
image({
|
|
57
72
|
"ui:responsive": "desktop",
|
|
58
73
|
metadata: {
|
|
59
74
|
category: "content"
|
|
@@ -83,24 +98,24 @@ var manifest = defineBrickManifest({
|
|
|
83
98
|
"ui:responsive": "desktop"
|
|
84
99
|
})
|
|
85
100
|
),
|
|
86
|
-
title: Type.Optional(
|
|
87
|
-
text: Type.Optional(
|
|
101
|
+
title: Type.Optional(textContent({ title: "Title" })),
|
|
102
|
+
text: Type.Optional(textContent({ title: "Text" })),
|
|
88
103
|
rounding: Type.Optional(
|
|
89
|
-
|
|
104
|
+
rounding({
|
|
90
105
|
default: "rounded-md"
|
|
91
106
|
})
|
|
92
107
|
),
|
|
93
108
|
border: Type.Optional(
|
|
94
|
-
|
|
109
|
+
border({
|
|
95
110
|
// default: { width: "border", color: "border-base-300" },
|
|
96
111
|
})
|
|
97
112
|
),
|
|
98
113
|
shadow: Type.Optional(
|
|
99
|
-
|
|
114
|
+
shadow({
|
|
100
115
|
default: "shadow-sm"
|
|
101
116
|
})
|
|
102
117
|
),
|
|
103
|
-
loop: Type.Optional(
|
|
118
|
+
loop: Type.Optional(loop()),
|
|
104
119
|
button: Type.Object(
|
|
105
120
|
{
|
|
106
121
|
label: Type.String({
|
|
@@ -111,7 +126,7 @@ var manifest = defineBrickManifest({
|
|
|
111
126
|
category: "content"
|
|
112
127
|
}
|
|
113
128
|
}),
|
|
114
|
-
url:
|
|
129
|
+
url: urlOrPageId({
|
|
115
130
|
title: "Button URL",
|
|
116
131
|
description: "The URL the button should link to.",
|
|
117
132
|
metadata: {
|
|
@@ -512,4 +527,4 @@ export {
|
|
|
512
527
|
manifest,
|
|
513
528
|
examples
|
|
514
529
|
};
|
|
515
|
-
//# sourceMappingURL=chunk-
|
|
530
|
+
//# sourceMappingURL=chunk-BZTWZC77.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/bricks/manifests/card.manifest.ts"],"sourcesContent":["import { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps } from \"../props/helpers\";\nimport { textContent } from \"../props/text\";\nimport { BsCardText } from \"react-icons/bs\";\nimport { image } from \"../props/image\";\nimport { type Static, Type } from \"@sinclair/typebox\";\nimport type { BrickProps } from \"../props/types\";\nimport { shadow } from \"../props/effects\";\nimport { border, rounding } from \"../props/border\";\nimport { colorPreset } from \"../props/color-preset\";\nimport { loop } from \"../props/dynamic\";\nimport { StringEnum } from \"~/shared/utils/string-enum\";\nimport { urlOrPageId } from \"../props/string\";\nimport type { BrickExample } from \"./_types\";\n\nexport const manifest = defineBrickManifest({\n type: \"card\",\n name: \"Card\",\n description: \"A card that can have a title, image, and content.\",\n aiInstructions: `Use this brick to create visually distinct content blocks (product, feature, testimonial, event, article, CTA, etc.).\n\n Guidelines:\n- Button is REQUIRED.\n- Always provide a short action label (1-3 words) and pick a color matching semantic weight (primary/accent for primary actions, neutral/secondary for low emphasis).\n- Image is OPTIONAL. If present you may set imagePosition to top | middle | bottom. Default is top.\n- Pick middle for vertically centered feature highlights, bottom for caption-first layouts.\n- Set noTitle: true when the card is intentionally title-less (e.g. a quote card or pure media focus).\n- Do NOT include an empty title string alongside noTitle.\n- Use dynamic tokens (e.g. {{products.price}}) instead of duplicating literal values.\n- Prefer gradient presets for more visual emphasis (e.g. primary-gradient-400 with gradientDirection).\n- border + rounding + shadow should be cohesive: stronger borders pair well with larger rounding + moderate shadow; minimal / flat cards may use border-0 + no shadow.\n- For internal navigation you can supply a page ID (e.g. 'about') OR a relative/absolute URL (e.g. '/pricing', 'https://example.com').\n- Keep HTML inside text minimal (<strong>, <em>, <br>) — for richer structure consider multiple bricks instead.\n- Avoid mixing noTitle with large heading text embedded inside the text field — in that case keep a proper title.\n- Return ONLY valid properties defined in the schema; do not invent new ones.`,\n icon: BsCardText,\n defaultWidth: { desktop: \"400px\", mobile: \"100%\" },\n minWidth: { desktop: 300 },\n minHeight: { mobile: 200, desktop: 200 },\n maxWidth: { desktop: 650 },\n props: defineProps({\n colorPreset: Type.Optional(\n colorPreset({\n title: \"Color preset\",\n default: { color: \"base-100\" },\n }),\n ),\n\n cardImage: Type.Optional(\n image({\n \"ui:responsive\": \"desktop\",\n metadata: {\n category: \"content\",\n },\n }),\n ),\n imagePosition: Type.Optional(\n StringEnum([\"top\", \"middle\", \"bottom\"], {\n enumNames: [\"Top\", \"Middle\", \"Bottom\"],\n title: \"Image Position\",\n description: \"Where the image should be placed in the card\",\n default: \"top\",\n \"ui:responsive\": \"desktop\",\n metadata: {\n category: \"content\",\n filter: (manifestProps: Manifest[\"props\"], formData: Static<Manifest[\"props\"]>) => {\n return !!formData.cardImage?.src;\n },\n },\n }),\n ),\n noTitle: Type.Optional(\n Type.Boolean({\n title: \"No Title\",\n description: \"Whether to hide the card title\",\n default: false,\n \"ui:responsive\": \"desktop\",\n }),\n ),\n title: Type.Optional(textContent({ title: \"Title\" })),\n text: Type.Optional(textContent({ title: \"Text\" })),\n rounding: Type.Optional(\n rounding({\n default: \"rounded-md\",\n }),\n ),\n border: Type.Optional(\n border({\n // default: { width: \"border\", color: \"border-base-300\" },\n }),\n ),\n shadow: Type.Optional(\n shadow({\n default: \"shadow-sm\",\n }),\n ),\n loop: Type.Optional(loop()),\n button: Type.Object(\n {\n label: Type.String({\n title: \"Button label\",\n default: \"Click me\",\n examples: [\"Learn more\", \"Buy now\", \"Sign up\"],\n metadata: {\n category: \"content\",\n },\n }),\n url: urlOrPageId({\n title: \"Button URL\",\n description: \"The URL the button should link to.\",\n metadata: {\n category: \"content\",\n },\n }),\n color: Type.Optional(\n StringEnum([\"btn-neutral\", \"btn-primary\", \"btn-secondary\", \"btn-accent\"], {\n enumNames: [\"Neutral\", \"Primary\", \"Secondary\", \"Accent\"],\n title: \"Color\",\n default: \"btn-primary\",\n }),\n ),\n },\n { title: \"Button\", description: \"Button displayed at the bottom of the card\" },\n ),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: BrickExample<Manifest>[] = [\n {\n description: \"A simple card with a title and content\",\n type: \"card\",\n props: {\n title: \"Card Title\",\n text: \"This is the body of the card.\",\n button: {\n label: \"Learn more\",\n url: \"/learn-more\",\n color: \"btn-primary\",\n },\n },\n },\n // IMAGE POSITION MIDDLE VARIANT\n {\n description: \"Feature highlight card with centered image (imagePosition=middle)\",\n type: \"card\",\n props: {\n cardImage: { src: \"https://via.placeholder.com/420x240\", alt: \"Feature visual\" },\n imagePosition: \"middle\",\n title: \"Blazing Performance\",\n text: \"Our new engine reduces processing time by 45% while maintaining reliability.\",\n colorPreset: { color: \"primary-100\" },\n border: { width: \"border\", color: \"border-primary-200\" },\n rounding: \"rounded-lg\",\n shadow: \"shadow-sm\",\n button: { label: \"Learn More\", url: \"/features/performance\", color: \"btn-primary\" },\n },\n },\n // IMAGE POSITION BOTTOM VARIANT\n {\n description: \"Case study card with image at the bottom (imagePosition=bottom)\",\n type: \"card\",\n props: {\n title: \"Case Study: ScaleOps\",\n text: \"How ScaleOps handled 10x growth with zero downtime using our platform.\",\n cardImage: { src: \"https://via.placeholder.com/600x260\", alt: \"Scale graph\" },\n imagePosition: \"bottom\",\n colorPreset: { color: \"secondary-50\" },\n rounding: \"rounded-md\",\n shadow: \"shadow-sm\",\n button: { label: \"Read Study\", url: \"/cases/scaleops\", color: \"btn-secondary\" },\n },\n },\n // NO TITLE VARIANT\n {\n description: \"Quote / testimonial style card without a title (uses noTitle=true)\",\n type: \"card\",\n props: {\n noTitle: true,\n text: '\"This toolkit accelerated our launch by weeks — the component quality is outstanding.\"<br><em>— CTO, FinEdge</em>',\n colorPreset: { color: \"neutral-100\" },\n border: { width: \"border\", color: \"border-neutral-300\" },\n rounding: \"rounded-xl\",\n shadow: \"shadow-sm\",\n button: { label: \"See More\", url: \"/testimonials\", color: \"btn-neutral\" },\n },\n },\n // INTERNAL PAGE ID LINK VARIANT\n {\n description: \"Internal navigation card using a page ID instead of a URL\",\n type: \"card\",\n props: {\n title: \"About Our Mission\",\n text: \"Learn how we're building an open, extensible site generation platform for modern teams.\",\n colorPreset: { color: \"base-100\" },\n rounding: \"rounded-md\",\n button: { label: \"About Us\", url: \"about\", color: \"btn-primary\" },\n },\n },\n // GRADIENT & STRONG BORDER VARIANT\n {\n description: \"High-emphasis promotional card using gradient background and thick border\",\n type: \"card\",\n props: {\n title: \"Limited Time Offer\",\n text: \"Upgrade now and receive a complimentary strategy session plus extended analytics access.\",\n colorPreset: { color: \"primary-gradient-400\", gradientDirection: \"bg-gradient-to-tr\" },\n border: { width: \"border-4\", color: \"border-primary-400\" },\n rounding: \"rounded-xl\",\n shadow: \"shadow-lg\",\n button: { label: \"Upgrade\", url: \"/pricing\", color: \"btn-accent\" },\n },\n },\n // MINIMAL / FLAT VARIANT (no border, no shadow, subtle preset)\n {\n description: \"Minimal flat information card (border-0, no shadow)\",\n type: \"card\",\n props: {\n title: \"Maintenance Window\",\n text: \"Scheduled maintenance on Saturday 02:00–03:00 UTC. API responses may be delayed.\",\n colorPreset: { color: \"neutral-50\" },\n border: { width: \"border-0\", color: \"border-neutral-200\" },\n button: { label: \"Status Page\", url: \"/status\", color: \"btn-neutral\" },\n },\n },\n // DARK / INVERTED VARIANT\n {\n description: \"Dark themed spotlight card (primary-800 background)\",\n type: \"card\",\n props: {\n title: \"Night Mode Preview\",\n text: \"Experience the new adaptive dark theme optimized for low ambient light environments.\",\n colorPreset: { color: \"primary-800\" },\n border: { width: \"border\", color: \"border-primary-600\" },\n rounding: \"rounded-lg\",\n shadow: \"shadow-md\",\n button: { label: \"Preview\", url: \"/themes/dark\", color: \"btn-primary\" },\n },\n },\n {\n description: \"Feature card with large padding and background\",\n type: \"card\",\n props: {\n title: \"Key Feature\",\n text: \"This feature provides exceptional value and enhances user experience significantly.\",\n colorPreset: { color: \"primary-50\" },\n border: { width: \"border\", color: \"border-primary-200\" },\n rounding: \"rounded-lg\",\n shadow: \"shadow-sm\",\n button: {\n label: \"Discover More\",\n url: \"/features\",\n color: \"btn-primary\",\n },\n },\n },\n {\n description: \"Blog post card with image at the bottom\",\n type: \"card\",\n props: {\n title: \"Future of Tech\",\n text: \"Exploring emerging trends and innovations that will shape our digital landscape in the coming decade.\",\n cardImage: {\n src: \"https://via.placeholder.com/400x200\",\n alt: \"Technology concept\",\n },\n button: {\n label: \"Read More\",\n url: \"/blog/{{ blogPosts.$slug }}\",\n color: \"btn-primary\",\n },\n },\n },\n {\n description: \"Minimal centered card without image\",\n type: \"card\",\n props: {\n title: \"Simple Announcement\",\n text: \"Important updates will be posted here regularly.\",\n button: {\n label: \"View Updates\",\n url: \"/updates\",\n color: \"btn-neutral\",\n },\n },\n },\n {\n description: \"Event card with multiple variants\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"https://via.placeholder.com/400x250\",\n alt: \"Event venue\",\n },\n title: \"Annual Conference 2025\",\n text: \"Join us for three days of inspiring talks, networking opportunities, and hands-on workshops.\",\n button: {\n label: \"Register Now\",\n url: \"/events/conference-2025\",\n color: \"btn-primary\",\n },\n },\n },\n {\n description: \"News article card with compact layout\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"https://via.placeholder.com/120x120\",\n alt: \"News thumbnail\",\n },\n title: \"Breaking News Update\",\n text: \"Latest developments in the ongoing story with expert analysis and community reactions.\",\n button: {\n label: \"Read Full Article\",\n url: \"/news/breaking-update\",\n color: \"btn-secondary\",\n },\n },\n },\n {\n description: \"Call-to-action card with prominent styling\",\n type: \"card\",\n props: {\n title: \"Get Started Today\",\n text: \"Transform your workflow with our powerful tools. Sign up now and get 30 days free!\",\n button: {\n label: \"Sign Up Now\",\n url: \"/signup\",\n color: \"btn-primary\",\n },\n },\n },\n {\n description: \"Dynamic product card using products query with pricing and details\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"{{products.image}}\",\n alt: \"{{products.name}}\",\n },\n title: \"{{products.name}}\",\n text: \"{{products.description}}<br><strong>Price: ${{products.price}}</strong><br>Category: {{products.category}}\",\n colorPreset: { color: \"primary-50\" },\n border: { width: \"border\", color: \"border-primary-200\" },\n rounding: \"rounded-lg\",\n shadow: \"shadow-md\",\n button: {\n label: \"Buy Now\",\n url: \"{{products.purchaseUrl}}\",\n color: \"btn-primary\",\n },\n loop: {\n over: \"products\",\n },\n },\n },\n {\n description: \"Employee profile card using teamMembers query with contact information\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"{{teamMembers.photo}}\",\n alt: \"Photo of {{teamMembers.fullName}}\",\n },\n imagePosition: \"top\",\n title: \"{{teamMembers.fullName}}\",\n text: \"<strong>{{teamMembers.position}}</strong><br>{{teamMembers.department}}<br>Email: {{teamMembers.email}}<br>Phone: {{teamMembers.phone}}\",\n colorPreset: { color: \"neutral-100\" },\n rounding: \"rounded-xl\",\n shadow: \"shadow-lg\",\n button: {\n label: \"Contact\",\n url: \"mailto:{{teamMembers.email}}\",\n color: \"btn-neutral\",\n },\n loop: {\n over: \"teamMembers\",\n },\n },\n },\n {\n description: \"Blog post card using blogPosts query with author and date\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"{{blogPosts.featuredImage}}\",\n alt: \"{{blogPosts.title}}\",\n },\n imagePosition: \"top\",\n title: \"{{blogPosts.title}}\",\n text: \"{{blogPosts.excerpt}}<br><br><em>By {{blogPosts.author}} • {{blogPosts.publishDate}}</em><br>Tags: {{blogPosts.tags}}\",\n colorPreset: { color: \"secondary-50\" },\n border: { width: \"border\", color: \"border-secondary-300\" },\n rounding: \"rounded-md\",\n shadow: \"shadow-sm\",\n button: {\n label: \"Read More\",\n url: \"{{blogPosts.url}}\",\n color: \"btn-secondary\",\n },\n loop: {\n over: \"blogPosts\",\n },\n },\n },\n {\n description: \"Event listing card using upcomingEvents query with venue details\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"{{upcomingEvents.banner}}\",\n alt: \"{{upcomingEvents.title}}\",\n },\n imagePosition: \"top\",\n title: \"{{upcomingEvents.title}}\",\n text: \"<strong>{{upcomingEvents.date}} at {{upcomingEvents.time}}</strong><br>{{upcomingEvents.venue}}, {{upcomingEvents.city}}<br><br>{{upcomingEvents.description}}<br><br>Tickets: ${{upcomingEvents.price}}\",\n colorPreset: { color: \"accent-100\" },\n border: { width: \"border-2\", color: \"border-accent-400\" },\n rounding: \"rounded-lg\",\n shadow: \"shadow-md\",\n button: {\n label: \"Book Tickets\",\n url: \"{{upcomingEvents.ticketUrl}}\",\n color: \"btn-accent\",\n },\n loop: {\n over: \"upcomingEvents\",\n },\n },\n },\n {\n description: \"Testimonial card using customerReviews query with ratings\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"{{customerReviews.customerPhoto}}\",\n alt: \"{{customerReviews.customerName}}\",\n },\n imagePosition: \"top\",\n title: \"{{customerReviews.customerName}}\",\n text: '\"{{customerReviews.review}}\"<br><br><strong>Rating: {{customerReviews.rating}}/5 stars</strong><br>{{customerReviews.company}} • {{customerReviews.position}}',\n colorPreset: { color: \"neutral-50\" },\n rounding: \"rounded-xl\",\n shadow: \"shadow-lg\",\n button: {\n label: \"See All Reviews\",\n url: \"/reviews\",\n color: \"btn-neutral\",\n },\n loop: {\n over: \"customerReviews\",\n },\n },\n },\n {\n description: \"Service offering card using companyServices query with pricing tiers\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"{{companyServices.icon}}\",\n alt: \"{{companyServices.serviceName}}\",\n },\n imagePosition: \"top\",\n title: \"{{companyServices.serviceName}}\",\n text: \"{{companyServices.description}}<br><br><strong>Starting at ${{companyServices.startingPrice}}</strong><br>Duration: {{companyServices.duration}}<br>Includes: {{companyServices.features}}\",\n colorPreset: { color: \"primary-100\" },\n border: { width: \"border\", color: \"border-primary-300\" },\n rounding: \"rounded-lg\",\n shadow: \"shadow-md\",\n button: {\n label: \"Learn More\",\n url: \"{{companyServices.detailsUrl}}\",\n color: \"btn-primary\",\n },\n loop: {\n over: \"companyServices\",\n },\n },\n },\n {\n description: \"Portfolio project card using portfolioWork query with project details\",\n type: \"card\",\n props: {\n cardImage: {\n src: \"{{portfolioWork.thumbnail}}\",\n alt: \"{{portfolioWork.projectName}}\",\n },\n imagePosition: \"top\",\n title: \"{{portfolioWork.projectName}}\",\n text: \"<strong>Client:</strong> {{portfolioWork.clientName}}<br><strong>Year:</strong> {{portfolioWork.year}}<br><strong>Category:</strong> {{portfolioWork.category}}<br><br>{{portfolioWork.description}}\",\n colorPreset: { color: \"secondary-100\" },\n rounding: \"rounded-md\",\n shadow: \"shadow-sm\",\n button: {\n label: \"View Project\",\n url: \"{{portfolioWork.projectUrl}}\",\n color: \"btn-secondary\",\n },\n loop: {\n over: \"portfolioWork\",\n },\n },\n },\n];\n"],"mappings":"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","names":[]}
|
|
@@ -8,16 +8,14 @@ import {
|
|
|
8
8
|
} from "./chunk-7LAWWRU7.js";
|
|
9
9
|
import {
|
|
10
10
|
airtableOptions
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-EID5HPF3.js";
|
|
12
|
+
import {
|
|
13
|
+
StringEnum
|
|
14
|
+
} from "./chunk-GDYCCB3B.js";
|
|
12
15
|
|
|
13
16
|
// src/shared/datarecords/types.ts
|
|
14
17
|
import { Type } from "@sinclair/typebox";
|
|
15
|
-
var connectorSchema =
|
|
16
|
-
Type.Literal("airtable"),
|
|
17
|
-
Type.Literal("google-sheets"),
|
|
18
|
-
Type.Literal("notion"),
|
|
19
|
-
Type.Literal("internal")
|
|
20
|
-
]);
|
|
18
|
+
var connectorSchema = StringEnum(["airtable", "google-sheets", "notion", "internal"]);
|
|
21
19
|
var internalDatarecord = Type.Object(
|
|
22
20
|
{
|
|
23
21
|
provider: Type.Literal("internal"),
|
|
@@ -145,4 +143,4 @@ export {
|
|
|
145
143
|
genericDatarecord,
|
|
146
144
|
datarecordsList
|
|
147
145
|
};
|
|
148
|
-
//# sourceMappingURL=chunk-
|
|
146
|
+
//# sourceMappingURL=chunk-DCM4732T.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/datarecords/types.ts"],"sourcesContent":["import { Type, type Static } from \"@sinclair/typebox\";\nimport { airtableOptions } from \"./external/airtable/types\";\nimport { googleSheetsOptions } from \"./external/google/sheets/types\";\nimport { notionOptions } from \"./external/notion/types\";\nimport { StringEnum } from \"../utils/string-enum\";\n\nexport const connectorSchema = StringEnum([\"airtable\", \"google-sheets\", \"notion\", \"internal\"]);\n\nexport type DatarecordConnector = Static<typeof connectorSchema>;\n\nconst internalDatarecord = Type.Object(\n {\n provider: Type.Literal(\"internal\"),\n // options: Type.Optional(Type.Any()),\n schema: Type.Any({\n title: \"Schema\",\n description:\n \"JSON Schema of the datarecord. Always of type 'object' and representing a row that will be saved in the database.\",\n examples: [\n {\n type: \"object\",\n properties: {\n firstname: { type: \"string\", title: \"Firstname\" },\n lastname: { type: \"string\", title: \"Lastname\" },\n email: { type: \"string\", format: \"email\", title: \"Email\" },\n },\n required: [\"email\"],\n title: \"Newsletter Subscription\",\n },\n ],\n }),\n indexes: Type.Array(\n Type.Object(\n {\n name: Type.String({ title: \"Index name\" }),\n fields: Type.Array(Type.String(), { title: \"Fields to index\" }),\n unique: Type.Optional(Type.Boolean({ title: \"Unique index\", default: false })),\n },\n {\n examples: [\n {\n name: \"unique_email_index\",\n fields: [\"email\"],\n unique: true,\n },\n {\n name: \"lastname_index\",\n fields: [\"lastname\"],\n },\n ],\n },\n ),\n {\n title: \"Indexes\",\n description:\n \"IMPORTANT: Indexes to create on the datarecord. use it to enforce uniqueness or improve query performance.\",\n },\n ),\n },\n {\n examples: [\n {\n provider: \"internal\",\n schema: {\n type: \"object\",\n properties: {\n firstname: { type: \"string\", title: \"Firstname\" },\n lastname: { type: \"string\", title: \"Lastname\" },\n email: { type: \"string\", format: \"email\", title: \"Email\" },\n },\n required: [\"email\"],\n title: \"Newsletter Subscription\",\n },\n indexes: [\n {\n name: \"email_index\",\n fields: [\"email\"],\n unique: true,\n },\n ],\n },\n ],\n },\n);\n\n// Schema commun à tous les datarecords\nconst commonDatarecordSchema = Type.Object({\n schema: Type.Any({\n title: \"Schema\",\n description:\n \"JSON Schema of the datarecord. Always of type 'object' and representing a row that will be saved.\",\n examples: [\n {\n type: \"object\",\n properties: {\n firstname: { type: \"string\", title: \"Firstname\" },\n lastname: { type: \"string\", title: \"Lastname\" },\n email: { type: \"string\", format: \"email\", title: \"Email\" },\n },\n required: [\"email\"],\n title: \"Newsletter Subscription\",\n },\n ],\n }),\n});\n\nconst commonDatarecordMetadata = Type.Object({\n id: Type.String({\n title: \"Datarecord ID\",\n comment: \"A unique identifier for the datarecord, e.g., 'newsletter_subscriptions'\",\n }),\n label: Type.String({\n title: \"Name of the datarecord\",\n comment: \"For example, 'Newsletter Subscriptions'\",\n }),\n description: Type.Optional(Type.String({ title: \"Description of the datarecord\" })),\n});\n\nexport const genericDatarecord = Type.Composite([\n Type.Union([\n Type.Object({\n provider: Type.Literal(\"airtable\"),\n options: airtableOptions,\n }),\n Type.Object({\n provider: Type.Literal(\"google-sheets\"),\n options: googleSheetsOptions,\n }),\n Type.Object({\n provider: Type.Literal(\"notion\"),\n options: notionOptions,\n }),\n internalDatarecord,\n ]),\n commonDatarecordMetadata,\n commonDatarecordSchema,\n]);\n\nexport type Datarecord = Static<typeof genericDatarecord>;\nexport type InternalDatarecord = Extract<Datarecord, { provider: \"internal\" }>;\n\nexport const datarecordsList = Type.Array(genericDatarecord);\nexport type DatarecordsList = Static<typeof datarecordsList>;\n"],"mappings":"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","names":[]}
|
|
@@ -1,21 +1,17 @@
|
|
|
1
1
|
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
typedRef
|
|
5
|
-
} from "./chunk-A2QPY54H.js";
|
|
6
3
|
import {
|
|
7
4
|
StringEnum
|
|
8
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-GDYCCB3B.js";
|
|
9
6
|
|
|
10
7
|
// src/shared/bricks/props/image.ts
|
|
11
8
|
import { Type } from "@sinclair/typebox";
|
|
12
|
-
function image(
|
|
9
|
+
function image(options = {}) {
|
|
13
10
|
const { defaultImageUrl, showImgSearch = false, noObjectOptions = false } = options;
|
|
14
11
|
const schema = Type.Object(
|
|
15
12
|
{
|
|
16
13
|
src: Type.String({
|
|
17
|
-
|
|
18
|
-
title,
|
|
14
|
+
title: options.title ?? "Image URL",
|
|
19
15
|
description: "Image URL. Can be a link to an image or a data URI"
|
|
20
16
|
}),
|
|
21
17
|
alt: Type.Optional(
|
|
@@ -30,7 +26,6 @@ function image(title = "Image", options = {}) {
|
|
|
30
26
|
enumNames: ["None", "Contain", "Cover", "Fill", "Scale down"],
|
|
31
27
|
title: "Fit",
|
|
32
28
|
description: "How the image should be resized to fit its container",
|
|
33
|
-
default: "object-cover",
|
|
34
29
|
"ui:field": "enum",
|
|
35
30
|
"ui:styleId": "styles:objectFit"
|
|
36
31
|
})
|
|
@@ -70,16 +65,11 @@ function image(title = "Image", options = {}) {
|
|
|
70
65
|
},
|
|
71
66
|
{
|
|
72
67
|
// $id: "assets:image",
|
|
73
|
-
title,
|
|
68
|
+
title: "Image",
|
|
74
69
|
"ui:field": "image",
|
|
75
70
|
"ui:accept": "image/*",
|
|
76
71
|
"ui:show-img-search": showImgSearch,
|
|
77
72
|
"ui:no-object-options": noObjectOptions,
|
|
78
|
-
default: {
|
|
79
|
-
alt: "Image",
|
|
80
|
-
fit: "object-cover",
|
|
81
|
-
position: "object-center"
|
|
82
|
-
},
|
|
83
73
|
// "ui:responsive": "desktop",
|
|
84
74
|
metadata: {
|
|
85
75
|
category: "content"
|
|
@@ -89,12 +79,8 @@ function image(title = "Image", options = {}) {
|
|
|
89
79
|
);
|
|
90
80
|
return schema;
|
|
91
81
|
}
|
|
92
|
-
function imageRef(options = {}) {
|
|
93
|
-
return typedRef("assets:image", options);
|
|
94
|
-
}
|
|
95
82
|
|
|
96
83
|
export {
|
|
97
|
-
image
|
|
98
|
-
imageRef
|
|
84
|
+
image
|
|
99
85
|
};
|
|
100
|
-
//# sourceMappingURL=chunk-
|
|
86
|
+
//# sourceMappingURL=chunk-DRQKKPTX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/bricks/props/image.ts"],"sourcesContent":["import { Type, type Static, type ObjectOptions } from \"@sinclair/typebox\";\nimport { StringEnum } from \"~/shared/utils/string-enum\";\n\ntype PropImageOptions = {\n defaultImageUrl?: string;\n showImgSearch?: boolean;\n noObjectOptions?: boolean;\n} & ObjectOptions;\n\nexport function image(options: PropImageOptions = {}) {\n const { defaultImageUrl, showImgSearch = false, noObjectOptions = false } = options;\n const schema = Type.Object(\n {\n src: Type.String({\n title: options.title ?? \"Image URL\",\n description: \"Image URL. Can be a link to an image or a data URI\",\n }),\n alt: Type.Optional(\n Type.String({\n title: \"Alternate Text\",\n description: \"Alternative text for the image. Recommended for screen readers and SEO\",\n \"ui:placeholder\": \"Your image description\",\n }),\n ),\n fit: Type.Optional(\n StringEnum([\"object-none\", \"object-contain\", \"object-cover\", \"object-fill\", \"object-scale-down\"], {\n enumNames: [\"None\", \"Contain\", \"Cover\", \"Fill\", \"Scale down\"],\n title: \"Fit\",\n description: \"How the image should be resized to fit its container\",\n \"ui:field\": \"enum\",\n \"ui:styleId\": \"styles:objectFit\",\n }),\n ),\n position: Type.Optional(\n StringEnum(\n [\n \"object-top\",\n \"object-center\",\n \"object-bottom\",\n \"object-left\",\n \"object-right\",\n \"object-top-left\",\n \"object-top-right\",\n \"object-bottom-left\",\n \"object-bottom-right\",\n ],\n {\n enumNames: [\n \"Top\",\n \"Center\",\n \"Bottom\",\n \"Left\",\n \"Right\",\n \"Top left\",\n \"Top right\",\n \"Bottom left\",\n \"Bottom right\",\n ],\n \"ui:styleId\": \"styles:objectPosition\",\n title: \"Position\",\n description: \"The position of the image inside its container\",\n \"ui:field\": \"enum\",\n },\n ),\n ),\n },\n {\n // $id: \"assets:image\",\n title: \"Image\",\n \"ui:field\": \"image\",\n \"ui:accept\": \"image/*\",\n \"ui:show-img-search\": showImgSearch,\n \"ui:no-object-options\": noObjectOptions,\n // \"ui:responsive\": \"desktop\",\n metadata: {\n category: \"content\",\n },\n ...options,\n },\n );\n return schema;\n}\n\nexport type ImageProps = Static<ReturnType<typeof image>>;\n"],"mappings":";;;;;;;AAAA,SAAS,YAA6C;AAS/C,SAAS,MAAM,UAA4B,CAAC,GAAG;AACpD,QAAM,EAAE,iBAAiB,gBAAgB,OAAO,kBAAkB,MAAM,IAAI;AAC5E,QAAM,SAAS,KAAK;AAAA,IAClB;AAAA,MACE,KAAK,KAAK,OAAO;AAAA,QACf,OAAO,QAAQ,SAAS;AAAA,QACxB,aAAa;AAAA,MACf,CAAC;AAAA,MACD,KAAK,KAAK;AAAA,QACR,KAAK,OAAO;AAAA,UACV,OAAO;AAAA,UACP,aAAa;AAAA,UACb,kBAAkB;AAAA,QACpB,CAAC;AAAA,MACH;AAAA,MACA,KAAK,KAAK;AAAA,QACR,WAAW,CAAC,eAAe,kBAAkB,gBAAgB,eAAe,mBAAmB,GAAG;AAAA,UAChG,WAAW,CAAC,QAAQ,WAAW,SAAS,QAAQ,YAAY;AAAA,UAC5D,OAAO;AAAA,UACP,aAAa;AAAA,UACb,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB,CAAC;AAAA,MACH;AAAA,MACA,UAAU,KAAK;AAAA,QACb;AAAA,UACE;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE,WAAW;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,cAAc;AAAA,YACd,OAAO;AAAA,YACP,aAAa;AAAA,YACb,YAAY;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA;AAAA,MAEE,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,sBAAsB;AAAA,MACtB,wBAAwB;AAAA;AAAA,MAExB,UAAU;AAAA,QACR,UAAU;AAAA,MACZ;AAAA,MACA,GAAG;AAAA,IACL;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
2
|
|
|
3
|
+
import {
|
|
4
|
+
StringEnum
|
|
5
|
+
} from "./chunk-GDYCCB3B.js";
|
|
3
6
|
|
|
4
7
|
// src/shared/datarecords/external/airtable/types.ts
|
|
5
8
|
import { Type } from "@sinclair/typebox";
|
|
@@ -39,17 +42,17 @@ var airtableOptions = Type.Object({
|
|
|
39
42
|
),
|
|
40
43
|
fields: Type.Optional(airtableFields)
|
|
41
44
|
});
|
|
42
|
-
var AirtableFieldTypes =
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
45
|
+
var AirtableFieldTypes = StringEnum([
|
|
46
|
+
"number",
|
|
47
|
+
"checkbox",
|
|
48
|
+
"date",
|
|
49
|
+
"dateTime",
|
|
50
|
+
"email",
|
|
51
|
+
"url",
|
|
52
|
+
"singleLineText",
|
|
53
|
+
"multilineText",
|
|
54
|
+
"singleSelect",
|
|
55
|
+
"multipleSelects"
|
|
53
56
|
]);
|
|
54
57
|
|
|
55
58
|
export {
|
|
@@ -57,4 +60,4 @@ export {
|
|
|
57
60
|
airtableOptions,
|
|
58
61
|
AirtableFieldTypes
|
|
59
62
|
};
|
|
60
|
-
//# sourceMappingURL=chunk-
|
|
63
|
+
//# sourceMappingURL=chunk-EID5HPF3.js.map
|