Internal — Library (remove)

Reusable components

Filter by the kind of PMS / Hydra data each module touches. Prefer async server sections that load via site-content-bridge so pages stay thin.

Refactor direction: when a page repeats load* logic, move that fetch into a dedicated component under packages/ui/src (props-fed pattern like Promotions).

  • Self-fetching: page imports the section; the section awaits bridge loaders.
  • Parent-fed: page loads once and passes props when the UI cannot safely fetch on its own (the default pattern in the Astro Islands monorepo).

Browse by data domain

Toggle one or more domains. Empty selection shows everything (47 modules). The same filter controls which live demos render below (?domains= in the URL).

Showing 47 entries

  • Promotions

    section

    @hydra-sites/ui/sections

    Parent-fed: page loads loadPromotions() and passes SitePromotion[]

    Promotions
    <Promotions promotions={promos} placement="home_page_promotions" showViewAll variant="widget" />
  • LeadForm

    form

    @hydra-sites/ui/forms

    Parent-fed: loadLeadForm(formSlug) on the page; pass form + api client

    Forms / leads
    <LeadForm form={form} api={apiClient} placement="page_section:hero" />
  • Testimonials

    section

    @hydra-sites/ui/sections

    Parent-fed: pass initialTestimonials / initialStats from loadTestimonials (wrapper candidate)

    Testimonials / reviews
  • Hero

    section

    @hydra-sites/ui/sections

    Mostly static layout; optional imagery/copy via props

    UI primitivesBusiness / settings
  • Services

    section

    @hydra-sites/ui/sections

    Static placeholder grid — swap for PMS service items when wired

    Replace hard-coded cards with real service posts when ready.

    ServicesUI primitives
  • WhatToExpect

    section

    @hydra-sites/ui/sections

    Static presentation

    ServicesUI primitives
  • AboutUs

    section

    @hydra-sites/ui/sections

    Static presentation

    AboutUI primitives
  • FeaturedManufacturer

    section

    @hydra-sites/ui/sections

    Uses manufacturer badges/copy via clientConfig / siteExtras

    Business / settingsUI primitives
  • HowWeHelp

    section

    @hydra-sites/ui/sections

    Static presentation

    ServicesUI primitives
  • MaintenancePlans

    section

    @hydra-sites/ui/sections

    Static marketing layout — links to /plans routes

    Maintenance plansUI primitives
  • PromotionsClient

    section

    @hydra-sites/ui/sections

    Client carousel/widget — receives SitePromotion[] from page loader

    PromotionsUI primitives
  • ServiceAreas

    section

    @hydra-sites/ui/sections

    useBusiness().serviceAreas (Hydra / PMS-derived listing)

    Service areasBusiness / settings
  • Financing

    section

    @hydra-sites/ui/sections

    Static CTA layout linking financing flows

    FinancingUI primitives
  • FinancingPlanCard

    section

    @hydra-sites/ui/sections

    Props typed from FinancingPlanCardData (bridge-shaped)

    FinancingMaintenance plans
  • CTASection

    section

    @hydra-sites/ui/sections

    Business hooks + tel/contact CTAs

    ContactBusiness / settings
  • FAQSection

    section

    @hydra-sites/ui/sections

    Props-driven FAQGroup[] (often resolvePmsFaqs from templates)

    FAQs
  • BlogPost

    page-template

    @/templates/BlogPost

    Single blog post fields + rich body — apps/site template

    BlogPMS primitives
    No embedded demo
  • TeamMember

    page-template

    @/templates/TeamMember

    Single team member + bios/images — apps/site template

    TeamPMS primitives
    No embedded demo
  • ServiceDetail

    page-template

    @/templates/ServiceDetail

    Service post + parent category + related — apps/site template

    resolvePmsFaqs for FAQ accordions.

    ServicesService category (slug hub)FAQs
    No embedded demo
  • ServiceCategory

    page-template

    @/templates/ServiceCategory

    Aggregates service-category hub posts — apps/site template

    ServicesService category (slug hub)
    No embedded demo
  • ServiceArea

    page-template

    @/templates/ServiceArea

    Service-area detail fields + FAQs — apps/site template

    Service areasFAQs
    No embedded demo
  • WordPressPage

    page-template

    @/templates/WordPressPage

    Generic HTML body from PMSPost.content (legal/sample WP routes)

    Used by sample/legal-style WP routes.

    PMS primitivesBlog
    No embedded demo
  • Career

    page-template

    @/templates/Career

    Single job posting — bridge JobPosting + LeadForm

    CareersForms / leads
    No embedded demo
  • Plan

    page-template

    @/templates/Plan

    Single maintenance-plan post — apps/site template

    Maintenance plans
    No embedded demo
  • Promotion

    page-template

    @/templates/Promotion

    Single promotion detail — apps/site template

    Promotions
    No embedded demo
  • DynamicLeadForm

    form

    @hydra-sites/ui/forms

    Client form renderer — SiteForm + HydraApiClient submit

    Forms / leads
  • Navigation

    layout

    @hydra-sites/ui/layout

    Server wrapper — passes Hydra nav payload into NavigationServer

    Layout / chromeBusiness / settings
  • NavigationServer

    layout

    @hydra-sites/ui/layout

    SSR link tree + mega-menu props

    Layout / chromeServicesService areas
  • NavigationClient

    layout

    @hydra-sites/ui/layout

    Client mega-menu / drawer — services & areas from props

    Layout / chromeServicesService areas
  • Footer

    layout

    @hydra-sites/ui/layout

    BusinessProvider + menus + siteExtras

    Layout / chromeBusiness / settingsContact
  • JsonLd

    seo

    @ciwebgroup/site-content-bridge/seo

    Structured data JSON-LD scripts

    SEOBusiness / settings
  • BusinessProvider

    provider

    @hydra-sites/ui/providers

    React context — Hydra business_setting + blog authors + service areas

    Business / settings
  • AnimateIn

    ui

    @hydra-sites/ui/ui

    GSAP reveal wrapper

    UI primitives
  • BackToTop

    ui

    @hydra-sites/ui/ui

    Floating scroll button

    UI primitives
  • BuilderReferenceCard

    ui

    @hydra-sites/ui/ui

    Docs-style reference panel

    UI primitives
  • ContactInfoCard

    ui

    @hydra-sites/ui/ui

    Business contact rows

    ContactBusiness / settings
  • ContactSidebarCard

    ui

    @hydra-sites/ui/ui

    Sidebar contact module

    Contact
  • CTABanner

    ui

    @hydra-sites/ui/ui

    Banner strip CTAs

    ContactUI primitives
  • EmptyState

    ui

    @hydra-sites/ui/ui

    Empty list placeholder

    UI primitives
  • GridOverlay

    ui

    @hydra-sites/ui/ui

    Dev/design grid overlay

    UI primitives
  • HeroTrustBadges

    ui

    @hydra-sites/ui/ui

    Trust logos row — props from Hydra presentation

    Business / settingsUI primitives
  • PageHero

    ui

    @hydra-sites/ui/ui

    Interior page hero + breadcrumbs

    UI primitives
  • PageSection

    ui

    @hydra-sites/ui/ui

    Section spacing shell

    UI primitives
  • ScrollProgress

    ui

    @hydra-sites/ui/ui

    Reading progress indicator

    BlogUI primitives
  • ScrollingText

    ui

    @hydra-sites/ui/ui

    Marquee-style headline motion

    UI primitives
  • Section

    ui

    @hydra-sites/ui/ui

    Layout section primitive

    UI primitives
  • SectionHeading

    ui

    @hydra-sites/ui/ui

    Eyebrow + title block

    UI primitives

