@jxsuite/starters 0.34.0 → 0.35.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 -2
- package/registry.json +19 -19
- package/sites/blog/components/bl-author-bio.json +19 -15
- package/sites/blog/components/bl-cta.json +20 -14
- package/sites/blog/components/bl-footer.json +67 -90
- package/sites/blog/components/bl-masthead.json +96 -90
- package/sites/blog/components/bl-nav.json +23 -30
- package/sites/blog/components/bl-newsletter-cta.json +53 -39
- package/sites/blog/components/bl-post-card.json +70 -52
- package/sites/blog/components/bl-post-list.json +2 -9
- package/sites/blog/components/bl-prose.json +33 -18
- package/sites/blog/components/bl-section-header.json +46 -29
- package/sites/blog/components/bl-tag-pill.json +11 -8
- package/sites/blog/package.json +2 -2
- package/sites/blog/pages/index.md +26 -24
- package/sites/blog/project.json +19 -16
- package/sites/course/components/co-application.json +158 -103
- package/sites/course/components/co-cohort.json +172 -0
- package/sites/course/components/co-cta.json +70 -18
- package/sites/course/components/co-curriculum-accordion.json +12 -12
- package/sites/course/components/co-footer.json +83 -33
- package/sites/course/components/co-hero.json +385 -49
- package/sites/course/components/co-instructor-card.json +105 -22
- package/sites/course/components/co-mentor.json +65 -0
- package/sites/course/components/co-module-card.json +98 -53
- package/sites/course/components/co-nav.json +194 -69
- package/sites/course/components/co-outcome-card.json +41 -15
- package/sites/course/components/co-outcomes.json +248 -0
- package/sites/course/components/co-pricing.json +70 -25
- package/sites/course/components/co-section-header.json +36 -15
- package/sites/course/components/co-testimonial-card.json +70 -15
- package/sites/course/pages/about.md +10 -11
- package/sites/course/pages/curriculum.md +8 -4
- package/sites/course/pages/enroll.md +6 -7
- package/sites/course/pages/index.md +41 -29
- package/sites/course/project.json +64 -23
- package/sites/event/components/ev-agenda-tabs.json +526 -240
- package/sites/event/components/ev-cta.json +56 -27
- package/sites/event/components/ev-feature.json +14 -10
- package/sites/event/components/ev-footer.json +82 -30
- package/sites/event/components/ev-hero.json +307 -72
- package/sites/event/components/ev-nav.json +97 -34
- package/sites/event/components/ev-reason.json +64 -0
- package/sites/event/components/ev-savedate.json +160 -73
- package/sites/event/components/ev-section-header.json +30 -13
- package/sites/event/components/ev-session-row.json +96 -36
- package/sites/event/components/ev-speaker-card.json +63 -17
- package/sites/event/components/ev-sponsors.json +131 -0
- package/sites/event/components/ev-stat.json +17 -12
- package/sites/event/components/ev-ticket-card.json +58 -40
- package/sites/event/components/ev-venue.json +39 -12
- package/sites/event/layouts/base.json +1 -1
- package/sites/event/pages/index.md +38 -14
- package/sites/event/pages/schedule.md +19 -16
- package/sites/event/project.json +88 -26
- package/sites/fitness-studio/components/fs-band.json +149 -0
- package/sites/fitness-studio/components/fs-booking.json +147 -0
- package/sites/fitness-studio/components/fs-class-card.json +62 -31
- package/sites/fitness-studio/components/fs-cta.json +63 -19
- package/sites/fitness-studio/components/fs-feature.json +20 -6
- package/sites/fitness-studio/components/fs-footer.json +62 -29
- package/sites/fitness-studio/components/fs-hero.json +296 -49
- package/sites/fitness-studio/components/fs-hours.json +40 -21
- package/sites/fitness-studio/components/fs-instructor-card.json +94 -31
- package/sites/fitness-studio/components/fs-intro.json +258 -23
- package/sites/fitness-studio/components/fs-modality.json +171 -0
- package/sites/fitness-studio/components/fs-nav.json +55 -24
- package/sites/fitness-studio/components/fs-pricing-card.json +71 -51
- package/sites/fitness-studio/components/fs-review.json +52 -18
- package/sites/fitness-studio/components/fs-schedule.json +1165 -0
- package/sites/fitness-studio/components/fs-section-header.json +44 -20
- package/sites/fitness-studio/pages/classes.md +11 -5
- package/sites/fitness-studio/pages/contact.md +7 -29
- package/sites/fitness-studio/pages/index.md +29 -52
- package/sites/fitness-studio/pages/pricing.md +7 -7
- package/sites/fitness-studio/project.json +99 -26
- package/sites/home-services/components/hs-callbar.json +72 -0
- package/sites/home-services/components/hs-cta.json +121 -60
- package/sites/home-services/components/hs-feature.json +42 -23
- package/sites/home-services/components/hs-footer.json +108 -33
- package/sites/home-services/components/hs-gallery.json +66 -15
- package/sites/home-services/components/hs-hero.json +360 -42
- package/sites/home-services/components/hs-intro.json +70 -7
- package/sites/home-services/components/hs-nav.json +233 -68
- package/sites/home-services/components/hs-reservation.json +125 -46
- package/sites/home-services/components/hs-review.json +76 -16
- package/sites/home-services/components/hs-section-header.json +31 -14
- package/sites/home-services/components/hs-service-card.json +34 -24
- package/sites/home-services/components/hs-stat.json +54 -0
- package/sites/home-services/components/hs-step.json +40 -13
- package/sites/home-services/components/hs-trust-bar.json +188 -40
- package/sites/home-services/layouts/base.json +4 -2
- package/sites/home-services/pages/about.md +33 -2
- package/sites/home-services/pages/contact.md +23 -10
- package/sites/home-services/pages/index.md +33 -7
- package/sites/home-services/pages/services.md +34 -3
- package/sites/home-services/project.json +82 -22
- package/sites/nonprofit/components/np-contact-form.json +52 -24
- package/sites/nonprofit/components/np-contact-info.json +27 -21
- package/sites/nonprofit/components/np-cta.json +152 -77
- package/sites/nonprofit/components/np-donate-tier.json +59 -32
- package/sites/nonprofit/components/np-feature.json +13 -9
- package/sites/nonprofit/components/np-footer.json +106 -36
- package/sites/nonprofit/components/np-hero.json +274 -46
- package/sites/nonprofit/components/np-impact-band.json +108 -0
- package/sites/nonprofit/components/np-intro.json +126 -19
- package/sites/nonprofit/components/np-nav.json +161 -82
- package/sites/nonprofit/components/np-program-card.json +83 -23
- package/sites/nonprofit/components/np-section-header.json +40 -14
- package/sites/nonprofit/components/np-stat.json +36 -15
- package/sites/nonprofit/components/np-step.json +46 -17
- package/sites/nonprofit/components/np-team-member.json +26 -19
- package/sites/nonprofit/components/np-testimonial.json +144 -29
- package/sites/nonprofit/pages/about.md +17 -16
- package/sites/nonprofit/pages/contact.md +4 -4
- package/sites/nonprofit/pages/get-involved.md +23 -23
- package/sites/nonprofit/pages/index.md +29 -44
- package/sites/nonprofit/pages/programs.md +12 -14
- package/sites/nonprofit/project.json +74 -28
- package/sites/portfolio/components/pv-about-split.json +21 -9
- package/sites/portfolio/components/pv-category-pill.json +7 -6
- package/sites/portfolio/components/pv-contact-form.json +34 -45
- package/sites/portfolio/components/pv-cta.json +35 -19
- package/sites/portfolio/components/pv-footer.json +97 -75
- package/sites/portfolio/components/pv-hero.json +77 -70
- package/sites/portfolio/components/pv-nav.json +32 -38
- package/sites/portfolio/components/pv-project-card.json +118 -61
- package/sites/portfolio/components/pv-project-grid.json +24 -16
- package/sites/portfolio/components/pv-section-header.json +74 -37
- package/sites/portfolio/layouts/base.json +1 -1
- package/sites/portfolio/package.json +2 -2
- package/sites/portfolio/pages/[slug].json +1 -1
- package/sites/portfolio/pages/about.md +4 -3
- package/sites/portfolio/pages/contact.md +1 -1
- package/sites/portfolio/pages/index.md +18 -13
- package/sites/portfolio/pages/work.md +7 -7
- package/sites/portfolio/project.json +20 -16
- package/sites/professional-firm/components/pf-article-header.json +34 -20
- package/sites/professional-firm/components/pf-contact-form.json +57 -49
- package/sites/professional-firm/components/pf-contact-info.json +147 -0
- package/sites/professional-firm/components/pf-cta.json +42 -18
- package/sites/professional-firm/components/pf-feature.json +21 -24
- package/sites/professional-firm/components/pf-footer.json +107 -48
- package/sites/professional-firm/components/pf-hero.json +135 -89
- package/sites/professional-firm/components/pf-insight-row.json +144 -0
- package/sites/professional-firm/components/pf-intro.json +44 -10
- package/sites/professional-firm/components/pf-logo-bar.json +35 -34
- package/sites/professional-firm/components/pf-nav.json +67 -42
- package/sites/professional-firm/components/pf-section-header.json +46 -22
- package/sites/professional-firm/components/pf-service-row.json +104 -0
- package/sites/professional-firm/components/pf-statband.json +183 -0
- package/sites/professional-firm/components/pf-team-member.json +34 -29
- package/sites/professional-firm/content/insights/cash-flow-forecasting.md +1 -0
- package/sites/professional-firm/content/insights/choosing-business-entity.md +1 -0
- package/sites/professional-firm/content/insights/r-and-d-tax-credits.md +1 -0
- package/sites/professional-firm/content/insights/when-to-hire-cfo.md +1 -0
- package/sites/professional-firm/content/insights/year-end-tax-moves.md +1 -0
- package/sites/professional-firm/layouts/article.json +96 -14
- package/sites/professional-firm/layouts/base.json +1 -1
- package/sites/professional-firm/pages/contact.md +5 -26
- package/sites/professional-firm/pages/index.md +39 -45
- package/sites/professional-firm/pages/insights/[slug].json +44 -33
- package/sites/professional-firm/pages/insights.md +7 -11
- package/sites/professional-firm/pages/services.md +16 -16
- package/sites/professional-firm/pages/team.md +10 -10
- package/sites/professional-firm/project.json +74 -30
- package/sites/real-estate/components/re-agent-band.json +240 -0
- package/sites/real-estate/components/re-agent-card.json +51 -24
- package/sites/real-estate/components/re-contact-form.json +76 -27
- package/sites/real-estate/components/re-cta.json +91 -26
- package/sites/real-estate/components/re-feature.json +10 -6
- package/sites/real-estate/components/re-footer.json +186 -46
- package/sites/real-estate/components/re-hero.json +443 -90
- package/sites/real-estate/components/re-intro.json +6 -5
- package/sites/real-estate/components/re-listing-card.json +199 -39
- package/sites/real-estate/components/re-listings-filter.json +309 -192
- package/sites/real-estate/components/re-nav.json +138 -39
- package/sites/real-estate/components/re-neighborhood.json +135 -0
- package/sites/real-estate/components/re-section-header.json +33 -17
- package/sites/real-estate/components/re-stat.json +10 -9
- package/sites/real-estate/components/re-step.json +15 -12
- package/sites/real-estate/components/re-testimonial.json +53 -16
- package/sites/real-estate/content/listings.csv +7 -7
- package/sites/real-estate/pages/[slug].json +430 -128
- package/sites/real-estate/pages/about.md +18 -6
- package/sites/real-estate/pages/contact.md +14 -2
- package/sites/real-estate/pages/index.md +43 -26
- package/sites/real-estate/pages/listings.md +15 -3
- package/sites/real-estate/project.json +88 -30
- package/sites/real-estate/public/favicon.svg +7 -1
- package/sites/restaurant/components/bit-cta.json +92 -14
- package/sites/restaurant/components/bit-feature.json +36 -17
- package/sites/restaurant/components/bit-footer.json +80 -34
- package/sites/restaurant/components/bit-gallery.json +20 -11
- package/sites/restaurant/components/bit-hero.json +179 -54
- package/sites/restaurant/components/bit-hours.json +117 -24
- package/sites/restaurant/components/bit-intro.json +47 -10
- package/sites/restaurant/components/bit-menu-group.json +55 -10
- package/sites/restaurant/components/bit-menu-item.json +27 -12
- package/sites/restaurant/components/bit-nav.json +170 -53
- package/sites/restaurant/components/bit-reservation.json +63 -42
- package/sites/restaurant/components/bit-review.json +49 -19
- package/sites/restaurant/components/bit-section-header.json +60 -15
- package/sites/restaurant/layouts/base.json +1 -1
- package/sites/restaurant/pages/about.md +10 -10
- package/sites/restaurant/pages/contact.md +7 -7
- package/sites/restaurant/pages/index.md +30 -20
- package/sites/restaurant/pages/menu.md +8 -8
- package/sites/restaurant/project.json +71 -28
- package/sites/saas/components/sa-feature-card.json +26 -16
- package/sites/saas/components/sa-hero.json +156 -39
- package/sites/saas/components/sa-nav.json +34 -26
- package/sites/saas/components/sa-pricing.json +11 -10
- package/sites/saas/components/sa-stat.json +8 -4
- package/sites/saas/package.json +2 -2
- package/sites/saas/pages/index.md +8 -8
- package/sites/saas/project.json +24 -16
- package/sites/shop/components/shp-category-tile.json +104 -0
- package/sites/shop/components/shp-cta.json +101 -43
- package/sites/shop/components/shp-feature.json +12 -7
- package/sites/shop/components/shp-footer.json +312 -46
- package/sites/shop/components/shp-hero.json +313 -46
- package/sites/shop/components/shp-nav.json +303 -49
- package/sites/shop/components/shp-newsletter.json +166 -0
- package/sites/shop/components/shp-product-card.json +141 -34
- package/sites/shop/components/shp-product-filter.json +336 -154
- package/sites/shop/components/shp-section-header.json +42 -20
- package/sites/shop/components/shp-stat.json +6 -6
- package/sites/shop/components/shp-trust.json +58 -0
- package/sites/shop/content/product/aero-road-helmet.md +2 -0
- package/sites/shop/content/product/apex-carbon-road.md +1 -0
- package/sites/shop/content/product/backroad-gravel-adv.md +1 -0
- package/sites/shop/content/product/boulder-enduro.md +1 -0
- package/sites/shop/content/product/rambler-kids-20.md +1 -0
- package/sites/shop/content/product/summit-trail-29er.md +1 -0
- package/sites/shop/content/product/trailhead-pannier-set.md +1 -0
- package/sites/shop/content/product/velocity-alloy-road.md +2 -0
- package/sites/shop/pages/index.md +38 -26
- package/sites/shop/pages/products/[sku].json +362 -71
- package/sites/shop/pages/products.md +30 -8
- package/sites/shop/project.json +82 -28
- package/sites/course/components/co-stat.json +0 -36
- package/sites/professional-firm/components/pf-insight-card.json +0 -99
- package/sites/professional-firm/components/pf-service-card.json +0 -77
- package/sites/professional-firm/components/pf-stat.json +0 -37
|
@@ -2,8 +2,20 @@
|
|
|
2
2
|
title: "About — Northshore Realty"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
:::::section{style.padding="clamp(
|
|
6
|
-
|
|
5
|
+
:::::section{style.padding="clamp(2.5rem, 5vw, 3.5rem) 1.5rem" style.backgroundColor="var(--color-bg-cream)" style.borderBottom="1px solid var(--color-border)"}
|
|
6
|
+
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto"}
|
|
7
|
+
:::p{style.display="inline-flex" style.alignItems="center" style.gap="0.6rem" style.textTransform="uppercase" style.letterSpacing="0.14em" style.fontSize="0.74rem" style.fontWeight="700" style.color="var(--color-primary)" style.margin="0 0 0.9rem"}
|
|
8
|
+
Our story
|
|
9
|
+
:::
|
|
10
|
+
|
|
11
|
+
:::h1{style.fontFamily="var(--font-display)" style.fontSize="clamp(2rem, 4.4vw, 3.1rem)" style.fontWeight="500" style.letterSpacing="-0.015em" style.lineHeight="1.06" style.margin="0 0 0.75rem" style.color="var(--color-text-primary)" style.maxWidth="18ch"}
|
|
12
|
+
A brokerage built on the north shore
|
|
13
|
+
:::
|
|
14
|
+
|
|
15
|
+
:::p{style.fontSize="1.12rem" style.color="var(--color-text-muted)" style.margin="0" style.maxWidth="56ch"}
|
|
16
|
+
Two decades of helping neighbors buy, sell, and stay — one closing, one referral at a time.
|
|
17
|
+
:::
|
|
18
|
+
::::
|
|
7
19
|
:::::
|
|
8
20
|
|
|
9
21
|
:::re-intro{props.image="/images/about.jpg" props.imageAlt="The Northshore Realty team outside a listed home" props.reverse="true"}
|
|
@@ -15,10 +27,10 @@ Northshore Realty started with a single office on Lakeshore Drive and a simple p
|
|
|
15
27
|
Today we're a team of local agents who still answer their own phones. We know which streets flood, which schools are worth the premium, and what a home is really worth — not just what a listing says.
|
|
16
28
|
:::
|
|
17
29
|
|
|
18
|
-
:::::section{style.padding="clamp(3rem, 8vw, 5rem) 1.5rem"}
|
|
30
|
+
:::::section{style.padding="clamp(3rem, 8vw, 5rem) 1.5rem" style.backgroundColor="var(--color-bg-cream)" style.borderTop="1px solid var(--color-border)" style.borderBottom="1px solid var(--color-border)"}
|
|
19
31
|
::re-section-header{props.eyebrow="How we work" props.heading="Buying a home, without the whiplash"}
|
|
20
32
|
|
|
21
|
-
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.display="grid" style.gridTemplateColumns="repeat(3, 1fr)" style.gap="
|
|
33
|
+
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.display="grid" style.gridTemplateColumns="repeat(3, 1fr)" style.gap="1.35rem" style.--md.gridTemplateColumns="1fr"}
|
|
22
34
|
::re-step{props.number="1" props.title="Tell us your search" props.text="Budget, bedrooms, neighborhoods, must-haves. We build a shortlist so you only tour homes worth your Saturday."}
|
|
23
35
|
|
|
24
36
|
::re-step{props.number="2" props.title="See it clearly" props.text="Honest walkthroughs, real comps, and a fair-price read on every home — before you fall in love or make an offer."}
|
|
@@ -27,7 +39,7 @@ Today we're a team of local agents who still answer their own phones. We know wh
|
|
|
27
39
|
::::
|
|
28
40
|
:::::
|
|
29
41
|
|
|
30
|
-
:::::section{style.padding="clamp(
|
|
42
|
+
:::::section{style.padding="clamp(3.5rem, 8vw, 5.5rem) 1.5rem"}
|
|
31
43
|
::re-section-header{props.eyebrow="Meet the team" props.heading="Agents who know the neighborhood"}
|
|
32
44
|
|
|
33
45
|
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.display="grid" style.gridTemplateColumns="repeat(3, 1fr)" style.gap="1.5rem" style.--md.gridTemplateColumns="1fr"}
|
|
@@ -39,4 +51,4 @@ Today we're a team of local agents who still answer their own phones. We know wh
|
|
|
39
51
|
::::
|
|
40
52
|
:::::
|
|
41
53
|
|
|
42
|
-
::re-cta{props.heading="Let's find your north shore home" props.text="Whether you're buying your first place or selling the family house, we'd be honored to help." props.cta="Get in
|
|
54
|
+
::re-cta{props.heading="Let's find your north shore home" props.text="Whether you're buying your first place or selling the family house, we'd be honored to help." props.cta="Get in touch" props.ctaHref="/contact/" props.cta2="Browse listings" props.cta2Href="/listings/"}
|
|
@@ -2,8 +2,20 @@
|
|
|
2
2
|
title: "Contact — Northshore Realty"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
:::::section{style.padding="clamp(
|
|
6
|
-
|
|
5
|
+
:::::section{style.padding="clamp(2.5rem, 5vw, 3.5rem) 1.5rem" style.backgroundColor="var(--color-bg-cream)" style.borderBottom="1px solid var(--color-border)"}
|
|
6
|
+
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto"}
|
|
7
|
+
:::p{style.display="inline-flex" style.alignItems="center" style.gap="0.6rem" style.textTransform="uppercase" style.letterSpacing="0.14em" style.fontSize="0.74rem" style.fontWeight="700" style.color="var(--color-primary)" style.margin="0 0 0.9rem"}
|
|
8
|
+
Get in touch
|
|
9
|
+
:::
|
|
10
|
+
|
|
11
|
+
:::h1{style.fontFamily="var(--font-display)" style.fontSize="clamp(2rem, 4.4vw, 3.1rem)" style.fontWeight="500" style.letterSpacing="-0.015em" style.lineHeight="1.06" style.margin="0 0 0.75rem" style.color="var(--color-text-primary)"}
|
|
12
|
+
Talk to a local agent
|
|
13
|
+
:::
|
|
14
|
+
|
|
15
|
+
:::p{style.fontSize="1.12rem" style.color="var(--color-text-muted)" style.margin="0" style.maxWidth="56ch"}
|
|
16
|
+
Tell us what you're looking for. We'll reply within one business day.
|
|
17
|
+
:::
|
|
18
|
+
::::
|
|
7
19
|
:::::
|
|
8
20
|
|
|
9
21
|
::::::section{style.maxWidth="var(--max-width)" style.margin="0 auto" style.padding="clamp(3rem, 6vw, 4.5rem) 1.5rem"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Northshore Realty —
|
|
2
|
+
title: "Northshore Realty — Search homes on the north shore"
|
|
3
3
|
state:
|
|
4
4
|
featured:
|
|
5
5
|
$prototype: ContentCollection
|
|
@@ -11,38 +11,49 @@ state:
|
|
|
11
11
|
limit: 3
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
-
::re-hero{props.eyebrow="
|
|
14
|
+
::re-hero{props.eyebrow="142 active listings · updated daily" props.heading="Find the home that fits your life on the north shore." props.subheading="Search live listings from Bayport to Harbor Hills — filter by price, beds, and baths, then tour with agents who actually live here." props.cta="Search homes" props.ctaHref="/listings/" props.bg="/images/hero.jpg"}
|
|
15
15
|
|
|
16
|
-
:::::section{style.padding="clamp(3.5rem, 8vw, 5.5rem)
|
|
17
|
-
::re-section-header{props.eyebrow="
|
|
16
|
+
:::::section{style.padding="clamp(3.5rem, 8vw, 5.5rem) 0"}
|
|
17
|
+
::re-section-header{props.eyebrow="Just listed" props.heading="Newest on the market" props.subheading="A first look at three homes that just came to the north shore market this week."}
|
|
18
18
|
|
|
19
|
-
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.display="grid" style.gridTemplateColumns="repeat(3, 1fr)" style.gap="1.5rem" style.--md.gridTemplateColumns="repeat(2, 1fr)" style.--sm.gridTemplateColumns="1fr"}
|
|
19
|
+
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.padding="0 1.5rem" style.display="grid" style.gridTemplateColumns="repeat(3, 1fr)" style.gap="1.5rem" style.--md.gridTemplateColumns="repeat(2, 1fr)" style.--sm.gridTemplateColumns="1fr"}
|
|
20
20
|
:::Array{items.ref="#/state/featured"}
|
|
21
|
-
::re-listing-card{props.heading="${item.data.Title}" props.price="${item.data.price}" props.beds="${item.data.beds}" props.baths="${item.data.baths}" props.sqft="${item.data.sqft}" props.city="${item.data.city}" props.image="${item.data.image}" props.href="/${item.data.slug}/"}
|
|
21
|
+
::re-listing-card{props.heading="${item.data.Title}" props.price="${item.data.price}" props.beds="${item.data.beds}" props.baths="${item.data.baths}" props.sqft="${item.data.sqft}" props.city="${item.data.city}" props.status="${item.data.status}" props.image="${item.data.image}" props.href="/${item.data.slug}/"}
|
|
22
22
|
:::
|
|
23
23
|
::::
|
|
24
24
|
|
|
25
|
-
::::div{style.
|
|
26
|
-
:::a{href="/listings/" style.display="inline-
|
|
27
|
-
Browse all listings →
|
|
25
|
+
::::div{style.maxWidth="var(--max-width)" style.margin="2.25rem auto 0" style.padding="0 1.5rem"}
|
|
26
|
+
:::a{href="/listings/" style.display="inline-flex" style.alignItems="center" style.gap="0.55rem" style.padding="0.8rem 1.5rem" style.border="1px solid var(--color-border-strong)" style.borderRadius="999px" style.color="var(--color-text-primary)" style.fontWeight="700" style.textDecoration="none" style.fontSize="0.98rem"}
|
|
27
|
+
Browse all 6 listings →
|
|
28
28
|
:::
|
|
29
29
|
::::
|
|
30
30
|
:::::
|
|
31
31
|
|
|
32
|
-
:::::section{style.padding="clamp(3.5rem, 8vw, 5.5rem)
|
|
33
|
-
::re-section-header{props.eyebrow="
|
|
32
|
+
:::::section{id="neighborhoods" style.padding="clamp(3.5rem, 8vw, 5.5rem) 0" style.backgroundColor="var(--color-bg-cream)" style.borderTop="1px solid var(--color-border)" style.borderBottom="1px solid var(--color-border)"}
|
|
33
|
+
::re-section-header{props.eyebrow="Where to look" props.heading="Explore the neighborhoods" props.subheading="Six distinct pockets of the north shore, from waterfront modern to quiet cottage streets."}
|
|
34
34
|
|
|
35
|
-
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.display="grid" style.gridTemplateColumns="repeat(3, 1fr)" style.gap="1.
|
|
36
|
-
::re-
|
|
35
|
+
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.padding="0 1.5rem" style.display="grid" style.gridTemplateColumns="repeat(3, 1fr)" style.gap="1.35rem" style.--md.gridTemplateColumns="repeat(2, 1fr)" style.--sm.gridTemplateColumns="1fr"}
|
|
36
|
+
::re-neighborhood{props.name="Bayport" props.count="24" props.price="$720k" props.image="/images/listing-2.jpg" props.href="/listings/"}
|
|
37
37
|
|
|
38
|
-
::re-
|
|
38
|
+
::re-neighborhood{props.name="Maplewood" props.count="18" props.price="$465k" props.image="/images/listing-1.jpg" props.href="/listings/"}
|
|
39
39
|
|
|
40
|
-
::re-
|
|
40
|
+
::re-neighborhood{props.name="Lakeview" props.count="12" props.price="$410k" props.image="/images/listing-3.jpg" props.href="/listings/"}
|
|
41
|
+
|
|
42
|
+
::re-neighborhood{props.name="Harbor Hills" props.count="9" props.price="$1.1M" props.image="/images/listing-5.jpg" props.href="/listings/"}
|
|
43
|
+
|
|
44
|
+
::re-neighborhood{props.name="Cedar Grove" props.count="15" props.price="$355k" props.image="/images/listing-4.jpg" props.href="/listings/"}
|
|
45
|
+
|
|
46
|
+
::re-neighborhood{props.name="Northshore" props.count="21" props.price="$540k" props.image="/images/listing-6.jpg" props.href="/listings/"}
|
|
41
47
|
::::
|
|
42
48
|
:::::
|
|
43
49
|
|
|
44
|
-
:::::section{style.padding="clamp(3rem, 7vw, 4.5rem) 1.5rem"}
|
|
45
|
-
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto"
|
|
50
|
+
:::::section{style.padding="clamp(3rem, 7vw, 4.5rem) 1.5rem" style.backgroundColor="var(--color-bg-dark)"}
|
|
51
|
+
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto"}
|
|
52
|
+
:::p{style.textTransform="uppercase" style.letterSpacing="0.16em" style.fontSize="0.74rem" style.fontWeight="700" style.color="var(--color-accent-bright)" style.margin="0 0 1.75rem"}
|
|
53
|
+
By the numbers
|
|
54
|
+
:::
|
|
55
|
+
|
|
56
|
+
:::div{style.display="grid" style.gridTemplateColumns="repeat(4, 1fr)" style.gap="2rem" style.--sm.gridTemplateColumns="repeat(2, 1fr)"}
|
|
46
57
|
::re-stat{props.value="20+" props.label="Years on the north shore"}
|
|
47
58
|
|
|
48
59
|
::re-stat{props.value="1,400+" props.label="Homes closed"}
|
|
@@ -50,28 +61,34 @@ Browse all listings →
|
|
|
50
61
|
::re-stat{props.value="98%" props.label="Of asking price achieved"}
|
|
51
62
|
|
|
52
63
|
::re-stat{props.value="4.9★" props.label="Average client rating"}
|
|
64
|
+
:::
|
|
53
65
|
::::
|
|
54
66
|
:::::
|
|
55
67
|
|
|
56
|
-
|
|
68
|
+
:::::section{style.padding="clamp(3.5rem, 8vw, 5.5rem) 0"}
|
|
69
|
+
::re-section-header{props.eyebrow="Why Northshore" props.heading="A calmer, clearer way to buy" props.subheading="Everything you need to make a confident move — none of the pressure you don't."}
|
|
57
70
|
|
|
58
|
-
|
|
71
|
+
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.padding="0 1.5rem" style.display="grid" style.gridTemplateColumns="repeat(3, 1fr)" style.gap="1.35rem" style.--md.gridTemplateColumns="1fr"}
|
|
72
|
+
::re-feature{props.icon="🗺" props.title="Local expertise" props.text="We've closed hundreds of homes on the north shore. We know the streets, the schools, and the fair price."}
|
|
59
73
|
|
|
60
|
-
|
|
74
|
+
::re-feature{props.icon="🔎" props.title="Transparent search" props.text="Filter by price, beds, and baths right on the site — no sign-up walls, no spam, just homes that fit."}
|
|
61
75
|
|
|
62
|
-
|
|
63
|
-
|
|
76
|
+
::re-feature{props.icon="🤝" props.title="Agents, not salespeople" props.text="Advice first. Our agents are paid to get you the right home, not the most expensive one."}
|
|
77
|
+
::::
|
|
78
|
+
:::::
|
|
79
|
+
|
|
80
|
+
::re-agent-band{props.heading="Talk to an agent who lives here." props.text="Tell us your budget and must-haves and we'll send a shortlist of homes worth seeing — usually the same day." props.cta="Book a call" props.ctaHref="/contact/"}
|
|
64
81
|
|
|
65
|
-
:::::section{style.padding="clamp(3.5rem, 8vw, 5.5rem)
|
|
82
|
+
:::::section{style.padding="clamp(3.5rem, 8vw, 5.5rem) 0" style.backgroundColor="var(--color-bg-cream)" style.borderTop="1px solid var(--color-border)"}
|
|
66
83
|
::re-section-header{props.eyebrow="Client stories" props.heading="People who found home with us"}
|
|
67
84
|
|
|
68
|
-
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.display="grid" style.gridTemplateColumns="repeat(3, 1fr)" style.gap="1.
|
|
85
|
+
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.padding="0 1.5rem" style.display="grid" style.gridTemplateColumns="repeat(3, 1fr)" style.gap="1.35rem" style.--md.gridTemplateColumns="1fr"}
|
|
69
86
|
::re-testimonial{props.quote="They found us a house two blocks from the water and under budget. I still can't believe it." props.author="The Okafor Family" props.role="Bought in Bayport"}
|
|
70
87
|
|
|
71
|
-
::re-testimonial{props.quote="Sold in nine days for over asking. Calm, honest, and always a step ahead." props.author="Marta
|
|
88
|
+
::re-testimonial{props.quote="Sold in nine days for over asking. Calm, honest, and always a step ahead." props.author="Marta Lindqvist" props.role="Sold in Maplewood"}
|
|
72
89
|
|
|
73
90
|
::re-testimonial{props.quote="First-time buyers and terrified. Our agent walked us through every step twice." props.author="Devon & Ray" props.role="Bought in Lakeview"}
|
|
74
91
|
::::
|
|
75
92
|
:::::
|
|
76
93
|
|
|
77
|
-
::re-cta{props.heading="Ready to start your search?" props.text="Tell us what you're looking for and your budget — we'll send a shortlist of homes worth seeing." props.cta="Talk to an
|
|
94
|
+
::re-cta{props.heading="Ready to start your search?" props.text="Tell us what you're looking for and your budget — we'll send a shortlist of homes worth seeing." props.cta="Talk to an agent" props.ctaHref="/contact/" props.cta2="Browse listings" props.cta2Href="/listings/"}
|
|
@@ -2,12 +2,24 @@
|
|
|
2
2
|
title: "Listings — Northshore Realty"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
:::::section{style.padding="clamp(
|
|
6
|
-
|
|
5
|
+
:::::section{style.padding="clamp(2.5rem, 5vw, 3.5rem) 1.5rem" style.backgroundColor="var(--color-bg-cream)" style.borderBottom="1px solid var(--color-border)"}
|
|
6
|
+
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto"}
|
|
7
|
+
:::p{style.display="inline-flex" style.alignItems="center" style.gap="0.6rem" style.textTransform="uppercase" style.letterSpacing="0.14em" style.fontSize="0.74rem" style.fontWeight="700" style.color="var(--color-primary)" style.margin="0 0 0.9rem"}
|
|
8
|
+
Homes for sale
|
|
9
|
+
:::
|
|
10
|
+
|
|
11
|
+
:::h1{style.fontFamily="var(--font-display)" style.fontSize="clamp(2rem, 4vw, 3rem)" style.fontWeight="500" style.letterSpacing="-0.015em" style.lineHeight="1.08" style.margin="0 0 0.75rem" style.color="var(--color-text-primary)"}
|
|
12
|
+
Browse the north shore index
|
|
13
|
+
:::
|
|
14
|
+
|
|
15
|
+
:::p{style.fontSize="1.08rem" style.color="var(--color-text-muted)" style.margin="0" style.maxWidth="60ch"}
|
|
16
|
+
Filter by bedrooms and price on the left. Results update instantly — no page reloads, no waiting.
|
|
17
|
+
:::
|
|
18
|
+
::::
|
|
7
19
|
:::::
|
|
8
20
|
|
|
9
21
|
:::::section{style.padding="clamp(2.5rem, 6vw, 4rem) 0"}
|
|
10
22
|
::re-listings-filter
|
|
11
23
|
:::::
|
|
12
24
|
|
|
13
|
-
::re-cta{props.heading="Don't see the right fit?" props.text="New homes come to market every week. Tell us your must-haves and we'll alert you the moment something matches." props.cta="Set
|
|
25
|
+
::re-cta{props.heading="Don't see the right fit?" props.text="New homes come to market every week. Tell us your must-haves and we'll alert you the moment something matches." props.cta="Set up alerts" props.ctaHref="/contact/" props.cta2="Talk to an agent" props.cta2Href="/contact/"}
|
|
@@ -8,32 +8,45 @@
|
|
|
8
8
|
"$head": [
|
|
9
9
|
{
|
|
10
10
|
"tagName": "meta",
|
|
11
|
-
"attributes": {
|
|
11
|
+
"attributes": {
|
|
12
|
+
"name": "viewport",
|
|
13
|
+
"content": "width=device-width, initial-scale=1"
|
|
14
|
+
}
|
|
12
15
|
},
|
|
13
16
|
{
|
|
14
17
|
"tagName": "meta",
|
|
15
18
|
"attributes": {
|
|
16
19
|
"name": "description",
|
|
17
|
-
"content": "Northshore Realty
|
|
20
|
+
"content": "Northshore Realty is the north shore's property index — search live listings by neighborhood, price, and bedrooms, then work with agents who actually live here."
|
|
18
21
|
}
|
|
19
22
|
},
|
|
20
23
|
{
|
|
21
24
|
"tagName": "link",
|
|
22
|
-
"attributes": {
|
|
25
|
+
"attributes": {
|
|
26
|
+
"rel": "icon",
|
|
27
|
+
"href": "/favicon.svg"
|
|
28
|
+
}
|
|
23
29
|
},
|
|
24
30
|
{
|
|
25
31
|
"tagName": "link",
|
|
26
|
-
"attributes": {
|
|
32
|
+
"attributes": {
|
|
33
|
+
"rel": "preconnect",
|
|
34
|
+
"href": "https://fonts.googleapis.com"
|
|
35
|
+
}
|
|
27
36
|
},
|
|
28
37
|
{
|
|
29
38
|
"tagName": "link",
|
|
30
|
-
"attributes": {
|
|
39
|
+
"attributes": {
|
|
40
|
+
"rel": "preconnect",
|
|
41
|
+
"href": "https://fonts.gstatic.com",
|
|
42
|
+
"crossorigin": ""
|
|
43
|
+
}
|
|
31
44
|
},
|
|
32
45
|
{
|
|
33
46
|
"tagName": "link",
|
|
34
47
|
"attributes": {
|
|
35
48
|
"rel": "stylesheet",
|
|
36
|
-
"href": "https://fonts.googleapis.com/css2?family=
|
|
49
|
+
"href": "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=Spectral:ital,wght@0,400;0,500;0,600;1,400;1,500&display=swap"
|
|
37
50
|
}
|
|
38
51
|
}
|
|
39
52
|
],
|
|
@@ -44,27 +57,45 @@
|
|
|
44
57
|
"--sm": "(max-width: 640px)"
|
|
45
58
|
},
|
|
46
59
|
"style": {
|
|
47
|
-
"--color-primary": "#
|
|
48
|
-
"--color-primary-hover": "#
|
|
49
|
-
"--color-
|
|
50
|
-
"--color-
|
|
51
|
-
"--color-
|
|
60
|
+
"--color-primary": "#0f766e",
|
|
61
|
+
"--color-primary-hover": "#115e59",
|
|
62
|
+
"--color-accent": "#0d9488",
|
|
63
|
+
"--color-accent-bright": "#14b8a6",
|
|
64
|
+
"--color-accent-soft": "#ccfbf1",
|
|
65
|
+
"--color-teal-tint": "#f0fdfa",
|
|
66
|
+
"--color-ink": "#0b1220",
|
|
67
|
+
"--color-navy": "#0f172a",
|
|
68
|
+
"--color-bg-dark": "#0b1220",
|
|
69
|
+
"--color-bg-ink-soft": "#152238",
|
|
70
|
+
"--color-bg-cream": "#f6f8fb",
|
|
71
|
+
"--color-bg-tint": "#eef2f7",
|
|
52
72
|
"--color-bg-white": "#ffffff",
|
|
53
73
|
"--color-text-primary": "#0f172a",
|
|
54
|
-
"--color-text-
|
|
74
|
+
"--color-text-secondary": "#334155",
|
|
55
75
|
"--color-text-muted": "#64748b",
|
|
56
|
-
"--color-
|
|
57
|
-
"--color-
|
|
58
|
-
"--
|
|
59
|
-
"--
|
|
60
|
-
"--
|
|
61
|
-
"--
|
|
76
|
+
"--color-text-white": "#ffffff",
|
|
77
|
+
"--color-border": "#e4e9f0",
|
|
78
|
+
"--color-border-strong": "#cbd5e1",
|
|
79
|
+
"--color-status-new": "#0d9488",
|
|
80
|
+
"--font-display": "'Spectral', Georgia, 'Times New Roman', serif",
|
|
81
|
+
"--font-heading": "'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",
|
|
82
|
+
"--font-ui": "'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",
|
|
83
|
+
"--font-body": "'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",
|
|
84
|
+
"--max-width": "1240px",
|
|
85
|
+
"--max-width-narrow": "760px",
|
|
86
|
+
"--radius": "0.75rem",
|
|
87
|
+
"--radius-sm": "0.5rem",
|
|
88
|
+
"--radius-lg": "1.25rem",
|
|
89
|
+
"--shadow-card": "0 1px 2px rgba(15,23,42,0.04), 0 10px 26px -14px rgba(15,23,42,0.18)",
|
|
90
|
+
"--shadow-float": "0 30px 70px -28px rgba(11,18,32,0.42)",
|
|
62
91
|
"margin": "0",
|
|
63
92
|
"padding": "0",
|
|
64
|
-
"fontFamily": "
|
|
93
|
+
"fontFamily": "var(--font-body)",
|
|
94
|
+
"fontSize": "17px",
|
|
65
95
|
"lineHeight": "1.6",
|
|
66
96
|
"color": "var(--color-text-primary)",
|
|
67
|
-
"backgroundColor": "var(--color-bg-white)"
|
|
97
|
+
"backgroundColor": "var(--color-bg-white)",
|
|
98
|
+
"WebkitFontSmoothing": "antialiased"
|
|
68
99
|
},
|
|
69
100
|
"imports": {
|
|
70
101
|
"Markdown": "@jxsuite/parser/Markdown.class.json",
|
|
@@ -76,7 +107,12 @@
|
|
|
76
107
|
"optimize": true,
|
|
77
108
|
"widths": [320, 640, 960, 1280, 1920],
|
|
78
109
|
"formats": ["webp", "avif"],
|
|
79
|
-
"quality": {
|
|
110
|
+
"quality": {
|
|
111
|
+
"webp": 80,
|
|
112
|
+
"avif": 65,
|
|
113
|
+
"jpeg": 80,
|
|
114
|
+
"png": 80
|
|
115
|
+
},
|
|
80
116
|
"sizes": "(max-width: 768px) 100vw, 50vw",
|
|
81
117
|
"lazyLoad": true
|
|
82
118
|
},
|
|
@@ -87,15 +123,37 @@
|
|
|
87
123
|
"schema": {
|
|
88
124
|
"type": "object",
|
|
89
125
|
"properties": {
|
|
90
|
-
"Title": {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
"
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
"
|
|
97
|
-
|
|
98
|
-
|
|
126
|
+
"Title": {
|
|
127
|
+
"type": "string"
|
|
128
|
+
},
|
|
129
|
+
"slug": {
|
|
130
|
+
"type": "string"
|
|
131
|
+
},
|
|
132
|
+
"price": {
|
|
133
|
+
"type": "number"
|
|
134
|
+
},
|
|
135
|
+
"beds": {
|
|
136
|
+
"type": "number"
|
|
137
|
+
},
|
|
138
|
+
"baths": {
|
|
139
|
+
"type": "number"
|
|
140
|
+
},
|
|
141
|
+
"sqft": {
|
|
142
|
+
"type": "number"
|
|
143
|
+
},
|
|
144
|
+
"city": {
|
|
145
|
+
"type": "string"
|
|
146
|
+
},
|
|
147
|
+
"image": {
|
|
148
|
+
"type": "string",
|
|
149
|
+
"format": "image"
|
|
150
|
+
},
|
|
151
|
+
"status": {
|
|
152
|
+
"type": "string"
|
|
153
|
+
},
|
|
154
|
+
"order": {
|
|
155
|
+
"type": "number"
|
|
156
|
+
}
|
|
99
157
|
},
|
|
100
158
|
"required": ["Title", "slug"]
|
|
101
159
|
}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32">
|
|
2
|
-
<
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="g" x1="0" y1="0" x2="32" y2="32" gradientUnits="userSpaceOnUse">
|
|
4
|
+
<stop offset="0" stop-color="#14b8a6"/>
|
|
5
|
+
<stop offset="1" stop-color="#0f766e"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect width="32" height="32" rx="7" fill="url(#g)"/>
|
|
3
9
|
<path d="M16 6L25 13.5V25a1 1 0 0 1-1 1h-5v-6h-6v6H8a1 1 0 0 1-1-1V13.5z" fill="none" stroke="#fff" stroke-width="1.8" stroke-linejoin="round"/>
|
|
4
10
|
<path d="M5 14.5 16 6l11 8.5" fill="none" stroke="#fff" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
11
|
</svg>
|
|
@@ -1,41 +1,116 @@
|
|
|
1
1
|
{
|
|
2
2
|
"tagName": "bit-cta",
|
|
3
3
|
"state": {
|
|
4
|
+
"eyebrow": "Reservations",
|
|
4
5
|
"heading": "",
|
|
6
|
+
"headingAccent": "",
|
|
5
7
|
"text": "",
|
|
6
8
|
"cta": "Reserve a Table",
|
|
7
9
|
"ctaHref": "/contact/"
|
|
8
10
|
},
|
|
9
11
|
"style": {
|
|
10
12
|
"display": "block",
|
|
11
|
-
"
|
|
13
|
+
"position": "relative",
|
|
14
|
+
"overflow": "hidden",
|
|
15
|
+
"backgroundColor": "var(--color-espresso)",
|
|
12
16
|
"color": "var(--color-text-white)",
|
|
13
|
-
"padding": "clamp(3.5rem,
|
|
17
|
+
"padding": "clamp(3.5rem, 9vw, 6rem) 1.5rem",
|
|
14
18
|
"textAlign": "center"
|
|
15
19
|
},
|
|
16
20
|
"children": [
|
|
17
21
|
{
|
|
18
22
|
"tagName": "div",
|
|
19
|
-
"style": {
|
|
23
|
+
"style": {
|
|
24
|
+
"position": "absolute",
|
|
25
|
+
"inset": "0",
|
|
26
|
+
"background": "radial-gradient(ellipse 55% 70% at 50% 120%, rgba(189,90,52,0.34), transparent 65%)",
|
|
27
|
+
"pointerEvents": "none"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"tagName": "div",
|
|
32
|
+
"style": {
|
|
33
|
+
"position": "relative",
|
|
34
|
+
"zIndex": "10",
|
|
35
|
+
"maxWidth": "var(--max-width-narrow)",
|
|
36
|
+
"margin": "0 auto"
|
|
37
|
+
},
|
|
20
38
|
"children": [
|
|
39
|
+
{
|
|
40
|
+
"tagName": "div",
|
|
41
|
+
"style": {
|
|
42
|
+
"display": "${state.eyebrow ? 'flex' : 'none'}",
|
|
43
|
+
"alignItems": "center",
|
|
44
|
+
"justifyContent": "center",
|
|
45
|
+
"gap": "0.85rem",
|
|
46
|
+
"marginBottom": "1.25rem"
|
|
47
|
+
},
|
|
48
|
+
"children": [
|
|
49
|
+
{
|
|
50
|
+
"tagName": "span",
|
|
51
|
+
"style": {
|
|
52
|
+
"width": "2.25rem",
|
|
53
|
+
"height": "1px",
|
|
54
|
+
"backgroundColor": "var(--color-amber)"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"tagName": "p",
|
|
59
|
+
"style": {
|
|
60
|
+
"margin": "0",
|
|
61
|
+
"fontFamily": "var(--font-body)",
|
|
62
|
+
"textTransform": "uppercase",
|
|
63
|
+
"letterSpacing": "0.24em",
|
|
64
|
+
"fontSize": "0.74rem",
|
|
65
|
+
"fontWeight": "700",
|
|
66
|
+
"color": "var(--color-amber)"
|
|
67
|
+
},
|
|
68
|
+
"textContent": "${state.eyebrow}"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"tagName": "span",
|
|
72
|
+
"style": {
|
|
73
|
+
"width": "2.25rem",
|
|
74
|
+
"height": "1px",
|
|
75
|
+
"backgroundColor": "var(--color-amber)"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
},
|
|
21
80
|
{
|
|
22
81
|
"tagName": "h2",
|
|
23
82
|
"style": {
|
|
24
83
|
"fontFamily": "var(--font-heading)",
|
|
25
|
-
"fontSize": "clamp(
|
|
84
|
+
"fontSize": "clamp(2.1rem, 5vw, 3.25rem)",
|
|
26
85
|
"fontWeight": "700",
|
|
27
|
-
"lineHeight": "1.
|
|
28
|
-
"
|
|
86
|
+
"lineHeight": "1.1",
|
|
87
|
+
"letterSpacing": "-0.02em",
|
|
88
|
+
"margin": "0 0 1.1rem",
|
|
89
|
+
"color": "var(--color-text-white)"
|
|
29
90
|
},
|
|
30
|
-
"
|
|
91
|
+
"children": [
|
|
92
|
+
{ "tagName": "span", "textContent": "${state.heading}" },
|
|
93
|
+
{
|
|
94
|
+
"tagName": "span",
|
|
95
|
+
"style": {
|
|
96
|
+
"display": "${state.headingAccent ? 'inline' : 'none'}",
|
|
97
|
+
"fontStyle": "italic",
|
|
98
|
+
"fontWeight": "500",
|
|
99
|
+
"color": "var(--color-amber)"
|
|
100
|
+
},
|
|
101
|
+
"textContent": " ${state.headingAccent}"
|
|
102
|
+
}
|
|
103
|
+
]
|
|
31
104
|
},
|
|
32
105
|
{
|
|
33
106
|
"tagName": "p",
|
|
34
107
|
"style": {
|
|
35
|
-
"
|
|
108
|
+
"fontFamily": "var(--font-body)",
|
|
109
|
+
"fontSize": "1.12rem",
|
|
36
110
|
"lineHeight": "1.7",
|
|
37
|
-
"opacity": "0.
|
|
38
|
-
"margin": "0
|
|
111
|
+
"opacity": "0.82",
|
|
112
|
+
"margin": "0 auto 2rem",
|
|
113
|
+
"maxWidth": "50ch"
|
|
39
114
|
},
|
|
40
115
|
"textContent": "${state.text}"
|
|
41
116
|
},
|
|
@@ -46,10 +121,13 @@
|
|
|
46
121
|
"display": "inline-block",
|
|
47
122
|
"backgroundColor": "var(--color-primary)",
|
|
48
123
|
"color": "var(--color-text-white)",
|
|
49
|
-
"padding": "0.
|
|
50
|
-
"borderRadius": "
|
|
51
|
-
"
|
|
52
|
-
"
|
|
124
|
+
"padding": "0.95rem 2.4rem",
|
|
125
|
+
"borderRadius": "999px",
|
|
126
|
+
"fontFamily": "var(--font-body)",
|
|
127
|
+
"fontSize": "0.85rem",
|
|
128
|
+
"fontWeight": "700",
|
|
129
|
+
"textTransform": "uppercase",
|
|
130
|
+
"letterSpacing": "0.14em",
|
|
53
131
|
"textDecoration": "none",
|
|
54
132
|
"transition": "background-color 0.15s",
|
|
55
133
|
":hover": { "backgroundColor": "var(--color-primary-hover)" }
|