@upstart.gg/sdk 0.0.133 → 0.0.135
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/shared/ai/schemas.d.ts +1 -2
- package/dist/shared/ai/schemas.d.ts.map +1 -1
- package/dist/shared/ai/schemas.js +28 -1
- package/dist/shared/ai/schemas.js.map +1 -1
- package/dist/shared/ai/types.d.ts +15 -1
- package/dist/shared/ai/types.d.ts.map +1 -1
- package/dist/shared/ajv.js +6861 -1
- package/dist/shared/ajv.js.map +1 -1
- package/dist/shared/analytics/init.js +20 -1
- package/dist/shared/analytics/init.js.map +1 -1
- package/dist/shared/analytics/track.js +24 -1
- package/dist/shared/analytics/track.js.map +1 -1
- package/dist/shared/attributes.d.ts +97 -30
- package/dist/shared/attributes.d.ts.map +1 -1
- package/dist/shared/attributes.js +46 -1
- package/dist/shared/brick-manifest.d.ts +1 -1
- package/dist/shared/brick-manifest.js +26 -1
- package/dist/shared/bricks/manifests/accordion.manifest.d.ts +2 -2
- package/dist/shared/bricks/manifests/accordion.manifest.js +29 -1
- package/dist/shared/bricks/manifests/all-manifests.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/all-manifests.js +59 -1
- package/dist/shared/bricks/manifests/box.manifest.d.ts +2 -2
- package/dist/shared/bricks/manifests/box.manifest.js +28 -1
- package/dist/shared/bricks/manifests/button.manifest.d.ts +2 -2
- package/dist/shared/bricks/manifests/button.manifest.js +28 -1
- package/dist/shared/bricks/manifests/card.manifest.d.ts +3 -3
- package/dist/shared/bricks/manifests/card.manifest.js +28 -1
- package/dist/shared/bricks/manifests/carousel.manifest.d.ts +2 -2
- package/dist/shared/bricks/manifests/carousel.manifest.js +28 -1
- package/dist/shared/bricks/manifests/footer.manifest.d.ts +4 -4
- package/dist/shared/bricks/manifests/footer.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/footer.manifest.js +30 -1
- package/dist/shared/bricks/manifests/form.manifest.d.ts +3 -3
- package/dist/shared/bricks/manifests/form.manifest.js +29 -1
- package/dist/shared/bricks/manifests/hero.manifest.d.ts +2 -2
- package/dist/shared/bricks/manifests/hero.manifest.js +28 -1
- package/dist/shared/bricks/manifests/html.manifest.d.ts +2 -2
- package/dist/shared/bricks/manifests/html.manifest.js +28 -1
- package/dist/shared/bricks/manifests/icon.manifest.d.ts +2 -2
- package/dist/shared/bricks/manifests/icon.manifest.js +28 -1
- package/dist/shared/bricks/manifests/image.manifest.d.ts +2 -2
- package/dist/shared/bricks/manifests/image.manifest.js +28 -1
- package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts +2 -2
- package/dist/shared/bricks/manifests/images-gallery.manifest.js +28 -1
- package/dist/shared/bricks/manifests/map.manifest.d.ts +2 -2
- package/dist/shared/bricks/manifests/map.manifest.js +31 -1
- package/dist/shared/bricks/manifests/navbar.manifest.d.ts +4 -4
- package/dist/shared/bricks/manifests/navbar.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/navbar.manifest.js +31 -1
- package/dist/shared/bricks/manifests/sidebar.manifest.d.ts +2 -2
- package/dist/shared/bricks/manifests/sidebar.manifest.js +29 -1
- package/dist/shared/bricks/manifests/social-links.manifest.d.ts +2 -2
- package/dist/shared/bricks/manifests/social-links.manifest.js +28 -1
- package/dist/shared/bricks/manifests/spacer.manifest.d.ts +2 -2
- package/dist/shared/bricks/manifests/spacer.manifest.js +28 -1
- package/dist/shared/bricks/manifests/table.manifest.d.ts +91 -0
- package/dist/shared/bricks/manifests/table.manifest.d.ts.map +1 -0
- package/dist/shared/bricks/manifests/table.manifest.js +31 -0
- package/dist/shared/bricks/manifests/tabs.manifest.d.ts +90 -0
- package/dist/shared/bricks/manifests/tabs.manifest.d.ts.map +1 -0
- package/dist/shared/bricks/manifests/tabs.manifest.js +31 -0
- package/dist/shared/bricks/manifests/tabs.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/testimonials.manifest.d.ts +2 -2
- package/dist/shared/bricks/manifests/testimonials.manifest.js +28 -1
- package/dist/shared/bricks/manifests/text.manifest.d.ts +2 -2
- package/dist/shared/bricks/manifests/text.manifest.js +28 -1
- package/dist/shared/bricks/manifests/timeline.manifest.d.ts +101 -0
- package/dist/shared/bricks/manifests/timeline.manifest.d.ts.map +1 -0
- package/dist/shared/bricks/manifests/timeline.manifest.js +31 -0
- package/dist/shared/bricks/manifests/timeline.manifest.js.map +1 -0
- package/dist/shared/bricks/manifests/video.manifest.d.ts +2 -2
- package/dist/shared/bricks/manifests/video.manifest.js +28 -1
- package/dist/shared/bricks/props/align.d.ts +2 -2
- package/dist/shared/bricks/props/align.js +19 -1
- package/dist/shared/bricks/props/background.d.ts +4 -4
- package/dist/shared/bricks/props/background.js +15 -1
- package/dist/shared/bricks/props/boolean.js +7 -1
- package/dist/shared/bricks/props/border.js +16 -1
- package/dist/shared/bricks/props/color-preset.d.ts.map +1 -1
- package/dist/shared/bricks/props/color-preset.js +13 -1
- package/dist/shared/bricks/props/color.js +14 -1
- package/dist/shared/bricks/props/common.d.ts +2 -2
- package/dist/shared/bricks/props/common.js +13 -1
- package/dist/shared/bricks/props/css-length.js +14 -1
- package/dist/shared/bricks/props/datarecord.js +7 -1
- package/dist/shared/bricks/props/datasource.d.ts +1 -1
- package/dist/shared/bricks/props/datasource.js +86 -1
- package/dist/shared/bricks/props/datasource.js.map +1 -1
- package/dist/shared/bricks/props/date.js +9 -1
- package/dist/shared/bricks/props/direction.js +11 -1
- package/dist/shared/bricks/props/dynamic.d.ts.map +1 -1
- package/dist/shared/bricks/props/dynamic.js +30 -1
- package/dist/shared/bricks/props/effects.js +17 -1
- package/dist/shared/bricks/props/file.js +15 -1
- package/dist/shared/bricks/props/file.js.map +1 -1
- package/dist/shared/bricks/props/geolocation.js +44 -1
- package/dist/shared/bricks/props/geolocation.js.map +1 -1
- package/dist/shared/bricks/props/helpers.d.ts +1 -1
- package/dist/shared/bricks/props/helpers.js +18 -1
- package/dist/shared/bricks/props/image.js +11 -1
- package/dist/shared/bricks/props/number.js +7 -1
- package/dist/shared/bricks/props/position.js +7 -1
- package/dist/shared/bricks/props/string.js +18 -1
- package/dist/shared/bricks/props/tags.js +10 -1
- package/dist/shared/bricks/props/text.js +19 -1
- package/dist/shared/bricks.d.ts +56 -44
- package/dist/shared/bricks.d.ts.map +1 -1
- package/dist/shared/bricks.js +79 -1
- package/dist/shared/chunk-2BPYOTKA.js +21 -0
- package/dist/shared/{chunk-WHTPGWUV.js.map → chunk-2BPYOTKA.js.map} +1 -1
- package/dist/shared/chunk-2HO4FHLM.js +456 -0
- package/dist/shared/{chunk-I3VL6SRH.js.map → chunk-2HO4FHLM.js.map} +1 -1
- package/dist/shared/chunk-2RK3CPYJ.js +74 -0
- package/dist/shared/{chunk-W33JMRRN.js.map → chunk-2RK3CPYJ.js.map} +1 -1
- package/dist/shared/chunk-3KLRW4I2.js +560 -0
- package/dist/shared/{chunk-B3EATRFX.js.map → chunk-3KLRW4I2.js.map} +1 -1
- package/dist/shared/chunk-3ZDN5BWN.js +18 -0
- package/dist/shared/{chunk-OIY3EPHO.js.map → chunk-3ZDN5BWN.js.map} +1 -1
- package/dist/shared/chunk-4WI23M7W.js +30 -0
- package/dist/shared/chunk-4WI23M7W.js.map +1 -0
- package/dist/shared/chunk-55C6MTX2.js +21 -0
- package/dist/shared/{chunk-KBHDY425.js.map → chunk-55C6MTX2.js.map} +1 -1
- package/dist/shared/chunk-6E42XWFH.js +103 -0
- package/dist/shared/{chunk-ZA3GAB4H.js.map → chunk-6E42XWFH.js.map} +1 -1
- package/dist/shared/chunk-6TVVKUWM.js +15 -0
- package/dist/shared/{chunk-4WDWJA3N.js.map → chunk-6TVVKUWM.js.map} +1 -1
- package/dist/shared/chunk-6WIMWLCJ.js +17 -0
- package/dist/shared/{chunk-KYY3PHP7.js.map → chunk-6WIMWLCJ.js.map} +1 -1
- package/dist/shared/chunk-7LAWWRU7.js +21 -0
- package/dist/shared/{chunk-IUXCWWGO.js.map → chunk-7LAWWRU7.js.map} +1 -1
- package/dist/shared/chunk-A2QPY54H.js +13 -0
- package/dist/shared/{chunk-KFM6KXSE.js.map → chunk-A2QPY54H.js.map} +1 -1
- package/dist/shared/chunk-BHC2A43S.js +67 -0
- package/dist/shared/{chunk-3YVJ2ELD.js.map → chunk-BHC2A43S.js.map} +1 -1
- package/dist/shared/chunk-BMWRR4DI.js +572 -0
- package/dist/shared/chunk-BMWRR4DI.js.map +1 -0
- package/dist/shared/chunk-BPBKHEQ5.js +39 -0
- package/dist/shared/{chunk-OHNYCXPX.js.map → chunk-BPBKHEQ5.js.map} +1 -1
- package/dist/shared/chunk-BW6EFRSF.js +794 -0
- package/dist/shared/chunk-BW6EFRSF.js.map +1 -0
- package/dist/shared/chunk-CKFRSHR2.js +105 -0
- package/dist/shared/{chunk-CFF6Q7O7.js.map → chunk-CKFRSHR2.js.map} +1 -1
- package/dist/shared/chunk-CSF2WQX2.js +60 -0
- package/dist/shared/{chunk-GLS7HPIZ.js.map → chunk-CSF2WQX2.js.map} +1 -1
- package/dist/shared/chunk-D4YQ6ABM.js +338 -0
- package/dist/shared/{chunk-PXI7AHWS.js.map → chunk-D4YQ6ABM.js.map} +1 -1
- package/dist/shared/chunk-DRTGM2UJ.js +129 -0
- package/dist/shared/{chunk-FLOMNC6J.js.map → chunk-DRTGM2UJ.js.map} +1 -1
- package/dist/shared/chunk-EQMU6NIU.js +1222 -0
- package/dist/shared/chunk-EQMU6NIU.js.map +1 -0
- package/dist/shared/chunk-EWSPTRDL.js +378 -0
- package/dist/shared/{chunk-QX6OGRRT.js.map → chunk-EWSPTRDL.js.map} +1 -1
- package/dist/shared/chunk-F22LDHEO.js +105 -0
- package/dist/shared/{chunk-5YRC3IT3.js.map → chunk-F22LDHEO.js.map} +1 -1
- package/dist/shared/chunk-FVU5PXRC.js +244 -0
- package/dist/shared/chunk-FVU5PXRC.js.map +1 -0
- package/dist/shared/chunk-GCQURRVB.js +837 -0
- package/dist/shared/{chunk-WYVJE6J5.js.map → chunk-GCQURRVB.js.map} +1 -1
- package/dist/shared/chunk-GPCI2N2A.js +395 -0
- package/dist/shared/{chunk-WBZW5LVH.js.map → chunk-GPCI2N2A.js.map} +1 -1
- package/dist/shared/chunk-GRMY35BU.js +722 -0
- package/dist/shared/{chunk-NJGXC7D6.js.map → chunk-GRMY35BU.js.map} +1 -1
- package/dist/shared/chunk-HPCCD6V5.js +17 -0
- package/dist/shared/{chunk-6I3ONVU6.js.map → chunk-HPCCD6V5.js.map} +1 -1
- package/dist/shared/chunk-JK2FWFJU.js +15 -0
- package/dist/shared/{chunk-JMN3HTZU.js.map → chunk-JK2FWFJU.js.map} +1 -1
- package/dist/shared/chunk-KNREHAPN.js +13 -0
- package/dist/shared/{chunk-KSEURRVZ.js.map → chunk-KNREHAPN.js.map} +1 -1
- package/dist/shared/chunk-KT7SSWMM.js +24 -0
- package/dist/shared/{chunk-KO5FPOWZ.js.map → chunk-KT7SSWMM.js.map} +1 -1
- package/dist/shared/chunk-LXAO3JA6.js +368 -0
- package/dist/shared/chunk-LXAO3JA6.js.map +1 -0
- package/dist/shared/chunk-MLZT7MRQ.js +538 -0
- package/dist/shared/chunk-MLZT7MRQ.js.map +1 -0
- package/dist/shared/chunk-NT3IW52F.js +260 -0
- package/dist/shared/chunk-NT3IW52F.js.map +1 -0
- package/dist/shared/chunk-NTLAKMMQ.js +94 -0
- package/dist/shared/{chunk-ZTZJHY4E.js.map → chunk-NTLAKMMQ.js.map} +1 -1
- package/dist/shared/chunk-O5PLB3YB.js +413 -0
- package/dist/shared/chunk-O5PLB3YB.js.map +1 -0
- package/dist/shared/chunk-O5PQISX4.js +51 -0
- package/dist/shared/{chunk-VEDQV5XO.js.map → chunk-O5PQISX4.js.map} +1 -1
- package/dist/shared/chunk-OJP4HMJT.js +22 -0
- package/dist/shared/{chunk-6HLU4UI2.js.map → chunk-OJP4HMJT.js.map} +1 -1
- package/dist/shared/chunk-OSJ6KGPX.js +16 -0
- package/dist/shared/{chunk-GPEMPZXK.js.map → chunk-OSJ6KGPX.js.map} +1 -1
- package/dist/shared/chunk-OXYXZHP2.js +48 -0
- package/dist/shared/{chunk-5O4Z3YQY.js.map → chunk-OXYXZHP2.js.map} +1 -1
- package/dist/shared/chunk-P3RH5URN.js +230 -0
- package/dist/shared/{chunk-R6ATC4TC.js.map → chunk-P3RH5URN.js.map} +1 -1
- package/dist/shared/chunk-Q4NPPLEU.js +34 -0
- package/dist/shared/{chunk-QWGUMKZC.js.map → chunk-Q4NPPLEU.js.map} +1 -1
- package/dist/shared/chunk-QL3T5HJQ.js +59 -0
- package/dist/shared/{chunk-E6XEI7IK.js.map → chunk-QL3T5HJQ.js.map} +1 -1
- package/dist/shared/chunk-QLQVDZIL.js +11 -0
- package/dist/shared/{chunk-KLD3P5XH.js.map → chunk-QLQVDZIL.js.map} +1 -1
- package/dist/shared/chunk-QQQ3FYPG.js +248 -0
- package/dist/shared/{chunk-SXHDQ64Z.js.map → chunk-QQQ3FYPG.js.map} +1 -1
- package/dist/shared/chunk-QSND5IWT.js +165 -0
- package/dist/shared/{chunk-ZQPXQCY2.js.map → chunk-QSND5IWT.js.map} +1 -1
- package/dist/shared/chunk-RV7AYVFV.js +75 -0
- package/dist/shared/{chunk-DHI3IBOD.js.map → chunk-RV7AYVFV.js.map} +1 -1
- package/dist/shared/chunk-SE6O65HC.js +44 -0
- package/dist/shared/{chunk-NM5MMPCF.js.map → chunk-SE6O65HC.js.map} +1 -1
- package/dist/shared/chunk-SHUGHJ7V.js +519 -0
- package/dist/shared/{chunk-IKC3FK7L.js.map → chunk-SHUGHJ7V.js.map} +1 -1
- package/dist/shared/chunk-TB3X4LRQ.js +56 -0
- package/dist/shared/{chunk-RJYZ5FAR.js.map → chunk-TB3X4LRQ.js.map} +1 -1
- package/dist/shared/chunk-TEO6TJOM.js +212 -0
- package/dist/shared/chunk-TEO6TJOM.js.map +1 -0
- package/dist/shared/chunk-TFGGYU6Y.js +394 -0
- package/dist/shared/{chunk-CZRCW5EN.js.map → chunk-TFGGYU6Y.js.map} +1 -1
- package/dist/shared/chunk-TKMWY2VN.js +18 -0
- package/dist/shared/{chunk-RDZK73KV.js.map → chunk-TKMWY2VN.js.map} +1 -1
- package/dist/shared/chunk-TNMNMYOB.js +69 -0
- package/dist/shared/{chunk-4BTB3MU2.js.map → chunk-TNMNMYOB.js.map} +1 -1
- package/dist/shared/chunk-U7TVEPKA.js +432 -0
- package/dist/shared/chunk-U7TVEPKA.js.map +1 -0
- package/dist/shared/chunk-UQF52PWK.js +70 -0
- package/dist/shared/{chunk-A3GF4PYW.js.map → chunk-UQF52PWK.js.map} +1 -1
- package/dist/shared/chunk-V3UA3LRK.js +253 -0
- package/dist/shared/{chunk-G5CJU6RD.js.map → chunk-V3UA3LRK.js.map} +1 -1
- package/dist/shared/chunk-W6MRYRGJ.js +100 -0
- package/dist/shared/{chunk-CCI4C3TM.js.map → chunk-W6MRYRGJ.js.map} +1 -1
- package/dist/shared/chunk-WGDUJSSS.js +462 -0
- package/dist/shared/chunk-WGDUJSSS.js.map +1 -0
- package/dist/shared/chunk-WKN566LN.js +29 -0
- package/dist/shared/{chunk-Q4H4QEMB.js.map → chunk-WKN566LN.js.map} +1 -1
- package/dist/shared/chunk-X6N463D4.js +222 -0
- package/dist/shared/{chunk-IKHZD2JH.js.map → chunk-X6N463D4.js.map} +1 -1
- package/dist/shared/chunk-X75YV73Q.js +178 -0
- package/dist/shared/{chunk-PLSV746R.js.map → chunk-X75YV73Q.js.map} +1 -1
- package/dist/shared/chunk-XCWMZVF5.js +89 -0
- package/dist/shared/{chunk-ZFCUSWMT.js.map → chunk-XCWMZVF5.js.map} +1 -1
- package/dist/shared/chunk-XCZVD5H6.js +13 -0
- package/dist/shared/{chunk-HAGKVQOW.js.map → chunk-XCZVD5H6.js.map} +1 -1
- package/dist/shared/chunk-XZ6WJZHN.js +10 -0
- package/dist/shared/{chunk-DCH4ZKWT.js.map → chunk-XZ6WJZHN.js.map} +1 -1
- package/dist/shared/chunk-Y74LZNND.js +30 -0
- package/dist/shared/{chunk-GACHLACT.js.map → chunk-Y74LZNND.js.map} +1 -1
- package/dist/shared/chunk-Z2NTDFB4.js +505 -0
- package/dist/shared/{chunk-SQ5T4AT5.js.map → chunk-Z2NTDFB4.js.map} +1 -1
- package/dist/shared/chunk-Z35I5JM5.js +131 -0
- package/dist/shared/{chunk-PSTFJ5IJ.js.map → chunk-Z35I5JM5.js.map} +1 -1
- package/dist/shared/chunk-ZEFOWKYP.js +44 -0
- package/dist/shared/{chunk-DQ7PRWTG.js.map → chunk-ZEFOWKYP.js.map} +1 -1
- package/dist/shared/chunk-ZGQ3AQBG.js +33 -0
- package/dist/shared/chunk-ZGQ3AQBG.js.map +1 -0
- package/dist/shared/chunk-ZLYIRH2B.js +68 -0
- package/dist/shared/{chunk-SWLUQVK7.js.map → chunk-ZLYIRH2B.js.map} +1 -1
- package/dist/shared/datarecords/external/airtable/handler.js +377 -1
- package/dist/shared/datarecords/external/airtable/handler.js.map +1 -1
- package/dist/shared/datarecords/external/airtable/oauth/config.js +15 -1
- package/dist/shared/datarecords/external/airtable/oauth/config.js.map +1 -1
- package/dist/shared/datarecords/external/airtable/types.js +11 -1
- package/dist/shared/datarecords/external/generic-webhook/handler.js +14 -1
- package/dist/shared/datarecords/external/generic-webhook/handler.js.map +1 -1
- package/dist/shared/datarecords/external/generic-webhook/options.js +16 -1
- package/dist/shared/datarecords/external/generic-webhook/options.js.map +1 -1
- package/dist/shared/datarecords/external/google/oauth/config.js +35 -1
- package/dist/shared/datarecords/external/google/oauth/config.js.map +1 -1
- package/dist/shared/datarecords/external/google/sheets/client.js +7 -1
- package/dist/shared/datarecords/external/google/sheets/handler.js +184 -5
- package/dist/shared/datarecords/external/google/sheets/handler.js.map +1 -1
- package/dist/shared/datarecords/external/google/sheets/types.js +7 -1
- package/dist/shared/datarecords/external/notion/handler.js +397 -1
- package/dist/shared/datarecords/external/notion/handler.js.map +1 -1
- package/dist/shared/datarecords/external/notion/oauth/config.js +11 -1
- package/dist/shared/datarecords/external/notion/oauth/config.js.map +1 -1
- package/dist/shared/datarecords/external/notion/types.js +7 -1
- package/dist/shared/datarecords/types.d.ts +3 -3
- package/dist/shared/datarecords/types.js +16 -1
- package/dist/shared/datarecords.js +9 -1
- package/dist/shared/datarecords.js.map +1 -1
- package/dist/shared/datasources/external/facebook/posts/fetcher.js +49 -1
- package/dist/shared/datasources/external/facebook/posts/fetcher.js.map +1 -1
- package/dist/shared/datasources/external/facebook/posts/schema.js +36 -1
- package/dist/shared/datasources/external/facebook/posts/schema.js.map +1 -1
- package/dist/shared/datasources/external/http-json/fetcher.js +29 -1
- package/dist/shared/datasources/external/http-json/fetcher.js.map +1 -1
- package/dist/shared/datasources/external/http-json/options.js +11 -1
- package/dist/shared/datasources/external/http-json/options.js.map +1 -1
- package/dist/shared/datasources/external/http-json/schema.js +10 -1
- package/dist/shared/datasources/external/http-json/schema.js.map +1 -1
- package/dist/shared/datasources/external/instagram/feed/fetcher.js +29 -1
- package/dist/shared/datasources/external/instagram/feed/fetcher.js.map +1 -1
- package/dist/shared/datasources/external/instagram/feed/schema.js +26 -1
- package/dist/shared/datasources/external/instagram/feed/schema.js.map +1 -1
- package/dist/shared/datasources/external/mastodon/account/fetcher.js +7 -1
- package/dist/shared/datasources/external/mastodon/account/schema.js +7 -1
- package/dist/shared/datasources/external/mastodon/options.js +10 -1
- package/dist/shared/datasources/external/mastodon/options.js.map +1 -1
- package/dist/shared/datasources/external/mastodon/status/fetcher.js +31 -1
- package/dist/shared/datasources/external/mastodon/status/fetcher.js.map +1 -1
- package/dist/shared/datasources/external/mastodon/status/sample.array.js +61 -1
- package/dist/shared/datasources/external/mastodon/status/sample.array.js.map +1 -1
- package/dist/shared/datasources/external/mastodon/status/sample.single.js +59 -1
- package/dist/shared/datasources/external/mastodon/status/sample.single.js.map +1 -1
- package/dist/shared/datasources/external/mastodon/status/schema.js +125 -1
- package/dist/shared/datasources/external/mastodon/status/schema.js.map +1 -1
- package/dist/shared/datasources/external/meta/oauth/config.js +17 -1
- package/dist/shared/datasources/external/meta/oauth/config.js.map +1 -1
- package/dist/shared/datasources/external/meta/options.js +10 -1
- package/dist/shared/datasources/external/meta/options.js.map +1 -1
- package/dist/shared/datasources/external/rss/fetcher.js +26 -1
- package/dist/shared/datasources/external/rss/fetcher.js.map +1 -1
- package/dist/shared/datasources/external/rss/options.js +10 -1
- package/dist/shared/datasources/external/rss/options.js.map +1 -1
- package/dist/shared/datasources/external/rss/schema.js +7 -1
- package/dist/shared/datasources/external/threads/media/fetcher.js +47 -1
- package/dist/shared/datasources/external/threads/media/fetcher.js.map +1 -1
- package/dist/shared/datasources/external/threads/media/schema.js +40 -1
- package/dist/shared/datasources/external/threads/media/schema.js.map +1 -1
- package/dist/shared/datasources/external/tiktok/oauth/config.js +18 -1
- package/dist/shared/datasources/external/tiktok/oauth/config.js.map +1 -1
- package/dist/shared/datasources/external/tiktok/video/fetcher.js +34 -1
- package/dist/shared/datasources/external/tiktok/video/fetcher.js.map +1 -1
- package/dist/shared/datasources/external/tiktok/video/options.js +11 -1
- package/dist/shared/datasources/external/tiktok/video/options.js.map +1 -1
- package/dist/shared/datasources/external/tiktok/video/schema.js +30 -1
- package/dist/shared/datasources/external/tiktok/video/schema.js.map +1 -1
- package/dist/shared/datasources/external/youtube/list/fetcher.js +32 -1
- package/dist/shared/datasources/external/youtube/list/fetcher.js.map +1 -1
- package/dist/shared/datasources/external/youtube/list/options.js +14 -1
- package/dist/shared/datasources/external/youtube/list/options.js.map +1 -1
- package/dist/shared/datasources/external/youtube/list/schema.js +7 -1
- package/dist/shared/datasources/external/youtube/oauth/config.js +18 -1
- package/dist/shared/datasources/external/youtube/oauth/config.js.map +1 -1
- package/dist/shared/datasources/internal/blog/schema.js +72 -1
- package/dist/shared/datasources/internal/blog/schema.js.map +1 -1
- package/dist/shared/datasources/internal/changelog/schema.js +51 -1
- package/dist/shared/datasources/internal/changelog/schema.js.map +1 -1
- package/dist/shared/datasources/internal/contact-info/schema.js +25 -1
- package/dist/shared/datasources/internal/contact-info/schema.js.map +1 -1
- package/dist/shared/datasources/internal/cv/schema.js +222 -1
- package/dist/shared/datasources/internal/cv/schema.js.map +1 -1
- package/dist/shared/datasources/internal/faq/schema.js +30 -1
- package/dist/shared/datasources/internal/faq/schema.js.map +1 -1
- package/dist/shared/datasources/internal/job-board/schema.js +224 -1
- package/dist/shared/datasources/internal/job-board/schema.js.map +1 -1
- package/dist/shared/datasources/internal/links/schema.js +7 -1
- package/dist/shared/datasources/internal/recipes/schema.js +45 -1
- package/dist/shared/datasources/internal/recipes/schema.js.map +1 -1
- package/dist/shared/datasources/internal/restaurant/schema.js +226 -1
- package/dist/shared/datasources/internal/restaurant/schema.js.map +1 -1
- package/dist/shared/datasources/samples.js +69 -1
- package/dist/shared/datasources/samples.js.map +1 -1
- package/dist/shared/datasources/schemas.js +34 -1
- package/dist/shared/datasources/schemas.js.map +1 -1
- package/dist/shared/datasources/types.d.ts +1 -1
- package/dist/shared/datasources/types.d.ts.map +1 -1
- package/dist/shared/datasources/types.js +32 -1
- package/dist/shared/datasources/utils.js +11 -1
- package/dist/shared/datasources.js +51 -1
- package/dist/shared/datasources.js.map +1 -1
- package/dist/shared/errors.js +7 -1
- package/dist/shared/images.d.ts +4 -4
- package/dist/shared/images.d.ts.map +1 -1
- package/dist/shared/images.js +44 -1
- package/dist/shared/images.js.map +1 -1
- package/dist/shared/index.js +9 -1
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/layout-constants.js +14 -1
- package/dist/shared/layout-constants.js.map +1 -1
- package/dist/shared/manifest.js +52 -1
- package/dist/shared/manifest.js.map +1 -1
- package/dist/shared/oauth.js +8 -1
- package/dist/shared/page.d.ts +12 -126
- package/dist/shared/page.d.ts.map +1 -1
- package/dist/shared/page.js +58 -1
- package/dist/shared/prompt.js +7 -1
- package/dist/shared/responsive.js +10 -1
- package/dist/shared/responsive.js.map +1 -1
- package/dist/shared/schema-registry.d.ts +5 -0
- package/dist/shared/schema-registry.d.ts.map +1 -0
- package/dist/shared/schema-registry.js +119 -0
- package/dist/shared/schema-registry.js.map +1 -0
- package/dist/shared/site.d.ts +36 -33
- package/dist/shared/site.d.ts.map +1 -1
- package/dist/shared/site.js +127 -1
- package/dist/shared/site.js.map +1 -1
- package/dist/shared/sitemap.d.ts +17 -17
- package/dist/shared/sitemap.d.ts.map +1 -1
- package/dist/shared/sitemap.js +69 -1
- package/dist/shared/social-icons.js +312 -1
- package/dist/shared/social-icons.js.map +1 -1
- package/dist/shared/tests/schema-registry.test.d.ts +2 -0
- package/dist/shared/tests/schema-registry.test.d.ts.map +1 -0
- package/dist/shared/theme.d.ts +1 -1
- package/dist/shared/theme.d.ts.map +1 -1
- package/dist/shared/theme.js +35 -1
- package/dist/shared/themes/color-system.d.ts +0 -1
- package/dist/shared/themes/color-system.d.ts.map +1 -1
- package/dist/shared/themes/color-system.js +103 -1
- package/dist/shared/themes/color-system.js.map +1 -1
- package/dist/shared/utils/canvas-data-uri.js +7 -1
- package/dist/shared/utils/canvas-data-uri.js.map +1 -1
- package/dist/shared/utils/invariant.js +7 -1
- package/dist/shared/utils/json-date.js +7 -1
- package/dist/shared/utils/llm.d.ts +2 -3
- package/dist/shared/utils/llm.d.ts.map +1 -1
- package/dist/shared/utils/llm.js +24 -1
- package/dist/shared/utils/merge.js +7 -1
- package/dist/shared/utils/object-hash.js +13 -1
- package/dist/shared/utils/object-hash.js.map +1 -1
- package/dist/shared/utils/schema-registry.d.ts +5 -0
- package/dist/shared/utils/schema-registry.d.ts.map +1 -0
- package/dist/shared/utils/schema-registry.js +29 -0
- package/dist/shared/utils/schema-registry.js.map +1 -0
- package/dist/shared/utils/schema.d.ts +2 -1
- package/dist/shared/utils/schema.d.ts.map +1 -1
- package/dist/shared/utils/schema.js +31 -1
- package/dist/shared/utils/string-enum.js +7 -1
- package/dist/shared/utils/tests/schema-registry.test.d.ts +2 -0
- package/dist/shared/utils/tests/schema-registry.test.d.ts.map +1 -0
- package/dist/shared/utils/try-catch.js +13 -1
- package/dist/shared/utils/try-catch.js.map +1 -1
- package/dist/shared/utils/typed-ref.js +7 -1
- package/package.json +12 -13
- package/src/shared/ai/schemas.ts +4 -8
- package/src/shared/ai/types.ts +9 -1
- package/src/shared/attributes.ts +27 -25
- package/src/shared/bricks/manifests/all-manifests.ts +15 -0
- package/src/shared/bricks/manifests/footer.manifest.ts +36 -27
- package/src/shared/bricks/manifests/navbar.manifest.ts +1 -3
- package/src/shared/bricks/manifests/table.manifest.ts +443 -0
- package/src/shared/bricks/manifests/tabs.manifest.ts +576 -0
- package/src/shared/bricks/manifests/timeline.manifest.ts +441 -0
- package/src/shared/bricks/props/color-preset.ts +3 -1
- package/src/shared/bricks/props/dynamic.ts +0 -1
- package/src/shared/bricks.ts +54 -45
- package/src/shared/datasources/types.ts +1 -5
- package/src/shared/images.ts +10 -8
- package/src/shared/page.ts +0 -4
- package/src/shared/schema-registry.ts +82 -0
- package/src/shared/sitemap.ts +12 -16
- package/src/shared/tests/schema-registry.test.ts +14 -0
- package/src/shared/theme.ts +1 -4
- package/src/shared/themes/color-system.ts +0 -1
- package/src/shared/utils/llm.ts +13 -12
- package/src/shared/utils/schema-registry.ts +82 -0
- package/src/shared/utils/schema.ts +18 -3
- package/src/shared/utils/tests/schema-registry.test.ts +13 -0
- package/src/shared/utils/tests/schema.test.ts +82 -55
- package/dist/shared/bricks/props/enum.d.ts +0 -13
- package/dist/shared/bricks/props/enum.d.ts.map +0 -1
- package/dist/shared/bricks/props/enum.js +0 -4
- package/dist/shared/chunk-3YVJ2ELD.js +0 -4
- package/dist/shared/chunk-4BTB3MU2.js +0 -4
- package/dist/shared/chunk-4WDWJA3N.js +0 -4
- package/dist/shared/chunk-5O4Z3YQY.js +0 -4
- package/dist/shared/chunk-5YRC3IT3.js +0 -4
- package/dist/shared/chunk-6HLU4UI2.js +0 -4
- package/dist/shared/chunk-6I3ONVU6.js +0 -4
- package/dist/shared/chunk-7A2JNQX3.js +0 -4
- package/dist/shared/chunk-7A2JNQX3.js.map +0 -1
- package/dist/shared/chunk-A3GF4PYW.js +0 -4
- package/dist/shared/chunk-A3K4NUVP.js +0 -4
- package/dist/shared/chunk-A3K4NUVP.js.map +0 -1
- package/dist/shared/chunk-AFVJZPLS.js +0 -4
- package/dist/shared/chunk-AFVJZPLS.js.map +0 -1
- package/dist/shared/chunk-AI4GHU7R.js +0 -4
- package/dist/shared/chunk-AI4GHU7R.js.map +0 -1
- package/dist/shared/chunk-B3EATRFX.js +0 -4
- package/dist/shared/chunk-CCI4C3TM.js +0 -4
- package/dist/shared/chunk-CFF6Q7O7.js +0 -7
- package/dist/shared/chunk-CZRCW5EN.js +0 -4
- package/dist/shared/chunk-DCH4ZKWT.js +0 -4
- package/dist/shared/chunk-DHI3IBOD.js +0 -4
- package/dist/shared/chunk-DQ7PRWTG.js +0 -4
- package/dist/shared/chunk-E6XEI7IK.js +0 -4
- package/dist/shared/chunk-FLOMNC6J.js +0 -4
- package/dist/shared/chunk-G5CJU6RD.js +0 -7
- package/dist/shared/chunk-GACHLACT.js +0 -4
- package/dist/shared/chunk-GLS7HPIZ.js +0 -4
- package/dist/shared/chunk-GOMXZC4B.js +0 -35
- package/dist/shared/chunk-GOMXZC4B.js.map +0 -1
- package/dist/shared/chunk-GPEMPZXK.js +0 -4
- package/dist/shared/chunk-HAGKVQOW.js +0 -4
- package/dist/shared/chunk-I3VL6SRH.js +0 -9
- package/dist/shared/chunk-IKC3FK7L.js +0 -4
- package/dist/shared/chunk-IKHZD2JH.js +0 -4
- package/dist/shared/chunk-IUXCWWGO.js +0 -4
- package/dist/shared/chunk-JMN3HTZU.js +0 -4
- package/dist/shared/chunk-KBHDY425.js +0 -4
- package/dist/shared/chunk-KFM6KXSE.js +0 -4
- package/dist/shared/chunk-KLD3P5XH.js +0 -4
- package/dist/shared/chunk-KO5FPOWZ.js +0 -4
- package/dist/shared/chunk-KSEURRVZ.js +0 -4
- package/dist/shared/chunk-KYY3PHP7.js +0 -4
- package/dist/shared/chunk-NJGXC7D6.js +0 -4
- package/dist/shared/chunk-NM5MMPCF.js +0 -4
- package/dist/shared/chunk-OGBMYMZD.js +0 -4
- package/dist/shared/chunk-OGBMYMZD.js.map +0 -1
- package/dist/shared/chunk-OHNYCXPX.js +0 -4
- package/dist/shared/chunk-OIY3EPHO.js +0 -4
- package/dist/shared/chunk-PIG623TZ.js +0 -4
- package/dist/shared/chunk-PIG623TZ.js.map +0 -1
- package/dist/shared/chunk-PLSV746R.js +0 -4
- package/dist/shared/chunk-PSCN3VVA.js +0 -4
- package/dist/shared/chunk-PSCN3VVA.js.map +0 -1
- package/dist/shared/chunk-PSTFJ5IJ.js +0 -4
- package/dist/shared/chunk-PXI7AHWS.js +0 -4
- package/dist/shared/chunk-Q4H4QEMB.js +0 -4
- package/dist/shared/chunk-QGYZ7CG5.js +0 -4
- package/dist/shared/chunk-QGYZ7CG5.js.map +0 -1
- package/dist/shared/chunk-QWGUMKZC.js +0 -4
- package/dist/shared/chunk-QX6OGRRT.js +0 -5
- package/dist/shared/chunk-R6ATC4TC.js +0 -4
- package/dist/shared/chunk-RDZK73KV.js +0 -4
- package/dist/shared/chunk-RJYZ5FAR.js +0 -4
- package/dist/shared/chunk-SQ5T4AT5.js +0 -6
- package/dist/shared/chunk-SWLUQVK7.js +0 -4
- package/dist/shared/chunk-SXHDQ64Z.js +0 -5
- package/dist/shared/chunk-SY6DZLTC.js +0 -4
- package/dist/shared/chunk-SY6DZLTC.js.map +0 -1
- package/dist/shared/chunk-VEDQV5XO.js +0 -4
- package/dist/shared/chunk-W33JMRRN.js +0 -4
- package/dist/shared/chunk-WBZW5LVH.js +0 -4
- package/dist/shared/chunk-WHTPGWUV.js +0 -4
- package/dist/shared/chunk-WYVJE6J5.js +0 -4
- package/dist/shared/chunk-ZA3GAB4H.js +0 -9
- package/dist/shared/chunk-ZFCUSWMT.js +0 -4
- package/dist/shared/chunk-ZQPXQCY2.js +0 -4
- package/dist/shared/chunk-ZTZJHY4E.js +0 -4
- package/src/shared/bricks/props/enum.ts +0 -38
- /package/dist/shared/bricks/{props/enum.js.map → manifests/table.manifest.js.map} +0 -0
|
@@ -0,0 +1,1222 @@
|
|
|
1
|
+
/*! Upstart.gg - Copyright (C) 2024 Flippable - https://github.com/upstart-gg/upstart/blob/main/LICENSE */
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
defaultProps
|
|
5
|
+
} from "./chunk-TEO6TJOM.js";
|
|
6
|
+
import {
|
|
7
|
+
mergeIgnoringArrays
|
|
8
|
+
} from "./chunk-3ZDN5BWN.js";
|
|
9
|
+
import {
|
|
10
|
+
getSchemaDefaults
|
|
11
|
+
} from "./chunk-NT3IW52F.js";
|
|
12
|
+
import {
|
|
13
|
+
toLLMSchema
|
|
14
|
+
} from "./chunk-BW6EFRSF.js";
|
|
15
|
+
import {
|
|
16
|
+
directionRef
|
|
17
|
+
} from "./chunk-Y74LZNND.js";
|
|
18
|
+
import {
|
|
19
|
+
colorPresetRef
|
|
20
|
+
} from "./chunk-TFGGYU6Y.js";
|
|
21
|
+
import {
|
|
22
|
+
cssLengthRef
|
|
23
|
+
} from "./chunk-BPBKHEQ5.js";
|
|
24
|
+
import {
|
|
25
|
+
alignItemsRef,
|
|
26
|
+
justifyContentRef
|
|
27
|
+
} from "./chunk-ZLYIRH2B.js";
|
|
28
|
+
import {
|
|
29
|
+
backgroundRef
|
|
30
|
+
} from "./chunk-RV7AYVFV.js";
|
|
31
|
+
import {
|
|
32
|
+
StringEnum
|
|
33
|
+
} from "./chunk-JK2FWFJU.js";
|
|
34
|
+
|
|
35
|
+
// src/shared/bricks.ts
|
|
36
|
+
import { Type } from "@sinclair/typebox";
|
|
37
|
+
import { customAlphabet } from "nanoid";
|
|
38
|
+
var generateId = customAlphabet("azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN", 7);
|
|
39
|
+
var brickAbsolutePositionSchema = Type.Object({
|
|
40
|
+
left: Type.Optional(
|
|
41
|
+
Type.String({
|
|
42
|
+
title: "top",
|
|
43
|
+
description: "The left position in css unit."
|
|
44
|
+
})
|
|
45
|
+
),
|
|
46
|
+
top: Type.Optional(
|
|
47
|
+
Type.String({
|
|
48
|
+
title: "top",
|
|
49
|
+
description: "The top position in css unit."
|
|
50
|
+
})
|
|
51
|
+
),
|
|
52
|
+
right: Type.Optional(
|
|
53
|
+
Type.String({
|
|
54
|
+
title: "right",
|
|
55
|
+
description: "The right position in css unit."
|
|
56
|
+
})
|
|
57
|
+
),
|
|
58
|
+
bottom: Type.Optional(
|
|
59
|
+
Type.String({
|
|
60
|
+
title: "bottom",
|
|
61
|
+
description: "The bottom position in css unit."
|
|
62
|
+
})
|
|
63
|
+
),
|
|
64
|
+
inset: Type.Optional(
|
|
65
|
+
Type.String({
|
|
66
|
+
title: "inset",
|
|
67
|
+
description: "The inset position in css unit."
|
|
68
|
+
})
|
|
69
|
+
),
|
|
70
|
+
translateX: Type.Optional(
|
|
71
|
+
Type.String({
|
|
72
|
+
title: "translateX",
|
|
73
|
+
description: "The translateX position in css unit."
|
|
74
|
+
})
|
|
75
|
+
),
|
|
76
|
+
translateY: Type.Optional(
|
|
77
|
+
Type.String({
|
|
78
|
+
title: "translateY",
|
|
79
|
+
description: "The translateY position in css unit."
|
|
80
|
+
})
|
|
81
|
+
),
|
|
82
|
+
rotate: Type.Optional(
|
|
83
|
+
Type.String({
|
|
84
|
+
title: "rotate",
|
|
85
|
+
description: "The rotate position in css unit."
|
|
86
|
+
})
|
|
87
|
+
)
|
|
88
|
+
});
|
|
89
|
+
var brickTypeSchema = StringEnum(Object.keys(defaultProps), {
|
|
90
|
+
title: "Brick type"
|
|
91
|
+
});
|
|
92
|
+
var brickSchema = Type.Object(
|
|
93
|
+
{
|
|
94
|
+
id: Type.String({
|
|
95
|
+
title: "ID",
|
|
96
|
+
description: "A unique identifier for the brick."
|
|
97
|
+
}),
|
|
98
|
+
type: brickTypeSchema,
|
|
99
|
+
label: Type.Optional(
|
|
100
|
+
Type.String({
|
|
101
|
+
title: "Label",
|
|
102
|
+
description: "A human-readable label for the brick. Used for organization and identification."
|
|
103
|
+
})
|
|
104
|
+
),
|
|
105
|
+
props: Type.Any({
|
|
106
|
+
title: "Props",
|
|
107
|
+
description: "The static props of the brick. The available props depends on the brick type."
|
|
108
|
+
}),
|
|
109
|
+
mobileProps: Type.Optional(
|
|
110
|
+
Type.Any({
|
|
111
|
+
title: "Props",
|
|
112
|
+
description: "The overriden props for mobile, merged with desktop props. Same type as props but partial."
|
|
113
|
+
})
|
|
114
|
+
)
|
|
115
|
+
},
|
|
116
|
+
{ additionalProperties: true }
|
|
117
|
+
);
|
|
118
|
+
function makeFullBrickSchemaForLLM(type, props) {
|
|
119
|
+
return toLLMSchema(
|
|
120
|
+
Type.Object(
|
|
121
|
+
{
|
|
122
|
+
id: Type.String({
|
|
123
|
+
title: "ID",
|
|
124
|
+
description: "A unique identifier for the brick."
|
|
125
|
+
}),
|
|
126
|
+
type: Type.Literal(type),
|
|
127
|
+
props,
|
|
128
|
+
mobileProps: Type.Optional(Type.Partial(props))
|
|
129
|
+
},
|
|
130
|
+
{ additionalProperties: false }
|
|
131
|
+
)
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
var sectionProps = Type.Object(
|
|
135
|
+
{
|
|
136
|
+
colorPreset: Type.Optional(
|
|
137
|
+
colorPresetRef({
|
|
138
|
+
title: "Color"
|
|
139
|
+
})
|
|
140
|
+
),
|
|
141
|
+
backgroundImage: Type.Optional(
|
|
142
|
+
backgroundRef({
|
|
143
|
+
title: "Background",
|
|
144
|
+
description: "The background image of the section. Prefer to set background images on sections rather than on individual bricks."
|
|
145
|
+
})
|
|
146
|
+
),
|
|
147
|
+
direction: directionRef({
|
|
148
|
+
default: "flex-row",
|
|
149
|
+
title: "Direction",
|
|
150
|
+
description: "The direction of the section. Only apply to desktop. On mobile, it is always vertical.",
|
|
151
|
+
"ui:responsive": "desktop"
|
|
152
|
+
}),
|
|
153
|
+
minHeight: Type.Optional(
|
|
154
|
+
cssLengthRef({
|
|
155
|
+
title: "Min height",
|
|
156
|
+
default: "fit-content",
|
|
157
|
+
description: "The min height of the section. default is 'fit-content'. You can also use the keyword 'full' to make it full viewport height. Lastly, you can use any valid CSS length unit.",
|
|
158
|
+
"ui:field": "hidden"
|
|
159
|
+
})
|
|
160
|
+
),
|
|
161
|
+
variant: Type.Optional(
|
|
162
|
+
StringEnum(["navbar", "footer", "sidebar"], {
|
|
163
|
+
title: "Custom section variant",
|
|
164
|
+
description: "Used for custom styling and layout.",
|
|
165
|
+
enumNames: ["Navbar", "Footer", "Sidebar"],
|
|
166
|
+
"ui:field": "hidden",
|
|
167
|
+
"ai:hidden": true
|
|
168
|
+
})
|
|
169
|
+
),
|
|
170
|
+
maxWidth: Type.Optional(
|
|
171
|
+
StringEnum(["max-w-screen-lg", "max-w-screen-xl", "max-w-screen-2xl", "max-w-full"], {
|
|
172
|
+
title: "Max width",
|
|
173
|
+
default: "max-w-full",
|
|
174
|
+
enumNames: ["M", "L", "XL", "Full"],
|
|
175
|
+
description: "The maximum width of the section. Desktop only",
|
|
176
|
+
"ai:instructions": "Choose the most appropriate max width for the section. The value 'max-w-full' is the most common and the default. Use the same value for all sections on the same page unless there is a good reason to do otherwise.",
|
|
177
|
+
displayAs: "button-group",
|
|
178
|
+
"ui:responsive": "desktop"
|
|
179
|
+
})
|
|
180
|
+
),
|
|
181
|
+
verticalMargin: Type.Optional(
|
|
182
|
+
cssLengthRef({
|
|
183
|
+
title: "Vertical Margin",
|
|
184
|
+
description: "The vertical margin of the section. By default, all sections touch each other with no space in between. If you want to add space between sections, set this value to e.g. '2rem' or '32px'. Adding a vertical margin will reveal the background color of the page.",
|
|
185
|
+
default: "0",
|
|
186
|
+
"ui:styleId": "styles:verticalMargin"
|
|
187
|
+
})
|
|
188
|
+
),
|
|
189
|
+
justifyContent: Type.Optional(
|
|
190
|
+
justifyContentRef({
|
|
191
|
+
default: "justify-center"
|
|
192
|
+
})
|
|
193
|
+
),
|
|
194
|
+
alignItems: Type.Optional(
|
|
195
|
+
alignItemsRef({
|
|
196
|
+
default: "items-center"
|
|
197
|
+
})
|
|
198
|
+
),
|
|
199
|
+
padding: Type.Optional(
|
|
200
|
+
cssLengthRef({
|
|
201
|
+
default: "2rem",
|
|
202
|
+
description: "Padding inside the section.",
|
|
203
|
+
title: "Padding",
|
|
204
|
+
"ui:responsive": true,
|
|
205
|
+
"ui:placeholder": "Not specified",
|
|
206
|
+
"ui:styleId": "styles:padding"
|
|
207
|
+
})
|
|
208
|
+
),
|
|
209
|
+
gap: Type.Optional(
|
|
210
|
+
cssLengthRef({
|
|
211
|
+
title: "Gap",
|
|
212
|
+
description: "The gap between the bricks in the section.",
|
|
213
|
+
default: "20px",
|
|
214
|
+
"ui:styleId": "styles:gap"
|
|
215
|
+
})
|
|
216
|
+
),
|
|
217
|
+
wrap: Type.Optional(
|
|
218
|
+
Type.Boolean({
|
|
219
|
+
title: "Wrap",
|
|
220
|
+
description: "Wrap bricks if they overflow the section.",
|
|
221
|
+
default: true,
|
|
222
|
+
"ui:styleId": "styles:wrap"
|
|
223
|
+
})
|
|
224
|
+
),
|
|
225
|
+
lastTouched: Type.Optional(
|
|
226
|
+
Type.Number({
|
|
227
|
+
description: "Do not use this field. It is used internally by the editor.",
|
|
228
|
+
"ui:field": "hidden",
|
|
229
|
+
"ai:hidden": true
|
|
230
|
+
})
|
|
231
|
+
)
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
additionalProperties: false
|
|
235
|
+
}
|
|
236
|
+
);
|
|
237
|
+
var sectionSchema = Type.Object(
|
|
238
|
+
{
|
|
239
|
+
id: Type.String({
|
|
240
|
+
description: "The unique ID of the section. Use a human readable url-safe slug",
|
|
241
|
+
examples: ["content-section", "contact-section"]
|
|
242
|
+
}),
|
|
243
|
+
label: Type.String({
|
|
244
|
+
description: "The label of the section. Shown only to the website owner, not public.",
|
|
245
|
+
examples: ["Content", "Contact"]
|
|
246
|
+
}),
|
|
247
|
+
order: Type.Number({
|
|
248
|
+
description: "Determines section order in the page (lower numbers appear first). 0-based"
|
|
249
|
+
}),
|
|
250
|
+
props: sectionProps,
|
|
251
|
+
mobileProps: Type.Optional(Type.Partial(sectionProps, { additionalProperties: false })),
|
|
252
|
+
bricks: Type.Array(brickSchema)
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
description: "Sections are direct children of the page that are stacked vertically."
|
|
256
|
+
}
|
|
257
|
+
);
|
|
258
|
+
var sectionSchemaLLM = toLLMSchema(sectionSchema);
|
|
259
|
+
var sectionSchemaNoBricks = Type.Omit(sectionSchema, ["bricks"]);
|
|
260
|
+
var sectionSchemaNoBricksLLM = toLLMSchema(sectionSchemaNoBricks);
|
|
261
|
+
var sectionDefaultprops = getSchemaDefaults(sectionSchema.properties.props, "desktop");
|
|
262
|
+
var sectionMobileDefaultprops = getSchemaDefaults(
|
|
263
|
+
sectionSchema.properties.mobileProps,
|
|
264
|
+
"mobile"
|
|
265
|
+
);
|
|
266
|
+
function processSections(sections, siteAttributes, pageAttributes) {
|
|
267
|
+
const processSection = (section) => {
|
|
268
|
+
return {
|
|
269
|
+
...section,
|
|
270
|
+
props: mergeIgnoringArrays({}, sectionDefaultprops, section.props),
|
|
271
|
+
mobileProps: mergeIgnoringArrays({}, sectionMobileDefaultprops, section.mobileProps || {}),
|
|
272
|
+
bricks: section.bricks.map(processBrick).filter(Boolean)
|
|
273
|
+
};
|
|
274
|
+
};
|
|
275
|
+
const finalSections = sections.map(processSection);
|
|
276
|
+
if (siteAttributes.navbar && !pageAttributes.noNavbar) {
|
|
277
|
+
finalSections.unshift(
|
|
278
|
+
processSection({
|
|
279
|
+
order: -1,
|
|
280
|
+
id: "navbar-section",
|
|
281
|
+
label: "Navbar",
|
|
282
|
+
props: {
|
|
283
|
+
variant: "navbar",
|
|
284
|
+
direction: "flex-row"
|
|
285
|
+
},
|
|
286
|
+
mobileProps: {},
|
|
287
|
+
bricks: [
|
|
288
|
+
{
|
|
289
|
+
id: "navbar",
|
|
290
|
+
type: "navbar",
|
|
291
|
+
props: siteAttributes.navbar
|
|
292
|
+
}
|
|
293
|
+
]
|
|
294
|
+
})
|
|
295
|
+
);
|
|
296
|
+
}
|
|
297
|
+
if (siteAttributes.footer && !pageAttributes.noFooter) {
|
|
298
|
+
finalSections.push(
|
|
299
|
+
processSection({
|
|
300
|
+
order: 1e3,
|
|
301
|
+
id: "footer-section",
|
|
302
|
+
label: "Footer",
|
|
303
|
+
props: {
|
|
304
|
+
variant: "footer",
|
|
305
|
+
direction: "flex-row"
|
|
306
|
+
},
|
|
307
|
+
mobileProps: {},
|
|
308
|
+
bricks: [
|
|
309
|
+
{
|
|
310
|
+
id: "footer",
|
|
311
|
+
type: "footer",
|
|
312
|
+
props: siteAttributes.footer
|
|
313
|
+
}
|
|
314
|
+
]
|
|
315
|
+
})
|
|
316
|
+
);
|
|
317
|
+
}
|
|
318
|
+
return finalSections;
|
|
319
|
+
}
|
|
320
|
+
function processBrick(brick) {
|
|
321
|
+
const defProps = defaultProps[brick.type];
|
|
322
|
+
const result = {
|
|
323
|
+
...brick,
|
|
324
|
+
props: mergeIgnoringArrays({}, defProps.props, {
|
|
325
|
+
...brick.props,
|
|
326
|
+
...brick.props.$children ? { $children: brick.props.$children.map(processBrick).filter(Boolean) } : {}
|
|
327
|
+
})
|
|
328
|
+
};
|
|
329
|
+
if (!result.props.width) {
|
|
330
|
+
result.props.grow = true;
|
|
331
|
+
}
|
|
332
|
+
return result;
|
|
333
|
+
}
|
|
334
|
+
function createEmptyBrick(type, ghost = false) {
|
|
335
|
+
const props = { ...defaultProps[type].props, ghost };
|
|
336
|
+
const newBrick = {
|
|
337
|
+
id: `b-${generateId()}`,
|
|
338
|
+
type,
|
|
339
|
+
props
|
|
340
|
+
};
|
|
341
|
+
return newBrick;
|
|
342
|
+
}
|
|
343
|
+
var sectionsExamples = [
|
|
344
|
+
{
|
|
345
|
+
label: "Hero section with centered 'hero' and 'button' bricks",
|
|
346
|
+
description: `A simple hero section with a title and a light primary background.
|
|
347
|
+
The "hero" brick does not have a colorPreset so it is transparent and inherits the background/text-color settings from the section.
|
|
348
|
+
Bricks are centered both vertically and horizontally using justifyContent and alignItems.
|
|
349
|
+
Bricks are stacked vertically using the "direction" set to "flex-col".
|
|
350
|
+
`,
|
|
351
|
+
example: {
|
|
352
|
+
id: "hero-section",
|
|
353
|
+
label: "Hero",
|
|
354
|
+
order: 0,
|
|
355
|
+
props: {
|
|
356
|
+
colorPreset: { color: "primary-100" },
|
|
357
|
+
direction: "flex-col",
|
|
358
|
+
padding: "6rem",
|
|
359
|
+
gap: "3rem",
|
|
360
|
+
justifyContent: "justify-center",
|
|
361
|
+
alignItems: "items-center"
|
|
362
|
+
},
|
|
363
|
+
bricks: [
|
|
364
|
+
{
|
|
365
|
+
id: "hero",
|
|
366
|
+
type: "hero",
|
|
367
|
+
label: "Main hero title",
|
|
368
|
+
props: {
|
|
369
|
+
content: "<h1 style='text-align:center'>Welcome to my SaaS</h1>",
|
|
370
|
+
tagline: "The future of productivity starts here"
|
|
371
|
+
}
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
id: "cta-button",
|
|
375
|
+
type: "button",
|
|
376
|
+
label: "Call to action button",
|
|
377
|
+
props: {
|
|
378
|
+
label: "Get Started",
|
|
379
|
+
href: "/signup",
|
|
380
|
+
colorPreset: { color: "primary-500", variant: "solid" }
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
]
|
|
384
|
+
}
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
label: "Contact section with a text and a form",
|
|
388
|
+
description: `A contact section with a title and a form.
|
|
389
|
+
The section has a light gray background using a colorPreset.
|
|
390
|
+
Bricks are stacked vertically using the "direction" set to "flex-col".
|
|
391
|
+
`,
|
|
392
|
+
example: {
|
|
393
|
+
id: "contact-section",
|
|
394
|
+
label: "Contact",
|
|
395
|
+
order: 1,
|
|
396
|
+
props: {
|
|
397
|
+
colorPreset: { color: "gray-100" },
|
|
398
|
+
direction: "flex-col",
|
|
399
|
+
padding: "4rem",
|
|
400
|
+
gap: "2rem",
|
|
401
|
+
justifyContent: "justify-center",
|
|
402
|
+
alignItems: "items-center"
|
|
403
|
+
},
|
|
404
|
+
bricks: [
|
|
405
|
+
{
|
|
406
|
+
id: "contact-title",
|
|
407
|
+
type: "text",
|
|
408
|
+
props: {
|
|
409
|
+
content: "<h2>Get in Touch</h2>"
|
|
410
|
+
}
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
id: "contact-form",
|
|
414
|
+
type: "form",
|
|
415
|
+
props: {
|
|
416
|
+
title: "Contact Us",
|
|
417
|
+
fields: [
|
|
418
|
+
{ name: "name", label: "Name", type: "text", required: true },
|
|
419
|
+
{ name: "email", label: "Email", type: "email", required: true },
|
|
420
|
+
{ name: "message", label: "Message", type: "textarea", required: true }
|
|
421
|
+
]
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
]
|
|
425
|
+
}
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
label: "Feature showcase with horizontal layout and container brick",
|
|
429
|
+
description: `A features section using horizontal layout with a container "box" brick that holds multiple feature items.
|
|
430
|
+
The box brick is the only container type that can hold $children (other bricks).
|
|
431
|
+
This demonstrates nested brick structure where the box contains multiple feature bricks.`,
|
|
432
|
+
example: {
|
|
433
|
+
id: "features-section",
|
|
434
|
+
label: "Features",
|
|
435
|
+
order: 2,
|
|
436
|
+
props: {
|
|
437
|
+
direction: "flex-col",
|
|
438
|
+
padding: "5rem",
|
|
439
|
+
gap: "3rem",
|
|
440
|
+
maxWidth: "max-w-screen-xl",
|
|
441
|
+
justifyContent: "justify-center",
|
|
442
|
+
alignItems: "items-center"
|
|
443
|
+
},
|
|
444
|
+
bricks: [
|
|
445
|
+
{
|
|
446
|
+
id: "features-title",
|
|
447
|
+
type: "text",
|
|
448
|
+
props: {
|
|
449
|
+
content: "<h2 style='text-align:center'>Our Features</h2>"
|
|
450
|
+
}
|
|
451
|
+
},
|
|
452
|
+
{
|
|
453
|
+
id: "features-container",
|
|
454
|
+
type: "box",
|
|
455
|
+
props: {
|
|
456
|
+
direction: "flex-row",
|
|
457
|
+
gap: "2rem",
|
|
458
|
+
padding: "2rem",
|
|
459
|
+
$children: [
|
|
460
|
+
{
|
|
461
|
+
id: "feature-1",
|
|
462
|
+
type: "text",
|
|
463
|
+
props: {
|
|
464
|
+
content: "<h3>Fast</h3><p>Lightning-fast performance for your needs.</p>",
|
|
465
|
+
colorPreset: { color: "blue-500" }
|
|
466
|
+
}
|
|
467
|
+
},
|
|
468
|
+
{
|
|
469
|
+
id: "feature-2",
|
|
470
|
+
type: "text",
|
|
471
|
+
props: {
|
|
472
|
+
content: "<h3>Secure</h3><p>Enterprise-grade security built-in.</p>",
|
|
473
|
+
colorPreset: { color: "green-500" }
|
|
474
|
+
}
|
|
475
|
+
},
|
|
476
|
+
{
|
|
477
|
+
id: "feature-3",
|
|
478
|
+
type: "text",
|
|
479
|
+
props: {
|
|
480
|
+
content: "<h3>Scalable</h3><p>Grows with your business seamlessly.</p>",
|
|
481
|
+
colorPreset: { color: "purple-500" }
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
]
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
]
|
|
488
|
+
}
|
|
489
|
+
},
|
|
490
|
+
{
|
|
491
|
+
label: "Media-rich section with image and text side by side",
|
|
492
|
+
description: `A content section using horizontal layout to place an image next to text content.
|
|
493
|
+
Demonstrates how direction "flex-row" arranges bricks horizontally.
|
|
494
|
+
The section uses responsive mobile overrides to stack vertically on mobile.`,
|
|
495
|
+
example: {
|
|
496
|
+
id: "about-section",
|
|
497
|
+
label: "About",
|
|
498
|
+
order: 3,
|
|
499
|
+
props: {
|
|
500
|
+
direction: "flex-row",
|
|
501
|
+
padding: "4rem",
|
|
502
|
+
gap: "3rem",
|
|
503
|
+
alignItems: "items-center",
|
|
504
|
+
maxWidth: "max-w-screen-xl"
|
|
505
|
+
},
|
|
506
|
+
mobileProps: {
|
|
507
|
+
direction: "flex-col",
|
|
508
|
+
padding: "2rem"
|
|
509
|
+
},
|
|
510
|
+
bricks: [
|
|
511
|
+
{
|
|
512
|
+
id: "about-image",
|
|
513
|
+
type: "image",
|
|
514
|
+
props: {
|
|
515
|
+
src: "https://example.com/about-image.jpg",
|
|
516
|
+
alt: "About our company",
|
|
517
|
+
width: "400px",
|
|
518
|
+
height: "300px"
|
|
519
|
+
}
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
id: "about-text",
|
|
523
|
+
type: "text",
|
|
524
|
+
props: {
|
|
525
|
+
content: "<h2>About Us</h2><p>We are a leading company in innovative solutions, dedicated to transforming how businesses operate in the digital age.</p>"
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
]
|
|
529
|
+
}
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
label: "Complex nested layout with multiple container levels",
|
|
533
|
+
description: `Advanced example showing deeply nested brick structure using multiple box containers.
|
|
534
|
+
Demonstrates how box bricks can contain other box bricks, creating sophisticated layouts.
|
|
535
|
+
Shows responsive design with different mobile arrangements.`,
|
|
536
|
+
example: {
|
|
537
|
+
id: "complex-layout-section",
|
|
538
|
+
label: "Complex layout",
|
|
539
|
+
order: 4,
|
|
540
|
+
props: {
|
|
541
|
+
direction: "flex-col",
|
|
542
|
+
padding: "4rem",
|
|
543
|
+
gap: "2rem",
|
|
544
|
+
backgroundImage: { image: "https://example.com/bg.jpg" }
|
|
545
|
+
},
|
|
546
|
+
bricks: [
|
|
547
|
+
{
|
|
548
|
+
id: "main-container",
|
|
549
|
+
type: "box",
|
|
550
|
+
props: {
|
|
551
|
+
direction: "flex-row",
|
|
552
|
+
gap: "2rem",
|
|
553
|
+
padding: "2rem",
|
|
554
|
+
$children: [
|
|
555
|
+
{
|
|
556
|
+
id: "left-column",
|
|
557
|
+
type: "box",
|
|
558
|
+
props: {
|
|
559
|
+
direction: "flex-col",
|
|
560
|
+
gap: "1rem",
|
|
561
|
+
colorPreset: { color: "gray-50" },
|
|
562
|
+
padding: "1.5rem",
|
|
563
|
+
$children: [
|
|
564
|
+
{
|
|
565
|
+
id: "left-title",
|
|
566
|
+
type: "text",
|
|
567
|
+
props: {
|
|
568
|
+
content: "<h3>Left Column</h3>"
|
|
569
|
+
}
|
|
570
|
+
},
|
|
571
|
+
{
|
|
572
|
+
id: "left-button",
|
|
573
|
+
type: "button",
|
|
574
|
+
props: {
|
|
575
|
+
label: "Learn More",
|
|
576
|
+
href: "/learn",
|
|
577
|
+
colorPreset: { color: "blue-500", variant: "outline" }
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
]
|
|
581
|
+
}
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
id: "right-column",
|
|
585
|
+
type: "box",
|
|
586
|
+
props: {
|
|
587
|
+
direction: "flex-col",
|
|
588
|
+
gap: "1rem",
|
|
589
|
+
colorPreset: { color: "blue-50" },
|
|
590
|
+
padding: "1.5rem",
|
|
591
|
+
$children: [
|
|
592
|
+
{
|
|
593
|
+
id: "right-image",
|
|
594
|
+
type: "image",
|
|
595
|
+
props: {
|
|
596
|
+
src: "https://example.com/feature.jpg",
|
|
597
|
+
alt: "Feature showcase",
|
|
598
|
+
width: "100%"
|
|
599
|
+
}
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
id: "right-text",
|
|
603
|
+
type: "text",
|
|
604
|
+
props: {
|
|
605
|
+
content: "<p>Detailed description of our amazing features and capabilities.</p>"
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
]
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
],
|
|
612
|
+
mobileProps: {
|
|
613
|
+
direction: "flex-col"
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
]
|
|
618
|
+
}
|
|
619
|
+
},
|
|
620
|
+
{
|
|
621
|
+
label: "Footer-style section with multiple columns",
|
|
622
|
+
description: `A footer-like section demonstrating horizontal layout with multiple informational columns.
|
|
623
|
+
Uses the footer variant for special styling and contains multiple text bricks arranged horizontally.
|
|
624
|
+
Shows how to create multi-column layouts using direction and gap properties.`,
|
|
625
|
+
example: {
|
|
626
|
+
id: "info-footer-section",
|
|
627
|
+
label: "Info footer",
|
|
628
|
+
order: 5,
|
|
629
|
+
props: {
|
|
630
|
+
variant: "footer",
|
|
631
|
+
direction: "flex-row",
|
|
632
|
+
padding: "3rem",
|
|
633
|
+
gap: "4rem",
|
|
634
|
+
colorPreset: { color: "gray-800" },
|
|
635
|
+
justifyContent: "justify-center"
|
|
636
|
+
},
|
|
637
|
+
mobileProps: {
|
|
638
|
+
direction: "flex-col",
|
|
639
|
+
gap: "2rem"
|
|
640
|
+
},
|
|
641
|
+
bricks: [
|
|
642
|
+
{
|
|
643
|
+
id: "company-info",
|
|
644
|
+
type: "text",
|
|
645
|
+
props: {
|
|
646
|
+
content: "<h4 style='color:white'>Company</h4><p style='color:gray'>About Us<br>Careers<br>Contact</p>"
|
|
647
|
+
}
|
|
648
|
+
},
|
|
649
|
+
{
|
|
650
|
+
id: "product-info",
|
|
651
|
+
type: "text",
|
|
652
|
+
props: {
|
|
653
|
+
content: "<h4 style='color:white'>Product</h4><p style='color:gray'>Features<br>Pricing<br>Documentation</p>"
|
|
654
|
+
}
|
|
655
|
+
},
|
|
656
|
+
{
|
|
657
|
+
id: "support-info",
|
|
658
|
+
type: "text",
|
|
659
|
+
props: {
|
|
660
|
+
content: "<h4 style='color:white'>Support</h4><p style='color:gray'>Help Center<br>Community<br>Status</p>"
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
]
|
|
664
|
+
}
|
|
665
|
+
},
|
|
666
|
+
{
|
|
667
|
+
label: "Video showcase section with title and description",
|
|
668
|
+
description: `A media section featuring a YouTube video with accompanying text.
|
|
669
|
+
Shows how to use video bricks for multimedia content.
|
|
670
|
+
The section uses a light background to make the video stand out.`,
|
|
671
|
+
example: {
|
|
672
|
+
id: "video-showcase-section",
|
|
673
|
+
label: "Video showcase",
|
|
674
|
+
order: 6,
|
|
675
|
+
props: {
|
|
676
|
+
direction: "flex-col",
|
|
677
|
+
padding: "4rem",
|
|
678
|
+
gap: "2rem",
|
|
679
|
+
colorPreset: { color: "gray-50" },
|
|
680
|
+
alignItems: "items-center",
|
|
681
|
+
maxWidth: "max-w-screen-lg"
|
|
682
|
+
},
|
|
683
|
+
bricks: [
|
|
684
|
+
{
|
|
685
|
+
id: "video-title",
|
|
686
|
+
type: "text",
|
|
687
|
+
props: {
|
|
688
|
+
content: "<h2 style='text-align:center'>Watch Our Demo</h2>"
|
|
689
|
+
}
|
|
690
|
+
},
|
|
691
|
+
{
|
|
692
|
+
id: "demo-video",
|
|
693
|
+
type: "video",
|
|
694
|
+
props: {
|
|
695
|
+
url: "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
|
|
696
|
+
title: "Product Demo Video"
|
|
697
|
+
}
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
id: "video-description",
|
|
701
|
+
type: "text",
|
|
702
|
+
props: {
|
|
703
|
+
content: "<p style='text-align:center'>See how our platform can transform your workflow in just 2 minutes.</p>"
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
]
|
|
707
|
+
}
|
|
708
|
+
},
|
|
709
|
+
{
|
|
710
|
+
label: "Image gallery section with carousel",
|
|
711
|
+
description: `A media-rich section showcasing an image carousel.
|
|
712
|
+
Demonstrates how to use carousel bricks for displaying multiple images.
|
|
713
|
+
Perfect for portfolios, product showcases, or photo galleries.`,
|
|
714
|
+
example: {
|
|
715
|
+
id: "gallery-section",
|
|
716
|
+
label: "Gallery",
|
|
717
|
+
order: 7,
|
|
718
|
+
props: {
|
|
719
|
+
direction: "flex-col",
|
|
720
|
+
padding: "4rem",
|
|
721
|
+
gap: "2rem",
|
|
722
|
+
alignItems: "items-center"
|
|
723
|
+
},
|
|
724
|
+
bricks: [
|
|
725
|
+
{
|
|
726
|
+
id: "gallery-title",
|
|
727
|
+
type: "text",
|
|
728
|
+
props: {
|
|
729
|
+
content: "<h2 style='text-align:center'>Our Portfolio</h2>"
|
|
730
|
+
}
|
|
731
|
+
},
|
|
732
|
+
{
|
|
733
|
+
id: "portfolio-carousel",
|
|
734
|
+
type: "carousel",
|
|
735
|
+
props: {
|
|
736
|
+
images: [
|
|
737
|
+
{ src: "https://example.com/project1.jpg", alt: "Project 1" },
|
|
738
|
+
{ src: "https://example.com/project2.jpg", alt: "Project 2" },
|
|
739
|
+
{ src: "https://example.com/project3.jpg", alt: "Project 3" }
|
|
740
|
+
],
|
|
741
|
+
autoplay: true,
|
|
742
|
+
showDots: true
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
]
|
|
746
|
+
}
|
|
747
|
+
},
|
|
748
|
+
{
|
|
749
|
+
label: "Interactive form section with styled inputs",
|
|
750
|
+
description: `A comprehensive form section for user registration or contact.
|
|
751
|
+
Shows how to create forms with various field types and validation.
|
|
752
|
+
Uses a card-like appearance with rounded corners and shadow.`,
|
|
753
|
+
example: {
|
|
754
|
+
id: "signup-form-section",
|
|
755
|
+
label: "Signup form",
|
|
756
|
+
order: 8,
|
|
757
|
+
props: {
|
|
758
|
+
direction: "flex-col",
|
|
759
|
+
padding: "4rem",
|
|
760
|
+
gap: "2rem",
|
|
761
|
+
colorPreset: { color: "blue-50" },
|
|
762
|
+
alignItems: "items-center"
|
|
763
|
+
},
|
|
764
|
+
bricks: [
|
|
765
|
+
{
|
|
766
|
+
id: "form-header",
|
|
767
|
+
type: "text",
|
|
768
|
+
props: {
|
|
769
|
+
content: "<h2 style='text-align:center'>Join Our Platform</h2><p style='text-align:center'>Create your account and start building today.</p>"
|
|
770
|
+
}
|
|
771
|
+
},
|
|
772
|
+
{
|
|
773
|
+
id: "registration-form",
|
|
774
|
+
type: "form",
|
|
775
|
+
props: {
|
|
776
|
+
title: "Sign Up",
|
|
777
|
+
submitLabel: "Create Account",
|
|
778
|
+
fields: [
|
|
779
|
+
{ name: "firstName", label: "First Name", type: "text", required: true },
|
|
780
|
+
{ name: "lastName", label: "Last Name", type: "text", required: true },
|
|
781
|
+
{ name: "email", label: "Email Address", type: "email", required: true },
|
|
782
|
+
{ name: "password", label: "Password", type: "password", required: true },
|
|
783
|
+
{ name: "company", label: "Company", type: "text", required: false },
|
|
784
|
+
{ name: "newsletter", label: "Subscribe to newsletter", type: "checkbox", required: false }
|
|
785
|
+
],
|
|
786
|
+
colorPreset: { color: "white" },
|
|
787
|
+
shadow: "shadow-lg",
|
|
788
|
+
rounding: "rounded-lg",
|
|
789
|
+
padding: "2rem"
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
]
|
|
793
|
+
}
|
|
794
|
+
},
|
|
795
|
+
{
|
|
796
|
+
label: "Testimonials section with customer feedback",
|
|
797
|
+
description: `A social proof section using the testimonials brick to display customer feedback.
|
|
798
|
+
Shows how to structure testimonials with avatars, company information, and social icons.
|
|
799
|
+
Perfect for building trust and credibility with potential customers.`,
|
|
800
|
+
example: {
|
|
801
|
+
id: "testimonials-section",
|
|
802
|
+
label: "Testimonials",
|
|
803
|
+
order: 9,
|
|
804
|
+
props: {
|
|
805
|
+
direction: "flex-col",
|
|
806
|
+
padding: "5rem",
|
|
807
|
+
gap: "3rem",
|
|
808
|
+
colorPreset: { color: "purple-50" },
|
|
809
|
+
alignItems: "items-center"
|
|
810
|
+
},
|
|
811
|
+
bricks: [
|
|
812
|
+
{
|
|
813
|
+
id: "testimonials-title",
|
|
814
|
+
type: "text",
|
|
815
|
+
props: {
|
|
816
|
+
content: "<h2 style='text-align:center'>What Our Customers Say</h2>"
|
|
817
|
+
}
|
|
818
|
+
},
|
|
819
|
+
{
|
|
820
|
+
id: "customer-testimonials",
|
|
821
|
+
type: "testimonials",
|
|
822
|
+
props: {
|
|
823
|
+
testimonials: [
|
|
824
|
+
{
|
|
825
|
+
text: "This platform has completely transformed how we handle our projects. The automation features and intuitive interface have saved us countless hours every week.",
|
|
826
|
+
author: "Sarah Johnson",
|
|
827
|
+
company: "TechCorp Solutions",
|
|
828
|
+
avatar: {
|
|
829
|
+
src: "https://via.placeholder.com/80x80.png?text=SJ",
|
|
830
|
+
alt: "Sarah Johnson profile photo"
|
|
831
|
+
},
|
|
832
|
+
socialIcon: "mdi:linkedin"
|
|
833
|
+
},
|
|
834
|
+
{
|
|
835
|
+
text: "Outstanding customer support and regular feature updates. We've been using this for over a year and it keeps getting better. Highly recommend!",
|
|
836
|
+
author: "Mike Chen",
|
|
837
|
+
company: "StartupFlow",
|
|
838
|
+
avatar: {
|
|
839
|
+
src: "https://via.placeholder.com/80x80.png?text=MC",
|
|
840
|
+
alt: "Mike Chen profile photo"
|
|
841
|
+
},
|
|
842
|
+
socialIcon: "mdi:twitter"
|
|
843
|
+
},
|
|
844
|
+
{
|
|
845
|
+
text: "The results speak for themselves - our productivity increased by 40% after implementing this solution. It's like having an extra team member.",
|
|
846
|
+
author: "Emily Rodriguez",
|
|
847
|
+
company: "Digital Agency Pro",
|
|
848
|
+
avatar: {
|
|
849
|
+
src: "https://via.placeholder.com/80x80.png?text=ER",
|
|
850
|
+
alt: "Emily Rodriguez profile photo"
|
|
851
|
+
},
|
|
852
|
+
socialIcon: "mdi:briefcase"
|
|
853
|
+
}
|
|
854
|
+
],
|
|
855
|
+
colorPreset: { color: "white" },
|
|
856
|
+
shadow: "shadow-lg",
|
|
857
|
+
padding: "2rem",
|
|
858
|
+
gap: "2rem"
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
]
|
|
862
|
+
}
|
|
863
|
+
},
|
|
864
|
+
{
|
|
865
|
+
label: "Location and contact information with map",
|
|
866
|
+
description: `A contact section featuring an interactive map alongside contact details.
|
|
867
|
+
Shows how to combine map bricks with text and contact information.
|
|
868
|
+
Perfect for businesses with physical locations.`,
|
|
869
|
+
example: {
|
|
870
|
+
id: "location-section",
|
|
871
|
+
label: "Location",
|
|
872
|
+
order: 10,
|
|
873
|
+
props: {
|
|
874
|
+
direction: "flex-row",
|
|
875
|
+
padding: "4rem",
|
|
876
|
+
gap: "3rem",
|
|
877
|
+
alignItems: "items-start"
|
|
878
|
+
},
|
|
879
|
+
mobileProps: {
|
|
880
|
+
direction: "flex-col"
|
|
881
|
+
},
|
|
882
|
+
bricks: [
|
|
883
|
+
{
|
|
884
|
+
id: "contact-details",
|
|
885
|
+
type: "box",
|
|
886
|
+
props: {
|
|
887
|
+
direction: "flex-col",
|
|
888
|
+
gap: "2rem",
|
|
889
|
+
padding: "2rem",
|
|
890
|
+
colorPreset: { color: "gray-50" },
|
|
891
|
+
rounding: "rounded-lg",
|
|
892
|
+
$children: [
|
|
893
|
+
{
|
|
894
|
+
id: "office-title",
|
|
895
|
+
type: "text",
|
|
896
|
+
props: {
|
|
897
|
+
content: "<h3>Visit Our Office</h3>"
|
|
898
|
+
}
|
|
899
|
+
},
|
|
900
|
+
{
|
|
901
|
+
id: "address",
|
|
902
|
+
type: "text",
|
|
903
|
+
props: {
|
|
904
|
+
content: "<p><strong>Address:</strong><br>123 Business Street<br>Suite 100<br>San Francisco, CA 94105</p>"
|
|
905
|
+
}
|
|
906
|
+
},
|
|
907
|
+
{
|
|
908
|
+
id: "contact-info",
|
|
909
|
+
type: "text",
|
|
910
|
+
props: {
|
|
911
|
+
content: "<p><strong>Phone:</strong> +1 (555) 123-4567<br><strong>Email:</strong> hello@company.com</p>"
|
|
912
|
+
}
|
|
913
|
+
},
|
|
914
|
+
{
|
|
915
|
+
id: "hours",
|
|
916
|
+
type: "text",
|
|
917
|
+
props: {
|
|
918
|
+
content: "<p><strong>Business Hours:</strong><br>Monday - Friday: 9:00 AM - 6:00 PM<br>Saturday: 10:00 AM - 4:00 PM</p>"
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
]
|
|
922
|
+
}
|
|
923
|
+
},
|
|
924
|
+
{
|
|
925
|
+
id: "office-map",
|
|
926
|
+
type: "map",
|
|
927
|
+
props: {
|
|
928
|
+
address: "123 Business Street, San Francisco, CA 94105",
|
|
929
|
+
zoom: 15,
|
|
930
|
+
height: "400px"
|
|
931
|
+
}
|
|
932
|
+
}
|
|
933
|
+
]
|
|
934
|
+
}
|
|
935
|
+
},
|
|
936
|
+
{
|
|
937
|
+
label: "Statistics showcase with icons and numbers",
|
|
938
|
+
description: `A metrics section displaying key statistics using icon and text bricks.
|
|
939
|
+
Demonstrates how to create compelling data visualizations.
|
|
940
|
+
Uses horizontal layout with consistent spacing and visual hierarchy.`,
|
|
941
|
+
example: {
|
|
942
|
+
id: "stats-section",
|
|
943
|
+
label: "Stats",
|
|
944
|
+
order: 11,
|
|
945
|
+
props: {
|
|
946
|
+
direction: "flex-col",
|
|
947
|
+
padding: "5rem",
|
|
948
|
+
gap: "3rem",
|
|
949
|
+
colorPreset: { color: "gradient", gradientDirection: "bg-gradient-to-r" },
|
|
950
|
+
alignItems: "items-center"
|
|
951
|
+
},
|
|
952
|
+
bricks: [
|
|
953
|
+
{
|
|
954
|
+
id: "stats-title",
|
|
955
|
+
type: "text",
|
|
956
|
+
props: {
|
|
957
|
+
content: "<h2 style='text-align:center; color:white'>Our Impact</h2>"
|
|
958
|
+
}
|
|
959
|
+
},
|
|
960
|
+
{
|
|
961
|
+
id: "stats-container",
|
|
962
|
+
type: "box",
|
|
963
|
+
props: {
|
|
964
|
+
direction: "flex-row",
|
|
965
|
+
gap: "4rem",
|
|
966
|
+
justifyContent: "justify-center",
|
|
967
|
+
$children: [
|
|
968
|
+
{
|
|
969
|
+
id: "users-stat",
|
|
970
|
+
type: "box",
|
|
971
|
+
props: {
|
|
972
|
+
direction: "flex-col",
|
|
973
|
+
gap: "1rem",
|
|
974
|
+
alignItems: "items-center",
|
|
975
|
+
$children: [
|
|
976
|
+
{
|
|
977
|
+
id: "users-icon",
|
|
978
|
+
type: "icon",
|
|
979
|
+
props: {
|
|
980
|
+
icon: "users",
|
|
981
|
+
size: "3rem",
|
|
982
|
+
color: "white"
|
|
983
|
+
}
|
|
984
|
+
},
|
|
985
|
+
{
|
|
986
|
+
id: "users-number",
|
|
987
|
+
type: "text",
|
|
988
|
+
props: {
|
|
989
|
+
content: "<h3 style='color:white; text-align:center'>50K+</h3><p style='color:white; text-align:center'>Active Users</p>"
|
|
990
|
+
}
|
|
991
|
+
}
|
|
992
|
+
]
|
|
993
|
+
}
|
|
994
|
+
},
|
|
995
|
+
{
|
|
996
|
+
id: "projects-stat",
|
|
997
|
+
type: "box",
|
|
998
|
+
props: {
|
|
999
|
+
direction: "flex-col",
|
|
1000
|
+
gap: "1rem",
|
|
1001
|
+
alignItems: "items-center",
|
|
1002
|
+
$children: [
|
|
1003
|
+
{
|
|
1004
|
+
id: "projects-icon",
|
|
1005
|
+
type: "icon",
|
|
1006
|
+
props: {
|
|
1007
|
+
icon: "briefcase",
|
|
1008
|
+
size: "3rem",
|
|
1009
|
+
color: "white"
|
|
1010
|
+
}
|
|
1011
|
+
},
|
|
1012
|
+
{
|
|
1013
|
+
id: "projects-number",
|
|
1014
|
+
type: "text",
|
|
1015
|
+
props: {
|
|
1016
|
+
content: "<h3 style='color:white; text-align:center'>100K+</h3><p style='color:white; text-align:center'>Projects Created</p>"
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1019
|
+
]
|
|
1020
|
+
}
|
|
1021
|
+
},
|
|
1022
|
+
{
|
|
1023
|
+
id: "satisfaction-stat",
|
|
1024
|
+
type: "box",
|
|
1025
|
+
props: {
|
|
1026
|
+
direction: "flex-col",
|
|
1027
|
+
gap: "1rem",
|
|
1028
|
+
alignItems: "items-center",
|
|
1029
|
+
$children: [
|
|
1030
|
+
{
|
|
1031
|
+
id: "satisfaction-icon",
|
|
1032
|
+
type: "icon",
|
|
1033
|
+
props: {
|
|
1034
|
+
icon: "star",
|
|
1035
|
+
size: "3rem",
|
|
1036
|
+
color: "white"
|
|
1037
|
+
}
|
|
1038
|
+
},
|
|
1039
|
+
{
|
|
1040
|
+
id: "satisfaction-number",
|
|
1041
|
+
type: "text",
|
|
1042
|
+
props: {
|
|
1043
|
+
content: "<h3 style='color:white; text-align:center'>98%</h3><p style='color:white; text-align:center'>Satisfaction Rate</p>"
|
|
1044
|
+
}
|
|
1045
|
+
}
|
|
1046
|
+
]
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
1049
|
+
],
|
|
1050
|
+
mobileProps: {
|
|
1051
|
+
direction: "flex-col",
|
|
1052
|
+
gap: "2rem"
|
|
1053
|
+
}
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
]
|
|
1057
|
+
}
|
|
1058
|
+
},
|
|
1059
|
+
{
|
|
1060
|
+
label: "Social links and newsletter signup",
|
|
1061
|
+
description: `A community engagement section combining social media links with newsletter signup.
|
|
1062
|
+
Shows how to use social-links bricks and forms together.
|
|
1063
|
+
Creates a cohesive call-to-action for community building.`,
|
|
1064
|
+
example: {
|
|
1065
|
+
id: "community-section",
|
|
1066
|
+
label: "Community",
|
|
1067
|
+
order: 12,
|
|
1068
|
+
props: {
|
|
1069
|
+
direction: "flex-col",
|
|
1070
|
+
padding: "4rem",
|
|
1071
|
+
gap: "3rem",
|
|
1072
|
+
colorPreset: { color: "indigo-100" },
|
|
1073
|
+
alignItems: "items-center",
|
|
1074
|
+
maxWidth: "max-w-full"
|
|
1075
|
+
},
|
|
1076
|
+
bricks: [
|
|
1077
|
+
{
|
|
1078
|
+
id: "community-title",
|
|
1079
|
+
type: "text",
|
|
1080
|
+
props: {
|
|
1081
|
+
content: "<h2 style='text-align:center'>Stay Connected</h2><p style='text-align:center'>Join our community and never miss an update.</p>"
|
|
1082
|
+
}
|
|
1083
|
+
},
|
|
1084
|
+
{
|
|
1085
|
+
id: "social-links",
|
|
1086
|
+
type: "social-links",
|
|
1087
|
+
props: {
|
|
1088
|
+
links: [
|
|
1089
|
+
{ platform: "twitter", url: "https://twitter.com/company" },
|
|
1090
|
+
{ platform: "linkedin", url: "https://linkedin.com/company/company" },
|
|
1091
|
+
{ platform: "github", url: "https://github.com/company" },
|
|
1092
|
+
{ platform: "youtube", url: "https://youtube.com/company" }
|
|
1093
|
+
],
|
|
1094
|
+
size: "large",
|
|
1095
|
+
style: "filled"
|
|
1096
|
+
}
|
|
1097
|
+
},
|
|
1098
|
+
{
|
|
1099
|
+
id: "newsletter-form",
|
|
1100
|
+
type: "form",
|
|
1101
|
+
props: {
|
|
1102
|
+
title: "Subscribe to Our Newsletter",
|
|
1103
|
+
subtitle: "Get weekly updates and exclusive content delivered to your inbox.",
|
|
1104
|
+
submitLabel: "Subscribe",
|
|
1105
|
+
fields: [
|
|
1106
|
+
{
|
|
1107
|
+
name: "email",
|
|
1108
|
+
label: "Email Address",
|
|
1109
|
+
type: "email",
|
|
1110
|
+
required: true,
|
|
1111
|
+
placeholder: "your@email.com"
|
|
1112
|
+
}
|
|
1113
|
+
],
|
|
1114
|
+
colorPreset: { color: "white" },
|
|
1115
|
+
rounding: "rounded-lg",
|
|
1116
|
+
padding: "2rem",
|
|
1117
|
+
shadow: "shadow-md"
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
1120
|
+
]
|
|
1121
|
+
}
|
|
1122
|
+
},
|
|
1123
|
+
{
|
|
1124
|
+
label: "Pricing table with multiple options",
|
|
1125
|
+
description: `A pricing section using card bricks to create a comparison table.
|
|
1126
|
+
Demonstrates how to structure pricing tiers with different features.
|
|
1127
|
+
Uses consistent styling with highlighted premium option.`,
|
|
1128
|
+
example: {
|
|
1129
|
+
id: "pricing-section",
|
|
1130
|
+
label: "Pricing",
|
|
1131
|
+
order: 13,
|
|
1132
|
+
props: {
|
|
1133
|
+
direction: "flex-col",
|
|
1134
|
+
padding: "5rem",
|
|
1135
|
+
gap: "3rem",
|
|
1136
|
+
alignItems: "items-center"
|
|
1137
|
+
},
|
|
1138
|
+
bricks: [
|
|
1139
|
+
{
|
|
1140
|
+
id: "pricing-header",
|
|
1141
|
+
type: "text",
|
|
1142
|
+
props: {
|
|
1143
|
+
content: "<h2 style='text-align:center'>Choose Your Plan</h2><p style='text-align:center'>Select the perfect plan for your needs.</p>"
|
|
1144
|
+
}
|
|
1145
|
+
},
|
|
1146
|
+
{
|
|
1147
|
+
id: "pricing-cards",
|
|
1148
|
+
type: "box",
|
|
1149
|
+
props: {
|
|
1150
|
+
direction: "flex-row",
|
|
1151
|
+
gap: "2rem",
|
|
1152
|
+
justifyContent: "justify-center",
|
|
1153
|
+
$children: [
|
|
1154
|
+
{
|
|
1155
|
+
id: "basic-plan",
|
|
1156
|
+
type: "card",
|
|
1157
|
+
props: {
|
|
1158
|
+
title: "Basic",
|
|
1159
|
+
subtitle: "$9/month",
|
|
1160
|
+
content: "\u2022 5 Projects<br>\u2022 10GB Storage<br>\u2022 Email Support<br>\u2022 Basic Templates",
|
|
1161
|
+
colorPreset: { color: "white" },
|
|
1162
|
+
border: { width: "border-2", color: "border-gray-200" },
|
|
1163
|
+
rounding: "rounded-lg",
|
|
1164
|
+
padding: "2rem",
|
|
1165
|
+
shadow: "shadow-md"
|
|
1166
|
+
}
|
|
1167
|
+
},
|
|
1168
|
+
{
|
|
1169
|
+
id: "pro-plan",
|
|
1170
|
+
type: "card",
|
|
1171
|
+
props: {
|
|
1172
|
+
title: "Pro",
|
|
1173
|
+
subtitle: "$29/month",
|
|
1174
|
+
content: "\u2022 Unlimited Projects<br>\u2022 100GB Storage<br>\u2022 Priority Support<br>\u2022 Premium Templates<br>\u2022 Advanced Analytics",
|
|
1175
|
+
colorPreset: { color: "blue-500" },
|
|
1176
|
+
rounding: "rounded-lg",
|
|
1177
|
+
padding: "2rem",
|
|
1178
|
+
shadow: "shadow-lg",
|
|
1179
|
+
border: { width: "border-2", color: "border-blue-400" }
|
|
1180
|
+
}
|
|
1181
|
+
},
|
|
1182
|
+
{
|
|
1183
|
+
id: "enterprise-plan",
|
|
1184
|
+
type: "card",
|
|
1185
|
+
props: {
|
|
1186
|
+
title: "Enterprise",
|
|
1187
|
+
subtitle: "Custom",
|
|
1188
|
+
content: "\u2022 Everything in Pro<br>\u2022 Unlimited Storage<br>\u2022 24/7 Phone Support<br>\u2022 Custom Integrations<br>\u2022 Dedicated Account Manager",
|
|
1189
|
+
colorPreset: { color: "white" },
|
|
1190
|
+
border: { width: "border-2", color: "border-gray-200" },
|
|
1191
|
+
rounding: "rounded-lg",
|
|
1192
|
+
padding: "2rem",
|
|
1193
|
+
shadow: "shadow-md"
|
|
1194
|
+
}
|
|
1195
|
+
}
|
|
1196
|
+
],
|
|
1197
|
+
mobileProps: {
|
|
1198
|
+
direction: "flex-col"
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
}
|
|
1202
|
+
]
|
|
1203
|
+
}
|
|
1204
|
+
}
|
|
1205
|
+
];
|
|
1206
|
+
|
|
1207
|
+
export {
|
|
1208
|
+
generateId,
|
|
1209
|
+
brickTypeSchema,
|
|
1210
|
+
brickSchema,
|
|
1211
|
+
makeFullBrickSchemaForLLM,
|
|
1212
|
+
sectionProps,
|
|
1213
|
+
sectionSchema,
|
|
1214
|
+
sectionSchemaLLM,
|
|
1215
|
+
sectionSchemaNoBricks,
|
|
1216
|
+
sectionSchemaNoBricksLLM,
|
|
1217
|
+
processSections,
|
|
1218
|
+
processBrick,
|
|
1219
|
+
createEmptyBrick,
|
|
1220
|
+
sectionsExamples
|
|
1221
|
+
};
|
|
1222
|
+
//# sourceMappingURL=chunk-EQMU6NIU.js.map
|