Live demos

Demos follow the same domain filters as the catalog (URL ?domains=). Navigation barrel + NavigationServer share one anchor. Tall templates scroll inside each sandbox. ScrollProgress and BackToTop stay documented as layout chrome rather than duplicated here.

Live demo

Promotions

section

@hydra-sites/ui/sections

Parent-fed: page loads loadPromotions() and passes SitePromotion[]

No promotions loaded

Publish promotions in PMS or check API credentials.

Live demo

LeadForm

form

@hydra-sites/ui/forms

Parent-fed: loadLeadForm(formSlug) on the page; pass form + api client

Demo

LeadForm requires page-supplied form + api client

Use the same pattern shown in `apps/site/src/pages/leads.astro` — load forms via `loadLeadForms()` and pass them into `<LeadForm form={…} api={apiClient} placement="…" />`.

Live demo

Testimonials

section

@hydra-sites/ui/sections

Parent-fed: pass initialTestimonials / initialStats from loadTestimonials (wrapper candidate)

CUSTOMER REVIEWS

What Our Customers Say

Our business is built on referrals from satisfied customers. Read what our clients say about our service.

5.0

STAR RATING

550

REVIEWS

FEATURED REVIEW
"Terrific service! Got me fixed up quick and was much faster for an appointment than I imagined. Awesome service!"
BA

