import { NAME, pattern, UI, type VNode, Writable } from "commonfabric"; // deno-lint-ignore no-empty-interface interface TabBarStoryInput {} export interface TabBarStoryOutput { [NAME]: string; [UI]: VNode; controls: VNode; } export default pattern(() => { const activeTab1 = new Writable("home"); const activeTab2 = new Writable("home"); const activeTab3 = new Writable("home"); const activeTab4 = new Writable("home"); const items = ( <> 🏠 🔍 📬 👤 ); return { [NAME]: "cf-tab-bar Story", [UI]: ( Default variant Full-width bar with top border, anchored to edge.
{items}
Inset variant Floating pill, content-sized, centered.
{items}
Inset variant with action (FAB) Floating pill with primary action button beside it.
{items}
Inset footer in cf-screen The screen footer reserves room for the floating tab bar.
{[ "Morning sync", "Review launch checklist", "Triage customer thread", "Write design notes", "Confirm footer spacing", "Last visible card", ].map((title) => ( {title} Content remains above the reserved footer area. ))}
{items}
), controls: <>, }; });