import { NAME, pattern, UI, type VNode } from "commonfabric"; // deno-lint-ignore no-empty-interface interface VignetteFinanceStoryInput {} export interface VignetteFinanceStoryOutput { [NAME]: string; [UI]: VNode; controls: VNode; } const phoneFrame = { width: "375px", height: "720px", borderRadius: "40px", overflow: "hidden", boxShadow: "0 25px 60px rgba(0,0,0,0.3), 0 0 0 2px rgba(255,255,255,0.1), inset 0 0 0 1px rgba(255,255,255,0.05)", flexShrink: "0", position: "relative" as const, }; const phoneScreen = { width: "100%", height: "100%", overflow: "auto", position: "relative" as const, }; function BarDay( { height, label, highlight }: { height: string; label: string; highlight?: boolean; }, ) { return (
{label}
); } export default pattern( () => { const financeTheme = { fontFamily: "'SF Pro Display', -apple-system, BlinkMacSystemFont, system-ui, sans-serif", borderRadius: "16px", density: "comfortable" as const, colorScheme: "dark" as const, colors: { primary: "#7C6CF7", primaryForeground: "#FFFFFF", secondary: "#2D3436", secondaryForeground: "#DFE6E9", background: "#0C0C1E", surface: "#16163A", surfaceHover: "#1E1E50", text: "#F0F0FF", textMuted: "#636e88", border: "#2A2A5A", borderMuted: "#1E1E4A", accent: "#00CEC9", accentForeground: "#0C0C1E", success: "#00B894", successForeground: "#FFFFFF", error: "#FF6B6B", errorForeground: "#FFFFFF", warning: "#FDCB6E", warningForeground: "#0C0C1E", }, }; return { [NAME]: "Vignette: Finance Dashboard", [UI]: (
{/* Status bar */}
9:41 ●●●
{/* Header */}
Total Balance
$24,831 .50
{/* Quick stats */}
Income +$5,240 Expenses -$2,180
{/* Spending chart */}
This Week Apr 2026
{/* Transactions */}
Recent See all
Blue Bottle Coffee Today, 8:30 AM
-$6.50
💰
Salary Deposit Yesterday
+$5,240
🛒
Whole Foods Yesterday
-$84.30
{/* Bottom action */}
Send Request
), controls: (
Finance dashboard vignette. Dark theme with purple-teal gradient accents, system font, 16px border-radius. Demonstrates cf-theme, cf-card, cf-chip, cf-hstack, cf-vstack, cf-button with a custom bar chart.
), }; }, );