@upstart.gg/sdk 0.0.132 → 0.0.133
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.js +1 -0
- package/dist/shared/ai/schemas.js.map +1 -0
- package/dist/shared/ai/types.js +1 -0
- package/dist/shared/ai/types.js.map +1 -0
- package/dist/shared/ajv.js +2 -1
- package/dist/shared/ajv.js.map +1 -0
- package/dist/shared/analytics/init.js +1 -0
- package/dist/shared/analytics/init.js.map +1 -0
- package/dist/shared/analytics/track.js +1 -0
- package/dist/shared/analytics/track.js.map +1 -0
- package/dist/shared/analytics/types.js +1 -0
- package/dist/shared/analytics/types.js.map +1 -0
- package/dist/shared/attributes.js +2 -1
- package/dist/shared/attributes.js.map +1 -0
- package/dist/shared/brick-manifest.js +2 -1
- package/dist/shared/brick-manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/accordion.manifest.js +2 -1
- package/dist/shared/bricks/manifests/accordion.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/all-manifests.js +2 -1
- package/dist/shared/bricks/manifests/all-manifests.js.map +1 -0
- package/dist/shared/bricks/manifests/box.manifest.js +2 -1
- package/dist/shared/bricks/manifests/box.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/button.manifest.js +2 -1
- package/dist/shared/bricks/manifests/button.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/card.manifest.js +2 -1
- package/dist/shared/bricks/manifests/card.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/carousel.manifest.js +2 -1
- package/dist/shared/bricks/manifests/carousel.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/footer.manifest.js +2 -1
- package/dist/shared/bricks/manifests/footer.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/form.manifest.js +2 -1
- package/dist/shared/bricks/manifests/form.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/hero.manifest.js +2 -1
- package/dist/shared/bricks/manifests/hero.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/html.manifest.js +2 -1
- package/dist/shared/bricks/manifests/html.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/icon.manifest.js +2 -1
- package/dist/shared/bricks/manifests/icon.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/image.manifest.js +2 -1
- package/dist/shared/bricks/manifests/image.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/images-gallery.manifest.js +2 -1
- package/dist/shared/bricks/manifests/images-gallery.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/map.manifest.js +2 -1
- package/dist/shared/bricks/manifests/map.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/navbar.manifest.js +2 -1
- package/dist/shared/bricks/manifests/navbar.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/sidebar.manifest.js +2 -1
- package/dist/shared/bricks/manifests/sidebar.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/social-links.manifest.js +2 -1
- package/dist/shared/bricks/manifests/social-links.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/spacer.manifest.js +2 -1
- package/dist/shared/bricks/manifests/spacer.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/testimonials.manifest.js +2 -1
- package/dist/shared/bricks/manifests/testimonials.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/text.manifest.js +2 -1
- package/dist/shared/bricks/manifests/text.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/video.manifest.js +2 -1
- package/dist/shared/bricks/manifests/video.manifest.js.map +1 -0
- package/dist/shared/bricks/props/align.js +2 -1
- package/dist/shared/bricks/props/align.js.map +1 -0
- package/dist/shared/bricks/props/background.js +2 -1
- package/dist/shared/bricks/props/background.js.map +1 -0
- package/dist/shared/bricks/props/boolean.js +2 -1
- package/dist/shared/bricks/props/boolean.js.map +1 -0
- package/dist/shared/bricks/props/border.js +2 -1
- package/dist/shared/bricks/props/border.js.map +1 -0
- package/dist/shared/bricks/props/color-preset.js +2 -1
- package/dist/shared/bricks/props/color-preset.js.map +1 -0
- package/dist/shared/bricks/props/color.js +2 -1
- package/dist/shared/bricks/props/color.js.map +1 -0
- package/dist/shared/bricks/props/common.js +2 -1
- package/dist/shared/bricks/props/common.js.map +1 -0
- package/dist/shared/bricks/props/css-length.js +2 -1
- package/dist/shared/bricks/props/css-length.js.map +1 -0
- package/dist/shared/bricks/props/datarecord.js +2 -1
- package/dist/shared/bricks/props/datarecord.js.map +1 -0
- package/dist/shared/bricks/props/datasource.js +2 -1
- package/dist/shared/bricks/props/datasource.js.map +1 -0
- package/dist/shared/bricks/props/date.js +2 -1
- package/dist/shared/bricks/props/date.js.map +1 -0
- package/dist/shared/bricks/props/direction.js +2 -1
- package/dist/shared/bricks/props/direction.js.map +1 -0
- package/dist/shared/bricks/props/dynamic.js +2 -1
- package/dist/shared/bricks/props/dynamic.js.map +1 -0
- package/dist/shared/bricks/props/effects.js +2 -1
- package/dist/shared/bricks/props/effects.js.map +1 -0
- package/dist/shared/bricks/props/enum.js +2 -1
- package/dist/shared/bricks/props/enum.js.map +1 -0
- package/dist/shared/bricks/props/file.js +1 -0
- package/dist/shared/bricks/props/file.js.map +1 -0
- package/dist/shared/bricks/props/geolocation.js +2 -1
- package/dist/shared/bricks/props/geolocation.js.map +1 -0
- package/dist/shared/bricks/props/helpers.js +2 -1
- package/dist/shared/bricks/props/helpers.js.map +1 -0
- package/dist/shared/bricks/props/image.js +2 -1
- package/dist/shared/bricks/props/image.js.map +1 -0
- package/dist/shared/bricks/props/number.js +2 -1
- package/dist/shared/bricks/props/number.js.map +1 -0
- package/dist/shared/bricks/props/position.js +2 -1
- package/dist/shared/bricks/props/position.js.map +1 -0
- package/dist/shared/bricks/props/string.js +2 -1
- package/dist/shared/bricks/props/string.js.map +1 -0
- package/dist/shared/bricks/props/tags.js +2 -1
- package/dist/shared/bricks/props/tags.js.map +1 -0
- package/dist/shared/bricks/props/text.js +2 -1
- package/dist/shared/bricks/props/text.js.map +1 -0
- package/dist/shared/bricks/props/types.js +1 -0
- package/dist/shared/bricks/props/types.js.map +1 -0
- package/dist/shared/bricks.js +2 -1
- package/dist/shared/bricks.js.map +1 -0
- package/dist/shared/{chunk-6PGAWO4H.js → chunk-3YVJ2ELD.js} +2 -1
- package/dist/shared/chunk-3YVJ2ELD.js.map +1 -0
- package/dist/shared/{chunk-AB3IMRXZ.js → chunk-4BTB3MU2.js} +2 -1
- package/dist/shared/chunk-4BTB3MU2.js.map +1 -0
- package/dist/shared/{chunk-ZJNA4QQC.js → chunk-4WDWJA3N.js} +1 -0
- package/dist/shared/chunk-4WDWJA3N.js.map +1 -0
- package/dist/shared/{chunk-NQKXDMQ5.js → chunk-5O4Z3YQY.js} +1 -0
- package/dist/shared/chunk-5O4Z3YQY.js.map +1 -0
- package/dist/shared/{chunk-VK26ZZFR.js → chunk-5YRC3IT3.js} +2 -1
- package/dist/shared/chunk-5YRC3IT3.js.map +1 -0
- package/dist/shared/{chunk-WAML3IGZ.js → chunk-6HLU4UI2.js} +1 -0
- package/dist/shared/chunk-6HLU4UI2.js.map +1 -0
- package/dist/shared/{chunk-MKIXZXWS.js → chunk-6I3ONVU6.js} +1 -0
- package/dist/shared/chunk-6I3ONVU6.js.map +1 -0
- package/dist/shared/{chunk-AZHH3XJJ.js → chunk-7A2JNQX3.js} +2 -1
- package/dist/shared/chunk-7A2JNQX3.js.map +1 -0
- package/dist/shared/{chunk-7UBMXMNJ.js → chunk-A3GF4PYW.js} +2 -1
- package/dist/shared/chunk-A3GF4PYW.js.map +1 -0
- package/dist/shared/{chunk-46YDGGFF.js → chunk-A3K4NUVP.js} +2 -1
- package/dist/shared/chunk-A3K4NUVP.js.map +1 -0
- package/dist/shared/{chunk-F4JNKU7J.js → chunk-AFVJZPLS.js} +2 -1
- package/dist/shared/chunk-AFVJZPLS.js.map +1 -0
- package/dist/shared/{chunk-PW5HRVMD.js → chunk-AI4GHU7R.js} +2 -1
- package/dist/shared/chunk-AI4GHU7R.js.map +1 -0
- package/dist/shared/{chunk-SAJY7H6N.js → chunk-B3EATRFX.js} +2 -1
- package/dist/shared/chunk-B3EATRFX.js.map +1 -0
- package/dist/shared/{chunk-3FPFR5RA.js → chunk-CCI4C3TM.js} +2 -1
- package/dist/shared/chunk-CCI4C3TM.js.map +1 -0
- package/dist/shared/{chunk-URRCKLAS.js → chunk-CFF6Q7O7.js} +2 -1
- package/dist/shared/chunk-CFF6Q7O7.js.map +1 -0
- package/dist/shared/{chunk-Z4YKRLOX.js → chunk-CZRCW5EN.js} +2 -1
- package/dist/shared/chunk-CZRCW5EN.js.map +1 -0
- package/dist/shared/{chunk-ARMM6B47.js → chunk-DCH4ZKWT.js} +1 -0
- package/dist/shared/chunk-DCH4ZKWT.js.map +1 -0
- package/dist/shared/{chunk-GC5OWY2Z.js → chunk-DHI3IBOD.js} +2 -1
- package/dist/shared/chunk-DHI3IBOD.js.map +1 -0
- package/dist/shared/{chunk-PZYX3ACO.js → chunk-DQ7PRWTG.js} +1 -0
- package/dist/shared/chunk-DQ7PRWTG.js.map +1 -0
- package/dist/shared/{chunk-XED6ARVN.js → chunk-E6XEI7IK.js} +2 -1
- package/dist/shared/chunk-E6XEI7IK.js.map +1 -0
- package/dist/shared/{chunk-6R76KIHZ.js → chunk-FLOMNC6J.js} +2 -1
- package/dist/shared/chunk-FLOMNC6J.js.map +1 -0
- package/dist/shared/{chunk-EVDZ2KND.js → chunk-G5CJU6RD.js} +2 -1
- package/dist/shared/chunk-G5CJU6RD.js.map +1 -0
- package/dist/shared/{chunk-MVCVVKBY.js → chunk-GACHLACT.js} +2 -1
- package/dist/shared/chunk-GACHLACT.js.map +1 -0
- package/dist/shared/{chunk-X62OEAE6.js → chunk-GLS7HPIZ.js} +1 -0
- package/dist/shared/chunk-GLS7HPIZ.js.map +1 -0
- package/dist/shared/{chunk-ML4JSDQM.js → chunk-GOMXZC4B.js} +2 -1
- package/dist/shared/chunk-GOMXZC4B.js.map +1 -0
- package/dist/shared/{chunk-L2HOZVBC.js → chunk-GPEMPZXK.js} +1 -0
- package/dist/shared/chunk-GPEMPZXK.js.map +1 -0
- package/dist/shared/{chunk-IFEIRRZ2.js → chunk-HAGKVQOW.js} +1 -0
- package/dist/shared/chunk-HAGKVQOW.js.map +1 -0
- package/dist/shared/{chunk-ILIWVWHC.js → chunk-I3VL6SRH.js} +2 -1
- package/dist/shared/chunk-I3VL6SRH.js.map +1 -0
- package/dist/shared/{chunk-2NLDX5FG.js → chunk-IKC3FK7L.js} +2 -1
- package/dist/shared/chunk-IKC3FK7L.js.map +1 -0
- package/dist/shared/{chunk-STDCM2KD.js → chunk-IKHZD2JH.js} +2 -1
- package/dist/shared/chunk-IKHZD2JH.js.map +1 -0
- package/dist/shared/{chunk-NKIEDT7V.js → chunk-IUXCWWGO.js} +1 -0
- package/dist/shared/chunk-IUXCWWGO.js.map +1 -0
- package/dist/shared/{chunk-SFKZAUPW.js → chunk-JMN3HTZU.js} +1 -0
- package/dist/shared/chunk-JMN3HTZU.js.map +1 -0
- package/dist/shared/{chunk-VLXZMESE.js → chunk-KBHDY425.js} +1 -0
- package/dist/shared/chunk-KBHDY425.js.map +1 -0
- package/dist/shared/{chunk-5WY7LYXK.js → chunk-KFM6KXSE.js} +1 -0
- package/dist/shared/chunk-KFM6KXSE.js.map +1 -0
- package/dist/shared/{chunk-7QFMCLUL.js → chunk-KLD3P5XH.js} +1 -0
- package/dist/shared/chunk-KLD3P5XH.js.map +1 -0
- package/dist/shared/{chunk-6L3Z5SZQ.js → chunk-KO5FPOWZ.js} +1 -0
- package/dist/shared/chunk-KO5FPOWZ.js.map +1 -0
- package/dist/shared/{chunk-YIFNKP4J.js → chunk-KSEURRVZ.js} +1 -0
- package/dist/shared/chunk-KSEURRVZ.js.map +1 -0
- package/dist/shared/{chunk-HP7CZB2F.js → chunk-KYY3PHP7.js} +1 -0
- package/dist/shared/chunk-KYY3PHP7.js.map +1 -0
- package/dist/shared/{chunk-ARYG4XMX.js → chunk-NJGXC7D6.js} +2 -1
- package/dist/shared/chunk-NJGXC7D6.js.map +1 -0
- package/dist/shared/{chunk-SFDRAHYP.js → chunk-NM5MMPCF.js} +2 -1
- package/dist/shared/chunk-NM5MMPCF.js.map +1 -0
- package/dist/shared/{chunk-XZLBM4AX.js → chunk-OGBMYMZD.js} +2 -1
- package/dist/shared/chunk-OGBMYMZD.js.map +1 -0
- package/dist/shared/{chunk-HSRXUIVM.js → chunk-OHNYCXPX.js} +2 -1
- package/dist/shared/chunk-OHNYCXPX.js.map +1 -0
- package/dist/shared/{chunk-MPBYGS6W.js → chunk-OIY3EPHO.js} +1 -0
- package/dist/shared/chunk-OIY3EPHO.js.map +1 -0
- package/dist/shared/{chunk-L42YBY5I.js → chunk-PIG623TZ.js} +1 -0
- package/dist/shared/chunk-PIG623TZ.js.map +1 -0
- package/dist/shared/{chunk-K5ADUHF4.js → chunk-PLSV746R.js} +2 -1
- package/dist/shared/chunk-PLSV746R.js.map +1 -0
- package/dist/shared/chunk-PSCN3VVA.js +4 -0
- package/dist/shared/chunk-PSCN3VVA.js.map +1 -0
- package/dist/shared/{chunk-3P36LG6T.js → chunk-PSTFJ5IJ.js} +2 -1
- package/dist/shared/chunk-PSTFJ5IJ.js.map +1 -0
- package/dist/shared/{chunk-TH5SONR6.js → chunk-PXI7AHWS.js} +2 -1
- package/dist/shared/chunk-PXI7AHWS.js.map +1 -0
- package/dist/shared/{chunk-AMQAGDFH.js → chunk-Q4H4QEMB.js} +1 -0
- package/dist/shared/chunk-Q4H4QEMB.js.map +1 -0
- package/dist/shared/{chunk-LEWKHCRI.js → chunk-QGYZ7CG5.js} +2 -1
- package/dist/shared/chunk-QGYZ7CG5.js.map +1 -0
- package/dist/shared/{chunk-US53TNMK.js → chunk-QWGUMKZC.js} +2 -1
- package/dist/shared/chunk-QWGUMKZC.js.map +1 -0
- package/dist/shared/{chunk-5X5SX5N7.js → chunk-QX6OGRRT.js} +2 -1
- package/dist/shared/chunk-QX6OGRRT.js.map +1 -0
- package/dist/shared/{chunk-VDX2J22H.js → chunk-R6ATC4TC.js} +2 -1
- package/dist/shared/chunk-R6ATC4TC.js.map +1 -0
- package/dist/shared/{chunk-WXKRIUTA.js → chunk-RDZK73KV.js} +1 -0
- package/dist/shared/chunk-RDZK73KV.js.map +1 -0
- package/dist/shared/{chunk-4GIZ6WSG.js → chunk-RJYZ5FAR.js} +2 -1
- package/dist/shared/chunk-RJYZ5FAR.js.map +1 -0
- package/dist/shared/{chunk-3QOAHMV4.js → chunk-SQ5T4AT5.js} +2 -1
- package/dist/shared/chunk-SQ5T4AT5.js.map +1 -0
- package/dist/shared/{chunk-DKNOZLA6.js → chunk-SWLUQVK7.js} +2 -1
- package/dist/shared/chunk-SWLUQVK7.js.map +1 -0
- package/dist/shared/{chunk-QGFQA7OZ.js → chunk-SXHDQ64Z.js} +2 -1
- package/dist/shared/chunk-SXHDQ64Z.js.map +1 -0
- package/dist/shared/{chunk-UDQWYGSO.js → chunk-SY6DZLTC.js} +2 -1
- package/dist/shared/chunk-SY6DZLTC.js.map +1 -0
- package/dist/shared/{chunk-RJZZWCBD.js → chunk-VEDQV5XO.js} +1 -0
- package/dist/shared/chunk-VEDQV5XO.js.map +1 -0
- package/dist/shared/{chunk-JRCVYDCD.js → chunk-W33JMRRN.js} +2 -1
- package/dist/shared/chunk-W33JMRRN.js.map +1 -0
- package/dist/shared/{chunk-Y3X4F4YJ.js → chunk-WBZW5LVH.js} +2 -1
- package/dist/shared/chunk-WBZW5LVH.js.map +1 -0
- package/dist/shared/{chunk-SDS4QU72.js → chunk-WHTPGWUV.js} +2 -1
- package/dist/shared/chunk-WHTPGWUV.js.map +1 -0
- package/dist/shared/{chunk-LT4CW2F7.js → chunk-WYVJE6J5.js} +2 -1
- package/dist/shared/chunk-WYVJE6J5.js.map +1 -0
- package/dist/shared/{chunk-PO6UODZ5.js → chunk-ZA3GAB4H.js} +2 -1
- package/dist/shared/chunk-ZA3GAB4H.js.map +1 -0
- package/dist/shared/{chunk-2CYAFF56.js → chunk-ZFCUSWMT.js} +1 -0
- package/dist/shared/chunk-ZFCUSWMT.js.map +1 -0
- package/dist/shared/{chunk-UCR2UZOY.js → chunk-ZQPXQCY2.js} +2 -1
- package/dist/shared/chunk-ZQPXQCY2.js.map +1 -0
- package/dist/shared/{chunk-DHSWVVMI.js → chunk-ZTZJHY4E.js} +2 -1
- package/dist/shared/chunk-ZTZJHY4E.js.map +1 -0
- package/dist/shared/context.js +1 -0
- package/dist/shared/context.js.map +1 -0
- package/dist/shared/datarecords/external/airtable/handler.js +1 -0
- package/dist/shared/datarecords/external/airtable/handler.js.map +1 -0
- package/dist/shared/datarecords/external/airtable/oauth/config.js +1 -0
- package/dist/shared/datarecords/external/airtable/oauth/config.js.map +1 -0
- package/dist/shared/datarecords/external/airtable/types.js +2 -1
- package/dist/shared/datarecords/external/airtable/types.js.map +1 -0
- package/dist/shared/datarecords/external/generic-webhook/handler.js +1 -0
- package/dist/shared/datarecords/external/generic-webhook/handler.js.map +1 -0
- package/dist/shared/datarecords/external/generic-webhook/options.js +1 -0
- package/dist/shared/datarecords/external/generic-webhook/options.js.map +1 -0
- package/dist/shared/datarecords/external/google/oauth/config.js +1 -0
- package/dist/shared/datarecords/external/google/oauth/config.js.map +1 -0
- package/dist/shared/datarecords/external/google/sheets/client.js +2 -1
- package/dist/shared/datarecords/external/google/sheets/client.js.map +1 -0
- package/dist/shared/datarecords/external/google/sheets/handler.js +2 -1
- package/dist/shared/datarecords/external/google/sheets/handler.js.map +1 -0
- package/dist/shared/datarecords/external/google/sheets/types.js +2 -1
- package/dist/shared/datarecords/external/google/sheets/types.js.map +1 -0
- package/dist/shared/datarecords/external/notion/handler.js +1 -0
- package/dist/shared/datarecords/external/notion/handler.js.map +1 -0
- package/dist/shared/datarecords/external/notion/oauth/config.js +1 -0
- package/dist/shared/datarecords/external/notion/oauth/config.js.map +1 -0
- package/dist/shared/datarecords/external/notion/types.js +2 -1
- package/dist/shared/datarecords/external/notion/types.js.map +1 -0
- package/dist/shared/datarecords/types.js +2 -1
- package/dist/shared/datarecords/types.js.map +1 -0
- package/dist/shared/datarecords.js +1 -0
- package/dist/shared/datarecords.js.map +1 -0
- package/dist/shared/datasources/external/facebook/posts/fetcher.js +2 -1
- package/dist/shared/datasources/external/facebook/posts/fetcher.js.map +1 -0
- package/dist/shared/datasources/external/facebook/posts/schema.js +1 -0
- package/dist/shared/datasources/external/facebook/posts/schema.js.map +1 -0
- package/dist/shared/datasources/external/http-json/fetcher.js +2 -1
- package/dist/shared/datasources/external/http-json/fetcher.js.map +1 -0
- package/dist/shared/datasources/external/http-json/options.js +1 -0
- package/dist/shared/datasources/external/http-json/options.js.map +1 -0
- package/dist/shared/datasources/external/http-json/schema.js +1 -0
- package/dist/shared/datasources/external/http-json/schema.js.map +1 -0
- package/dist/shared/datasources/external/instagram/feed/fetcher.js +2 -1
- package/dist/shared/datasources/external/instagram/feed/fetcher.js.map +1 -0
- package/dist/shared/datasources/external/instagram/feed/schema.js +1 -0
- package/dist/shared/datasources/external/instagram/feed/schema.js.map +1 -0
- package/dist/shared/datasources/external/mastodon/account/fetcher.js +2 -1
- package/dist/shared/datasources/external/mastodon/account/fetcher.js.map +1 -0
- package/dist/shared/datasources/external/mastodon/account/schema.js +2 -1
- package/dist/shared/datasources/external/mastodon/account/schema.js.map +1 -0
- package/dist/shared/datasources/external/mastodon/options.js +1 -0
- package/dist/shared/datasources/external/mastodon/options.js.map +1 -0
- package/dist/shared/datasources/external/mastodon/status/fetcher.js +2 -1
- package/dist/shared/datasources/external/mastodon/status/fetcher.js.map +1 -0
- package/dist/shared/datasources/external/mastodon/status/sample.array.js +1 -0
- package/dist/shared/datasources/external/mastodon/status/sample.array.js.map +1 -0
- package/dist/shared/datasources/external/mastodon/status/sample.single.js +1 -0
- package/dist/shared/datasources/external/mastodon/status/sample.single.js.map +1 -0
- package/dist/shared/datasources/external/mastodon/status/schema.js +2 -1
- package/dist/shared/datasources/external/mastodon/status/schema.js.map +1 -0
- package/dist/shared/datasources/external/meta/oauth/config.js +2 -1
- package/dist/shared/datasources/external/meta/oauth/config.js.map +1 -0
- package/dist/shared/datasources/external/meta/options.js +1 -0
- package/dist/shared/datasources/external/meta/options.js.map +1 -0
- package/dist/shared/datasources/external/rss/fetcher.js +2 -1
- package/dist/shared/datasources/external/rss/fetcher.js.map +1 -0
- package/dist/shared/datasources/external/rss/options.js +1 -0
- package/dist/shared/datasources/external/rss/options.js.map +1 -0
- package/dist/shared/datasources/external/rss/schema.js +2 -1
- package/dist/shared/datasources/external/rss/schema.js.map +1 -0
- package/dist/shared/datasources/external/threads/media/fetcher.js +2 -1
- package/dist/shared/datasources/external/threads/media/fetcher.js.map +1 -0
- package/dist/shared/datasources/external/threads/media/schema.js +1 -0
- package/dist/shared/datasources/external/threads/media/schema.js.map +1 -0
- package/dist/shared/datasources/external/tiktok/oauth/config.js +2 -1
- package/dist/shared/datasources/external/tiktok/oauth/config.js.map +1 -0
- package/dist/shared/datasources/external/tiktok/video/fetcher.js +2 -1
- package/dist/shared/datasources/external/tiktok/video/fetcher.js.map +1 -0
- package/dist/shared/datasources/external/tiktok/video/options.js +1 -0
- package/dist/shared/datasources/external/tiktok/video/options.js.map +1 -0
- package/dist/shared/datasources/external/tiktok/video/schema.js +1 -0
- package/dist/shared/datasources/external/tiktok/video/schema.js.map +1 -0
- package/dist/shared/datasources/external/youtube/list/fetcher.js +2 -1
- package/dist/shared/datasources/external/youtube/list/fetcher.js.map +1 -0
- package/dist/shared/datasources/external/youtube/list/options.js +1 -0
- package/dist/shared/datasources/external/youtube/list/options.js.map +1 -0
- package/dist/shared/datasources/external/youtube/list/schema.js +2 -1
- package/dist/shared/datasources/external/youtube/list/schema.js.map +1 -0
- package/dist/shared/datasources/external/youtube/oauth/config.js +2 -1
- package/dist/shared/datasources/external/youtube/oauth/config.js.map +1 -0
- package/dist/shared/datasources/fetcher.js +1 -0
- package/dist/shared/datasources/fetcher.js.map +1 -0
- package/dist/shared/datasources/internal/blog/schema.js +1 -0
- package/dist/shared/datasources/internal/blog/schema.js.map +1 -0
- package/dist/shared/datasources/internal/changelog/schema.js +1 -0
- package/dist/shared/datasources/internal/changelog/schema.js.map +1 -0
- package/dist/shared/datasources/internal/contact-info/schema.js +2 -1
- package/dist/shared/datasources/internal/contact-info/schema.js.map +1 -0
- package/dist/shared/datasources/internal/cv/schema.js +1 -0
- package/dist/shared/datasources/internal/cv/schema.js.map +1 -0
- package/dist/shared/datasources/internal/faq/schema.js +1 -0
- package/dist/shared/datasources/internal/faq/schema.js.map +1 -0
- package/dist/shared/datasources/internal/job-board/schema.js +1 -0
- package/dist/shared/datasources/internal/job-board/schema.js.map +1 -0
- package/dist/shared/datasources/internal/links/schema.js +2 -1
- package/dist/shared/datasources/internal/links/schema.js.map +1 -0
- package/dist/shared/datasources/internal/recipes/schema.js +1 -0
- package/dist/shared/datasources/internal/recipes/schema.js.map +1 -0
- package/dist/shared/datasources/internal/restaurant/schema.js +1 -0
- package/dist/shared/datasources/internal/restaurant/schema.js.map +1 -0
- package/dist/shared/datasources/samples.js +1 -0
- package/dist/shared/datasources/samples.js.map +1 -0
- package/dist/shared/datasources/schemas.js +2 -1
- package/dist/shared/datasources/schemas.js.map +1 -0
- package/dist/shared/datasources/types.js +2 -1
- package/dist/shared/datasources/types.js.map +1 -0
- package/dist/shared/datasources/utils.js +2 -1
- package/dist/shared/datasources/utils.js.map +1 -0
- package/dist/shared/datasources.js +1 -0
- package/dist/shared/datasources.js.map +1 -0
- package/dist/shared/env.js +1 -0
- package/dist/shared/env.js.map +1 -0
- package/dist/shared/errors.js +2 -1
- package/dist/shared/errors.js.map +1 -0
- package/dist/shared/images.js +2 -1
- package/dist/shared/images.js.map +1 -0
- package/dist/shared/index.js +1 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/layout-constants.js +1 -0
- package/dist/shared/layout-constants.js.map +1 -0
- package/dist/shared/manifest.js +1 -0
- package/dist/shared/manifest.js.map +1 -0
- package/dist/shared/oauth.js +2 -1
- package/dist/shared/oauth.js.map +1 -0
- package/dist/shared/page.js +2 -1
- package/dist/shared/page.js.map +1 -0
- package/dist/shared/prompt.js +2 -1
- package/dist/shared/prompt.js.map +1 -0
- package/dist/shared/responsive.js +2 -1
- package/dist/shared/responsive.js.map +1 -0
- package/dist/shared/site.js +2 -1
- package/dist/shared/site.js.map +1 -0
- package/dist/shared/sitemap.js +2 -1
- package/dist/shared/sitemap.js.map +1 -0
- package/dist/shared/social-icons.js +1 -0
- package/dist/shared/social-icons.js.map +1 -0
- package/dist/shared/theme.js +2 -1
- package/dist/shared/theme.js.map +1 -0
- package/dist/shared/themes/color-system.js +1 -0
- package/dist/shared/themes/color-system.js.map +1 -0
- package/dist/shared/utils/canvas-data-uri.js +1 -0
- package/dist/shared/utils/canvas-data-uri.js.map +1 -0
- package/dist/shared/utils/invariant.js +2 -1
- package/dist/shared/utils/invariant.js.map +1 -0
- package/dist/shared/utils/json-date.js +2 -1
- package/dist/shared/utils/json-date.js.map +1 -0
- package/dist/shared/utils/llm.js +2 -1
- package/dist/shared/utils/llm.js.map +1 -0
- package/dist/shared/utils/merge.js +2 -1
- package/dist/shared/utils/merge.js.map +1 -0
- package/dist/shared/utils/object-hash.js +1 -0
- package/dist/shared/utils/object-hash.js.map +1 -0
- package/dist/shared/utils/schema.js +2 -1
- package/dist/shared/utils/schema.js.map +1 -0
- package/dist/shared/utils/string-enum.js +2 -1
- package/dist/shared/utils/string-enum.js.map +1 -0
- package/dist/shared/utils/try-catch.js +1 -0
- package/dist/shared/utils/try-catch.js.map +1 -0
- package/dist/shared/utils/typed-ref.js +2 -1
- package/dist/shared/utils/typed-ref.js.map +1 -0
- package/package.json +2 -2
- package/src/shared/theme.ts +6 -6
- package/src/shared/themes/tests/color-system.test.ts +5 -1
- package/dist/shared/chunk-5DZIQGY2.js +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/bricks/props/color-preset.ts"],"sourcesContent":["import { type Static, type ObjectOptions, Type, type StringOptions, TObject } from \"@sinclair/typebox\";\nimport { StringEnum } from \"~/shared/utils/string-enum\";\nimport { typedRef } from \"~/shared/utils/typed-ref\";\n\ntype ColorPresetOptions = ObjectOptions & {\n \"ui:presets\"?: Record<string, { className: string; label: string }>;\n \"ui:default-gradient-direction\"?: string;\n};\n\nexport const colorPresets: NonNullable<ColorPresetOptions[\"ui:presets\"]> = {\n \"primary-50\": {\n className: \"bg-primary-50 text-primary-50-content\",\n label: \"Primary 50\",\n },\n \"primary-100\": {\n className: \"bg-primary-100 text-primary-100-content\",\n label: \"Primary 100\",\n },\n \"primary-200\": {\n className: \"bg-primary-200 text-primary-200-content\",\n label: \"Primary 200\",\n },\n \"primary-300\": {\n className: \"bg-primary-300 text-primary-300-content\",\n label: \"Primary 300\",\n },\n \"primary-400\": {\n className: \"bg-primary-400 text-primary-400-content\",\n label: \"Primary 400\",\n },\n \"primary-500\": {\n className: \"bg-primary-500 text-primary-500-content\",\n label: \"Primary 500\",\n },\n \"primary-600\": {\n className: \"bg-primary-600 text-primary-600-content\",\n label: \"Primary 600\",\n },\n \"primary-700\": {\n className: \"bg-primary-700 text-primary-700-content\",\n label: \"Primary 700\",\n },\n \"primary-800\": {\n className: \"bg-primary-800 text-primary-800-content\",\n label: \"Primary 800\",\n },\n \"primary-900\": {\n className: \"bg-primary-900 text-primary-900-content\",\n label: \"Primary 900\",\n },\n \"secondary-50\": {\n className: \"bg-secondary-50 text-secondary-50-content\",\n label: \"Secondary 50\",\n },\n \"secondary-100\": {\n className: \"bg-secondary-100 text-secondary-100-content\",\n label: \"Secondary 100\",\n },\n \"secondary-200\": {\n className: \"bg-secondary-200 text-secondary-200-content\",\n label: \"Secondary 200\",\n },\n \"secondary-300\": {\n className: \"bg-secondary-300 text-secondary-300-content\",\n label: \"Secondary 300\",\n },\n \"secondary-400\": {\n className: \"bg-secondary-400 text-secondary-400-content\",\n label: \"Secondary 400\",\n },\n \"secondary-500\": {\n className: \"bg-secondary-500 text-secondary-500-content\",\n label: \"Secondary 500\",\n },\n \"secondary-600\": {\n className: \"bg-secondary-600 text-secondary-600-content\",\n label: \"Secondary 600\",\n },\n \"secondary-700\": {\n className: \"bg-secondary-700 text-secondary-700-content\",\n label: \"Secondary 700\",\n },\n \"secondary-800\": {\n className: \"bg-secondary-800 text-secondary-800-content\",\n label: \"Secondary 800\",\n },\n \"secondary-900\": {\n className: \"bg-secondary-900 text-secondary-900-content\",\n label: \"Secondary 900\",\n },\n \"accent-50\": {\n className: \"bg-accent-50 text-accent-50-content\",\n label: \"Accent 50\",\n },\n \"accent-100\": {\n className: \"bg-accent-100 text-accent-100-content\",\n label: \"Accent 100\",\n },\n \"accent-200\": {\n className: \"bg-accent-200 text-accent-200-content\",\n label: \"Accent 200\",\n },\n \"accent-300\": {\n className: \"bg-accent-300 text-accent-300-content\",\n label: \"Accent 300\",\n },\n \"accent-400\": {\n className: \"bg-accent-400 text-accent-400-content\",\n label: \"Accent 400\",\n },\n \"accent-500\": {\n className: \"bg-accent-500 text-accent-500-content\",\n label: \"Accent 500\",\n },\n \"accent-600\": {\n className: \"bg-accent-600 text-accent-600-content\",\n label: \"Accent 600\",\n },\n \"accent-700\": {\n className: \"bg-accent-700 text-accent-700-content\",\n label: \"Accent 700\",\n },\n \"accent-800\": {\n className: \"bg-accent-800 text-accent-800-content\",\n label: \"Accent 800\",\n },\n \"accent-900\": {\n className: \"bg-accent-900 text-accent-900-content\",\n label: \"Accent 900\",\n },\n \"neutral-50\": {\n className: \"bg-neutral-50 text-neutral-50-content\",\n label: \"Neutral 50\",\n },\n \"neutral-100\": {\n className: \"bg-neutral-100 text-neutral-100-content\",\n label: \"Neutral 100\",\n },\n \"neutral-200\": {\n className: \"bg-neutral-200 text-neutral-200-content\",\n label: \"Neutral 200\",\n },\n \"neutral-300\": {\n className: \"bg-neutral-300 text-neutral-300-content\",\n label: \"Neutral 300\",\n },\n \"neutral-400\": {\n className: \"bg-neutral-400 text-neutral-400-content\",\n label: \"Neutral 400\",\n },\n \"neutral-500\": {\n className: \"bg-neutral-500 text-neutral-500-content\",\n label: \"Neutral 500\",\n },\n \"neutral-600\": {\n className: \"bg-neutral-600 text-neutral-600-content\",\n label: \"Neutral 600\",\n },\n \"neutral-700\": {\n className: \"bg-neutral-700 text-neutral-700-content\",\n label: \"Neutral 700\",\n },\n \"neutral-800\": {\n className: \"bg-neutral-800 text-neutral-800-content\",\n label: \"Neutral 800\",\n },\n \"neutral-900\": {\n className: \"bg-neutral-900 text-neutral-900-content\",\n label: \"Neutral 900\",\n },\n \"base-100\": {\n className: \"bg-base-100 text-base-100-content\",\n label: \"Base 100\",\n },\n \"base-200\": {\n className: \"bg-base-200 text-base-200-content\",\n label: \"Base 200\",\n },\n \"base-300\": {\n className: \"bg-base-300 text-base-300-content\",\n label: \"Base 300\",\n },\n \"primary-gradient-100\": {\n className: \"from-primary-100 to-primary-200 text-primary-100-content\",\n label: \"Primary gradient 1\",\n },\n \"primary-gradient-200\": {\n className: \"from-primary-200 to-primary-300 text-primary-200-content\",\n label: \"Primary gradient 2\",\n },\n \"primary-gradient-300\": {\n className: \"from-primary-300 to-primary-400 text-primary-300-content\",\n label: \"Primary gradient 3\",\n },\n \"primary-gradient-400\": {\n className: \"from-primary-400 to-primary-500 text-primary-400-content\",\n label: \"Primary gradient 4\",\n },\n \"primary-gradient-500\": {\n className: \"from-primary-500 to-primary-600 text-primary-500-content\",\n label: \"Primary gradient 5\",\n },\n \"primary-gradient-600\": {\n className: \"from-primary-600 to-primary-700 text-primary-600-content\",\n label: \"Primary gradient 6\",\n },\n \"primary-gradient-700\": {\n className: \"from-primary-700 to-primary-800 text-primary-700-content\",\n label: \"Primary gradient 7\",\n },\n \"primary-gradient-800\": {\n className: \"from-primary-800 to-primary-900 text-primary-800-content\",\n label: \"Primary gradient 8\",\n },\n \"secondary-gradient-100\": {\n className: \"from-secondary-100 to-secondary-200 text-secondary-100-content\",\n label: \"Secondary gradient 1\",\n },\n \"secondary-gradient-200\": {\n className: \"from-secondary-200 to-secondary-300 text-secondary-200-content\",\n label: \"Secondary gradient 2\",\n },\n \"secondary-gradient-300\": {\n className: \"from-secondary-300 to-secondary-400 text-secondary-300-content\",\n label: \"Secondary gradient 3\",\n },\n \"secondary-gradient-400\": {\n className: \"from-secondary-400 to-secondary-500 text-secondary-400-content\",\n label: \"Secondary gradient 4\",\n },\n \"secondary-gradient-500\": {\n className: \"from-secondary-500 to-secondary-600 text-secondary-500-content\",\n label: \"Secondary gradient 5\",\n },\n \"secondary-gradient-600\": {\n className: \"from-secondary-600 to-secondary-700 text-secondary-600-content\",\n label: \"Secondary gradient 6\",\n },\n \"secondary-gradient-700\": {\n className: \"from-secondary-700 to-secondary-800 text-secondary-700-content\",\n label: \"Secondary gradient 7\",\n },\n \"secondary-gradient-800\": {\n className: \"from-secondary-800 to-secondary-900 text-secondary-800-content\",\n label: \"Secondary gradient 8\",\n },\n \"accent-gradient-100\": {\n className: \"from-accent-100 to-accent-200 text-accent-100-content\",\n label: \"Accent gradient 1\",\n },\n \"accent-gradient-200\": {\n className: \"from-accent-200 to-accent-300 text-accent-200-content\",\n label: \"Accent gradient 2\",\n },\n \"accent-gradient-300\": {\n className: \"from-accent-300 to-accent-400 text-accent-300-content\",\n label: \"Accent gradient 3\",\n },\n \"accent-gradient-400\": {\n className: \"from-accent-400 to-accent-500 text-accent-400-content\",\n label: \"Accent gradient 4\",\n },\n \"accent-gradient-500\": {\n className: \"from-accent-500 to-accent-600 text-accent-500-content\",\n label: \"Accent gradient 5\",\n },\n \"accent-gradient-600\": {\n className: \"from-accent-600 to-accent-700 text-accent-600-content\",\n label: \"Accent gradient 6\",\n },\n \"accent-gradient-700\": {\n className: \"from-accent-700 to-accent-800 text-accent-700-content\",\n label: \"Accent gradient 7\",\n },\n \"accent-gradient-800\": {\n className: \"from-accent-800 to-accent-900 text-accent-800-content\",\n label: \"Accent gradient 8\",\n },\n \"neutral-gradient-100\": {\n className: \"from-neutral-100 to-neutral-200 text-neutral-100-content\",\n label: \"Neutral gradient 1\",\n },\n \"neutral-gradient-200\": {\n className: \"from-neutral-200 to-neutral-300 text-neutral-200-content\",\n label: \"Neutral gradient 2\",\n },\n \"neutral-gradient-300\": {\n className: \"from-neutral-300 to-neutral-400 text-neutral-300-content\",\n label: \"Neutral gradient 3\",\n },\n \"neutral-gradient-400\": {\n className: \"from-neutral-400 to-neutral-500 text-neutral-400-content\",\n label: \"Neutral gradient 4\",\n },\n \"neutral-gradient-500\": {\n className: \"from-neutral-500 to-neutral-600 text-neutral-500-content\",\n label: \"Neutral gradient 5\",\n },\n \"neutral-gradient-600\": {\n className: \"from-neutral-600 to-neutral-700 text-neutral-600-content\",\n label: \"Neutral gradient 6\",\n },\n \"neutral-gradient-700\": {\n className: \"from-neutral-700 to-neutral-800 text-neutral-700-content\",\n label: \"Neutral gradient 7\",\n },\n \"neutral-gradient-800\": {\n className: \"from-neutral-800 to-neutral-900 text-neutral-800-content\",\n label: \"Neutral gradient 8\",\n },\n \"base-gradient-100\": {\n className: \"from-base-100 to-base-200 text-base-100-content\",\n label: \"Base gradient 1\",\n },\n \"base-gradient-200\": {\n className: \"from-base-200 to-base-300 text-base-200-content\",\n label: \"Base gradient 2\",\n },\n none: {\n className: \"\",\n label: \"None\",\n },\n};\n\nexport function colorPreset(options: ColorPresetOptions = {}) {\n return Type.Object(\n {\n color: StringEnum(Object.keys(colorPresets), {\n title: \"Color preset\",\n description: \"Color preset to apply to background and text\",\n enumNames: Object.keys(colorPresets).map((key) => colorPresets[key].label),\n \"ai:instructions\": `Presets are predefined color combinations of background and text colors that can be applied to elements. They include various shades of primary, secondary, accent, and neutral colors, as well as gradients. You can also select 'none' to remove any preset.`,\n \"ui:styleId\": \"presets:color\",\n \"ui:responsive\": true,\n default: options.default?.color,\n }),\n gradientDirection: Type.Optional(gradientDirection(options)),\n },\n {\n \"ui:field\": \"color-preset\",\n // $id: \"presets:color\",\n title: \"Color preset\",\n \"ui:presets\": colorPresets,\n default: options.default,\n examples: [\n { color: \"primary-500\" },\n { color: \"secondary-500\" },\n { color: \"accent-800\", gradientDirection: \"bg-gradient-to-t\" },\n ],\n \"ui:default-gradient-direction\": options[\"ui:default-gradient-direction\"] ?? \"bg-gradient-to-br\",\n },\n );\n}\n\nexport type ColorPresetSettings = Static<ReturnType<typeof colorPreset>>;\n\nexport function colorPresetRef(options: ColorPresetOptions = {}) {\n return typedRef(\"presets:color\", options);\n}\n\nfunction gradientDirection(options: StringOptions = {}) {\n return StringEnum(\n [\n \"bg-gradient-to-t\",\n \"bg-gradient-to-r\",\n \"bg-gradient-to-b\",\n \"bg-gradient-to-l\",\n \"bg-gradient-to-tl\",\n \"bg-gradient-to-tr\",\n \"bg-gradient-to-br\",\n \"bg-gradient-to-bl\",\n ],\n {\n title: \"Gradient direction\",\n description: \"The direction of the gradient. Only applies when color preset is a gradient.\",\n enumNames: [\"Top\", \"Right\", \"Bottom\", \"Left\", \"Top left\", \"Top right\", \"Bottom right\", \"Bottom left\"],\n default: \"bg-gradient-to-br\",\n \"ui:responsive\": \"desktop\",\n \"ui:styleId\": \"styles:gradientDirection\",\n // metadata: {\n // filter: (manifestProps: TObject, formData: Static<BrickManifest[\"props\"]>) => {\n // return (formData[colorPropKey] as string)?.includes(\"gradient\") === true;\n // },\n // },\n ...options,\n },\n );\n}\n\nexport type GradientDirectionSettings = Static<ReturnType<typeof gradientDirection>>;\n"],"mappings":";;2EAAA,OAA0C,QAAAA,MAAyC,oBAS5E,IAAMC,EAA8D,CACzE,aAAc,CACZ,UAAW,wCACX,MAAO,YACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,eAAgB,CACd,UAAW,4CACX,MAAO,cACT,EACA,gBAAiB,CACf,UAAW,8CACX,MAAO,eACT,EACA,gBAAiB,CACf,UAAW,8CACX,MAAO,eACT,EACA,gBAAiB,CACf,UAAW,8CACX,MAAO,eACT,EACA,gBAAiB,CACf,UAAW,8CACX,MAAO,eACT,EACA,gBAAiB,CACf,UAAW,8CACX,MAAO,eACT,EACA,gBAAiB,CACf,UAAW,8CACX,MAAO,eACT,EACA,gBAAiB,CACf,UAAW,8CACX,MAAO,eACT,EACA,gBAAiB,CACf,UAAW,8CACX,MAAO,eACT,EACA,gBAAiB,CACf,UAAW,8CACX,MAAO,eACT,EACA,YAAa,CACX,UAAW,sCACX,MAAO,WACT,EACA,aAAc,CACZ,UAAW,wCACX,MAAO,YACT,EACA,aAAc,CACZ,UAAW,wCACX,MAAO,YACT,EACA,aAAc,CACZ,UAAW,wCACX,MAAO,YACT,EACA,aAAc,CACZ,UAAW,wCACX,MAAO,YACT,EACA,aAAc,CACZ,UAAW,wCACX,MAAO,YACT,EACA,aAAc,CACZ,UAAW,wCACX,MAAO,YACT,EACA,aAAc,CACZ,UAAW,wCACX,MAAO,YACT,EACA,aAAc,CACZ,UAAW,wCACX,MAAO,YACT,EACA,aAAc,CACZ,UAAW,wCACX,MAAO,YACT,EACA,aAAc,CACZ,UAAW,wCACX,MAAO,YACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,cAAe,CACb,UAAW,0CACX,MAAO,aACT,EACA,WAAY,CACV,UAAW,oCACX,MAAO,UACT,EACA,WAAY,CACV,UAAW,oCACX,MAAO,UACT,EACA,WAAY,CACV,UAAW,oCACX,MAAO,UACT,EACA,uBAAwB,CACtB,UAAW,2DACX,MAAO,oBACT,EACA,uBAAwB,CACtB,UAAW,2DACX,MAAO,oBACT,EACA,uBAAwB,CACtB,UAAW,2DACX,MAAO,oBACT,EACA,uBAAwB,CACtB,UAAW,2DACX,MAAO,oBACT,EACA,uBAAwB,CACtB,UAAW,2DACX,MAAO,oBACT,EACA,uBAAwB,CACtB,UAAW,2DACX,MAAO,oBACT,EACA,uBAAwB,CACtB,UAAW,2DACX,MAAO,oBACT,EACA,uBAAwB,CACtB,UAAW,2DACX,MAAO,oBACT,EACA,yBAA0B,CACxB,UAAW,iEACX,MAAO,sBACT,EACA,yBAA0B,CACxB,UAAW,iEACX,MAAO,sBACT,EACA,yBAA0B,CACxB,UAAW,iEACX,MAAO,sBACT,EACA,yBAA0B,CACxB,UAAW,iEACX,MAAO,sBACT,EACA,yBAA0B,CACxB,UAAW,iEACX,MAAO,sBACT,EACA,yBAA0B,CACxB,UAAW,iEACX,MAAO,sBACT,EACA,yBAA0B,CACxB,UAAW,iEACX,MAAO,sBACT,EACA,yBAA0B,CACxB,UAAW,iEACX,MAAO,sBACT,EACA,sBAAuB,CACrB,UAAW,wDACX,MAAO,mBACT,EACA,sBAAuB,CACrB,UAAW,wDACX,MAAO,mBACT,EACA,sBAAuB,CACrB,UAAW,wDACX,MAAO,mBACT,EACA,sBAAuB,CACrB,UAAW,wDACX,MAAO,mBACT,EACA,sBAAuB,CACrB,UAAW,wDACX,MAAO,mBACT,EACA,sBAAuB,CACrB,UAAW,wDACX,MAAO,mBACT,EACA,sBAAuB,CACrB,UAAW,wDACX,MAAO,mBACT,EACA,sBAAuB,CACrB,UAAW,wDACX,MAAO,mBACT,EACA,uBAAwB,CACtB,UAAW,2DACX,MAAO,oBACT,EACA,uBAAwB,CACtB,UAAW,2DACX,MAAO,oBACT,EACA,uBAAwB,CACtB,UAAW,2DACX,MAAO,oBACT,EACA,uBAAwB,CACtB,UAAW,2DACX,MAAO,oBACT,EACA,uBAAwB,CACtB,UAAW,2DACX,MAAO,oBACT,EACA,uBAAwB,CACtB,UAAW,2DACX,MAAO,oBACT,EACA,uBAAwB,CACtB,UAAW,2DACX,MAAO,oBACT,EACA,uBAAwB,CACtB,UAAW,2DACX,MAAO,oBACT,EACA,oBAAqB,CACnB,UAAW,kDACX,MAAO,iBACT,EACA,oBAAqB,CACnB,UAAW,kDACX,MAAO,iBACT,EACA,KAAM,CACJ,UAAW,GACX,MAAO,MACT,CACF,EAEO,SAASC,EAAYC,EAA8B,CAAC,EAAG,CAC5D,OAAOC,EAAK,OACV,CACE,MAAOC,EAAW,OAAO,KAAKJ,CAAY,EAAG,CAC3C,MAAO,eACP,YAAa,+CACb,UAAW,OAAO,KAAKA,CAAY,EAAE,IAAKK,GAAQL,EAAaK,CAAG,EAAE,KAAK,EACzE,kBAAmB,iQACnB,aAAc,gBACd,gBAAiB,GACjB,QAASH,EAAQ,SAAS,KAC5B,CAAC,EACD,kBAAmBC,EAAK,SAASG,EAAkBJ,CAAO,CAAC,CAC7D,EACA,CACE,WAAY,eAEZ,MAAO,eACP,aAAcF,EACd,QAASE,EAAQ,QACjB,SAAU,CACR,CAAE,MAAO,aAAc,EACvB,CAAE,MAAO,eAAgB,EACzB,CAAE,MAAO,aAAc,kBAAmB,kBAAmB,CAC/D,EACA,gCAAiCA,EAAQ,+BAA+B,GAAK,mBAC/E,CACF,CACF,CAIO,SAASK,EAAeL,EAA8B,CAAC,EAAG,CAC/D,OAAOM,EAAS,gBAAiBN,CAAO,CAC1C,CAEA,SAASI,EAAkBJ,EAAyB,CAAC,EAAG,CACtD,OAAOE,EACL,CACE,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,mBACF,EACA,CACE,MAAO,qBACP,YAAa,+EACb,UAAW,CAAC,MAAO,QAAS,SAAU,OAAQ,WAAY,YAAa,eAAgB,aAAa,EACpG,QAAS,oBACT,gBAAiB,UACjB,aAAc,2BAMd,GAAGF,CACL,CACF,CACF","names":["Type","colorPresets","colorPreset","options","Type","StringEnum","key","gradientDirection","colorPresetRef","typedRef"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/errors.ts"],"sourcesContent":["export { UnauthorizedError } from \"http-errors-enhanced\";\n"],"mappings":";;AAAA,OAAS,qBAAAA,MAAyB","names":["UnauthorizedError"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
2
|
|
|
3
|
-
import{a as r}from"./chunk-
|
|
3
|
+
import{a as r}from"./chunk-KFM6KXSE.js";import{a}from"./chunk-JMN3HTZU.js";import{Type as t}from"@sinclair/typebox";function u(e={}){let{default:o,...n}=e;return t.Object({image:t.String({title:"Image",description:"The background image. Can be a URL or a data URI",format:"image",examples:["https://example.com/image.png"]}),size:t.Optional(a(["auto","cover","contain"],{enumNames:["Auto","Cover","Contain"],default:o?.size??"auto","ai:instructions":"Only use this when the image is set."})),repeat:t.Optional(a(["no-repeat","repeat","repeat-x","repeat-y","space","round"],{enumNames:["No repeat","Repeat","Repeat horizontally","Repeat vertically","Space","Round"],default:o?.repeat??"no-repeat","ai:instructions":"Only use this when the image is set."}))},{"ui:styleId":"styles:background","ui:field":"background",title:"Background image",default:o,...n})}function c(e={}){return r("styles:background",e)}function l(e={}){return t.String({title:"Background color","ai:instructions":"Can be set to transparent, hex/rgb/rgba color, or classes like `bg-<variant>-<shade>`, variants being primary, secondary, accent and neutral, and shades between 100 and 900. Use bg-<variant>-<shade> classes as much as possible.","ui:field":"color","ui:color-type":"background","ui:styleId":"styles:backgroundColor","ui:responsive":"desktop",...e})}function d(e={}){return r("styles:backgroundColor",e)}export{u as a,c as b,l as c,d};
|
|
4
|
+
//# sourceMappingURL=chunk-DHI3IBOD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/bricks/props/background.ts"],"sourcesContent":["import { type SchemaOptions, Type, type Static } from \"@sinclair/typebox\";\nimport type { ElementColorType } from \"~/shared/themes/color-system\";\nimport { StringEnum } from \"~/shared/utils/string-enum\";\nimport { typedRef } from \"~/shared/utils/typed-ref\";\n\ntype BackgroundOptions = {\n title?: string;\n default?: {\n image?: string;\n size?: string;\n repeat?: string;\n };\n colorType?: ElementColorType;\n};\n\nexport function background(opts: BackgroundOptions = {}) {\n const { default: defValue, ...restOpts } = opts;\n return Type.Object(\n {\n image: Type.String({\n title: \"Image\",\n description: \"The background image. Can be a URL or a data URI\",\n format: \"image\",\n examples: [\"https://example.com/image.png\"],\n }),\n size: Type.Optional(\n StringEnum([\"auto\", \"cover\", \"contain\"], {\n enumNames: [\"Auto\", \"Cover\", \"Contain\"],\n default: defValue?.size ?? \"auto\",\n \"ai:instructions\": \"Only use this when the image is set.\",\n }),\n ),\n repeat: Type.Optional(\n StringEnum([\"no-repeat\", \"repeat\", \"repeat-x\", \"repeat-y\", \"space\", \"round\"], {\n enumNames: [\"No repeat\", \"Repeat\", \"Repeat horizontally\", \"Repeat vertically\", \"Space\", \"Round\"],\n default: defValue?.repeat ?? \"no-repeat\",\n \"ai:instructions\": \"Only use this when the image is set.\",\n }),\n ),\n },\n {\n // $id: \"styles:background\",\n \"ui:styleId\": \"styles:background\",\n \"ui:field\": \"background\",\n title: \"Background image\",\n // disable for now\n // \"ui:show-img-search\": true,\n default: defValue,\n ...restOpts,\n },\n );\n}\n\nexport type BackgroundSettings = Static<ReturnType<typeof background>>;\n\nexport function backgroundRef(options: SchemaOptions = {}) {\n return typedRef(\"styles:background\", options);\n}\n\nexport function backgroundColor(options: SchemaOptions = {}) {\n return Type.String({\n title: \"Background color\",\n // $id: \"styles:backgroundColor\",\n \"ai:instructions\":\n \"Can be set to transparent, hex/rgb/rgba color, or classes like `bg-<variant>-<shade>`, variants being primary, secondary, accent and neutral, and shades between 100 and 900. Use bg-<variant>-<shade> classes as much as possible.\",\n \"ui:field\": \"color\",\n \"ui:color-type\": \"background\",\n // \"ui:advanced\": true,\n \"ui:styleId\": \"styles:backgroundColor\",\n \"ui:responsive\": \"desktop\",\n ...options,\n });\n}\n\nexport type BackgroundColorSettings = Static<ReturnType<typeof backgroundColor>>;\n\nexport function backgroundColorRef(options: SchemaOptions = {}) {\n return typedRef(\"styles:backgroundColor\", options);\n}\n"],"mappings":";;2EAAA,OAA6B,QAAAA,MAAyB,oBAe/C,SAASC,EAAWC,EAA0B,CAAC,EAAG,CACvD,GAAM,CAAE,QAASC,EAAU,GAAGC,CAAS,EAAIF,EAC3C,OAAOG,EAAK,OACV,CACE,MAAOA,EAAK,OAAO,CACjB,MAAO,QACP,YAAa,mDACb,OAAQ,QACR,SAAU,CAAC,+BAA+B,CAC5C,CAAC,EACD,KAAMA,EAAK,SACTC,EAAW,CAAC,OAAQ,QAAS,SAAS,EAAG,CACvC,UAAW,CAAC,OAAQ,QAAS,SAAS,EACtC,QAASH,GAAU,MAAQ,OAC3B,kBAAmB,sCACrB,CAAC,CACH,EACA,OAAQE,EAAK,SACXC,EAAW,CAAC,YAAa,SAAU,WAAY,WAAY,QAAS,OAAO,EAAG,CAC5E,UAAW,CAAC,YAAa,SAAU,sBAAuB,oBAAqB,QAAS,OAAO,EAC/F,QAASH,GAAU,QAAU,YAC7B,kBAAmB,sCACrB,CAAC,CACH,CACF,EACA,CAEE,aAAc,oBACd,WAAY,aACZ,MAAO,mBAGP,QAASA,EACT,GAAGC,CACL,CACF,CACF,CAIO,SAASG,EAAcC,EAAyB,CAAC,EAAG,CACzD,OAAOC,EAAS,oBAAqBD,CAAO,CAC9C,CAEO,SAASE,EAAgBF,EAAyB,CAAC,EAAG,CAC3D,OAAOH,EAAK,OAAO,CACjB,MAAO,mBAEP,kBACE,sOACF,WAAY,QACZ,gBAAiB,aAEjB,aAAc,yBACd,gBAAiB,UACjB,GAAGG,CACL,CAAC,CACH,CAIO,SAASG,EAAmBH,EAAyB,CAAC,EAAG,CAC9D,OAAOC,EAAS,yBAA0BD,CAAO,CACnD","names":["Type","background","opts","defValue","restOpts","Type","StringEnum","backgroundRef","options","typedRef","backgroundColor","backgroundColorRef"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
2
|
|
|
3
3
|
import{Type as t}from"@sinclair/typebox";var i=t.Array(t.Object({etag:t.String(),id:t.Object({videoId:t.String(),channelId:t.String(),playlistId:t.String()}),snippet:t.Object({publishedAt:t.String(),channelId:t.String(),title:t.String(),description:t.String(),thumbnails:t.Object({default:t.Object({url:t.String(),width:t.Number(),height:t.Number()}),standard:t.Object({url:t.String(),width:t.Number(),height:t.Number()})}),channelTitle:t.String(),liveBroadcastContent:t.String()})}),{title:"Youtube list schema",description:"Schema for a list of Youtube videos"});export{i as a};
|
|
4
|
+
//# sourceMappingURL=chunk-DQ7PRWTG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/datasources/external/youtube/list/schema.ts"],"sourcesContent":["import { Type, type Static } from \"@sinclair/typebox\";\n\nexport const youtubeListSchema = Type.Array(\n Type.Object({\n etag: Type.String(),\n id: Type.Object({\n videoId: Type.String(),\n channelId: Type.String(),\n playlistId: Type.String(),\n }),\n snippet: Type.Object({\n publishedAt: Type.String(),\n channelId: Type.String(),\n title: Type.String(),\n description: Type.String(),\n thumbnails: Type.Object({\n default: Type.Object({\n url: Type.String(),\n width: Type.Number(),\n height: Type.Number(),\n }),\n standard: Type.Object({\n url: Type.String(),\n width: Type.Number(),\n height: Type.Number(),\n }),\n }),\n channelTitle: Type.String(),\n liveBroadcastContent: Type.String(),\n }),\n }),\n {\n title: \"Youtube list schema\",\n description: \"Schema for a list of Youtube videos\",\n },\n);\n\nexport type YoutubeListSchema = Static<typeof youtubeListSchema>;\n"],"mappings":";;AAAA,OAAS,QAAAA,MAAyB,oBAE3B,IAAMC,EAAoBD,EAAK,MACpCA,EAAK,OAAO,CACV,KAAMA,EAAK,OAAO,EAClB,GAAIA,EAAK,OAAO,CACd,QAASA,EAAK,OAAO,EACrB,UAAWA,EAAK,OAAO,EACvB,WAAYA,EAAK,OAAO,CAC1B,CAAC,EACD,QAASA,EAAK,OAAO,CACnB,YAAaA,EAAK,OAAO,EACzB,UAAWA,EAAK,OAAO,EACvB,MAAOA,EAAK,OAAO,EACnB,YAAaA,EAAK,OAAO,EACzB,WAAYA,EAAK,OAAO,CACtB,QAASA,EAAK,OAAO,CACnB,IAAKA,EAAK,OAAO,EACjB,MAAOA,EAAK,OAAO,EACnB,OAAQA,EAAK,OAAO,CACtB,CAAC,EACD,SAAUA,EAAK,OAAO,CACpB,IAAKA,EAAK,OAAO,EACjB,MAAOA,EAAK,OAAO,EACnB,OAAQA,EAAK,OAAO,CACtB,CAAC,CACH,CAAC,EACD,aAAcA,EAAK,OAAO,EAC1B,qBAAsBA,EAAK,OAAO,CACpC,CAAC,CACH,CAAC,EACD,CACE,MAAO,sBACP,YAAa,qCACf,CACF","names":["Type","youtubeListSchema"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
2
|
|
|
3
|
-
import{c as p}from"./chunk-
|
|
3
|
+
import{c as p}from"./chunk-3YVJ2ELD.js";import{a as e}from"./chunk-RJYZ5FAR.js";import{CgSpaceBetween as t}from"react-icons/cg";var o=e({type:"spacer",name:"Spacer",category:"container",description:"A flexible element to create space between bricks.",staticClasses:"self-stretch",minWidth:{desktop:50},defaultWidth:{mobile:"auto",desktop:"50px"},minHeight:{mobile:30},icon:t,props:p({})}),n=[{description:"Transparent spacer of 100px wide",type:"spacer",props:{width:"100px"}},{description:"Transparent spacer of 20px wide",type:"spacer",props:{width:"20px"}},{description:"Transparent spacer set in % (percentage)",type:"spacer",props:{width:"20%"}}];export{o as a,n as b};
|
|
4
|
+
//# sourceMappingURL=chunk-E6XEI7IK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/bricks/manifests/spacer.manifest.ts"],"sourcesContent":["import { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps } from \"../props/helpers\";\nimport type { BrickProps } from \"../props/types\";\nimport { CgSpaceBetween } from \"react-icons/cg\";\n\nexport const manifest = defineBrickManifest({\n type: \"spacer\",\n name: \"Spacer\",\n category: \"container\",\n description: \"A flexible element to create space between bricks.\",\n staticClasses: \"self-stretch\",\n minWidth: {\n desktop: 50,\n },\n defaultWidth: {\n mobile: \"auto\",\n desktop: \"50px\",\n },\n minHeight: {\n mobile: 30,\n },\n icon: CgSpaceBetween,\n props: defineProps({}),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: {\n description: string;\n type: string;\n props: BrickProps<Manifest>[\"brick\"][\"props\"];\n}[] = [\n {\n description: \"Transparent spacer of 100px wide\",\n type: \"spacer\",\n props: {\n width: \"100px\",\n },\n },\n {\n description: \"Transparent spacer of 20px wide\",\n type: \"spacer\",\n props: {\n width: \"20px\",\n },\n },\n {\n description: \"Transparent spacer set in % (percentage)\",\n type: \"spacer\",\n props: {\n width: \"20%\",\n },\n },\n];\n"],"mappings":";;gFAGA,OAAS,kBAAAA,MAAsB,iBAExB,IAAMC,EAAWC,EAAoB,CAC1C,KAAM,SACN,KAAM,SACN,SAAU,YACV,YAAa,qDACb,cAAe,eACf,SAAU,CACR,QAAS,EACX,EACA,aAAc,CACZ,OAAQ,OACR,QAAS,MACX,EACA,UAAW,CACT,OAAQ,EACV,EACA,KAAMF,EACN,MAAOG,EAAY,CAAC,CAAC,CACvB,CAAC,EAIYC,EAIP,CACJ,CACE,YAAa,mCACb,KAAM,SACN,MAAO,CACL,MAAO,OACT,CACF,EACA,CACE,YAAa,kCACb,KAAM,SACN,MAAO,CACL,MAAO,MACT,CACF,EACA,CACE,YAAa,2CACb,KAAM,SACN,MAAO,CACL,MAAO,KACT,CACF,CACF","names":["CgSpaceBetween","manifest","defineBrickManifest","defineProps","examples"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
2
|
|
|
3
|
-
import{c as t}from"./chunk-
|
|
3
|
+
import{c as t}from"./chunk-3YVJ2ELD.js";import{a as e}from"./chunk-RJYZ5FAR.js";import{BsCodeSquare as i}from"react-icons/bs";import{Type as r}from"@sinclair/typebox";var p=e({type:"html",name:"Html",category:"widgets",description:"A flexible brick that accepts HTML content. Useful for embeding custom HTML or third-party widgets.",aiInstructions:"Use only this brick type when integrating third party widgets or custom HTML content. Most of the time, you should use other bricks that are more secure and easier to use.",staticClasses:"self-stretch",defaultWidth:{mobile:"auto",desktop:"300px"},icon:i,props:t({html:r.String({title:"HTML Content",description:"The HTML content to render. Use with caution, as it can introduce security risks.",default:"<div>Your HTML content here</div>","ui:placeholder":"<div>Your HTML content here</div>","ui:multiline":!0,metadata:{category:"content"}})})}),n=[{description:"A tally form",type:"html",props:{html:'<iframe data-tally-src="https://tally.so/embed/wQZpd8?alignLeft=1&hideTitle=1&transparentBackground=1&dynamicHeight=1" loading="lazy" width="100%" height="282" frameborder="0" marginheight="0" marginwidth="0" title="test"></iframe>'}},{description:"YouTube video embed",type:"html",props:{html:'<iframe width="560" height="315" src="https://www.youtube.com/embed/dQw4w9WgXcQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>'}},{description:"Google Maps embed",type:"html",props:{html:'<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3024.309059887159!2d-74.00849368459473!3d40.71278097932847!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c25a165bedccab%3A0xa2008c34c27bfb67!2sWall%20St%2C%20New%20York%2C%20NY%2C%20USA!5e0!3m2!1sen!2sus!4v1620000000000" width="100%" height="300" style="border:0;" allowfullscreen="" loading="lazy"></iframe>'}},{description:"Twitter tweet embed",type:"html",props:{html:'<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Just setting up my twttr</p>— Jack Dorsey (@jack) <a href="https://twitter.com/jack/status/20?ref_src=twsrc%5Etfw">March 21, 2006</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>'}},{description:"CodePen embed for code showcase",type:"html",props:{html:'<iframe height="300" style="width: 100%;" scrolling="no" title="CSS Animation Example" src="https://codepen.io/team/codepen/embed/PNaGbb?height=300&theme-id=light&default-tab=result" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true"></iframe>'}},{description:"Calendly scheduling widget",type:"html",props:{html:'<div class="calendly-inline-widget" data-url="https://calendly.com/your-name/30min" style="min-width:320px;height:630px;"></div><script type="text/javascript" src="https://assets.calendly.com/assets/external/widget.js" async></script>'}},{description:"Custom pricing table with CSS styling",type:"html",props:{html:'<div style="display: flex; gap: 20px; justify-content: center;"><div style="border: 2px solid #e2e8f0; border-radius: 12px; padding: 24px; text-align: center; background: white;"><h3 style="margin: 0 0 16px; color: #1e293b;">Basic</h3><div style="font-size: 32px; font-weight: bold; color: #0ea5e9;">$9</div><p style="color: #64748b; margin: 8px 0 20px;">per month</p><ul style="list-style: none; padding: 0; margin: 0;"><li style="padding: 8px 0;">\u2713 5 Projects</li><li style="padding: 8px 0;">\u2713 10GB Storage</li><li style="padding: 8px 0;">\u2713 Email Support</li></ul></div></div>'}},{description:"Mailchimp newsletter signup form",type:"html",props:{html:'<div id="mc_embed_signup"><form action="https://your-domain.us1.list-manage.com/subscribe/post?u=123456789&id=abcdefghij" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate><div id="mc_embed_signup_scroll"><div class="mc-field-group"><label for="mce-EMAIL">Email Address</label><input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL" style="width: 100%; padding: 10px; margin: 8px 0; border: 1px solid #ccc; border-radius: 4px;"></div><div id="mce-responses" class="clear"><div class="response" id="mce-error-response" style="display:none"></div><div class="response" id="mce-success-response" style="display:none"></div></div><div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_123456789_abcdefghij" tabindex="-1" value=""></div><div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button" style="background: #007cba; color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer;"></div></div></form></div>'}},{description:"Stripe payment button integration",type:"html",props:{html:'<script async src="https://js.stripe.com/v3/buy-button.js"></script><stripe-buy-button buy-button-id="buy_btn_1234567890" publishable-key="pk_test_1234567890"></stripe-buy-button>'}},{description:"Instagram post embed",type:"html",props:{html:'<blockquote class="instagram-media" data-instgrm-captioned data-instgrm-permalink="https://www.instagram.com/p/ABC123/" data-instgrm-version="14" style="background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"></blockquote><script async src="//www.instagram.com/embed.js"></script>'}},{description:"Custom countdown timer widget",type:"html",props:{html:'<div style="text-align: center; padding: 20px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-radius: 12px; color: white;"><h3 style="margin: 0 0 20px; font-size: 24px;">Event Countdown</h3><div id="countdown" style="display: flex; justify-content: center; gap: 20px;"><div style="text-align: center;"><div style="font-size: 32px; font-weight: bold;">10</div><div style="font-size: 14px; opacity: 0.8;">DAYS</div></div><div style="text-align: center;"><div style="font-size: 32px; font-weight: bold;">15</div><div style="font-size: 14px; opacity: 0.8;">HOURS</div></div><div style="text-align: center;"><div style="font-size: 32px; font-weight: bold;">30</div><div style="font-size: 14px; opacity: 0.8;">MINUTES</div></div></div></div>'}},{description:"Interactive feedback widget with rating stars",type:"html",props:{html:'<div style="border: 1px solid #e2e8f0; border-radius: 8px; padding: 24px; background: #f8fafc;"><h4 style="margin: 0 0 16px; color: #1e293b;">How was your experience?</h4><div style="display: flex; gap: 8px; margin: 16px 0;"><span style="font-size: 24px; cursor: pointer; color: #fbbf24;">\u2605</span><span style="font-size: 24px; cursor: pointer; color: #fbbf24;">\u2605</span><span style="font-size: 24px; cursor: pointer; color: #fbbf24;">\u2605</span><span style="font-size: 24px; cursor: pointer; color: #fbbf24;">\u2605</span><span style="font-size: 24px; cursor: pointer; color: #d1d5db;">\u2605</span></div><textarea placeholder="Tell us more about your experience..." style="width: 100%; height: 80px; padding: 12px; border: 1px solid #d1d5db; border-radius: 6px; resize: vertical; font-family: inherit;"></textarea><button style="margin-top: 12px; background: #3b82f6; color: white; padding: 10px 20px; border: none; border-radius: 6px; cursor: pointer;">Submit Feedback</button></div>'}}];export{p as a,n as b};
|
|
4
|
+
//# sourceMappingURL=chunk-FLOMNC6J.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/bricks/manifests/html.manifest.ts"],"sourcesContent":["import { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { defineProps } from \"../props/helpers\";\nimport type { BrickProps } from \"../props/types\";\nimport { BsCodeSquare } from \"react-icons/bs\";\n\nimport { Type } from \"@sinclair/typebox\";\n\nexport const manifest = defineBrickManifest({\n type: \"html\",\n name: \"Html\",\n category: \"widgets\",\n description:\n \"A flexible brick that accepts HTML content. Useful for embeding custom HTML or third-party widgets.\",\n aiInstructions:\n \"Use only this brick type when integrating third party widgets or custom HTML content. Most of the time, you should use other bricks that are more secure and easier to use.\",\n staticClasses: \"self-stretch\",\n defaultWidth: {\n mobile: \"auto\",\n desktop: \"300px\",\n },\n icon: BsCodeSquare,\n props: defineProps({\n html: Type.String({\n title: \"HTML Content\",\n description: \"The HTML content to render. Use with caution, as it can introduce security risks.\",\n default: \"<div>Your HTML content here</div>\",\n \"ui:placeholder\": \"<div>Your HTML content here</div>\",\n \"ui:multiline\": true,\n metadata: {\n category: \"content\",\n },\n }),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: {\n description: string;\n type: string;\n props: BrickProps<Manifest>[\"brick\"][\"props\"];\n}[] = [\n {\n description: \"A tally form\",\n type: \"html\",\n props: {\n html: '<iframe data-tally-src=\"https://tally.so/embed/wQZpd8?alignLeft=1&hideTitle=1&transparentBackground=1&dynamicHeight=1\" loading=\"lazy\" width=\"100%\" height=\"282\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\" title=\"test\"></iframe>',\n },\n },\n {\n description: \"YouTube video embed\",\n type: \"html\",\n props: {\n html: '<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/dQw4w9WgXcQ\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen></iframe>',\n },\n },\n {\n description: \"Google Maps embed\",\n type: \"html\",\n props: {\n html: '<iframe src=\"https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3024.309059887159!2d-74.00849368459473!3d40.71278097932847!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c25a165bedccab%3A0xa2008c34c27bfb67!2sWall%20St%2C%20New%20York%2C%20NY%2C%20USA!5e0!3m2!1sen!2sus!4v1620000000000\" width=\"100%\" height=\"300\" style=\"border:0;\" allowfullscreen=\"\" loading=\"lazy\"></iframe>',\n },\n },\n {\n description: \"Twitter tweet embed\",\n type: \"html\",\n props: {\n html: '<blockquote class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">Just setting up my twttr</p>— Jack Dorsey (@jack) <a href=\"https://twitter.com/jack/status/20?ref_src=twsrc%5Etfw\">March 21, 2006</a></blockquote> <script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>',\n },\n },\n {\n description: \"CodePen embed for code showcase\",\n type: \"html\",\n props: {\n html: '<iframe height=\"300\" style=\"width: 100%;\" scrolling=\"no\" title=\"CSS Animation Example\" src=\"https://codepen.io/team/codepen/embed/PNaGbb?height=300&theme-id=light&default-tab=result\" frameborder=\"no\" loading=\"lazy\" allowtransparency=\"true\" allowfullscreen=\"true\"></iframe>',\n },\n },\n {\n description: \"Calendly scheduling widget\",\n type: \"html\",\n props: {\n html: '<div class=\"calendly-inline-widget\" data-url=\"https://calendly.com/your-name/30min\" style=\"min-width:320px;height:630px;\"></div><script type=\"text/javascript\" src=\"https://assets.calendly.com/assets/external/widget.js\" async></script>',\n },\n },\n {\n description: \"Custom pricing table with CSS styling\",\n type: \"html\",\n props: {\n html: '<div style=\"display: flex; gap: 20px; justify-content: center;\"><div style=\"border: 2px solid #e2e8f0; border-radius: 12px; padding: 24px; text-align: center; background: white;\"><h3 style=\"margin: 0 0 16px; color: #1e293b;\">Basic</h3><div style=\"font-size: 32px; font-weight: bold; color: #0ea5e9;\">$9</div><p style=\"color: #64748b; margin: 8px 0 20px;\">per month</p><ul style=\"list-style: none; padding: 0; margin: 0;\"><li style=\"padding: 8px 0;\">✓ 5 Projects</li><li style=\"padding: 8px 0;\">✓ 10GB Storage</li><li style=\"padding: 8px 0;\">✓ Email Support</li></ul></div></div>',\n },\n },\n {\n description: \"Mailchimp newsletter signup form\",\n type: \"html\",\n props: {\n html: '<div id=\"mc_embed_signup\"><form action=\"https://your-domain.us1.list-manage.com/subscribe/post?u=123456789&id=abcdefghij\" method=\"post\" id=\"mc-embedded-subscribe-form\" name=\"mc-embedded-subscribe-form\" class=\"validate\" target=\"_blank\" novalidate><div id=\"mc_embed_signup_scroll\"><div class=\"mc-field-group\"><label for=\"mce-EMAIL\">Email Address</label><input type=\"email\" value=\"\" name=\"EMAIL\" class=\"required email\" id=\"mce-EMAIL\" style=\"width: 100%; padding: 10px; margin: 8px 0; border: 1px solid #ccc; border-radius: 4px;\"></div><div id=\"mce-responses\" class=\"clear\"><div class=\"response\" id=\"mce-error-response\" style=\"display:none\"></div><div class=\"response\" id=\"mce-success-response\" style=\"display:none\"></div></div><div style=\"position: absolute; left: -5000px;\" aria-hidden=\"true\"><input type=\"text\" name=\"b_123456789_abcdefghij\" tabindex=\"-1\" value=\"\"></div><div class=\"clear\"><input type=\"submit\" value=\"Subscribe\" name=\"subscribe\" id=\"mc-embedded-subscribe\" class=\"button\" style=\"background: #007cba; color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer;\"></div></div></form></div>',\n },\n },\n {\n description: \"Stripe payment button integration\",\n type: \"html\",\n props: {\n html: '<script async src=\"https://js.stripe.com/v3/buy-button.js\"></script><stripe-buy-button buy-button-id=\"buy_btn_1234567890\" publishable-key=\"pk_test_1234567890\"></stripe-buy-button>',\n },\n },\n {\n description: \"Instagram post embed\",\n type: \"html\",\n props: {\n html: '<blockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-permalink=\"https://www.instagram.com/p/ABC123/\" data-instgrm-version=\"14\" style=\"background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"></blockquote><script async src=\"//www.instagram.com/embed.js\"></script>',\n },\n },\n {\n description: \"Custom countdown timer widget\",\n type: \"html\",\n props: {\n html: '<div style=\"text-align: center; padding: 20px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-radius: 12px; color: white;\"><h3 style=\"margin: 0 0 20px; font-size: 24px;\">Event Countdown</h3><div id=\"countdown\" style=\"display: flex; justify-content: center; gap: 20px;\"><div style=\"text-align: center;\"><div style=\"font-size: 32px; font-weight: bold;\">10</div><div style=\"font-size: 14px; opacity: 0.8;\">DAYS</div></div><div style=\"text-align: center;\"><div style=\"font-size: 32px; font-weight: bold;\">15</div><div style=\"font-size: 14px; opacity: 0.8;\">HOURS</div></div><div style=\"text-align: center;\"><div style=\"font-size: 32px; font-weight: bold;\">30</div><div style=\"font-size: 14px; opacity: 0.8;\">MINUTES</div></div></div></div>',\n },\n },\n {\n description: \"Interactive feedback widget with rating stars\",\n type: \"html\",\n props: {\n html: '<div style=\"border: 1px solid #e2e8f0; border-radius: 8px; padding: 24px; background: #f8fafc;\"><h4 style=\"margin: 0 0 16px; color: #1e293b;\">How was your experience?</h4><div style=\"display: flex; gap: 8px; margin: 16px 0;\"><span style=\"font-size: 24px; cursor: pointer; color: #fbbf24;\">★</span><span style=\"font-size: 24px; cursor: pointer; color: #fbbf24;\">★</span><span style=\"font-size: 24px; cursor: pointer; color: #fbbf24;\">★</span><span style=\"font-size: 24px; cursor: pointer; color: #fbbf24;\">★</span><span style=\"font-size: 24px; cursor: pointer; color: #d1d5db;\">★</span></div><textarea placeholder=\"Tell us more about your experience...\" style=\"width: 100%; height: 80px; padding: 12px; border: 1px solid #d1d5db; border-radius: 6px; resize: vertical; font-family: inherit;\"></textarea><button style=\"margin-top: 12px; background: #3b82f6; color: white; padding: 10px 20px; border: none; border-radius: 6px; cursor: pointer;\">Submit Feedback</button></div>',\n },\n },\n];\n"],"mappings":";;gFAGA,OAAS,gBAAAA,MAAoB,iBAE7B,OAAS,QAAAC,MAAY,oBAEd,IAAMC,EAAWC,EAAoB,CAC1C,KAAM,OACN,KAAM,OACN,SAAU,UACV,YACE,sGACF,eACE,8KACF,cAAe,eACf,aAAc,CACZ,OAAQ,OACR,QAAS,OACX,EACA,KAAMH,EACN,MAAOI,EAAY,CACjB,KAAMH,EAAK,OAAO,CAChB,MAAO,eACP,YAAa,oFACb,QAAS,oCACT,iBAAkB,oCAClB,eAAgB,GAChB,SAAU,CACR,SAAU,SACZ,CACF,CAAC,CACH,CAAC,CACH,CAAC,EAIYI,EAIP,CACJ,CACE,YAAa,eACb,KAAM,OACN,MAAO,CACL,KAAM,yOACR,CACF,EACA,CACE,YAAa,sBACb,KAAM,OACN,MAAO,CACL,KAAM,qQACR,CACF,EACA,CACE,YAAa,oBACb,KAAM,OACN,MAAO,CACL,KAAM,iYACR,CACF,EACA,CACE,YAAa,sBACb,KAAM,OACN,MAAO,CACL,KAAM,ySACR,CACF,EACA,CACE,YAAa,kCACb,KAAM,OACN,MAAO,CACL,KAAM,kRACR,CACF,EACA,CACE,YAAa,6BACb,KAAM,OACN,MAAO,CACL,KAAM,4OACR,CACF,EACA,CACE,YAAa,wCACb,KAAM,OACN,MAAO,CACL,KAAM,mlBACR,CACF,EACA,CACE,YAAa,mCACb,KAAM,OACN,MAAO,CACL,KAAM,2mCACR,CACF,EACA,CACE,YAAa,oCACb,KAAM,OACN,MAAO,CACL,KAAM,qLACR,CACF,EACA,CACE,YAAa,uBACb,KAAM,OACN,MAAO,CACL,KAAM,sdACR,CACF,EACA,CACE,YAAa,gCACb,KAAM,OACN,MAAO,CACL,KAAM,wvBACR,CACF,EACA,CACE,YAAa,gDACb,KAAM,OACN,MAAO,CACL,KAAM,s+BACR,CACF,CACF","names":["BsCodeSquare","Type","manifest","defineBrickManifest","defineProps","examples"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
2
|
|
|
3
|
-
import{c as d}from"./chunk-
|
|
3
|
+
import{c as d}from"./chunk-3YVJ2ELD.js";import{a as p}from"./chunk-RJYZ5FAR.js";import{m as l}from"./chunk-AFVJZPLS.js";import{f as a}from"./chunk-5YRC3IT3.js";import{b as i}from"./chunk-4BTB3MU2.js";import{b as r,d as o}from"./chunk-ZTZJHY4E.js";import{c as s}from"./chunk-CZRCW5EN.js";import{d as t}from"./chunk-SWLUQVK7.js";import{c as n}from"./chunk-OHNYCXPX.js";import{RxTextAlignLeft as c}from"react-icons/rx";import{Type as e}from"@sinclair/typebox";var k=p({type:"text",category:"basic",name:"Text",description:"Text with formatting options",aiInstructions:`Text "content" can contain minimal HTML tags like <strong>, <em>, <br> and <a> as well as <h1>, <h2>, <h3>, <h4>, <p> and <span> and lists.
|
|
4
4
|
Only 'align' is supported as an inline style, so don't use other inline styles like 'font-size' or 'color' in the content prop.
|
|
5
5
|
You may simply omit the "colorPreset" property so that the brick will inherit the default color from its parent container.
|
|
6
6
|
`,defaultWidth:{mobile:"100%"},defaultHeight:{desktop:"auto",mobile:"auto"},staticClasses:"prose lg:prose-lg",icon:c,props:d({colorPreset:e.Optional(s({title:"Color"})),content:a({title:"Content"}),verticalAlign:e.Optional(t({default:"items-center",title:"Align"})),padding:e.Optional(n({default:"2rem",description:"Padding inside the text.","ai:instructions":"Use only a single value like '1rem' or '10px'",title:"Padding","ui:responsive":!0,"ui:placeholder":"Not specified","ui:styleId":"styles:padding"})),rounding:e.Optional(o({default:"rounded-md"})),border:e.Optional(r()),shadow:e.Optional(i()),loop:e.Optional(l())})}),A=[{description:"Welcome paragraph with emphasis and padding",type:"text",props:{content:"Welcome to our platform! We're <strong>excited</strong> to have you here. Our mission is to <em>transform</em> the way you work with cutting-edge technology and <a href='/features'>innovative features</a>.",padding:"2rem"}},{description:"Feature list with HTML formatting and smaller padding",type:"text",props:{content:"<h3>Key Features</h3><ul><li><strong>Advanced Analytics</strong> - Real-time data insights</li><li><strong>Cloud Integration</strong> - Seamless connectivity</li><li><strong>24/7 Support</strong> - Always here to help</li></ul>",padding:"1rem"}},{description:"Quote block with text styling but no background",type:"text",props:{content:`<p style='text-align: center'><em>"Innovation distinguishes between a leader and a follower."</em><br><strong>- Steve Jobs</strong></p>`,padding:"3rem"}},{description:"Simple heading with subtle background",type:"text",props:{content:"<h2>About Our Company</h2><p>We've been serving customers since 2010, building trust through quality products and exceptional service.</p>",colorPreset:{color:"primary-100"}}},{description:"Team introduction with formatting, no background color",type:"text",props:{content:"<p style='text-align: center'><strong>Meet Our Team</strong></p><p>Our diverse team of experts brings together decades of experience in technology, design, and business strategy. We're passionate about <em>creating solutions</em> that make a real difference.</p><p><a href='/team'>Learn more about our team</a> and the values that drive us forward.</p>",padding:"2rem"}},{description:"Maintenance notice with neutral background and border",type:"text",props:{content:"<p>Scheduled maintenance will occur on <em>Sunday, March 15th</em> from 2:00 AM to 6:00 AM UTC.</p><p>During this time, some features may be temporarily unavailable. We apologize for any inconvenience.</p>",padding:"1rem",colorPreset:{color:"neutral-700"},border:{width:"border",color:"border-neutral-400"},rounding:"rounded-lg"}},{description:"Minimal text with no padding or background",type:"text",props:{content:"This is some minimal text.",padding:"0rem"}},{description:"Call-to-action text with secondary background and shadow",type:"text",props:{content:"<h3 style='text-align: center'>Ready to Get Started?</h3><p style='text-align: center'>Join thousands of satisfied customers who trust our platform. <strong>Sign up today</strong> and experience the difference!</p><p style='text-align: center'><a href='/signup'>Create Your Free Account</a></p>",colorPreset:{color:"secondary-200"},padding:"2.5rem",rounding:"rounded-xl",shadow:"shadow-md",verticalAlign:"items-center"}},{description:"Technical documentation with accent colors and code-like formatting",type:"text",props:{content:"<h4>API Authentication</h4><p>To authenticate your requests, include your API key in the header:</p><p><strong>Authorization: Bearer YOUR_API_KEY</strong></p><p>All API endpoints require authentication. You can find your API key in the <a href='/dashboard'>dashboard settings</a>.</p>",colorPreset:{color:"accent-100"},padding:"1.5rem",rounding:"rounded-md",border:{width:"border-4",color:"border-accent-500"}}},{description:"Success message with primary background and top alignment",type:"text",props:{content:"<h3>\u2705 Payment Successful!</h3><p>Thank you for your purchase. Your order <strong>#12345</strong> has been confirmed.</p><p>You will receive an email confirmation shortly at your registered email address.</p>",colorPreset:{color:"primary-200"},padding:"2rem",rounding:"rounded-lg",shadow:"shadow-sm",verticalAlign:"items-start"}},{description:"Footer information with neutral dark theme and multiple links",type:"text",props:{content:"<p style='text-align: center'>\xA9 2024 Company Name. All rights reserved.</p><p style='text-align: center'><a href='/privacy'>Privacy Policy</a> | <a href='/terms'>Terms of Service</a> | <a href='/contact'>Contact Us</a></p><p style='text-align: center'><em>Follow us on social media for the latest updates</em></p>",colorPreset:{color:"neutral-800"},padding:"1.5rem",verticalAlign:"items-end"}},{description:"Product description with large padding and rounded corners",type:"text",props:{content:"<h2>Premium Wireless Headphones</h2><p>Experience <strong>crystal-clear audio</strong> with our latest wireless headphones featuring:</p><ul><li>Active noise cancellation</li><li>30-hour battery life</li><li>Premium leather comfort</li><li>Hi-res audio certification</li></ul><p>Perfect for <em>music lovers</em> and <em>professionals</em> alike.</p>",padding:"3rem",rounding:"rounded-2xl",shadow:"shadow-lg",border:{width:"border",color:"border-neutral-300"}}},{description:"Emergency alert with accent background and extra bold formatting",type:"text",props:{content:"<h3 style='text-align: center'>\u26A0\uFE0F URGENT NOTICE</h3><p style='text-align: center'><strong>System maintenance is currently in progress.</strong></p><p style='text-align: center'>Some services may be <em>temporarily unavailable</em>. We expect full restoration by 4:00 PM EST.</p><p style='text-align: center'>For urgent support, please <a href='/emergency-contact'>contact our emergency line</a>.</p>",colorPreset:{color:"accent-400"},padding:"2rem",rounding:"rounded-md",border:{width:"border-2",color:"border-accent-600"},shadow:"shadow-xl",verticalAlign:"items-center"}}];export{k as a,A as b};
|
|
7
|
+
//# sourceMappingURL=chunk-G5CJU6RD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/bricks/manifests/text.manifest.ts"],"sourcesContent":["import { defineBrickManifest } from \"~/shared/brick-manifest\";\nimport { textContentRef } from \"../props/text\";\nimport { defineProps } from \"../props/helpers\";\nimport { borderRef, roundingRef } from \"../props/border\";\nimport { RxTextAlignLeft } from \"react-icons/rx\";\nimport type { BrickProps } from \"../props/types\";\nimport { Type } from \"@sinclair/typebox\";\nimport { alignItemsRef } from \"../props/align\";\nimport { shadowRef } from \"../props/effects\";\nimport { colorPresetRef } from \"../props/color-preset\";\nimport { loopRef } from \"../props/dynamic\";\nimport { cssLengthRef } from \"../props/css-length\";\n\nexport const manifest = defineBrickManifest({\n type: \"text\",\n category: \"basic\",\n name: \"Text\",\n description: \"Text with formatting options\",\n aiInstructions: `Text \"content\" can contain minimal HTML tags like <strong>, <em>, <br> and <a> as well as <h1>, <h2>, <h3>, <h4>, <p> and <span> and lists.\nOnly 'align' is supported as an inline style, so don't use other inline styles like 'font-size' or 'color' in the content prop.\nYou may simply omit the \"colorPreset\" property so that the brick will inherit the default color from its parent container.\n`,\n defaultWidth: {\n mobile: \"100%\",\n },\n defaultHeight: {\n desktop: \"auto\",\n mobile: \"auto\",\n },\n staticClasses: \"prose lg:prose-lg\",\n icon: RxTextAlignLeft,\n props: defineProps({\n colorPreset: Type.Optional(\n colorPresetRef({\n title: \"Color\",\n }),\n ),\n content: textContentRef({\n title: \"Content\",\n // metadata: {\n // category: \"content\",\n // },\n }),\n verticalAlign: Type.Optional(\n alignItemsRef({\n default: \"items-center\",\n title: \"Align\",\n }),\n ),\n padding: Type.Optional(\n cssLengthRef({\n default: \"2rem\",\n description: \"Padding inside the text.\",\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 loop: Type.Optional(loopRef()),\n }),\n});\n\nexport type Manifest = typeof manifest;\n\nexport const examples: {\n description: string;\n type: string;\n props: BrickProps<Manifest>[\"brick\"][\"props\"];\n}[] = [\n {\n description: \"Welcome paragraph with emphasis and padding\",\n type: \"text\",\n props: {\n content:\n \"Welcome to our platform! We're <strong>excited</strong> to have you here. Our mission is to <em>transform</em> the way you work with cutting-edge technology and <a href='/features'>innovative features</a>.\",\n padding: \"2rem\",\n },\n },\n {\n description: \"Feature list with HTML formatting and smaller padding\",\n type: \"text\",\n props: {\n content:\n \"<h3>Key Features</h3><ul><li><strong>Advanced Analytics</strong> - Real-time data insights</li><li><strong>Cloud Integration</strong> - Seamless connectivity</li><li><strong>24/7 Support</strong> - Always here to help</li></ul>\",\n padding: \"1rem\",\n },\n },\n {\n description: \"Quote block with text styling but no background\",\n type: \"text\",\n props: {\n content:\n \"<p style='text-align: center'><em>\\\"Innovation distinguishes between a leader and a follower.\\\"</em><br><strong>- Steve Jobs</strong></p>\",\n padding: \"3rem\",\n },\n },\n {\n description: \"Simple heading with subtle background\",\n type: \"text\",\n props: {\n content:\n \"<h2>About Our Company</h2><p>We've been serving customers since 2010, building trust through quality products and exceptional service.</p>\",\n colorPreset: {\n color: \"primary-100\",\n },\n },\n },\n {\n description: \"Team introduction with formatting, no background color\",\n type: \"text\",\n props: {\n content:\n \"<p style='text-align: center'><strong>Meet Our Team</strong></p><p>Our diverse team of experts brings together decades of experience in technology, design, and business strategy. We're passionate about <em>creating solutions</em> that make a real difference.</p><p><a href='/team'>Learn more about our team</a> and the values that drive us forward.</p>\",\n padding: \"2rem\",\n },\n },\n {\n description: \"Maintenance notice with neutral background and border\",\n type: \"text\",\n props: {\n content:\n \"<p>Scheduled maintenance will occur on <em>Sunday, March 15th</em> from 2:00 AM to 6:00 AM UTC.</p><p>During this time, some features may be temporarily unavailable. We apologize for any inconvenience.</p>\",\n padding: \"1rem\",\n colorPreset: {\n color: \"neutral-700\",\n },\n border: {\n width: \"border\",\n color: \"border-neutral-400\",\n },\n rounding: \"rounded-lg\",\n },\n },\n {\n description: \"Minimal text with no padding or background\",\n type: \"text\",\n props: {\n content: \"This is some minimal text.\",\n padding: \"0rem\",\n },\n },\n {\n description: \"Call-to-action text with secondary background and shadow\",\n type: \"text\",\n props: {\n content:\n \"<h3 style='text-align: center'>Ready to Get Started?</h3><p style='text-align: center'>Join thousands of satisfied customers who trust our platform. <strong>Sign up today</strong> and experience the difference!</p><p style='text-align: center'><a href='/signup'>Create Your Free Account</a></p>\",\n colorPreset: {\n color: \"secondary-200\",\n },\n padding: \"2.5rem\",\n rounding: \"rounded-xl\",\n shadow: \"shadow-md\",\n verticalAlign: \"items-center\",\n },\n },\n {\n description: \"Technical documentation with accent colors and code-like formatting\",\n type: \"text\",\n props: {\n content:\n \"<h4>API Authentication</h4><p>To authenticate your requests, include your API key in the header:</p><p><strong>Authorization: Bearer YOUR_API_KEY</strong></p><p>All API endpoints require authentication. You can find your API key in the <a href='/dashboard'>dashboard settings</a>.</p>\",\n colorPreset: {\n color: \"accent-100\",\n },\n padding: \"1.5rem\",\n rounding: \"rounded-md\",\n border: {\n width: \"border-4\",\n color: \"border-accent-500\",\n },\n },\n },\n {\n description: \"Success message with primary background and top alignment\",\n type: \"text\",\n props: {\n content:\n \"<h3>✅ Payment Successful!</h3><p>Thank you for your purchase. Your order <strong>#12345</strong> has been confirmed.</p><p>You will receive an email confirmation shortly at your registered email address.</p>\",\n colorPreset: {\n color: \"primary-200\",\n },\n padding: \"2rem\",\n rounding: \"rounded-lg\",\n shadow: \"shadow-sm\",\n verticalAlign: \"items-start\",\n },\n },\n {\n description: \"Footer information with neutral dark theme and multiple links\",\n type: \"text\",\n props: {\n content:\n \"<p style='text-align: center'>© 2024 Company Name. All rights reserved.</p><p style='text-align: center'><a href='/privacy'>Privacy Policy</a> | <a href='/terms'>Terms of Service</a> | <a href='/contact'>Contact Us</a></p><p style='text-align: center'><em>Follow us on social media for the latest updates</em></p>\",\n colorPreset: {\n color: \"neutral-800\",\n },\n padding: \"1.5rem\",\n verticalAlign: \"items-end\",\n },\n },\n {\n description: \"Product description with large padding and rounded corners\",\n type: \"text\",\n props: {\n content:\n \"<h2>Premium Wireless Headphones</h2><p>Experience <strong>crystal-clear audio</strong> with our latest wireless headphones featuring:</p><ul><li>Active noise cancellation</li><li>30-hour battery life</li><li>Premium leather comfort</li><li>Hi-res audio certification</li></ul><p>Perfect for <em>music lovers</em> and <em>professionals</em> alike.</p>\",\n padding: \"3rem\",\n rounding: \"rounded-2xl\",\n shadow: \"shadow-lg\",\n border: {\n width: \"border\",\n color: \"border-neutral-300\",\n },\n },\n },\n {\n description: \"Emergency alert with accent background and extra bold formatting\",\n type: \"text\",\n props: {\n content:\n \"<h3 style='text-align: center'>⚠️ URGENT NOTICE</h3><p style='text-align: center'><strong>System maintenance is currently in progress.</strong></p><p style='text-align: center'>Some services may be <em>temporarily unavailable</em>. We expect full restoration by 4:00 PM EST.</p><p style='text-align: center'>For urgent support, please <a href='/emergency-contact'>contact our emergency line</a>.</p>\",\n colorPreset: {\n color: \"accent-400\",\n },\n padding: \"2rem\",\n rounding: \"rounded-md\",\n border: {\n width: \"border-2\",\n color: \"border-accent-600\",\n },\n shadow: \"shadow-xl\",\n verticalAlign: \"items-center\",\n },\n },\n];\n"],"mappings":";;+WAIA,OAAS,mBAAAA,MAAuB,iBAEhC,OAAS,QAAAC,MAAY,oBAOd,IAAMC,EAAWC,EAAoB,CAC1C,KAAM,OACN,SAAU,QACV,KAAM,OACN,YAAa,+BACb,eAAgB;AAAA;AAAA;AAAA,EAIhB,aAAc,CACZ,OAAQ,MACV,EACA,cAAe,CACb,QAAS,OACT,OAAQ,MACV,EACA,cAAe,oBACf,KAAMC,EACN,MAAOC,EAAY,CACjB,YAAaC,EAAK,SAChBC,EAAe,CACb,MAAO,OACT,CAAC,CACH,EACA,QAASC,EAAe,CACtB,MAAO,SAIT,CAAC,EACD,cAAeF,EAAK,SAClBG,EAAc,CACZ,QAAS,eACT,MAAO,OACT,CAAC,CACH,EACA,QAASH,EAAK,SACZI,EAAa,CACX,QAAS,OACT,YAAa,2BACb,kBAAmB,gDACnB,MAAO,UACP,gBAAiB,GACjB,iBAAkB,gBAClB,aAAc,gBAChB,CAAC,CACH,EACA,SAAUJ,EAAK,SACbK,EAAY,CACV,QAAS,YACX,CAAC,CACH,EACA,OAAQL,EAAK,SAASM,EAAU,CAAC,EACjC,OAAQN,EAAK,SAASO,EAAU,CAAC,EACjC,KAAMP,EAAK,SAASQ,EAAQ,CAAC,CAC/B,CAAC,CACH,CAAC,EAIYC,EAIP,CACJ,CACE,YAAa,8CACb,KAAM,OACN,MAAO,CACL,QACE,gNACF,QAAS,MACX,CACF,EACA,CACE,YAAa,wDACb,KAAM,OACN,MAAO,CACL,QACE,sOACF,QAAS,MACX,CACF,EACA,CACE,YAAa,kDACb,KAAM,OACN,MAAO,CACL,QACE,0IACF,QAAS,MACX,CACF,EACA,CACE,YAAa,wCACb,KAAM,OACN,MAAO,CACL,QACE,6IACF,YAAa,CACX,MAAO,aACT,CACF,CACF,EACA,CACE,YAAa,yDACb,KAAM,OACN,MAAO,CACL,QACE,mWACF,QAAS,MACX,CACF,EACA,CACE,YAAa,wDACb,KAAM,OACN,MAAO,CACL,QACE,gNACF,QAAS,OACT,YAAa,CACX,MAAO,aACT,EACA,OAAQ,CACN,MAAO,SACP,MAAO,oBACT,EACA,SAAU,YACZ,CACF,EACA,CACE,YAAa,6CACb,KAAM,OACN,MAAO,CACL,QAAS,6BACT,QAAS,MACX,CACF,EACA,CACE,YAAa,2DACb,KAAM,OACN,MAAO,CACL,QACE,ySACF,YAAa,CACX,MAAO,eACT,EACA,QAAS,SACT,SAAU,aACV,OAAQ,YACR,cAAe,cACjB,CACF,EACA,CACE,YAAa,sEACb,KAAM,OACN,MAAO,CACL,QACE,+RACF,YAAa,CACX,MAAO,YACT,EACA,QAAS,SACT,SAAU,aACV,OAAQ,CACN,MAAO,WACP,MAAO,mBACT,CACF,CACF,EACA,CACE,YAAa,4DACb,KAAM,OACN,MAAO,CACL,QACE,uNACF,YAAa,CACX,MAAO,aACT,EACA,QAAS,OACT,SAAU,aACV,OAAQ,YACR,cAAe,aACjB,CACF,EACA,CACE,YAAa,gEACb,KAAM,OACN,MAAO,CACL,QACE,+TACF,YAAa,CACX,MAAO,aACT,EACA,QAAS,SACT,cAAe,WACjB,CACF,EACA,CACE,YAAa,6DACb,KAAM,OACN,MAAO,CACL,QACE,iWACF,QAAS,OACT,SAAU,cACV,OAAQ,YACR,OAAQ,CACN,MAAO,SACP,MAAO,oBACT,CACF,CACF,EACA,CACE,YAAa,mEACb,KAAM,OACN,MAAO,CACL,QACE,4ZACF,YAAa,CACX,MAAO,YACT,EACA,QAAS,OACT,SAAU,aACV,OAAQ,CACN,MAAO,WACP,MAAO,mBACT,EACA,OAAQ,YACR,cAAe,cACjB,CACF,CACF","names":["RxTextAlignLeft","Type","manifest","defineBrickManifest","RxTextAlignLeft","defineProps","Type","colorPresetRef","textContentRef","alignItemsRef","cssLengthRef","roundingRef","borderRef","shadowRef","loopRef","examples"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
2
|
|
|
3
|
-
import{a as i}from"./chunk-
|
|
3
|
+
import{a as i}from"./chunk-KFM6KXSE.js";import{a as e}from"./chunk-JMN3HTZU.js";function n(t={}){return e(["flex-row","flex-col"],{title:"Direction",description:"The direction of the layout",enumNames:["Horizontal","Vertical"],"ui:styleId":"styles:direction",examples:["flex-row","flex-col"],...t})}function p(t={}){return i("styles:direction",t)}export{n as a,p as b};
|
|
4
|
+
//# sourceMappingURL=chunk-GACHLACT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/bricks/props/direction.ts"],"sourcesContent":["import { type SchemaOptions, type Static, type StringOptions, Type } from \"@sinclair/typebox\";\nimport { StringEnum } from \"~/shared/utils/string-enum\";\nimport { typedRef } from \"~/shared/utils/typed-ref\";\n\nexport function direction(options: StringOptions = {}) {\n return StringEnum([\"flex-row\", \"flex-col\"], {\n title: \"Direction\",\n description: \"The direction of the layout\",\n enumNames: [\"Horizontal\", \"Vertical\"],\n // $id: \"styles:direction\",\n \"ui:styleId\": \"styles:direction\",\n examples: [\"flex-row\", \"flex-col\"],\n ...options,\n });\n}\n\nexport type DirectionSettings = Static<ReturnType<typeof direction>>;\n\nexport function directionRef(options: SchemaOptions = {}) {\n return typedRef(\"styles:direction\", options);\n}\n"],"mappings":";;gFAIO,SAASA,EAAUC,EAAyB,CAAC,EAAG,CACrD,OAAOC,EAAW,CAAC,WAAY,UAAU,EAAG,CAC1C,MAAO,YACP,YAAa,8BACb,UAAW,CAAC,aAAc,UAAU,EAEpC,aAAc,mBACd,SAAU,CAAC,WAAY,UAAU,EACjC,GAAGD,CACL,CAAC,CACH,CAIO,SAASE,EAAaF,EAAyB,CAAC,EAAG,CACxD,OAAOG,EAAS,mBAAoBH,CAAO,CAC7C","names":["direction","options","StringEnum","directionRef","typedRef"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
2
|
|
|
3
3
|
import{Type as e}from"@sinclair/typebox";var t=e.Array(e.Object({id:e.String(),name:e.String(),type:e.String()})),a=e.Object({id:e.String(),name:e.String(),description:e.String(),primaryFieldId:e.String(),fields:t}),r=e.Object({externalUrl:e.Optional(e.String()),baseId:e.String({pattern:"^app[A-Za-z0-9]+$",description:'Airtable Base ID starting with "app"'}),baseName:e.Optional(e.String({description:"Airtable Base Name"})),tableId:e.String({pattern:"^tbl[A-Za-z0-9]+$",description:'Airtable Table ID starting with "tbl"'}),tableName:e.Optional(e.String({description:"Table name as shown in Airtable interface"})),fields:e.Optional(t)}),l=e.Union([e.Literal("number"),e.Literal("checkbox"),e.Literal("date"),e.Literal("dateTime"),e.Literal("email"),e.Literal("url"),e.Literal("singleLineText"),e.Literal("multilineText"),e.Literal("singleSelect"),e.Literal("multipleSelects")]);export{t as a,r as b,l as c};
|
|
4
|
+
//# sourceMappingURL=chunk-GLS7HPIZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,OAAS,QAAAA,MAAyB,oBAE3B,IAAMC,EAAiBD,EAAK,MACjCA,EAAK,OAAO,CACV,GAAIA,EAAK,OAAO,EAChB,KAAMA,EAAK,OAAO,EAClB,KAAMA,EAAK,OAAO,CACpB,CAAC,CACH,EAGME,EAAoCF,EAAK,OAAO,CACpD,GAAIA,EAAK,OAAO,EAChB,KAAMA,EAAK,OAAO,EAClB,YAAaA,EAAK,OAAO,EACzB,eAAgBA,EAAK,OAAO,EAC5B,OAAQC,CACV,CAAC,EAIYE,EAAkBH,EAAK,OAAO,CACzC,YAAaA,EAAK,SAASA,EAAK,OAAO,CAAC,EACxC,OAAQA,EAAK,OAAO,CAClB,QAAS,oBACT,YAAa,sCACf,CAAC,EACD,SAAUA,EAAK,SACbA,EAAK,OAAO,CACV,YAAa,oBACf,CAAC,CACH,EACA,QAASA,EAAK,OAAO,CACnB,QAAS,oBACT,YAAa,uCACf,CAAC,EACD,UAAWA,EAAK,SACdA,EAAK,OAAO,CACV,YAAa,2CACf,CAAC,CACH,EACA,OAAQA,EAAK,SAASC,CAAc,CACtC,CAAC,EAQYG,EAAqBJ,EAAK,MAAM,CAC3CA,EAAK,QAAQ,QAAQ,EACrBA,EAAK,QAAQ,UAAU,EACvBA,EAAK,QAAQ,MAAM,EACnBA,EAAK,QAAQ,UAAU,EACvBA,EAAK,QAAQ,OAAO,EACpBA,EAAK,QAAQ,KAAK,EAClBA,EAAK,QAAQ,gBAAgB,EAC7BA,EAAK,QAAQ,eAAe,EAC5BA,EAAK,QAAQ,cAAc,EAC3BA,EAAK,QAAQ,iBAAiB,CAChC,CAAC","names":["Type","airtableFields","createAirtableTableResponseSchema","airtableOptions","AirtableFieldTypes"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
2
|
|
|
3
|
-
import{a as x}from"./chunk-
|
|
3
|
+
import{a as x}from"./chunk-PIG623TZ.js";import{b as c}from"./chunk-PSCN3VVA.js";import{a as l}from"./chunk-OIY3EPHO.js";import{b as u}from"./chunk-QGYZ7CG5.js";import{a}from"./chunk-AFVJZPLS.js";import{b as y}from"./chunk-GACHLACT.js";import{b}from"./chunk-DHI3IBOD.js";import{c as f}from"./chunk-CZRCW5EN.js";import{b as h,d as g}from"./chunk-SWLUQVK7.js";import{c as s}from"./chunk-OHNYCXPX.js";import{a as m}from"./chunk-JMN3HTZU.js";import{Type as e}from"@sinclair/typebox";import{customAlphabet as P}from"nanoid";var S=P("azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN",7),R=e.Object({left:e.Optional(e.String({title:"top",description:"The left position in css unit."})),top:e.Optional(e.String({title:"top",description:"The top position in css unit."})),right:e.Optional(e.String({title:"right",description:"The right position in css unit."})),bottom:e.Optional(e.String({title:"bottom",description:"The bottom position in css unit."})),inset:e.Optional(e.String({title:"inset",description:"The inset position in css unit."})),translateX:e.Optional(e.String({title:"translateX",description:"The translateX position in css unit."})),translateY:e.Optional(e.String({title:"translateY",description:"The translateY position in css unit."})),rotate:e.Optional(e.String({title:"rotate",description:"The rotate position in css unit."}))}),v=m(Object.keys(c),{title:"Brick type"}),O=e.Object({id:e.String({title:"ID",description:"A unique identifier for the brick."}),type:v,props:e.Any({title:"Props",description:"The static props of the brick. The available props depends on the brick type."}),mobileProps:e.Optional(e.Any({title:"Props",description:"The overriden props for mobile, merged with desktop props."}))},{additionalProperties:!0});function G(t,o){return a(e.Object({id:e.String({title:"ID",description:"A unique identifier for the brick."}),type:e.Literal(t),props:o,mobileProps:e.Optional(e.Partial(o))},{additionalProperties:!1}))}var w=e.Object({colorPreset:e.Optional(f({title:"Color"})),backgroundImage:e.Optional(b({title:"Background",description:"The background image of the section. Prefer to set background images on sections rather than on individual bricks."})),direction:y({default:"flex-row",title:"Direction",description:"The direction of the section. Only apply to desktop. On mobile, it is always vertical.","ui:responsive":"desktop"}),minHeight:e.Optional(s({title:"Min height",default:"fit-content",description:"The min height of the section","ui:field":"hidden"})),variant:e.Optional(m(["navbar","footer","sidebar"],{title:"Custom section variant",description:"Used for custom styling and layout.",enumNames:["Navbar","Footer","Sidebar"],"ui:field":"hidden","ai:hidden":!0})),maxWidth:e.Optional(x("Max width","max-w-full",{options:[{value:"max-w-screen-lg",title:"M",description:"Common for text-heavy content/blog posts"},{value:"max-w-screen-xl",title:"L",description:"Usefull or some landing pages"},{value:"max-w-screen-2xl",title:"XL",description:"Common width"},{value:"max-w-full",title:"Full",description:"Takes the entire space"}],description:"The maximum width of the section. Desktop only","ai:instructions":"Choose the most appropriate max width for the section. You will likely use the same max width for all sections in a page.",displayAs:"button-group","ui:responsive":"desktop"})),justifyContent:e.Optional(h({default:"justify-center"})),alignItems:e.Optional(g({default:"items-center"})),padding:e.Optional(s({default:"2rem",description:"Padding inside the section.",title:"Padding","ui:responsive":!0,"ui:placeholder":"Not specified","ui:styleId":"styles:padding"})),gap:e.Optional(s({title:"Gap",description:"The gap between the bricks in the section.",default:"20px","ui:styleId":"styles:gap"})),wrap:e.Optional(e.Boolean({title:"Wrap",description:"Wrap bricks if they overflow the section.",default:!0,"ui:styleId":"styles:wrap"})),lastTouched:e.Optional(e.Number({description:"Do not use this field. It is used internally by the editor.","ui:field":"hidden","ai:hidden":!0}))},{additionalProperties:!1}),p=e.Object({id:e.String({description:"The unique ID of the section. Use a human readable url-safe slug",examples:["content-section","contact-section"]}),label:e.Optional(e.String({description:"The label of the section. Used for editor purposes only.",examples:["Content","Contact"]})),order:e.Number({description:"Determines section order in the page (lower numbers appear first). 0-based"}),props:w,mobileProps:e.Optional(e.Partial(w,{additionalProperties:!1})),bricks:e.Array(O)},{description:"Sections are direct children of the page that are stacked vertically."}),T=e.Omit(p,["bricks"]);function Y(){return a(T)}function H(){return a(p)}var j=u(p.properties.props,"desktop"),C=u(p.properties.mobileProps,"mobile");function J(t,o,i){let r=n=>({...n,props:l({},j,n.props),mobileProps:l({},C,n.mobileProps||{}),bricks:n.bricks.map(k).filter(Boolean)}),d=t.map(r);return o.navbar&&!i.noNavbar&&d.unshift(r({order:-1,id:"navbar-section",label:"Navbar section",props:{variant:"navbar",direction:"flex-row"},mobileProps:{},bricks:[{id:"navbar",type:"navbar",props:o.navbar}]})),o.footer&&!i.noFooter&&d.push(r({order:1e3,id:"footer-section",label:"Footer section",props:{variant:"footer",direction:"flex-row"},mobileProps:{},bricks:[{id:"footer",type:"footer",props:o.footer}]})),d}function k(t){let o=c[t.type];return{...t,props:l({},o.props,{...t.props,...t.props.$children?{$children:t.props.$children.map(k).filter(Boolean)}:{}})}}function X(t,o=!1){let i={...c[t].props,ghost:o};return{id:`b-${S()}`,type:t,props:i}}var V=[{label:"Hero section with centered 'hero' and 'button' bricks",description:`A simple hero section with a title and a light primary background.
|
|
4
4
|
The "hero" brick does not have a colorPreset so it is transparent and inherits the background/text-color settings from the section.
|
|
5
5
|
Bricks are centered both vertically and horizontally using justifyContent and alignItems.
|
|
6
6
|
Bricks are stacked vertically using the "direction" set to "flex-col".
|
|
@@ -32,3 +32,4 @@ Shows how to use social-links bricks and forms together.
|
|
|
32
32
|
Creates a cohesive call-to-action for community building.`,example:{id:"community-section",order:12,props:{direction:"flex-col",padding:"4rem",gap:"3rem",colorPreset:{color:"indigo-100"},alignItems:"items-center",maxWidth:"max-w-screen-md"},bricks:[{id:"community-title",type:"text",props:{content:"<h2 style='text-align:center'>Stay Connected</h2><p style='text-align:center'>Join our community and never miss an update.</p>"}},{id:"social-links",type:"social-links",props:{links:[{platform:"twitter",url:"https://twitter.com/company"},{platform:"linkedin",url:"https://linkedin.com/company/company"},{platform:"github",url:"https://github.com/company"},{platform:"youtube",url:"https://youtube.com/company"}],size:"large",style:"filled"}},{id:"newsletter-form",type:"form",props:{title:"Subscribe to Our Newsletter",subtitle:"Get weekly updates and exclusive content delivered to your inbox.",submitLabel:"Subscribe",fields:[{name:"email",label:"Email Address",type:"email",required:!0,placeholder:"your@email.com"}],colorPreset:{color:"white"},rounding:"rounded-lg",padding:"2rem",shadow:"shadow-md"}}]}},{label:"Pricing table with multiple options",description:`A pricing section using card bricks to create a comparison table.
|
|
33
33
|
Demonstrates how to structure pricing tiers with different features.
|
|
34
34
|
Uses consistent styling with highlighted premium option.`,example:{id:"pricing-section",order:13,props:{direction:"flex-col",padding:"5rem",gap:"3rem",alignItems:"items-center"},bricks:[{id:"pricing-header",type:"text",props:{content:"<h2 style='text-align:center'>Choose Your Plan</h2><p style='text-align:center'>Select the perfect plan for your needs.</p>"}},{id:"pricing-cards",type:"box",props:{direction:"flex-row",gap:"2rem",justifyContent:"justify-center",$children:[{id:"basic-plan",type:"card",props:{title:"Basic",subtitle:"$9/month",content:"\u2022 5 Projects<br>\u2022 10GB Storage<br>\u2022 Email Support<br>\u2022 Basic Templates",colorPreset:{color:"white"},border:{width:"border-2",color:"border-gray-200"},rounding:"rounded-lg",padding:"2rem",shadow:"shadow-md"}},{id:"pro-plan",type:"card",props:{title:"Pro",subtitle:"$29/month",content:"\u2022 Unlimited Projects<br>\u2022 100GB Storage<br>\u2022 Priority Support<br>\u2022 Premium Templates<br>\u2022 Advanced Analytics",colorPreset:{color:"blue-500"},rounding:"rounded-lg",padding:"2rem",shadow:"shadow-lg",border:{width:"border-2",color:"border-blue-400"}}},{id:"enterprise-plan",type:"card",props:{title:"Enterprise",subtitle:"Custom",content:"\u2022 Everything in Pro<br>\u2022 Unlimited Storage<br>\u2022 24/7 Phone Support<br>\u2022 Custom Integrations<br>\u2022 Dedicated Account Manager",colorPreset:{color:"white"},border:{width:"border-2",color:"border-gray-200"},rounding:"rounded-lg",padding:"2rem",shadow:"shadow-md"}}],mobileProps:{direction:"flex-col"}}}]}}];export{S as a,v as b,O as c,G as d,w as e,p as f,T as g,Y as h,H as i,J as j,k,X as l,V as m};
|
|
35
|
+
//# sourceMappingURL=chunk-GOMXZC4B.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/bricks.ts"],"sourcesContent":["import { Type, type Static, type TObject } from \"@sinclair/typebox\";\nimport { customAlphabet } from \"nanoid\";\nimport { brickTypes, defaultProps } from \"./bricks/manifests/all-manifests\";\nimport { cssLengthRef } from \"./bricks/props/css-length\";\nimport { enumProp } from \"./bricks/props/enum\";\nimport { colorPresetRef } from \"./bricks/props/color-preset\";\nimport { mergeIgnoringArrays } from \"./utils/merge\";\nimport { getSchemaDefaults } from \"./utils/schema\";\nimport { StringEnum } from \"./utils/string-enum\";\nimport { alignItemsRef, justifyContentRef } from \"./bricks/props/align\";\nimport type { CommonBrickProps } from \"./bricks/props/common\";\nimport { directionRef } from \"./bricks/props/direction\";\nimport type { PageAttributes, SiteAttributes } from \"./attributes\";\nimport { toLLMSchema } from \"./utils/llm\";\nimport { backgroundRef } from \"./bricks/props/background\";\n\n/**\n * Generates a unique identifier for bricks.\n */\nexport const generateId = customAlphabet(\"azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN\", 7);\n\nconst brickAbsolutePositionSchema = Type.Object({\n left: Type.Optional(\n Type.String({\n title: \"top\",\n description: \"The left position in css unit.\",\n }),\n ),\n top: Type.Optional(\n Type.String({\n title: \"top\",\n description: \"The top position in css unit.\",\n }),\n ),\n right: Type.Optional(\n Type.String({\n title: \"right\",\n description: \"The right position in css unit.\",\n }),\n ),\n bottom: Type.Optional(\n Type.String({\n title: \"bottom\",\n description: \"The bottom position in css unit.\",\n }),\n ),\n inset: Type.Optional(\n Type.String({\n title: \"inset\",\n description: \"The inset position in css unit.\",\n }),\n ),\n translateX: Type.Optional(\n Type.String({\n title: \"translateX\",\n description: \"The translateX position in css unit.\",\n }),\n ),\n translateY: Type.Optional(\n Type.String({\n title: \"translateY\",\n description: \"The translateY position in css unit.\",\n }),\n ),\n rotate: Type.Optional(\n Type.String({\n title: \"rotate\",\n description: \"The rotate position in css unit.\",\n }),\n ),\n});\n\nexport type BrickAbsolutePosition = Static<typeof brickAbsolutePositionSchema>;\n\nexport const brickTypeSchema = StringEnum(Object.keys(defaultProps), {\n title: \"Brick type\",\n});\n\nexport const brickSchema = Type.Object(\n {\n id: Type.String({\n title: \"ID\",\n description: \"A unique identifier for the brick.\",\n }),\n type: brickTypeSchema,\n props: Type.Any({\n title: \"Props\",\n description: \"The static props of the brick. The available props depends on the brick type.\",\n }),\n mobileProps: Type.Optional(\n Type.Any({\n title: \"Props\",\n description: \"The overriden props for mobile, merged with desktop props.\",\n }),\n ),\n },\n { additionalProperties: true },\n);\n\nexport function makeFullBrickSchemaForLLM(type: string, props: TObject) {\n return toLLMSchema(\n Type.Object(\n {\n id: Type.String({\n title: \"ID\",\n description: \"A unique identifier for the brick.\",\n }),\n type: Type.Literal(type),\n props,\n mobileProps: Type.Optional(Type.Partial(props)),\n },\n { additionalProperties: false },\n ),\n );\n}\n\nexport type Brick = Omit<Static<typeof brickSchema>, \"props\" | \"mobileProps\"> & {\n props: CommonBrickProps & Record<string, unknown>;\n mobileProps?: CommonBrickProps & Record<string, unknown>;\n};\n\nexport const sectionProps = Type.Object(\n {\n colorPreset: Type.Optional(\n colorPresetRef({\n title: \"Color\",\n }),\n ),\n backgroundImage: Type.Optional(\n backgroundRef({\n title: \"Background\",\n description:\n \"The background image of the section. Prefer to set background images on sections rather than on individual bricks.\",\n }),\n ),\n direction: directionRef({\n default: \"flex-row\",\n title: \"Direction\",\n description: \"The direction of the section. Only apply to desktop. On mobile, it is always vertical.\",\n \"ui:responsive\": \"desktop\",\n }),\n minHeight: Type.Optional(\n cssLengthRef({\n title: \"Min height\",\n default: \"fit-content\",\n description: \"The min height of the section\",\n \"ui:field\": \"hidden\",\n }),\n ),\n variant: Type.Optional(\n StringEnum([\"navbar\", \"footer\", \"sidebar\"], {\n title: \"Custom section variant\",\n description: \"Used for custom styling and layout.\",\n enumNames: [\"Navbar\", \"Footer\", \"Sidebar\"],\n \"ui:field\": \"hidden\",\n \"ai:hidden\": true,\n }),\n ),\n maxWidth: Type.Optional(\n enumProp(\"Max width\", \"max-w-full\", {\n options: [\n {\n value: \"max-w-screen-lg\",\n title: \"M\",\n description: \"Common for text-heavy content/blog posts\",\n },\n {\n value: \"max-w-screen-xl\",\n title: \"L\",\n description: \"Usefull or some landing pages\",\n },\n {\n value: \"max-w-screen-2xl\",\n title: \"XL\",\n description: \"Common width\",\n },\n {\n value: \"max-w-full\",\n title: \"Full\",\n description: \"Takes the entire space\",\n },\n ],\n description: \"The maximum width of the section. Desktop only\",\n \"ai:instructions\":\n \"Choose the most appropriate max width for the section. You will likely use the same max width for all sections in a page.\",\n displayAs: \"button-group\",\n \"ui:responsive\": \"desktop\",\n }),\n ),\n justifyContent: Type.Optional(\n justifyContentRef({\n default: \"justify-center\",\n }),\n ),\n alignItems: Type.Optional(\n alignItemsRef({\n default: \"items-center\",\n }),\n ),\n padding: Type.Optional(\n cssLengthRef({\n default: \"2rem\",\n description: \"Padding inside the section.\",\n title: \"Padding\",\n \"ui:responsive\": true,\n \"ui:placeholder\": \"Not specified\",\n \"ui:styleId\": \"styles:padding\",\n }),\n ),\n gap: Type.Optional(\n cssLengthRef({\n title: \"Gap\",\n description: \"The gap between the bricks in the section.\",\n default: \"20px\",\n \"ui:styleId\": \"styles:gap\",\n }),\n ),\n wrap: Type.Optional(\n Type.Boolean({\n title: \"Wrap\",\n description: \"Wrap bricks if they overflow the section.\",\n default: true,\n \"ui:styleId\": \"styles:wrap\",\n }),\n ),\n lastTouched: Type.Optional(\n Type.Number({\n description: \"Do not use this field. It is used internally by the editor.\",\n \"ui:field\": \"hidden\",\n \"ai:hidden\": true,\n }),\n ),\n },\n {\n additionalProperties: false,\n },\n);\n\nexport const sectionSchema = Type.Object(\n {\n id: Type.String({\n description: \"The unique ID of the section. Use a human readable url-safe slug\",\n examples: [\"content-section\", \"contact-section\"],\n }),\n label: Type.Optional(\n Type.String({\n description: \"The label of the section. Used for editor purposes only.\",\n examples: [\"Content\", \"Contact\"],\n }),\n ),\n order: Type.Number({\n description: \"Determines section order in the page (lower numbers appear first). 0-based\",\n }),\n props: sectionProps,\n mobileProps: Type.Optional(Type.Partial(sectionProps, { additionalProperties: false })),\n bricks: Type.Array(brickSchema),\n },\n {\n description: \"Sections are direct children of the page that are stacked vertically.\",\n },\n);\n\nexport const sectionSchemaNoBricks = Type.Omit(sectionSchema, [\"bricks\"]);\n\nexport function getSectionSchemaNoBrickForLLM() {\n return toLLMSchema(sectionSchemaNoBricks);\n}\n\nexport function getSectionSchemaForLLM() {\n return toLLMSchema(sectionSchema);\n}\n\nconst sectionDefaultprops = getSchemaDefaults(sectionSchema.properties.props, \"desktop\") as Section[\"props\"];\nconst sectionMobileDefaultprops = getSchemaDefaults(\n sectionSchema.properties.mobileProps,\n \"mobile\",\n) as Section[\"mobileProps\"];\n\nexport type Section = Static<typeof sectionSchema>;\n\nexport function processSections(\n sections: Section[],\n siteAttributes: SiteAttributes,\n pageAttributes: PageAttributes,\n): Section[] {\n const processSection = (section: Section) => {\n return {\n ...section,\n props: mergeIgnoringArrays({} as Section[\"props\"], sectionDefaultprops, section.props),\n mobileProps: mergeIgnoringArrays({}, sectionMobileDefaultprops, section.mobileProps || {}),\n bricks: section.bricks.map(processBrick).filter(Boolean) as Brick[],\n } as const;\n };\n\n const finalSections = sections.map(processSection);\n\n if (siteAttributes.navbar && !pageAttributes.noNavbar) {\n finalSections.unshift(\n processSection({\n order: -1,\n id: \"navbar-section\",\n label: \"Navbar section\",\n props: {\n variant: \"navbar\",\n direction: \"flex-row\",\n },\n mobileProps: {},\n bricks: [\n {\n id: \"navbar\",\n type: \"navbar\",\n props: siteAttributes.navbar,\n },\n ],\n }),\n );\n }\n if (siteAttributes.footer && !pageAttributes.noFooter) {\n finalSections.push(\n processSection({\n order: 1000,\n id: \"footer-section\",\n label: \"Footer section\",\n props: {\n variant: \"footer\",\n direction: \"flex-row\",\n },\n mobileProps: {},\n bricks: [\n {\n id: \"footer\",\n type: \"footer\",\n props: siteAttributes.footer,\n },\n ],\n }),\n );\n }\n\n return finalSections satisfies Section[];\n}\n\n/**\n * process a brick and add default props\n */\nexport function processBrick<T extends Brick>(brick: T): T {\n const defProps = defaultProps[brick.type];\n // if (!defProps) {\n // console.warn(`No default props found for brick type: ${brick.type}`);\n // return false; // or throw an error if you prefer\n // }\n const result = {\n ...brick,\n props: mergeIgnoringArrays({} as Brick[\"props\"], defProps.props, {\n ...brick.props,\n ...(brick.props.$children\n ? { $children: (brick.props.$children as T[]).map(processBrick).filter(Boolean) }\n : {}),\n }),\n };\n return result;\n}\n\nexport function createEmptyBrick(type: string, ghost = false): Brick {\n const props = { ...defaultProps[type].props, ghost };\n const newBrick = {\n id: `b-${generateId()}`,\n type,\n props,\n };\n return newBrick;\n}\n\nexport const sectionsExamples: { label: string; description: string; example: Section }[] = [\n {\n label: \"Hero section with centered 'hero' and 'button' bricks\",\n description: `A simple hero section with a title and a light primary background.\nThe \"hero\" brick does not have a colorPreset so it is transparent and inherits the background/text-color settings from the section.\nBricks are centered both vertically and horizontally using justifyContent and alignItems.\nBricks are stacked vertically using the \"direction\" set to \"flex-col\".\n`,\n example: {\n id: \"hero-section\",\n order: 0,\n props: {\n colorPreset: { color: \"primary-100\" },\n direction: \"flex-col\",\n padding: \"6rem\",\n gap: \"3rem\",\n justifyContent: \"justify-center\",\n alignItems: \"items-center\",\n },\n bricks: [\n {\n id: \"hero\",\n type: \"hero\",\n props: {\n content: \"<h1 style='text-align:center'>Welcome to my SaaS</h1>\",\n tagline: \"The future of productivity starts here\",\n },\n },\n {\n id: \"cta-button\",\n type: \"button\",\n props: {\n label: \"Get Started\",\n href: \"/signup\",\n colorPreset: { color: \"primary-500\", variant: \"solid\" },\n },\n },\n ],\n },\n },\n {\n label: \"Contact section with a text and a form\",\n description: `A contact section with a title and a form.\nThe section has a light gray background using a colorPreset.\nBricks are stacked vertically using the \"direction\" set to \"flex-col\".\n`,\n example: {\n id: \"contact-section\",\n order: 1,\n props: {\n colorPreset: { color: \"gray-100\" },\n direction: \"flex-col\",\n padding: \"4rem\",\n gap: \"2rem\",\n justifyContent: \"justify-center\",\n alignItems: \"items-center\",\n },\n bricks: [\n {\n id: \"contact-title\",\n type: \"text\",\n props: {\n content: \"<h2>Get in Touch</h2>\",\n },\n },\n {\n id: \"contact-form\",\n type: \"form\",\n props: {\n title: \"Contact Us\",\n fields: [\n { name: \"name\", label: \"Name\", type: \"text\", required: true },\n { name: \"email\", label: \"Email\", type: \"email\", required: true },\n { name: \"message\", label: \"Message\", type: \"textarea\", required: true },\n ],\n },\n },\n ],\n },\n },\n {\n label: \"Feature showcase with horizontal layout and container brick\",\n description: `A features section using horizontal layout with a container \"box\" brick that holds multiple feature items.\nThe box brick is the only container type that can hold $children (other bricks).\nThis demonstrates nested brick structure where the box contains multiple feature bricks.`,\n example: {\n id: \"features-section\",\n order: 2,\n props: {\n direction: \"flex-col\",\n padding: \"5rem\",\n gap: \"3rem\",\n maxWidth: \"max-w-screen-xl\",\n justifyContent: \"justify-center\",\n alignItems: \"items-center\",\n },\n bricks: [\n {\n id: \"features-title\",\n type: \"text\",\n props: {\n content: \"<h2 style='text-align:center'>Our Features</h2>\",\n },\n },\n {\n id: \"features-container\",\n type: \"box\",\n props: {\n direction: \"flex-row\",\n gap: \"2rem\",\n padding: \"2rem\",\n $children: [\n {\n id: \"feature-1\",\n type: \"text\",\n props: {\n content: \"<h3>Fast</h3><p>Lightning-fast performance for your needs.</p>\",\n colorPreset: { color: \"blue-500\" },\n },\n },\n {\n id: \"feature-2\",\n type: \"text\",\n props: {\n content: \"<h3>Secure</h3><p>Enterprise-grade security built-in.</p>\",\n colorPreset: { color: \"green-500\" },\n },\n },\n {\n id: \"feature-3\",\n type: \"text\",\n props: {\n content: \"<h3>Scalable</h3><p>Grows with your business seamlessly.</p>\",\n colorPreset: { color: \"purple-500\" },\n },\n },\n ],\n },\n },\n ],\n },\n },\n {\n label: \"Media-rich section with image and text side by side\",\n description: `A content section using horizontal layout to place an image next to text content.\nDemonstrates how direction \"flex-row\" arranges bricks horizontally.\nThe section uses responsive mobile overrides to stack vertically on mobile.`,\n example: {\n id: \"about-section\",\n order: 3,\n props: {\n direction: \"flex-row\",\n padding: \"4rem\",\n gap: \"3rem\",\n alignItems: \"items-center\",\n maxWidth: \"max-w-screen-xl\",\n },\n mobileProps: {\n direction: \"flex-col\",\n padding: \"2rem\",\n },\n bricks: [\n {\n id: \"about-image\",\n type: \"image\",\n props: {\n src: \"https://example.com/about-image.jpg\",\n alt: \"About our company\",\n width: \"400px\",\n height: \"300px\",\n },\n },\n {\n id: \"about-text\",\n type: \"text\",\n props: {\n content:\n \"<h2>About Us</h2><p>We are a leading company in innovative solutions, dedicated to transforming how businesses operate in the digital age.</p>\",\n },\n },\n ],\n },\n },\n {\n label: \"Complex nested layout with multiple container levels\",\n description: `Advanced example showing deeply nested brick structure using multiple box containers.\nDemonstrates how box bricks can contain other box bricks, creating sophisticated layouts.\nShows responsive design with different mobile arrangements.`,\n example: {\n id: \"complex-layout-section\",\n order: 4,\n props: {\n direction: \"flex-col\",\n padding: \"4rem\",\n gap: \"2rem\",\n backgroundImage: { image: \"https://example.com/bg.jpg\" },\n },\n bricks: [\n {\n id: \"main-container\",\n type: \"box\",\n props: {\n direction: \"flex-row\",\n gap: \"2rem\",\n padding: \"2rem\",\n $children: [\n {\n id: \"left-column\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1rem\",\n colorPreset: { color: \"gray-50\" },\n padding: \"1.5rem\",\n $children: [\n {\n id: \"left-title\",\n type: \"text\",\n props: {\n content: \"<h3>Left Column</h3>\",\n },\n },\n {\n id: \"left-button\",\n type: \"button\",\n props: {\n label: \"Learn More\",\n href: \"/learn\",\n colorPreset: { color: \"blue-500\", variant: \"outline\" },\n },\n },\n ],\n },\n },\n {\n id: \"right-column\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1rem\",\n colorPreset: { color: \"blue-50\" },\n padding: \"1.5rem\",\n $children: [\n {\n id: \"right-image\",\n type: \"image\",\n props: {\n src: \"https://example.com/feature.jpg\",\n alt: \"Feature showcase\",\n width: \"100%\",\n },\n },\n {\n id: \"right-text\",\n type: \"text\",\n props: {\n content: \"<p>Detailed description of our amazing features and capabilities.</p>\",\n },\n },\n ],\n },\n },\n ],\n mobileProps: {\n direction: \"flex-col\",\n },\n },\n },\n ],\n },\n },\n {\n label: \"Footer-style section with multiple columns\",\n description: `A footer-like section demonstrating horizontal layout with multiple informational columns.\nUses the footer variant for special styling and contains multiple text bricks arranged horizontally.\nShows how to create multi-column layouts using direction and gap properties.`,\n example: {\n id: \"info-footer-section\",\n order: 5,\n props: {\n variant: \"footer\",\n direction: \"flex-row\",\n padding: \"3rem\",\n gap: \"4rem\",\n colorPreset: { color: \"gray-800\" },\n justifyContent: \"justify-center\",\n },\n mobileProps: {\n direction: \"flex-col\",\n gap: \"2rem\",\n },\n bricks: [\n {\n id: \"company-info\",\n type: \"text\",\n props: {\n content:\n \"<h4 style='color:white'>Company</h4><p style='color:gray'>About Us<br>Careers<br>Contact</p>\",\n },\n },\n {\n id: \"product-info\",\n type: \"text\",\n props: {\n content:\n \"<h4 style='color:white'>Product</h4><p style='color:gray'>Features<br>Pricing<br>Documentation</p>\",\n },\n },\n {\n id: \"support-info\",\n type: \"text\",\n props: {\n content:\n \"<h4 style='color:white'>Support</h4><p style='color:gray'>Help Center<br>Community<br>Status</p>\",\n },\n },\n ],\n },\n },\n {\n label: \"Video showcase section with title and description\",\n description: `A media section featuring a YouTube video with accompanying text.\nShows how to use video bricks for multimedia content.\nThe section uses a light background to make the video stand out.`,\n example: {\n id: \"video-showcase-section\",\n order: 6,\n props: {\n direction: \"flex-col\",\n padding: \"4rem\",\n gap: \"2rem\",\n colorPreset: { color: \"gray-50\" },\n alignItems: \"items-center\",\n maxWidth: \"max-w-screen-lg\",\n },\n bricks: [\n {\n id: \"video-title\",\n type: \"text\",\n props: {\n content: \"<h2 style='text-align:center'>Watch Our Demo</h2>\",\n },\n },\n {\n id: \"demo-video\",\n type: \"video\",\n props: {\n url: \"https://www.youtube.com/watch?v=dQw4w9WgXcQ\",\n title: \"Product Demo Video\",\n },\n },\n {\n id: \"video-description\",\n type: \"text\",\n props: {\n content:\n \"<p style='text-align:center'>See how our platform can transform your workflow in just 2 minutes.</p>\",\n },\n },\n ],\n },\n },\n {\n label: \"Image gallery section with carousel\",\n description: `A media-rich section showcasing an image carousel.\nDemonstrates how to use carousel bricks for displaying multiple images.\nPerfect for portfolios, product showcases, or photo galleries.`,\n example: {\n id: \"gallery-section\",\n order: 7,\n props: {\n direction: \"flex-col\",\n padding: \"4rem\",\n gap: \"2rem\",\n alignItems: \"items-center\",\n },\n bricks: [\n {\n id: \"gallery-title\",\n type: \"text\",\n props: {\n content: \"<h2 style='text-align:center'>Our Portfolio</h2>\",\n },\n },\n {\n id: \"portfolio-carousel\",\n type: \"carousel\",\n props: {\n images: [\n { src: \"https://example.com/project1.jpg\", alt: \"Project 1\" },\n { src: \"https://example.com/project2.jpg\", alt: \"Project 2\" },\n { src: \"https://example.com/project3.jpg\", alt: \"Project 3\" },\n ],\n autoplay: true,\n showDots: true,\n },\n },\n ],\n },\n },\n {\n label: \"Interactive form section with styled inputs\",\n description: `A comprehensive form section for user registration or contact.\nShows how to create forms with various field types and validation.\nUses a card-like appearance with rounded corners and shadow.`,\n example: {\n id: \"signup-form-section\",\n order: 8,\n props: {\n direction: \"flex-col\",\n padding: \"4rem\",\n gap: \"2rem\",\n colorPreset: { color: \"blue-50\" },\n alignItems: \"items-center\",\n maxWidth: \"max-w-screen-md\",\n },\n bricks: [\n {\n id: \"form-header\",\n type: \"text\",\n props: {\n content:\n \"<h2 style='text-align:center'>Join Our Platform</h2><p style='text-align:center'>Create your account and start building today.</p>\",\n },\n },\n {\n id: \"registration-form\",\n type: \"form\",\n props: {\n title: \"Sign Up\",\n submitLabel: \"Create Account\",\n fields: [\n { name: \"firstName\", label: \"First Name\", type: \"text\", required: true },\n { name: \"lastName\", label: \"Last Name\", type: \"text\", required: true },\n { name: \"email\", label: \"Email Address\", type: \"email\", required: true },\n { name: \"password\", label: \"Password\", type: \"password\", required: true },\n { name: \"company\", label: \"Company\", type: \"text\", required: false },\n { name: \"newsletter\", label: \"Subscribe to newsletter\", type: \"checkbox\", required: false },\n ],\n colorPreset: { color: \"white\" },\n shadow: \"shadow-lg\",\n rounding: \"rounded-lg\",\n padding: \"2rem\",\n },\n },\n ],\n },\n },\n {\n label: \"Testimonials section with customer feedback\",\n description: `A social proof section using the testimonials brick to display customer feedback.\nShows how to structure testimonials with avatars, company information, and social icons.\nPerfect for building trust and credibility with potential customers.`,\n example: {\n id: \"testimonials-section\",\n order: 9,\n props: {\n direction: \"flex-col\",\n padding: \"5rem\",\n gap: \"3rem\",\n colorPreset: { color: \"purple-50\" },\n alignItems: \"items-center\",\n },\n bricks: [\n {\n id: \"testimonials-title\",\n type: \"text\",\n props: {\n content: \"<h2 style='text-align:center'>What Our Customers Say</h2>\",\n },\n },\n {\n id: \"customer-testimonials\",\n type: \"testimonials\",\n props: {\n testimonials: [\n {\n text: \"This platform has completely transformed how we handle our projects. The automation features and intuitive interface have saved us countless hours every week.\",\n author: \"Sarah Johnson\",\n company: \"TechCorp Solutions\",\n avatar: {\n src: \"https://via.placeholder.com/80x80.png?text=SJ\",\n alt: \"Sarah Johnson profile photo\",\n },\n socialIcon: \"mdi:linkedin\",\n },\n {\n text: \"Outstanding customer support and regular feature updates. We've been using this for over a year and it keeps getting better. Highly recommend!\",\n author: \"Mike Chen\",\n company: \"StartupFlow\",\n avatar: {\n src: \"https://via.placeholder.com/80x80.png?text=MC\",\n alt: \"Mike Chen profile photo\",\n },\n socialIcon: \"mdi:twitter\",\n },\n {\n text: \"The results speak for themselves - our productivity increased by 40% after implementing this solution. It's like having an extra team member.\",\n author: \"Emily Rodriguez\",\n company: \"Digital Agency Pro\",\n avatar: {\n src: \"https://via.placeholder.com/80x80.png?text=ER\",\n alt: \"Emily Rodriguez profile photo\",\n },\n socialIcon: \"mdi:briefcase\",\n },\n ],\n colorPreset: { color: \"white\" },\n shadow: \"shadow-lg\",\n padding: \"2rem\",\n gap: \"2rem\",\n },\n },\n ],\n },\n },\n {\n label: \"Location and contact information with map\",\n description: `A contact section featuring an interactive map alongside contact details.\nShows how to combine map bricks with text and contact information.\nPerfect for businesses with physical locations.`,\n example: {\n id: \"location-section\",\n order: 10,\n props: {\n direction: \"flex-row\",\n padding: \"4rem\",\n gap: \"3rem\",\n alignItems: \"items-start\",\n },\n mobileProps: {\n direction: \"flex-col\",\n },\n bricks: [\n {\n id: \"contact-details\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"2rem\",\n padding: \"2rem\",\n colorPreset: { color: \"gray-50\" },\n rounding: \"rounded-lg\",\n $children: [\n {\n id: \"office-title\",\n type: \"text\",\n props: {\n content: \"<h3>Visit Our Office</h3>\",\n },\n },\n {\n id: \"address\",\n type: \"text\",\n props: {\n content:\n \"<p><strong>Address:</strong><br>123 Business Street<br>Suite 100<br>San Francisco, CA 94105</p>\",\n },\n },\n {\n id: \"contact-info\",\n type: \"text\",\n props: {\n content:\n \"<p><strong>Phone:</strong> +1 (555) 123-4567<br><strong>Email:</strong> hello@company.com</p>\",\n },\n },\n {\n id: \"hours\",\n type: \"text\",\n props: {\n content:\n \"<p><strong>Business Hours:</strong><br>Monday - Friday: 9:00 AM - 6:00 PM<br>Saturday: 10:00 AM - 4:00 PM</p>\",\n },\n },\n ],\n },\n },\n {\n id: \"office-map\",\n type: \"map\",\n props: {\n address: \"123 Business Street, San Francisco, CA 94105\",\n zoom: 15,\n height: \"400px\",\n },\n },\n ],\n },\n },\n {\n label: \"Statistics showcase with icons and numbers\",\n description: `A metrics section displaying key statistics using icon and text bricks.\nDemonstrates how to create compelling data visualizations.\nUses horizontal layout with consistent spacing and visual hierarchy.`,\n example: {\n id: \"stats-section\",\n order: 11,\n props: {\n direction: \"flex-col\",\n padding: \"5rem\",\n gap: \"3rem\",\n colorPreset: { color: \"gradient\", gradientDirection: \"bg-gradient-to-r\" },\n alignItems: \"items-center\",\n },\n bricks: [\n {\n id: \"stats-title\",\n type: \"text\",\n props: {\n content: \"<h2 style='text-align:center; color:white'>Our Impact</h2>\",\n },\n },\n {\n id: \"stats-container\",\n type: \"box\",\n props: {\n direction: \"flex-row\",\n gap: \"4rem\",\n justifyContent: \"justify-center\",\n $children: [\n {\n id: \"users-stat\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1rem\",\n alignItems: \"items-center\",\n $children: [\n {\n id: \"users-icon\",\n type: \"icon\",\n props: {\n icon: \"users\",\n size: \"3rem\",\n color: \"white\",\n },\n },\n {\n id: \"users-number\",\n type: \"text\",\n props: {\n content:\n \"<h3 style='color:white; text-align:center'>50K+</h3><p style='color:white; text-align:center'>Active Users</p>\",\n },\n },\n ],\n },\n },\n {\n id: \"projects-stat\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1rem\",\n alignItems: \"items-center\",\n $children: [\n {\n id: \"projects-icon\",\n type: \"icon\",\n props: {\n icon: \"briefcase\",\n size: \"3rem\",\n color: \"white\",\n },\n },\n {\n id: \"projects-number\",\n type: \"text\",\n props: {\n content:\n \"<h3 style='color:white; text-align:center'>100K+</h3><p style='color:white; text-align:center'>Projects Created</p>\",\n },\n },\n ],\n },\n },\n {\n id: \"satisfaction-stat\",\n type: \"box\",\n props: {\n direction: \"flex-col\",\n gap: \"1rem\",\n alignItems: \"items-center\",\n $children: [\n {\n id: \"satisfaction-icon\",\n type: \"icon\",\n props: {\n icon: \"star\",\n size: \"3rem\",\n color: \"white\",\n },\n },\n {\n id: \"satisfaction-number\",\n type: \"text\",\n props: {\n content:\n \"<h3 style='color:white; text-align:center'>98%</h3><p style='color:white; text-align:center'>Satisfaction Rate</p>\",\n },\n },\n ],\n },\n },\n ],\n mobileProps: {\n direction: \"flex-col\",\n gap: \"2rem\",\n },\n },\n },\n ],\n },\n },\n {\n label: \"Social links and newsletter signup\",\n description: `A community engagement section combining social media links with newsletter signup.\nShows how to use social-links bricks and forms together.\nCreates a cohesive call-to-action for community building.`,\n example: {\n id: \"community-section\",\n order: 12,\n props: {\n direction: \"flex-col\",\n padding: \"4rem\",\n gap: \"3rem\",\n colorPreset: { color: \"indigo-100\" },\n alignItems: \"items-center\",\n maxWidth: \"max-w-screen-md\",\n },\n bricks: [\n {\n id: \"community-title\",\n type: \"text\",\n props: {\n content:\n \"<h2 style='text-align:center'>Stay Connected</h2><p style='text-align:center'>Join our community and never miss an update.</p>\",\n },\n },\n {\n id: \"social-links\",\n type: \"social-links\",\n props: {\n links: [\n { platform: \"twitter\", url: \"https://twitter.com/company\" },\n { platform: \"linkedin\", url: \"https://linkedin.com/company/company\" },\n { platform: \"github\", url: \"https://github.com/company\" },\n { platform: \"youtube\", url: \"https://youtube.com/company\" },\n ],\n size: \"large\",\n style: \"filled\",\n },\n },\n {\n id: \"newsletter-form\",\n type: \"form\",\n props: {\n title: \"Subscribe to Our Newsletter\",\n subtitle: \"Get weekly updates and exclusive content delivered to your inbox.\",\n submitLabel: \"Subscribe\",\n fields: [\n {\n name: \"email\",\n label: \"Email Address\",\n type: \"email\",\n required: true,\n placeholder: \"your@email.com\",\n },\n ],\n colorPreset: { color: \"white\" },\n rounding: \"rounded-lg\",\n padding: \"2rem\",\n shadow: \"shadow-md\",\n },\n },\n ],\n },\n },\n {\n label: \"Pricing table with multiple options\",\n description: `A pricing section using card bricks to create a comparison table.\nDemonstrates how to structure pricing tiers with different features.\nUses consistent styling with highlighted premium option.`,\n example: {\n id: \"pricing-section\",\n order: 13,\n props: {\n direction: \"flex-col\",\n padding: \"5rem\",\n gap: \"3rem\",\n alignItems: \"items-center\",\n },\n bricks: [\n {\n id: \"pricing-header\",\n type: \"text\",\n props: {\n content:\n \"<h2 style='text-align:center'>Choose Your Plan</h2><p style='text-align:center'>Select the perfect plan for your needs.</p>\",\n },\n },\n {\n id: \"pricing-cards\",\n type: \"box\",\n props: {\n direction: \"flex-row\",\n gap: \"2rem\",\n justifyContent: \"justify-center\",\n $children: [\n {\n id: \"basic-plan\",\n type: \"card\",\n props: {\n title: \"Basic\",\n subtitle: \"$9/month\",\n content: \"• 5 Projects<br>• 10GB Storage<br>• Email Support<br>• Basic Templates\",\n colorPreset: { color: \"white\" },\n border: { width: \"border-2\", color: \"border-gray-200\" },\n rounding: \"rounded-lg\",\n padding: \"2rem\",\n shadow: \"shadow-md\",\n },\n },\n {\n id: \"pro-plan\",\n type: \"card\",\n props: {\n title: \"Pro\",\n subtitle: \"$29/month\",\n content:\n \"• Unlimited Projects<br>• 100GB Storage<br>• Priority Support<br>• Premium Templates<br>• Advanced Analytics\",\n colorPreset: { color: \"blue-500\" },\n rounding: \"rounded-lg\",\n padding: \"2rem\",\n shadow: \"shadow-lg\",\n border: { width: \"border-2\", color: \"border-blue-400\" },\n },\n },\n {\n id: \"enterprise-plan\",\n type: \"card\",\n props: {\n title: \"Enterprise\",\n subtitle: \"Custom\",\n content:\n \"• Everything in Pro<br>• Unlimited Storage<br>• 24/7 Phone Support<br>• Custom Integrations<br>• Dedicated Account Manager\",\n colorPreset: { color: \"white\" },\n border: { width: \"border-2\", color: \"border-gray-200\" },\n rounding: \"rounded-lg\",\n padding: \"2rem\",\n shadow: \"shadow-md\",\n },\n },\n ],\n mobileProps: {\n direction: \"flex-col\",\n },\n },\n },\n ],\n },\n },\n];\n"],"mappings":";;qbAAA,OAAS,QAAAA,MAAuC,oBAChD,OAAS,kBAAAC,MAAsB,SAkBxB,IAAMC,EAAaC,EAAe,uDAAwD,CAAC,EAE5FC,EAA8BC,EAAK,OAAO,CAC9C,KAAMA,EAAK,SACTA,EAAK,OAAO,CACV,MAAO,MACP,YAAa,gCACf,CAAC,CACH,EACA,IAAKA,EAAK,SACRA,EAAK,OAAO,CACV,MAAO,MACP,YAAa,+BACf,CAAC,CACH,EACA,MAAOA,EAAK,SACVA,EAAK,OAAO,CACV,MAAO,QACP,YAAa,iCACf,CAAC,CACH,EACA,OAAQA,EAAK,SACXA,EAAK,OAAO,CACV,MAAO,SACP,YAAa,kCACf,CAAC,CACH,EACA,MAAOA,EAAK,SACVA,EAAK,OAAO,CACV,MAAO,QACP,YAAa,iCACf,CAAC,CACH,EACA,WAAYA,EAAK,SACfA,EAAK,OAAO,CACV,MAAO,aACP,YAAa,sCACf,CAAC,CACH,EACA,WAAYA,EAAK,SACfA,EAAK,OAAO,CACV,MAAO,aACP,YAAa,sCACf,CAAC,CACH,EACA,OAAQA,EAAK,SACXA,EAAK,OAAO,CACV,MAAO,SACP,YAAa,kCACf,CAAC,CACH,CACF,CAAC,EAIYC,EAAkBC,EAAW,OAAO,KAAKC,CAAY,EAAG,CACnE,MAAO,YACT,CAAC,EAEYC,EAAcJ,EAAK,OAC9B,CACE,GAAIA,EAAK,OAAO,CACd,MAAO,KACP,YAAa,oCACf,CAAC,EACD,KAAMC,EACN,MAAOD,EAAK,IAAI,CACd,MAAO,QACP,YAAa,+EACf,CAAC,EACD,YAAaA,EAAK,SAChBA,EAAK,IAAI,CACP,MAAO,QACP,YAAa,4DACf,CAAC,CACH,CACF,EACA,CAAE,qBAAsB,EAAK,CAC/B,EAEO,SAASK,EAA0BC,EAAcC,EAAgB,CACtE,OAAOC,EACLR,EAAK,OACH,CACE,GAAIA,EAAK,OAAO,CACd,MAAO,KACP,YAAa,oCACf,CAAC,EACD,KAAMA,EAAK,QAAQM,CAAI,EACvB,MAAAC,EACA,YAAaP,EAAK,SAASA,EAAK,QAAQO,CAAK,CAAC,CAChD,EACA,CAAE,qBAAsB,EAAM,CAChC,CACF,CACF,CAOO,IAAME,EAAeT,EAAK,OAC/B,CACE,YAAaA,EAAK,SAChBU,EAAe,CACb,MAAO,OACT,CAAC,CACH,EACA,gBAAiBV,EAAK,SACpBW,EAAc,CACZ,MAAO,aACP,YACE,oHACJ,CAAC,CACH,EACA,UAAWC,EAAa,CACtB,QAAS,WACT,MAAO,YACP,YAAa,yFACb,gBAAiB,SACnB,CAAC,EACD,UAAWZ,EAAK,SACda,EAAa,CACX,MAAO,aACP,QAAS,cACT,YAAa,gCACb,WAAY,QACd,CAAC,CACH,EACA,QAASb,EAAK,SACZE,EAAW,CAAC,SAAU,SAAU,SAAS,EAAG,CAC1C,MAAO,yBACP,YAAa,sCACb,UAAW,CAAC,SAAU,SAAU,SAAS,EACzC,WAAY,SACZ,YAAa,EACf,CAAC,CACH,EACA,SAAUF,EAAK,SACbc,EAAS,YAAa,aAAc,CAClC,QAAS,CACP,CACE,MAAO,kBACP,MAAO,IACP,YAAa,0CACf,EACA,CACE,MAAO,kBACP,MAAO,IACP,YAAa,+BACf,EACA,CACE,MAAO,mBACP,MAAO,KACP,YAAa,cACf,EACA,CACE,MAAO,aACP,MAAO,OACP,YAAa,wBACf,CACF,EACA,YAAa,iDACb,kBACE,4HACF,UAAW,eACX,gBAAiB,SACnB,CAAC,CACH,EACA,eAAgBd,EAAK,SACnBe,EAAkB,CAChB,QAAS,gBACX,CAAC,CACH,EACA,WAAYf,EAAK,SACfgB,EAAc,CACZ,QAAS,cACX,CAAC,CACH,EACA,QAAShB,EAAK,SACZa,EAAa,CACX,QAAS,OACT,YAAa,8BACb,MAAO,UACP,gBAAiB,GACjB,iBAAkB,gBAClB,aAAc,gBAChB,CAAC,CACH,EACA,IAAKb,EAAK,SACRa,EAAa,CACX,MAAO,MACP,YAAa,6CACb,QAAS,OACT,aAAc,YAChB,CAAC,CACH,EACA,KAAMb,EAAK,SACTA,EAAK,QAAQ,CACX,MAAO,OACP,YAAa,4CACb,QAAS,GACT,aAAc,aAChB,CAAC,CACH,EACA,YAAaA,EAAK,SAChBA,EAAK,OAAO,CACV,YAAa,8DACb,WAAY,SACZ,YAAa,EACf,CAAC,CACH,CACF,EACA,CACE,qBAAsB,EACxB,CACF,EAEaiB,EAAgBjB,EAAK,OAChC,CACE,GAAIA,EAAK,OAAO,CACd,YAAa,mEACb,SAAU,CAAC,kBAAmB,iBAAiB,CACjD,CAAC,EACD,MAAOA,EAAK,SACVA,EAAK,OAAO,CACV,YAAa,2DACb,SAAU,CAAC,UAAW,SAAS,CACjC,CAAC,CACH,EACA,MAAOA,EAAK,OAAO,CACjB,YAAa,4EACf,CAAC,EACD,MAAOS,EACP,YAAaT,EAAK,SAASA,EAAK,QAAQS,EAAc,CAAE,qBAAsB,EAAM,CAAC,CAAC,EACtF,OAAQT,EAAK,MAAMI,CAAW,CAChC,EACA,CACE,YAAa,uEACf,CACF,EAEac,EAAwBlB,EAAK,KAAKiB,EAAe,CAAC,QAAQ,CAAC,EAEjE,SAASE,GAAgC,CAC9C,OAAOX,EAAYU,CAAqB,CAC1C,CAEO,SAASE,GAAyB,CACvC,OAAOZ,EAAYS,CAAa,CAClC,CAEA,IAAMI,EAAsBC,EAAkBL,EAAc,WAAW,MAAO,SAAS,EACjFM,EAA4BD,EAChCL,EAAc,WAAW,YACzB,QACF,EAIO,SAASO,EACdC,EACAC,EACAC,EACW,CACX,IAAMC,EAAkBC,IACf,CACL,GAAGA,EACH,MAAOC,EAAoB,CAAC,EAAuBT,EAAqBQ,EAAQ,KAAK,EACrF,YAAaC,EAAoB,CAAC,EAAGP,EAA2BM,EAAQ,aAAe,CAAC,CAAC,EACzF,OAAQA,EAAQ,OAAO,IAAIE,CAAY,EAAE,OAAO,OAAO,CACzD,GAGIC,EAAgBP,EAAS,IAAIG,CAAc,EAEjD,OAAIF,EAAe,QAAU,CAACC,EAAe,UAC3CK,EAAc,QACZJ,EAAe,CACb,MAAO,GACP,GAAI,iBACJ,MAAO,iBACP,MAAO,CACL,QAAS,SACT,UAAW,UACb,EACA,YAAa,CAAC,EACd,OAAQ,CACN,CACE,GAAI,SACJ,KAAM,SACN,MAAOF,EAAe,MACxB,CACF,CACF,CAAC,CACH,EAEEA,EAAe,QAAU,CAACC,EAAe,UAC3CK,EAAc,KACZJ,EAAe,CACb,MAAO,IACP,GAAI,iBACJ,MAAO,iBACP,MAAO,CACL,QAAS,SACT,UAAW,UACb,EACA,YAAa,CAAC,EACd,OAAQ,CACN,CACE,GAAI,SACJ,KAAM,SACN,MAAOF,EAAe,MACxB,CACF,CACF,CAAC,CACH,EAGKM,CACT,CAKO,SAASD,EAA8BE,EAAa,CACzD,IAAMC,EAAW/B,EAAa8B,EAAM,IAAI,EAcxC,MATe,CACb,GAAGA,EACH,MAAOH,EAAoB,CAAC,EAAqBI,EAAS,MAAO,CAC/D,GAAGD,EAAM,MACT,GAAIA,EAAM,MAAM,UACZ,CAAE,UAAYA,EAAM,MAAM,UAAkB,IAAIF,CAAY,EAAE,OAAO,OAAO,CAAE,EAC9E,CAAC,CACP,CAAC,CACH,CAEF,CAEO,SAASI,EAAiB7B,EAAc8B,EAAQ,GAAc,CACnE,IAAM7B,EAAQ,CAAE,GAAGJ,EAAaG,CAAI,EAAE,MAAO,MAAA8B,CAAM,EAMnD,MALiB,CACf,GAAI,KAAKvC,EAAW,CAAC,GACrB,KAAAS,EACA,MAAAC,CACF,CAEF,CAEO,IAAM8B,EAA+E,CAC1F,CACE,MAAO,wDACP,YAAa;AAAA;AAAA;AAAA;AAAA,EAKb,QAAS,CACP,GAAI,eACJ,MAAO,EACP,MAAO,CACL,YAAa,CAAE,MAAO,aAAc,EACpC,UAAW,WACX,QAAS,OACT,IAAK,OACL,eAAgB,iBAChB,WAAY,cACd,EACA,OAAQ,CACN,CACE,GAAI,OACJ,KAAM,OACN,MAAO,CACL,QAAS,wDACT,QAAS,wCACX,CACF,EACA,CACE,GAAI,aACJ,KAAM,SACN,MAAO,CACL,MAAO,cACP,KAAM,UACN,YAAa,CAAE,MAAO,cAAe,QAAS,OAAQ,CACxD,CACF,CACF,CACF,CACF,EACA,CACE,MAAO,yCACP,YAAa;AAAA;AAAA;AAAA,EAIb,QAAS,CACP,GAAI,kBACJ,MAAO,EACP,MAAO,CACL,YAAa,CAAE,MAAO,UAAW,EACjC,UAAW,WACX,QAAS,OACT,IAAK,OACL,eAAgB,iBAChB,WAAY,cACd,EACA,OAAQ,CACN,CACE,GAAI,gBACJ,KAAM,OACN,MAAO,CACL,QAAS,uBACX,CACF,EACA,CACE,GAAI,eACJ,KAAM,OACN,MAAO,CACL,MAAO,aACP,OAAQ,CACN,CAAE,KAAM,OAAQ,MAAO,OAAQ,KAAM,OAAQ,SAAU,EAAK,EAC5D,CAAE,KAAM,QAAS,MAAO,QAAS,KAAM,QAAS,SAAU,EAAK,EAC/D,CAAE,KAAM,UAAW,MAAO,UAAW,KAAM,WAAY,SAAU,EAAK,CACxE,CACF,CACF,CACF,CACF,CACF,EACA,CACE,MAAO,8DACP,YAAa;AAAA;AAAA,0FAGb,QAAS,CACP,GAAI,mBACJ,MAAO,EACP,MAAO,CACL,UAAW,WACX,QAAS,OACT,IAAK,OACL,SAAU,kBACV,eAAgB,iBAChB,WAAY,cACd,EACA,OAAQ,CACN,CACE,GAAI,iBACJ,KAAM,OACN,MAAO,CACL,QAAS,iDACX,CACF,EACA,CACE,GAAI,qBACJ,KAAM,MACN,MAAO,CACL,UAAW,WACX,IAAK,OACL,QAAS,OACT,UAAW,CACT,CACE,GAAI,YACJ,KAAM,OACN,MAAO,CACL,QAAS,iEACT,YAAa,CAAE,MAAO,UAAW,CACnC,CACF,EACA,CACE,GAAI,YACJ,KAAM,OACN,MAAO,CACL,QAAS,4DACT,YAAa,CAAE,MAAO,WAAY,CACpC,CACF,EACA,CACE,GAAI,YACJ,KAAM,OACN,MAAO,CACL,QAAS,+DACT,YAAa,CAAE,MAAO,YAAa,CACrC,CACF,CACF,CACF,CACF,CACF,CACF,CACF,EACA,CACE,MAAO,sDACP,YAAa;AAAA;AAAA,6EAGb,QAAS,CACP,GAAI,gBACJ,MAAO,EACP,MAAO,CACL,UAAW,WACX,QAAS,OACT,IAAK,OACL,WAAY,eACZ,SAAU,iBACZ,EACA,YAAa,CACX,UAAW,WACX,QAAS,MACX,EACA,OAAQ,CACN,CACE,GAAI,cACJ,KAAM,QACN,MAAO,CACL,IAAK,sCACL,IAAK,oBACL,MAAO,QACP,OAAQ,OACV,CACF,EACA,CACE,GAAI,aACJ,KAAM,OACN,MAAO,CACL,QACE,gJACJ,CACF,CACF,CACF,CACF,EACA,CACE,MAAO,uDACP,YAAa;AAAA;AAAA,6DAGb,QAAS,CACP,GAAI,yBACJ,MAAO,EACP,MAAO,CACL,UAAW,WACX,QAAS,OACT,IAAK,OACL,gBAAiB,CAAE,MAAO,4BAA6B,CACzD,EACA,OAAQ,CACN,CACE,GAAI,iBACJ,KAAM,MACN,MAAO,CACL,UAAW,WACX,IAAK,OACL,QAAS,OACT,UAAW,CACT,CACE,GAAI,cACJ,KAAM,MACN,MAAO,CACL,UAAW,WACX,IAAK,OACL,YAAa,CAAE,MAAO,SAAU,EAChC,QAAS,SACT,UAAW,CACT,CACE,GAAI,aACJ,KAAM,OACN,MAAO,CACL,QAAS,sBACX,CACF,EACA,CACE,GAAI,cACJ,KAAM,SACN,MAAO,CACL,MAAO,aACP,KAAM,SACN,YAAa,CAAE,MAAO,WAAY,QAAS,SAAU,CACvD,CACF,CACF,CACF,CACF,EACA,CACE,GAAI,eACJ,KAAM,MACN,MAAO,CACL,UAAW,WACX,IAAK,OACL,YAAa,CAAE,MAAO,SAAU,EAChC,QAAS,SACT,UAAW,CACT,CACE,GAAI,cACJ,KAAM,QACN,MAAO,CACL,IAAK,kCACL,IAAK,mBACL,MAAO,MACT,CACF,EACA,CACE,GAAI,aACJ,KAAM,OACN,MAAO,CACL,QAAS,uEACX,CACF,CACF,CACF,CACF,CACF,EACA,YAAa,CACX,UAAW,UACb,CACF,CACF,CACF,CACF,CACF,EACA,CACE,MAAO,6CACP,YAAa;AAAA;AAAA,8EAGb,QAAS,CACP,GAAI,sBACJ,MAAO,EACP,MAAO,CACL,QAAS,SACT,UAAW,WACX,QAAS,OACT,IAAK,OACL,YAAa,CAAE,MAAO,UAAW,EACjC,eAAgB,gBAClB,EACA,YAAa,CACX,UAAW,WACX,IAAK,MACP,EACA,OAAQ,CACN,CACE,GAAI,eACJ,KAAM,OACN,MAAO,CACL,QACE,8FACJ,CACF,EACA,CACE,GAAI,eACJ,KAAM,OACN,MAAO,CACL,QACE,oGACJ,CACF,EACA,CACE,GAAI,eACJ,KAAM,OACN,MAAO,CACL,QACE,kGACJ,CACF,CACF,CACF,CACF,EACA,CACE,MAAO,oDACP,YAAa;AAAA;AAAA,kEAGb,QAAS,CACP,GAAI,yBACJ,MAAO,EACP,MAAO,CACL,UAAW,WACX,QAAS,OACT,IAAK,OACL,YAAa,C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ACN,MAAO,CACL,QACE,+GACJ,CACF,CACF,CACF,CACF,EACA,CACE,GAAI,aACJ,KAAM,MACN,MAAO,CACL,QAAS,+CACT,KAAM,GACN,OAAQ,OACV,CACF,CACF,CACF,CACF,EACA,CACE,MAAO,6CACP,YAAa;AAAA;AAAA,sEAGb,QAAS,CACP,GAAI,gBACJ,MAAO,GACP,MAAO,CACL,UAAW,WACX,QAAS,OACT,IAAK,OACL,YAAa,CAAE,MAAO,WAAY,kBAAmB,kBAAmB,EACxE,WAAY,cACd,EACA,OAAQ,CACN,CACE,GAAI,cACJ,KAAM,OACN,MAAO,CACL,QAAS,4DACX,CACF,EACA,CACE,GAAI,kBACJ,KAAM,MACN,MAAO,CACL,UAAW,WACX,IAAK,OACL,eAAgB,iBAChB,UAAW,CACT,CACE,GAAI,aACJ,KAAM,MACN,MAAO,CACL,UAAW,WACX,IAAK,OACL,WAAY,eACZ,UAAW,CACT,CACE,GAAI,aACJ,KAAM,OACN,MAAO,CACL,KAAM,QACN,KAAM,OACN,MAAO,OACT,CACF,EACA,CACE,GAAI,eACJ,KAAM,OACN,MAAO,CACL,QACE,gHACJ,CACF,CACF,CACF,CACF,EACA,CACE,GAAI,gBACJ,KAAM,MACN,MAAO,CACL,UAAW,WACX,IAAK,OACL,WAAY,eACZ,UAAW,CACT,CACE,GAAI,gBACJ,KAAM,OACN,MAAO,CACL,KAAM,YACN,KAAM,OACN,MAAO,OACT,CACF,EACA,CACE,GAAI,kBACJ,KAAM,OACN,MAAO,CACL,QACE,qHACJ,CACF,CACF,CACF,CACF,EACA,CACE,GAAI,oBACJ,KAAM,MACN,MAAO,CACL,UAAW,WACX,IAAK,OACL,WAAY,eACZ,UAAW,CACT,CACE,GAAI,oBACJ,KAAM,OACN,MAAO,CACL,KAAM,OACN,KAAM,OACN,MAAO,OACT,CACF,EACA,CACE,GAAI,sBACJ,KAAM,OACN,MAAO,CACL,QACE,oHACJ,CACF,CACF,CACF,CACF,CACF,EACA,YAAa,CACX,UAAW,WACX,IAAK,MACP,CACF,CACF,CACF,CACF,CACF,EACA,CACE,MAAO,qCACP,YAAa;AAAA;AAAA,2DAGb,QAAS,CACP,GAAI,oBACJ,MAAO,GACP,MAAO,CACL,UAAW,WACX,QAAS,OACT,IAAK,OACL,YAAa,CAAE,MAAO,YAAa,EACnC,WAAY,eACZ,SAAU,iBACZ,EACA,OAAQ,CACN,CACE,GAAI,kBACJ,KAAM,OACN,MAAO,CACL,QACE,gIACJ,CACF,EACA,CACE,GAAI,eACJ,KAAM,eACN,MAAO,CACL,MAAO,CACL,CAAE,SAAU,UAAW,IAAK,6BAA8B,EAC1D,CAAE,SAAU,WAAY,IAAK,sCAAuC,EACpE,CAAE,SAAU,SAAU,IAAK,4BAA6B,EACxD,CAAE,SAAU,UAAW,IAAK,6BAA8B,CAC5D,EACA,KAAM,QACN,MAAO,QACT,CACF,EACA,CACE,GAAI,kBACJ,KAAM,OACN,MAAO,CACL,MAAO,8BACP,SAAU,oEACV,YAAa,YACb,OAAQ,CACN,CACE,KAAM,QACN,MAAO,gBACP,KAAM,QACN,SAAU,GACV,YAAa,gBACf,CACF,EACA,YAAa,CAAE,MAAO,OAAQ,EAC9B,SAAU,aACV,QAAS,OACT,OAAQ,WACV,CACF,CACF,CACF,CACF,EACA,CACE,MAAO,sCACP,YAAa;AAAA;AAAA,0DAGb,QAAS,CACP,GAAI,kBACJ,MAAO,GACP,MAAO,CACL,UAAW,WACX,QAAS,OACT,IAAK,OACL,WAAY,cACd,EACA,OAAQ,CACN,CACE,GAAI,iBACJ,KAAM,OACN,MAAO,CACL,QACE,6HACJ,CACF,EACA,CACE,GAAI,gBACJ,KAAM,MACN,MAAO,CACL,UAAW,WACX,IAAK,OACL,eAAgB,iBAChB,UAAW,CACT,CACE,GAAI,aACJ,KAAM,OACN,MAAO,CACL,MAAO,QACP,SAAU,WACV,QAAS,6FACT,YAAa,CAAE,MAAO,OAAQ,EAC9B,OAAQ,CAAE,MAAO,WAAY,MAAO,iBAAkB,EACtD,SAAU,aACV,QAAS,OACT,OAAQ,WACV,CACF,EACA,CACE,GAAI,WACJ,KAAM,OACN,MAAO,CACL,MAAO,MACP,SAAU,YACV,QACE,wIACF,YAAa,CAAE,MAAO,UAAW,EACjC,SAAU,aACV,QAAS,OACT,OAAQ,YACR,OAAQ,CAAE,MAAO,WAAY,MAAO,iBAAkB,CACxD,CACF,EACA,CACE,GAAI,kBACJ,KAAM,OACN,MAAO,CACL,MAAO,aACP,SAAU,SACV,QACE,sJACF,YAAa,CAAE,MAAO,OAAQ,EAC9B,OAAQ,CAAE,MAAO,WAAY,MAAO,iBAAkB,EACtD,SAAU,aACV,QAAS,OACT,OAAQ,WACV,CACF,CACF,EACA,YAAa,CACX,UAAW,UACb,CACF,CACF,CACF,CACF,CACF,CACF","names":["Type","customAlphabet","generateId","customAlphabet","brickAbsolutePositionSchema","Type","brickTypeSchema","StringEnum","defaultProps","brickSchema","makeFullBrickSchemaForLLM","type","props","toLLMSchema","sectionProps","colorPresetRef","backgroundRef","directionRef","cssLengthRef","enumProp","justifyContentRef","alignItemsRef","sectionSchema","sectionSchemaNoBricks","getSectionSchemaNoBrickForLLM","getSectionSchemaForLLM","sectionDefaultprops","getSchemaDefaults","sectionMobileDefaultprops","processSections","sections","siteAttributes","pageAttributes","processSection","section","mergeIgnoringArrays","processBrick","finalSections","brick","defProps","createEmptyBrick","ghost","sectionsExamples"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
2
|
|
|
3
3
|
import{Type as t}from"@sinclair/typebox";var o=t.Object({spreadsheetId:t.String(),spreadsheetUrl:t.Optional(t.String()),spreadsheetName:t.Optional(t.String()),externalUrl:t.Optional(t.String())});export{o as a};
|
|
4
|
+
//# sourceMappingURL=chunk-GPEMPZXK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/datarecords/external/google/sheets/types.ts"],"sourcesContent":["import { Type, type Static } from \"@sinclair/typebox\";\n\nexport const googleSheetsOptions = Type.Object({\n spreadsheetId: Type.String(),\n spreadsheetUrl: Type.Optional(Type.String()),\n spreadsheetName: Type.Optional(Type.String()),\n externalUrl: Type.Optional(Type.String()),\n});\n\nexport type GoogleSheetsOptions = Static<typeof googleSheetsOptions>;\n"],"mappings":";;AAAA,OAAS,QAAAA,MAAyB,oBAE3B,IAAMC,EAAsBD,EAAK,OAAO,CAC7C,cAAeA,EAAK,OAAO,EAC3B,eAAgBA,EAAK,SAASA,EAAK,OAAO,CAAC,EAC3C,gBAAiBA,EAAK,SAASA,EAAK,OAAO,CAAC,EAC5C,YAAaA,EAAK,SAASA,EAAK,OAAO,CAAC,CAC1C,CAAC","names":["Type","googleSheetsOptions"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/bricks/props/number.ts"],"sourcesContent":["import { Type, type NumberOptions } from \"@sinclair/typebox\";\nimport type { FieldMetadata } from \"./types\";\n\ntype NumberFieldOptions = NumberOptions & FieldMetadata;\n\nexport function number(title: string, options: NumberFieldOptions = {}) {\n return Type.Number({ title, ...options });\n}\n"],"mappings":";;AAAA,OAAS,QAAAA,MAAgC,oBAKlC,SAASC,EAAOC,EAAeC,EAA8B,CAAC,EAAG,CACtE,OAAOH,EAAK,OAAO,CAAE,MAAAE,EAAO,GAAGC,CAAQ,CAAC,CAC1C","names":["Type","number","title","options"]}
|