@jxsuite/starters 3.4.0 → 3.6.0
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/package.json +5 -5
- package/sites/blog/components/bl-author-bio.jxn +64 -0
- package/sites/blog/components/bl-contact-form.jxn +77 -0
- package/sites/blog/components/bl-contact-info.jxn +32 -0
- package/sites/blog/components/bl-cta.jxn +52 -0
- package/sites/blog/components/bl-footer.jxn +85 -0
- package/sites/blog/components/bl-masthead.jxn +111 -0
- package/sites/blog/components/bl-nav.jxn +62 -0
- package/sites/blog/components/bl-newsletter-cta.jxn +104 -0
- package/sites/blog/components/bl-post-card.jxn +106 -0
- package/sites/blog/components/bl-post-list.jxn +11 -0
- package/sites/blog/components/bl-prose.jxn +67 -0
- package/sites/blog/components/bl-section-header.jxn +52 -0
- package/sites/blog/components/bl-tag-pill.jxn +19 -0
- package/sites/blog/document.schema.json +26 -2
- package/sites/blog/layouts/base.jxn +17 -0
- package/sites/blog/layouts/post.jxn +13 -0
- package/sites/blog/package.json +3 -3
- package/sites/blog/pages/[slug].jxn +107 -0
- package/sites/blog/project.jxn +1 -1
- package/sites/course/components/co-application.jxn +106 -0
- package/sites/course/components/co-cohort.jxn +132 -0
- package/sites/course/components/co-cta.jxn +95 -0
- package/sites/course/components/co-curriculum-accordion.jxn +917 -0
- package/sites/course/components/co-faq.jxn +348 -0
- package/sites/course/components/co-footer.jxn +138 -0
- package/sites/course/components/co-hero.jxn +354 -0
- package/sites/course/components/co-instructor-card.jxn +128 -0
- package/sites/course/components/co-mentor.jxn +51 -0
- package/sites/course/components/co-module-card.jxn +101 -0
- package/sites/course/components/co-nav.jxn +172 -0
- package/sites/course/components/co-outcome-card.jxn +57 -0
- package/sites/course/components/co-outcomes.jxn +179 -0
- package/sites/course/components/co-pricing.jxn +145 -0
- package/sites/course/components/co-section-header.jxn +55 -0
- package/sites/course/components/co-testimonial-card.jxn +69 -0
- package/sites/course/document.schema.json +26 -2
- package/sites/course/layouts/base.jxn +17 -0
- package/sites/course/package.json +3 -3
- package/sites/course/project.jxn +1 -1
- package/sites/event/components/ev-agenda-tabs.jxn +663 -0
- package/sites/event/components/ev-cta.jxn +93 -0
- package/sites/event/components/ev-feature.jxn +46 -0
- package/sites/event/components/ev-footer.jxn +135 -0
- package/sites/event/components/ev-hero.jxn +323 -0
- package/sites/event/components/ev-nav.jxn +142 -0
- package/sites/event/components/ev-reason.jxn +50 -0
- package/sites/event/components/ev-savedate.jxn +268 -0
- package/sites/event/components/ev-section-header.jxn +51 -0
- package/sites/event/components/ev-session-row.jxn +103 -0
- package/sites/event/components/ev-speaker-card.jxn +104 -0
- package/sites/event/components/ev-sponsors.jxn +110 -0
- package/sites/event/components/ev-stat.jxn +39 -0
- package/sites/event/components/ev-ticket-card.jxn +169 -0
- package/sites/event/components/ev-venue.jxn +61 -0
- package/sites/event/document.schema.json +26 -2
- package/sites/event/layouts/base.jxn +12 -0
- package/sites/event/package.json +3 -3
- package/sites/event/project.jxn +1 -1
- package/sites/fitness-studio/components/fs-band.jxn +119 -0
- package/sites/fitness-studio/components/fs-booking.jxn +92 -0
- package/sites/fitness-studio/components/fs-class-card.jxn +103 -0
- package/sites/fitness-studio/components/fs-class-grid.jxn +23 -0
- package/sites/fitness-studio/components/fs-cta.jxn +81 -0
- package/sites/fitness-studio/components/fs-feature.jxn +40 -0
- package/sites/fitness-studio/components/fs-footer.jxn +116 -0
- package/sites/fitness-studio/components/fs-hero.jxn +290 -0
- package/sites/fitness-studio/components/fs-hours.jxn +78 -0
- package/sites/fitness-studio/components/fs-instructor-card.jxn +104 -0
- package/sites/fitness-studio/components/fs-intro.jxn +231 -0
- package/sites/fitness-studio/components/fs-modality.jxn +133 -0
- package/sites/fitness-studio/components/fs-nav.jxn +95 -0
- package/sites/fitness-studio/components/fs-pricing-card.jxn +190 -0
- package/sites/fitness-studio/components/fs-pricing-table.jxn +322 -0
- package/sites/fitness-studio/components/fs-review.jxn +59 -0
- package/sites/fitness-studio/components/fs-schedule.jxn +714 -0
- package/sites/fitness-studio/components/fs-section-header.jxn +55 -0
- package/sites/fitness-studio/document.schema.json +26 -2
- package/sites/fitness-studio/layouts/base.jxn +17 -0
- package/sites/fitness-studio/package.json +3 -3
- package/sites/fitness-studio/project.jxn +1 -1
- package/sites/home-services/components/hs-callbar.jxn +60 -0
- package/sites/home-services/components/hs-cta.jxn +139 -0
- package/sites/home-services/components/hs-feature.jxn +43 -0
- package/sites/home-services/components/hs-footer.jxn +169 -0
- package/sites/home-services/components/hs-gallery.jxn +51 -0
- package/sites/home-services/components/hs-hero.jxn +308 -0
- package/sites/home-services/components/hs-intro.jxn +97 -0
- package/sites/home-services/components/hs-nav.jxn +207 -0
- package/sites/home-services/components/hs-reservation.jxn +125 -0
- package/sites/home-services/components/hs-review.jxn +84 -0
- package/sites/home-services/components/hs-section-header.jxn +56 -0
- package/sites/home-services/components/hs-service-card.jxn +68 -0
- package/sites/home-services/components/hs-stat.jxn +40 -0
- package/sites/home-services/components/hs-step.jxn +67 -0
- package/sites/home-services/components/hs-trust-bar.jxn +183 -0
- package/sites/home-services/document.schema.json +26 -2
- package/sites/home-services/layouts/base.jxn +22 -0
- package/sites/home-services/package.json +3 -3
- package/sites/home-services/project.jxn +1 -1
- package/sites/museum/components/mu-band.jxn +63 -0
- package/sites/museum/components/mu-cta.jxn +76 -0
- package/sites/museum/components/mu-exhibition-card.jxn +118 -0
- package/sites/museum/components/mu-exhibition-row.jxn +142 -0
- package/sites/museum/components/mu-fact.jxn +40 -0
- package/sites/museum/components/mu-footer.jxn +206 -0
- package/sites/museum/components/mu-hero.jxn +165 -0
- package/sites/museum/components/mu-more.jxn +30 -0
- package/sites/museum/components/mu-oculus.jxn +33 -0
- package/sites/museum/components/mu-pagehead.jxn +76 -0
- package/sites/museum/components/mu-quote.jxn +36 -0
- package/sites/museum/document.schema.json +26 -2
- package/sites/museum/layouts/ar.jxn +31 -0
- package/sites/museum/layouts/base.jxn +227 -0
- package/sites/museum/layouts/fr-ca.jxn +30 -0
- package/sites/museum/package.json +3 -3
- package/sites/museum/pages/about.jxn +228 -0
- package/sites/museum/pages/ar/about.jxn +232 -0
- package/sites/museum/pages/ar/exhibitions/[slug].jxn +150 -0
- package/sites/museum/pages/ar/exhibitions/index.jxn +82 -0
- package/sites/museum/pages/ar/index.jxn +206 -0
- package/sites/museum/pages/ar/visit.jxn +270 -0
- package/sites/museum/pages/exhibitions/[slug].jxn +146 -0
- package/sites/museum/pages/exhibitions/index.jxn +78 -0
- package/sites/museum/pages/fr-ca/a-propos.jxn +233 -0
- package/sites/museum/pages/fr-ca/expositions/[slug].jxn +151 -0
- package/sites/museum/pages/fr-ca/expositions/index.jxn +83 -0
- package/sites/museum/pages/fr-ca/index.jxn +206 -0
- package/sites/museum/pages/fr-ca/visite.jxn +271 -0
- package/sites/museum/pages/index.jxn +202 -0
- package/sites/museum/pages/visit.jxn +266 -0
- package/sites/museum/project.jxn +1 -1
- package/sites/nonprofit/components/np-contact-form.jxn +97 -0
- package/sites/nonprofit/components/np-contact-info.jxn +104 -0
- package/sites/nonprofit/components/np-cta.jxn +163 -0
- package/sites/nonprofit/components/np-donate-tier.jxn +103 -0
- package/sites/nonprofit/components/np-feature.jxn +46 -0
- package/sites/nonprofit/components/np-footer.jxn +194 -0
- package/sites/nonprofit/components/np-hero.jxn +275 -0
- package/sites/nonprofit/components/np-impact-band.jxn +83 -0
- package/sites/nonprofit/components/np-intro.jxn +130 -0
- package/sites/nonprofit/components/np-nav.jxn +157 -0
- package/sites/nonprofit/components/np-program-card.jxn +95 -0
- package/sites/nonprofit/components/np-section-header.jxn +63 -0
- package/sites/nonprofit/components/np-stat.jxn +51 -0
- package/sites/nonprofit/components/np-step.jxn +73 -0
- package/sites/nonprofit/components/np-team-member.jxn +60 -0
- package/sites/nonprofit/components/np-testimonial.jxn +120 -0
- package/sites/nonprofit/document.schema.json +26 -2
- package/sites/nonprofit/layouts/base.jxn +17 -0
- package/sites/nonprofit/package.json +3 -3
- package/sites/nonprofit/project.jxn +1 -1
- package/sites/portfolio/components/pv-about-split.jxn +53 -0
- package/sites/portfolio/components/pv-category-pill.jxn +19 -0
- package/sites/portfolio/components/pv-contact-form.jxn +72 -0
- package/sites/portfolio/components/pv-cta.jxn +62 -0
- package/sites/portfolio/components/pv-feature.jxn +28 -0
- package/sites/portfolio/components/pv-footer.jxn +113 -0
- package/sites/portfolio/components/pv-gallery.jxn +40 -0
- package/sites/portfolio/components/pv-hero.jxn +109 -0
- package/sites/portfolio/components/pv-nav.jxn +76 -0
- package/sites/portfolio/components/pv-project-card.jxn +118 -0
- package/sites/portfolio/components/pv-project-grid.jxn +29 -0
- package/sites/portfolio/components/pv-section-header.jxn +65 -0
- package/sites/portfolio/document.schema.json +26 -2
- package/sites/portfolio/layouts/base.jxn +12 -0
- package/sites/portfolio/package.json +3 -3
- package/sites/portfolio/pages/[slug].jxn +177 -0
- package/sites/portfolio/project.jxn +1 -1
- package/sites/professional-firm/components/pf-article-header.jxn +60 -0
- package/sites/professional-firm/components/pf-contact-form.jxn +74 -0
- package/sites/professional-firm/components/pf-contact-info.jxn +101 -0
- package/sites/professional-firm/components/pf-cta.jxn +63 -0
- package/sites/professional-firm/components/pf-feature.jxn +32 -0
- package/sites/professional-firm/components/pf-footer.jxn +171 -0
- package/sites/professional-firm/components/pf-hero.jxn +139 -0
- package/sites/professional-firm/components/pf-insight-row.jxn +111 -0
- package/sites/professional-firm/components/pf-intro.jxn +68 -0
- package/sites/professional-firm/components/pf-logo-bar.jxn +90 -0
- package/sites/professional-firm/components/pf-nav.jxn +93 -0
- package/sites/professional-firm/components/pf-section-header.jxn +53 -0
- package/sites/professional-firm/components/pf-service-row.jxn +67 -0
- package/sites/professional-firm/components/pf-statband.jxn +135 -0
- package/sites/professional-firm/components/pf-team-member.jxn +53 -0
- package/sites/professional-firm/document.schema.json +26 -2
- package/sites/professional-firm/layouts/article.jxn +88 -0
- package/sites/professional-firm/layouts/base.jxn +12 -0
- package/sites/professional-firm/package.json +3 -3
- package/sites/professional-firm/pages/insights/[slug].jxn +106 -0
- package/sites/professional-firm/project.jxn +1 -1
- package/sites/real-estate/components/re-agent-band.jxn +165 -0
- package/sites/real-estate/components/re-agent-card.jxn +78 -0
- package/sites/real-estate/components/re-contact-form.jxn +119 -0
- package/sites/real-estate/components/re-cta.jxn +98 -0
- package/sites/real-estate/components/re-detail-row.jxn +18 -0
- package/sites/real-estate/components/re-feature.jxn +41 -0
- package/sites/real-estate/components/re-footer.jxn +219 -0
- package/sites/real-estate/components/re-hero.jxn +367 -0
- package/sites/real-estate/components/re-intro.jxn +43 -0
- package/sites/real-estate/components/re-listing-card.jxn +210 -0
- package/sites/real-estate/components/re-listings-filter.jxn +371 -0
- package/sites/real-estate/components/re-nav.jxn +162 -0
- package/sites/real-estate/components/re-neighborhood.jxn +101 -0
- package/sites/real-estate/components/re-section-header.jxn +55 -0
- package/sites/real-estate/components/re-stat.jxn +26 -0
- package/sites/real-estate/components/re-step.jxn +42 -0
- package/sites/real-estate/components/re-testimonial.jxn +66 -0
- package/sites/real-estate/document.schema.json +26 -2
- package/sites/real-estate/layouts/base.jxn +17 -0
- package/sites/real-estate/package.json +3 -3
- package/sites/real-estate/pages/[slug].jxn +452 -0
- package/sites/real-estate/project.jxn +1 -1
- package/sites/restaurant/components/bit-cta.jxn +105 -0
- package/sites/restaurant/components/bit-feature.jxn +38 -0
- package/sites/restaurant/components/bit-footer.jxn +142 -0
- package/sites/restaurant/components/bit-gallery.jxn +50 -0
- package/sites/restaurant/components/bit-hero.jxn +194 -0
- package/sites/restaurant/components/bit-hours.jxn +145 -0
- package/sites/restaurant/components/bit-intro.jxn +75 -0
- package/sites/restaurant/components/bit-menu-group.jxn +51 -0
- package/sites/restaurant/components/bit-menu-item.jxn +50 -0
- package/sites/restaurant/components/bit-nav.jxn +145 -0
- package/sites/restaurant/components/bit-reservation.jxn +90 -0
- package/sites/restaurant/components/bit-review.jxn +54 -0
- package/sites/restaurant/components/bit-section-header.jxn +73 -0
- package/sites/restaurant/document.schema.json +26 -2
- package/sites/restaurant/layouts/base.jxn +17 -0
- package/sites/restaurant/package.json +3 -3
- package/sites/restaurant/project.jxn +1 -1
- package/sites/saas/components/sa-check-item.jxn +25 -0
- package/sites/saas/components/sa-contact-form.jxn +94 -0
- package/sites/saas/components/sa-cta.jxn +68 -0
- package/sites/saas/components/sa-faq.jxn +347 -0
- package/sites/saas/components/sa-feature-card.jxn +57 -0
- package/sites/saas/components/sa-feature-split.jxn +43 -0
- package/sites/saas/components/sa-footer.jxn +106 -0
- package/sites/saas/components/sa-hero.jxn +217 -0
- package/sites/saas/components/sa-logo-cloud.jxn +98 -0
- package/sites/saas/components/sa-nav.jxn +108 -0
- package/sites/saas/components/sa-pricing.jxn +317 -0
- package/sites/saas/components/sa-section-header.jxn +43 -0
- package/sites/saas/components/sa-stat.jxn +32 -0
- package/sites/saas/components/sa-testimonial-card.jxn +37 -0
- package/sites/saas/document.schema.json +26 -2
- package/sites/saas/layouts/base.jxn +17 -0
- package/sites/saas/package.json +3 -3
- package/sites/saas/project.jxn +1 -1
- package/sites/shop/components/shp-badge.jxn +17 -0
- package/sites/shop/components/shp-category-tile.jxn +79 -0
- package/sites/shop/components/shp-contact-form.jxn +84 -0
- package/sites/shop/components/shp-cta.jxn +85 -0
- package/sites/shop/components/shp-feature.jxn +44 -0
- package/sites/shop/components/shp-footer.jxn +311 -0
- package/sites/shop/components/shp-hero.jxn +311 -0
- package/sites/shop/components/shp-intro.jxn +42 -0
- package/sites/shop/components/shp-nav.jxn +273 -0
- package/sites/shop/components/shp-newsletter.jxn +119 -0
- package/sites/shop/components/shp-product-card.jxn +187 -0
- package/sites/shop/components/shp-product-filter.jxn +263 -0
- package/sites/shop/components/shp-review.jxn +38 -0
- package/sites/shop/components/shp-section-header.jxn +61 -0
- package/sites/shop/components/shp-service.jxn +58 -0
- package/sites/shop/components/shp-stat.jxn +27 -0
- package/sites/shop/components/shp-trust.jxn +39 -0
- package/sites/shop/components/shp-visit-info.jxn +82 -0
- package/sites/shop/document.schema.json +26 -2
- package/sites/shop/layouts/base.jxn +17 -0
- package/sites/shop/package.json +3 -3
- package/sites/shop/pages/products/[sku].jxn +351 -0
- package/sites/shop/project.jxn +1 -1
- package/sites/blog/components/bl-author-bio.json +0 -86
- package/sites/blog/components/bl-contact-form.json +0 -114
- package/sites/blog/components/bl-contact-info.json +0 -54
- package/sites/blog/components/bl-cta.json +0 -68
- package/sites/blog/components/bl-footer.json +0 -122
- package/sites/blog/components/bl-masthead.json +0 -134
- package/sites/blog/components/bl-nav.json +0 -90
- package/sites/blog/components/bl-newsletter-cta.json +0 -134
- package/sites/blog/components/bl-post-card.json +0 -132
- package/sites/blog/components/bl-post-list.json +0 -10
- package/sites/blog/components/bl-prose.json +0 -89
- package/sites/blog/components/bl-section-header.json +0 -70
- package/sites/blog/components/bl-tag-pill.json +0 -29
- package/sites/blog/layouts/base.json +0 -22
- package/sites/blog/layouts/post.json +0 -15
- package/sites/blog/pages/[slug].json +0 -148
- package/sites/course/components/co-application.json +0 -225
- package/sites/course/components/co-cohort.json +0 -172
- package/sites/course/components/co-cta.json +0 -126
- package/sites/course/components/co-curriculum-accordion.json +0 -1476
- package/sites/course/components/co-faq.json +0 -524
- package/sites/course/components/co-footer.json +0 -195
- package/sites/course/components/co-hero.json +0 -475
- package/sites/course/components/co-instructor-card.json +0 -159
- package/sites/course/components/co-mentor.json +0 -65
- package/sites/course/components/co-module-card.json +0 -138
- package/sites/course/components/co-nav.json +0 -244
- package/sites/course/components/co-outcome-card.json +0 -84
- package/sites/course/components/co-outcomes.json +0 -248
- package/sites/course/components/co-pricing.json +0 -178
- package/sites/course/components/co-section-header.json +0 -74
- package/sites/course/components/co-testimonial-card.json +0 -109
- package/sites/course/layouts/base.json +0 -22
- package/sites/event/components/ev-agenda-tabs.json +0 -828
- package/sites/event/components/ev-cta.json +0 -126
- package/sites/event/components/ev-feature.json +0 -62
- package/sites/event/components/ev-footer.json +0 -197
- package/sites/event/components/ev-hero.json +0 -431
- package/sites/event/components/ev-nav.json +0 -186
- package/sites/event/components/ev-reason.json +0 -64
- package/sites/event/components/ev-savedate.json +0 -331
- package/sites/event/components/ev-section-header.json +0 -70
- package/sites/event/components/ev-session-row.json +0 -132
- package/sites/event/components/ev-speaker-card.json +0 -130
- package/sites/event/components/ev-sponsors.json +0 -131
- package/sites/event/components/ev-stat.json +0 -47
- package/sites/event/components/ev-ticket-card.json +0 -214
- package/sites/event/components/ev-venue.json +0 -86
- package/sites/event/layouts/base.json +0 -22
- package/sites/fitness-studio/components/fs-band.json +0 -149
- package/sites/fitness-studio/components/fs-booking.json +0 -147
- package/sites/fitness-studio/components/fs-class-card.json +0 -143
- package/sites/fitness-studio/components/fs-class-grid.json +0 -36
- package/sites/fitness-studio/components/fs-cta.json +0 -106
- package/sites/fitness-studio/components/fs-feature.json +0 -56
- package/sites/fitness-studio/components/fs-footer.json +0 -178
- package/sites/fitness-studio/components/fs-hero.json +0 -375
- package/sites/fitness-studio/components/fs-hours.json +0 -109
- package/sites/fitness-studio/components/fs-instructor-card.json +0 -136
- package/sites/fitness-studio/components/fs-intro.json +0 -294
- package/sites/fitness-studio/components/fs-modality.json +0 -171
- package/sites/fitness-studio/components/fs-nav.json +0 -128
- package/sites/fitness-studio/components/fs-pricing-card.json +0 -243
- package/sites/fitness-studio/components/fs-pricing-table.json +0 -458
- package/sites/fitness-studio/components/fs-review.json +0 -88
- package/sites/fitness-studio/components/fs-schedule.json +0 -1165
- package/sites/fitness-studio/components/fs-section-header.json +0 -77
- package/sites/fitness-studio/layouts/base.json +0 -22
- package/sites/home-services/components/hs-callbar.json +0 -72
- package/sites/home-services/components/hs-cta.json +0 -184
- package/sites/home-services/components/hs-feature.json +0 -62
- package/sites/home-services/components/hs-footer.json +0 -232
- package/sites/home-services/components/hs-gallery.json +0 -104
- package/sites/home-services/components/hs-hero.json +0 -446
- package/sites/home-services/components/hs-intro.json +0 -122
- package/sites/home-services/components/hs-nav.json +0 -278
- package/sites/home-services/components/hs-reservation.json +0 -225
- package/sites/home-services/components/hs-review.json +0 -114
- package/sites/home-services/components/hs-section-header.json +0 -70
- package/sites/home-services/components/hs-service-card.json +0 -89
- package/sites/home-services/components/hs-stat.json +0 -54
- package/sites/home-services/components/hs-step.json +0 -80
- package/sites/home-services/components/hs-trust-bar.json +0 -256
- package/sites/home-services/layouts/base.json +0 -24
- package/sites/museum/components/mu-band.json +0 -92
- package/sites/museum/components/mu-cta.json +0 -101
- package/sites/museum/components/mu-exhibition-card.json +0 -191
- package/sites/museum/components/mu-exhibition-row.json +0 -237
- package/sites/museum/components/mu-fact.json +0 -64
- package/sites/museum/components/mu-footer.json +0 -256
- package/sites/museum/components/mu-hero.json +0 -236
- package/sites/museum/components/mu-more.json +0 -63
- package/sites/museum/components/mu-oculus.json +0 -44
- package/sites/museum/components/mu-pagehead.json +0 -105
- package/sites/museum/components/mu-quote.json +0 -49
- package/sites/museum/layouts/ar.json +0 -29
- package/sites/museum/layouts/base.json +0 -329
- package/sites/museum/layouts/fr-ca.json +0 -28
- package/sites/museum/pages/about.json +0 -378
- package/sites/museum/pages/ar/about.json +0 -314
- package/sites/museum/pages/ar/exhibitions/[slug].json +0 -211
- package/sites/museum/pages/ar/exhibitions/index.json +0 -103
- package/sites/museum/pages/ar/index.json +0 -246
- package/sites/museum/pages/ar/visit.json +0 -327
- package/sites/museum/pages/exhibitions/[slug].json +0 -200
- package/sites/museum/pages/exhibitions/index.json +0 -93
- package/sites/museum/pages/fr-ca/a-propos.json +0 -313
- package/sites/museum/pages/fr-ca/expositions/[slug].json +0 -215
- package/sites/museum/pages/fr-ca/expositions/index.json +0 -104
- package/sites/museum/pages/fr-ca/index.json +0 -246
- package/sites/museum/pages/fr-ca/visite.json +0 -328
- package/sites/museum/pages/index.json +0 -236
- package/sites/museum/pages/visit.json +0 -317
- package/sites/nonprofit/components/np-contact-form.json +0 -162
- package/sites/nonprofit/components/np-contact-info.json +0 -159
- package/sites/nonprofit/components/np-cta.json +0 -203
- package/sites/nonprofit/components/np-donate-tier.json +0 -116
- package/sites/nonprofit/components/np-feature.json +0 -57
- package/sites/nonprofit/components/np-footer.json +0 -257
- package/sites/nonprofit/components/np-hero.json +0 -360
- package/sites/nonprofit/components/np-impact-band.json +0 -108
- package/sites/nonprofit/components/np-intro.json +0 -166
- package/sites/nonprofit/components/np-nav.json +0 -216
- package/sites/nonprofit/components/np-program-card.json +0 -129
- package/sites/nonprofit/components/np-section-header.json +0 -79
- package/sites/nonprofit/components/np-stat.json +0 -69
- package/sites/nonprofit/components/np-step.json +0 -84
- package/sites/nonprofit/components/np-team-member.json +0 -74
- package/sites/nonprofit/components/np-testimonial.json +0 -169
- package/sites/nonprofit/layouts/base.json +0 -22
- package/sites/portfolio/components/pv-about-split.json +0 -71
- package/sites/portfolio/components/pv-category-pill.json +0 -25
- package/sites/portfolio/components/pv-contact-form.json +0 -126
- package/sites/portfolio/components/pv-cta.json +0 -80
- package/sites/portfolio/components/pv-feature.json +0 -48
- package/sites/portfolio/components/pv-footer.json +0 -167
- package/sites/portfolio/components/pv-gallery.json +0 -50
- package/sites/portfolio/components/pv-hero.json +0 -139
- package/sites/portfolio/components/pv-nav.json +0 -100
- package/sites/portfolio/components/pv-project-card.json +0 -160
- package/sites/portfolio/components/pv-project-grid.json +0 -30
- package/sites/portfolio/components/pv-section-header.json +0 -90
- package/sites/portfolio/layouts/base.json +0 -22
- package/sites/portfolio/pages/[slug].json +0 -260
- package/sites/professional-firm/components/pf-article-header.json +0 -93
- package/sites/professional-firm/components/pf-contact-form.json +0 -146
- package/sites/professional-firm/components/pf-contact-info.json +0 -147
- package/sites/professional-firm/components/pf-cta.json +0 -86
- package/sites/professional-firm/components/pf-feature.json +0 -52
- package/sites/professional-firm/components/pf-footer.json +0 -231
- package/sites/professional-firm/components/pf-hero.json +0 -174
- package/sites/professional-firm/components/pf-insight-row.json +0 -144
- package/sites/professional-firm/components/pf-intro.json +0 -93
- package/sites/professional-firm/components/pf-logo-bar.json +0 -113
- package/sites/professional-firm/components/pf-nav.json +0 -135
- package/sites/professional-firm/components/pf-section-header.json +0 -77
- package/sites/professional-firm/components/pf-service-row.json +0 -104
- package/sites/professional-firm/components/pf-statband.json +0 -183
- package/sites/professional-firm/components/pf-team-member.json +0 -75
- package/sites/professional-firm/layouts/article.json +0 -130
- package/sites/professional-firm/layouts/base.json +0 -22
- package/sites/professional-firm/pages/insights/[slug].json +0 -129
- package/sites/real-estate/components/re-agent-band.json +0 -240
- package/sites/real-estate/components/re-agent-card.json +0 -93
- package/sites/real-estate/components/re-contact-form.json +0 -181
- package/sites/real-estate/components/re-cta.json +0 -128
- package/sites/real-estate/components/re-detail-row.json +0 -26
- package/sites/real-estate/components/re-feature.json +0 -57
- package/sites/real-estate/components/re-footer.json +0 -291
- package/sites/real-estate/components/re-hero.json +0 -536
- package/sites/real-estate/components/re-intro.json +0 -60
- package/sites/real-estate/components/re-listing-card.json +0 -286
- package/sites/real-estate/components/re-listings-filter.json +0 -454
- package/sites/real-estate/components/re-nav.json +0 -216
- package/sites/real-estate/components/re-neighborhood.json +0 -135
- package/sites/real-estate/components/re-section-header.json +0 -69
- package/sites/real-estate/components/re-stat.json +0 -37
- package/sites/real-estate/components/re-step.json +0 -58
- package/sites/real-estate/components/re-testimonial.json +0 -91
- package/sites/real-estate/layouts/base.json +0 -22
- package/sites/real-estate/pages/[slug].json +0 -629
- package/sites/restaurant/components/bit-cta.json +0 -140
- package/sites/restaurant/components/bit-feature.json +0 -61
- package/sites/restaurant/components/bit-footer.json +0 -191
- package/sites/restaurant/components/bit-gallery.json +0 -74
- package/sites/restaurant/components/bit-hero.json +0 -253
- package/sites/restaurant/components/bit-hours.json +0 -183
- package/sites/restaurant/components/bit-intro.json +0 -96
- package/sites/restaurant/components/bit-menu-group.json +0 -74
- package/sites/restaurant/components/bit-menu-item.json +0 -72
- package/sites/restaurant/components/bit-nav.json +0 -214
- package/sites/restaurant/components/bit-reservation.json +0 -155
- package/sites/restaurant/components/bit-review.json +0 -84
- package/sites/restaurant/components/bit-section-header.json +0 -98
- package/sites/restaurant/layouts/base.json +0 -22
- package/sites/saas/components/sa-check-item.json +0 -40
- package/sites/saas/components/sa-contact-form.json +0 -153
- package/sites/saas/components/sa-cta.json +0 -102
- package/sites/saas/components/sa-faq.json +0 -413
- package/sites/saas/components/sa-feature-card.json +0 -69
- package/sites/saas/components/sa-feature-split.json +0 -60
- package/sites/saas/components/sa-footer.json +0 -145
- package/sites/saas/components/sa-hero.json +0 -277
- package/sites/saas/components/sa-logo-cloud.json +0 -119
- package/sites/saas/components/sa-nav.json +0 -138
- package/sites/saas/components/sa-pricing.json +0 -428
- package/sites/saas/components/sa-section-header.json +0 -55
- package/sites/saas/components/sa-stat.json +0 -44
- package/sites/saas/components/sa-testimonial-card.json +0 -57
- package/sites/saas/layouts/base.json +0 -22
- package/sites/shop/components/shp-badge.json +0 -18
- package/sites/shop/components/shp-category-tile.json +0 -104
- package/sites/shop/components/shp-contact-form.json +0 -156
- package/sites/shop/components/shp-cta.json +0 -121
- package/sites/shop/components/shp-feature.json +0 -60
- package/sites/shop/components/shp-footer.json +0 -411
- package/sites/shop/components/shp-hero.json +0 -395
- package/sites/shop/components/shp-intro.json +0 -59
- package/sites/shop/components/shp-nav.json +0 -358
- package/sites/shop/components/shp-newsletter.json +0 -166
- package/sites/shop/components/shp-product-card.json +0 -238
- package/sites/shop/components/shp-product-filter.json +0 -366
- package/sites/shop/components/shp-review.json +0 -54
- package/sites/shop/components/shp-section-header.json +0 -75
- package/sites/shop/components/shp-service.json +0 -83
- package/sites/shop/components/shp-stat.json +0 -37
- package/sites/shop/components/shp-trust.json +0 -58
- package/sites/shop/components/shp-visit-info.json +0 -132
- package/sites/shop/layouts/base.json +0 -22
- package/sites/shop/pages/products/[sku].json +0 -482
|
@@ -303,7 +303,13 @@
|
|
|
303
303
|
},
|
|
304
304
|
"FunctionDef": {
|
|
305
305
|
"additionalProperties": false,
|
|
306
|
-
"description": "A function declaration. $prototype must be \"Function\". body (inline) and $src (external) are mutually exclusive. First parameter is always state (the reactive scope).",
|
|
306
|
+
"description": "A function declaration. $prototype must be \"Function\". body (inline) and $src (external) are mutually exclusive; declaring both is an error. First parameter is always state (the reactive scope).",
|
|
307
|
+
"not": {
|
|
308
|
+
"required": [
|
|
309
|
+
"body",
|
|
310
|
+
"$src"
|
|
311
|
+
]
|
|
312
|
+
},
|
|
307
313
|
"properties": {
|
|
308
314
|
"$export": {
|
|
309
315
|
"description": "Named export in $src module. Defaults to the state key name.",
|
|
@@ -339,11 +345,12 @@
|
|
|
339
345
|
"type": "array"
|
|
340
346
|
},
|
|
341
347
|
"body": {
|
|
342
|
-
"description": "Inline function body:
|
|
348
|
+
"description": "Inline function body: a source string in erasable TypeScript, which plain JavaScript already is (spec §23.1; types are erased before it is analysed or run; first implicit parameter is state), or a structured statement array (spec §20) — explicit structured function declaration, analyzable by tooling and editable visually. The escalation ladder within the shape is structured statements → source string.",
|
|
343
349
|
"examples": [
|
|
344
350
|
"state.count++",
|
|
345
351
|
"state.items.push({ id: Date.now(), text: \"\", done: false })",
|
|
346
352
|
"return state.score >= 90 ? \"gold\" : \"silver\"",
|
|
353
|
+
"const input = event.target as HTMLInputElement; state.label = input.value",
|
|
347
354
|
[
|
|
348
355
|
{
|
|
349
356
|
"operator": "push",
|
|
@@ -604,6 +611,7 @@
|
|
|
604
611
|
"type": "string"
|
|
605
612
|
},
|
|
606
613
|
"body": {
|
|
614
|
+
"description": "The member's body in erasable TypeScript, which plain JavaScript already is (spec §23.1), as one string or as an array of lines.",
|
|
607
615
|
"oneOf": [
|
|
608
616
|
{
|
|
609
617
|
"type": "string"
|
|
@@ -675,6 +683,7 @@
|
|
|
675
683
|
"type": "string"
|
|
676
684
|
},
|
|
677
685
|
"body": {
|
|
686
|
+
"description": "The member's body in erasable TypeScript, which plain JavaScript already is (spec §23.1), as one string or as an array of lines.",
|
|
678
687
|
"oneOf": [
|
|
679
688
|
{
|
|
680
689
|
"type": "string"
|
|
@@ -28596,6 +28605,21 @@
|
|
|
28596
28605
|
}
|
|
28597
28606
|
]
|
|
28598
28607
|
},
|
|
28608
|
+
"$script": {
|
|
28609
|
+
"additionalProperties": false,
|
|
28610
|
+
"description": "This document's own modules, as TypeScript module text (spec.md §23.2). A state entry names an export of one with `$src: \"#client\"` or `$src: \"#server\"`. `client` runs in the browser; `server` runs only on the server and is never sent to one.",
|
|
28611
|
+
"properties": {
|
|
28612
|
+
"client": {
|
|
28613
|
+
"description": "The module the browser runs. A Function entry with `$src: \"#client\"` is one of its exports.",
|
|
28614
|
+
"type": "string"
|
|
28615
|
+
},
|
|
28616
|
+
"server": {
|
|
28617
|
+
"description": "The module the server runs. A `timing: \"server\"` entry with `$src: \"#server\"` is one of its exports, called with `(args, env)`.",
|
|
28618
|
+
"type": "string"
|
|
28619
|
+
}
|
|
28620
|
+
},
|
|
28621
|
+
"type": "object"
|
|
28622
|
+
},
|
|
28599
28623
|
"$shadow": {
|
|
28600
28624
|
"description": "Render this component into a shadow root instead of the light DOM (spec.md §16.6). Off unless set: a shadow root isolates the component's styles from the page and replaces the <slot> emulation with real slot distribution, so it changes how the component composes. Overrides `defaults.shadow` in both directions — `false` opts one component out of a project that opted in.",
|
|
28601
28625
|
"oneOf": [
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/- kdl-version 2
|
|
2
|
+
$elements (ref)"../components/pf-nav.jxn" (ref)"../components/pf-footer.jxn"
|
|
3
|
+
|
|
4
|
+
div {
|
|
5
|
+
style minHeight="100vh" display=flex flexDirection=column backgroundColor="var(--color-paper)"
|
|
6
|
+
pf-nav
|
|
7
|
+
main {
|
|
8
|
+
style flex="1"
|
|
9
|
+
div {
|
|
10
|
+
style {
|
|
11
|
+
maxWidth "1040px"
|
|
12
|
+
margin "0 auto"
|
|
13
|
+
padding "clamp(2.5rem, 6vw, 4.5rem) 1.5rem clamp(3rem, 8vw, 5rem)"
|
|
14
|
+
display grid
|
|
15
|
+
gridTemplateColumns "minmax(0, 200px) minmax(0, 1fr)"
|
|
16
|
+
gap "clamp(2rem, 5vw, 4rem)"
|
|
17
|
+
alignItems start
|
|
18
|
+
@--md gridTemplateColumns="1fr" gap="2rem"
|
|
19
|
+
}
|
|
20
|
+
aside {
|
|
21
|
+
style {
|
|
22
|
+
position sticky
|
|
23
|
+
top "6rem"
|
|
24
|
+
borderTop "3px solid var(--color-accent)"
|
|
25
|
+
paddingTop "1.25rem"
|
|
26
|
+
@--md position=static borderTop="1px solid var(--color-rule)"
|
|
27
|
+
}
|
|
28
|
+
div {
|
|
29
|
+
style display=flex alignItems=baseline gap="0.5rem" marginBottom="1.5rem"
|
|
30
|
+
span Meridian {
|
|
31
|
+
style {
|
|
32
|
+
fontFamily "var(--font-serif)"
|
|
33
|
+
fontSize "1.15rem"
|
|
34
|
+
fontWeight "600"
|
|
35
|
+
color "var(--color-ink)"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
span Quarterly {
|
|
39
|
+
style {
|
|
40
|
+
fontFamily "var(--font-sans)"
|
|
41
|
+
fontSize "0.62rem"
|
|
42
|
+
fontWeight "600"
|
|
43
|
+
textTransform uppercase
|
|
44
|
+
letterSpacing "0.22em"
|
|
45
|
+
color "var(--color-accent)"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
div {
|
|
50
|
+
style {
|
|
51
|
+
fontFamily "var(--font-sans)"
|
|
52
|
+
fontSize "0.68rem"
|
|
53
|
+
fontWeight "600"
|
|
54
|
+
textTransform uppercase
|
|
55
|
+
letterSpacing "0.14em"
|
|
56
|
+
color "var(--color-muted)"
|
|
57
|
+
lineHeight "1.8"
|
|
58
|
+
paddingBottom "1.25rem"
|
|
59
|
+
marginBottom "1.25rem"
|
|
60
|
+
borderBottom "1px solid var(--color-hairline)"
|
|
61
|
+
}
|
|
62
|
+
div "Filed under"
|
|
63
|
+
div Insight {
|
|
64
|
+
style color="var(--color-ink)"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
a href="/insights/" "← All insights" {
|
|
68
|
+
style {
|
|
69
|
+
fontFamily "var(--font-sans)"
|
|
70
|
+
fontSize "0.72rem"
|
|
71
|
+
fontWeight "600"
|
|
72
|
+
textTransform uppercase
|
|
73
|
+
letterSpacing "0.14em"
|
|
74
|
+
color "var(--color-ink)"
|
|
75
|
+
textDecoration none
|
|
76
|
+
transition "color 0.15s"
|
|
77
|
+
:hover color="var(--color-accent)"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
div {
|
|
82
|
+
style maxWidth="var(--measure)" minWidth="0"
|
|
83
|
+
slot
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
pf-footer
|
|
88
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/- kdl-version 2
|
|
2
|
+
$elements (ref)"../components/pf-nav.jxn" (ref)"../components/pf-footer.jxn"
|
|
3
|
+
|
|
4
|
+
div {
|
|
5
|
+
style minHeight="100vh" display=flex flexDirection=column backgroundColor="var(--color-paper)"
|
|
6
|
+
pf-nav
|
|
7
|
+
main {
|
|
8
|
+
style flex="1"
|
|
9
|
+
slot
|
|
10
|
+
}
|
|
11
|
+
pf-footer
|
|
12
|
+
}
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
"dev": "jx dev"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@jxsuite/parser": "^
|
|
12
|
+
"@jxsuite/parser": "^5.0.0"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"@jxsuite/compiler": "^8.
|
|
16
|
-
"@jxsuite/runtime": "^
|
|
15
|
+
"@jxsuite/compiler": "^8.7.0",
|
|
16
|
+
"@jxsuite/runtime": "^7.0.0"
|
|
17
17
|
}
|
|
18
18
|
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/- kdl-version 2
|
|
2
|
+
$layout "./layouts/article.jxn"
|
|
3
|
+
$paths contentType=insights param=slug field=id
|
|
4
|
+
|
|
5
|
+
$element .title="${state.entry.data.title} — Meridian Advisory" {
|
|
6
|
+
state {
|
|
7
|
+
entry {
|
|
8
|
+
$prototype ContentEntry
|
|
9
|
+
$src "@jxsuite/parser/ContentEntry.class.json"
|
|
10
|
+
contentType insights
|
|
11
|
+
field id
|
|
12
|
+
id (ref)"#/$params/slug"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
article {
|
|
16
|
+
pf-article-header {
|
|
17
|
+
$props {
|
|
18
|
+
eyebrow "${state.entry.data.category}"
|
|
19
|
+
title "${state.entry.data.title}"
|
|
20
|
+
date "${state.entry.data.date}"
|
|
21
|
+
author "${state.entry.data.author}"
|
|
22
|
+
readingTime "${state.entry._meta.readingTime}"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
div {
|
|
26
|
+
style {
|
|
27
|
+
fontFamily "var(--font-serif)"
|
|
28
|
+
fontSize "1.2rem"
|
|
29
|
+
lineHeight "1.8"
|
|
30
|
+
color "var(--color-ink)"
|
|
31
|
+
"& p:first-of-type::first-letter" {
|
|
32
|
+
float left
|
|
33
|
+
fontFamily "var(--font-serif)"
|
|
34
|
+
fontSize "3.6em"
|
|
35
|
+
lineHeight "0.82"
|
|
36
|
+
fontWeight "600"
|
|
37
|
+
padding "0.02em 0.14em 0 0"
|
|
38
|
+
color "var(--color-accent)"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
.children {
|
|
42
|
+
$array items=(ref)"#/state/entry/$children" {
|
|
43
|
+
p "${item.textContent}" {
|
|
44
|
+
style margin="0 0 1.5rem"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
div "Written by ${state.entry.data.author} · Meridian Advisory" {
|
|
50
|
+
style {
|
|
51
|
+
marginTop "2.5rem"
|
|
52
|
+
paddingTop "1.5rem"
|
|
53
|
+
borderTop "1px solid var(--color-hairline)"
|
|
54
|
+
fontFamily "var(--font-sans)"
|
|
55
|
+
fontSize "0.78rem"
|
|
56
|
+
textTransform uppercase
|
|
57
|
+
letterSpacing "0.12em"
|
|
58
|
+
color "var(--color-muted)"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
div {
|
|
62
|
+
style {
|
|
63
|
+
marginTop "2.5rem"
|
|
64
|
+
backgroundColor "var(--color-ink-deep)"
|
|
65
|
+
color "var(--color-text-white)"
|
|
66
|
+
borderTop "3px solid var(--color-accent)"
|
|
67
|
+
padding "2rem"
|
|
68
|
+
display flex
|
|
69
|
+
flexWrap wrap
|
|
70
|
+
alignItems center
|
|
71
|
+
justifyContent space-between
|
|
72
|
+
gap "1.25rem"
|
|
73
|
+
}
|
|
74
|
+
div {
|
|
75
|
+
div "Have a question this raised?" {
|
|
76
|
+
style {
|
|
77
|
+
fontFamily "var(--font-serif)"
|
|
78
|
+
fontSize "1.35rem"
|
|
79
|
+
fontWeight "500"
|
|
80
|
+
marginBottom "0.3rem"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
div "Book a free consultation with a Meridian advisor." {
|
|
84
|
+
style color="rgba(244,241,233,0.75)" fontSize="0.95rem"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
a href="/contact/" "Book a consultation" {
|
|
88
|
+
style {
|
|
89
|
+
display inline-block
|
|
90
|
+
backgroundColor "var(--color-accent)"
|
|
91
|
+
color "var(--color-ink-deep)"
|
|
92
|
+
padding "0.85rem 1.75rem"
|
|
93
|
+
fontFamily "var(--font-sans)"
|
|
94
|
+
fontSize "0.76rem"
|
|
95
|
+
fontWeight "600"
|
|
96
|
+
textTransform uppercase
|
|
97
|
+
letterSpacing "0.14em"
|
|
98
|
+
textDecoration none
|
|
99
|
+
whiteSpace nowrap
|
|
100
|
+
transition "background-color 0.15s"
|
|
101
|
+
:hover backgroundColor="#b0904c"
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/- kdl-version 2
|
|
2
|
+
|
|
3
|
+
re-agent-band {
|
|
4
|
+
state {
|
|
5
|
+
eyebrow "Your north shore team"
|
|
6
|
+
heading ""
|
|
7
|
+
text ""
|
|
8
|
+
phone "(555) 204-7788"
|
|
9
|
+
cta "Book a call"
|
|
10
|
+
ctaHref "/contact/"
|
|
11
|
+
cta2 "Meet the team"
|
|
12
|
+
cta2Href "/about/"
|
|
13
|
+
img1 type=string format=image default="/images/agent-1.jpg"
|
|
14
|
+
img2 type=string format=image default="/images/agent-2.jpg"
|
|
15
|
+
img3 type=string format=image default="/images/agent-3.jpg"
|
|
16
|
+
}
|
|
17
|
+
style display=block padding="clamp(2.5rem, 6vw, 4rem) 1.5rem"
|
|
18
|
+
div {
|
|
19
|
+
style {
|
|
20
|
+
maxWidth "var(--max-width)"
|
|
21
|
+
margin "0 auto"
|
|
22
|
+
position relative
|
|
23
|
+
overflow hidden
|
|
24
|
+
borderRadius "var(--radius-lg)"
|
|
25
|
+
background "radial-gradient(ellipse 60% 90% at 8% 0%, rgba(20,184,166,0.28), transparent 60%), radial-gradient(ellipse 50% 80% at 100% 100%, rgba(13,148,136,0.22), transparent 60%), var(--color-bg-dark)"
|
|
26
|
+
border "1px solid var(--color-bg-ink-soft)"
|
|
27
|
+
padding "clamp(2rem, 4vw, 3.25rem)"
|
|
28
|
+
display grid
|
|
29
|
+
gridTemplateColumns "auto 1fr"
|
|
30
|
+
gap "clamp(1.5rem, 4vw, 3.5rem)"
|
|
31
|
+
alignItems center
|
|
32
|
+
@--md gridTemplateColumns="1fr" gap="1.75rem"
|
|
33
|
+
}
|
|
34
|
+
div {
|
|
35
|
+
style display=flex flexDirection=column gap="1rem"
|
|
36
|
+
div {
|
|
37
|
+
style display=flex alignItems=center
|
|
38
|
+
img src="${state.img1}" alt="Northshore Realty agent" loading=lazy width="72" height="72" {
|
|
39
|
+
style {
|
|
40
|
+
width "4.5rem"
|
|
41
|
+
height "4.5rem"
|
|
42
|
+
borderRadius "999px"
|
|
43
|
+
objectFit cover
|
|
44
|
+
border "3px solid var(--color-bg-dark)"
|
|
45
|
+
boxShadow "0 6px 18px rgba(0,0,0,0.4)"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
img src="${state.img2}" alt="Northshore Realty agent" loading=lazy width="72" height="72" {
|
|
49
|
+
style {
|
|
50
|
+
width "4.5rem"
|
|
51
|
+
height "4.5rem"
|
|
52
|
+
borderRadius "999px"
|
|
53
|
+
objectFit cover
|
|
54
|
+
border "3px solid var(--color-bg-dark)"
|
|
55
|
+
marginLeft "-1.1rem"
|
|
56
|
+
boxShadow "0 6px 18px rgba(0,0,0,0.4)"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
img src="${state.img3}" alt="Northshore Realty agent" loading=lazy width="72" height="72" {
|
|
60
|
+
style {
|
|
61
|
+
width "4.5rem"
|
|
62
|
+
height "4.5rem"
|
|
63
|
+
borderRadius "999px"
|
|
64
|
+
objectFit cover
|
|
65
|
+
border "3px solid var(--color-bg-dark)"
|
|
66
|
+
marginLeft "-1.1rem"
|
|
67
|
+
boxShadow "0 6px 18px rgba(0,0,0,0.4)"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
div {
|
|
72
|
+
style {
|
|
73
|
+
display inline-flex
|
|
74
|
+
alignItems center
|
|
75
|
+
gap "0.4rem"
|
|
76
|
+
color "var(--color-accent-bright)"
|
|
77
|
+
fontWeight "700"
|
|
78
|
+
fontSize "0.9rem"
|
|
79
|
+
}
|
|
80
|
+
span ★★★★★
|
|
81
|
+
span "4.9 · 220 reviews" {
|
|
82
|
+
style color="rgba(255,255,255,0.6)" fontWeight="600"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
div {
|
|
87
|
+
p "${state.eyebrow}" {
|
|
88
|
+
style {
|
|
89
|
+
textTransform uppercase
|
|
90
|
+
letterSpacing "0.16em"
|
|
91
|
+
fontSize "0.74rem"
|
|
92
|
+
fontWeight "700"
|
|
93
|
+
color "var(--color-accent-bright)"
|
|
94
|
+
margin "0 0 0.8rem"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
h2 "${state.heading}" {
|
|
98
|
+
style {
|
|
99
|
+
fontFamily "var(--font-display)"
|
|
100
|
+
fontSize "clamp(1.75rem, 3.4vw, 2.6rem)"
|
|
101
|
+
fontWeight "500"
|
|
102
|
+
lineHeight "1.1"
|
|
103
|
+
letterSpacing "-0.015em"
|
|
104
|
+
margin "0 0 0.9rem"
|
|
105
|
+
color "var(--color-text-white)"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
p "${state.text}" {
|
|
109
|
+
style {
|
|
110
|
+
fontSize "1.05rem"
|
|
111
|
+
lineHeight "1.65"
|
|
112
|
+
color "rgba(255,255,255,0.72)"
|
|
113
|
+
margin "0 0 1.75rem"
|
|
114
|
+
maxWidth "48ch"
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
div {
|
|
118
|
+
style display=flex alignItems=center gap="1.25rem" flexWrap=wrap
|
|
119
|
+
a href="${state.ctaHref}" {
|
|
120
|
+
style {
|
|
121
|
+
display inline-flex
|
|
122
|
+
alignItems center
|
|
123
|
+
gap "0.5rem"
|
|
124
|
+
backgroundColor "var(--color-accent-bright)"
|
|
125
|
+
color "var(--color-ink)"
|
|
126
|
+
padding "0.85rem 1.6rem"
|
|
127
|
+
borderRadius "999px"
|
|
128
|
+
fontSize "1rem"
|
|
129
|
+
fontWeight "700"
|
|
130
|
+
textDecoration none
|
|
131
|
+
transition "transform 0.15s, box-shadow 0.15s"
|
|
132
|
+
boxShadow "0 12px 30px -12px rgba(20,184,166,0.7)"
|
|
133
|
+
:hover {
|
|
134
|
+
transform "translateY(-2px)"
|
|
135
|
+
boxShadow "0 18px 40px -12px rgba(20,184,166,0.8)"
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
span "${state.cta}"
|
|
139
|
+
span →
|
|
140
|
+
}
|
|
141
|
+
a href=tel:+15552047788 {
|
|
142
|
+
style display=inline-flex flexDirection=column textDecoration=none
|
|
143
|
+
span "Call us" {
|
|
144
|
+
style {
|
|
145
|
+
fontSize "0.72rem"
|
|
146
|
+
textTransform uppercase
|
|
147
|
+
letterSpacing "0.12em"
|
|
148
|
+
color "rgba(255,255,255,0.5)"
|
|
149
|
+
fontWeight "700"
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
span "${state.phone}" {
|
|
153
|
+
style {
|
|
154
|
+
fontSize "1.2rem"
|
|
155
|
+
fontWeight "800"
|
|
156
|
+
color "var(--color-text-white)"
|
|
157
|
+
fontVariantNumeric tabular-nums
|
|
158
|
+
letterSpacing "-0.01em"
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/- kdl-version 2
|
|
2
|
+
|
|
3
|
+
re-agent-card {
|
|
4
|
+
state {
|
|
5
|
+
name ""
|
|
6
|
+
role ""
|
|
7
|
+
phone ""
|
|
8
|
+
image type=string format=image default=""
|
|
9
|
+
}
|
|
10
|
+
style {
|
|
11
|
+
display block
|
|
12
|
+
backgroundColor "var(--color-bg-white)"
|
|
13
|
+
border "1px solid var(--color-border)"
|
|
14
|
+
borderRadius "var(--radius)"
|
|
15
|
+
overflow hidden
|
|
16
|
+
transition "transform 0.2s, box-shadow 0.2s"
|
|
17
|
+
:hover transform="translateY(-3px)" boxShadow="var(--shadow-card)"
|
|
18
|
+
":hover img" transform="scale(1.04)"
|
|
19
|
+
}
|
|
20
|
+
div {
|
|
21
|
+
style {
|
|
22
|
+
position relative
|
|
23
|
+
overflow hidden
|
|
24
|
+
aspectRatio "1 / 1"
|
|
25
|
+
backgroundColor "var(--color-bg-tint)"
|
|
26
|
+
}
|
|
27
|
+
img src="${state.image}" alt="${state.name}" loading=lazy {
|
|
28
|
+
style {
|
|
29
|
+
position absolute
|
|
30
|
+
inset "0"
|
|
31
|
+
width "100%"
|
|
32
|
+
height "100%"
|
|
33
|
+
objectFit cover
|
|
34
|
+
display block
|
|
35
|
+
transition "transform 0.5s cubic-bezier(0.22, 1, 0.36, 1)"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
div {
|
|
40
|
+
style padding="1.25rem"
|
|
41
|
+
p "${state.role}" {
|
|
42
|
+
style {
|
|
43
|
+
margin "0 0 0.5rem"
|
|
44
|
+
color "var(--color-primary)"
|
|
45
|
+
fontSize "0.72rem"
|
|
46
|
+
fontWeight "700"
|
|
47
|
+
textTransform uppercase
|
|
48
|
+
letterSpacing "0.1em"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
h3 "${state.name}" {
|
|
52
|
+
style {
|
|
53
|
+
fontFamily "var(--font-heading)"
|
|
54
|
+
fontSize "1.2rem"
|
|
55
|
+
fontWeight "700"
|
|
56
|
+
letterSpacing "-0.01em"
|
|
57
|
+
margin "0 0 0.6rem"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
a href="tel:${state.phone}" {
|
|
61
|
+
style {
|
|
62
|
+
display inline-flex
|
|
63
|
+
alignItems center
|
|
64
|
+
gap "0.4rem"
|
|
65
|
+
color "var(--color-text-secondary)"
|
|
66
|
+
fontSize "0.92rem"
|
|
67
|
+
fontWeight "600"
|
|
68
|
+
textDecoration none
|
|
69
|
+
fontVariantNumeric tabular-nums
|
|
70
|
+
:hover color="var(--color-primary)"
|
|
71
|
+
}
|
|
72
|
+
span ☎ {
|
|
73
|
+
style fontSize="0.85rem"
|
|
74
|
+
}
|
|
75
|
+
span "${state.phone}"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/- kdl-version 2
|
|
2
|
+
|
|
3
|
+
re-contact-form {
|
|
4
|
+
state note="This is a demo form. Wire it to your CRM or email in pages/contact.md."
|
|
5
|
+
style display=block
|
|
6
|
+
form action="#" method=post {
|
|
7
|
+
style display=grid gap="0.9rem" marginTop="1.5rem"
|
|
8
|
+
input type=text name=name placeholder="Your name" required="true" aria-label="Your name" {
|
|
9
|
+
style {
|
|
10
|
+
width "100%"
|
|
11
|
+
padding "0.8rem 0.95rem"
|
|
12
|
+
border "1px solid var(--color-border-strong)"
|
|
13
|
+
borderRadius "var(--radius-sm)"
|
|
14
|
+
fontSize "1rem"
|
|
15
|
+
fontFamily inherit
|
|
16
|
+
backgroundColor "var(--color-bg-white)"
|
|
17
|
+
outline none
|
|
18
|
+
transition "border-color 0.15s, box-shadow 0.15s"
|
|
19
|
+
:focus {
|
|
20
|
+
borderColor "var(--color-primary)"
|
|
21
|
+
boxShadow "0 0 0 3px var(--color-accent-soft)"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
input type=email name=email placeholder="Email address" required="true" aria-label="Email address" {
|
|
26
|
+
style {
|
|
27
|
+
width "100%"
|
|
28
|
+
padding "0.8rem 0.95rem"
|
|
29
|
+
border "1px solid var(--color-border-strong)"
|
|
30
|
+
borderRadius "var(--radius-sm)"
|
|
31
|
+
fontSize "1rem"
|
|
32
|
+
fontFamily inherit
|
|
33
|
+
backgroundColor "var(--color-bg-white)"
|
|
34
|
+
outline none
|
|
35
|
+
transition "border-color 0.15s, box-shadow 0.15s"
|
|
36
|
+
:focus {
|
|
37
|
+
borderColor "var(--color-primary)"
|
|
38
|
+
boxShadow "0 0 0 3px var(--color-accent-soft)"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
div {
|
|
43
|
+
style display=grid gridTemplateColumns="1fr 1fr" gap="0.9rem" {
|
|
44
|
+
@--sm gridTemplateColumns="1fr"
|
|
45
|
+
}
|
|
46
|
+
input type=text name=intent placeholder="Buying or selling?" aria-label="Buying or selling" {
|
|
47
|
+
style {
|
|
48
|
+
width "100%"
|
|
49
|
+
padding "0.8rem 0.95rem"
|
|
50
|
+
border "1px solid var(--color-border-strong)"
|
|
51
|
+
borderRadius "var(--radius-sm)"
|
|
52
|
+
fontSize "1rem"
|
|
53
|
+
fontFamily inherit
|
|
54
|
+
backgroundColor "var(--color-bg-white)"
|
|
55
|
+
outline none
|
|
56
|
+
transition "border-color 0.15s, box-shadow 0.15s"
|
|
57
|
+
:focus {
|
|
58
|
+
borderColor "var(--color-primary)"
|
|
59
|
+
boxShadow "0 0 0 3px var(--color-accent-soft)"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
input type=text name=area placeholder="Preferred area" aria-label="Preferred area" {
|
|
64
|
+
style {
|
|
65
|
+
width "100%"
|
|
66
|
+
padding "0.8rem 0.95rem"
|
|
67
|
+
border "1px solid var(--color-border-strong)"
|
|
68
|
+
borderRadius "var(--radius-sm)"
|
|
69
|
+
fontSize "1rem"
|
|
70
|
+
fontFamily inherit
|
|
71
|
+
backgroundColor "var(--color-bg-white)"
|
|
72
|
+
outline none
|
|
73
|
+
transition "border-color 0.15s, box-shadow 0.15s"
|
|
74
|
+
:focus {
|
|
75
|
+
borderColor "var(--color-primary)"
|
|
76
|
+
boxShadow "0 0 0 3px var(--color-accent-soft)"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
textarea name=notes rows="4" placeholder="What are you looking for? Budget, bedrooms, timing…" aria-label=Notes {
|
|
82
|
+
style {
|
|
83
|
+
width "100%"
|
|
84
|
+
padding "0.8rem 0.95rem"
|
|
85
|
+
border "1px solid var(--color-border-strong)"
|
|
86
|
+
borderRadius "var(--radius-sm)"
|
|
87
|
+
fontSize "1rem"
|
|
88
|
+
fontFamily inherit
|
|
89
|
+
backgroundColor "var(--color-bg-white)"
|
|
90
|
+
outline none
|
|
91
|
+
resize vertical
|
|
92
|
+
transition "border-color 0.15s, box-shadow 0.15s"
|
|
93
|
+
:focus {
|
|
94
|
+
borderColor "var(--color-primary)"
|
|
95
|
+
boxShadow "0 0 0 3px var(--color-accent-soft)"
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
button type=submit "Request a call" {
|
|
100
|
+
style {
|
|
101
|
+
backgroundColor "var(--color-primary)"
|
|
102
|
+
color "var(--color-text-white)"
|
|
103
|
+
padding "0.9rem 1.6rem"
|
|
104
|
+
border none
|
|
105
|
+
borderRadius "999px"
|
|
106
|
+
fontSize "1rem"
|
|
107
|
+
fontFamily inherit
|
|
108
|
+
fontWeight "700"
|
|
109
|
+
cursor pointer
|
|
110
|
+
justifySelf start
|
|
111
|
+
transition "background-color 0.15s, transform 0.15s"
|
|
112
|
+
:hover backgroundColor="var(--color-primary-hover)" transform="translateY(-1px)"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
p "${state.note}" {
|
|
117
|
+
style fontSize="0.85rem" color="var(--color-text-muted)" margin="1rem 0 0"
|
|
118
|
+
}
|
|
119
|
+
}
|