NAV
Documentation
API Reference Data Warehouse Make.com Integration Storefront CSS

Introduction

The Cubby Storefront components (cubby-facility, cubby-search, and so on) are Web Components built with Lit. Their markup lives inside a shadow DOM, which means the elements inside a component are not reachable with ordinary CSS selectors and are not affected by your page's global styles.

To let you theme them, each component exposes a set of CSS Shadow Parts. A part is a named hook on an internal element (declared with the part="..." attribute) that you can target from your own stylesheet using the ::part() pseudo-element. This page lists the parts exposed by every public storefront component.

Styling a part

Target a part with <tag-name>::part(<part-name>) from any stylesheet on the host page. For example, to round the corners of the pricing cards rendered by cubby-facility and restyle their call-to-action button:

cubby-facility::part(card) {
  border-radius: 16px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
}

cubby-facility::part(card-button) {
  background: #1e88e5;
  color: #fff;
}

Parts also support pseudo-classes and can be combined, so cubby-facility::part(tab):hover and cubby-search::part(result):first-child both work.

Forwarded parts

Some components render other components inside their shadow DOM — for instance, each card inside cubby-facility is itself a component. Those inner parts are forwarded up to the outer element (via exportparts), so you style them on the top-level tag exactly like the element's own parts. You do not need to reference the internal element.

The forwarded part sets — the pricing group card parts and the pricing tier parts — are documented once at the bottom of this page and referenced from the components that expose them.

CSS variables

Alongside the per-element parts, every storefront component reads a set of global CSS custom properties prefixed --cubby-. These are the coarse theming knobs: colors, border and shape, and typography. Set them on a component or on any ancestor (for example :root) and they cascade into every component's shadow DOM at once.

Use variables to retheme the whole storefront consistently, and reach for parts when you need to tweak one specific element. Each variable is read with a fallback — var(--cubby-primary-color, <default>) — so any value you set wins over the theme configured in the storefront builder.

:root {
  --cubby-primary-color: #1e88e5;
  --cubby-surface-color: #ffffff;
  --cubby-radius: 16px;
  --cubby-body-font: 'Inter';
}

Colors

VariableDefaultDescription
--cubby-primary-color#000000The primary brand color (buttons, accents).
--cubby-on-primary-color#ffffffText/icon color shown on top of the primary color.
--cubby-secondary-color#000000The secondary color.
--cubby-on-secondary-color#ffffffText/icon color shown on top of the secondary color.
--cubby-surface-color#ffffffComponent surface/background color.
--cubby-on-surface-color#000000Text/icon color shown on top of the surface color.
--cubby-success-color#007F5FSuccess state color.
--cubby-error-color#D72C0DError state color.
--cubby-outline-color#aaaaaaBorder/outline color.
--cubby-divider-color#aaaaaaDivider line color.
--cubby-shadow-color#000000Color used for component shadows.

Border & shape

VariableDefaultDescription
--cubby-outline-width0pxWidth of element outlines/borders.
--cubby-divider-width1pxWidth of divider lines.
--cubby-shadownoneThe full box-shadow applied to raised surfaces.
--cubby-radius8pxCorner radius for cards, inputs, and buttons.
--cubby-density8pxInner padding density of components.
--cubby-spacing8pxGap/spacing between items in a layout.

Typography

VariableDefaultDescription
--cubby-body-fontinheritFont family for body text.
--cubby-heading-fontinheritFont family for headings. Falls back to the body font when unset.

Facility

<cubby-facility> displays the pricing groups for a single facility, optionally split into collection tabs. In addition to its own parts below, it forwards the full pricing group card parts and pricing tier parts for the cards it renders.

PartDescription
tabsThe collection tab-navigation container.
tabAn individual collection tab.
cardA pricing group card.
cubby-facility::part(tab) { font-weight: 600; }
cubby-facility::part(card-price-amount) { color: #1e88e5; }

Facility Info

<cubby-facility-info> shows a facility's location, map, and office-hours schedule.

PartDescription
card-titleThe facility title heading.
card-bodyA body text block (address, description, etc.).
card-mapThe embedded map container.
card-schedule-nameThe schedule label (e.g. “Office hours”).
card-schedule-hoursThe schedule hours text.

Portfolio

<cubby-portfolio> renders a grid of facility cards linking to each facility.

PartDescription
cardA facility card.
card-imageThe facility card image.
card-titleThe facility card title.
card-bodyThe facility card body.

Checkout

<cubby-checkout> renders the order summary and payment form for a reservation or rental.

PartDescription
summary-containerThe wrapper around the order summary.
summaryThe order summary block.
featuresThe features list.
featureA single feature row.
feature-iconThe icon of a feature row.
form-containerThe wrapper around the checkout form.
formThe checkout form.
reserve-buttonThe reserve call-to-action button.
pay-buttonThe pay call-to-action button.

Search

<cubby-search> renders a multi-facility search experience with a form, a map, and a list of results. It also forwards the pricing tier parts for the tiers shown on a result.

PartDescription
formThe search form.
mapThe results map container.
resultsThe results list container.
resultA single search result.
result-imageA result's image.
result-pricing-groupA result's pricing group block.
result-actionA result's action button (base part shared by the three buttons below).
rent-buttonA result's Rent action button.
reserve-buttonA result's Reserve action button.
waitlist-buttonA result's Join waitlist action button.
result-view-all-buttonA result's View all button.
search-buttonThe search-submit button.

Contact Form

<cubby-contact-form> renders a contact form for a facility. It does not expose any CSS parts at this time — there is currently no supported way to style its internals.

Pricing cards & tiers

The two part sets below are rendered by internal components and forwarded to the public components that use them. Style them on the outer tag — e.g. cubby-facility::part(card-price-amount). See each component above for which sets it forwards.

Pricing group card parts

Forwarded by Facility.

PartDescription
card-imageThe card image.
card-bodyThe card body.
card-titleThe card title.
card-descriptionThe card description.
card-featuresThe features list.
card-featureA single feature row.
card-feature-iconThe icon of a feature row.
card-actionsThe actions container.
card-priceThe price container.
card-price-strike-amountThe struck-through original price.
card-price-amountThe price amount.
card-price-periodThe price period (e.g. /mo).
card-alertsThe alerts container.
card-alertA single alert.
card-buttonThe call-to-action button.
pricing-group_price_descriptionThe supplementary price description text.

Pricing tier parts

Forwarded by Facility and Search.

PartDescription
pricing-tierA single pricing tier.
pricing-tier_nameThe tier name.
pricing-tier_rateThe tier rate.
pricing-tier_benefitsThe tier benefits list.
pricing-tier_benefitA single tier benefit.
pricing-tiers_rent-buttonThe tier's rent button.
pricing-tier_detailsThe tier details block.