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,35 @@
|
|
|
1
|
+
import { Button } from "@/registry/default/ui/button";
|
|
2
|
+
import { DecorIcon } from "./decor-icon";
|
|
3
|
+
import { ArrowRightIcon } from "lucide-react";
|
|
4
|
+
|
|
5
|
+
export function CallToAction() {
|
|
6
|
+
return (
|
|
7
|
+
<div className="relative mx-auto flex w-full max-w-3xl flex-col justify-between gap-y-4 border-y px-4 py-8 dark:bg-[radial-gradient(35%_80%_at_25%_0%,--theme(--color-foreground/.08),transparent)]">
|
|
8
|
+
<DecorIcon className="size-4" position="top-left" />
|
|
9
|
+
<DecorIcon className="size-4" position="top-right" />
|
|
10
|
+
<DecorIcon className="size-4" position="bottom-left" />
|
|
11
|
+
<DecorIcon className="size-4" position="bottom-right" />
|
|
12
|
+
|
|
13
|
+
<div className="pointer-events-none absolute -inset-y-6 -left-px w-px border-l" />
|
|
14
|
+
<div className="pointer-events-none absolute -inset-y-6 -right-px w-px border-r" />
|
|
15
|
+
|
|
16
|
+
<div className="absolute top-0 left-1/2 -z-10 h-full border-l border-dashed" />
|
|
17
|
+
|
|
18
|
+
<h2 className="text-center font-semibold text-xl md:text-3xl">
|
|
19
|
+
Give your team the context they keep asking for.
|
|
20
|
+
</h2>
|
|
21
|
+
<p className="text-balance text-center font-medium text-muted-foreground text-sm md:text-base">
|
|
22
|
+
Publish a shared source of truth for roadmap notes, customer feedback,
|
|
23
|
+
and launch decisions.
|
|
24
|
+
</p>
|
|
25
|
+
|
|
26
|
+
<div className="flex items-center justify-center gap-2">
|
|
27
|
+
<Button variant="outline">View Examples</Button>
|
|
28
|
+
<Button>
|
|
29
|
+
Open a Board{" "}
|
|
30
|
+
<ArrowRightIcon data-icon="inline-end" />
|
|
31
|
+
</Button>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
);
|
|
35
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { cn } from "@/lib/utils";
|
|
2
|
+
import { cva, type VariantProps } from "class-variance-authority";
|
|
3
|
+
|
|
4
|
+
const DecorIconVariants = cva(
|
|
5
|
+
"pointer-events-none absolute z-1 size-5 shrink-0 stroke-1 stroke-muted-foreground",
|
|
6
|
+
{
|
|
7
|
+
variants: {
|
|
8
|
+
position: {
|
|
9
|
+
"top-left":
|
|
10
|
+
"top-0 left-0 -translate-x-[calc(50%+0.5px)] -translate-y-[calc(50%+0.5px)]",
|
|
11
|
+
"top-right":
|
|
12
|
+
"top-0 right-0 translate-x-[calc(50%+0.5px)] -translate-y-[calc(50%+0.5px)]",
|
|
13
|
+
"bottom-right":
|
|
14
|
+
"right-0 bottom-0 translate-x-[calc(50%+0.5px)] translate-y-[calc(50%+0.5px)]",
|
|
15
|
+
"bottom-left":
|
|
16
|
+
"bottom-0 left-0 -translate-x-[calc(50%+0.5px)] translate-y-[calc(50%+0.5px)]",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
defaultVariants: {
|
|
20
|
+
position: "top-left",
|
|
21
|
+
},
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
type DecorIconProps = React.ComponentProps<"svg"> &
|
|
26
|
+
VariantProps<typeof DecorIconVariants>;
|
|
27
|
+
|
|
28
|
+
export function DecorIcon({ position, className, ...props }: DecorIconProps) {
|
|
29
|
+
return (
|
|
30
|
+
<svg
|
|
31
|
+
aria-hidden="true"
|
|
32
|
+
className={cn(DecorIconVariants({ position, className }))}
|
|
33
|
+
fill="none"
|
|
34
|
+
stroke="currentColor"
|
|
35
|
+
strokeLinecap="round"
|
|
36
|
+
strokeLinejoin="round"
|
|
37
|
+
viewBox="0 0 24 24"
|
|
38
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
39
|
+
{...props}
|
|
40
|
+
>
|
|
41
|
+
<path d="M5 12h14" />
|
|
42
|
+
<path d="M12 5v14" />
|
|
43
|
+
</svg>
|
|
44
|
+
);
|
|
45
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Button } from "@/registry/default/ui/button";
|
|
2
|
+
import { CreditCardIcon, ArrowRightIcon } from "lucide-react";
|
|
3
|
+
|
|
4
|
+
export function CallToAction() {
|
|
5
|
+
return (
|
|
6
|
+
<div className="relative mx-auto flex w-full max-w-3xl flex-col justify-between gap-y-6 rounded-4xl border bg-card px-4 py-8 shadow-sm md:py-10 dark:bg-card/50">
|
|
7
|
+
<div className="space-y-2">
|
|
8
|
+
<h2 className="text-center font-semibold text-lg tracking-tight md:text-2xl">
|
|
9
|
+
A faster approval loop starts here.
|
|
10
|
+
</h2>
|
|
11
|
+
<p className="text-balance text-center text-muted-foreground text-sm md:text-base">
|
|
12
|
+
Invite reviewers, collect notes, and approve changes. No credit card{" "}
|
|
13
|
+
<CreditCardIcon className="inline-block size-4" />{" "}
|
|
14
|
+
required.
|
|
15
|
+
</p>
|
|
16
|
+
</div>
|
|
17
|
+
<div className="flex items-center justify-center gap-2">
|
|
18
|
+
<Button className="shadow" variant="secondary">
|
|
19
|
+
Preview Flow
|
|
20
|
+
</Button>
|
|
21
|
+
<Button className="shadow">
|
|
22
|
+
Start Review{" "}
|
|
23
|
+
<ArrowRightIcon data-icon="inline-end" />
|
|
24
|
+
</Button>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
);
|
|
28
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Button } from "@/registry/default/ui/button";
|
|
2
|
+
import {
|
|
3
|
+
InputGroup,
|
|
4
|
+
InputGroupAddon,
|
|
5
|
+
InputGroupInput,
|
|
6
|
+
} from "@/registry/default/ui/input-group";
|
|
7
|
+
import { FullWidthDivider } from "./full-width-divider";
|
|
8
|
+
import { AtSignIcon, ArrowRightIcon } from "lucide-react";
|
|
9
|
+
|
|
10
|
+
export function CallToAction() {
|
|
11
|
+
return (
|
|
12
|
+
<div className="relative mx-auto flex w-full max-w-3xl flex-col justify-between gap-y-6 border-x bg-secondary/80 px-2 py-8 md:px-4 dark:bg-secondary/40">
|
|
13
|
+
<FullWidthDivider className="-top-px" />
|
|
14
|
+
|
|
15
|
+
<div className="space-y-1">
|
|
16
|
+
<h2 className="text-center font-semibold text-2xl tracking-tight md:text-4xl">
|
|
17
|
+
Get the field notes before everyone else
|
|
18
|
+
</h2>
|
|
19
|
+
<p className="text-balance text-center text-muted-foreground text-sm md:text-base">
|
|
20
|
+
Monthly product lessons, interface patterns, and teardown notes.
|
|
21
|
+
</p>
|
|
22
|
+
</div>
|
|
23
|
+
<div className="flex items-center justify-center gap-2">
|
|
24
|
+
<InputGroup className="max-w-[280px] bg-card">
|
|
25
|
+
<InputGroupInput placeholder="you@company.com" />
|
|
26
|
+
<InputGroupAddon>
|
|
27
|
+
<AtSignIcon data-icon="inline-start" />
|
|
28
|
+
</InputGroupAddon>
|
|
29
|
+
</InputGroup>
|
|
30
|
+
|
|
31
|
+
<Button>
|
|
32
|
+
Join List{" "}
|
|
33
|
+
<ArrowRightIcon data-icon="inline-end" />
|
|
34
|
+
</Button>
|
|
35
|
+
</div>
|
|
36
|
+
<div className="flex items-center justify-center gap-2">
|
|
37
|
+
<p className="text-muted-foreground text-sm">
|
|
38
|
+
Read by{" "}
|
|
39
|
+
<span className="font-medium text-foreground">4,200 builders</span>.
|
|
40
|
+
</p>
|
|
41
|
+
<div className="flex -space-x-[0.45rem] *:rounded-full *:ring-2 *:ring-background">
|
|
42
|
+
<img
|
|
43
|
+
alt="Avatar 01"
|
|
44
|
+
height={24}
|
|
45
|
+
src="https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?q=80&w=72"
|
|
46
|
+
width={24}
|
|
47
|
+
/>
|
|
48
|
+
<img
|
|
49
|
+
alt="Avatar 02"
|
|
50
|
+
height={24}
|
|
51
|
+
src="https://images.unsplash.com/photo-1485206412256-701ccc5b93ca?q=80&w=72"
|
|
52
|
+
width={24}
|
|
53
|
+
/>
|
|
54
|
+
<img
|
|
55
|
+
alt="Avatar 03"
|
|
56
|
+
height={24}
|
|
57
|
+
src="https://images.unsplash.com/photo-1527980965255-d3b416303d12?q=80&w=72"
|
|
58
|
+
width={24}
|
|
59
|
+
/>
|
|
60
|
+
<img
|
|
61
|
+
alt="Avatar 04"
|
|
62
|
+
height={24}
|
|
63
|
+
src="https://images.unsplash.com/photo-1610216705422-caa3fcb6d158?q=80&w=72"
|
|
64
|
+
width={24}
|
|
65
|
+
/>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
|
|
69
|
+
<FullWidthDivider className="-bottom-px" />
|
|
70
|
+
</div>
|
|
71
|
+
);
|
|
72
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { cn } from "@/lib/utils";
|
|
2
|
+
|
|
3
|
+
type FullWidthDividerProps = React.ComponentProps<"div"> & {
|
|
4
|
+
contained?: boolean;
|
|
5
|
+
position?: "top" | "bottom";
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export function FullWidthDivider({
|
|
9
|
+
className,
|
|
10
|
+
contained = false,
|
|
11
|
+
position,
|
|
12
|
+
...props
|
|
13
|
+
}: FullWidthDividerProps) {
|
|
14
|
+
return (
|
|
15
|
+
<div
|
|
16
|
+
aria-hidden="true"
|
|
17
|
+
className={cn(
|
|
18
|
+
"pointer-events-none absolute h-px bg-border",
|
|
19
|
+
// full-bleed (default)
|
|
20
|
+
"data-[contained=false]:left-1/2 data-[contained=false]:w-screen data-[contained=false]:-translate-x-1/2",
|
|
21
|
+
// contained
|
|
22
|
+
"data-[contained=true]:inset-x-0 data-[contained=true]:w-full",
|
|
23
|
+
// position
|
|
24
|
+
position &&
|
|
25
|
+
"data-[position=top]:-top-px data-[position=bottom]:-bottom-px",
|
|
26
|
+
className
|
|
27
|
+
)}
|
|
28
|
+
data-contained={contained}
|
|
29
|
+
data-position={position}
|
|
30
|
+
{...props}
|
|
31
|
+
/>
|
|
32
|
+
);
|
|
33
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Accordion,
|
|
3
|
+
AccordionContent,
|
|
4
|
+
AccordionItem,
|
|
5
|
+
AccordionTrigger,
|
|
6
|
+
} from "@/registry/default/ui/accordion";
|
|
7
|
+
|
|
8
|
+
export function FaqsSection() {
|
|
9
|
+
return (
|
|
10
|
+
<div className="mx-auto w-full max-w-2xl space-y-7 px-4">
|
|
11
|
+
<div className="space-y-2">
|
|
12
|
+
<h2 className="font-semibold text-3xl md:text-4xl">
|
|
13
|
+
Frequently Asked Questions
|
|
14
|
+
</h2>
|
|
15
|
+
<p className="max-w-2xl text-muted-foreground">
|
|
16
|
+
Here are some common questions and answers that you might encounter
|
|
17
|
+
when using LoveUI. If you don't find the answer you're looking for,
|
|
18
|
+
feel free to reach out.
|
|
19
|
+
</p>
|
|
20
|
+
</div>
|
|
21
|
+
<Accordion className="rounded-lg border" collapsible type="single">
|
|
22
|
+
{questions.map((item) => (
|
|
23
|
+
<AccordionItem className="px-4" key={item.id} value={item.id}>
|
|
24
|
+
<AccordionTrigger className="py-4 hover:no-underline focus-visible:underline focus-visible:ring-0">
|
|
25
|
+
{item.title}
|
|
26
|
+
</AccordionTrigger>
|
|
27
|
+
<AccordionContent className="pb-4! text-muted-foreground">
|
|
28
|
+
{item.content}
|
|
29
|
+
</AccordionContent>
|
|
30
|
+
</AccordionItem>
|
|
31
|
+
))}
|
|
32
|
+
</Accordion>
|
|
33
|
+
<p className="text-muted-foreground">
|
|
34
|
+
Can't find what you're looking for? Contact our{" "}
|
|
35
|
+
<a className="text-primary hover:underline" href="#">
|
|
36
|
+
customer support team
|
|
37
|
+
</a>
|
|
38
|
+
</p>
|
|
39
|
+
</div>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const questions = [
|
|
44
|
+
{
|
|
45
|
+
id: "item-1",
|
|
46
|
+
title: "What is LoveUI?",
|
|
47
|
+
content:
|
|
48
|
+
"LoveUI is an open-source collection of React components, examples, blocks, and patterns for building polished interfaces with Tailwind CSS.",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: "item-2",
|
|
52
|
+
title: "Who can benefit from LoveUI?",
|
|
53
|
+
content:
|
|
54
|
+
"LoveUI is built for founders, product teams, agencies, and developers who want editable UI source instead of a black-box component package.",
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
id: "item-3",
|
|
58
|
+
title: "What does LoveUI include?",
|
|
59
|
+
content:
|
|
60
|
+
"LoveUI includes reusable UI components, production-ready examples, full-page blocks, documentation, and an optional skill pack for AI coding agents.",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: "item-4",
|
|
64
|
+
title: "Can I customize LoveUI components?",
|
|
65
|
+
content:
|
|
66
|
+
"Yes. The CLI copies component source into your project, so you can inspect the code, change the styles, and keep only the pieces you need.",
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
id: "item-5",
|
|
70
|
+
title: "Does LoveUI work with my existing app?",
|
|
71
|
+
content:
|
|
72
|
+
"Yes. LoveUI works well in React projects using Tailwind CSS. You can add individual components and adjust import paths to match your app.",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
id: "item-6",
|
|
76
|
+
title: "Where can I get help with LoveUI?",
|
|
77
|
+
content:
|
|
78
|
+
"Start with the docs and registry examples. If something looks wrong, open an issue or inspect the copied source directly in your project.",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
id: "item-7",
|
|
82
|
+
title: "How do I get started with LoveUI?",
|
|
83
|
+
content:
|
|
84
|
+
"Run npx love-ui@latest add loveui to install the shared setup, then add components or blocks as your interface needs them.",
|
|
85
|
+
},
|
|
86
|
+
];
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Accordion,
|
|
3
|
+
AccordionContent,
|
|
4
|
+
AccordionItem,
|
|
5
|
+
AccordionTrigger,
|
|
6
|
+
} from "@/registry/default/ui/accordion";
|
|
7
|
+
|
|
8
|
+
export function FaqsSection() {
|
|
9
|
+
return (
|
|
10
|
+
<div className="mx-auto min-h-screen w-full max-w-5xl lg:border-x">
|
|
11
|
+
<div className="mx-4 grid h-[calc(100vh-3.5rem)] grid-cols-1 border-x md:mx-0 md:grid-cols-2 md:border-x-0">
|
|
12
|
+
<div className="space-y-4 px-4 pt-12 pb-4 md:border-r">
|
|
13
|
+
<h2 className="font-black text-3xl md:text-4xl">FAQs</h2>
|
|
14
|
+
<p className="text-muted-foreground">
|
|
15
|
+
Here are some common questions and answers that you might encounter
|
|
16
|
+
when using LoveUI.
|
|
17
|
+
</p>
|
|
18
|
+
</div>
|
|
19
|
+
<div className="place-content-center">
|
|
20
|
+
<Accordion
|
|
21
|
+
className="rounded-none border-x-0 border-y"
|
|
22
|
+
collapsible
|
|
23
|
+
type="single"
|
|
24
|
+
>
|
|
25
|
+
{questions.map((item) => (
|
|
26
|
+
<AccordionItem className="px-4" key={item.id} value={item.id}>
|
|
27
|
+
<AccordionTrigger className="py-4 hover:no-underline focus-visible:underline focus-visible:ring-0">
|
|
28
|
+
{item.title}
|
|
29
|
+
</AccordionTrigger>
|
|
30
|
+
<AccordionContent className="pb-4 text-muted-foreground">
|
|
31
|
+
{item.content}
|
|
32
|
+
</AccordionContent>
|
|
33
|
+
</AccordionItem>
|
|
34
|
+
))}
|
|
35
|
+
</Accordion>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
<div className="flex h-14 items-center justify-center border-t">
|
|
39
|
+
<p className="text-muted-foreground">
|
|
40
|
+
Can't find what you're looking for?{" "}
|
|
41
|
+
<a className="text-primary hover:underline" href="#">
|
|
42
|
+
Contact Us
|
|
43
|
+
</a>
|
|
44
|
+
</p>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const questions = [
|
|
51
|
+
{
|
|
52
|
+
id: "item-1",
|
|
53
|
+
title: "What is LoveUI?",
|
|
54
|
+
content:
|
|
55
|
+
"LoveUI is an open-source collection of React components, examples, blocks, and patterns for building polished interfaces with Tailwind CSS.",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
id: "item-2",
|
|
59
|
+
title: "Who can benefit from LoveUI?",
|
|
60
|
+
content:
|
|
61
|
+
"LoveUI is built for founders, product teams, agencies, and developers who want editable UI source instead of a black-box component package.",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
id: "item-3",
|
|
65
|
+
title: "What does LoveUI include?",
|
|
66
|
+
content:
|
|
67
|
+
"LoveUI includes reusable UI components, production-ready examples, full-page blocks, documentation, and an optional skill pack for AI coding agents.",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
id: "item-4",
|
|
71
|
+
title: "Can I customize LoveUI components?",
|
|
72
|
+
content:
|
|
73
|
+
"Yes. The CLI copies component source into your project, so you can inspect the code, change the styles, and keep only the pieces you need.",
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
id: "item-5",
|
|
77
|
+
title: "Does LoveUI work with my existing app?",
|
|
78
|
+
content:
|
|
79
|
+
"Yes. LoveUI works well in React projects using Tailwind CSS. You can add individual components and adjust import paths to match your app.",
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
id: "item-6",
|
|
83
|
+
title: "Where can I get help with LoveUI?",
|
|
84
|
+
content:
|
|
85
|
+
"Start with the docs and registry examples. If something looks wrong, open an issue or inspect the copied source directly in your project.",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
id: "item-7",
|
|
89
|
+
title: "How do I get started with LoveUI?",
|
|
90
|
+
content:
|
|
91
|
+
"Run npx love-ui@latest add loveui to install the shared setup, then add components or blocks as your interface needs them.",
|
|
92
|
+
},
|
|
93
|
+
];
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { cn } from "@/lib/utils";
|
|
2
|
+
import { cva, type VariantProps } from "class-variance-authority";
|
|
3
|
+
|
|
4
|
+
const DecorIconVariants = cva(
|
|
5
|
+
"pointer-events-none absolute z-1 size-5 shrink-0 stroke-1 stroke-muted-foreground",
|
|
6
|
+
{
|
|
7
|
+
variants: {
|
|
8
|
+
position: {
|
|
9
|
+
"top-left":
|
|
10
|
+
"top-0 left-0 -translate-x-[calc(50%+0.5px)] -translate-y-[calc(50%+0.5px)]",
|
|
11
|
+
"top-right":
|
|
12
|
+
"top-0 right-0 translate-x-[calc(50%+0.5px)] -translate-y-[calc(50%+0.5px)]",
|
|
13
|
+
"bottom-right":
|
|
14
|
+
"right-0 bottom-0 translate-x-[calc(50%+0.5px)] translate-y-[calc(50%+0.5px)]",
|
|
15
|
+
"bottom-left":
|
|
16
|
+
"bottom-0 left-0 -translate-x-[calc(50%+0.5px)] translate-y-[calc(50%+0.5px)]",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
defaultVariants: {
|
|
20
|
+
position: "top-left",
|
|
21
|
+
},
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
type DecorIconProps = React.ComponentProps<"svg"> &
|
|
26
|
+
VariantProps<typeof DecorIconVariants>;
|
|
27
|
+
|
|
28
|
+
export function DecorIcon({ position, className, ...props }: DecorIconProps) {
|
|
29
|
+
return (
|
|
30
|
+
<svg
|
|
31
|
+
aria-hidden="true"
|
|
32
|
+
className={cn(DecorIconVariants({ position, className }))}
|
|
33
|
+
fill="none"
|
|
34
|
+
stroke="currentColor"
|
|
35
|
+
strokeLinecap="round"
|
|
36
|
+
strokeLinejoin="round"
|
|
37
|
+
viewBox="0 0 24 24"
|
|
38
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
39
|
+
{...props}
|
|
40
|
+
>
|
|
41
|
+
<path d="M5 12h14" />
|
|
42
|
+
<path d="M12 5v14" />
|
|
43
|
+
</svg>
|
|
44
|
+
);
|
|
45
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Accordion,
|
|
3
|
+
AccordionContent,
|
|
4
|
+
AccordionItem,
|
|
5
|
+
AccordionTrigger,
|
|
6
|
+
} from "@/registry/default/ui/accordion";
|
|
7
|
+
import { DecorIcon } from "./decor-icon";
|
|
8
|
+
|
|
9
|
+
export function FaqsSection() {
|
|
10
|
+
return (
|
|
11
|
+
<section className="mx-auto grid min-h-screen w-full max-w-5xl grid-cols-1 md:grid-cols-2 lg:border-x">
|
|
12
|
+
<div className="px-4 pt-12 pb-6">
|
|
13
|
+
<div className="space-y-5">
|
|
14
|
+
<h2 className="text-balance font-bold text-4xl md:text-6xl lg:font-black">
|
|
15
|
+
Frequently Asked Questions
|
|
16
|
+
</h2>
|
|
17
|
+
<p className="text-muted-foreground">
|
|
18
|
+
Quick answers to common questions about LoveUI. Open any question to
|
|
19
|
+
learn more.
|
|
20
|
+
</p>
|
|
21
|
+
<p className="text-muted-foreground">
|
|
22
|
+
{"Can't find what you're looking for? "}
|
|
23
|
+
<a className="text-primary hover:underline" href="#">
|
|
24
|
+
Contact Us
|
|
25
|
+
</a>
|
|
26
|
+
</p>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
<div className="relative place-content-center">
|
|
30
|
+
{/* vertical guide line */}
|
|
31
|
+
<div
|
|
32
|
+
aria-hidden="true"
|
|
33
|
+
className="pointer-events-none absolute inset-y-0 left-3 h-full w-px bg-border"
|
|
34
|
+
/>
|
|
35
|
+
|
|
36
|
+
<Accordion
|
|
37
|
+
className="rounded-none border-x-0 border-y"
|
|
38
|
+
collapsible
|
|
39
|
+
type="single"
|
|
40
|
+
>
|
|
41
|
+
{faqs.map((item) => (
|
|
42
|
+
<AccordionItem
|
|
43
|
+
className="group relative pl-5"
|
|
44
|
+
key={item.id}
|
|
45
|
+
value={item.id}
|
|
46
|
+
>
|
|
47
|
+
<DecorIcon
|
|
48
|
+
className="left-[13px] size-3 group-last:hidden"
|
|
49
|
+
position="bottom-left"
|
|
50
|
+
/>
|
|
51
|
+
|
|
52
|
+
<AccordionTrigger className="px-4 py-4 hover:no-underline focus-visible:underline focus-visible:ring-0">
|
|
53
|
+
{item.title}
|
|
54
|
+
</AccordionTrigger>
|
|
55
|
+
|
|
56
|
+
<AccordionContent className="px-4 pb-4 text-muted-foreground">
|
|
57
|
+
{item.content}
|
|
58
|
+
</AccordionContent>
|
|
59
|
+
</AccordionItem>
|
|
60
|
+
))}
|
|
61
|
+
</Accordion>
|
|
62
|
+
</div>
|
|
63
|
+
</section>
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const faqs = [
|
|
68
|
+
{
|
|
69
|
+
id: "item-1",
|
|
70
|
+
title: "What is LoveUI?",
|
|
71
|
+
content:
|
|
72
|
+
"LoveUI is an open-source collection of React components, examples, blocks, and patterns for building polished interfaces with Tailwind CSS.",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
id: "item-2",
|
|
76
|
+
title: "Who can benefit from LoveUI?",
|
|
77
|
+
content:
|
|
78
|
+
"LoveUI is built for founders, product teams, agencies, and developers who want editable UI source instead of a black-box component package.",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
id: "item-3",
|
|
82
|
+
title: "What does LoveUI include?",
|
|
83
|
+
content:
|
|
84
|
+
"LoveUI includes reusable UI components, production-ready examples, full-page blocks, documentation, and an optional skill pack for AI coding agents.",
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
id: "item-4",
|
|
88
|
+
title: "Can I customize LoveUI components?",
|
|
89
|
+
content:
|
|
90
|
+
"Yes. The CLI copies component source into your project, so you can inspect the code, change the styles, and keep only the pieces you need.",
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
id: "item-5",
|
|
94
|
+
title: "Does LoveUI work with my existing app?",
|
|
95
|
+
content:
|
|
96
|
+
"Yes. LoveUI works well in React projects using Tailwind CSS. You can add individual components and adjust import paths to match your app.",
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
id: "item-6",
|
|
100
|
+
title: "Where can I get help with LoveUI?",
|
|
101
|
+
content:
|
|
102
|
+
"Start with the docs and registry examples. If something looks wrong, open an issue or inspect the copied source directly in your project.",
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
id: "item-7",
|
|
106
|
+
title: "How do I get started with LoveUI?",
|
|
107
|
+
content:
|
|
108
|
+
"Run npx love-ui@latest add loveui to install the shared setup, then add components or blocks as your interface needs them.",
|
|
109
|
+
},
|
|
110
|
+
];
|