@jxsuite/starters 0.34.0 → 0.35.1
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
|
@@ -4,37 +4,59 @@
|
|
|
4
4
|
"eyebrow": "",
|
|
5
5
|
"heading": "",
|
|
6
6
|
"subheading": "",
|
|
7
|
-
"align": "center"
|
|
7
|
+
"align": "center",
|
|
8
|
+
"onDark": false
|
|
8
9
|
},
|
|
9
10
|
"style": {
|
|
10
11
|
"display": "block",
|
|
11
12
|
"maxWidth": "var(--max-width-narrow)",
|
|
12
|
-
"margin": "0 auto 2.
|
|
13
|
+
"margin": "${state.align === 'left' ? '0 0 2.75rem' : '0 auto 2.75rem'}",
|
|
13
14
|
"textAlign": "${state.align}"
|
|
14
15
|
},
|
|
15
16
|
"children": [
|
|
16
17
|
{
|
|
17
|
-
"tagName": "
|
|
18
|
+
"tagName": "div",
|
|
18
19
|
"style": {
|
|
19
|
-
"display": "${state.eyebrow ? '
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"fontWeight": "600",
|
|
24
|
-
"color": "var(--color-primary)",
|
|
25
|
-
"margin": "0 0 0.75rem"
|
|
20
|
+
"display": "${state.eyebrow ? 'inline-flex' : 'none'}",
|
|
21
|
+
"alignItems": "center",
|
|
22
|
+
"gap": "0.55rem",
|
|
23
|
+
"marginBottom": "1rem"
|
|
26
24
|
},
|
|
27
|
-
"
|
|
25
|
+
"children": [
|
|
26
|
+
{
|
|
27
|
+
"tagName": "span",
|
|
28
|
+
"style": {
|
|
29
|
+
"width": "1.6rem",
|
|
30
|
+
"height": "3px",
|
|
31
|
+
"borderRadius": "2px",
|
|
32
|
+
"background": "var(--grad-hot)"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"tagName": "span",
|
|
37
|
+
"style": {
|
|
38
|
+
"fontFamily": "var(--font-heading)",
|
|
39
|
+
"textTransform": "uppercase",
|
|
40
|
+
"letterSpacing": "0.16em",
|
|
41
|
+
"fontSize": "0.78rem",
|
|
42
|
+
"fontWeight": "700",
|
|
43
|
+
"color": "var(--color-primary)"
|
|
44
|
+
},
|
|
45
|
+
"textContent": "${state.eyebrow}"
|
|
46
|
+
}
|
|
47
|
+
]
|
|
28
48
|
},
|
|
29
49
|
{
|
|
30
50
|
"tagName": "h2",
|
|
31
51
|
"style": {
|
|
32
|
-
"fontFamily": "var(--font-
|
|
33
|
-
"fontSize": "clamp(
|
|
34
|
-
"fontWeight": "
|
|
35
|
-
"lineHeight": "
|
|
36
|
-
"letterSpacing": "
|
|
37
|
-
"
|
|
52
|
+
"fontFamily": "var(--font-display)",
|
|
53
|
+
"fontSize": "clamp(2.2rem, 5.2vw, 3.6rem)",
|
|
54
|
+
"fontWeight": "400",
|
|
55
|
+
"lineHeight": "0.98",
|
|
56
|
+
"letterSpacing": "0.01em",
|
|
57
|
+
"textTransform": "uppercase",
|
|
58
|
+
"margin": "0",
|
|
59
|
+
"color": "${state.onDark ? 'var(--color-text-white)' : 'var(--color-text-primary)'}"
|
|
38
60
|
},
|
|
39
61
|
"textContent": "${state.heading}"
|
|
40
62
|
},
|
|
@@ -42,10 +64,12 @@
|
|
|
42
64
|
"tagName": "p",
|
|
43
65
|
"style": {
|
|
44
66
|
"display": "${state.subheading ? 'block' : 'none'}",
|
|
45
|
-
"fontSize": "1.
|
|
67
|
+
"fontSize": "1.12rem",
|
|
46
68
|
"lineHeight": "1.7",
|
|
47
|
-
"
|
|
48
|
-
"
|
|
69
|
+
"fontWeight": "500",
|
|
70
|
+
"color": "${state.onDark ? 'rgba(255,255,255,0.75)' : 'var(--color-text-muted)'}",
|
|
71
|
+
"margin": "${state.align === 'left' ? '1.15rem 0 0' : '1.15rem auto 0'}",
|
|
72
|
+
"maxWidth": "54ch"
|
|
49
73
|
},
|
|
50
74
|
"textContent": "${state.subheading}"
|
|
51
75
|
}
|
|
@@ -10,11 +10,17 @@ state:
|
|
|
10
10
|
order: asc
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
:::::section{style.padding="clamp(3rem, 6vw, 4.5rem) 1.5rem" style.backgroundColor="var(--color-bg-
|
|
14
|
-
::fs-section-header{props.eyebrow="Weekly schedule" props.heading="Find your class" props.subheading="From slow restorative flows to high-intensity circuits — here's everything on the mat this week."}
|
|
13
|
+
:::::section{style.padding="clamp(3rem, 6vw, 4.5rem) 1.5rem" style.backgroundColor="var(--color-bg-blush)"}
|
|
14
|
+
::fs-section-header{props.eyebrow="Weekly schedule" props.heading="Find your class" props.subheading="From slow restorative flows to high-intensity circuits — here's everything on the mat this week. Tap a style to filter."}
|
|
15
15
|
:::::
|
|
16
16
|
|
|
17
|
-
:::::section{style.padding="clamp(3rem,
|
|
17
|
+
:::::section{style.padding="clamp(3rem, 7vw, 5rem) 1.5rem"}
|
|
18
|
+
::fs-schedule
|
|
19
|
+
:::::
|
|
20
|
+
|
|
21
|
+
:::::section{style.padding="clamp(3rem, 7vw, 5rem) 1.5rem" style.backgroundColor="var(--color-bg-blush)"}
|
|
22
|
+
::fs-section-header{props.eyebrow="The details" props.heading="Every class, up close" props.subheading="What to expect, who's teaching, and the level each session is built for."}
|
|
23
|
+
|
|
18
24
|
::::fs-class-grid
|
|
19
25
|
:::Array{items.ref="#/state/schedule"}
|
|
20
26
|
::fs-class-card{props.name="${item.data.name}" props.level="${item.data.level}" props.time="${item.data.time}" props.instructor="${item.data.instructor}" props.focus="${item.data.focus}"}
|
|
@@ -22,7 +28,7 @@ state:
|
|
|
22
28
|
::::
|
|
23
29
|
:::::
|
|
24
30
|
|
|
25
|
-
:::::section{style.padding="clamp(
|
|
31
|
+
:::::section{style.padding="clamp(3rem, 7vw, 5rem) 1.5rem"}
|
|
26
32
|
::fs-section-header{props.eyebrow="Good to know" props.heading="Before your first class"}
|
|
27
33
|
|
|
28
34
|
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.display="grid" style.gridTemplateColumns="repeat(3, 1fr)" style.gap="1.25rem" style.--md.gridTemplateColumns="1fr"}
|
|
@@ -34,4 +40,4 @@ state:
|
|
|
34
40
|
::::
|
|
35
41
|
:::::
|
|
36
42
|
|
|
37
|
-
::fs-cta{props.heading="Ready to roll out your mat?" props.text="Book your spot online in under a minute. First-timers get a free intro session." props.cta="Book a Class" props.ctaHref="/contact/"}
|
|
43
|
+
::fs-cta{props.eyebrow="Spots fill fast" props.heading="Ready to roll out your mat?" props.text="Book your spot online in under a minute. First-timers always get a free intro session." props.cta="Book a Class" props.ctaHref="/contact/"}
|
|
@@ -2,41 +2,19 @@
|
|
|
2
2
|
title: "Book a Class & Visit — Ember Yoga & Fitness"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
:::::section{style.padding="clamp(3rem, 6vw, 4.5rem) 1.5rem" style.backgroundColor="var(--color-bg-
|
|
6
|
-
::fs-section-header{props.eyebrow="Get started" props.heading="Book a class & say hello" props.subheading="Reserve your spot below, or drop by the studio on Willow Avenue.
|
|
5
|
+
:::::section{style.padding="clamp(3rem, 6vw, 4.5rem) 1.5rem" style.backgroundColor="var(--color-bg-blush)"}
|
|
6
|
+
::fs-section-header{props.eyebrow="Get started" props.heading="Book a class & say hello" props.subheading="Reserve your spot below, or drop by the studio on Willow Avenue. Your first class is always free."}
|
|
7
7
|
:::::
|
|
8
8
|
|
|
9
|
-
::::::section{style.maxWidth="var(--max-width)" style.margin="0 auto" style.padding="clamp(3rem,
|
|
10
|
-
:::::div{style.display="grid" style.gridTemplateColumns="1.
|
|
9
|
+
::::::section{style.maxWidth="var(--max-width)" style.margin="0 auto" style.padding="clamp(3rem, 7vw, 5rem) 1.5rem"}
|
|
10
|
+
:::::div{style.display="grid" style.gridTemplateColumns="1.15fr 0.85fr" style.gap="clamp(2rem, 5vw, 3.5rem)" style.alignItems="start" style.--md.gridTemplateColumns="1fr"}
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
::fs-booking{props.heading="Reserve your spot"}
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
::input{type="text" name="name" placeholder="Your name" required="true" aria-label="Your name" style.width="100%" style.padding="0.75rem 0.9rem" style.border="1px solid var(--color-border)" style.borderRadius="var(--radius)" style.fontSize="1rem" style.fontFamily="inherit"}
|
|
17
|
-
|
|
18
|
-
::input{type="email" name="email" placeholder="Email address" required="true" aria-label="Email address" style.width="100%" style.padding="0.75rem 0.9rem" style.border="1px solid var(--color-border)" style.borderRadius="var(--radius)" style.fontSize="1rem" style.fontFamily="inherit"}
|
|
19
|
-
|
|
20
|
-
::input{type="text" name="class" placeholder="Which class? e.g. Vinyasa Flow" aria-label="Class you're interested in" style.width="100%" style.padding="0.75rem 0.9rem" style.border="1px solid var(--color-border)" style.borderRadius="var(--radius)" style.fontSize="1rem" style.fontFamily="inherit"}
|
|
21
|
-
|
|
22
|
-
::input{type="date" name="date" aria-label="Preferred date" style.width="100%" style.padding="0.75rem 0.9rem" style.border="1px solid var(--color-border)" style.borderRadius="var(--radius)" style.fontSize="1rem" style.fontFamily="inherit"}
|
|
23
|
-
|
|
24
|
-
::textarea{name="message" rows="4" placeholder="New to yoga? Any injuries or goals we should know about?" aria-label="Message" style.width="100%" style.padding="0.75rem 0.9rem" style.border="1px solid var(--color-border)" style.borderRadius="var(--radius)" style.fontSize="1rem" style.fontFamily="inherit"}
|
|
25
|
-
|
|
26
|
-
:::button{type="submit" style.backgroundColor="var(--color-primary)" style.color="var(--color-text-white)" style.padding="0.85rem 1.75rem" style.border="none" style.borderRadius="var(--radius)" style.fontSize="1rem" style.fontWeight="600" style.cursor="pointer" style.justifySelf="start"}
|
|
27
|
-
Request a spot
|
|
28
|
-
:::
|
|
29
|
-
|
|
30
|
-
:::p{style.fontSize="0.85rem" style.color="var(--color-text-muted)" style.margin="0.25rem 0 0"}
|
|
31
|
-
This is a demo form. Wire it to your booking provider or email in `pages/contact.md`.
|
|
32
|
-
:::
|
|
33
|
-
|
|
34
|
-
::::
|
|
35
|
-
|
|
36
|
-
::::div{style.display="grid" style.gap="1.5rem" style.alignContent="start"}
|
|
14
|
+
::::div{style.display="grid" style.gap="1.5rem"}
|
|
37
15
|
::fs-hours{props.heading="Studio Hours"}
|
|
38
16
|
|
|
39
|
-
:::div{style.padding="2rem" style.backgroundColor="var(--color-bg-
|
|
17
|
+
:::div{style.padding="2rem" style.backgroundColor="var(--color-bg-blush)" style.border="1px solid var(--color-border)" style.borderRadius="var(--radius)"}
|
|
40
18
|
|
|
41
19
|
#### Find the studio
|
|
42
20
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Ember Yoga & Fitness — Boutique yoga, pilates & strength"
|
|
2
|
+
title: "Ember Yoga & Fitness — Boutique yoga, pilates, HIIT & strength"
|
|
3
3
|
state:
|
|
4
4
|
preview:
|
|
5
5
|
$prototype: ContentCollection
|
|
@@ -11,70 +11,47 @@ state:
|
|
|
11
11
|
limit: 3
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
-
::fs-hero{props.eyebrow="Bridgewater · Boutique Studio" props.heading="Move
|
|
14
|
+
::fs-hero{props.eyebrow="Bridgewater · Boutique Movement Studio" props.heading="Move like" props.headingAccent="you mean it." props.subheading="Yoga, pilates, HIIT and strength — taught in small classes by coaches who learn your name. All levels. Real momentum." props.cta="Book a Class" props.ctaHref="/contact/" props.cta2="See the Schedule" props.cta2Href="/classes/" props.chip1="16-person class cap" props.chip2="All levels welcome" props.bg="/images/hero.jpg"}
|
|
15
15
|
|
|
16
|
-
:::fs-intro{props.image="/images/about.jpg" props.imageAlt="Instructor guiding a student through a stretch"}
|
|
16
|
+
:::fs-intro{props.kicker="Why Ember" props.image="/images/about.jpg" props.imageAlt="Instructor guiding a student through a stretch" props.badge="Est. 2019" props.stat1="16" props.stat1label="Max per class" props.stat2="30+" props.stat2label="Classes / week" props.stat3="6" props.stat3label="Coaches"}
|
|
17
17
|
|
|
18
|
-
###
|
|
18
|
+
### Strong body, clear head, real community.
|
|
19
19
|
|
|
20
|
-
Ember is a small, light-filled studio built
|
|
20
|
+
Ember is a small, light-filled studio built on one idea: everyone deserves to feel powerful in their own body. Classes cap at sixteen, so every session is hands-on and every rep gets watched.
|
|
21
21
|
|
|
22
|
-
Come for the
|
|
22
|
+
Come for the sweat. Stay for the people who show up on the mat next to you, week after week.
|
|
23
23
|
:::
|
|
24
24
|
|
|
25
|
-
:::::section{style.padding="clamp(3.5rem, 8vw, 6rem) 1.5rem" style.backgroundColor="var(--color-bg-
|
|
26
|
-
::fs-section-header{props.eyebrow="Why Ember" props.heading="Practice that fits your life"}
|
|
27
|
-
|
|
28
|
-
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.display="grid" style.gridTemplateColumns="repeat(3, 1fr)" style.gap="1.25rem" style.--md.gridTemplateColumns="1fr"}
|
|
29
|
-
::fs-feature{props.icon="🧘" props.title="Small classes" props.text="Capped at sixteen, so every session is hands-on and adjustments are personal."}
|
|
30
|
-
|
|
31
|
-
::fs-feature{props.icon="🌱" props.title="All levels welcome" props.text="Never done yoga? Lifting for years? Every class offers a version that fits you."}
|
|
32
|
-
|
|
33
|
-
::fs-feature{props.icon="💗" props.title="Coaches who care" props.text="Certified instructors who remember your name, your goals, and your last class."}
|
|
34
|
-
::::
|
|
35
|
-
:::::
|
|
36
|
-
|
|
37
|
-
:::::section{style.padding="clamp(3.5rem, 8vw, 6rem) 1.5rem"}
|
|
25
|
+
:::::section{style.padding="clamp(3.5rem, 8vw, 6rem) 1.5rem" style.backgroundColor="var(--color-bg-blush)"}
|
|
38
26
|
::fs-section-header{props.eyebrow="Find your practice" props.heading="Three ways to move"}
|
|
39
27
|
|
|
40
28
|
::::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"}
|
|
41
|
-
|
|
42
|
-
::img{src="/images/class-1.jpg" alt="A flowing yoga pose" loading="lazy" style.width="100%" style.aspectRatio="1 / 1" style.objectFit="cover" style.borderRadius="var(--radius)" style.display="block" style.marginBottom="0.9rem"}
|
|
43
|
-
**Yoga & Flow** — Vinyasa, power, and restorative practice to build heat and calm the mind.
|
|
44
|
-
:::
|
|
29
|
+
::fs-modality{props.tag="Yoga" props.title="Yoga & Flow" props.color="var(--color-yoga)" props.image="/images/class-1.jpg" props.imageAlt="A flowing yoga pose" props.text="Vinyasa, power, and restorative practice to build heat and quiet the mind." props.href="/classes/"}
|
|
45
30
|
|
|
46
|
-
|
|
47
|
-
::img{src="/images/class-2.jpg" alt="A pilates class in session" loading="lazy" style.width="100%" style.aspectRatio="1 / 1" style.objectFit="cover" style.borderRadius="var(--radius)" style.display="block" style.marginBottom="0.9rem"}
|
|
48
|
-
**Pilates & Core** — Low-impact mat work that builds deep strength, posture, and control.
|
|
49
|
-
:::
|
|
31
|
+
::fs-modality{props.tag="Pilates" props.title="Pilates & Core" props.color="var(--color-pilates)" props.image="/images/class-2.jpg" props.imageAlt="A pilates class in session" props.text="Low-impact mat work that builds deep core strength, posture, and control." props.href="/classes/"}
|
|
50
32
|
|
|
51
|
-
|
|
52
|
-
::img{src="/images/class-3.jpg" alt="Strength training with free weights" loading="lazy" style.width="100%" style.aspectRatio="1 / 1" style.objectFit="cover" style.borderRadius="var(--radius)" style.display="block" style.marginBottom="0.9rem"}
|
|
53
|
-
**Strength & HIIT** — Coached lifting and interval training to build lean, functional power.
|
|
54
|
-
:::
|
|
33
|
+
::fs-modality{props.tag="Sweat" props.title="Strength & HIIT" props.color="var(--color-strength)" props.image="/images/class-3.jpg" props.imageAlt="Strength training with free weights" props.text="Coached lifting and interval training to build lean, functional power." props.href="/classes/"}
|
|
55
34
|
::::
|
|
56
35
|
:::::
|
|
57
36
|
|
|
58
|
-
:::::section{style.padding="clamp(3.5rem, 8vw, 6rem) 1.5rem"
|
|
59
|
-
::fs-section-header{props.eyebrow="This week" props.heading="
|
|
37
|
+
:::::section{style.padding="clamp(3.5rem, 8vw, 6rem) 1.5rem"}
|
|
38
|
+
::fs-section-header{props.eyebrow="This week" props.heading="The weekly schedule" props.subheading="Every class on the mat this week — filter by style, then grab your slot."}
|
|
60
39
|
|
|
61
|
-
|
|
62
|
-
:::Array{items.ref="#/state/preview"}
|
|
63
|
-
::fs-class-card{props.name="${item.data.name}" props.level="${item.data.level}" props.time="${item.data.time}" props.instructor="${item.data.instructor}" props.focus="${item.data.focus}"}
|
|
64
|
-
:::
|
|
65
|
-
::::
|
|
40
|
+
::fs-schedule
|
|
66
41
|
|
|
67
|
-
::::div{style.textAlign="center" style.marginTop="
|
|
68
|
-
:::a{href="/classes/" style.display="inline-block" style.color="var(--color-primary)" style.fontWeight="
|
|
69
|
-
See
|
|
42
|
+
::::div{style.textAlign="center" style.marginTop="2.25rem"}
|
|
43
|
+
:::a{href="/classes/" style.display="inline-block" style.color="var(--color-primary)" style.fontWeight="700" style.textDecoration="none" style.fontSize="1.02rem"}
|
|
44
|
+
See full class details →
|
|
70
45
|
:::
|
|
71
46
|
::::
|
|
72
47
|
:::::
|
|
73
48
|
|
|
74
|
-
|
|
75
|
-
|
|
49
|
+
::fs-band{props.kicker="No experience required" props.heading="Show up. That's the hard part." props.text="Your first class is on us — book a free intro session and we'll help you find the practice that fits." props.cta="Book a free intro" props.ctaHref="/contact/" props.image="/images/class-1.jpg"}
|
|
50
|
+
|
|
51
|
+
:::::section{style.padding="clamp(3.5rem, 8vw, 6rem) 1.5rem" style.backgroundColor="var(--color-bg-blush)"}
|
|
52
|
+
::fs-section-header{props.eyebrow="Memberships" props.heading="Pricing that flexes" props.subheading="Drop in when it suits you, or go unlimited and make it a habit. No sign-up fees, ever."}
|
|
76
53
|
|
|
77
|
-
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.display="grid" style.gridTemplateColumns="repeat(3, 1fr)" style.gap="1.5rem" style.--lg.gridTemplateColumns="1fr"}
|
|
54
|
+
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.display="grid" style.gridTemplateColumns="repeat(3, 1fr)" style.gap="1.5rem" style.alignItems="start" style.--lg.gridTemplateColumns="1fr" style.--lg.maxWidth="440px"}
|
|
78
55
|
::fs-pricing-card{props.tier="Drop-in" props.price="$22" props.per="/ class" props.description="Perfect for trying us out or dropping by between trips." props.cta="Book a class" props.ctaHref="/contact/" props.perk1="Any single class" props.perk2="Mat & props included" props.perk3="No commitment"}
|
|
79
56
|
|
|
80
57
|
::fs-pricing-card{props.tier="Monthly Unlimited" props.price="$129" props.per="/ month" props.badge="Most popular" props.featured="true" props.description="Unlimited classes for people who want a real routine." props.cta="Start membership" props.ctaHref="/contact/" props.perk1="Unlimited classes" props.perk2="All class types" props.perk3="Free mat storage" props.perk4="10% off workshops" props.perk5="Freeze anytime"}
|
|
@@ -82,25 +59,25 @@ See the full schedule →
|
|
|
82
59
|
::fs-pricing-card{props.tier="Annual Unlimited" props.price="$1,290" props.per="/ year" props.description="Two months free plus perks for our most committed members." props.cta="Go annual" props.ctaHref="/contact/" props.perk1="Everything in Monthly" props.perk2="Two months free" props.perk3="4 guest passes a year" props.perk4="Priority booking" props.perk5="Free intro session"}
|
|
83
60
|
::::
|
|
84
61
|
|
|
85
|
-
::::div{style.textAlign="center" style.marginTop="
|
|
86
|
-
:::a{href="/pricing/" style.display="inline-block" style.color="var(--color-primary)" style.fontWeight="
|
|
62
|
+
::::div{style.textAlign="center" style.marginTop="2.25rem"}
|
|
63
|
+
:::a{href="/pricing/" style.display="inline-block" style.color="var(--color-primary)" style.fontWeight="700" style.textDecoration="none" style.fontSize="1.02rem"}
|
|
87
64
|
Compare all plans →
|
|
88
65
|
:::
|
|
89
66
|
::::
|
|
90
67
|
:::::
|
|
91
68
|
|
|
92
|
-
:::::section{style.padding="clamp(3.5rem, 8vw, 6rem) 1.5rem"
|
|
93
|
-
::fs-section-header{props.eyebrow="Meet the
|
|
69
|
+
:::::section{style.padding="clamp(3.5rem, 8vw, 6rem) 1.5rem"}
|
|
70
|
+
::fs-section-header{props.eyebrow="Meet the coaches" props.heading="Instructors in your corner"}
|
|
94
71
|
|
|
95
72
|
::::div{style.maxWidth="var(--max-width-narrow)" style.margin="0 auto" style.display="grid" style.gridTemplateColumns="1fr 1fr" style.gap="1.5rem" style.--sm.gridTemplateColumns="1fr"}
|
|
96
|
-
::fs-instructor-card{props.name="Maya Chen" props.specialty="Vinyasa & Restorative
|
|
73
|
+
::fs-instructor-card{props.name="Maya Chen" props.specialty="Vinyasa & Restorative" props.image="/images/instructor-1.jpg" props.bio="Founder of Ember and a 500-hour certified teacher. Maya's classes are equal parts challenge and calm."}
|
|
97
74
|
|
|
98
75
|
::fs-instructor-card{props.name="Devon Hart" props.specialty="Power Yoga & Strength" props.image="/images/instructor-2.jpg" props.bio="A former collegiate athlete turned coach, Devon makes strength training approachable for absolutely everyone."}
|
|
99
76
|
::::
|
|
100
77
|
:::::
|
|
101
78
|
|
|
102
|
-
:::::section{style.padding="clamp(3.5rem, 8vw, 6rem) 1.5rem"}
|
|
103
|
-
::fs-section-header{props.eyebrow="Loved by members" props.heading="
|
|
79
|
+
:::::section{style.padding="clamp(3.5rem, 8vw, 6rem) 1.5rem" style.backgroundColor="var(--color-bg-blush)"}
|
|
80
|
+
::fs-section-header{props.eyebrow="Loved by members" props.heading="The Ember effect"}
|
|
104
81
|
|
|
105
82
|
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.display="grid" style.gridTemplateColumns="1fr 1fr" style.gap="1.5rem" style.--md.gridTemplateColumns="1fr"}
|
|
106
83
|
::fs-review{props.quote="I walked in having never done yoga and left already booking my next class. The instructors actually watch you and help." props.author="Jordan M." props.role="Member since 2022"}
|
|
@@ -109,4 +86,4 @@ Compare all plans →
|
|
|
109
86
|
::::
|
|
110
87
|
:::::
|
|
111
88
|
|
|
112
|
-
::fs-cta{props.
|
|
89
|
+
::fs-cta{props.eyebrow="Your first class is free" props.heading="Roll out your mat." props.text="New to Ember? Book a free intro session and find the practice that fits you — no pressure, no experience needed." props.cta="Book a Class" props.ctaHref="/contact/"}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
title: "Membership & Pricing — Ember Yoga & Fitness"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
:::::section{style.padding="clamp(3rem, 6vw, 4.5rem) 1.5rem" style.backgroundColor="var(--color-bg-
|
|
6
|
-
::fs-section-header{props.eyebrow="Memberships" props.heading="Pricing that flexes
|
|
5
|
+
:::::section{style.padding="clamp(3rem, 6vw, 4.5rem) 1.5rem" style.backgroundColor="var(--color-bg-blush)"}
|
|
6
|
+
::fs-section-header{props.eyebrow="Memberships" props.heading="Pricing that flexes" props.subheading="Drop in when it suits you, or go unlimited and make it a habit. No sign-up fees, ever."}
|
|
7
7
|
:::::
|
|
8
8
|
|
|
9
|
-
:::::section{style.padding="clamp(3rem,
|
|
10
|
-
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.display="grid" style.gridTemplateColumns="repeat(3, 1fr)" style.gap="1.5rem" style.--lg.gridTemplateColumns="1fr"}
|
|
9
|
+
:::::section{style.padding="clamp(3rem, 7vw, 5rem) 1.5rem"}
|
|
10
|
+
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.display="grid" style.gridTemplateColumns="repeat(3, 1fr)" style.gap="1.5rem" style.alignItems="start" style.--lg.gridTemplateColumns="1fr" style.--lg.maxWidth="440px"}
|
|
11
11
|
::fs-pricing-card{props.tier="Drop-in" props.price="$22" props.per="/ class" props.description="Perfect for trying us out or dropping by between trips." props.cta="Book a class" props.ctaHref="/contact/" props.perk1="Any single class" props.perk2="Mat & props included" props.perk3="Book anytime" props.perk4="No commitment"}
|
|
12
12
|
|
|
13
13
|
::fs-pricing-card{props.tier="Monthly Unlimited" props.price="$129" props.per="/ month" props.badge="Most popular" props.featured="true" props.description="Unlimited classes for people who want a real routine." props.cta="Start membership" props.ctaHref="/contact/" props.perk1="Unlimited classes" props.perk2="All class types" props.perk3="Free mat storage" props.perk4="10% off workshops" props.perk5="Freeze anytime"}
|
|
@@ -16,7 +16,7 @@ title: "Membership & Pricing — Ember Yoga & Fitness"
|
|
|
16
16
|
::::
|
|
17
17
|
:::::
|
|
18
18
|
|
|
19
|
-
:::::section{style.padding="clamp(1rem, 4vw, 2rem) 1.5rem clamp(3.5rem, 8vw, 6rem)" style.backgroundColor="var(--color-bg-
|
|
19
|
+
:::::section{style.padding="clamp(1rem, 4vw, 2rem) 1.5rem clamp(3.5rem, 8vw, 6rem)" style.backgroundColor="var(--color-bg-blush)"}
|
|
20
20
|
::fs-section-header{props.eyebrow="Compare plans" props.heading="Every detail, side by side"}
|
|
21
21
|
|
|
22
22
|
::fs-pricing-table
|
|
@@ -26,7 +26,7 @@ Students and seniors save 15% on any plan — just ask at the front desk.
|
|
|
26
26
|
:::
|
|
27
27
|
:::::
|
|
28
28
|
|
|
29
|
-
:::::section{style.padding="clamp(3rem,
|
|
29
|
+
:::::section{style.padding="clamp(3rem, 7vw, 5rem) 1.5rem"}
|
|
30
30
|
::fs-section-header{props.eyebrow="Questions" props.heading="Good to know"}
|
|
31
31
|
|
|
32
32
|
::::div{style.maxWidth="var(--max-width-narrow)" style.margin="0 auto" style.display="grid" style.gap="1.25rem"}
|
|
@@ -38,4 +38,4 @@ Students and seniors save 15% on any plan — just ask at the front desk.
|
|
|
38
38
|
::::
|
|
39
39
|
:::::
|
|
40
40
|
|
|
41
|
-
::fs-cta{props.heading="Start with a free intro" props.text="
|
|
41
|
+
::fs-cta{props.eyebrow="Not sure which plan?" props.heading="Start with a free intro" props.text="Come try a class on the house and we'll help you choose the plan that actually fits your week." props.cta="Book a Class" props.ctaHref="/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": "
|
|
20
|
+
"content": "Ember is a boutique yoga & fitness studio — vinyasa, pilates, HIIT and strength in small, all-levels classes. See the weekly schedule and book a class."
|
|
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=Anton&family=Archivo:wght@500;600;700;800;900&family=DM+Sans:wght@400;500;600;700&display=swap"
|
|
37
50
|
}
|
|
38
51
|
}
|
|
39
52
|
],
|
|
@@ -44,27 +57,70 @@
|
|
|
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": "#ff2e63",
|
|
61
|
+
"--color-primary-hover": "#e01152",
|
|
62
|
+
"--color-ember": "#ff8c42",
|
|
63
|
+
"--color-magenta": "#d6157a",
|
|
64
|
+
"--color-ink": "#1a0f18",
|
|
65
|
+
"--color-ink-band": "#20111c",
|
|
66
|
+
"--color-bg-dark": "#20111c",
|
|
52
67
|
"--color-bg-white": "#ffffff",
|
|
53
|
-
"--color-
|
|
68
|
+
"--color-bg-blush": "#fff4ef",
|
|
69
|
+
"--color-bg-peach": "#ffe7dc",
|
|
70
|
+
"--color-bg-cream": "#fff4ef",
|
|
71
|
+
"--color-text-primary": "#1a0f18",
|
|
54
72
|
"--color-text-white": "#ffffff",
|
|
55
|
-
"--color-text-muted": "#
|
|
56
|
-
"--color-border": "#
|
|
57
|
-
"--color-
|
|
58
|
-
"--
|
|
73
|
+
"--color-text-muted": "#7c6a74",
|
|
74
|
+
"--color-border": "#f3ded4",
|
|
75
|
+
"--color-border-dark": "rgba(255,255,255,0.14)",
|
|
76
|
+
"--color-accent": "#ff8c42",
|
|
77
|
+
"--color-yoga": "#ff2e63",
|
|
78
|
+
"--color-strength": "#7b2ff7",
|
|
79
|
+
"--color-pilates": "#ff8c42",
|
|
80
|
+
"--color-hiit": "#d6157a",
|
|
81
|
+
"--grad": "linear-gradient(103deg, #ff2e63 0%, #ff6a3d 52%, #ffb03a 100%)",
|
|
82
|
+
"--grad-hot": "linear-gradient(120deg, #d6157a 0%, #ff2e63 55%, #ff8c42 100%)",
|
|
83
|
+
"--duo-shadow": "#280a22",
|
|
84
|
+
"--font-display": "'Anton', 'Archivo', system-ui, -apple-system, sans-serif",
|
|
85
|
+
"--font-heading": "'Archivo', system-ui, -apple-system, 'Segoe UI', sans-serif",
|
|
86
|
+
"--font-body": "'DM Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",
|
|
59
87
|
"--max-width": "1200px",
|
|
60
88
|
"--max-width-narrow": "820px",
|
|
61
|
-
"--radius": "
|
|
89
|
+
"--radius": "1.1rem",
|
|
90
|
+
"--radius-sm": "0.7rem",
|
|
62
91
|
"margin": "0",
|
|
63
92
|
"padding": "0",
|
|
64
|
-
"fontFamily": "
|
|
93
|
+
"fontFamily": "var(--font-body)",
|
|
65
94
|
"lineHeight": "1.6",
|
|
66
95
|
"color": "var(--color-text-primary)",
|
|
67
|
-
"backgroundColor": "var(--color-bg-white)"
|
|
96
|
+
"backgroundColor": "var(--color-bg-white)",
|
|
97
|
+
"h1": {
|
|
98
|
+
"fontFamily": "var(--font-heading)",
|
|
99
|
+
"color": "var(--color-text-primary)"
|
|
100
|
+
},
|
|
101
|
+
"h2": {
|
|
102
|
+
"fontFamily": "var(--font-heading)",
|
|
103
|
+
"color": "var(--color-text-primary)"
|
|
104
|
+
},
|
|
105
|
+
"h3": {
|
|
106
|
+
"fontFamily": "var(--font-heading)",
|
|
107
|
+
"color": "var(--color-text-primary)"
|
|
108
|
+
},
|
|
109
|
+
"h4": {
|
|
110
|
+
"fontFamily": "var(--font-heading)",
|
|
111
|
+
"color": "var(--color-text-primary)"
|
|
112
|
+
},
|
|
113
|
+
"strong": {
|
|
114
|
+
"color": "var(--color-text-primary)",
|
|
115
|
+
"fontWeight": "700"
|
|
116
|
+
},
|
|
117
|
+
"a": {
|
|
118
|
+
"color": "var(--color-primary)"
|
|
119
|
+
},
|
|
120
|
+
"::selection": {
|
|
121
|
+
"backgroundColor": "var(--color-primary)",
|
|
122
|
+
"color": "#ffffff"
|
|
123
|
+
}
|
|
68
124
|
},
|
|
69
125
|
"imports": {
|
|
70
126
|
"Markdown": "@jxsuite/parser/Markdown.class.json",
|
|
@@ -74,7 +130,12 @@
|
|
|
74
130
|
"optimize": true,
|
|
75
131
|
"widths": [320, 640, 960, 1280, 1920],
|
|
76
132
|
"formats": ["webp", "avif"],
|
|
77
|
-
"quality": {
|
|
133
|
+
"quality": {
|
|
134
|
+
"webp": 80,
|
|
135
|
+
"avif": 65,
|
|
136
|
+
"jpeg": 80,
|
|
137
|
+
"png": 80
|
|
138
|
+
},
|
|
78
139
|
"sizes": "(max-width: 768px) 100vw, 50vw",
|
|
79
140
|
"lazyLoad": true
|
|
80
141
|
},
|
|
@@ -85,12 +146,24 @@
|
|
|
85
146
|
"schema": {
|
|
86
147
|
"type": "object",
|
|
87
148
|
"properties": {
|
|
88
|
-
"name": {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
"
|
|
92
|
-
|
|
93
|
-
|
|
149
|
+
"name": {
|
|
150
|
+
"type": "string"
|
|
151
|
+
},
|
|
152
|
+
"level": {
|
|
153
|
+
"type": "string"
|
|
154
|
+
},
|
|
155
|
+
"time": {
|
|
156
|
+
"type": "string"
|
|
157
|
+
},
|
|
158
|
+
"instructor": {
|
|
159
|
+
"type": "string"
|
|
160
|
+
},
|
|
161
|
+
"focus": {
|
|
162
|
+
"type": "string"
|
|
163
|
+
},
|
|
164
|
+
"order": {
|
|
165
|
+
"type": "number"
|
|
166
|
+
}
|
|
94
167
|
},
|
|
95
168
|
"required": ["name", "level", "time", "instructor"]
|
|
96
169
|
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tagName": "hs-callbar",
|
|
3
|
+
"state": {
|
|
4
|
+
"phone": "(970) 555-0148",
|
|
5
|
+
"phoneHref": "tel:+19705550148"
|
|
6
|
+
},
|
|
7
|
+
"style": {
|
|
8
|
+
"display": "none",
|
|
9
|
+
"position": "fixed",
|
|
10
|
+
"bottom": "0",
|
|
11
|
+
"left": "0",
|
|
12
|
+
"right": "0",
|
|
13
|
+
"zIndex": "70",
|
|
14
|
+
"gridTemplateColumns": "1fr 1fr",
|
|
15
|
+
"backgroundColor": "var(--color-steel)",
|
|
16
|
+
"borderTop": "2px solid var(--color-primary)",
|
|
17
|
+
"boxShadow": "0 -8px 26px -14px rgba(0,0,0,0.7)",
|
|
18
|
+
"@--md": { "display": "grid" }
|
|
19
|
+
},
|
|
20
|
+
"children": [
|
|
21
|
+
{
|
|
22
|
+
"tagName": "a",
|
|
23
|
+
"attributes": { "href": "${state.phoneHref}" },
|
|
24
|
+
"style": {
|
|
25
|
+
"display": "flex",
|
|
26
|
+
"alignItems": "center",
|
|
27
|
+
"justifyContent": "center",
|
|
28
|
+
"gap": "0.5rem",
|
|
29
|
+
"padding": "0.95rem 1rem",
|
|
30
|
+
"color": "var(--color-text-white)",
|
|
31
|
+
"textDecoration": "none",
|
|
32
|
+
"fontFamily": "var(--font-heading)",
|
|
33
|
+
"textTransform": "uppercase",
|
|
34
|
+
"letterSpacing": "0.04em",
|
|
35
|
+
"fontWeight": "600",
|
|
36
|
+
"fontSize": "1rem",
|
|
37
|
+
"borderRight": "1px solid var(--color-steel-line)"
|
|
38
|
+
},
|
|
39
|
+
"children": [
|
|
40
|
+
{
|
|
41
|
+
"tagName": "span",
|
|
42
|
+
"style": { "color": "var(--color-primary)", "fontSize": "1.15rem" },
|
|
43
|
+
"textContent": "☏"
|
|
44
|
+
},
|
|
45
|
+
{ "tagName": "span", "textContent": "Call Now" }
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"tagName": "a",
|
|
50
|
+
"attributes": { "href": "/contact/" },
|
|
51
|
+
"style": {
|
|
52
|
+
"display": "flex",
|
|
53
|
+
"alignItems": "center",
|
|
54
|
+
"justifyContent": "center",
|
|
55
|
+
"gap": "0.5rem",
|
|
56
|
+
"padding": "0.95rem 1rem",
|
|
57
|
+
"backgroundColor": "var(--color-primary)",
|
|
58
|
+
"color": "var(--color-text-white)",
|
|
59
|
+
"textDecoration": "none",
|
|
60
|
+
"fontFamily": "var(--font-heading)",
|
|
61
|
+
"textTransform": "uppercase",
|
|
62
|
+
"letterSpacing": "0.04em",
|
|
63
|
+
"fontWeight": "600",
|
|
64
|
+
"fontSize": "1rem"
|
|
65
|
+
},
|
|
66
|
+
"children": [
|
|
67
|
+
{ "tagName": "span", "style": { "fontSize": "1.1rem" }, "textContent": "⚡" },
|
|
68
|
+
{ "tagName": "span", "textContent": "Free Quote" }
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
}
|