@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,10 +2,12 @@
|
|
|
2
2
|
title: "Horizon Conf 2026 — One day for the people building what's next"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
::ev-hero{props.eyebrow="A one-day tech & design conference" props.date="June 12, 2026" props.location="The Foundry · Portland, OR" props.heading="The horizon, one day early." props.subheading="Two stages, hands-on workshops, and the designers and engineers shaping the next decade of the web — all in one room, for one day." props.cta="Get
|
|
5
|
+
::ev-hero{props.eyebrow="A one-day tech & design conference" props.date="June 12, 2026" props.location="The Foundry · Portland, OR" props.heading="The horizon, one day early." props.subheading="Two stages, hands-on workshops, and the designers and engineers shaping the next decade of the web — all in one room, for one day." props.cta="Get tickets" props.ctaHref="/tickets/" props.cta2="View schedule" props.cta2Href="/schedule/" props.bg="/images/hero.jpg"}
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
::ev-savedate{props.eyebrow="Save the date" props.heading="June 12, 2026 — Portland" props.text="Early-bird tickets are live and going fast. Lock in your seat before prices step up." props.days="42" props.hours="18" props.minutes="05" props.seconds="30" props.cta="Get tickets" props.ctaHref="/tickets/"}
|
|
8
|
+
|
|
9
|
+
:::::section{style.padding="clamp(3rem, 6vw, 4.25rem) 1.5rem"}
|
|
10
|
+
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.display="grid" style.gridTemplateColumns="repeat(4, 1fr)" style.gap="1rem" style.--sm.gridTemplateColumns="repeat(2, 1fr)"}
|
|
9
11
|
::ev-stat{props.value="500+" props.label="Attendees"}
|
|
10
12
|
|
|
11
13
|
::ev-stat{props.value="24" props.label="Speakers"}
|
|
@@ -17,14 +19,18 @@ title: "Horizon Conf 2026 — One day for the people building what's next"
|
|
|
17
19
|
:::::
|
|
18
20
|
|
|
19
21
|
:::::section{style.padding="clamp(3.5rem, 8vw, 6rem) 1.5rem" style.backgroundColor="var(--color-bg-cream)"}
|
|
20
|
-
|
|
22
|
+
::::div{style.maxWidth="var(--max-width)" style.margin="0 auto" style.display="grid" style.gridTemplateColumns="0.85fr 1.15fr" style.gap="clamp(2rem, 5vw, 4rem)" style.alignItems="start" style.--md.gridTemplateColumns="1fr"}
|
|
23
|
+
:::div{style.position="sticky" style.top="6rem" style.alignSelf="start"}
|
|
24
|
+
::ev-section-header{props.eyebrow="Why attend" props.heading="A day built to move you forward" props.subheading="No filler, no fluff — just talks, workshops, and people worth meeting." props.align="left"}
|
|
25
|
+
:::
|
|
21
26
|
|
|
22
|
-
|
|
23
|
-
::ev-
|
|
27
|
+
:::div
|
|
28
|
+
::ev-reason{props.num="01" props.title="Talks that ship" props.text="Main-stage keynotes from people who build in the open — big ideas you can put to work on Monday morning, not someday."}
|
|
24
29
|
|
|
25
|
-
::ev-
|
|
30
|
+
::ev-reason{props.num="02" props.title="Hands-on workshops" props.text="Small-group sessions where you leave with something you actually built — a working prototype, not a page of notes."}
|
|
26
31
|
|
|
27
|
-
::ev-
|
|
32
|
+
::ev-reason{props.num="03" props.title="The hallway track" props.text="Curated meetups, lightning intros, and enough coffee to find your next collaborator, cofounder, or hire."}
|
|
33
|
+
:::
|
|
28
34
|
::::
|
|
29
35
|
:::::
|
|
30
36
|
|
|
@@ -41,8 +47,8 @@ title: "Horizon Conf 2026 — One day for the people building what's next"
|
|
|
41
47
|
::ev-speaker-card{props.name="Lena Cho" props.title="Motion Lead, Studio Bright" props.photo="/images/speaker-4.jpg"}
|
|
42
48
|
::::
|
|
43
49
|
|
|
44
|
-
::::div{style.textAlign="center" style.marginTop="
|
|
45
|
-
:::a{href="/speakers/" style.display="inline-block" style.color="var(--color-
|
|
50
|
+
::::div{style.textAlign="center" style.marginTop="2.25rem"}
|
|
51
|
+
:::a{href="/speakers/" style.display="inline-block" style.color="var(--color-accent)" style.fontWeight="700" style.textDecoration="none" style.fontSize="1.05rem"}
|
|
46
52
|
Meet all 24 speakers →
|
|
47
53
|
:::
|
|
48
54
|
::::
|
|
@@ -53,13 +59,31 @@ Meet all 24 speakers →
|
|
|
53
59
|
|
|
54
60
|
::ev-agenda-tabs
|
|
55
61
|
|
|
56
|
-
::::div{style.textAlign="center" style.marginTop="
|
|
57
|
-
:::a{href="/schedule/" style.display="inline-block" style.color="var(--color-
|
|
62
|
+
::::div{style.textAlign="center" style.marginTop="2.25rem"}
|
|
63
|
+
:::a{href="/schedule/" style.display="inline-block" style.color="var(--color-accent)" style.fontWeight="700" style.textDecoration="none" style.fontSize="1.05rem"}
|
|
58
64
|
See the full schedule →
|
|
59
65
|
:::
|
|
60
66
|
::::
|
|
61
67
|
:::::
|
|
62
68
|
|
|
63
|
-
|
|
69
|
+
:::::section{style.padding="clamp(3.5rem, 8vw, 6rem) 1.5rem"}
|
|
70
|
+
::ev-section-header{props.eyebrow="Tickets" props.heading="Pick your pass" props.subheading="One day, one venue, every track. Early-bird pricing ends April 30 — lock it in before prices step up."}
|
|
71
|
+
|
|
72
|
+
::::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.--md.gridTemplateColumns="1fr" style.--md.maxWidth="440px"}
|
|
73
|
+
::ev-ticket-card{props.tier="General" props.price="$149" props.period="/ early bird" props.description="Full access to both stages for the day." props.perk1="Access to all main-stage talks" props.perk2="Hallway track & meetups" props.perk3="Lunch and all-day coffee" props.perk4="Talk recordings after the event" props.cta="Get General" props.ctaHref="/tickets/"}
|
|
74
|
+
|
|
75
|
+
::ev-ticket-card{props.tier="Pro" props.price="$299" props.period="/ early bird" props.description="Everything in General, plus the hands-on workshop track." props.featured="true" props.badge="Most popular" props.perk1="Everything in General" props.perk2="Reserved seat in every workshop" props.perk3="Speaker Q&A lounge access" props.perk4="Horizon swag kit" props.cta="Get Pro" props.ctaHref="/tickets/"}
|
|
76
|
+
|
|
77
|
+
::ev-ticket-card{props.tier="Team" props.price="$1,200" props.period="/ 5 seats" props.description="Bring the whole crew — five Pro passes at a group rate." props.perk1="5 × Pro passes" props.perk2="Reserved team table at lunch" props.perk3="Invite to the sponsor mixer" props.perk4="One extra pass for a guest" props.cta="Get Team" props.ctaHref="/tickets/"}
|
|
78
|
+
::::
|
|
79
|
+
|
|
80
|
+
::::div{style.textAlign="center" style.marginTop="2.25rem"}
|
|
81
|
+
:::a{href="/tickets/" style.display="inline-block" style.color="var(--color-accent)" style.fontWeight="700" style.textDecoration="none" style.fontSize="1.05rem"}
|
|
82
|
+
Compare passes & fine print →
|
|
83
|
+
:::
|
|
84
|
+
::::
|
|
85
|
+
:::::
|
|
86
|
+
|
|
87
|
+
::ev-sponsors{props.label="Backed by the teams building the modern web"}
|
|
64
88
|
|
|
65
|
-
::ev-cta{props.eyebrow="One day only" props.heading="Be in the room on June 12" props.text="Horizon Conf sold out last year. Grab your ticket now and join 500 builders for a single, unforgettable day." props.cta="Get
|
|
89
|
+
::ev-cta{props.eyebrow="One day only" props.heading="Be in the room on June 12" props.text="Horizon Conf sold out last year. Grab your ticket now and join 500 builders for a single, unforgettable day." props.cta="Get tickets" props.ctaHref="/tickets/" props.note="Early-bird pricing ends April 30."}
|
|
@@ -37,40 +37,43 @@ state:
|
|
|
37
37
|
---
|
|
38
38
|
|
|
39
39
|
:::::section{style.padding="clamp(3rem, 6vw, 4.5rem) 1.5rem" style.backgroundColor="var(--color-bg-cream)"}
|
|
40
|
-
::ev-section-header{props.eyebrow="June 12, 2026" props.heading="One day, three tracks" props.subheading="Everything runs across a single day
|
|
40
|
+
::ev-section-header{props.eyebrow="June 12, 2026 · The Foundry" props.heading="One day, three tracks" props.subheading="Everything runs across a single day in Portland. Filter the planner by track, or scroll for the full timeline."}
|
|
41
41
|
:::::
|
|
42
42
|
|
|
43
|
-
:::::section{style.padding="clamp(
|
|
44
|
-
::ev-section-header{props.eyebrow="Plan your day" props.heading="Filter by track" props.subheading="Tap a track to focus the agenda
|
|
43
|
+
:::::section{style.padding="clamp(3.5rem, 8vw, 6rem) 1.5rem"}
|
|
44
|
+
::ev-section-header{props.eyebrow="Plan your day" props.heading="Filter by track" props.subheading="Tap a track to focus the agenda — everything updates instantly, no page reload."}
|
|
45
45
|
|
|
46
46
|
::ev-agenda-tabs
|
|
47
47
|
:::::
|
|
48
48
|
|
|
49
|
-
:::::section{style.maxWidth="var(--max-width-narrow)" style.margin="0 auto" style.padding="clamp(2rem, 5vw, 3.5rem) 1.5rem"}
|
|
50
|
-
::ev-section-header{props.heading="The full
|
|
49
|
+
:::::section{style.maxWidth="var(--max-width-narrow)" style.margin="0 auto" style.padding="clamp(2rem, 5vw, 3.5rem) 1.5rem clamp(3.5rem, 8vw, 6rem)"}
|
|
50
|
+
::ev-section-header{props.heading="The full timeline" props.subheading="Every session on the day, grouped by track." props.align="left"}
|
|
51
51
|
|
|
52
|
-
::::div{style.marginBottom="
|
|
53
|
-
:::h3{style.
|
|
54
|
-
Main Stage
|
|
52
|
+
::::div{style.marginBottom="2.75rem"}
|
|
53
|
+
:::h3{style.display="flex" style.alignItems="center" style.gap="0.7rem" style.fontFamily="var(--font-heading)" style.fontSize="1.35rem" style.fontWeight="700" style.margin="0 0 1.4rem" style.color="var(--color-text-primary)"}
|
|
54
|
+
:span[]{style.width="0.7rem" style.height="0.7rem" style.borderRadius="50%" style.background="var(--color-accent)" style.boxShadow="0 0 12px rgba(34,224,255,0.7)"} Main Stage
|
|
55
55
|
:::
|
|
56
|
+
|
|
56
57
|
:::Array{items.ref="#/state/mainStage"}
|
|
57
58
|
::ev-session-row{props.time="${item.data.time}" props.title="${item.data.title}" props.track="${item.data.track}" props.speaker="${item.data.speaker}"}
|
|
58
59
|
:::
|
|
59
60
|
::::
|
|
60
61
|
|
|
61
|
-
::::div{style.marginBottom="
|
|
62
|
-
:::h3{style.
|
|
63
|
-
Workshops
|
|
62
|
+
::::div{style.marginBottom="2.75rem"}
|
|
63
|
+
:::h3{style.display="flex" style.alignItems="center" style.gap="0.7rem" style.fontFamily="var(--font-heading)" style.fontSize="1.35rem" style.fontWeight="700" style.margin="0 0 1.4rem" style.color="var(--color-text-primary)"}
|
|
64
|
+
:span[]{style.width="0.7rem" style.height="0.7rem" style.borderRadius="50%" style.background="var(--color-lime)" style.boxShadow="0 0 12px rgba(198,255,77,0.7)"} Workshops
|
|
64
65
|
:::
|
|
66
|
+
|
|
65
67
|
:::Array{items.ref="#/state/workshops"}
|
|
66
68
|
::ev-session-row{props.time="${item.data.time}" props.title="${item.data.title}" props.track="${item.data.track}" props.speaker="${item.data.speaker}"}
|
|
67
69
|
:::
|
|
68
70
|
::::
|
|
69
71
|
|
|
70
|
-
::::div
|
|
71
|
-
:::h3{style.
|
|
72
|
-
Design
|
|
72
|
+
::::div
|
|
73
|
+
:::h3{style.display="flex" style.alignItems="center" style.gap="0.7rem" style.fontFamily="var(--font-heading)" style.fontSize="1.35rem" style.fontWeight="700" style.margin="0 0 1.4rem" style.color="var(--color-text-primary)"}
|
|
74
|
+
:span[]{style.width="0.7rem" style.height="0.7rem" style.borderRadius="50%" style.background="#ff6bb0" style.boxShadow="0 0 12px rgba(255,61,154,0.7)"} Design
|
|
73
75
|
:::
|
|
76
|
+
|
|
74
77
|
:::Array{items.ref="#/state/design"}
|
|
75
78
|
::ev-session-row{props.time="${item.data.time}" props.title="${item.data.title}" props.track="${item.data.track}" props.speaker="${item.data.speaker}"}
|
|
76
79
|
:::
|
|
@@ -83,7 +86,7 @@ Design
|
|
|
83
86
|
|
|
84
87
|
A restored ironworks turned event hall in Portland's Central Eastside — high ceilings, fast Wi-Fi, and coffee that never runs out. Both stages, all workshop rooms, and the hallway track are steps apart under one roof.
|
|
85
88
|
|
|
86
|
-
Doors open at 8
|
|
89
|
+
Doors open at 8 AM sharp. Bring a laptop for the workshop track.
|
|
87
90
|
:::
|
|
88
91
|
|
|
89
|
-
::ev-cta{props.eyebrow="Don't miss it" props.heading="Your seat is waiting" props.text="Sessions fill on a first-come basis on the day. A ticket guarantees your spot in every track." props.cta="Get
|
|
92
|
+
::ev-cta{props.eyebrow="Don't miss it" props.heading="Your seat is waiting" props.text="Sessions fill on a first-come basis on the day. A ticket guarantees your spot in every track." props.cta="Get tickets" props.ctaHref="/tickets/"}
|
package/sites/event/project.json
CHANGED
|
@@ -8,7 +8,10 @@
|
|
|
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",
|
|
@@ -19,21 +22,31 @@
|
|
|
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=Sora:wght@400;500;600;700;800&family=Manrope:wght@400;500;600;700&display=swap"
|
|
37
50
|
}
|
|
38
51
|
}
|
|
39
52
|
],
|
|
@@ -44,27 +57,61 @@
|
|
|
44
57
|
"--sm": "(max-width: 640px)"
|
|
45
58
|
},
|
|
46
59
|
"style": {
|
|
47
|
-
"--color-primary": "#
|
|
48
|
-
"--color-primary-hover": "#
|
|
49
|
-
"--color-ink": "#
|
|
50
|
-
"--color-bg
|
|
51
|
-
"--color-bg-
|
|
52
|
-
"--color-bg-
|
|
53
|
-
"--color-
|
|
60
|
+
"--color-primary": "#ff3d9a",
|
|
61
|
+
"--color-primary-hover": "#ff6bb4",
|
|
62
|
+
"--color-ink": "#050308",
|
|
63
|
+
"--color-bg": "#0a0711",
|
|
64
|
+
"--color-bg-dark": "#0a0711",
|
|
65
|
+
"--color-bg-cream": "#0f0b1c",
|
|
66
|
+
"--color-bg-white": "#150f28",
|
|
67
|
+
"--color-bg-elev": "#150f28",
|
|
68
|
+
"--color-bg-elev2": "#1e1638",
|
|
69
|
+
"--color-text-primary": "#f3eefe",
|
|
54
70
|
"--color-text-white": "#ffffff",
|
|
55
|
-
"--color-text-muted": "#
|
|
56
|
-
"--color-border": "#
|
|
57
|
-
"--color-accent": "#
|
|
58
|
-
"--
|
|
71
|
+
"--color-text-muted": "#a99fc8",
|
|
72
|
+
"--color-border": "#2b2148",
|
|
73
|
+
"--color-accent": "#22e0ff",
|
|
74
|
+
"--color-cyan": "#22e0ff",
|
|
75
|
+
"--color-violet": "#a855f7",
|
|
76
|
+
"--color-lime": "#c6ff4d",
|
|
77
|
+
"--grad": "linear-gradient(115deg, #22e0ff 0%, #a855f7 50%, #ff3d9a 100%)",
|
|
78
|
+
"--grad-btn": "linear-gradient(120deg, #ff3d9a 0%, #a855f7 100%)",
|
|
79
|
+
"--grad-cyan": "linear-gradient(120deg, #22e0ff 0%, #7c74ff 100%)",
|
|
80
|
+
"--glow": "rgba(255, 61, 154, 0.5)",
|
|
81
|
+
"--glow-cyan": "rgba(34, 224, 255, 0.4)",
|
|
82
|
+
"--font-heading": "'Sora', 'Segoe UI', system-ui, -apple-system, sans-serif",
|
|
83
|
+
"--font-body": "'Manrope', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",
|
|
59
84
|
"--max-width": "1200px",
|
|
60
|
-
"--max-width-narrow": "
|
|
61
|
-
"--radius": "
|
|
85
|
+
"--max-width-narrow": "860px",
|
|
86
|
+
"--radius": "1rem",
|
|
62
87
|
"margin": "0",
|
|
63
88
|
"padding": "0",
|
|
64
|
-
"fontFamily": "
|
|
89
|
+
"fontFamily": "var(--font-body)",
|
|
65
90
|
"lineHeight": "1.6",
|
|
66
91
|
"color": "var(--color-text-primary)",
|
|
67
|
-
"backgroundColor": "var(--color-bg
|
|
92
|
+
"backgroundColor": "var(--color-bg)",
|
|
93
|
+
"h1": {
|
|
94
|
+
"fontFamily": "var(--font-heading)",
|
|
95
|
+
"color": "var(--color-text-primary)"
|
|
96
|
+
},
|
|
97
|
+
"h2": {
|
|
98
|
+
"fontFamily": "var(--font-heading)",
|
|
99
|
+
"color": "var(--color-text-primary)"
|
|
100
|
+
},
|
|
101
|
+
"h3": {
|
|
102
|
+
"fontFamily": "var(--font-heading)",
|
|
103
|
+
"color": "var(--color-text-primary)"
|
|
104
|
+
},
|
|
105
|
+
"h4": {
|
|
106
|
+
"fontFamily": "var(--font-heading)",
|
|
107
|
+
"color": "var(--color-text-primary)"
|
|
108
|
+
},
|
|
109
|
+
"strong": {
|
|
110
|
+
"color": "var(--color-text-primary)"
|
|
111
|
+
},
|
|
112
|
+
"a": {
|
|
113
|
+
"color": "var(--color-primary)"
|
|
114
|
+
}
|
|
68
115
|
},
|
|
69
116
|
"imports": {
|
|
70
117
|
"Markdown": "@jxsuite/parser/Markdown.class.json",
|
|
@@ -74,7 +121,12 @@
|
|
|
74
121
|
"optimize": true,
|
|
75
122
|
"widths": [320, 640, 960, 1280, 1920],
|
|
76
123
|
"formats": ["webp", "avif"],
|
|
77
|
-
"quality": {
|
|
124
|
+
"quality": {
|
|
125
|
+
"webp": 80,
|
|
126
|
+
"avif": 65,
|
|
127
|
+
"jpeg": 80,
|
|
128
|
+
"png": 80
|
|
129
|
+
},
|
|
78
130
|
"sizes": "(max-width: 768px) 100vw, 50vw",
|
|
79
131
|
"lazyLoad": true
|
|
80
132
|
},
|
|
@@ -85,11 +137,21 @@
|
|
|
85
137
|
"schema": {
|
|
86
138
|
"type": "object",
|
|
87
139
|
"properties": {
|
|
88
|
-
"title": {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
"
|
|
92
|
-
|
|
140
|
+
"title": {
|
|
141
|
+
"type": "string"
|
|
142
|
+
},
|
|
143
|
+
"time": {
|
|
144
|
+
"type": "string"
|
|
145
|
+
},
|
|
146
|
+
"track": {
|
|
147
|
+
"type": "string"
|
|
148
|
+
},
|
|
149
|
+
"speaker": {
|
|
150
|
+
"type": "string"
|
|
151
|
+
},
|
|
152
|
+
"order": {
|
|
153
|
+
"type": "number"
|
|
154
|
+
}
|
|
93
155
|
},
|
|
94
156
|
"required": ["title", "track"]
|
|
95
157
|
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tagName": "fs-band",
|
|
3
|
+
"state": {
|
|
4
|
+
"kicker": "",
|
|
5
|
+
"heading": "",
|
|
6
|
+
"text": "",
|
|
7
|
+
"cta": "",
|
|
8
|
+
"ctaHref": "/contact/",
|
|
9
|
+
"image": { "type": "string", "format": "image", "default": "" }
|
|
10
|
+
},
|
|
11
|
+
"style": {
|
|
12
|
+
"display": "flex",
|
|
13
|
+
"alignItems": "center",
|
|
14
|
+
"justifyContent": "center",
|
|
15
|
+
"position": "relative",
|
|
16
|
+
"overflow": "hidden",
|
|
17
|
+
"minHeight": "clamp(360px, 58vh, 620px)",
|
|
18
|
+
"padding": "clamp(3.5rem, 8vw, 6rem) 1.5rem",
|
|
19
|
+
"textAlign": "center",
|
|
20
|
+
"color": "#ffffff",
|
|
21
|
+
"backgroundColor": "var(--duo-shadow)"
|
|
22
|
+
},
|
|
23
|
+
"children": [
|
|
24
|
+
{
|
|
25
|
+
"tagName": "div",
|
|
26
|
+
"style": { "position": "absolute", "inset": "0", "zIndex": "0" },
|
|
27
|
+
"children": [
|
|
28
|
+
{
|
|
29
|
+
"tagName": "img",
|
|
30
|
+
"attributes": {
|
|
31
|
+
"src": "${state.image}",
|
|
32
|
+
"alt": "",
|
|
33
|
+
"width": "1920",
|
|
34
|
+
"height": "1080",
|
|
35
|
+
"loading": "lazy"
|
|
36
|
+
},
|
|
37
|
+
"style": {
|
|
38
|
+
"position": "absolute",
|
|
39
|
+
"inset": "0",
|
|
40
|
+
"width": "100%",
|
|
41
|
+
"height": "100%",
|
|
42
|
+
"objectFit": "cover",
|
|
43
|
+
"objectPosition": "center 35%",
|
|
44
|
+
"filter": "grayscale(100%) contrast(1.12)"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"tagName": "div",
|
|
49
|
+
"style": {
|
|
50
|
+
"position": "absolute",
|
|
51
|
+
"inset": "0",
|
|
52
|
+
"backgroundColor": "var(--duo-shadow)",
|
|
53
|
+
"mixBlendMode": "lighten"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"tagName": "div",
|
|
58
|
+
"style": {
|
|
59
|
+
"position": "absolute",
|
|
60
|
+
"inset": "0",
|
|
61
|
+
"background": "linear-gradient(120deg, #d6157a 0%, #ff2e63 52%, #ff8c42 100%)",
|
|
62
|
+
"mixBlendMode": "multiply",
|
|
63
|
+
"opacity": "0.9"
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"tagName": "div",
|
|
68
|
+
"style": {
|
|
69
|
+
"position": "absolute",
|
|
70
|
+
"inset": "0",
|
|
71
|
+
"background": "radial-gradient(ellipse 70% 70% at 50% 50%, rgba(20,6,16,0.15), rgba(20,6,16,0.55))"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"tagName": "div",
|
|
78
|
+
"style": { "position": "relative", "zIndex": "5", "maxWidth": "var(--max-width-narrow)" },
|
|
79
|
+
"children": [
|
|
80
|
+
{
|
|
81
|
+
"tagName": "p",
|
|
82
|
+
"style": {
|
|
83
|
+
"display": "${state.kicker ? 'block' : 'none'}",
|
|
84
|
+
"margin": "0 0 1.1rem",
|
|
85
|
+
"fontFamily": "var(--font-heading)",
|
|
86
|
+
"textTransform": "uppercase",
|
|
87
|
+
"letterSpacing": "0.22em",
|
|
88
|
+
"fontSize": "0.8rem",
|
|
89
|
+
"fontWeight": "700",
|
|
90
|
+
"color": "rgba(255,255,255,0.85)"
|
|
91
|
+
},
|
|
92
|
+
"textContent": "${state.kicker}"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"tagName": "p",
|
|
96
|
+
"style": {
|
|
97
|
+
"margin": "0",
|
|
98
|
+
"fontFamily": "var(--font-display)",
|
|
99
|
+
"fontSize": "clamp(2.4rem, 7vw, 5rem)",
|
|
100
|
+
"fontWeight": "400",
|
|
101
|
+
"lineHeight": "0.95",
|
|
102
|
+
"letterSpacing": "0.01em",
|
|
103
|
+
"textTransform": "uppercase",
|
|
104
|
+
"textShadow": "0 14px 40px rgba(20,6,16,0.4)"
|
|
105
|
+
},
|
|
106
|
+
"textContent": "${state.heading}"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"tagName": "p",
|
|
110
|
+
"style": {
|
|
111
|
+
"display": "${state.text ? 'block' : 'none'}",
|
|
112
|
+
"margin": "1.4rem auto 0",
|
|
113
|
+
"maxWidth": "44ch",
|
|
114
|
+
"fontSize": "1.1rem",
|
|
115
|
+
"fontWeight": "500",
|
|
116
|
+
"lineHeight": "1.65",
|
|
117
|
+
"color": "rgba(255,255,255,0.92)"
|
|
118
|
+
},
|
|
119
|
+
"textContent": "${state.text}"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"tagName": "a",
|
|
123
|
+
"attributes": { "href": "${state.ctaHref}" },
|
|
124
|
+
"style": {
|
|
125
|
+
"display": "${state.cta ? 'inline-block' : 'none'}",
|
|
126
|
+
"marginTop": "2rem",
|
|
127
|
+
"backgroundColor": "#ffffff",
|
|
128
|
+
"color": "var(--color-ink)",
|
|
129
|
+
"padding": "1rem 2.3rem",
|
|
130
|
+
"borderRadius": "999px",
|
|
131
|
+
"fontFamily": "var(--font-heading)",
|
|
132
|
+
"fontSize": "0.9rem",
|
|
133
|
+
"fontWeight": "800",
|
|
134
|
+
"textTransform": "uppercase",
|
|
135
|
+
"letterSpacing": "0.06em",
|
|
136
|
+
"textDecoration": "none",
|
|
137
|
+
"boxShadow": "0 16px 40px -14px rgba(0,0,0,0.5)",
|
|
138
|
+
"transition": "transform 0.15s, box-shadow 0.15s",
|
|
139
|
+
":hover": {
|
|
140
|
+
"transform": "translateY(-3px)",
|
|
141
|
+
"boxShadow": "0 22px 48px -14px rgba(0,0,0,0.55)"
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
"textContent": "${state.cta}"
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
}
|
|
148
|
+
]
|
|
149
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tagName": "fs-booking",
|
|
3
|
+
"state": {
|
|
4
|
+
"heading": "Reserve your spot"
|
|
5
|
+
},
|
|
6
|
+
"style": {
|
|
7
|
+
"display": "block",
|
|
8
|
+
"backgroundColor": "var(--color-bg-white)",
|
|
9
|
+
"border": "1px solid var(--color-border)",
|
|
10
|
+
"borderRadius": "var(--radius)",
|
|
11
|
+
"padding": "clamp(1.6rem, 4vw, 2.4rem)",
|
|
12
|
+
"boxShadow": "0 18px 44px -30px rgba(26,15,24,0.4)",
|
|
13
|
+
"& input": {
|
|
14
|
+
"width": "100%",
|
|
15
|
+
"padding": "0.85rem 1rem",
|
|
16
|
+
"border": "1px solid var(--color-border)",
|
|
17
|
+
"borderRadius": "var(--radius-sm)",
|
|
18
|
+
"fontSize": "1rem",
|
|
19
|
+
"fontFamily": "var(--font-body)",
|
|
20
|
+
"backgroundColor": "var(--color-bg-blush)",
|
|
21
|
+
"color": "var(--color-text-primary)",
|
|
22
|
+
"boxSizing": "border-box",
|
|
23
|
+
"transition": "border-color 0.15s, box-shadow 0.15s"
|
|
24
|
+
},
|
|
25
|
+
"& textarea": {
|
|
26
|
+
"width": "100%",
|
|
27
|
+
"padding": "0.85rem 1rem",
|
|
28
|
+
"border": "1px solid var(--color-border)",
|
|
29
|
+
"borderRadius": "var(--radius-sm)",
|
|
30
|
+
"fontSize": "1rem",
|
|
31
|
+
"fontFamily": "var(--font-body)",
|
|
32
|
+
"backgroundColor": "var(--color-bg-blush)",
|
|
33
|
+
"color": "var(--color-text-primary)",
|
|
34
|
+
"boxSizing": "border-box",
|
|
35
|
+
"resize": "vertical",
|
|
36
|
+
"transition": "border-color 0.15s, box-shadow 0.15s"
|
|
37
|
+
},
|
|
38
|
+
"& input:focus": {
|
|
39
|
+
"outline": "none",
|
|
40
|
+
"borderColor": "var(--color-primary)",
|
|
41
|
+
"boxShadow": "0 0 0 3px rgba(255,46,99,0.14)"
|
|
42
|
+
},
|
|
43
|
+
"& textarea:focus": {
|
|
44
|
+
"outline": "none",
|
|
45
|
+
"borderColor": "var(--color-primary)",
|
|
46
|
+
"boxShadow": "0 0 0 3px rgba(255,46,99,0.14)"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"children": [
|
|
50
|
+
{
|
|
51
|
+
"tagName": "form",
|
|
52
|
+
"attributes": { "action": "#", "method": "post" },
|
|
53
|
+
"style": { "display": "grid", "gap": "0.9rem" },
|
|
54
|
+
"children": [
|
|
55
|
+
{
|
|
56
|
+
"tagName": "h3",
|
|
57
|
+
"style": {
|
|
58
|
+
"fontFamily": "var(--font-display)",
|
|
59
|
+
"fontSize": "clamp(1.7rem, 3.5vw, 2.2rem)",
|
|
60
|
+
"fontWeight": "400",
|
|
61
|
+
"textTransform": "uppercase",
|
|
62
|
+
"letterSpacing": "0.01em",
|
|
63
|
+
"margin": "0 0 0.4rem"
|
|
64
|
+
},
|
|
65
|
+
"textContent": "${state.heading}"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"tagName": "input",
|
|
69
|
+
"attributes": {
|
|
70
|
+
"type": "text",
|
|
71
|
+
"name": "name",
|
|
72
|
+
"placeholder": "Your name",
|
|
73
|
+
"required": "true",
|
|
74
|
+
"aria-label": "Your name"
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"tagName": "input",
|
|
79
|
+
"attributes": {
|
|
80
|
+
"type": "email",
|
|
81
|
+
"name": "email",
|
|
82
|
+
"placeholder": "Email address",
|
|
83
|
+
"required": "true",
|
|
84
|
+
"aria-label": "Email address"
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"tagName": "input",
|
|
89
|
+
"attributes": {
|
|
90
|
+
"type": "text",
|
|
91
|
+
"name": "class",
|
|
92
|
+
"placeholder": "Which class? e.g. Vinyasa Flow",
|
|
93
|
+
"aria-label": "Class you're interested in"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"tagName": "input",
|
|
98
|
+
"attributes": { "type": "date", "name": "date", "aria-label": "Preferred date" }
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"tagName": "textarea",
|
|
102
|
+
"attributes": {
|
|
103
|
+
"name": "message",
|
|
104
|
+
"rows": "4",
|
|
105
|
+
"placeholder": "New to movement? Any injuries or goals we should know about?",
|
|
106
|
+
"aria-label": "Message"
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"tagName": "button",
|
|
111
|
+
"attributes": { "type": "submit" },
|
|
112
|
+
"style": {
|
|
113
|
+
"justifySelf": "start",
|
|
114
|
+
"marginTop": "0.25rem",
|
|
115
|
+
"background": "var(--grad-hot)",
|
|
116
|
+
"color": "#ffffff",
|
|
117
|
+
"padding": "0.95rem 2.1rem",
|
|
118
|
+
"border": "none",
|
|
119
|
+
"borderRadius": "999px",
|
|
120
|
+
"fontFamily": "var(--font-heading)",
|
|
121
|
+
"fontSize": "0.88rem",
|
|
122
|
+
"fontWeight": "800",
|
|
123
|
+
"textTransform": "uppercase",
|
|
124
|
+
"letterSpacing": "0.06em",
|
|
125
|
+
"cursor": "pointer",
|
|
126
|
+
"boxShadow": "0 14px 32px -14px rgba(255,46,99,0.6)",
|
|
127
|
+
"transition": "transform 0.15s, box-shadow 0.15s",
|
|
128
|
+
":hover": {
|
|
129
|
+
"transform": "translateY(-2px)",
|
|
130
|
+
"boxShadow": "0 20px 40px -14px rgba(255,46,99,0.7)"
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
"textContent": "Request a spot →"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"tagName": "p",
|
|
137
|
+
"style": {
|
|
138
|
+
"fontSize": "0.82rem",
|
|
139
|
+
"color": "var(--color-text-muted)",
|
|
140
|
+
"margin": "0.25rem 0 0"
|
|
141
|
+
},
|
|
142
|
+
"textContent": "This is a demo form. Wire it to your booking provider or email in pages/contact.md."
|
|
143
|
+
}
|
|
144
|
+
]
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
}
|