- Replace static previewImage with workflow prop in TemplateCard
- Render WorkflowPreview showing node layout and connections
- Remove getTemplateContent import (no longer needed)
- Pass workflow data from PRESET_TEMPLATES to cards
- overflow-hidden creates a scroll container that captures wheel events
- overflow-clip just clips visually without capturing events
- Applied to both modal container and content wrapper
- Add min-h-0 to flex containers to allow shrinking below content size
- Add flex-shrink-0 to header to prevent it from shrinking
- This fixes flexbox default min-height: auto preventing overflow scroll
- Remove carousel animation, use single static preview image
- Simplify TemplateCard props from previewImages[] to previewImage
- Ready for future GIF replacement
- Add search input with 200ms debounce for filtering by name/description
- Add category filter buttons (All, Product, Style, Composition, Community)
- Add tag pill buttons with multi-select OR logic
- Implement filtering logic: search AND category AND tags
- Add empty state with clear filters button
- Restructure layout: sidebar (w-48) + main grid area
- Grid layout with 2 columns on mobile, 3 on larger screens
- Uses TemplateCard for preset templates with metadata
- Community workflows section with custom cards
- Loads presets from getAllPresets() with node count calculation
- Fetches community workflows from /api/community-workflows
- Template selection via /api/quickstart POST and community API
- Loading states per template, error handling with dismissible alert
- Discord CTA for community contributions