Brock and Allison Hurt

May 2026

FEATURED REVIEW
"Gabe found some of the problems even before he saw our pictures. He was very helpful as to assuring us that it was an easy fix and problems were caused due to aging naturally. He completed the job quickly. I recommend this business because the process was easy from start to finish and he answered all our questions. They had installed our HVAC system and today they did a checkup and repaired the duct work."
CC

Chris Creek

Apr 2026

Ready to join our happy customers?

Experience the honest, trustworthy service our customers love.

Live demo

Hero

section

@hydra-sites/ui/sections

Mostly static layout; optional imagery/copy via props

,

Quality Service,
Guaranteed.

Professional service you can count on. Licensed, insured, and committed to your satisfaction.

15+

Years

500+

Reviews

24/7

Service

Live demo

Services

section

@hydra-sites/ui/sections

Static placeholder grid — swap for PMS service items when wired

Live demo

WhatToExpect

section

@hydra-sites/ui/sections

Static presentation

The Difference

Quality Work
That Pays

We earn your confidence with transparent pricing, timely response, and a focus on lasting satisfaction. The specialized service partner for those who value honesty.

01

Honesty

& Integrity

Our brand differentiator. Transparent recommendations and fair pricing — no upselling, just honest service.

  • Upfront pricing
  • Transparent quotes
  • No hidden fees
02

Certified

Professionals

We meet the highest performance standards, connecting you with the most dependable, energy-efficient systems.

  • Certified experts
  • Premium equipment
  • Factory training
03

Proven

Track Record

Years of dedicated service to our community. Our legacy is built on quality work and customer satisfaction.

  • Family owned
  • Long-term loyalty
  • Community trusted

Ready to Experience the Difference?

Schedule your service today and discover why our customers trust us.

Live demo

AboutUs

section

@hydra-sites/ui/sections

Static presentation

15+

Years of Excellence

500+

5-Star Reviews

5.0

Star Rating

About Us

Your Trusted Local Experts

Serving & Surrounding Areas

is a customer-focused, family-run company dedicated to providing expert, high-quality service for year-round comfort and reliability. Because our business is built on referrals from satisfied customers, we make delivering dependable results and outstanding service our daily mission.

