Schema Documentation

Browse all PageHub component schemas with props, examples, and CSS variable references.

Media

Core

Button

Single button component with optional icon and link

2 required

CartBadge

Shopping cart badge wrapper. Place in navbar/header. Default preset includes a child toggle-cart button.

Children

CartDrawer

Shopping cart slide-out drawer. Place once at site root level. Visibility is driven by the `cart:open` state key — any Button with `action: { type: "toggle-cart" }` flips it (or `action: { type: "set-state", key: "cart:open", value: "shown" }` for explicit open). The optional backdrop reads the same key via `Container.visibilityStateKey: "cart:open"`. Shows cart items with quantity controls, subtotal, and checkout button.

Children

CheckoutBanner

Post-checkout notification banner. Place at site root level. Hidden by default — auto-shows after Stripe checkout success or cancellation. Auto-dismisses after configurable delay.

Children

Data

Data-aware container. Same layout as Container — one DOM element, no extra wrapper — but repeats its children per item from a connector (Stripe products, customer orders, nested item arrays). Children act as a template with {{item.*}} variables.

Children1 required

Icon

Standalone decorative or semantic icon. Renders as <span> with inline SVG (react-icons) or media-library image inside. Use this for icons in feature lists, card heroes, inline flourishes, and any icon that is NOT inside a clickable Button/Link. For a clickable icon, use Button with icon.only: true. For an icon next to text in a link/button, use the Button or Link `icon` prop — do NOT add a separate Icon component alongside.

2 required

Link

Text-styled hyperlink. Always renders as <a>. Use this for inline text links, 'read more' patterns, nav links, and any clickable text that is NOT a button. For filled/outlined CTAs use Button instead.

2 required

Text

Rich text component with Tiptap editor support

3 required