love-ui 1.2.15 → 1.2.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -6
- package/dist/index.js +149 -0
- package/dist/mcp-server.js +2 -0
- package/package.json +28 -4
- package/registry/__index__.tsx +73 -0
- package/registry/default/blocks/404-1/app/page.tsx +5 -0
- package/registry/default/blocks/404-1/components/full-width-divider.tsx +33 -0
- package/registry/default/blocks/404-1/components/not-found.tsx +51 -0
- package/registry/default/blocks/404-2/app/page.tsx +5 -0
- package/registry/default/blocks/404-2/components/not-found.tsx +44 -0
- package/registry/default/blocks/auth1/app/page.tsx +5 -0
- package/registry/default/blocks/auth1/components/auth-page.tsx +66 -0
- package/registry/default/blocks/auth1/components/icons/github-icon.tsx +10 -0
- package/registry/default/blocks/auth1/components/icons/google-icon.tsx +14 -0
- package/registry/default/blocks/auth1/components/logo.tsx +88 -0
- package/registry/default/blocks/auth1/components/particles.tsx +321 -0
- package/registry/default/blocks/auth2/app/page.tsx +5 -0
- package/registry/default/blocks/auth2/components/auth.tsx +87 -0
- package/registry/default/blocks/auth2/components/icons/github-icon.tsx +10 -0
- package/registry/default/blocks/auth2/components/icons/google-icon.tsx +14 -0
- package/registry/default/blocks/auth2/components/ui/auth-divider.tsx +16 -0
- package/registry/default/blocks/auth2/components/ui/decor-icon.tsx +45 -0
- package/registry/default/blocks/auth3/app/page.tsx +5 -0
- package/registry/default/blocks/auth3/components/auth-page.tsx +84 -0
- package/registry/default/blocks/auth3/components/icons/github-icon.tsx +10 -0
- package/registry/default/blocks/auth3/components/icons/google-icon.tsx +14 -0
- package/registry/default/blocks/auth3/components/logo.tsx +88 -0
- package/registry/default/blocks/auth3/components/ui/auth-divider.tsx +16 -0
- package/registry/default/blocks/auth3/components/ui/decor-icon.tsx +45 -0
- package/registry/default/blocks/blogs1/app/page.tsx +5 -0
- package/registry/default/blocks/blogs1/components/blogs.tsx +97 -0
- package/registry/default/blocks/blogs1/components/full-width-divider.tsx +33 -0
- package/registry/default/blocks/blogs2/app/page.tsx +5 -0
- package/registry/default/blocks/blogs2/components/blogs.tsx +158 -0
- package/registry/default/blocks/blogs2/components/full-width-divider.tsx +33 -0
- package/registry/default/blocks/blogs2/components/grid-filler.tsx +74 -0
- package/registry/default/blocks/blogs3/app/page.tsx +5 -0
- package/registry/default/blocks/blogs3/components/aspect-ratio.tsx +22 -0
- package/registry/default/blocks/blogs3/components/blogs.tsx +224 -0
- package/registry/default/blocks/blogs3/components/full-width-divider.tsx +33 -0
- package/registry/default/blocks/blogs3/components/lazy-image.tsx +94 -0
- package/registry/default/blocks/contact1/app/page.tsx +9 -0
- package/registry/default/blocks/contact1/components/contact.tsx +65 -0
- package/registry/default/blocks/contact1/components/full-width-divider.tsx +33 -0
- package/registry/default/blocks/contact2/app/page.tsx +9 -0
- package/registry/default/blocks/contact2/components/contact.tsx +74 -0
- package/registry/default/blocks/contact2/components/full-width-divider.tsx +33 -0
- package/registry/default/blocks/contact2/components/icons/x-icon.tsx +12 -0
- package/registry/default/blocks/contact3/app/page.tsx +9 -0
- package/registry/default/blocks/contact3/components/contact.tsx +152 -0
- package/registry/default/blocks/contact3/components/full-width-divider.tsx +33 -0
- package/registry/default/blocks/contact3/components/icons/github-icon.tsx +10 -0
- package/registry/default/blocks/contact3/components/icons/x-icon.tsx +12 -0
- package/registry/default/blocks/contact4/app/page.tsx +9 -0
- package/registry/default/blocks/contact4/components/contact.tsx +120 -0
- package/registry/default/blocks/contact5/app/page.tsx +9 -0
- package/registry/default/blocks/contact5/components/contact.tsx +119 -0
- package/registry/default/blocks/contact5/components/decor-icon.tsx +45 -0
- package/registry/default/blocks/cta-1/app/page.tsx +9 -0
- package/registry/default/blocks/cta-1/components/cta.tsx +20 -0
- package/registry/default/blocks/cta-1/components/full-width-divider.tsx +33 -0
- package/registry/default/blocks/cta-2/app/page.tsx +9 -0
- package/registry/default/blocks/cta-2/components/cta.tsx +27 -0
- package/registry/default/blocks/cta-2/components/full-width-divider.tsx +33 -0
- package/registry/default/blocks/cta-3/app/page.tsx +9 -0
- package/registry/default/blocks/cta-3/components/cta.tsx +35 -0
- package/registry/default/blocks/cta-3/components/decor-icon.tsx +45 -0
- package/registry/default/blocks/cta-4/app/page.tsx +9 -0
- package/registry/default/blocks/cta-4/components/cta.tsx +28 -0
- package/registry/default/blocks/cta-5/app/page.tsx +9 -0
- package/registry/default/blocks/cta-5/components/cta.tsx +72 -0
- package/registry/default/blocks/cta-5/components/full-width-divider.tsx +33 -0
- package/registry/default/blocks/faq-1/app/page.tsx +9 -0
- package/registry/default/blocks/faq-1/components/faq.tsx +86 -0
- package/registry/default/blocks/faq-2/app/page.tsx +9 -0
- package/registry/default/blocks/faq-2/components/faq.tsx +93 -0
- package/registry/default/blocks/faq-3/app/page.tsx +9 -0
- package/registry/default/blocks/faq-3/components/decor-icon.tsx +45 -0
- package/registry/default/blocks/faq-3/components/faq.tsx +110 -0
- package/registry/default/blocks/faq-4/app/page.tsx +9 -0
- package/registry/default/blocks/faq-4/components/faq.tsx +181 -0
- package/registry/default/blocks/faq-5/app/page.tsx +9 -0
- package/registry/default/blocks/faq-5/components/faq.tsx +211 -0
- package/registry/default/blocks/faq-5/components/full-width-divider.tsx +33 -0
- package/registry/default/blocks/features1/app/page.tsx +9 -0
- package/registry/default/blocks/features1/components/feature-section.tsx +73 -0
- package/registry/default/blocks/features2/app/page.tsx +9 -0
- package/registry/default/blocks/features2/components/decor-icon.tsx +45 -0
- package/registry/default/blocks/features2/components/feature-section.tsx +97 -0
- package/registry/default/blocks/features3/app/page.tsx +9 -0
- package/registry/default/blocks/features3/components/feature-section.tsx +93 -0
- package/registry/default/blocks/features3/components/full-width-divider.tsx +21 -0
- package/registry/default/blocks/features4/app/page.tsx +9 -0
- package/registry/default/blocks/features4/components/decor-icon.tsx +45 -0
- package/registry/default/blocks/features4/components/feature-section.tsx +114 -0
- package/registry/default/blocks/features5/app/page.tsx +9 -0
- package/registry/default/blocks/features5/components/feature-section.tsx +115 -0
- package/registry/default/blocks/features5/components/grid-pattern.tsx +70 -0
- package/registry/default/blocks/features6/app/page.tsx +9 -0
- package/registry/default/blocks/features6/components/cobe-globe.tsx +86 -0
- package/registry/default/blocks/features6/components/feature-section.tsx +309 -0
- package/registry/default/blocks/footer1/app/page.tsx +9 -0
- package/registry/default/blocks/footer1/components/footer.tsx +85 -0
- package/registry/default/blocks/footer1/components/icons/github-icon.tsx +10 -0
- package/registry/default/blocks/footer1/components/icons/x-icon.tsx +12 -0
- package/registry/default/blocks/footer1/components/logo.tsx +88 -0
- package/registry/default/blocks/footer2/app/page.tsx +9 -0
- package/registry/default/blocks/footer2/components/footer.tsx +139 -0
- package/registry/default/blocks/footer2/components/full-width-divider.tsx +21 -0
- package/registry/default/blocks/footer2/components/icons/github-icon.tsx +10 -0
- package/registry/default/blocks/footer2/components/icons/instagram-icon.tsx +12 -0
- package/registry/default/blocks/footer2/components/icons/x-icon.tsx +12 -0
- package/registry/default/blocks/footer2/components/logo.tsx +88 -0
- package/registry/default/blocks/footer3/app/page.tsx +9 -0
- package/registry/default/blocks/footer3/components/footer.tsx +155 -0
- package/registry/default/blocks/footer3/components/icons/github-icon.tsx +10 -0
- package/registry/default/blocks/footer3/components/icons/instagram-icon.tsx +12 -0
- package/registry/default/blocks/footer3/components/icons/linkedin-icon.tsx +12 -0
- package/registry/default/blocks/footer3/components/icons/x-icon.tsx +12 -0
- package/registry/default/blocks/footer3/components/logo.tsx +88 -0
- package/registry/default/blocks/footer4/app/page.tsx +9 -0
- package/registry/default/blocks/footer4/components/footer.tsx +137 -0
- package/registry/default/blocks/footer4/components/icons/github-icon.tsx +10 -0
- package/registry/default/blocks/footer4/components/icons/instagram-icon.tsx +12 -0
- package/registry/default/blocks/footer4/components/icons/linkedin-icon.tsx +12 -0
- package/registry/default/blocks/footer4/components/icons/x-icon.tsx +12 -0
- package/registry/default/blocks/footer4/components/logo.tsx +88 -0
- package/registry/default/blocks/footer5/app/page.tsx +9 -0
- package/registry/default/blocks/footer5/components/footer.tsx +152 -0
- package/registry/default/blocks/footer5/components/icons/apple-icon.tsx +18 -0
- package/registry/default/blocks/footer5/components/icons/facebook-icon.tsx +12 -0
- package/registry/default/blocks/footer5/components/icons/google-play-icon.tsx +10 -0
- package/registry/default/blocks/footer5/components/icons/instagram-icon.tsx +12 -0
- package/registry/default/blocks/footer5/components/icons/linkedin-icon.tsx +12 -0
- package/registry/default/blocks/footer5/components/icons/x-icon.tsx +12 -0
- package/registry/default/blocks/footer5/components/logo.tsx +88 -0
- package/registry/default/blocks/footer6/app/page.tsx +16 -0
- package/registry/default/blocks/footer6/components/footer.tsx +220 -0
- package/registry/default/blocks/footer6/components/icons/apple-icon.tsx +18 -0
- package/registry/default/blocks/footer6/components/icons/facebook-icon.tsx +12 -0
- package/registry/default/blocks/footer6/components/icons/github-icon.tsx +10 -0
- package/registry/default/blocks/footer6/components/icons/google-play-icon.tsx +10 -0
- package/registry/default/blocks/footer6/components/icons/instagram-icon.tsx +12 -0
- package/registry/default/blocks/footer6/components/icons/linkedin-icon.tsx +12 -0
- package/registry/default/blocks/footer6/components/icons/x-icon.tsx +12 -0
- package/registry/default/blocks/footer6/components/logo.tsx +88 -0
- package/registry/default/blocks/header1/app/page.tsx +12 -0
- package/registry/default/blocks/header1/components/demo-layout.tsx +33 -0
- package/registry/default/blocks/header1/components/header.tsx +58 -0
- package/registry/default/blocks/header1/components/logo.tsx +88 -0
- package/registry/default/blocks/header1/components/mobile-nav.tsx +61 -0
- package/registry/default/blocks/header1/components/ui/portal.tsx +27 -0
- package/registry/default/blocks/header1/hooks/use-scroll.ts +54 -0
- package/registry/default/blocks/header2/app/page.tsx +11 -0
- package/registry/default/blocks/header2/components/demo-layout.tsx +33 -0
- package/registry/default/blocks/header2/components/header.tsx +70 -0
- package/registry/default/blocks/header2/components/logo.tsx +88 -0
- package/registry/default/blocks/header2/components/mobile-nav.tsx +61 -0
- package/registry/default/blocks/header2/components/ui/portal.tsx +27 -0
- package/registry/default/blocks/header2/hooks/use-scroll.ts +54 -0
- package/registry/default/blocks/header3/app/page.tsx +11 -0
- package/registry/default/blocks/header3/components/demo-layout.tsx +33 -0
- package/registry/default/blocks/header3/components/desktop-nav.tsx +70 -0
- package/registry/default/blocks/header3/components/header.tsx +41 -0
- package/registry/default/blocks/header3/components/logo.tsx +88 -0
- package/registry/default/blocks/header3/components/mobile-nav.tsx +88 -0
- package/registry/default/blocks/header3/components/nav-links.tsx +132 -0
- package/registry/default/blocks/header3/components/sheard.tsx +41 -0
- package/registry/default/blocks/header3/components/ui/navigation-menu.tsx +171 -0
- package/registry/default/blocks/header3/components/ui/portal.tsx +27 -0
- package/registry/default/blocks/header3/hooks/use-scroll.ts +54 -0
- package/registry/default/blocks/hero1/app/page.tsx +15 -0
- package/registry/default/blocks/hero1/components/header.tsx +70 -0
- package/registry/default/blocks/hero1/components/hero.tsx +80 -0
- package/registry/default/blocks/hero1/components/infinite-slider.tsx +109 -0
- package/registry/default/blocks/hero1/components/logo-cloud.tsx +69 -0
- package/registry/default/blocks/hero1/components/logo.tsx +88 -0
- package/registry/default/blocks/hero1/components/logos/claude-wordmark.svg +1 -0
- package/registry/default/blocks/hero1/components/logos/clerk-wordmark.svg +1 -0
- package/registry/default/blocks/hero1/components/logos/github-wordmark.svg +6 -0
- package/registry/default/blocks/hero1/components/logos/nvidia-wordmark.svg +1 -0
- package/registry/default/blocks/hero1/components/logos/openai-wordmark.svg +1 -0
- package/registry/default/blocks/hero1/components/logos/supabase-wordmark.svg +23 -0
- package/registry/default/blocks/hero1/components/logos/turso-wordmark.svg +1 -0
- package/registry/default/blocks/hero1/components/logos/vercel-wordmark.svg +1 -0
- package/registry/default/blocks/hero1/components/logos-section.tsx +14 -0
- package/registry/default/blocks/hero1/components/mobile-nav.tsx +61 -0
- package/registry/default/blocks/hero1/components/ui/portal.tsx +27 -0
- package/registry/default/blocks/hero1/hooks/use-scroll.ts +54 -0
- package/registry/default/blocks/hero2/app/page.tsx +23 -0
- package/registry/default/blocks/hero2/components/decor-icon.tsx +45 -0
- package/registry/default/blocks/hero2/components/full-width-divider.tsx +21 -0
- package/registry/default/blocks/hero2/components/header.tsx +70 -0
- package/registry/default/blocks/hero2/components/hero.tsx +104 -0
- package/registry/default/blocks/hero2/components/infinite-slider.tsx +109 -0
- package/registry/default/blocks/hero2/components/logo-cloud.tsx +120 -0
- package/registry/default/blocks/hero2/components/logo.tsx +88 -0
- package/registry/default/blocks/hero2/components/logos/claude-wordmark.svg +1 -0
- package/registry/default/blocks/hero2/components/logos/clerk-wordmark.svg +1 -0
- package/registry/default/blocks/hero2/components/logos/github-wordmark.svg +6 -0
- package/registry/default/blocks/hero2/components/logos/nvidia-wordmark.svg +1 -0
- package/registry/default/blocks/hero2/components/logos/openai-wordmark.svg +1 -0
- package/registry/default/blocks/hero2/components/logos/supabase-wordmark.svg +23 -0
- package/registry/default/blocks/hero2/components/logos/turso-wordmark.svg +1 -0
- package/registry/default/blocks/hero2/components/logos/vercel-wordmark.svg +1 -0
- package/registry/default/blocks/hero2/components/logos-section.tsx +23 -0
- package/registry/default/blocks/hero2/components/mobile-nav.tsx +61 -0
- package/registry/default/blocks/hero2/components/ui/portal.tsx +27 -0
- package/registry/default/blocks/hero2/hooks/use-scroll.ts +54 -0
- package/registry/default/blocks/hero3/app/page.tsx +15 -0
- package/registry/default/blocks/hero3/components/header.tsx +70 -0
- package/registry/default/blocks/hero3/components/hero.tsx +104 -0
- package/registry/default/blocks/hero3/components/infinite-slider.tsx +109 -0
- package/registry/default/blocks/hero3/components/logo-cloud.tsx +67 -0
- package/registry/default/blocks/hero3/components/logo.tsx +88 -0
- package/registry/default/blocks/hero3/components/logos/claude-wordmark.svg +1 -0
- package/registry/default/blocks/hero3/components/logos/clerk-wordmark.svg +1 -0
- package/registry/default/blocks/hero3/components/logos/github-wordmark.svg +6 -0
- package/registry/default/blocks/hero3/components/logos/nvidia-wordmark.svg +1 -0
- package/registry/default/blocks/hero3/components/logos/openai-wordmark.svg +1 -0
- package/registry/default/blocks/hero3/components/logos/supabase-wordmark.svg +23 -0
- package/registry/default/blocks/hero3/components/logos/turso-wordmark.svg +1 -0
- package/registry/default/blocks/hero3/components/logos/vercel-wordmark.svg +1 -0
- package/registry/default/blocks/hero3/components/logos-section.tsx +12 -0
- package/registry/default/blocks/hero3/components/mobile-nav.tsx +61 -0
- package/registry/default/blocks/hero3/components/ui/portal.tsx +27 -0
- package/registry/default/blocks/hero3/hooks/use-scroll.ts +54 -0
- package/registry/default/blocks/image-gallery-1/app/page.tsx +5 -0
- package/registry/default/blocks/image-gallery-1/components/aspect-ratio.tsx +22 -0
- package/registry/default/blocks/image-gallery-1/components/image-gallery.tsx +135 -0
- package/registry/default/blocks/image-gallery-1/components/lazy-image.tsx +94 -0
- package/registry/default/blocks/integrations1/app/page.tsx +9 -0
- package/registry/default/blocks/integrations1/components/integrations.tsx +86 -0
- package/registry/default/blocks/integrations1/components/logos/adobe.svg +1 -0
- package/registry/default/blocks/integrations1/components/logos/canva.svg +1 -0
- package/registry/default/blocks/integrations1/components/logos/cursor.svg +1 -0
- package/registry/default/blocks/integrations1/components/logos/gmail.svg +1 -0
- package/registry/default/blocks/integrations1/components/logos/notion.svg +1 -0
- package/registry/default/blocks/integrations1/components/logos/planetscale.svg +1 -0
- package/registry/default/blocks/integrations1/components/logos/polar.svg +1 -0
- package/registry/default/blocks/integrations1/components/logos/supabase.svg +1 -0
- package/registry/default/blocks/integrations1/components/logos/vercel.svg +1 -0
- package/registry/default/blocks/integrations2/app/page.tsx +9 -0
- package/registry/default/blocks/integrations2/components/decor-icon.tsx +45 -0
- package/registry/default/blocks/integrations2/components/integrations.tsx +118 -0
- package/registry/default/blocks/integrations2/components/logos/adobe.svg +1 -0
- package/registry/default/blocks/integrations2/components/logos/canva.svg +1 -0
- package/registry/default/blocks/integrations2/components/logos/cursor.svg +1 -0
- package/registry/default/blocks/integrations2/components/logos/gmail.svg +1 -0
- package/registry/default/blocks/integrations2/components/logos/notion.svg +1 -0
- package/registry/default/blocks/integrations2/components/logos/planetscale.svg +1 -0
- package/registry/default/blocks/integrations2/components/logos/polar.svg +1 -0
- package/registry/default/blocks/integrations2/components/logos/supabase.svg +1 -0
- package/registry/default/blocks/integrations2/components/logos/vercel.svg +1 -0
- package/registry/default/blocks/integrations3/app/page.tsx +9 -0
- package/registry/default/blocks/integrations3/components/full-width-divider.tsx +33 -0
- package/registry/default/blocks/integrations3/components/integrations.tsx +190 -0
- package/registry/default/blocks/integrations3/components/logos/adobe.svg +1 -0
- package/registry/default/blocks/integrations3/components/logos/canva.svg +1 -0
- package/registry/default/blocks/integrations3/components/logos/cursor.svg +1 -0
- package/registry/default/blocks/integrations3/components/logos/gmail.svg +1 -0
- package/registry/default/blocks/integrations3/components/logos/notion.svg +1 -0
- package/registry/default/blocks/integrations3/components/logos/planetscale.svg +1 -0
- package/registry/default/blocks/integrations3/components/logos/polar.svg +1 -0
- package/registry/default/blocks/integrations3/components/logos/supabase.svg +1 -0
- package/registry/default/blocks/integrations3/components/logos/vercel.svg +1 -0
- package/registry/default/blocks/integrations4/app/page.tsx +9 -0
- package/registry/default/blocks/integrations4/components/integrations.tsx +177 -0
- package/registry/default/blocks/integrations4/components/logos/adobe.svg +1 -0
- package/registry/default/blocks/integrations4/components/logos/canva.svg +1 -0
- package/registry/default/blocks/integrations4/components/logos/cursor.svg +1 -0
- package/registry/default/blocks/integrations4/components/logos/gmail.svg +1 -0
- package/registry/default/blocks/integrations4/components/logos/notion.svg +1 -0
- package/registry/default/blocks/integrations4/components/logos/planetscale.svg +1 -0
- package/registry/default/blocks/integrations4/components/logos/polar.svg +1 -0
- package/registry/default/blocks/integrations4/components/logos/supabase.svg +1 -0
- package/registry/default/blocks/integrations4/components/logos/vercel.svg +1 -0
- package/registry/default/blocks/integrations5/app/page.tsx +9 -0
- package/registry/default/blocks/integrations5/components/integrations.tsx +112 -0
- package/registry/default/blocks/integrations5/components/logos/adobe.svg +1 -0
- package/registry/default/blocks/integrations5/components/logos/canva.svg +1 -0
- package/registry/default/blocks/integrations5/components/logos/cursor.svg +1 -0
- package/registry/default/blocks/integrations5/components/logos/gmail.svg +1 -0
- package/registry/default/blocks/integrations5/components/logos/notion.svg +1 -0
- package/registry/default/blocks/integrations5/components/logos/planetscale.svg +1 -0
- package/registry/default/blocks/integrations5/components/logos/polar.svg +1 -0
- package/registry/default/blocks/integrations5/components/logos/supabase.svg +1 -0
- package/registry/default/blocks/integrations5/components/logos/vercel.svg +1 -0
- package/registry/default/blocks/logo-cloud-1/app/page.tsx +17 -0
- package/registry/default/blocks/logo-cloud-1/components/logo-cloud.tsx +70 -0
- package/registry/default/blocks/logo-cloud-1/components/logos/claude-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-1/components/logos/clerk-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-1/components/logos/github-wordmark.svg +6 -0
- package/registry/default/blocks/logo-cloud-1/components/logos/nvidia-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-1/components/logos/openai-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-1/components/logos/supabase-wordmark.svg +23 -0
- package/registry/default/blocks/logo-cloud-1/components/logos/turso-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-1/components/logos/vercel-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-2/app/page.tsx +19 -0
- package/registry/default/blocks/logo-cloud-2/components/decor-icon.tsx +45 -0
- package/registry/default/blocks/logo-cloud-2/components/logo-cloud.tsx +120 -0
- package/registry/default/blocks/logo-cloud-2/components/logos/claude-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-2/components/logos/clerk-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-2/components/logos/github-wordmark.svg +6 -0
- package/registry/default/blocks/logo-cloud-2/components/logos/nvidia-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-2/components/logos/openai-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-2/components/logos/supabase-wordmark.svg +23 -0
- package/registry/default/blocks/logo-cloud-2/components/logos/turso-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-2/components/logos/vercel-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-3/app/page.tsx +18 -0
- package/registry/default/blocks/logo-cloud-3/components/infinite-slider.tsx +109 -0
- package/registry/default/blocks/logo-cloud-3/components/logo-cloud.tsx +69 -0
- package/registry/default/blocks/logo-cloud-3/components/logos/claude-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-3/components/logos/clerk-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-3/components/logos/github-wordmark.svg +6 -0
- package/registry/default/blocks/logo-cloud-3/components/logos/nvidia-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-3/components/logos/openai-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-3/components/logos/supabase-wordmark.svg +23 -0
- package/registry/default/blocks/logo-cloud-3/components/logos/turso-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-3/components/logos/vercel-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-4/app/page.tsx +23 -0
- package/registry/default/blocks/logo-cloud-4/components/infinite-slider.tsx +109 -0
- package/registry/default/blocks/logo-cloud-4/components/logo-cloud.tsx +83 -0
- package/registry/default/blocks/logo-cloud-4/components/logos/claude-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-4/components/logos/clerk-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-4/components/logos/github-wordmark.svg +6 -0
- package/registry/default/blocks/logo-cloud-4/components/logos/nvidia-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-4/components/logos/openai-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-4/components/logos/supabase-wordmark.svg +23 -0
- package/registry/default/blocks/logo-cloud-4/components/logos/turso-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-4/components/logos/vercel-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-4/components/progressive-blur.tsx +63 -0
- package/registry/default/blocks/logo-cloud-5/app/page.tsx +17 -0
- package/registry/default/blocks/logo-cloud-5/components/logo-cloud.tsx +67 -0
- package/registry/default/blocks/logo-cloud-5/components/logos/claude-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-5/components/logos/clerk-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-5/components/logos/github-wordmark.svg +6 -0
- package/registry/default/blocks/logo-cloud-5/components/logos/nvidia-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-5/components/logos/openai-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-5/components/logos/supabase-wordmark.svg +23 -0
- package/registry/default/blocks/logo-cloud-5/components/logos/turso-wordmark.svg +1 -0
- package/registry/default/blocks/logo-cloud-5/components/logos/vercel-wordmark.svg +1 -0
- package/registry/default/blocks/pricing1/app/page.tsx +9 -0
- package/registry/default/blocks/pricing1/components/decor-icon.tsx +45 -0
- package/registry/default/blocks/pricing1/components/pricing.tsx +94 -0
- package/registry/default/blocks/pricing2/app/page.tsx +9 -0
- package/registry/default/blocks/pricing2/components/full-width-divider.tsx +33 -0
- package/registry/default/blocks/pricing2/components/pricing.tsx +117 -0
- package/registry/default/blocks/pricing3/app/page.tsx +9 -0
- package/registry/default/blocks/pricing3/components/pricing-card.tsx +171 -0
- package/registry/default/blocks/pricing3/components/pricing.tsx +143 -0
- package/registry/default/blocks/pricing4/app/page.tsx +9 -0
- package/registry/default/blocks/pricing4/components/frequency-toggle.tsx +47 -0
- package/registry/default/blocks/pricing4/components/pricing.tsx +230 -0
- package/registry/default/blocks/testimonials1/app/page.tsx +9 -0
- package/registry/default/blocks/testimonials1/components/logo.tsx +74 -0
- package/registry/default/blocks/testimonials1/components/testimonials.tsx +41 -0
- package/registry/default/blocks/testimonials2/app/page.tsx +9 -0
- package/registry/default/blocks/testimonials2/components/testimonials.tsx +65 -0
- package/registry/default/blocks/testimonials3/app/page.tsx +9 -0
- package/registry/default/blocks/testimonials3/components/decor-icon.tsx +45 -0
- package/registry/default/blocks/testimonials3/components/testimonials.tsx +114 -0
- package/registry/default/blocks/testimonials4/app/page.tsx +9 -0
- package/registry/default/blocks/testimonials4/components/full-width-divider.tsx +33 -0
- package/registry/default/blocks/testimonials4/components/testimonials.tsx +81 -0
- package/registry/default/blocks/testimonials5/app/page.tsx +9 -0
- package/registry/default/blocks/testimonials5/components/full-width-divider.tsx +33 -0
- package/registry/default/blocks/testimonials5/components/grid-filler.tsx +74 -0
- package/registry/default/blocks/testimonials5/components/grid-pattern.tsx +70 -0
- package/registry/default/blocks/testimonials5/components/testimonials.tsx +186 -0
- package/registry/default/blocks/testimonials6/app/page.tsx +9 -0
- package/registry/default/blocks/testimonials6/components/infinite-slider.tsx +109 -0
- package/registry/default/blocks/testimonials6/components/testimonials.tsx +193 -0
- package/registry/default/examples/accordion-disabled.tsx +58 -0
- package/registry/default/examples/accordion-in-card.tsx +92 -0
- package/registry/default/examples/accordion-leading-icon.tsx +51 -0
- package/registry/default/examples/accordion-user-roles.tsx +97 -0
- package/registry/default/examples/accordion-with-icons.tsx +67 -0
- package/registry/default/examples/avatar-badge-icons.tsx +60 -0
- package/registry/default/examples/avatar-badge-position.tsx +47 -0
- package/registry/default/examples/avatar-empty-collaborators.tsx +55 -0
- package/registry/default/examples/avatar-group-trust.tsx +49 -0
- package/registry/default/examples/avatar-loading.tsx +33 -0
- package/registry/default/examples/avatar-menu.tsx +81 -0
- package/registry/default/examples/avatar-profile-badge.tsx +30 -0
- package/registry/default/examples/avatar-status.tsx +47 -0
- package/registry/default/examples/breadcrumb-bullet-separator.tsx +38 -0
- package/registry/default/examples/breadcrumb-buttons.tsx +61 -0
- package/registry/default/examples/breadcrumb-card.tsx +40 -0
- package/registry/default/examples/button-default-icons.tsx +18 -0
- package/registry/default/examples/button-default.tsx +5 -0
- package/registry/default/examples/button-demo.tsx +11 -1
- package/registry/default/examples/button-destructive-icons.tsx +18 -0
- package/registry/default/examples/button-destructive-outline-icons.tsx +18 -0
- package/registry/default/examples/button-ghost-icons.tsx +18 -0
- package/registry/default/examples/button-link-icons.tsx +18 -0
- package/registry/default/examples/button-outline-icons.tsx +18 -0
- package/registry/default/examples/button-secondary-icons.tsx +18 -0
- package/registry/default/examples/button-theme-toggle.tsx +38 -0
- package/registry/default/examples/card-author-profile.tsx +66 -0
- package/registry/default/examples/card-default-size.tsx +33 -0
- package/registry/default/examples/card-depth.tsx +37 -0
- package/registry/default/examples/card-help-link.tsx +32 -0
- package/registry/default/examples/card-help-menu.tsx +78 -0
- package/registry/default/examples/card-image-centered.tsx +38 -0
- package/registry/default/examples/card-image-feature.tsx +44 -0
- package/registry/default/examples/card-metric-actions.tsx +102 -0
- package/registry/default/examples/card-resource-link.tsx +40 -0
- package/registry/default/examples/card-team-member.tsx +38 -14
- package/registry/default/examples/card-usage-expandable.tsx +98 -0
- package/registry/default/examples/card-with-borders.tsx +29 -0
- package/registry/default/examples/code-block-shared.tsx +8 -1
- package/registry/default/ui/accordion.tsx +82 -2
- package/registry/default/ui/avatar.tsx +45 -1
- package/registry/default/ui/form.tsx +6 -1
- package/registry/default/ui/input-group.tsx +158 -0
- package/registry/default/ui/toast-gooey-icons.tsx +68 -0
- package/registry/default/ui/toast-gooey-renderer.tsx +614 -0
- package/registry/default/ui/toast-gooey-types.ts +45 -0
- package/registry/default/ui/toast-gooey.css +511 -0
- package/registry/default/ui/toast-gooey.tsx +445 -0
- package/registry/default/ui/toast.tsx +1 -1
- package/skills/loveui-skills/SKILL.md +170 -0
- package/skills/loveui-skills/references/accessibility-baseline.md +32 -0
- package/skills/loveui-skills/references/component-api-and-naming.md +30 -0
- package/skills/loveui-skills/references/content-ux-writing.md +33 -0
- package/skills/loveui-skills/references/design-directions.md +60 -0
- package/skills/loveui-skills/references/forms-and-validation.md +30 -0
- package/skills/loveui-skills/references/frontend-architecture.md +30 -0
- package/skills/loveui-skills/references/interaction-heuristics.md +45 -0
- package/skills/loveui-skills/references/mcp-catalog-workflow.md +68 -0
- package/skills/loveui-skills/references/motion-and-feedback.md +31 -0
- package/skills/loveui-skills/references/navigation-and-information-architecture.md +30 -0
- package/skills/loveui-skills/references/page-blueprints.md +76 -0
- package/skills/loveui-skills/references/quality-gates.md +51 -0
- package/skills/loveui-skills/references/screenshot-translation-protocol.md +52 -0
- package/skills/loveui-skills/references/structural-cleanliness.md +37 -0
- package/skills/loveui-skills/references/testing-and-quality-strategy.md +33 -0
- package/skills/loveui-skills/references/visual-primitives.md +42 -0
- package/skills/loveui-skills/skills/adapt/SKILL.md +199 -0
- package/skills/loveui-skills/skills/animate/SKILL.md +190 -0
- package/skills/loveui-skills/skills/audit/SKILL.md +127 -0
- package/skills/loveui-skills/skills/bolder/SKILL.md +132 -0
- package/skills/loveui-skills/skills/clarify/SKILL.md +180 -0
- package/skills/loveui-skills/skills/colorize/SKILL.md +158 -0
- package/skills/loveui-skills/skills/critique/SKILL.md +118 -0
- package/skills/loveui-skills/skills/delight/SKILL.md +317 -0
- package/skills/loveui-skills/skills/distill/SKILL.md +137 -0
- package/skills/loveui-skills/skills/extract/SKILL.md +95 -0
- package/skills/loveui-skills/skills/frontend-design/SKILL.md +127 -0
- package/skills/loveui-skills/skills/frontend-design/reference/color-and-contrast.md +132 -0
- package/skills/loveui-skills/skills/frontend-design/reference/interaction-design.md +123 -0
- package/skills/loveui-skills/skills/frontend-design/reference/motion-design.md +99 -0
- package/skills/loveui-skills/skills/frontend-design/reference/responsive-design.md +114 -0
- package/skills/loveui-skills/skills/frontend-design/reference/spatial-design.md +100 -0
- package/skills/loveui-skills/skills/frontend-design/reference/typography.md +131 -0
- package/skills/loveui-skills/skills/frontend-design/reference/ux-writing.md +107 -0
- package/skills/loveui-skills/skills/harden/SKILL.md +358 -0
- package/skills/loveui-skills/skills/normalize/SKILL.md +67 -0
- package/skills/loveui-skills/skills/onboard/SKILL.md +243 -0
- package/skills/loveui-skills/skills/optimize/SKILL.md +269 -0
- package/skills/loveui-skills/skills/polish/SKILL.md +202 -0
- package/skills/loveui-skills/skills/quieter/SKILL.md +118 -0
- package/skills/loveui-skills/skills/teach-loveui/SKILL.md +69 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Content and UX Writing
|
|
2
|
+
|
|
3
|
+
Words are the most critical interface layer. LoveUI relies on crisp, predictable, and plain-language microcopy to guide users without cognitive friction.
|
|
4
|
+
|
|
5
|
+
## 1. Action-Oriented Button Labels
|
|
6
|
+
- **Verb-Led:** Buttons must always start with a strong, unambiguous verb that describes the exact outcome of the click (e.g., "Create Project", "Delete Account", "Save Changes").
|
|
7
|
+
- **Avoid Vagueness:** Never use generic labels like "Submit", "Click Here", or "Go" for primary workflows.
|
|
8
|
+
|
|
9
|
+
## 2. Empty, Error, and Loading States
|
|
10
|
+
- **Empty States:** An empty screen is a missed opportunity. Empty state copy must explain what the space is for, why it is currently empty, and provide a clear primary action to populate it.
|
|
11
|
+
- **Error Copy:** Never blame the user. Error messages must explicitly state what went wrong in plain language and provide a direct path to resolution. Avoid technical jargon or error codes in the user-facing text.
|
|
12
|
+
- **Loading Copy:** For operations taking longer than two seconds, provide context on what the system is doing (e.g., "Analyzing your dataset..." rather than just "Loading...").
|
|
13
|
+
|
|
14
|
+
## 3. Confirmation and Destructive Language
|
|
15
|
+
- **High-Friction Language:** Destructive actions must use explicitly cautious language. The confirmation button must match the severity of the action (e.g., "Yes, Delete Organization").
|
|
16
|
+
- **Double Confirmation:** For irreversible, high-impact actions, require the user to manually type the name of the object being deleted to confirm intent.
|
|
17
|
+
|
|
18
|
+
## 4. Tone Consistency and Plain Language
|
|
19
|
+
- **Professional but Human:** The tone should be helpful, direct, and encouraging. Avoid overly robotic phrasing, but do not use forced humor, slang, or emojis in system-level messaging.
|
|
20
|
+
- **Reading Level:** Write interface copy at an eighth-grade reading level. Prioritize clarity over cleverness.
|
|
21
|
+
|
|
22
|
+
## 5. Copy Templates (Default Patterns)
|
|
23
|
+
- **Empty state:** `"[Resource] appears here. [One-line benefit]. [Primary action]."`
|
|
24
|
+
- **Error state:** `"We couldn't [action]. [Likely reason if known]. [Next step]."`
|
|
25
|
+
- **Success toast:** `"[Action] complete."` plus `Undo` for reversible operations.
|
|
26
|
+
- **Destructive confirm title:** `"Delete [object]?"`
|
|
27
|
+
- **Destructive confirm body:** `"This will [consequence]. This action [is/is not] reversible."`
|
|
28
|
+
|
|
29
|
+
## 6. UX Writing Definition of Done
|
|
30
|
+
- Labels, helper text, and validation messages use consistent terminology.
|
|
31
|
+
- Every empty/error/loading/success state includes clear next-step guidance.
|
|
32
|
+
- Destructive actions communicate consequence and reversibility explicitly.
|
|
33
|
+
- Primary actions use specific verb-led labels, not generic wording.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Design Directions
|
|
2
|
+
|
|
3
|
+
Choose exactly one direction per project unless the user asks for mixed styles.
|
|
4
|
+
|
|
5
|
+
## 1) Editorial Premium
|
|
6
|
+
|
|
7
|
+
- Typography-first hierarchy with restrained color.
|
|
8
|
+
- Strong spacing discipline and subtle separators.
|
|
9
|
+
- Best for: marketing pages, product narrative, docs.
|
|
10
|
+
|
|
11
|
+
## 2) Data-Rich Enterprise
|
|
12
|
+
|
|
13
|
+
- Dense but readable information zoning.
|
|
14
|
+
- Strong table/chart readability and utility controls.
|
|
15
|
+
- Best for: dashboards, admin tools, operations software.
|
|
16
|
+
|
|
17
|
+
## 3) Modern SaaS Crisp
|
|
18
|
+
|
|
19
|
+
- Clean medium-density layout with clear calls to action.
|
|
20
|
+
- Soft radii, controlled shadows, limited accent color.
|
|
21
|
+
- Best for: SaaS products, onboarding, account flows.
|
|
22
|
+
- Also strong for: agent workflows where you want guided “Plan → Preview → Apply”.
|
|
23
|
+
|
|
24
|
+
## 4) Minimal Product Studio
|
|
25
|
+
|
|
26
|
+
- Low ornamentation and deliberate whitespace.
|
|
27
|
+
- Strong alignment precision and calm interaction design.
|
|
28
|
+
- Best for: focused tools, portfolio, productivity apps.
|
|
29
|
+
|
|
30
|
+
## 5) Bold Campaign
|
|
31
|
+
|
|
32
|
+
- High-impact hero and conversion-first section flow.
|
|
33
|
+
- Strong anchors, large typography, selective motion.
|
|
34
|
+
- Best for: launches, event pages, acquisition landers.
|
|
35
|
+
|
|
36
|
+
## 6) Technical Console
|
|
37
|
+
|
|
38
|
+
- Utility-first, fast-scanning interface style.
|
|
39
|
+
- Compact controls and explicit status signaling.
|
|
40
|
+
- Best for: developer tools, monitoring, internal platforms.
|
|
41
|
+
- Also strong for: agent tooling where logs, diffs, and provenance must be always visible.
|
|
42
|
+
|
|
43
|
+
## Selection Checklist
|
|
44
|
+
|
|
45
|
+
- Match audience expectations.
|
|
46
|
+
- Match information density.
|
|
47
|
+
- Match brand voice.
|
|
48
|
+
- Confirm readability and contrast.
|
|
49
|
+
|
|
50
|
+
### Agent UX Fit Checks
|
|
51
|
+
|
|
52
|
+
If the UI includes an agent:
|
|
53
|
+
|
|
54
|
+
- Prefer **Technical Console** for power users (dense, explicit status + logs).
|
|
55
|
+
- Prefer **Modern SaaS Crisp** for mixed audiences (guided steps + clearer affordances).
|
|
56
|
+
- Ensure the direction supports:
|
|
57
|
+
- a clear primary action,
|
|
58
|
+
- visible system status,
|
|
59
|
+
- readable diff/log surfaces,
|
|
60
|
+
- consistent “apply” affordances.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Forms and Validation Architecture
|
|
2
|
+
|
|
3
|
+
Forms are the primary engine of data collection. Their design must minimize anxiety and maximize completion rates through logical flow and intelligent feedback.
|
|
4
|
+
|
|
5
|
+
## 1. Cognitive Grouping
|
|
6
|
+
- **Chunking:** Break long forms into logical, thematic sections using clear headings or multi-step wizards. A user should never face a wall of inputs.
|
|
7
|
+
- **Single Column Layouts:** Default to single-column forms. Users read forms top-to-bottom; multi-column layouts disrupt the visual scanning path and increase cognitive load.
|
|
8
|
+
|
|
9
|
+
## 2. Required vs. Optional Conventions
|
|
10
|
+
- **Assume Required:** In modern SaaS, most form fields should be required. Instead of marking every field with a red asterisk, explicitly mark the rare optional fields with an "(optional)" text label next to the field name.
|
|
11
|
+
|
|
12
|
+
## 3. Inline Validation Timing
|
|
13
|
+
- **Reward Early, Punish Late:** Never show an error while the user is actively typing in a field for the first time.
|
|
14
|
+
- **On Blur:** Validate a field and display errors only after the user has finished typing and moved away from the input (on blur).
|
|
15
|
+
- **Error Recovery:** Once an error is displayed, switch to aggressive validation. Clear the error immediately as the user types the correct input (on change) to provide instant positive reinforcement.
|
|
16
|
+
|
|
17
|
+
## 4. Asynchronous Validation
|
|
18
|
+
- **Immediate Feedback:** For fields that require server-side checks (like username availability or complex data formatting), display a subtle, inline loading indicator within the input field to communicate that the system is checking.
|
|
19
|
+
|
|
20
|
+
## 5. Submission and Error Summary
|
|
21
|
+
- **Preserve Input:** Never clear user-entered values after validation failures.
|
|
22
|
+
- **First Error Focus:** On submit failure, move focus to the first invalid field and keep inline errors visible.
|
|
23
|
+
- **Error Summary:** For long forms, show a top-level summary linking to invalid fields.
|
|
24
|
+
- **Pending State:** Disable duplicate submit attempts while request is in flight and show explicit progress text.
|
|
25
|
+
|
|
26
|
+
## 6. Form Definition of Done
|
|
27
|
+
- Required vs optional fields are unambiguous.
|
|
28
|
+
- Inline validation timing follows on-blur first, then on-change recovery.
|
|
29
|
+
- Async validation has visible pending, success, and failure states.
|
|
30
|
+
- Failed submits preserve values and provide clear correction path.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Frontend Architecture Philosophy
|
|
2
|
+
|
|
3
|
+
The boundary between interface rendering and data logic must be impenetrable. A clean architecture ensures the UI remains fast, scalable, and easy to debug.
|
|
4
|
+
|
|
5
|
+
## 1. State and Data Boundaries
|
|
6
|
+
- **Local vs. Global:** Default to keeping state strictly local to the component that needs it. Only elevate state to a global context if it is required by multiple, disconnected regions of the application (like user authentication status or global theme settings).
|
|
7
|
+
- **Derived State:** Never store data in the state if it can be mathematically derived or filtered from existing data on the fly.
|
|
8
|
+
|
|
9
|
+
## 2. Server vs. Client Logic Separation
|
|
10
|
+
- **Dumb Components:** Visual interface components must be entirely unaware of how data is fetched or mutated. They should simply receive data, render it beautifully, and emit events when the user interacts.
|
|
11
|
+
- **Smart Wrappers:** All data fetching, caching, and server mutation logic must be abstracted into dedicated container modules or custom hooks that wrap the visual components.
|
|
12
|
+
|
|
13
|
+
## 3. API Conventions and Side Effects
|
|
14
|
+
- **Predictable Mutations:** Side effects (like submitting data to a server) must be highly localized and traceable.
|
|
15
|
+
- **Optimistic UI:** When a user takes a highly predictable action (like starring an item), update the visual interface instantly to assume success, while handling the actual server request silently in the background. If the request fails, cleanly revert the interface and show an error.
|
|
16
|
+
|
|
17
|
+
## 4. Folder Structure Logic
|
|
18
|
+
- **Feature-Centric:** Organize the architecture by feature domain (e.g., "Authentication", "Billing", "Projects") rather than by file type (e.g., putting all global components in one massive folder). This ensures that deleting a feature completely removes its associated logic and interface elements.
|
|
19
|
+
|
|
20
|
+
## 5. Data and Side-Effect Boundaries
|
|
21
|
+
- **One Mutation Path:** Each write action should have one clear pathway (action/hook/service), not duplicated request logic across components.
|
|
22
|
+
- **Fetch Ownership:** Data fetching responsibility should be explicit per route/feature to prevent duplicate requests and race conditions.
|
|
23
|
+
- **Error Normalization:** Normalize server errors into predictable shapes before they reach presentation components.
|
|
24
|
+
- **Caching Rules:** Define stale/refresh behavior intentionally for each high-traffic surface.
|
|
25
|
+
|
|
26
|
+
## 6. Architecture Definition of Done
|
|
27
|
+
- Local, shared, and global state boundaries are justified and documented by usage.
|
|
28
|
+
- Presentational components remain data-source agnostic.
|
|
29
|
+
- Side effects are traceable and concentrated in predictable modules.
|
|
30
|
+
- Feature folders encapsulate UI, state, and behavior coherently.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Interaction & UX Heuristics
|
|
2
|
+
|
|
3
|
+
A beautiful interface is useless if it feels static or overwhelming. This document dictates the behavioral expectations and user experience rules for all LoveUI elements.
|
|
4
|
+
|
|
5
|
+
## 1. Mandatory Micro-Interactions
|
|
6
|
+
Every interactive element on the screen must provide immediate visual feedback to the user.
|
|
7
|
+
- **Hover States:** Any clickable element must visibly react when a cursor passes over it, typically through a subtle background color shift or a slight change in opacity.
|
|
8
|
+
- **Focus Rings:** Accessibility is non-negotiable. All inputs and buttons must display a crisp, highly visible focus ring when navigated via keyboard.
|
|
9
|
+
- **Disabled States:** Elements that are currently inactive must be visually muted (lowered opacity) and visually communicate that they cannot be interacted with.
|
|
10
|
+
|
|
11
|
+
## 2. Progressive Disclosure
|
|
12
|
+
Interfaces must respect the user's cognitive load. Do not present every possible action or piece of data at once.
|
|
13
|
+
- **Primary vs. Secondary:** A screen or panel should have exactly one clear primary action.
|
|
14
|
+
- **Hiding Complexity:** If a surface requires more than four or five actions, the secondary and tertiary actions must be nested behind a context menu, an "Advanced" toggle, or a "More options" dropdown. Keep the default view pristine.
|
|
15
|
+
|
|
16
|
+
## 3. Predictable Alignment
|
|
17
|
+
The human eye scans for patterns. Breakages in alignment create subconscious friction.
|
|
18
|
+
- **Text and Data:** Default to left-alignment for almost all text, forms, and data tables. Numbers in tables should be right-aligned for easy comparison.
|
|
19
|
+
- **Centering:** Reserve center-alignment strictly for standalone elements like marketing hero headers or empty-state messaging. Do not center-align paragraphs of text or form fields.
|
|
20
|
+
- **Structural Integrity:** Ensure that the edges of containers, typography bounding boxes, and image assets align perfectly on a vertical axis down the page.
|
|
21
|
+
|
|
22
|
+
## 4. State Management Visibility
|
|
23
|
+
The user must never guess what the system is doing.
|
|
24
|
+
- **Transitional States:** Define clear visual states for when data is loading (e.g., subtle pulsing skeletons instead of disruptive spinners).
|
|
25
|
+
- **Empty States:** When a data table or list is empty, never leave a blank screen. Always provide a beautifully formatted empty state that explains what belongs there and offers a primary action to populate it.
|
|
26
|
+
|
|
27
|
+
## 5. Feedback Timing & Motion Restraint
|
|
28
|
+
Motion should communicate cause-and-effect, never decorate.
|
|
29
|
+
- **Timing:** Keep most transitions between 120-220ms; avoid slow, dramatic easing for core actions.
|
|
30
|
+
- **Consistency:** Reuse the same interaction timing/easing tokens across buttons, menus, drawers, and toasts.
|
|
31
|
+
- **Reduced Motion:** Respect reduced-motion preferences by minimizing or disabling non-essential movement.
|
|
32
|
+
|
|
33
|
+
## 6. Action Safety & Recovery
|
|
34
|
+
Users need confidence when actions can change real state.
|
|
35
|
+
- **Risk Signaling:** Label risky actions with clear severity and consequence language before execution.
|
|
36
|
+
- **Confirmation:** Require confirm + preview for destructive or high-impact changes.
|
|
37
|
+
- **Recovery:** Success feedback should include Undo when the action is reversible.
|
|
38
|
+
- **Error Recovery:** Error states must present at least one clear next action (retry, edit input, or open details).
|
|
39
|
+
|
|
40
|
+
## 7. Definition of Done (Interaction)
|
|
41
|
+
- Every interactive element has visible hover, focus, and disabled states.
|
|
42
|
+
- Primary action is obvious in each major screen/panel.
|
|
43
|
+
- Loading, empty, error, and success states are implemented for key workflows.
|
|
44
|
+
- Keyboard navigation and focus order are coherent for primary flows.
|
|
45
|
+
- Complex action sets are progressively disclosed rather than front-loaded.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# MCP Catalog Workflow
|
|
2
|
+
|
|
3
|
+
Use this workflow whenever the `loveui` MCP server is available.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Access complete LoveUI registry knowledge from MCP for:
|
|
8
|
+
|
|
9
|
+
- UI components
|
|
10
|
+
- building blocks
|
|
11
|
+
- examples/demos
|
|
12
|
+
- templates and related registry entries
|
|
13
|
+
|
|
14
|
+
## Mandatory Steps
|
|
15
|
+
|
|
16
|
+
1. Call `resources/list` on the `loveui` MCP server.
|
|
17
|
+
- Treat this output as the authoritative live catalog.
|
|
18
|
+
- Do not assume availability from memory.
|
|
19
|
+
|
|
20
|
+
2. Narrow candidates by user intent.
|
|
21
|
+
- Match names to required surfaces and interactions.
|
|
22
|
+
- Keep a shortlist of likely registry items.
|
|
23
|
+
|
|
24
|
+
3. Fetch exact definitions with `get-loveui-package`.
|
|
25
|
+
- Call once per shortlisted item.
|
|
26
|
+
- Read `type`, `files`, `dependencies`, `registryDependencies`, and metadata.
|
|
27
|
+
|
|
28
|
+
4. Build install plan.
|
|
29
|
+
- Use `npx love-ui add <component>` for install commands.
|
|
30
|
+
- Never use internal package installs (`@loveui/*`, `@love-ui/*`, `@repo/*`).
|
|
31
|
+
|
|
32
|
+
5. Validate composition coverage.
|
|
33
|
+
- Ensure selected items cover all required screens and states.
|
|
34
|
+
- Add missing items by repeating steps 2-4.
|
|
35
|
+
|
|
36
|
+
## Agent UI Kit (When an agent is present)
|
|
37
|
+
|
|
38
|
+
If the experience includes “generate/apply changes”, always attempt to assemble a minimal “Agent UI Kit”
|
|
39
|
+
from registry items (components, blocks, examples). Look for items that cover:
|
|
40
|
+
|
|
41
|
+
- Command palette / quick actions
|
|
42
|
+
- Plan → Preview → Apply panels
|
|
43
|
+
- Diff viewer (code/text) and/or before/after preview
|
|
44
|
+
- Run log / timeline (steps, progress, streaming output)
|
|
45
|
+
- History / restore (snapshots, rollback)
|
|
46
|
+
- Inspector / “why this?” drawer
|
|
47
|
+
- Toasts with Undo, banners, inline status components
|
|
48
|
+
|
|
49
|
+
If any of these are missing from the selected set, return to steps 2–4 and add them.
|
|
50
|
+
|
|
51
|
+
## Selection Heuristics
|
|
52
|
+
|
|
53
|
+
- Prefer base primitives first, then add higher-level blocks/examples.
|
|
54
|
+
- Use examples/demos to accelerate layout and interaction scaffolding.
|
|
55
|
+
- Keep installed set minimal for maintainability.
|
|
56
|
+
- For agent UIs:
|
|
57
|
+
- prioritize diff/log/history primitives early,
|
|
58
|
+
- prioritize keyboard-first affordances (palette, shortcuts),
|
|
59
|
+
- prefer context-valid actions over huge menus.
|
|
60
|
+
|
|
61
|
+
## Output Requirements
|
|
62
|
+
|
|
63
|
+
When presenting work, include:
|
|
64
|
+
|
|
65
|
+
- MCP items selected (names).
|
|
66
|
+
- Install commands executed.
|
|
67
|
+
- Why each selected item maps to the requested UX.
|
|
68
|
+
- For agent UIs: where Plan/Preview/Apply, Undo, and History live in the UI.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Motion and System Feedback
|
|
2
|
+
|
|
3
|
+
Animation in LoveUI is strictly functional. It exists to explain state changes, establish spatial relationships, and focus attention—never for mere decoration.
|
|
4
|
+
|
|
5
|
+
## 1. The Timing and Easing System
|
|
6
|
+
- **Speed Constraints:** Interface animations should be virtually imperceptible, serving only to smooth transitions. Default to ultra-fast durations for micro-interactions and slightly longer durations for structural page shifts.
|
|
7
|
+
- **Easing Curves:** Never use linear animations. Use snappy, decelerating easing curves for elements entering the screen (starting fast, ending slow) and accelerating curves for elements exiting.
|
|
8
|
+
|
|
9
|
+
## 2. Purpose-Driven Animation
|
|
10
|
+
- **When to Animate:** Animate to show an object's origin (like a modal expanding from a button), to highlight a change in status, or to smooth the transition between layout changes.
|
|
11
|
+
- **When to Remain Static:** Do not animate standard data rendering, typography loads, or static structural borders.
|
|
12
|
+
|
|
13
|
+
## 3. Skeletons vs. Spinners
|
|
14
|
+
- **Skeletons for Known Layouts:** If the structural layout of the incoming data is known (like a list of cards or a table), use pulsing skeleton loaders to establish the spatial expectation before the data arrives.
|
|
15
|
+
- **Spinners for Unknowns:** Reserve circular loading spinners strictly for localized, unpredictable actions (like a button processing a payment) or full-page blank-slate loads.
|
|
16
|
+
|
|
17
|
+
## 4. Toasts and Banners
|
|
18
|
+
- **Transient Toasts:** Use small, auto-dismissing toast notifications strictly for low-priority, successful system confirmations (e.g., "Link copied to clipboard").
|
|
19
|
+
- **Persistent Banners:** Use full-width, non-dismissible (or manually dismissible) banners for high-priority, contextual warnings that affect the user's current workflow (e.g., "Your trial expires in 2 days").
|
|
20
|
+
|
|
21
|
+
## 5. Timing Defaults
|
|
22
|
+
- **Micro interactions:** 120-180ms.
|
|
23
|
+
- **Panel open/close:** 180-240ms.
|
|
24
|
+
- **Page/route transitions:** 200-300ms, only when they improve orientation.
|
|
25
|
+
- **Staggering:** Avoid multi-element staggers unless the sequence communicates order or priority.
|
|
26
|
+
|
|
27
|
+
## 6. Motion Definition of Done
|
|
28
|
+
- Motion explains state or spatial change; no decorative animation loops.
|
|
29
|
+
- Reduced-motion preference is respected for non-essential transitions.
|
|
30
|
+
- Feedback primitive selection is intentional (skeleton vs spinner, toast vs banner).
|
|
31
|
+
- Success, warning, and error feedback are visually and semantically distinct.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Navigation and Information Architecture
|
|
2
|
+
|
|
3
|
+
Users should never feel lost. Navigation must act as a reliable map, heavily favoring explicit wayfinding over hidden menus.
|
|
4
|
+
|
|
5
|
+
## 1. Navigation Depth and Hierarchy
|
|
6
|
+
- **The Three-Click Rule:** A user should be able to reach any core functional area of the application within three interactions.
|
|
7
|
+
- **Flat Over Deep:** Avoid deep nesting. If an architecture requires four levels of folders or menus, the top-level categorization must be re-evaluated and flattened.
|
|
8
|
+
|
|
9
|
+
## 2. Wayfinding and Context
|
|
10
|
+
- **Active States:** The current location must always be explicitly highlighted in the primary and secondary navigation menus using bold typography, distinct background colors, or structural indicators.
|
|
11
|
+
- **Breadcrumbs:** Utilize breadcrumbs for any view that is two or more levels deep. Breadcrumbs provide immediate context and an easy escape hatch to higher-level directories.
|
|
12
|
+
|
|
13
|
+
## 3. URL as the Source of Truth
|
|
14
|
+
- **State in the URL:** Any significant UI state change—such as opening a specific tab, applying a data filter, or opening a detail drawer—must be reflected in the URL parameters.
|
|
15
|
+
- **Shareability:** A user should be able to copy the URL at any exact moment, send it to a colleague, and have the interface load in the exact same state, including active filters and open views.
|
|
16
|
+
|
|
17
|
+
## 4. Mobile Navigation Grace
|
|
18
|
+
- **Bottom vs. Top:** On mobile, place primary navigation items in a highly accessible bottom bar. Reserve "hamburger" menus strictly for secondary settings, billing, and account management, never for core daily workflows.
|
|
19
|
+
|
|
20
|
+
## 5. IA and Navigation Guardrails
|
|
21
|
+
- **Single Primary Nav Model:** Use one primary navigation pattern per app area; avoid mixing unrelated paradigms in the same workspace.
|
|
22
|
+
- **Stable Labels:** Keep navigation labels consistent across screens and releases unless a migration is intentional and documented.
|
|
23
|
+
- **Back Behavior:** Browser back/forward should restore prior view state (filters, selected tab, pagination) when feasible.
|
|
24
|
+
- **Escalation Path:** Deep detail views should always offer an obvious route back to the parent context.
|
|
25
|
+
|
|
26
|
+
## 6. Navigation Definition of Done
|
|
27
|
+
- Users can reach any core area quickly without hidden detours.
|
|
28
|
+
- Active context is visible in nav and page-level heading hierarchy.
|
|
29
|
+
- URL reflects meaningful state for sharing and restoring context.
|
|
30
|
+
- Mobile navigation keeps core actions in thumb-reachable zones.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Page Blueprints
|
|
2
|
+
|
|
3
|
+
Use these as defaults and adapt to product constraints.
|
|
4
|
+
|
|
5
|
+
## SaaS Dashboard
|
|
6
|
+
|
|
7
|
+
1. Global header: context, search, notifications, profile.
|
|
8
|
+
2. KPI row: 3-6 key metrics with trend indicators.
|
|
9
|
+
3. Primary insights zone: chart/table split.
|
|
10
|
+
4. Secondary panels: activity, alerts, tasks, or funnel.
|
|
11
|
+
5. Footer utilities: status/help links.
|
|
12
|
+
|
|
13
|
+
## Marketing / Landing
|
|
14
|
+
|
|
15
|
+
1. Hero: value proposition + primary CTA.
|
|
16
|
+
2. Proof: logos, social proof, key stats.
|
|
17
|
+
3. Feature grid with concise benefit copy.
|
|
18
|
+
4. FAQ or comparison section.
|
|
19
|
+
5. Final CTA + footer.
|
|
20
|
+
|
|
21
|
+
## Workspace / Tool Screen
|
|
22
|
+
|
|
23
|
+
1. Top bar: context title + critical actions.
|
|
24
|
+
2. Left navigation rail or sidebar.
|
|
25
|
+
3. Main canvas or primary panel.
|
|
26
|
+
4. Secondary inspector/context panel.
|
|
27
|
+
5. Feedback layer: toast, inline status, banners.
|
|
28
|
+
|
|
29
|
+
## Settings / Account
|
|
30
|
+
|
|
31
|
+
1. Section tabs or sidebar nav.
|
|
32
|
+
2. Profile and organization settings.
|
|
33
|
+
3. Billing and subscription controls.
|
|
34
|
+
4. Security/access controls.
|
|
35
|
+
5. Danger zone and audit/history.
|
|
36
|
+
|
|
37
|
+
## Content / Docs
|
|
38
|
+
|
|
39
|
+
1. Title block with metadata.
|
|
40
|
+
2. Reading progress + table of contents.
|
|
41
|
+
3. Main semantic content body.
|
|
42
|
+
4. Related resources and next action.
|
|
43
|
+
5. Feedback/edit links.
|
|
44
|
+
|
|
45
|
+
## Agent Workspace (Plan → Preview → Apply)
|
|
46
|
+
|
|
47
|
+
Use this when the UI includes an agent that proposes changes or executes steps.
|
|
48
|
+
|
|
49
|
+
1. Top bar: workspace context + primary action (Apply) + secondary (Preview/Run) + palette trigger.
|
|
50
|
+
2. Left rail: activity feed or “runs” list (recent executions).
|
|
51
|
+
3. Center: tabbed **Plan / Preview / Apply** surface.
|
|
52
|
+
- Plan: concise bullets + risk label.
|
|
53
|
+
- Preview: diff + before/after preview + impacted files list.
|
|
54
|
+
- Apply: progress, step timeline, streaming log, final summary.
|
|
55
|
+
4. Right inspector: “Why this?”, provenance, settings, and per-change details.
|
|
56
|
+
5. Bottom feedback: toasts (with Undo), warnings, and inline error recovery actions.
|
|
57
|
+
|
|
58
|
+
## Diff Review (Focused)
|
|
59
|
+
|
|
60
|
+
Use for heavy change review or refactors.
|
|
61
|
+
|
|
62
|
+
1. Header: scope summary (files, risk, estimated impact) + primary actions.
|
|
63
|
+
2. Diff list (left): files/sections, filters (only changed, risky, failing gates).
|
|
64
|
+
3. Diff viewer (center): side-by-side by default with inline comments.
|
|
65
|
+
4. Run/test panel (right or bottom): checks, failures, rerun buttons.
|
|
66
|
+
5. Footer: Apply/merge controls + Undo/restore point creation.
|
|
67
|
+
|
|
68
|
+
## History & Restore
|
|
69
|
+
|
|
70
|
+
Use when users need confidence and rollback.
|
|
71
|
+
|
|
72
|
+
1. Timeline of restore points with metadata (who/when/what).
|
|
73
|
+
2. Compare view between any two snapshots.
|
|
74
|
+
3. Restore flow (preview + confirm).
|
|
75
|
+
4. Guardrails for destructive restores.
|
|
76
|
+
5. Export/share audit trail if relevant.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Quality Gates
|
|
2
|
+
|
|
3
|
+
Ship only after all gates pass.
|
|
4
|
+
|
|
5
|
+
## Visual System
|
|
6
|
+
|
|
7
|
+
- Typography scale is consistent.
|
|
8
|
+
- Spacing increments are consistent.
|
|
9
|
+
- Color and elevation are tokenized and purposeful.
|
|
10
|
+
- Radius and border treatment are coherent.
|
|
11
|
+
|
|
12
|
+
## UX and Interaction
|
|
13
|
+
|
|
14
|
+
- Primary action is obvious on every view.
|
|
15
|
+
- Hover/focus/active/disabled states are present.
|
|
16
|
+
- Loading/empty/error/success states are implemented.
|
|
17
|
+
- Core workflows are obvious and low-friction.
|
|
18
|
+
|
|
19
|
+
### Agent UX Gates (Ship-blockers)
|
|
20
|
+
|
|
21
|
+
If the UI includes an agent or “apply changes” workflow:
|
|
22
|
+
|
|
23
|
+
- **Plan → Preview → Apply** exists and is the default path.
|
|
24
|
+
- **Preview required** for high-risk operations (routing/auth/data model/destructive ops).
|
|
25
|
+
- **Undo** exists for reversible actions and appears in the success toast.
|
|
26
|
+
- **History/restore** exists for high-impact changes (restore points/snapshots).
|
|
27
|
+
- **Visible system status**: current step, progress, and outcome are always visible.
|
|
28
|
+
- **No dead ends**: every empty/error state has a next action.
|
|
29
|
+
- **Choice architecture**: 3–5 primary actions max on the default surface; progressive disclosure for the rest.
|
|
30
|
+
- **Keyboard-first happy path**: palette + navigable controls for key actions.
|
|
31
|
+
- **Provenance**: users can see where suggestions/actions came from (“Why this?”, sources).
|
|
32
|
+
|
|
33
|
+
## Responsive Behavior
|
|
34
|
+
|
|
35
|
+
- Layout works on mobile, tablet, desktop.
|
|
36
|
+
- Critical actions remain accessible on small screens.
|
|
37
|
+
- Data surfaces degrade gracefully on narrow viewports.
|
|
38
|
+
|
|
39
|
+
## Accessibility
|
|
40
|
+
|
|
41
|
+
- Text/control contrast is sufficient.
|
|
42
|
+
- Keyboard navigation works for all key actions.
|
|
43
|
+
- Semantic headings/landmarks are present.
|
|
44
|
+
- Form labels and validation feedback are clear.
|
|
45
|
+
|
|
46
|
+
## Maintainability
|
|
47
|
+
|
|
48
|
+
- Components are reusable and not tightly coupled.
|
|
49
|
+
- Motion is meaningful and restrained.
|
|
50
|
+
- Naming and file organization are consistent.
|
|
51
|
+
- Avoid unnecessary client-side complexity.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Screenshot Translation Protocol
|
|
2
|
+
|
|
3
|
+
When provided with a static screenshot, mockup, or reference image, the goal is not to blindly duplicate pixels. The goal is to deconstruct the image's intent and reconstruct it using LoveUI's strict architectural and visual constraints. A static image is an incomplete blueprint; you must infer the missing systemic rules.
|
|
4
|
+
|
|
5
|
+
## 1. Visual Deconstruction and The Grid
|
|
6
|
+
Before analyzing any specific element, deconstruct the macro-layout of the provided image into a strict mathematical grid.
|
|
7
|
+
- **Identify the Skeleton:** Map the image into core structural landmarks (e.g., Sidebars, Navigation Rails, Primary Canvas, Context Panels). Do not proceed until the overarching grid or flexbox architecture is conceptually defined.
|
|
8
|
+
- **Normalize to the 8pt System:** Reference images often contain arbitrary or messy spacing. You must aggressively normalize all observed margins, paddings, and gaps into strict multiples of 4px or 8px. If a screenshot shows a 17px gap, correct it to 16px.
|
|
9
|
+
- **Alignment Enforcement:** Identify the primary alignment axes in the image. If elements in the screenshot are slightly misaligned, assume it is a human error in the mockup and enforce mathematically perfect horizontal and vertical alignment in the reconstruction.
|
|
10
|
+
|
|
11
|
+
## 2. Token Extraction and System Mapping
|
|
12
|
+
Do not sample exact hex codes or font sizes from the image if they violate LoveUI core principles. Translate the image's aesthetic into your predefined system tokens.
|
|
13
|
+
- **Color Translation:** Strip away any gradients or excessive color usage found in the screenshot. Map the dominant background and surface colors to the closest LoveUI monochromatic tokens (Slate, Zinc, etc.). Identify the single primary action color in the screenshot and map it to the LoveUI accent token.
|
|
14
|
+
- **Typography Standardization:** Ignore the specific font family in the screenshot. Map the visual hierarchy (massive headers, readable body text, muted metadata) strictly to the established LoveUI typographic scale. Enforce readability over stylistic quirks.
|
|
15
|
+
- **Containment Rules:** If the screenshot utilizes heavy drop shadows or thick borders for containment, downgrade them. Translate these boundaries into LoveUI's ultra-subtle 1px borders or the softest available elevation tokens.
|
|
16
|
+
|
|
17
|
+
## 3. Component Identification and Modularization
|
|
18
|
+
Never build a single, monolithic interface just because the screenshot looks like one flat image.
|
|
19
|
+
- **Pattern Recognition:** Scan the screenshot for repeating visual patterns (e.g., a list of similar items, a row of metric cards). Extract these into conceptual, reusable sub-components rather than repeating the structural logic.
|
|
20
|
+
- **Semantic Mapping:** Identify visual elements and assign them their correct semantic intent. If a visual block looks like a button but acts as a navigation link, structure it semantically as an anchor, regardless of its visual presentation.
|
|
21
|
+
|
|
22
|
+
## 4. Inferring the Invisible (State and Interaction)
|
|
23
|
+
A screenshot only represents a single moment in time (usually the "happy path"). You are strictly required to invent and implement the missing interactive dimensions.
|
|
24
|
+
- **Mandatory Micro-Interactions:** Even if not pictured, you must define and apply logical `hover`, `focus`, and `disabled` states for every interactive element identified in the image.
|
|
25
|
+
- **Edge Case Extrapolation:** The screenshot likely shows perfect data. You must design how the UI behaves when the data is imperfect. Define the text-truncation rules for long strings, the wrapping behavior for flex layouts, and the empty states if the visible data were to be removed.
|
|
26
|
+
|
|
27
|
+
## 5. Viewport Adaptation
|
|
28
|
+
A screenshot represents exactly one screen width. You must immediately define how this layout expands and contracts.
|
|
29
|
+
- **Degradation Strategy:** Determine the mobile behavior for the desktop screenshot. Decide which columns will stack, which sidebars will become off-canvas drawers, and which secondary elements will be hidden behind progressive disclosure menus on smaller screens.
|
|
30
|
+
|
|
31
|
+
## 6. Translation Workflow (Execution Order)
|
|
32
|
+
1. **Classify source:** identify whether input is dashboard, marketing, workspace, settings, docs, or agent workspace.
|
|
33
|
+
2. **Select blueprint:** map to `references/page-blueprints.md` and note any deviations.
|
|
34
|
+
3. **Token-map visuals:** translate typography, spacing, color, radius, border, and elevation into LoveUI tokens.
|
|
35
|
+
4. **Extract components:** list reusable blocks before coding repeated patterns.
|
|
36
|
+
5. **Define states:** add hover/focus/disabled + loading/empty/error/success behavior.
|
|
37
|
+
6. **Adapt responsively:** define desktop/tablet/mobile layout transitions.
|
|
38
|
+
7. **Validate gates:** run `references/quality-gates.md` and accessibility checks before final output.
|
|
39
|
+
|
|
40
|
+
## 7. Output Requirements for Screenshot Tasks
|
|
41
|
+
When implementing from screenshots, always report:
|
|
42
|
+
- **What was preserved:** hierarchy, information zoning, and key interaction model.
|
|
43
|
+
- **What was normalized:** spacing alignment, token choices, contrast, and semantics.
|
|
44
|
+
- **What was invented:** missing states, edge-case behavior, and mobile adaptations.
|
|
45
|
+
- **Risk notes:** areas where screenshot ambiguity required assumptions.
|
|
46
|
+
|
|
47
|
+
## 8. Definition of Done (Screenshot Translation)
|
|
48
|
+
- Layout is mathematically aligned and normalized to 4/8 spacing increments.
|
|
49
|
+
- Visual style conforms to LoveUI primitives rather than raw pixel copying.
|
|
50
|
+
- Repeated patterns are componentized with reusable APIs.
|
|
51
|
+
- Interaction states and non-happy-path states are explicitly implemented.
|
|
52
|
+
- Result is responsive and passes quality + accessibility gates.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Structural Cleanliness & Architecture
|
|
2
|
+
|
|
3
|
+
This document outlines the philosophy for constructing the underlying framework of the UI. Even though the end user does not see the structure, a messy foundation leads to a disjointed visual output.
|
|
4
|
+
|
|
5
|
+
## 1. Absolute Semantic Accuracy
|
|
6
|
+
The structural tags used to build the interface must describe their exact purpose.
|
|
7
|
+
- **Landmarks:** The interface must be divided logically into headers, main content areas, navigation rails, sidebars, and footers using the correct descriptive syntax.
|
|
8
|
+
- **Interactive Semantics:** Only use button structures for actions that trigger events, and anchor structures for actions that navigate to new views. Do not mix their visual representations with their functional realities.
|
|
9
|
+
|
|
10
|
+
## 2. Abstraction and Reusability
|
|
11
|
+
Do not build monolithic, endlessly scrolling structures.
|
|
12
|
+
- **Granularity:** Break complex interfaces down into the smallest possible logical pieces. A data dashboard should be composed of distinct, reusable card structures, list structures, and chart structures.
|
|
13
|
+
- **Utility Discipline:** When utilizing styling systems, avoid repeating long strings of visual definitions. If a specific combination of visual rules (like a standard card container with specific padding and borders) appears more than twice, it must be abstracted into a single, reusable concept.
|
|
14
|
+
|
|
15
|
+
## 3. Responsive Grace
|
|
16
|
+
The interface must degrade beautifully, not just functionally, as screen sizes change.
|
|
17
|
+
- **Fluid Layouts:** Rely on flexible grid and column systems that naturally reflow content.
|
|
18
|
+
- **Mobile Realities:** On narrow viewports, complex multi-column layouts must stack logically. Ensure that touch targets become slightly larger to accommodate fingers, and that critical navigation actions remain permanently accessible without excessive scrolling.
|
|
19
|
+
|
|
20
|
+
## 4. Information Hierarchy Integrity
|
|
21
|
+
Structure should make meaning obvious without visual decoration.
|
|
22
|
+
- **Heading Order:** Use a strict, logical heading sequence; do not skip levels in long-form or dashboard sections.
|
|
23
|
+
- **Chunking:** Group related controls/content into explicit sections with concise section labels.
|
|
24
|
+
- **Reading Flow:** Keep primary content before secondary utilities in the DOM when possible.
|
|
25
|
+
|
|
26
|
+
## 5. Component and File Boundaries
|
|
27
|
+
Maintain a clean implementation surface as UI complexity grows.
|
|
28
|
+
- **Single Responsibility:** Each component should own one clear job (layout shell, card, table, filter bar, etc.).
|
|
29
|
+
- **Composition First:** Favor composition of smaller primitives over deeply configurable mega-components.
|
|
30
|
+
- **Locality:** Keep styles, tests, and stories/examples near components when project conventions allow.
|
|
31
|
+
|
|
32
|
+
## 6. Definition of Done (Structure)
|
|
33
|
+
- Landmarks and semantic elements match the page intent.
|
|
34
|
+
- Buttons trigger actions; links navigate; semantics are never mixed for convenience.
|
|
35
|
+
- Repeated UI patterns are abstracted into reusable components/tokens.
|
|
36
|
+
- Mobile stacking preserves task flow and keeps critical actions reachable.
|
|
37
|
+
- File and component naming remain consistent and predictable.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Testing and Quality Strategy
|
|
2
|
+
|
|
3
|
+
A beautiful interface is fragile without a rigorous quality safety net. Quality must be enforced systematically before any design reaches production.
|
|
4
|
+
|
|
5
|
+
## 1. The Testing Pyramid
|
|
6
|
+
- **Unit Testing:** Focus unit tests strictly on complex, isolated mathematical logic, data formatting utilities, and pure state transformations. Do not write brittle unit tests that verify simple CSS class names.
|
|
7
|
+
- **Integration Testing:** Prioritize integration tests that verify the exact connections between smart data wrappers and the dumb visual components.
|
|
8
|
+
- **End-to-End (E2E):** Reserve heavy E2E tests for the absolute critical business paths (e.g., user signup, payment flows, core object creation).
|
|
9
|
+
|
|
10
|
+
## 2. Visual Regression Policy
|
|
11
|
+
- **Automated Eyes:** Any change to a core UI component must automatically trigger a visual regression check against established baselines. This prevents a spacing tweak in a button from cascading and breaking navigation headers across the platform.
|
|
12
|
+
|
|
13
|
+
## 3. Accessibility Quality Gates
|
|
14
|
+
- **Automated Audits:** The continuous integration pipeline must automatically block any code that introduces standard WCAG violations (like missing form labels, severe contrast failures, or missing ARIA roles).
|
|
15
|
+
|
|
16
|
+
## 4. The Definition of Done
|
|
17
|
+
A feature or UI update is strictly not considered complete until:
|
|
18
|
+
- It functions flawlessly on desktop, tablet, and mobile breakpoints.
|
|
19
|
+
- It can be fully operated using only a keyboard.
|
|
20
|
+
- All loading, empty, and error states have been explicitly designed and implemented.
|
|
21
|
+
- It adheres completely to the LoveUI visual primitives and spatial grid constraints.
|
|
22
|
+
|
|
23
|
+
## 5. Minimum Test Matrix (Per Feature)
|
|
24
|
+
- **Happy path integration test:** verifies primary user objective end-to-end within the feature boundary.
|
|
25
|
+
- **Failure path integration test:** verifies user-visible recovery for at least one realistic backend/client failure.
|
|
26
|
+
- **Accessibility smoke test:** keyboard traversal + basic a11y assertions for primary controls.
|
|
27
|
+
- **Visual snapshot(s):** stable snapshots for default, loading, and error/empty states where layout risk exists.
|
|
28
|
+
|
|
29
|
+
## 6. Release Gate Checklist
|
|
30
|
+
- Critical flows pass on target browsers/devices.
|
|
31
|
+
- No unresolved high-severity accessibility or UX regressions.
|
|
32
|
+
- New or changed components include regression coverage at the right layer.
|
|
33
|
+
- Quality-gate references (`visual-primitives`, `interaction-heuristics`, `structural-cleanliness`) are satisfied.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Visual Primitives & Aesthetic Constraints
|
|
2
|
+
|
|
3
|
+
This document defines the strict visual boundaries for all LoveUI generations. The goal is an ultra-clean, minimalist, and highly professional aesthetic. You must adhere to these foundational design rules before assembling any layout.
|
|
4
|
+
|
|
5
|
+
## 1. The Zero-Gradient Mandate
|
|
6
|
+
Under no circumstances should gradients be applied to backgrounds, typography, borders, or buttons unless explicitly requested by the user. Gradients introduce unnecessary visual noise. Rely entirely on flat, solid colors to establish depth and hierarchy.
|
|
7
|
+
|
|
8
|
+
## 2. Monochromatic Dominance & Singular Accent
|
|
9
|
+
The color system must be strictly disciplined.
|
|
10
|
+
- **Base Palette:** Ninety percent of the interface must utilize a neutral, monochromatic scale (e.g., pure grays, slates, or zincs).
|
|
11
|
+
- **Accent Application:** Select exactly one primary brand color. This color must be reserved exclusively for primary actions, active states, and critical data highlights. Never use the accent color for decorative backgrounds or structural borders.
|
|
12
|
+
- **Backgrounds:** Default to a pure white or an ultra-light gray for light mode, and a pure black or ultra-dark gray for dark mode. Avoid mid-tones for main structural backgrounds.
|
|
13
|
+
|
|
14
|
+
## 3. Topographic Typography
|
|
15
|
+
Typography must do the heavy lifting for the interface's structural hierarchy.
|
|
16
|
+
- **Font Selection:** Always default to a clean, modern, sans-serif system typeface.
|
|
17
|
+
- **Scale and Weight:** Enforce a strict typographic scale. Page titles must be large and bold; section headings should be medium and semibold; body text must be legible and regular weight.
|
|
18
|
+
- **Subordinate Text:** Metadata, timestamps, and secondary descriptions must utilize a smaller font size and a muted text color to recede visually.
|
|
19
|
+
|
|
20
|
+
## 4. The Spatial Grid
|
|
21
|
+
Whitespace is the primary tool for organizing information.
|
|
22
|
+
- **Strict Multiples:** All margins, padding, and positional values must adhere to a strict base-8 (or base-4 for micro-spacing) mathematical scale.
|
|
23
|
+
- **Breathing Room:** Never crowd elements. Elements that belong to the same logical group should be closer together, while distinct sections must be separated by generous, mathematically consistent whitespace.
|
|
24
|
+
|
|
25
|
+
## 5. Depth and Containment
|
|
26
|
+
Avoid heavy drop shadows and thick borders.
|
|
27
|
+
- **Separation:** Use ultra-subtle, one-pixel borders in a very light gray to separate panels and sections.
|
|
28
|
+
- **Elevation:** If shadows are necessary to indicate a floating element (like a dropdown menu or modal), use the softest, most diffused, and smallest shadow available. The interface should feel flat and crisp, not raised and heavy.
|
|
29
|
+
|
|
30
|
+
## 6. Implementation Defaults (Use Unless User Overrides)
|
|
31
|
+
- **Spacing Scale:** `4, 8, 12, 16, 24, 32, 40, 48, 64`.
|
|
32
|
+
- **Radius Scale:** `6` (inputs/buttons), `10` (cards), `14` (modals/drawers), avoid mixing many radii.
|
|
33
|
+
- **Border Color:** one neutral border token for most surfaces, one stronger border token for focus/active grouping.
|
|
34
|
+
- **Shadow Policy:** no persistent heavy shadows; one subtle shadow token for floating layers only.
|
|
35
|
+
- **Accent Budget:** one accent hue, with at most two intensity steps for hover/active states.
|
|
36
|
+
|
|
37
|
+
## 7. Definition of Done (Visual)
|
|
38
|
+
- No gradients unless explicitly requested.
|
|
39
|
+
- Accent color appears only on primary actions, active states, and critical highlights.
|
|
40
|
+
- Typography hierarchy is clear at a glance (title, section, body, metadata).
|
|
41
|
+
- Spacing values snap to the defined scale and are consistent between similar sections.
|
|
42
|
+
- Borders/shadows are subtle, sparse, and purposeful.
|