When you need professional service you can trust, is the reliable team in , you can count on.

  • Family-owned and operated
  • Fully licensed and insured
  • All technicians background-checked
  • Transparent, upfront pricing
  • Live demo

    HowWeHelp

    section

    @hydra-sites/ui/sections

    Static presentation

    How We Can Help

    Solutions for
    every space

    Whether residential or light commercial, we tailor the install to the room.

    RESIDENTIAL

    Home Comfort

    TUNED

    Replace, repair, and tune-up residential HVAC for whole-home comfort and bills you can predict.

    Free estimates
    Same-day service
    Financing
    10-yr warranty

    1k+

    Homes served

    Learn More
    COMMERCIAL

    Light Commercial

    SERVICED

    Storefronts, offices, and clinics — equipment you can rely on through the busy season.

    Service contracts
    Preventive plans
    Emergency lines
    Single-billing

    24/7

    On-call response

    Learn More

    Need a tailored solution?

    Talk to a technician about your space.

    Live demo

    MaintenancePlans

    section

    @hydra-sites/ui/sections

    Static marketing layout — links to /plans routes

    MAINTENANCE PLANS

    Year-round
    system care

    Protect your equipment with a recurring tune-up and priority response plan.

    Best value

    YEARLY PLAN

    SAVE BIG

    Plus priority scheduling.

    Seasonal tune-ups

    Twice a year

    Two pre-emptive visits a year — spring + fall.

    Member discounts

    10% off

    10% off repairs and parts for active members.

    Priority dispatch

    Front-of-line

    Front-of-line scheduling on hot/cold-snap days.

    Why a maintenance plan matters

    Catch failures before they cascade
    Lower seasonal utility bills
    Extends equipment life by 5+ years

    Serving , & surrounding areas

    Licensed & insured
    5-star reviews
    24/7 emergencies

    Live demo

    PromotionsClient

    section

    @hydra-sites/ui/sections

    Client carousel/widget — receives SitePromotion[] from page loader

    No promotions loaded

    Publish promotions in PMS or check API credentials.

    Live demo

    ServiceAreas

    section

    @hydra-sites/ui/sections

    useBusiness().serviceAreas (Hydra / PMS-derived listing)

    SERVICE AREAS

    Proudly Serving
    & Beyond

    We focus on owning our backyard before aggressive expansion — ensuring rapid response times and expert service in our core territory.

    ,

    HQ
    Priority
    Extended

    Not sure if we serve your area?

    Call us to confirm service availability in your neighborhood.

    Live demo

    Financing

    section

    @hydra-sites/ui/sections

    Static CTA layout linking financing flows

    Financing Available

    Flexible
    Financing

    Options Available

    Don't let cost hold you back. We offer convenient financing options so you can get the service you need today with easy monthly payments.

    Convenient Monthly Payments
    Flexible Financing Terms
    Easy Online Account Management
    Quick & Simple Application
    No Prepayment Penalties

    Financing subject to credit approval. Terms and conditions apply.

    All Major Cards Accepted

    Live demo

    FinancingPlanCard

    section

    @hydra-sites/ui/sections

    Props typed from FinancingPlanCardData (bridge-shaped)

    $29$19

    Maintenance membership

    What you get from Central Washington Heating and Air:

    • Seasonal tune-ups
    • Priority scheduling
    • Repair discounts
    Call (509) 776-0247Schedule
    Disclaimer

    Demo fallback — publish financing plans in PMS for production content.

    Live demo

    CTASection

    section

    @hydra-sites/ui/sections

    Business hooks + tel/contact CTAs

    24/7 EMERGENCY SERVICE

    When you need us,
    we answer.

    Emergencies don't wait — and neither do we. Our team is standing by around the clock to restore your comfort fast.

    Same-Day Service Available
    Licensed & Fully Insured
    Certified Professionals
    Upfront Honest Pricing
    RAPID RESPONSE

    Emergency?

    We're ready when you need us most

    0/7
    EMERGENCY SERVICE
    0 min
    RESPONSE TIME
    0%
    SATISFACTION

    Serving , & surrounding areas

    Technicians On-Call Now
    Free Estimates Available

    Live demo

    FAQSection

    section

    @hydra-sites/ui/sections

    Props-driven FAQGroup[] (often resolvePmsFaqs from templates)

    FAQs

    Frequently Asked Questions

    Browse answers grouped by the service or location page they belong to. These FAQs are managed in Hydra and published from PMS.

    2

    Questions

    1

    Pages

    Service FAQs

    Library demo — service FAQs

    View Page
    How often should I change my air filter?

    Typically every 1–3 months depending on pets, allergies, and system runtime.

    Do you offer financing?

    Yes — see the financing section or ask your technician for current promotions.

    Live demo

    DynamicLeadForm

    form

    @hydra-sites/ui/forms

    Client form renderer — SiteForm + HydraApiClient submit

    Demo

    DynamicLeadForm requires page-supplied form + api client

    Mount inside a page with `<DynamicLeadForm form={form} api={apiClient} placement="…" />`. See `apps/site/src/pages/leads.astro`.

    Live demo

    Navigation

    layout

    @hydra-sites/ui/layout

    Server wrapper — passes Hydra nav payload into NavigationServer

    Demo

    Navigation runs in the global layout

    See `apps/site/src/layouts/Layout.astro` for the live <NavigationServer> mount. We skip duplicating it here — the live nav at the top of this page is the actual component.

    Live demo

    NavigationClient

    layout

    @hydra-sites/ui/layout

    Client mega-menu / drawer — services & areas from props

    Demo

    NavigationClient runs inside NavigationServer

    Already mounted as part of the page chrome; see Layout.astro.

    Live demo

    JsonLd

    seo

    @ciwebgroup/site-content-bridge/seo

    Structured data JSON-LD scripts

    Below is the JSON-LD payload produced for a sample breadcrumb. In production the `<script type="application/ld+json">` tag is injected from `apps/site/src/templates/*` via the bridge /seo subpath. There is also a global LocalBusiness JSON-LD block in <head>.

    {
      "@context": "https://schema.org",
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://centralwashingtonheating.com/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Library",
          "item": "https://centralwashingtonheating.com/library"
        }
      ]
    }

    Live demo

    BusinessProvider

    provider

    @hydra-sites/ui/providers

    React context — Hydra business_setting + blog authors + service areas

    BusinessProvider context is active — ,

    Live demo

    AnimateIn

    ui

    @hydra-sites/ui/ui

    GSAP reveal wrapper

    AnimateIn child

    Live demo

    BackToTop

    ui

    @hydra-sites/ui/ui

    Floating scroll button

    The floating control at the bottom-right of the viewport is the live BackToTop instance from the root layout (not duplicated here).

    Live demo

    BuilderReferenceCard

    ui

    @hydra-sites/ui/ui

    Docs-style reference panel

    Builder Reference

    Nested BuilderReferenceCard

    Pattern
    Docs callout
    Usage
    Hydra / seed messaging

    Place this component on a page with:

    <BuilderReferenceCard title="Title" items={[{ label: "k", value: "v" }]} />

    Live demo

    ContactSidebarCard

    ui

    @hydra-sites/ui/ui

    Sidebar contact module

    Ready to Get Started?

    Contact us today to discuss your needs. Our team is ready to help.

    Live demo

    EmptyState

    ui

    @hydra-sites/ui/ui

    Empty list placeholder

    Nothing here yet

    Swap for real data when PMS returns rows.

    Live demo

    GridOverlay

    ui

    @hydra-sites/ui/ui

    Dev/design grid overlay

    Grid overlay (pointer-events none) on dark surface.

    Live demo

    HeroTrustBadges

    ui

    @hydra-sites/ui/ui

    Trust logos row — props from Hydra presentation

    Live demo

    PageHero

    ui

    @hydra-sites/ui/ui

    Interior page hero + breadcrumbs

    Library

    Interior hero demo

    Breadcrumbs + optional slots.

    Live demo

    PageSection

    ui

    @hydra-sites/ui/ui

    Section spacing shell

    Eyebrow

    PageSection title

    Muted background variant.

    Child content area.

    Live demo

    ScrollProgress

    ui

    @hydra-sites/ui/ui

    Reading progress indicator

    ScrollProgress is fixed to the top of the viewport by the root layout. Scroll this page to watch the bar advance.

    Live demo

    ScrollingText

    ui

    @hydra-sites/ui/ui

    Marquee-style headline motion

    Quality • Comfort • Reliability • Library demo •

    Live demo

    Section

    ui

    @hydra-sites/ui/ui

    Layout section primitive

    Section primitive — secondary variant

    Live demo

    SectionHeading

    ui

    @hydra-sites/ui/ui

    Eyebrow + title block

    Components

    Subtitle line

    Section heading demo

    Optional description copy for marketing sections.