Components
Components
Actions
Everything that commits a change — buttons, toggles and the controls around them.
Back button
The return affordance. Icon-only below md, labelled above it.
Button
The primary action control. Seven variants and four sizes, including the convex white fill that carries BTS's primary affordance.
Filter pill
The rounded filter chip used above lists. Built on the .filter-pill custom class.
Toggle
A two-state button. Pressed state is visual only — it does not submit.
Toggle group
A set of toggles behaving as one control, single- or multiple-select.
Layout and structure
The frame a screen is built on: surfaces, dividers, panels and the app shell.
Accordion
Collapsible sections, single or multiple open. Carries a BTS-only hideChevron prop.
Aspect ratio
Constrains content to a fixed ratio. A pure re-export.
Card
The standard surface. Header, title, description, content and footer.
Collapsible
Unstyled show/hide. Brings no chrome of its own.
Resizable panels
Draggable split panes, horizontal or vertical, with an optional grip handle.
Scroll area
A styled scroll container with the BTS thin scrollbar.
Separator
A one-pixel rule, horizontal or vertical, decorative or semantic.
Sidebar
The application shell navigation — 23 exports covering the rail, the collapsed icon state and the mobile drawer.
Selection and input
Fields, pickers and choices. Where the customer's data actually enters the product.
Calendar
Date selection — single, range or multiple.
Checkbox
Binary choice, with a BTS-added indeterminate state.
Command
The command palette — filtered list, groups and a shortcut column.
Icon select
A select whose options carry an icon, a label and a description line.
Input
The single-line text field. 48px tall on mobile, 40px on desktop.
Input OTP
Segmented one-time-code entry with a blinking caret.
Label
The field label, with peer-disabled handling.
Phone input
International phone entry with a country selector. Exports PHONE_COUNTRIES alongside it.
Radio group
One choice from a set.
Select
The dropdown picker. BTS removed the check indicator — selection reads via focus.
Slider
A value along a range, single thumb or two.
Switch
An immediate on/off. Track and thumb both resize below md.
Textarea
The multi-line field.
Feedback indicators
Status, progress and consequence — how a surface tells someone what just happened.
Alert
An inline message with optional icon, title and description.
Badge
A small status or count marker. The default variant uses the gradient .badge-primary fill.
Progress
Determinate completion along a bar.
Skeleton
The loading placeholder — block, line, circle and stacked forms.
Sonner toaster
The sonner toast host, exported as SonnerToaster to avoid colliding with the Radix one.
Toast
A transient message anchored top on mobile, bottom-right from sm up.
Toaster
The Radix toast host. Renders whatever toasts it is given.
Tooltip
A label on hover or focus. BTS defaults to an instant open.
Upload progress toast
Upload state as a persistent toast — progress, success and error.
Images and media
Avatars, galleries, lightboxes and charts.
Avatar
A person or space, as an image with initial and icon fallbacks.
Carousel
A swipeable track, horizontal or vertical, with arrow controls.
Chart
The Recharts wrapper — themed container, tooltip and legend.
Icon set
The twenty BTS glyphs the product ships — navigation marks, state icons and the toggles that have no Lucide equivalent.
Media lightbox
Full-screen image and video viewing, portalled above the app.
Media pill
A frosted label that sits over media. The smallest component in the system.
Overlays
Anything that sits above the page — dialogs, sheets, menus and tooltips.
Alert dialog
A modal that demands a decision before it will close.
Context menu
The right-click menu.
Dialog
The modal surface. Supports stacking and a borderless variant.
Drawer
The mobile bottom sheet, with drag-to-dismiss and background scaling.
Dropdown menu
The action menu. BTS adds first-class icon and shortcut props.
Hover card
Rich preview content on hover.
Mobile filter sheet
The filter drawer shown below md. Renders nothing at all on desktop, where filters live inline.
Popover
A small floating panel anchored to a trigger.
Sheet
A panel that slides in from any edge.
Tables and data
Dense, scannable presentation of many records.
Dashboard
Metric surfaces — the stat cards and titled figures the overview screens are built from.
Application shell
The frame the product sits in: content column, sidebar rail and its sections.
Analytics
Date-range control for the reporting screens, in its desktop and mobile forms.
Custom date range modal
Two-calendar range picker for the Custom preset.
Date range picker panel
The preset list and calendar behind the reporting date control. Exports its presets, labels and resolver.
Mobile date range button
The compact date-range trigger used below md.
Commerce
Payment and transaction state, wherever money is shown.
Payment badge
The payment-method mark. Exports PAYMENT_TYPES and a resolver from card id to type.
Refund modal
RefundModal — exported from the library at `src/components/transactions/RefundModal.tsx`. Awaiting a written description.
Transaction detail header
TransactionDetailHeader — exported from the library at `src/components/transactions/TransactionDetailHeader.tsx`. Awaiting a written description.
Transaction items card
TransactionItemsCard — exported from the library at `src/components/transactions/TransactionItemsCard.tsx`. Awaiting a written description.
Transaction payment summary
TransactionPaymentSummary — exported from the library at `src/components/transactions/TransactionPaymentSummary.tsx`. Awaiting a written description.
Transaction sidebar cards
TransactionInfoCard — exported from the library at `src/components/transactions/TransactionSidebarCards.tsx`. Awaiting a written description.
Transaction status badge
Succeeded, refunded, partially refunded or disputed, with an explanatory tooltip.
Transaction timeline
TransactionTimeline — exported from the library at `src/components/transactions/TransactionTimeline.tsx`. Awaiting a written description.
Products
The product management surfaces — tables, filters, analytics and detail sidebars.
Layer filter popover
Filters a product list by the layer it belongs to.
Product activity section
Recent transactions for one product.
Product analytics card
Per-product performance figures, with defaults supplied for the prototype.
Product details sidebar
The metadata rail on a product detail screen — price, dates, access.
Product management header
Title, share URL and actions above the product editor.
Product preview card
The compact product tile used in pickers and previews.
Product type filter popover
Filters by product kind. Exports its option set.
Products table
The product management table — desktop grid and a stacked mobile list from the same rows.
Store
The customer-facing storefront: product cards, galleries, detail panels and players.
Add product type modal
The six-card product type chooser, with search and a suggestion when nothing matches.
Course player
Lesson playback with the module outline beside it.
Event registered view
The post-registration event screen — countdown, attendees and calendar links.
Product about section
The product description, with a heading that changes by product kind. Returns null when empty.
Product card
The storefront tile. Five product types by three pricing models, with an optional layer action menu.
Product description blocks
The rich-text renderer behind the about section — bold, headings, lists.
Product detail header
The product screen header, with an optional completion ring.
Product details panel
Price, host, dates and the call to action on a product page.
Product image gallery
Cover imagery with thumbnails, price and type pills over the media.
Product list item
The row form of ProductCard, for the store's list view. Exports the media type labels.
Products header
Title and controls above a product grid.
Store header
The storefront header, with grid and list view toggles and an overflow menu.
Store product selector modal
Picks products to attach to something else, filtered by title.
Unlocked product viewer
What a member sees once a product is unlocked, by file type.
Store editor
The product editor shell and its section blocks, one per kind of thing you can sell.
About section
The rich-text description editor and its text styles.
Advanced section
Expiry and the less common settings.
Basic info section
Title and summary, with rotating placeholder copy.
Course editor layout
The course variant of the editor shell, with the module outline in place of sections.
Course modules section
Module and lesson management for a course.
Course outline section
The read-only outline shown to a prospective buyer.
Course settings section
Drip, access and completion rules for a course.
Event details section
Date, time, repeat and location for an event product.
Media upload section
Cover and gallery upload. Exports the product types that can carry unlockable media.
Pricing section
Pricing model and recurring interval.
Product details section
Detail fields whose labels change by product kind.
Product editor layout
The editor shell — sidebar, section column and live preview.
Product editor preview
The live storefront preview beside the editor. Exports its price and CTA formatters.
Product editor sidebar
Section navigation for the editor. Exports the empty form state it starts from.
Product settings section
Access and expiry for a standard product.
Promo media field
Upload and crop for the promotional still.
Service delivery section
How a service is delivered — sessions, turnaround, submission and deliverable method.
Service settings section
Booking and scheduling rules for a service.
Video upload field
Video by upload or by URL, with a thumbnail resolver.
Visibility section
Who can see the product, with a description per option.
Settings
Controls that recur across the space settings screens.
Access tier card
AccessTierCard — exported from the library at `src/components/settings/AccessTierCard.tsx`. Awaiting a written description.
Analytics account banner
AnalyticsAccountBanner — exported from the library at `src/components/settings/analytics/AnalyticsAccountBanner.tsx`. Awaiting a written description.
Analytics pane header
AnalyticsPaneHeader — exported from the library at `src/components/settings/analytics/AnalyticsPaneHeader.tsx`. Awaiting a written description.
Analytics platform settings
AnalyticsPlatformSettings — exported from the library at `src/components/settings/analytics/AnalyticsPlatformSettings.tsx`. Awaiting a written description.
Connect modal
ConnectModal — exported from the library at `src/components/settings/analytics/ConnectModal.tsx`. Awaiting a written description.
Connect website modal
ConnectWebsiteModal — exported from the library at `src/components/settings/ConnectWebsiteModal.tsx`. Awaiting a written description.
Create discount modal
CreateDiscountModal — exported from the library at `src/components/settings/CreateDiscountModal.tsx`. Awaiting a written description.
Danger zone
The destructive action panel, with an optional type-to-confirm gate before it will fire.
Date picker input
A text field with a calendar popover, tolerant of loose typing.
Discount editor
DiscountSummary — exported from the library at `src/components/settings/DiscountEditor.tsx`. Awaiting a written description.
Discount product picker
ApplyItemIcon — exported from the library at `src/components/settings/DiscountProductPicker.tsx`. Awaiting a written description.
Discount type modal
DiscountTypeModal — exported from the library at `src/components/settings/DiscountTypeModal.tsx`. Awaiting a written description.
Ga4 settings
GA4Settings — exported from the library at `src/components/settings/analytics/GA4Settings.tsx`. Awaiting a written description.
Ghlaccount card
GHLAccountCard — exported from the library at `src/components/settings/ghl/GHLAccountCard.tsx`. Awaiting a written description.
Ghlactive keys
GHLActiveKeys — exported from the library at `src/components/settings/ghl/GHLActiveKeys.tsx`. Awaiting a written description.
Ghlconnect modal
GHLConnectModal — exported from the library at `src/components/settings/ghl/GHLConnectModal.tsx`. Awaiting a written description.
Ghldelete key modal
GHLDeleteKeyModal — exported from the library at `src/components/settings/ghl/GHLDeleteKeyModal.tsx`. Awaiting a written description.
Inline rename
Edit a name in place: display until invited to edit, then a field, with optional delete.
Layer access radio group
Who can see a layer — public, link, members, a named tier, or invite only.
Role icon
The twelve role glyphs, with a fallback for an unknown id. Exports the id list and map.
Settings access
SettingsAccess — exported from the library at `src/components/settings/SettingsAccess.tsx`. Awaiting a written description.
Settings admins
SettingsAdmins — exported from the library at `src/components/settings/SettingsAdmins.tsx`. Awaiting a written description.
Settings analytics
SettingsAnalytics — exported from the library at `src/components/settings/SettingsAnalytics.tsx`. Awaiting a written description.
Settings apps
SettingsApps — exported from the library at `src/components/settings/SettingsApps.tsx`. Awaiting a written description.
Settings billing
SettingsBilling — exported from the library at `src/components/settings/SettingsBilling.tsx`. Awaiting a written description.
Settings details
SettingsDetails — exported from the library at `src/components/settings/SettingsDetails.tsx`. Awaiting a written description.
Settings discount manage
SettingsDiscountManage — exported from the library at `src/components/settings/SettingsDiscountManage.tsx`. Awaiting a written description.
Settings discounts
SettingsDiscounts — exported from the library at `src/components/settings/SettingsDiscounts.tsx`. Awaiting a written description.
Settings ghlmanage
SettingsGHLManage — exported from the library at `src/components/settings/SettingsGHLManage.tsx`. Awaiting a written description.
Settings manage
SettingsManage — exported from the library at `src/components/settings/SettingsManage.tsx`. Awaiting a written description.
Settings notifications
SettingsNotifications — exported from the library at `src/components/settings/SettingsNotifications.tsx`. Awaiting a written description.
Settings payment methods
SettingsPaymentMethods — exported from the library at `src/components/settings/SettingsPaymentMethods.tsx`. Awaiting a written description.
Settings payouts
SettingsPayouts — exported from the library at `src/components/settings/SettingsPayouts.tsx`. Awaiting a written description.
Settings payouts bank manage
SettingsPayoutsBankManage — exported from the library at `src/components/settings/SettingsPayoutsBankManage.tsx`. Awaiting a written description.
Settings plan
SettingsPlan — exported from the library at `src/components/settings/SettingsPlan.tsx`. Awaiting a written description.
Settings role manage
SettingsRoleManage — exported from the library at `src/components/settings/SettingsRoleManage.tsx`. Awaiting a written description.
Settings roles
SettingsRoles — exported from the library at `src/components/settings/SettingsRoles.tsx`. Awaiting a written description.
Settings rows
A stack of label, description and control rows — the body of a settings section, at two densities.
Settings section header
The title, description and actions above a block of settings. The unit every settings screen is stacked from.
Settings sending domain
SettingsSendingDomain — exported from the library at `src/components/settings/SettingsSendingDomain.tsx`. Awaiting a written description.
Settings sidebar
SettingsSidebar — exported from the library at `src/components/settings/SettingsSidebar.tsx`. Awaiting a written description.
Settings website manage
SettingsWebsiteManage — exported from the library at `src/components/settings/SettingsWebsiteManage.tsx`. Awaiting a written description.
Table pagination footer
Page controls beneath a table. Hides itself entirely when there is nothing to page through.
Time picker input
Half-hour time selection, auto-scrolled to the current value.
Collections
The full product inventory from the component audit. The areas that have started landing — dashboard, store, products, settings, analytics, commerce and the app shell — are catalogued above; these counts are the whole of each area, so the gap between them is what is still to come.
The inventory, not the catalogue
These counts come straight from the component audit and cover every component in each area, ported or not. Anything already promoted has its own entry above and its own page; the rest is inventoried and classified but not yet documented individually.
Settings
34Space settings — access tiers, discounts, payouts, roles, admins, billing and integrations.
Space
18Space creation and setup, including the stepped onboarding flow.
Checkout
15The purchase flow — summary, payment, confirmation and receipts.
Store
14Products, the product editor and its section blocks.
Forms
13The form builder and its field types.
Contacts
12Contact records, lists and detail panels.
Activity
12Event feeds and timelines.
Checkout links
12Shareable purchase links and their management surfaces.
Posts
10The community feed — composition, cards and detail views.
Channels
10Channel navigation, headers and membership.
Products
8Product listing and detail surfaces outside the store editor.
Calendar
8Events, scheduling and availability.
Dashboard
7Stat cards, charts and the overview surfaces. Entirely portable as-is.
Transactions
7Payment records and their detail views.
Account
7Personal account settings and profile.
Unauthenticated
7The logged-out experience — public space views and sign-up prompts.
Messages
5Direct messaging surfaces.
Members
5Member lists and profiles.
Empty states
5The zero-data surfaces. Entirely portable as-is.
Legal
4Terms, privacy and policy pages.
Analytics
14Reporting surfaces and the pixel integrations.
Adding a finished component
Re-export it from lantern/src/ds/index.ts, delete its stand-in from ds/pending.tsx, add its demos to src/registry, and set demoId on its entry in src/content/components.ts. Nothing else on this site needs editing — the index, the sidebar and the component page all read from that registry.