Default Card
Combine with layout utilities like `p-md` or `gap-sm` for content spacing.
Each block shows the default, simulated hover, focus, and disabled states.
Default
Hover (simulated)
Focus (simulated)
Disabled
Default
Hover (simulated)
Focus (simulated)
Disabled
Use `data-variant` for semantic colorways.
Cards inherit focus-ring behaviour and support semantic states.
Combine with layout utilities like `p-md` or `gap-sm` for content spacing.
Applies the hover shadow and lift.
Rings appear on `focus-visible`.
Opacity drops and the shadow is removed.
`.bv-stack` and `.bv-grid-video` consolidate our common feed and profile layouts.
Use `.bv-stack` for page-level groupings such as the watch history header and banners.
The helper keeps consistent gaps without repeating `space-y-*` utilities.
Apply `.bv-stack--tight` when stacking compact forms or metadata blocks in profile views.
The modifier inherits flex behaviour from `.bv-stack` while reducing the gap to `var(--space-md)`.
Auto-fills with a 20rem minimum column size on desktop.
The grid collapses to a single column below 40rem.
Reuse the same helper instead of duplicating inline grid declarations.
`.input` works for both `<input>` and `<textarea>` elements.
Add `.focus-ring` to custom interactives when you opt out of `.btn` or other primitives.
`.bv-modal` anchors the overlay, `.bv-modal-backdrop` dims the page, and `.bv-modal__panel` styles content.
Use `.input`, `.btn-ghost`, and `.modal-primary` primitives for consistent modal actions.
Both shells share the `.bv-modal` overlay and tokenized primitives (`.card`, `.btn`, `.btn-ghost`, `.badge`, `.grid-stack`, `.focus-ring`). Compatibility hooks like `modal-content` remain on the panels so legacy CSS selectors keep working alongside the new primitives.
Static scaffold that mirrors `components/profile-modal.html`. Tab buttons keep their `aria-controls`/`data-state` attributes so designers can map the layout to controller behaviour.
Layout reflects `components/edit-video-modal.html`. The `.bv-modal__panel.modal-content` pairing keeps backwards selectors alive while new primitives manage spacing and typography.
Use `data-variant="cards"` for responsive columns or `data-orientation="vertical"` for flex stacks.
Card A
Card B
Card C
Row 1
Row 2
Row 3 (disabled)