@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
package/src/shared/bricks.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { Type, type Static, type TObject } from "@sinclair/typebox";
|
|
|
2
2
|
import { customAlphabet } from "nanoid";
|
|
3
3
|
import { brickTypes, defaultProps } from "./bricks/manifests/all-manifests";
|
|
4
4
|
import { cssLengthRef } from "./bricks/props/css-length";
|
|
5
|
-
import { enumProp } from "./bricks/props/enum";
|
|
6
5
|
import { colorPresetRef } from "./bricks/props/color-preset";
|
|
7
6
|
import { mergeIgnoringArrays } from "./utils/merge";
|
|
8
7
|
import { getSchemaDefaults } from "./utils/schema";
|
|
@@ -83,6 +82,12 @@ export const brickSchema = Type.Object(
|
|
|
83
82
|
description: "A unique identifier for the brick.",
|
|
84
83
|
}),
|
|
85
84
|
type: brickTypeSchema,
|
|
85
|
+
label: Type.Optional(
|
|
86
|
+
Type.String({
|
|
87
|
+
title: "Label",
|
|
88
|
+
description: "A human-readable label for the brick. Used for organization and identification.",
|
|
89
|
+
}),
|
|
90
|
+
),
|
|
86
91
|
props: Type.Any({
|
|
87
92
|
title: "Props",
|
|
88
93
|
description: "The static props of the brick. The available props depends on the brick type.",
|
|
@@ -90,7 +95,8 @@ export const brickSchema = Type.Object(
|
|
|
90
95
|
mobileProps: Type.Optional(
|
|
91
96
|
Type.Any({
|
|
92
97
|
title: "Props",
|
|
93
|
-
description:
|
|
98
|
+
description:
|
|
99
|
+
"The overriden props for mobile, merged with desktop props. Same type as props but partial.",
|
|
94
100
|
}),
|
|
95
101
|
),
|
|
96
102
|
},
|
|
@@ -143,7 +149,8 @@ export const sectionProps = Type.Object(
|
|
|
143
149
|
cssLengthRef({
|
|
144
150
|
title: "Min height",
|
|
145
151
|
default: "fit-content",
|
|
146
|
-
description:
|
|
152
|
+
description:
|
|
153
|
+
"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.",
|
|
147
154
|
"ui:field": "hidden",
|
|
148
155
|
}),
|
|
149
156
|
),
|
|
@@ -157,36 +164,26 @@ export const sectionProps = Type.Object(
|
|
|
157
164
|
}),
|
|
158
165
|
),
|
|
159
166
|
maxWidth: Type.Optional(
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
title: "M",
|
|
165
|
-
description: "Common for text-heavy content/blog posts",
|
|
166
|
-
},
|
|
167
|
-
{
|
|
168
|
-
value: "max-w-screen-xl",
|
|
169
|
-
title: "L",
|
|
170
|
-
description: "Usefull or some landing pages",
|
|
171
|
-
},
|
|
172
|
-
{
|
|
173
|
-
value: "max-w-screen-2xl",
|
|
174
|
-
title: "XL",
|
|
175
|
-
description: "Common width",
|
|
176
|
-
},
|
|
177
|
-
{
|
|
178
|
-
value: "max-w-full",
|
|
179
|
-
title: "Full",
|
|
180
|
-
description: "Takes the entire space",
|
|
181
|
-
},
|
|
182
|
-
],
|
|
167
|
+
StringEnum(["max-w-screen-lg", "max-w-screen-xl", "max-w-screen-2xl", "max-w-full"], {
|
|
168
|
+
title: "Max width",
|
|
169
|
+
default: "max-w-full",
|
|
170
|
+
enumNames: ["M", "L", "XL", "Full"],
|
|
183
171
|
description: "The maximum width of the section. Desktop only",
|
|
184
172
|
"ai:instructions":
|
|
185
|
-
"Choose the most appropriate max width for the section.
|
|
173
|
+
"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.",
|
|
186
174
|
displayAs: "button-group",
|
|
187
175
|
"ui:responsive": "desktop",
|
|
188
176
|
}),
|
|
189
177
|
),
|
|
178
|
+
verticalMargin: Type.Optional(
|
|
179
|
+
cssLengthRef({
|
|
180
|
+
title: "Vertical Margin",
|
|
181
|
+
description:
|
|
182
|
+
"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.",
|
|
183
|
+
default: "0",
|
|
184
|
+
"ui:styleId": "styles:verticalMargin",
|
|
185
|
+
}),
|
|
186
|
+
),
|
|
190
187
|
justifyContent: Type.Optional(
|
|
191
188
|
justifyContentRef({
|
|
192
189
|
default: "justify-center",
|
|
@@ -242,12 +239,10 @@ export const sectionSchema = Type.Object(
|
|
|
242
239
|
description: "The unique ID of the section. Use a human readable url-safe slug",
|
|
243
240
|
examples: ["content-section", "contact-section"],
|
|
244
241
|
}),
|
|
245
|
-
label: Type.
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
}),
|
|
250
|
-
),
|
|
242
|
+
label: Type.String({
|
|
243
|
+
description: "The label of the section. Shown only to the website owner, not public.",
|
|
244
|
+
examples: ["Content", "Contact"],
|
|
245
|
+
}),
|
|
251
246
|
order: Type.Number({
|
|
252
247
|
description: "Determines section order in the page (lower numbers appear first). 0-based",
|
|
253
248
|
}),
|
|
@@ -260,15 +255,9 @@ export const sectionSchema = Type.Object(
|
|
|
260
255
|
},
|
|
261
256
|
);
|
|
262
257
|
|
|
258
|
+
export const sectionSchemaLLM = toLLMSchema(sectionSchema);
|
|
263
259
|
export const sectionSchemaNoBricks = Type.Omit(sectionSchema, ["bricks"]);
|
|
264
|
-
|
|
265
|
-
export function getSectionSchemaNoBrickForLLM() {
|
|
266
|
-
return toLLMSchema(sectionSchemaNoBricks);
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
export function getSectionSchemaForLLM() {
|
|
270
|
-
return toLLMSchema(sectionSchema);
|
|
271
|
-
}
|
|
260
|
+
export const sectionSchemaNoBricksLLM = toLLMSchema(sectionSchemaNoBricks);
|
|
272
261
|
|
|
273
262
|
const sectionDefaultprops = getSchemaDefaults(sectionSchema.properties.props, "desktop") as Section["props"];
|
|
274
263
|
const sectionMobileDefaultprops = getSchemaDefaults(
|
|
@@ -299,7 +288,7 @@ export function processSections(
|
|
|
299
288
|
processSection({
|
|
300
289
|
order: -1,
|
|
301
290
|
id: "navbar-section",
|
|
302
|
-
label: "Navbar
|
|
291
|
+
label: "Navbar",
|
|
303
292
|
props: {
|
|
304
293
|
variant: "navbar",
|
|
305
294
|
direction: "flex-row",
|
|
@@ -320,7 +309,7 @@ export function processSections(
|
|
|
320
309
|
processSection({
|
|
321
310
|
order: 1000,
|
|
322
311
|
id: "footer-section",
|
|
323
|
-
label: "Footer
|
|
312
|
+
label: "Footer",
|
|
324
313
|
props: {
|
|
325
314
|
variant: "footer",
|
|
326
315
|
direction: "flex-row",
|
|
@@ -358,6 +347,11 @@ export function processBrick<T extends Brick>(brick: T): T {
|
|
|
358
347
|
: {}),
|
|
359
348
|
}),
|
|
360
349
|
};
|
|
350
|
+
|
|
351
|
+
if (!result.props.width) {
|
|
352
|
+
result.props.grow = true;
|
|
353
|
+
}
|
|
354
|
+
|
|
361
355
|
return result;
|
|
362
356
|
}
|
|
363
357
|
|
|
@@ -381,6 +375,7 @@ Bricks are stacked vertically using the "direction" set to "flex-col".
|
|
|
381
375
|
`,
|
|
382
376
|
example: {
|
|
383
377
|
id: "hero-section",
|
|
378
|
+
label: "Hero",
|
|
384
379
|
order: 0,
|
|
385
380
|
props: {
|
|
386
381
|
colorPreset: { color: "primary-100" },
|
|
@@ -394,6 +389,7 @@ Bricks are stacked vertically using the "direction" set to "flex-col".
|
|
|
394
389
|
{
|
|
395
390
|
id: "hero",
|
|
396
391
|
type: "hero",
|
|
392
|
+
label: "Main hero title",
|
|
397
393
|
props: {
|
|
398
394
|
content: "<h1 style='text-align:center'>Welcome to my SaaS</h1>",
|
|
399
395
|
tagline: "The future of productivity starts here",
|
|
@@ -402,6 +398,7 @@ Bricks are stacked vertically using the "direction" set to "flex-col".
|
|
|
402
398
|
{
|
|
403
399
|
id: "cta-button",
|
|
404
400
|
type: "button",
|
|
401
|
+
label: "Call to action button",
|
|
405
402
|
props: {
|
|
406
403
|
label: "Get Started",
|
|
407
404
|
href: "/signup",
|
|
@@ -419,6 +416,7 @@ Bricks are stacked vertically using the "direction" set to "flex-col".
|
|
|
419
416
|
`,
|
|
420
417
|
example: {
|
|
421
418
|
id: "contact-section",
|
|
419
|
+
label: "Contact",
|
|
422
420
|
order: 1,
|
|
423
421
|
props: {
|
|
424
422
|
colorPreset: { color: "gray-100" },
|
|
@@ -458,6 +456,7 @@ The box brick is the only container type that can hold $children (other bricks).
|
|
|
458
456
|
This demonstrates nested brick structure where the box contains multiple feature bricks.`,
|
|
459
457
|
example: {
|
|
460
458
|
id: "features-section",
|
|
459
|
+
label: "Features",
|
|
461
460
|
order: 2,
|
|
462
461
|
props: {
|
|
463
462
|
direction: "flex-col",
|
|
@@ -520,6 +519,7 @@ Demonstrates how direction "flex-row" arranges bricks horizontally.
|
|
|
520
519
|
The section uses responsive mobile overrides to stack vertically on mobile.`,
|
|
521
520
|
example: {
|
|
522
521
|
id: "about-section",
|
|
522
|
+
label: "About",
|
|
523
523
|
order: 3,
|
|
524
524
|
props: {
|
|
525
525
|
direction: "flex-row",
|
|
@@ -561,6 +561,7 @@ Demonstrates how box bricks can contain other box bricks, creating sophisticated
|
|
|
561
561
|
Shows responsive design with different mobile arrangements.`,
|
|
562
562
|
example: {
|
|
563
563
|
id: "complex-layout-section",
|
|
564
|
+
label: "Complex layout",
|
|
564
565
|
order: 4,
|
|
565
566
|
props: {
|
|
566
567
|
direction: "flex-col",
|
|
@@ -649,6 +650,7 @@ Uses the footer variant for special styling and contains multiple text bricks ar
|
|
|
649
650
|
Shows how to create multi-column layouts using direction and gap properties.`,
|
|
650
651
|
example: {
|
|
651
652
|
id: "info-footer-section",
|
|
653
|
+
label: "Info footer",
|
|
652
654
|
order: 5,
|
|
653
655
|
props: {
|
|
654
656
|
variant: "footer",
|
|
@@ -697,6 +699,7 @@ Shows how to use video bricks for multimedia content.
|
|
|
697
699
|
The section uses a light background to make the video stand out.`,
|
|
698
700
|
example: {
|
|
699
701
|
id: "video-showcase-section",
|
|
702
|
+
label: "Video showcase",
|
|
700
703
|
order: 6,
|
|
701
704
|
props: {
|
|
702
705
|
direction: "flex-col",
|
|
@@ -740,6 +743,7 @@ Demonstrates how to use carousel bricks for displaying multiple images.
|
|
|
740
743
|
Perfect for portfolios, product showcases, or photo galleries.`,
|
|
741
744
|
example: {
|
|
742
745
|
id: "gallery-section",
|
|
746
|
+
label: "Gallery",
|
|
743
747
|
order: 7,
|
|
744
748
|
props: {
|
|
745
749
|
direction: "flex-col",
|
|
@@ -778,6 +782,7 @@ Shows how to create forms with various field types and validation.
|
|
|
778
782
|
Uses a card-like appearance with rounded corners and shadow.`,
|
|
779
783
|
example: {
|
|
780
784
|
id: "signup-form-section",
|
|
785
|
+
label: "Signup form",
|
|
781
786
|
order: 8,
|
|
782
787
|
props: {
|
|
783
788
|
direction: "flex-col",
|
|
@@ -785,7 +790,6 @@ Uses a card-like appearance with rounded corners and shadow.`,
|
|
|
785
790
|
gap: "2rem",
|
|
786
791
|
colorPreset: { color: "blue-50" },
|
|
787
792
|
alignItems: "items-center",
|
|
788
|
-
maxWidth: "max-w-screen-md",
|
|
789
793
|
},
|
|
790
794
|
bricks: [
|
|
791
795
|
{
|
|
@@ -826,6 +830,7 @@ Shows how to structure testimonials with avatars, company information, and socia
|
|
|
826
830
|
Perfect for building trust and credibility with potential customers.`,
|
|
827
831
|
example: {
|
|
828
832
|
id: "testimonials-section",
|
|
833
|
+
label: "Testimonials",
|
|
829
834
|
order: 9,
|
|
830
835
|
props: {
|
|
831
836
|
direction: "flex-col",
|
|
@@ -894,6 +899,7 @@ Shows how to combine map bricks with text and contact information.
|
|
|
894
899
|
Perfect for businesses with physical locations.`,
|
|
895
900
|
example: {
|
|
896
901
|
id: "location-section",
|
|
902
|
+
label: "Location",
|
|
897
903
|
order: 10,
|
|
898
904
|
props: {
|
|
899
905
|
direction: "flex-row",
|
|
@@ -968,6 +974,7 @@ Demonstrates how to create compelling data visualizations.
|
|
|
968
974
|
Uses horizontal layout with consistent spacing and visual hierarchy.`,
|
|
969
975
|
example: {
|
|
970
976
|
id: "stats-section",
|
|
977
|
+
label: "Stats",
|
|
971
978
|
order: 11,
|
|
972
979
|
props: {
|
|
973
980
|
direction: "flex-col",
|
|
@@ -1093,6 +1100,7 @@ Shows how to use social-links bricks and forms together.
|
|
|
1093
1100
|
Creates a cohesive call-to-action for community building.`,
|
|
1094
1101
|
example: {
|
|
1095
1102
|
id: "community-section",
|
|
1103
|
+
label: "Community",
|
|
1096
1104
|
order: 12,
|
|
1097
1105
|
props: {
|
|
1098
1106
|
direction: "flex-col",
|
|
@@ -1100,7 +1108,7 @@ Creates a cohesive call-to-action for community building.`,
|
|
|
1100
1108
|
gap: "3rem",
|
|
1101
1109
|
colorPreset: { color: "indigo-100" },
|
|
1102
1110
|
alignItems: "items-center",
|
|
1103
|
-
maxWidth: "max-w-
|
|
1111
|
+
maxWidth: "max-w-full",
|
|
1104
1112
|
},
|
|
1105
1113
|
bricks: [
|
|
1106
1114
|
{
|
|
@@ -1157,6 +1165,7 @@ Demonstrates how to structure pricing tiers with different features.
|
|
|
1157
1165
|
Uses consistent styling with highlighted premium option.`,
|
|
1158
1166
|
example: {
|
|
1159
1167
|
id: "pricing-section",
|
|
1168
|
+
label: "Pricing",
|
|
1160
1169
|
order: 13,
|
|
1161
1170
|
props: {
|
|
1162
1171
|
direction: "flex-col",
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Type, type Static } from "@sinclair/typebox";
|
|
2
|
-
import { httpJsonOptions } from "./external/http-json/options";
|
|
3
2
|
import { StringEnum } from "../utils/string-enum";
|
|
4
3
|
import { toLLMSchema } from "../utils/llm";
|
|
5
4
|
|
|
@@ -236,10 +235,7 @@ export type InternalDatasource = Static<typeof datasourceInternalManifest>;
|
|
|
236
235
|
// Fow now, let support only custom (internal) datasource
|
|
237
236
|
// export const datasourceManifest = datasourceCustomManifest;
|
|
238
237
|
export const datasourceManifest = datasourceInternalManifest;
|
|
239
|
-
|
|
240
|
-
export function getDatasourceManifestForLLM() {
|
|
241
|
-
return toLLMSchema(datasourceManifest);
|
|
242
|
-
}
|
|
238
|
+
export const datasourceManifestLLM = toLLMSchema(datasourceManifest);
|
|
243
239
|
|
|
244
240
|
export type Datasource = Static<typeof datasourceManifest>;
|
|
245
241
|
export const datasourcesList = Type.Array(datasourceManifest);
|
package/src/shared/images.ts
CHANGED
|
@@ -21,13 +21,15 @@ export const imageResultsSchema = Type.Array(
|
|
|
21
21
|
provider: Type.String({ description: "The image provider (e.g. unsplash, pexels)" }),
|
|
22
22
|
description: Type.String({ description: "A brief description of the image" }),
|
|
23
23
|
url: Type.String({ description: "The URL of the image" }),
|
|
24
|
-
blurHash: Type.String({ description: "The blur hash of the image" }),
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
blurHash: Type.Optional(Type.String({ description: "The blur hash of the image" })),
|
|
25
|
+
author: Type.Optional(
|
|
26
|
+
Type.Object(
|
|
27
|
+
{
|
|
28
|
+
name: Type.String({ description: "The name of the user who uploaded the image" }),
|
|
29
|
+
profile_url: Type.String({ description: "The profile URL of the user who uploaded the image" }),
|
|
30
|
+
},
|
|
31
|
+
{ additionalProperties: false },
|
|
32
|
+
),
|
|
31
33
|
),
|
|
32
34
|
},
|
|
33
35
|
{ additionalProperties: false },
|
|
@@ -40,5 +42,5 @@ export const imageResultsSchema = Type.Array(
|
|
|
40
42
|
export type ImageSearchResultsType = Static<typeof imageResultsSchema>;
|
|
41
43
|
export type SimpleImageMetadata = Pick<
|
|
42
44
|
ImageSearchResultsType[number],
|
|
43
|
-
"description" | "blurHash" | "
|
|
45
|
+
"description" | "blurHash" | "author" | "url" | "provider"
|
|
44
46
|
>;
|
package/src/shared/page.ts
CHANGED
|
@@ -18,10 +18,6 @@ export const pageSchema = Type.Object({
|
|
|
18
18
|
attributes: pageAttributesSchema,
|
|
19
19
|
});
|
|
20
20
|
|
|
21
|
-
export function getPageSchemaForLLM() {
|
|
22
|
-
return toLLMSchema(pageSchema);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
21
|
export type Page = Static<typeof pageSchema>;
|
|
26
22
|
export type VersionedPage = Page & { version: string };
|
|
27
23
|
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { TSchema } from "@sinclair/typebox";
|
|
2
|
+
import { alignItems, alignSelf, justifyContent } from "./bricks/props/align";
|
|
3
|
+
import { background, backgroundColor } from "./bricks/props/background";
|
|
4
|
+
import { border, rounding } from "./bricks/props/border";
|
|
5
|
+
import { borderColor, color } from "./bricks/props/color";
|
|
6
|
+
import { hidden } from "./bricks/props/common";
|
|
7
|
+
import { cssLength } from "./bricks/props/css-length";
|
|
8
|
+
import { shadow, textShadow } from "./bricks/props/effects";
|
|
9
|
+
import { fontSize, textContent } from "./bricks/props/text";
|
|
10
|
+
import { icon, urlOrPageId } from "./bricks/props/string";
|
|
11
|
+
import { colorPreset } from "./bricks/props/color-preset";
|
|
12
|
+
import { image } from "./bricks/props/image";
|
|
13
|
+
import { direction } from "./bricks/props/direction";
|
|
14
|
+
import { loop, queryUse } from "./bricks/props/dynamic";
|
|
15
|
+
import { tags } from "./bricks/props/tags";
|
|
16
|
+
|
|
17
|
+
export const schemaRegistry = new Map<string, TSchema>();
|
|
18
|
+
|
|
19
|
+
export function registerSchema(id: string, schema: TSchema) {
|
|
20
|
+
schemaRegistry.set(id, schema);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function unregisterSchema(id: string) {
|
|
24
|
+
schemaRegistry.delete(id);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
registerSchema("styles:background", background());
|
|
28
|
+
registerSchema("styles:backgroundColor", backgroundColor());
|
|
29
|
+
registerSchema("styles:justifyContent", justifyContent());
|
|
30
|
+
registerSchema("styles:alignItems", alignItems());
|
|
31
|
+
registerSchema("styles:alignSelf", alignSelf());
|
|
32
|
+
registerSchema("styles:rounding", rounding());
|
|
33
|
+
registerSchema("styles:fontSize", fontSize());
|
|
34
|
+
registerSchema("styles:hidden", hidden());
|
|
35
|
+
registerSchema("styles:direction", direction());
|
|
36
|
+
registerSchema("styles:border", border());
|
|
37
|
+
registerSchema("styles:color", color());
|
|
38
|
+
registerSchema("styles:borderColor", borderColor());
|
|
39
|
+
registerSchema("styles:shadow", shadow());
|
|
40
|
+
registerSchema("styles:textShadow", textShadow());
|
|
41
|
+
registerSchema("styles:cssLength", cssLength());
|
|
42
|
+
registerSchema("assets:image", image());
|
|
43
|
+
registerSchema("assets:icon", icon());
|
|
44
|
+
registerSchema("content:text", textContent());
|
|
45
|
+
registerSchema("content:urlOrPageId", urlOrPageId());
|
|
46
|
+
registerSchema("content:loop", loop());
|
|
47
|
+
registerSchema("content:queryUse", queryUse());
|
|
48
|
+
registerSchema("presets:color", colorPreset());
|
|
49
|
+
registerSchema("content:tags", tags());
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
*/
|
|
53
|
+
function consolidateRefs() {
|
|
54
|
+
// Helper to recursively resolve $refs in a schema
|
|
55
|
+
function resolveRefs(schema: TSchema, visited: Set<TSchema> = new Set()) {
|
|
56
|
+
if (!schema || typeof schema !== "object" || visited.has(schema)) return schema;
|
|
57
|
+
visited.add(schema);
|
|
58
|
+
if ("$ref" in schema && typeof (schema as any).$ref === "string") {
|
|
59
|
+
const refSchema = schemaRegistry.get((schema as any).$ref);
|
|
60
|
+
if (refSchema) {
|
|
61
|
+
// Recursively resolve refs in the referenced schema
|
|
62
|
+
return resolveRefs(refSchema, visited);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
for (const key of Object.keys(schema)) {
|
|
66
|
+
const value = (schema as any)[key];
|
|
67
|
+
if (Array.isArray(value)) {
|
|
68
|
+
(schema as any)[key] = value.map((item: TSchema) => resolveRefs(item, visited));
|
|
69
|
+
} else if (typeof value === "object" && value !== null) {
|
|
70
|
+
(schema as any)[key] = resolveRefs(value as TSchema, visited);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return schema;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Rewrite all schemas in the registry to resolve $refs
|
|
77
|
+
for (const [id, schema] of schemaRegistry.entries()) {
|
|
78
|
+
schemaRegistry.set(id, resolveRefs(schema));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
consolidateRefs();
|
package/src/shared/sitemap.ts
CHANGED
|
@@ -79,20 +79,16 @@ export const sitemapEntry = Type.Composite(
|
|
|
79
79
|
export const sitemapSchema = Type.Array(sitemapEntry);
|
|
80
80
|
export type Sitemap = Static<typeof sitemapSchema>;
|
|
81
81
|
|
|
82
|
-
export
|
|
83
|
-
|
|
84
|
-
Type.
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
);
|
|
94
|
-
}
|
|
82
|
+
export const sitemapSchemaLLM = toLLMSchema(
|
|
83
|
+
Type.Array(
|
|
84
|
+
Type.Composite([
|
|
85
|
+
sitemapEntry,
|
|
86
|
+
Type.Object({
|
|
87
|
+
// Sections plan helps agents to the structure and content of the page
|
|
88
|
+
sectionsPlan: sectionsPlanSchema,
|
|
89
|
+
}),
|
|
90
|
+
]),
|
|
91
|
+
),
|
|
92
|
+
);
|
|
95
93
|
|
|
96
|
-
export
|
|
97
|
-
return toLLMSchema(sitemapSchema);
|
|
98
|
-
}
|
|
94
|
+
export const sitemapSchemaNoPlansLLM = toLLMSchema(sitemapSchema);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Check taht schemaRegistry contains all schemas and that $refs are resolved
|
|
2
|
+
import { describe, it, expect } from "vitest";
|
|
3
|
+
import { schemaRegistry } from "../utils/schema-registry";
|
|
4
|
+
|
|
5
|
+
describe("Schema Registry", () => {
|
|
6
|
+
it("should contain all registered schemas", () => {
|
|
7
|
+
expect(schemaRegistry.has("styles:background")).toBe(true);
|
|
8
|
+
expect(schemaRegistry.has("styles:justifyContent")).toBe(true);
|
|
9
|
+
expect(schemaRegistry.has("assets:image")).toBe(true);
|
|
10
|
+
expect(schemaRegistry.has("content:text")).toBe(true);
|
|
11
|
+
|
|
12
|
+
console.log("Registered schemas:", Array.from(schemaRegistry));
|
|
13
|
+
});
|
|
14
|
+
});
|
package/src/shared/theme.ts
CHANGED
|
@@ -158,10 +158,7 @@ export const themeSchema = Type.Object(
|
|
|
158
158
|
|
|
159
159
|
export type Theme = Static<typeof themeSchema>;
|
|
160
160
|
export const themesArray = Type.Array(themeSchema);
|
|
161
|
-
|
|
162
|
-
export function getThemesArrayForLLM() {
|
|
163
|
-
return toLLMSchema(themesArray);
|
|
164
|
-
}
|
|
161
|
+
export const themesArrayLLM = toLLMSchema(themesArray);
|
|
165
162
|
|
|
166
163
|
export type ThemesArray = Static<typeof themesArray>;
|
|
167
164
|
export type FontType = Theme["typography"]["body"];
|
package/src/shared/utils/llm.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { TObject, TSchema } from "@sinclair/typebox";
|
|
2
2
|
import { createAJVInstance } from "../ajv";
|
|
3
3
|
import { cloneDeep } from "lodash-es";
|
|
4
|
-
import
|
|
4
|
+
import { schemaRegistry } from "./schema-registry";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Clean all properties from custom metadata recursively. Custom metadata are key that:
|
|
@@ -9,8 +9,8 @@ import type Ajv from "ajv";
|
|
|
9
9
|
* - Or starting with "ui:"
|
|
10
10
|
* Also removes properties that have "ai:hidden" set to true
|
|
11
11
|
*/
|
|
12
|
-
export function toLLMSchema<T extends TSchema = TObject>(schema: T
|
|
13
|
-
return cleanSchemaRecursive(inlineSchemaRefs(schema
|
|
12
|
+
export function toLLMSchema<T extends TSchema = TObject>(schema: T): T {
|
|
13
|
+
return cleanSchemaRecursive(inlineSchemaRefs(schema)) as T;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -107,7 +107,7 @@ interface SchemaWithDefs extends TSchema {
|
|
|
107
107
|
* @param ajv - The AJV instance containing the referenced schemas
|
|
108
108
|
* @returns A new schema with references inlined in $defs
|
|
109
109
|
*/
|
|
110
|
-
export function inlineSchemaRefs<T extends TSchema>(schema: T
|
|
110
|
+
export function inlineSchemaRefs<T extends TSchema>(schema: T) {
|
|
111
111
|
//
|
|
112
112
|
const inlinedSchema = cloneDeep(schema) as T & SchemaWithDefs;
|
|
113
113
|
// const inlinedSchema = JSON.parse(JSON.stringify(schema)) as T & SchemaWithDefs;
|
|
@@ -171,11 +171,12 @@ export function inlineSchemaRefs<T extends TSchema>(schema: T, ajv: Ajv) {
|
|
|
171
171
|
|
|
172
172
|
// Process each collected reference
|
|
173
173
|
for (const refId of collectedRefs) {
|
|
174
|
-
// Get the schema from
|
|
175
|
-
const referencedSchema =
|
|
174
|
+
// Get the schema from the registry
|
|
175
|
+
const referencedSchema = schemaRegistry.get(refId);
|
|
176
176
|
|
|
177
|
-
if (!referencedSchema
|
|
178
|
-
//
|
|
177
|
+
if (!referencedSchema) {
|
|
178
|
+
// console.error(`Schema with ID "${refId}" not found in schema registry`, { referencedSchema });
|
|
179
|
+
// throw new Error(`Schema with ID "${refId}" not found in schema registry`);
|
|
179
180
|
continue;
|
|
180
181
|
}
|
|
181
182
|
|
|
@@ -197,7 +198,7 @@ export function inlineSchemaRefs<T extends TSchema>(schema: T, ajv: Ajv) {
|
|
|
197
198
|
}
|
|
198
199
|
|
|
199
200
|
// Add to $defs
|
|
200
|
-
const { $id, ...schemaWithoutId } = referencedSchema
|
|
201
|
+
const { $id, ...schemaWithoutId } = referencedSchema;
|
|
201
202
|
inlinedSchema.$defs![uniqueDefKey] = schemaWithoutId;
|
|
202
203
|
|
|
203
204
|
// Map original reference to local reference
|
|
@@ -253,8 +254,8 @@ export function inlineSchemaRefs<T extends TSchema>(schema: T, ajv: Ajv) {
|
|
|
253
254
|
|
|
254
255
|
// Add all newly found references to $defs
|
|
255
256
|
for (const refId of newRefsFound) {
|
|
256
|
-
const referencedSchema =
|
|
257
|
-
if (referencedSchema
|
|
257
|
+
const referencedSchema = schemaRegistry.get(refId);
|
|
258
|
+
if (referencedSchema) {
|
|
258
259
|
const newDefKey =
|
|
259
260
|
refId.replace(/[^a-zA-Z0-9_-]/g, "_").replace(/^_+|_+$/g, "") ||
|
|
260
261
|
`ref_${Object.keys(finalSchema.$defs).length}`;
|
|
@@ -266,7 +267,7 @@ export function inlineSchemaRefs<T extends TSchema>(schema: T, ajv: Ajv) {
|
|
|
266
267
|
counter++;
|
|
267
268
|
}
|
|
268
269
|
|
|
269
|
-
finalSchema.$defs[uniqueNewDefKey] = referencedSchema
|
|
270
|
+
finalSchema.$defs[uniqueNewDefKey] = referencedSchema;
|
|
270
271
|
refToLocalMap.set(refId, `#/$defs/${uniqueNewDefKey}`);
|
|
271
272
|
}
|
|
272
273
|
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { TSchema } from "@sinclair/typebox";
|
|
2
|
+
import { alignItems, alignSelf, justifyContent } from "../bricks/props/align";
|
|
3
|
+
import { background, backgroundColor } from "../bricks/props/background";
|
|
4
|
+
import { border, rounding } from "../bricks/props/border";
|
|
5
|
+
import { borderColor, color } from "../bricks/props/color";
|
|
6
|
+
import { hidden } from "../bricks/props/common";
|
|
7
|
+
import { cssLength } from "../bricks/props/css-length";
|
|
8
|
+
import { shadow, textShadow } from "../bricks/props/effects";
|
|
9
|
+
import { fontSize, textContent } from "../bricks/props/text";
|
|
10
|
+
import { icon, urlOrPageId } from "../bricks/props/string";
|
|
11
|
+
import { colorPreset } from "../bricks/props/color-preset";
|
|
12
|
+
import { image } from "../bricks/props/image";
|
|
13
|
+
import { direction } from "../bricks/props/direction";
|
|
14
|
+
import { loop, queryUse } from "../bricks/props/dynamic";
|
|
15
|
+
import { tags } from "../bricks/props/tags";
|
|
16
|
+
|
|
17
|
+
export const schemaRegistry = new Map<string, TSchema>();
|
|
18
|
+
|
|
19
|
+
export function registerSchema(id: string, schema: TSchema) {
|
|
20
|
+
schemaRegistry.set(id, schema);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function unregisterSchema(id: string) {
|
|
24
|
+
schemaRegistry.delete(id);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
registerSchema("styles:background", background());
|
|
28
|
+
registerSchema("styles:backgroundColor", backgroundColor());
|
|
29
|
+
registerSchema("styles:justifyContent", justifyContent());
|
|
30
|
+
registerSchema("styles:alignItems", alignItems());
|
|
31
|
+
registerSchema("styles:alignSelf", alignSelf());
|
|
32
|
+
registerSchema("styles:rounding", rounding());
|
|
33
|
+
registerSchema("styles:fontSize", fontSize());
|
|
34
|
+
registerSchema("styles:hidden", hidden());
|
|
35
|
+
registerSchema("styles:direction", direction());
|
|
36
|
+
registerSchema("styles:border", border());
|
|
37
|
+
registerSchema("styles:color", color());
|
|
38
|
+
registerSchema("styles:borderColor", borderColor());
|
|
39
|
+
registerSchema("styles:shadow", shadow());
|
|
40
|
+
registerSchema("styles:textShadow", textShadow());
|
|
41
|
+
registerSchema("styles:cssLength", cssLength());
|
|
42
|
+
registerSchema("assets:image", image());
|
|
43
|
+
registerSchema("assets:icon", icon());
|
|
44
|
+
registerSchema("content:text", textContent());
|
|
45
|
+
registerSchema("content:urlOrPageId", urlOrPageId());
|
|
46
|
+
registerSchema("content:loop", loop());
|
|
47
|
+
registerSchema("content:queryUse", queryUse());
|
|
48
|
+
registerSchema("presets:color", colorPreset());
|
|
49
|
+
registerSchema("content:tags", tags());
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
*/
|
|
53
|
+
function consolidateRefs() {
|
|
54
|
+
// Helper to recursively resolve $refs in a schema
|
|
55
|
+
function resolveRefs(schema: TSchema, visited: Set<TSchema> = new Set()) {
|
|
56
|
+
if (!schema || typeof schema !== "object" || visited.has(schema)) return schema;
|
|
57
|
+
visited.add(schema);
|
|
58
|
+
if ("$ref" in schema && typeof (schema as any).$ref === "string") {
|
|
59
|
+
const refSchema = schemaRegistry.get((schema as any).$ref);
|
|
60
|
+
if (refSchema) {
|
|
61
|
+
// Recursively resolve refs in the referenced schema
|
|
62
|
+
return resolveRefs(refSchema, visited);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
for (const key of Object.keys(schema)) {
|
|
66
|
+
const value = (schema as any)[key];
|
|
67
|
+
if (Array.isArray(value)) {
|
|
68
|
+
(schema as any)[key] = value.map((item: TSchema) => resolveRefs(item, visited));
|
|
69
|
+
} else if (typeof value === "object" && value !== null) {
|
|
70
|
+
(schema as any)[key] = resolveRefs(value as TSchema, visited);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return schema;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Rewrite all schemas in the registry to resolve $refs
|
|
77
|
+
for (const [id, schema] of schemaRegistry.entries()) {
|
|
78
|
+
schemaRegistry.set(id, resolveRefs(schema));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
consolidateRefs();
|