channel3-ai/channel3-ui
Full catalog, install commands, and contributor guide on GitHub.
Install
components/ directory as editable source files. They’re typed directly against the Channel3 SDK — a ProductDetail from search or a product fetch drops straight in, with no adapter or mapping layer.
Blocks
Two compound blocks cover most shopping surfaces:product-search
A complete search experience in one component: search bar, faceted filters (brand, category, color, price), and an infinitely-scrollable results grid.
product-details
A full product detail page (PDP): image gallery, variant selection with all availability states, multiple merchant offers, price history chart, and a similar-products carousel.
Composable primitives
Every piece of the blocks is also available individually:| Component | What it renders |
|---|---|
product-card | A single product tile with image, title, price, and brand |
product-grid | Responsive masonry or uniform grid of product-card |
product-carousel | Horizontally-scrollable product strip |
variant-selector | Size/color/option pickers with availability styling |
price-chart | Price history line chart from the price tracking API |
offer-list | Ranked list of merchant offers for a product |
image-gallery | Zoomable image carousel for a PDP |
search-bar | Controlled text + image search input |
filter-panel | Faceted filter sidebar with async options |
Headless hooks
Hooks encapsulate the business logic — use them with your own markup when the default components don’t fit your design.use-product-search
Manages query state, filter plumbing, pagination, and request orchestration. Returns the current results, a loading state, and a setter for each filter.
use-variant-selection
Handles variant relaxation, availability vs. existence logic, and cross-product navigation. Returns the resolved selected state after each server round-trip — no need to diff your request against the response yourself.
use-async-options
Loads category and brand filter options on demand so filter panels are snappy even with large catalogs.
Architecture note
Components are presentational: they accept Channel3 data as props and emit user intent through callbacks. They never call the API directly or read your key — fetch on your server whereCHANNEL3_API_KEY lives, then pass results down. This keeps your API key server-side and makes every component independently testable.
Quickstart
Install the Channel3 skill and let your agent wire the components in for you.