Skip to content
BolderBolder Developers
Esc
↑↓navigate↵open⌘Jpreview
On this page

Components (headless import path)

Mounting bolder-storefront's bundled component factories and on-demand components from headless code.

Bundled UI components

bolder-storefront also re-exports a couple of prebuilt component factories, meant to be mounted with storefront.mount() like any other component. Their full options are documented in the Components reference (they’re the same base components used by hosted themes via Bolder.components.render(...)); this page only covers the headless import path.

import {
  createStorefront,
  CartTable, CartTotals, CartPromos,
  FeedbackButton, ShoppingBeacon,
  Slideout, Supernav,
  DeliverySetup, ShippingCalculator,
  AuthDelivery,
} from 'bolder-storefront'

createStorefront({ shop: 'acme' }).then(function(storefront) {
  storefront.mount(CartTable, '#cart-table', { show_cart_gauge: true, cart_gauge_limit: 50000 })
  storefront.mount(FeedbackButton, '#feedback-button')
})
Component Description
CartTable Cart line items with quantity controls, bundle/volume-discount hints, and an optional cart gauge. Purely a renderer — ShoppingBeacon mounts one internally, so only use this directly when building a custom cart UI outside the beacon.
CartTotals Subtotal/total row, coupon input, and checkout button. Meant to accompany CartTable.
CartPromos Promotion/discount display for the cart.
Slideout Generic slide-out panel wrapper. Used by ShoppingBeacon to host the cart UI; can be reused for custom slide-out drawers.
ShoppingBeacon Full cart-beacon integration: floating cart icon, slide-out cart panel (CartTable + CartTotals inside a Slideout), and embedded-checkout wiring. See Shopping beacon integration.
FeedbackButton Floating feedback/help button. Submits through storefront.forms when available.
Supernav Navigation bar with cart count badge, login state, and search trigger.
DeliverySetup Inline delivery-address/pickup-point selector. For a managed modal overlay, use openDeliverySetup() instead.
ShippingCalculator Standalone shipping cost estimator widget.
AuthDelivery Combined login/signup + delivery-setup component. Opened imperatively via openLogin() for auth-only flows, or mounted inline when you need both.

For CustomerConsole and OrderTracking, see Customer Console — they ship in the separate console bundle.

On-demand components

Some components aren’t bundled into bolder-storefront at all — they’re fetched lazily, the same on-demand mechanism hosted themes use via Bolder.components.render(...). storefront.components is that same registry, auto-wired by createStorefront() (no setup needed), pointed at the shop’s own asset CDN (assetsHost, sourced from /shop.json’s shop.assets_host) rather than the current page’s origin — necessary since the page embedding the SDK is rarely served from the shop itself.

createStorefront({ shop: 'acme' }).then(function(storefront) {
  storefront.components.render('product-card', '#product-card', {
    productId:    123,
    title:        'Aurora Runner',
    salePrice:    '$89.990',
    regularPrice: '$99.990',
    images:       [{ src: '...', alt: 'Aurora Runner' }],
  }, function(result) {
    // Not error-first: fires as cb(err) on a script-load failure, or as
    // cb(node, state) — the rendered node, not null — on success.
    if (result instanceof Error) console.error(result)
  })
})
Component Description
product-card Self-contained product card: image carousel, add-to-cart with a live -/+ quantity control once the item’s in the cart. Single-axis variants (one option, e.g. just size) render as inline buttons/swatches; products with more than one variant option (color and size) open product-variant-selector in a slideout instead of growing their own matrix-matching logic.

Most other on-demand components (assets/js/components/ondemand/* in the storefronts repo) are hosted-theme-oriented — bundle configurators, order-tracking widgets, faceted search, etc. — and haven’t been exercised headlessly. See the Components reference for the full list; nothing stops calling storefront.components.render(...) with any of them, but their data/callback shape is only proven against the hosted Bolder.components.render(...) call sites.

Was this page helpful?