import { NAME, pattern, UI, type VNode } from "commonfabric"; // deno-lint-ignore no-empty-interface interface VignetteRecipeStoryInput {} export interface VignetteRecipeStoryOutput { [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, }; export default pattern( () => { const recipeTheme = { fontFamily: "'Georgia', 'Times New Roman', serif", borderRadius: "12px", density: "spacious" as const, colorScheme: "light" as const, colors: { primary: "#8B4513", primaryForeground: "#FFF8F0", secondary: "#D2B48C", secondaryForeground: "#3E2723", background: "#FFF8F0", surface: "#FFF0E0", surfaceHover: "#FFE4CC", text: "#2C1810", textMuted: "#8B7355", border: "#E8D5C0", borderMuted: "#F0E6D8", accent: "#C84C09", accentForeground: "#FFF8F0", success: "#4A7C59", successForeground: "#ffffff", error: "#A03020", errorForeground: "#ffffff", warning: "#B8860B", warningForeground: "#ffffff", }, }; return { [NAME]: "Vignette: Recipe App", [UI]: (
{/* Header with warm tones */}
Good morning
What shall we
cook today?
{/* Search */}
{/* Category chips */}
All Breakfast Lunch Dinner Dessert
{/* Featured recipe card */}
Featured
Rustic Sourdough Bread
A slow-fermented artisan loaf with a crackling crust
4 hrs Medium
View Recipe
{/* Quick picks */}
Quick picks
Honey Oat Granola 20 min · Easy
Mushroom Risotto 45 min · Medium
{/* Bottom nav */}
Home Saved Timers Profile
), controls: (
Artisan recipe app vignette. Warm light theme, Georgia serif typography, 12px border-radius, saddlebrown primary with earthy palette. Demonstrates cf-theme, cf-heading, cf-input, cf-chip, cf-card, cf-hstack, cf-vstack, cf-separator, cf-badge, cf-button.
), }; }, );