love-ui 1.2.19 → 1.2.20
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/dist/chunk-NJPHI6KT.js +121 -0
- package/dist/index.js +156 -134
- package/dist/mcp-server.js +1 -1
- package/package.json +38 -3
- package/registry/default/blocks/404-1/components/not-found.tsx +1 -1
- package/registry/default/blocks/404-2/components/not-found.tsx +1 -1
- package/registry/default/blocks/auth1/components/auth-page.tsx +2 -3
- package/registry/default/blocks/auth2/components/auth.tsx +2 -3
- package/registry/default/blocks/auth3/components/auth-page.tsx +2 -3
- package/registry/default/blocks/contact1/components/contact.tsx +1 -1
- package/registry/default/blocks/contact2/components/contact.tsx +2 -2
- package/registry/default/blocks/contact3/components/contact.tsx +2 -3
- package/registry/default/blocks/contact4/components/contact.tsx +1 -1
- package/registry/default/blocks/contact5/components/contact.tsx +1 -1
- package/registry/default/blocks/cta-2/components/cta.tsx +1 -1
- package/registry/default/blocks/cta-3/components/cta.tsx +1 -1
- package/registry/default/blocks/cta-4/components/cta.tsx +1 -1
- package/registry/default/blocks/cta-5/components/cta.tsx +1 -1
- package/registry/default/blocks/faq-4/components/faq.tsx +7 -1
- package/registry/default/blocks/faq-5/components/faq.tsx +1 -1
- package/registry/default/blocks/features1/components/feature-section.tsx +6 -1
- package/registry/default/blocks/features2/components/feature-section.tsx +1 -1
- package/registry/default/blocks/features3/components/feature-section.tsx +6 -1
- package/registry/default/blocks/features4/components/feature-section.tsx +6 -1
- package/registry/default/blocks/features5/components/feature-section.tsx +8 -1
- package/registry/default/blocks/features6/components/feature-section.tsx +1 -1
- package/registry/default/blocks/footer1/components/footer.tsx +1 -2
- package/registry/default/blocks/footer2/components/footer.tsx +1 -3
- package/registry/default/blocks/footer3/components/footer.tsx +1 -4
- package/registry/default/blocks/footer4/components/footer.tsx +2 -5
- package/registry/default/blocks/footer5/components/footer.tsx +1 -6
- package/registry/default/blocks/footer6/app/page.tsx +1 -1
- package/registry/default/blocks/footer6/components/footer.tsx +1 -4
- package/registry/default/blocks/header1/components/mobile-nav.tsx +1 -1
- package/registry/default/blocks/header2/components/mobile-nav.tsx +1 -1
- package/registry/default/blocks/header3/components/mobile-nav.tsx +1 -1
- package/registry/default/blocks/header3/components/nav-links.tsx +16 -1
- package/registry/default/blocks/header3/components/ui/navigation-menu.tsx +1 -1
- package/registry/default/blocks/hero1/components/hero.tsx +1 -1
- package/registry/default/blocks/hero1/components/logo-cloud.tsx +43 -61
- package/registry/default/blocks/hero1/components/mobile-nav.tsx +1 -1
- package/registry/default/blocks/hero2/components/hero.tsx +1 -1
- package/registry/default/blocks/hero2/components/logo-cloud.tsx +38 -107
- package/registry/default/blocks/hero2/components/mobile-nav.tsx +1 -1
- package/registry/default/blocks/hero3/components/hero.tsx +1 -1
- package/registry/default/blocks/hero3/components/logo-cloud.tsx +39 -55
- package/registry/default/blocks/hero3/components/mobile-nav.tsx +1 -1
- package/registry/default/blocks/integrations1/components/integrations.tsx +45 -27
- package/registry/default/blocks/integrations2/components/integrations.tsx +46 -36
- package/registry/default/blocks/integrations3/components/integrations.tsx +53 -106
- package/registry/default/blocks/integrations4/components/integrations.tsx +53 -108
- package/registry/default/blocks/integrations5/components/integrations.tsx +51 -68
- package/registry/default/blocks/logo-cloud-1/components/logo-cloud.tsx +39 -54
- package/registry/default/blocks/logo-cloud-2/components/logo-cloud.tsx +39 -50
- package/registry/default/blocks/logo-cloud-3/components/logo-cloud.tsx +41 -56
- package/registry/default/blocks/logo-cloud-4/components/logo-cloud.tsx +41 -56
- package/registry/default/blocks/logo-cloud-5/components/logo-cloud.tsx +39 -55
- package/registry/default/blocks/onboarding1/components/onboarding.tsx +7 -7
- package/registry/default/blocks/onboarding2/components/onboarding.tsx +19 -9
- package/registry/default/blocks/onboarding3/components/onboarding.tsx +1 -1
- package/registry/default/blocks/onboarding4/components/onboarding.tsx +6 -6
- package/registry/default/blocks/onboarding6/components/onboarding.tsx +1 -1
- package/registry/default/blocks/onboarding7/components/onboarding.tsx +4 -4
- package/registry/default/blocks/pricing1/components/pricing.tsx +1 -1
- package/registry/default/blocks/pricing2/components/pricing.tsx +1 -1
- package/registry/default/blocks/pricing3/components/pricing.tsx +6 -1
- package/registry/default/blocks/pricing4/components/pricing.tsx +1 -1
- package/registry/default/blocks/stats11/components/stats.tsx +1 -1
- package/registry/default/blocks/stats2/components/stats.tsx +1 -1
- package/registry/default/blocks/stats4/components/stats.tsx +1 -1
- package/registry/default/blocks/stats6/components/stats.tsx +6 -1
- package/registry/default/blocks/stats7/components/stats.tsx +1 -1
- package/registry/default/blocks/testimonials3/components/testimonials.tsx +1 -1
- package/registry/default/blocks/testimonials4/components/testimonials.tsx +1 -1
- package/registry/default/examples/accordion-in-card.tsx +1 -1
- package/registry/default/examples/accordion-leading-icon.tsx +1 -1
- package/registry/default/examples/accordion-with-icons.tsx +1 -1
- package/registry/default/examples/alert-billing-notice.tsx +1 -1
- package/registry/default/examples/alert-error.tsx +1 -1
- package/registry/default/examples/alert-info.tsx +1 -1
- package/registry/default/examples/alert-success.tsx +1 -1
- package/registry/default/examples/alert-warning.tsx +1 -1
- package/registry/default/examples/alert-with-icon-action.tsx +1 -1
- package/registry/default/examples/alert-with-icon.tsx +1 -1
- package/registry/default/examples/autocomplete-async.tsx +1 -1
- package/registry/default/examples/avatar-badge-icons.tsx +5 -5
- package/registry/default/examples/avatar-empty-collaborators.tsx +1 -1
- package/registry/default/examples/avatar-loading.tsx +2 -2
- package/registry/default/examples/avatar-menu.tsx +6 -6
- package/registry/default/examples/badge-release-status.tsx +1 -1
- package/registry/default/examples/badge-with-icon.tsx +1 -1
- package/registry/default/examples/breadcrumb-buttons.tsx +5 -5
- package/registry/default/examples/breadcrumb-card.tsx +1 -1
- package/registry/default/examples/breadcrumb-workspace-path.tsx +1 -1
- package/registry/default/examples/button-command-bar.tsx +1 -1
- package/registry/default/examples/button-default-icons.tsx +1 -1
- package/registry/default/examples/button-demo.tsx +1 -1
- package/registry/default/examples/button-destructive-icons.tsx +1 -1
- package/registry/default/examples/button-destructive-outline-icons.tsx +1 -1
- package/registry/default/examples/button-ghost-icons.tsx +1 -1
- package/registry/default/examples/button-icon-lg.tsx +1 -1
- package/registry/default/examples/button-icon-sm.tsx +1 -1
- package/registry/default/examples/button-icon.tsx +1 -1
- package/registry/default/examples/button-link-icons.tsx +1 -1
- package/registry/default/examples/button-loading.tsx +1 -1
- package/registry/default/examples/button-outline-icons.tsx +1 -1
- package/registry/default/examples/button-secondary-icons.tsx +1 -1
- package/registry/default/examples/button-theme-toggle.tsx +1 -1
- package/registry/default/examples/button-with-icon.tsx +1 -1
- package/registry/default/examples/card-help-link.tsx +1 -1
- package/registry/default/examples/card-help-menu.tsx +7 -7
- package/registry/default/examples/card-image-centered.tsx +1 -1
- package/registry/default/examples/card-image-feature.tsx +1 -1
- package/registry/default/examples/card-metric-actions.tsx +9 -9
- package/registry/default/examples/card-metric-summary.tsx +1 -1
- package/registry/default/examples/card-resource-link.tsx +1 -1
- package/registry/default/examples/card-usage-expandable.tsx +1 -1
- package/registry/default/examples/checkbox-notification-row.tsx +1 -1
- package/registry/default/examples/collapsible-demo.tsx +1 -1
- package/registry/default/examples/collapsible-release-notes.tsx +1 -1
- package/registry/default/examples/combobox-with-inner-input.tsx +1 -1
- package/registry/default/examples/empty-demo.tsx +1 -1
- package/registry/default/examples/empty-filtered-results.tsx +1 -1
- package/registry/default/examples/empty-inbox-zero.tsx +1 -1
- package/registry/default/examples/empty-upload-queue.tsx +1 -1
- package/registry/default/examples/form.tsx +7 -7
- package/registry/default/examples/group-demo.tsx +1 -1
- package/registry/default/examples/group-toolbar-actions.tsx +1 -1
- package/registry/default/examples/group-with-input.tsx +1 -1
- package/registry/default/examples/input-search-inline.tsx +1 -1
- package/registry/default/examples/menu-demo.tsx +6 -6
- package/registry/default/examples/menu-project-actions.tsx +1 -1
- package/registry/default/examples/popover-with-close.tsx +1 -1
- package/registry/default/examples/preview-card-demo.tsx +1 -1
- package/registry/default/examples/preview-card-repository.tsx +1 -1
- package/registry/default/examples/skeleton-demo.tsx +1 -1
- package/registry/default/examples/switch-privacy-mode.tsx +1 -1
- package/registry/default/examples/table.tsx +1 -1
- package/registry/default/examples/toggle-group-demo.tsx +1 -1
- package/registry/default/examples/toggle-group-disabled.tsx +1 -1
- package/registry/default/examples/toggle-group-lg.tsx +1 -1
- package/registry/default/examples/toggle-group-multiple.tsx +1 -1
- package/registry/default/examples/toggle-group-outline-with-separator.tsx +1 -1
- package/registry/default/examples/toggle-group-outline.tsx +1 -1
- package/registry/default/examples/toggle-group-sm.tsx +1 -1
- package/registry/default/examples/toggle-group-with-disabled-item.tsx +1 -1
- package/registry/default/examples/toggle-icon-group.tsx +1 -1
- package/registry/default/examples/toggle-view-mode.tsx +1 -1
- package/registry/default/examples/toggle-with-icon.tsx +1 -1
- package/registry/default/examples/toolbar-canvas-controls.tsx +1 -1
- package/registry/default/examples/toolbar-demo.tsx +6 -6
- package/registry/default/examples/toolbar-density-controls.tsx +1 -1
- package/registry/default/examples/toolbar-media-controls.tsx +1 -1
- package/registry/default/examples/tooltip-grouped.tsx +1 -1
- package/registry/default/examples/tooltip-icon-row.tsx +1 -1
- package/registry/default/icons/package.json +1 -1
- package/registry/default/icons/scripts/generate-registry.ts +5 -5
- package/registry/default/logos/package.json +1 -1
- package/registry/default/logos/scripts/generate-registry.ts +5 -5
- package/registry/default/logos/src/generated/ai/index.tsx +3 -3
- package/registry/default/logos/src/generated/index.tsx +4 -4
- package/registry/default/ui/accordion.tsx +1 -1
- package/registry/default/ui/autocomplete.tsx +1 -1
- package/registry/default/ui/breadcrumb.tsx +1 -1
- package/registry/default/ui/combobox.tsx +1 -1
- package/registry/default/ui/dialog.tsx +1 -1
- package/registry/default/ui/dropdown-menu.tsx +1 -1
- package/registry/default/ui/menu.tsx +1 -1
- package/registry/default/ui/number-field.tsx +1 -1
- package/registry/default/ui/pagination.tsx +4 -4
- package/registry/default/ui/select.tsx +4 -4
- package/registry/default/ui/sheet.tsx +1 -1
- package/registry/default/ui/sidebar.tsx +1 -1
- package/registry/default/ui/toast.tsx +6 -6
- package/registry/default/vectors/package.json +1 -1
- package/registry/default/vectors/scripts/generate-registry.ts +5 -5
- package/registry/default/blocks/auth1/components/icons/github-icon.tsx +0 -10
- package/registry/default/blocks/auth1/components/icons/google-icon.tsx +0 -14
- package/registry/default/blocks/auth2/components/icons/github-icon.tsx +0 -10
- package/registry/default/blocks/auth2/components/icons/google-icon.tsx +0 -14
- package/registry/default/blocks/auth3/components/icons/github-icon.tsx +0 -10
- package/registry/default/blocks/auth3/components/icons/google-icon.tsx +0 -14
- package/registry/default/blocks/contact2/components/icons/x-icon.tsx +0 -12
- package/registry/default/blocks/contact3/components/icons/github-icon.tsx +0 -10
- package/registry/default/blocks/contact3/components/icons/x-icon.tsx +0 -12
- package/registry/default/blocks/footer1/components/icons/github-icon.tsx +0 -10
- package/registry/default/blocks/footer1/components/icons/x-icon.tsx +0 -12
- package/registry/default/blocks/footer2/components/icons/github-icon.tsx +0 -10
- package/registry/default/blocks/footer2/components/icons/instagram-icon.tsx +0 -12
- package/registry/default/blocks/footer2/components/icons/x-icon.tsx +0 -12
- package/registry/default/blocks/footer3/components/icons/github-icon.tsx +0 -10
- package/registry/default/blocks/footer3/components/icons/instagram-icon.tsx +0 -12
- package/registry/default/blocks/footer3/components/icons/linkedin-icon.tsx +0 -12
- package/registry/default/blocks/footer3/components/icons/x-icon.tsx +0 -12
- package/registry/default/blocks/footer4/components/icons/github-icon.tsx +0 -10
- package/registry/default/blocks/footer4/components/icons/instagram-icon.tsx +0 -12
- package/registry/default/blocks/footer4/components/icons/linkedin-icon.tsx +0 -12
- package/registry/default/blocks/footer4/components/icons/x-icon.tsx +0 -12
- package/registry/default/blocks/footer5/components/icons/apple-icon.tsx +0 -18
- package/registry/default/blocks/footer5/components/icons/facebook-icon.tsx +0 -12
- package/registry/default/blocks/footer5/components/icons/google-play-icon.tsx +0 -10
- package/registry/default/blocks/footer5/components/icons/instagram-icon.tsx +0 -12
- package/registry/default/blocks/footer5/components/icons/linkedin-icon.tsx +0 -12
- package/registry/default/blocks/footer5/components/icons/x-icon.tsx +0 -12
- package/registry/default/blocks/footer6/components/icons/apple-icon.tsx +0 -18
- package/registry/default/blocks/footer6/components/icons/facebook-icon.tsx +0 -12
- package/registry/default/blocks/footer6/components/icons/github-icon.tsx +0 -10
- package/registry/default/blocks/footer6/components/icons/google-play-icon.tsx +0 -10
- package/registry/default/blocks/footer6/components/icons/instagram-icon.tsx +0 -12
- package/registry/default/blocks/footer6/components/icons/linkedin-icon.tsx +0 -12
- package/registry/default/blocks/footer6/components/icons/x-icon.tsx +0 -12
- package/registry/default/blocks/hero1/components/logos/claude-wordmark.svg +0 -1
- package/registry/default/blocks/hero1/components/logos/clerk-wordmark.svg +0 -1
- package/registry/default/blocks/hero1/components/logos/github-wordmark.svg +0 -6
- package/registry/default/blocks/hero1/components/logos/nvidia-wordmark.svg +0 -1
- package/registry/default/blocks/hero1/components/logos/openai-wordmark.svg +0 -1
- package/registry/default/blocks/hero1/components/logos/supabase-wordmark.svg +0 -23
- package/registry/default/blocks/hero1/components/logos/turso-wordmark.svg +0 -1
- package/registry/default/blocks/hero1/components/logos/vercel-wordmark.svg +0 -1
- package/registry/default/blocks/hero2/components/logos/claude-wordmark.svg +0 -1
- package/registry/default/blocks/hero2/components/logos/clerk-wordmark.svg +0 -1
- package/registry/default/blocks/hero2/components/logos/github-wordmark.svg +0 -6
- package/registry/default/blocks/hero2/components/logos/nvidia-wordmark.svg +0 -1
- package/registry/default/blocks/hero2/components/logos/openai-wordmark.svg +0 -1
- package/registry/default/blocks/hero2/components/logos/supabase-wordmark.svg +0 -23
- package/registry/default/blocks/hero2/components/logos/turso-wordmark.svg +0 -1
- package/registry/default/blocks/hero2/components/logos/vercel-wordmark.svg +0 -1
- package/registry/default/blocks/hero3/components/logos/claude-wordmark.svg +0 -1
- package/registry/default/blocks/hero3/components/logos/clerk-wordmark.svg +0 -1
- package/registry/default/blocks/hero3/components/logos/github-wordmark.svg +0 -6
- package/registry/default/blocks/hero3/components/logos/nvidia-wordmark.svg +0 -1
- package/registry/default/blocks/hero3/components/logos/openai-wordmark.svg +0 -1
- package/registry/default/blocks/hero3/components/logos/supabase-wordmark.svg +0 -23
- package/registry/default/blocks/hero3/components/logos/turso-wordmark.svg +0 -1
- package/registry/default/blocks/hero3/components/logos/vercel-wordmark.svg +0 -1
- package/registry/default/blocks/integrations1/components/logos/adobe.svg +0 -1
- package/registry/default/blocks/integrations1/components/logos/canva.svg +0 -1
- package/registry/default/blocks/integrations1/components/logos/cursor.svg +0 -1
- package/registry/default/blocks/integrations1/components/logos/gmail.svg +0 -1
- package/registry/default/blocks/integrations1/components/logos/notion.svg +0 -1
- package/registry/default/blocks/integrations1/components/logos/planetscale.svg +0 -1
- package/registry/default/blocks/integrations1/components/logos/polar.svg +0 -1
- package/registry/default/blocks/integrations1/components/logos/supabase.svg +0 -1
- package/registry/default/blocks/integrations1/components/logos/vercel.svg +0 -1
- package/registry/default/blocks/integrations2/components/logos/adobe.svg +0 -1
- package/registry/default/blocks/integrations2/components/logos/canva.svg +0 -1
- package/registry/default/blocks/integrations2/components/logos/cursor.svg +0 -1
- package/registry/default/blocks/integrations2/components/logos/gmail.svg +0 -1
- package/registry/default/blocks/integrations2/components/logos/notion.svg +0 -1
- package/registry/default/blocks/integrations2/components/logos/planetscale.svg +0 -1
- package/registry/default/blocks/integrations2/components/logos/polar.svg +0 -1
- package/registry/default/blocks/integrations2/components/logos/supabase.svg +0 -1
- package/registry/default/blocks/integrations2/components/logos/vercel.svg +0 -1
- package/registry/default/blocks/integrations3/components/logos/adobe.svg +0 -1
- package/registry/default/blocks/integrations3/components/logos/canva.svg +0 -1
- package/registry/default/blocks/integrations3/components/logos/cursor.svg +0 -1
- package/registry/default/blocks/integrations3/components/logos/gmail.svg +0 -1
- package/registry/default/blocks/integrations3/components/logos/notion.svg +0 -1
- package/registry/default/blocks/integrations3/components/logos/planetscale.svg +0 -1
- package/registry/default/blocks/integrations3/components/logos/polar.svg +0 -1
- package/registry/default/blocks/integrations3/components/logos/supabase.svg +0 -1
- package/registry/default/blocks/integrations3/components/logos/vercel.svg +0 -1
- package/registry/default/blocks/integrations4/components/logos/adobe.svg +0 -1
- package/registry/default/blocks/integrations4/components/logos/canva.svg +0 -1
- package/registry/default/blocks/integrations4/components/logos/cursor.svg +0 -1
- package/registry/default/blocks/integrations4/components/logos/gmail.svg +0 -1
- package/registry/default/blocks/integrations4/components/logos/notion.svg +0 -1
- package/registry/default/blocks/integrations4/components/logos/planetscale.svg +0 -1
- package/registry/default/blocks/integrations4/components/logos/polar.svg +0 -1
- package/registry/default/blocks/integrations4/components/logos/supabase.svg +0 -1
- package/registry/default/blocks/integrations4/components/logos/vercel.svg +0 -1
- package/registry/default/blocks/integrations5/components/logos/adobe.svg +0 -1
- package/registry/default/blocks/integrations5/components/logos/canva.svg +0 -1
- package/registry/default/blocks/integrations5/components/logos/cursor.svg +0 -1
- package/registry/default/blocks/integrations5/components/logos/gmail.svg +0 -1
- package/registry/default/blocks/integrations5/components/logos/notion.svg +0 -1
- package/registry/default/blocks/integrations5/components/logos/planetscale.svg +0 -1
- package/registry/default/blocks/integrations5/components/logos/polar.svg +0 -1
- package/registry/default/blocks/integrations5/components/logos/supabase.svg +0 -1
- package/registry/default/blocks/integrations5/components/logos/vercel.svg +0 -1
- package/registry/default/blocks/logo-cloud-1/components/logos/claude-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-1/components/logos/clerk-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-1/components/logos/github-wordmark.svg +0 -6
- package/registry/default/blocks/logo-cloud-1/components/logos/nvidia-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-1/components/logos/openai-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-1/components/logos/supabase-wordmark.svg +0 -23
- package/registry/default/blocks/logo-cloud-1/components/logos/turso-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-1/components/logos/vercel-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-2/components/logos/claude-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-2/components/logos/clerk-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-2/components/logos/github-wordmark.svg +0 -6
- package/registry/default/blocks/logo-cloud-2/components/logos/nvidia-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-2/components/logos/openai-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-2/components/logos/supabase-wordmark.svg +0 -23
- package/registry/default/blocks/logo-cloud-2/components/logos/turso-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-2/components/logos/vercel-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-3/components/logos/claude-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-3/components/logos/clerk-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-3/components/logos/github-wordmark.svg +0 -6
- package/registry/default/blocks/logo-cloud-3/components/logos/nvidia-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-3/components/logos/openai-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-3/components/logos/supabase-wordmark.svg +0 -23
- package/registry/default/blocks/logo-cloud-3/components/logos/turso-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-3/components/logos/vercel-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-4/components/logos/claude-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-4/components/logos/clerk-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-4/components/logos/github-wordmark.svg +0 -6
- package/registry/default/blocks/logo-cloud-4/components/logos/nvidia-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-4/components/logos/openai-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-4/components/logos/supabase-wordmark.svg +0 -23
- package/registry/default/blocks/logo-cloud-4/components/logos/turso-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-4/components/logos/vercel-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-5/components/logos/claude-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-5/components/logos/clerk-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-5/components/logos/github-wordmark.svg +0 -6
- package/registry/default/blocks/logo-cloud-5/components/logos/nvidia-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-5/components/logos/openai-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-5/components/logos/supabase-wordmark.svg +0 -23
- package/registry/default/blocks/logo-cloud-5/components/logos/turso-wordmark.svg +0 -1
- package/registry/default/blocks/logo-cloud-5/components/logos/vercel-wordmark.svg +0 -1
|
@@ -1,70 +1,55 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import type { ElementType, SVGProps } from "react";
|
|
2
|
+
import {
|
|
3
|
+
ClaudeAIWordmark as ClaudeLogo,
|
|
4
|
+
ClerkWordmark as ClerkLogo,
|
|
5
|
+
GithubWordmark as GithubLogo,
|
|
6
|
+
IBMWordmark as IBMLogo,
|
|
7
|
+
NextjsWordmark as NextjsLogo,
|
|
8
|
+
OpenAIWordmark as OpenAILogo,
|
|
9
|
+
ResendWordmark as ResendLogo,
|
|
10
|
+
VercelWordmark as VercelLogo,
|
|
11
|
+
} from "love-ui/logos";
|
|
9
12
|
|
|
10
|
-
type
|
|
13
|
+
type LogoComponent = ElementType<SVGProps<SVGSVGElement>>;
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
type Logo = {
|
|
16
|
+
Component: LogoComponent;
|
|
17
|
+
alt: string;
|
|
18
|
+
className?: string;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
function LogoAsset({ logo, className }: { logo: Logo; className: string }) {
|
|
22
|
+
const Component = logo.Component;
|
|
23
|
+
const logoClassName = [className, logo.className].filter(Boolean).join(" ");
|
|
24
|
+
|
|
25
|
+
return <Component aria-label={logo.alt} className={logoClassName} role="img" />;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const logos: Logo[] = [
|
|
29
|
+
{ Component: VercelLogo, alt: "Vercel Logo" },
|
|
30
|
+
{ Component: NextjsLogo, alt: "Next.js Logo" },
|
|
31
|
+
{ Component: OpenAILogo, alt: "OpenAI Logo" },
|
|
32
|
+
{ Component: ResendLogo, alt: "Resend Logo" },
|
|
33
|
+
{ Component: GithubLogo, alt: "GitHub Logo" },
|
|
34
|
+
{ Component: ClaudeLogo, alt: "Claude AI Logo" },
|
|
35
|
+
{ Component: IBMLogo, alt: "IBM Logo" },
|
|
36
|
+
{ Component: ClerkLogo, alt: "Clerk Logo" },
|
|
37
|
+
];
|
|
14
38
|
|
|
15
39
|
export function LogoCloud() {
|
|
16
40
|
return (
|
|
17
41
|
<div className="grid grid-cols-2 rounded-lg bg-border shadow md:grid-cols-4">
|
|
18
42
|
{logos.map((logo) => (
|
|
19
43
|
<div
|
|
20
|
-
className="flex items-center justify-center rounded-lg border bg-background p-
|
|
44
|
+
className="flex min-h-28 items-center justify-center rounded-lg border bg-background p-6"
|
|
21
45
|
key={logo.alt}
|
|
22
46
|
>
|
|
23
|
-
<
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
height="auto"
|
|
27
|
-
loading="lazy"
|
|
28
|
-
src={getLogoSrc(logo.src)}
|
|
29
|
-
width="auto"
|
|
47
|
+
<LogoAsset
|
|
48
|
+
className="pointer-events-none h-9 w-36 select-none text-foreground md:h-11 md:w-44"
|
|
49
|
+
logo={logo}
|
|
30
50
|
/>
|
|
31
51
|
</div>
|
|
32
52
|
))}
|
|
33
53
|
</div>
|
|
34
54
|
);
|
|
35
55
|
}
|
|
36
|
-
|
|
37
|
-
const logos = [
|
|
38
|
-
{
|
|
39
|
-
src: NvidiaLogo,
|
|
40
|
-
alt: "Nvidia Logo",
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
src: SupabaseLogo,
|
|
44
|
-
alt: "Supabase Logo",
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
src: OpenAILogo,
|
|
48
|
-
alt: "OpenAI Logo",
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
src: TursoLogo,
|
|
52
|
-
alt: "Turso Logo",
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
src: VercelLogo,
|
|
56
|
-
alt: "Vercel Logo",
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
src: GithubLogo,
|
|
60
|
-
alt: "GitHub Logo",
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
src: ClaudeLogo,
|
|
64
|
-
alt: "Claude AI Logo",
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
src: ClerkLogo,
|
|
68
|
-
alt: "Clerk Logo",
|
|
69
|
-
},
|
|
70
|
-
];
|
|
@@ -1,49 +1,56 @@
|
|
|
1
|
+
import type { ElementType, SVGProps } from "react";
|
|
2
|
+
import {
|
|
3
|
+
ClaudeAIWordmark as ClaudeLogo,
|
|
4
|
+
ClerkWordmark as ClerkLogo,
|
|
5
|
+
GithubWordmark as GithubLogo,
|
|
6
|
+
IBMWordmark as IBMLogo,
|
|
7
|
+
NextjsWordmark as NextjsLogo,
|
|
8
|
+
OpenAIWordmark as OpenAILogo,
|
|
9
|
+
ResendWordmark as ResendLogo,
|
|
10
|
+
VercelWordmark as VercelLogo,
|
|
11
|
+
} from "love-ui/logos";
|
|
12
|
+
|
|
1
13
|
import { cn } from "@/lib/utils";
|
|
2
14
|
import { DecorIcon } from "./decor-icon";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import GithubLogo from "./logos/github-wordmark.svg";
|
|
6
|
-
import NvidiaLogo from "./logos/nvidia-wordmark.svg";
|
|
7
|
-
import OpenAILogo from "./logos/openai-wordmark.svg";
|
|
8
|
-
import SupabaseLogo from "./logos/supabase-wordmark.svg";
|
|
9
|
-
import TursoLogo from "./logos/turso-wordmark.svg";
|
|
10
|
-
import VercelLogo from "./logos/vercel-wordmark.svg";
|
|
15
|
+
|
|
16
|
+
type LogoComponent = ElementType<SVGProps<SVGSVGElement>>;
|
|
11
17
|
|
|
12
18
|
type Logo = {
|
|
13
|
-
|
|
19
|
+
Component: LogoComponent;
|
|
14
20
|
alt: string;
|
|
21
|
+
className?: string;
|
|
15
22
|
};
|
|
16
23
|
|
|
17
|
-
|
|
18
|
-
|
|
24
|
+
function LogoAsset({ logo, className }: { logo: Logo; className: string }) {
|
|
25
|
+
const Component = logo.Component;
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<Component
|
|
29
|
+
aria-label={logo.alt}
|
|
30
|
+
className={cn(className, logo.className)}
|
|
31
|
+
role="img"
|
|
32
|
+
/>
|
|
33
|
+
);
|
|
34
|
+
}
|
|
19
35
|
|
|
20
36
|
export function LogoCloud() {
|
|
21
37
|
return (
|
|
22
38
|
<div className="grid grid-cols-2 border md:grid-cols-4">
|
|
23
39
|
<LogoCard
|
|
24
40
|
className="relative border-r border-b bg-secondary dark:bg-secondary/30"
|
|
25
|
-
logo={{
|
|
26
|
-
src: NvidiaLogo,
|
|
27
|
-
alt: "Nvidia Logo",
|
|
28
|
-
}}
|
|
41
|
+
logo={{ Component: NextjsLogo, alt: "Next.js Logo" }}
|
|
29
42
|
>
|
|
30
43
|
<DecorIcon className="z-10" position="bottom-right" />
|
|
31
44
|
</LogoCard>
|
|
32
45
|
|
|
33
46
|
<LogoCard
|
|
34
47
|
className="border-b md:border-r"
|
|
35
|
-
logo={{
|
|
36
|
-
src: SupabaseLogo,
|
|
37
|
-
alt: "Supabase Logo",
|
|
38
|
-
}}
|
|
48
|
+
logo={{ Component: ResendLogo, alt: "Resend Logo" }}
|
|
39
49
|
/>
|
|
40
50
|
|
|
41
51
|
<LogoCard
|
|
42
52
|
className="relative border-r border-b md:bg-secondary dark:md:bg-secondary/30"
|
|
43
|
-
logo={{
|
|
44
|
-
src: GithubLogo,
|
|
45
|
-
alt: "GitHub Logo",
|
|
46
|
-
}}
|
|
53
|
+
logo={{ Component: GithubLogo, alt: "GitHub Logo" }}
|
|
47
54
|
>
|
|
48
55
|
<DecorIcon className="z-10" position="bottom-right" />
|
|
49
56
|
<DecorIcon className="z-10 hidden md:block" position="bottom-left" />
|
|
@@ -51,44 +58,29 @@ export function LogoCloud() {
|
|
|
51
58
|
|
|
52
59
|
<LogoCard
|
|
53
60
|
className="relative border-b bg-secondary md:bg-background dark:bg-secondary/30 md:dark:bg-background"
|
|
54
|
-
logo={{
|
|
55
|
-
src: OpenAILogo,
|
|
56
|
-
alt: "OpenAI Logo",
|
|
57
|
-
}}
|
|
61
|
+
logo={{ Component: OpenAILogo, alt: "OpenAI Logo" }}
|
|
58
62
|
/>
|
|
59
63
|
|
|
60
64
|
<LogoCard
|
|
61
65
|
className="relative border-r border-b bg-secondary md:border-b-0 md:bg-background dark:bg-secondary/30 md:dark:bg-background"
|
|
62
|
-
logo={{
|
|
63
|
-
src: TursoLogo,
|
|
64
|
-
alt: "Turso Logo",
|
|
65
|
-
}}
|
|
66
|
+
logo={{ Component: IBMLogo, alt: "IBM Logo" }}
|
|
66
67
|
>
|
|
67
68
|
<DecorIcon className="z-10 md:hidden" position="bottom-right" />
|
|
68
69
|
</LogoCard>
|
|
69
70
|
|
|
70
71
|
<LogoCard
|
|
71
72
|
className="border-b bg-background md:border-r md:border-b-0 md:bg-secondary dark:md:bg-secondary/30"
|
|
72
|
-
logo={{
|
|
73
|
-
src: ClerkLogo,
|
|
74
|
-
alt: "Clerk Logo",
|
|
75
|
-
}}
|
|
73
|
+
logo={{ Component: ClerkLogo, alt: "Clerk Logo" }}
|
|
76
74
|
/>
|
|
77
75
|
|
|
78
76
|
<LogoCard
|
|
79
77
|
className="border-r"
|
|
80
|
-
logo={{
|
|
81
|
-
src: ClaudeLogo,
|
|
82
|
-
alt: "Claude AI Logo",
|
|
83
|
-
}}
|
|
78
|
+
logo={{ Component: ClaudeLogo, alt: "Claude AI Logo" }}
|
|
84
79
|
/>
|
|
85
80
|
|
|
86
81
|
<LogoCard
|
|
87
82
|
className="bg-secondary dark:bg-secondary/30"
|
|
88
|
-
logo={{
|
|
89
|
-
src: VercelLogo,
|
|
90
|
-
alt: "Vercel Logo",
|
|
91
|
-
}}
|
|
83
|
+
logo={{ Component: VercelLogo, alt: "Vercel Logo" }}
|
|
92
84
|
/>
|
|
93
85
|
</div>
|
|
94
86
|
);
|
|
@@ -102,17 +94,14 @@ function LogoCard({ logo, className, children, ...props }: LogoCardProps) {
|
|
|
102
94
|
return (
|
|
103
95
|
<div
|
|
104
96
|
className={cn(
|
|
105
|
-
"flex items-center justify-center bg-background px-4 py-8 md:p-8",
|
|
97
|
+
"flex min-h-28 items-center justify-center bg-background px-4 py-8 md:p-8",
|
|
106
98
|
className
|
|
107
99
|
)}
|
|
108
100
|
{...props}
|
|
109
101
|
>
|
|
110
|
-
<
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
height="auto"
|
|
114
|
-
src={getLogoSrc(logo.src)}
|
|
115
|
-
width="auto"
|
|
102
|
+
<LogoAsset
|
|
103
|
+
className="pointer-events-none h-9 w-36 select-none text-foreground md:h-11 md:w-44"
|
|
104
|
+
logo={logo}
|
|
116
105
|
/>
|
|
117
106
|
{children}
|
|
118
107
|
</div>
|
|
@@ -1,69 +1,54 @@
|
|
|
1
1
|
import { InfiniteSlider } from "./infinite-slider";
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
import type { ElementType, SVGProps } from "react";
|
|
3
|
+
import {
|
|
4
|
+
ClaudeAIWordmark as ClaudeLogo,
|
|
5
|
+
ClerkWordmark as ClerkLogo,
|
|
6
|
+
GithubWordmark as GithubLogo,
|
|
7
|
+
IBMWordmark as IBMLogo,
|
|
8
|
+
NextjsWordmark as NextjsLogo,
|
|
9
|
+
OpenAIWordmark as OpenAILogo,
|
|
10
|
+
ResendWordmark as ResendLogo,
|
|
11
|
+
VercelWordmark as VercelLogo,
|
|
12
|
+
} from "love-ui/logos";
|
|
10
13
|
|
|
11
|
-
type
|
|
14
|
+
type LogoComponent = ElementType<SVGProps<SVGSVGElement>>;
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
type Logo = {
|
|
17
|
+
Component: LogoComponent;
|
|
18
|
+
alt: string;
|
|
19
|
+
className?: string;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
function LogoAsset({ logo, className }: { logo: Logo; className: string }) {
|
|
23
|
+
const Component = logo.Component;
|
|
24
|
+
const logoClassName = [className, logo.className].filter(Boolean).join(" ");
|
|
25
|
+
|
|
26
|
+
return <Component aria-label={logo.alt} className={logoClassName} role="img" />;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const logos: Logo[] = [
|
|
30
|
+
{ Component: VercelLogo, alt: "Vercel Logo" },
|
|
31
|
+
{ Component: NextjsLogo, alt: "Next.js Logo" },
|
|
32
|
+
{ Component: OpenAILogo, alt: "OpenAI Logo" },
|
|
33
|
+
{ Component: ResendLogo, alt: "Resend Logo" },
|
|
34
|
+
{ Component: GithubLogo, alt: "GitHub Logo" },
|
|
35
|
+
{ Component: ClaudeLogo, alt: "Claude AI Logo" },
|
|
36
|
+
{ Component: IBMLogo, alt: "IBM Logo" },
|
|
37
|
+
{ Component: ClerkLogo, alt: "Clerk Logo" },
|
|
38
|
+
];
|
|
15
39
|
|
|
16
40
|
export function LogoCloud() {
|
|
17
41
|
return (
|
|
18
|
-
<div className="mask-[linear-gradient(to_right,transparent,black,transparent)] overflow-hidden py-
|
|
19
|
-
<InfiniteSlider gap={
|
|
42
|
+
<div className="mask-[linear-gradient(to_right,transparent,black,transparent)] overflow-hidden py-5">
|
|
43
|
+
<InfiniteSlider gap={56} reverse speed={80} speedOnHover={25}>
|
|
20
44
|
{logos.map((logo) => (
|
|
21
|
-
<
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
key={`logo-${logo.alt}`}
|
|
26
|
-
loading="lazy"
|
|
27
|
-
src={getLogoSrc(logo.src)}
|
|
28
|
-
width="auto"
|
|
45
|
+
<LogoAsset
|
|
46
|
+
className="pointer-events-none h-9 w-36 select-none text-foreground md:h-10 md:w-40"
|
|
47
|
+
key={logo.alt}
|
|
48
|
+
logo={logo}
|
|
29
49
|
/>
|
|
30
50
|
))}
|
|
31
51
|
</InfiniteSlider>
|
|
32
52
|
</div>
|
|
33
53
|
);
|
|
34
54
|
}
|
|
35
|
-
|
|
36
|
-
const logos = [
|
|
37
|
-
{
|
|
38
|
-
src: NvidiaLogo,
|
|
39
|
-
alt: "Nvidia Logo",
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
src: SupabaseLogo,
|
|
43
|
-
alt: "Supabase Logo",
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
src: OpenAILogo,
|
|
47
|
-
alt: "OpenAI Logo",
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
src: TursoLogo,
|
|
51
|
-
alt: "Turso Logo",
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
src: VercelLogo,
|
|
55
|
-
alt: "Vercel Logo",
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
src: GithubLogo,
|
|
59
|
-
alt: "GitHub Logo",
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
src: ClaudeLogo,
|
|
63
|
-
alt: "Claude AI Logo",
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
src: ClerkLogo,
|
|
67
|
-
alt: "Clerk Logo",
|
|
68
|
-
},
|
|
69
|
-
];
|
|
@@ -2,33 +2,53 @@
|
|
|
2
2
|
import { InfiniteSlider } from "./infinite-slider";
|
|
3
3
|
// https://motion-primitives.com/docs/progressive-blur
|
|
4
4
|
import { ProgressiveBlur } from "./progressive-blur";
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
import type { ElementType, SVGProps } from "react";
|
|
6
|
+
import {
|
|
7
|
+
ClaudeAIWordmark as ClaudeLogo,
|
|
8
|
+
ClerkWordmark as ClerkLogo,
|
|
9
|
+
GithubWordmark as GithubLogo,
|
|
10
|
+
IBMWordmark as IBMLogo,
|
|
11
|
+
NextjsWordmark as NextjsLogo,
|
|
12
|
+
OpenAIWordmark as OpenAILogo,
|
|
13
|
+
ResendWordmark as ResendLogo,
|
|
14
|
+
VercelWordmark as VercelLogo,
|
|
15
|
+
} from "love-ui/logos";
|
|
13
16
|
|
|
14
|
-
type
|
|
17
|
+
type LogoComponent = ElementType<SVGProps<SVGSVGElement>>;
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
type Logo = {
|
|
20
|
+
Component: LogoComponent;
|
|
21
|
+
alt: string;
|
|
22
|
+
className?: string;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
function LogoAsset({ logo, className }: { logo: Logo; className: string }) {
|
|
26
|
+
const Component = logo.Component;
|
|
27
|
+
const logoClassName = [className, logo.className].filter(Boolean).join(" ");
|
|
28
|
+
|
|
29
|
+
return <Component aria-label={logo.alt} className={logoClassName} role="img" />;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const logos: Logo[] = [
|
|
33
|
+
{ Component: VercelLogo, alt: "Vercel Logo" },
|
|
34
|
+
{ Component: NextjsLogo, alt: "Next.js Logo" },
|
|
35
|
+
{ Component: OpenAILogo, alt: "OpenAI Logo" },
|
|
36
|
+
{ Component: ResendLogo, alt: "Resend Logo" },
|
|
37
|
+
{ Component: GithubLogo, alt: "GitHub Logo" },
|
|
38
|
+
{ Component: ClaudeLogo, alt: "Claude AI Logo" },
|
|
39
|
+
{ Component: IBMLogo, alt: "IBM Logo" },
|
|
40
|
+
{ Component: ClerkLogo, alt: "Clerk Logo" },
|
|
41
|
+
];
|
|
18
42
|
|
|
19
43
|
export function LogoCloud() {
|
|
20
44
|
return (
|
|
21
|
-
<div className="relative border-x border-y bg-linear-to-r from-secondary via-transparent to-secondary py-
|
|
22
|
-
<InfiniteSlider gap={
|
|
45
|
+
<div className="relative border-x border-y bg-linear-to-r from-secondary via-transparent to-secondary py-7">
|
|
46
|
+
<InfiniteSlider gap={56} reverse speed={60} speedOnHover={20}>
|
|
23
47
|
{logos.map((logo) => (
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
key={`logo-${logo.alt}`}
|
|
29
|
-
loading="lazy"
|
|
30
|
-
src={getLogoSrc(logo.src)}
|
|
31
|
-
width="auto"
|
|
48
|
+
<LogoAsset
|
|
49
|
+
className="pointer-events-none h-9 w-36 select-none text-foreground md:h-10 md:w-40"
|
|
50
|
+
key={logo.alt}
|
|
51
|
+
logo={logo}
|
|
32
52
|
/>
|
|
33
53
|
))}
|
|
34
54
|
</InfiniteSlider>
|
|
@@ -46,38 +66,3 @@ export function LogoCloud() {
|
|
|
46
66
|
</div>
|
|
47
67
|
);
|
|
48
68
|
}
|
|
49
|
-
|
|
50
|
-
const logos = [
|
|
51
|
-
{
|
|
52
|
-
src: NvidiaLogo,
|
|
53
|
-
alt: "Nvidia Logo",
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
src: SupabaseLogo,
|
|
57
|
-
alt: "Supabase Logo",
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
src: OpenAILogo,
|
|
61
|
-
alt: "OpenAI Logo",
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
src: TursoLogo,
|
|
65
|
-
alt: "Turso Logo",
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
src: VercelLogo,
|
|
69
|
-
alt: "Vercel Logo",
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
src: GithubLogo,
|
|
73
|
-
alt: "GitHub Logo",
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
src: ClaudeLogo,
|
|
77
|
-
alt: "Claude AI Logo",
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
src: ClerkLogo,
|
|
81
|
-
alt: "Clerk Logo",
|
|
82
|
-
},
|
|
83
|
-
];
|
|
@@ -1,67 +1,51 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import type { ElementType, SVGProps } from "react";
|
|
2
|
+
import {
|
|
3
|
+
ClaudeAIWordmark as ClaudeLogo,
|
|
4
|
+
ClerkWordmark as ClerkLogo,
|
|
5
|
+
GithubWordmark as GithubLogo,
|
|
6
|
+
IBMWordmark as IBMLogo,
|
|
7
|
+
NextjsWordmark as NextjsLogo,
|
|
8
|
+
OpenAIWordmark as OpenAILogo,
|
|
9
|
+
ResendWordmark as ResendLogo,
|
|
10
|
+
VercelWordmark as VercelLogo,
|
|
11
|
+
} from "love-ui/logos";
|
|
9
12
|
|
|
10
|
-
type
|
|
13
|
+
type LogoComponent = ElementType<SVGProps<SVGSVGElement>>;
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
type Logo = {
|
|
16
|
+
Component: LogoComponent;
|
|
17
|
+
alt: string;
|
|
18
|
+
className?: string;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
function LogoAsset({ logo, className }: { logo: Logo; className: string }) {
|
|
22
|
+
const Component = logo.Component;
|
|
23
|
+
const logoClassName = [className, logo.className].filter(Boolean).join(" ");
|
|
24
|
+
|
|
25
|
+
return <Component aria-label={logo.alt} className={logoClassName} role="img" />;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const logos: Logo[] = [
|
|
29
|
+
{ Component: VercelLogo, alt: "Vercel Logo" },
|
|
30
|
+
{ Component: NextjsLogo, alt: "Next.js Logo" },
|
|
31
|
+
{ Component: OpenAILogo, alt: "OpenAI Logo" },
|
|
32
|
+
{ Component: ResendLogo, alt: "Resend Logo" },
|
|
33
|
+
{ Component: GithubLogo, alt: "GitHub Logo" },
|
|
34
|
+
{ Component: ClaudeLogo, alt: "Claude AI Logo" },
|
|
35
|
+
{ Component: IBMLogo, alt: "IBM Logo" },
|
|
36
|
+
{ Component: ClerkLogo, alt: "Clerk Logo" },
|
|
37
|
+
];
|
|
14
38
|
|
|
15
39
|
export function LogoCloud() {
|
|
16
40
|
return (
|
|
17
|
-
<div className="relative flex flex-wrap items-center justify-center gap-x-
|
|
41
|
+
<div className="relative flex flex-wrap items-center justify-center gap-x-8 gap-y-8 py-6 sm:gap-x-12 sm:gap-y-10">
|
|
18
42
|
{logos.map((logo) => (
|
|
19
|
-
<
|
|
20
|
-
|
|
21
|
-
className="pointer-events-none h-5 w-fit select-none dark:brightness-0 dark:invert"
|
|
22
|
-
height="auto"
|
|
43
|
+
<LogoAsset
|
|
44
|
+
className="pointer-events-none h-8 w-32 select-none text-foreground sm:h-9 sm:w-36"
|
|
23
45
|
key={logo.alt}
|
|
24
|
-
|
|
25
|
-
src={getLogoSrc(logo.src)}
|
|
26
|
-
width="auto"
|
|
46
|
+
logo={logo}
|
|
27
47
|
/>
|
|
28
48
|
))}
|
|
29
49
|
</div>
|
|
30
50
|
);
|
|
31
51
|
}
|
|
32
|
-
|
|
33
|
-
const logos = [
|
|
34
|
-
{
|
|
35
|
-
src: VercelLogo,
|
|
36
|
-
alt: "Vercel Logo",
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
src: SupabaseLogo,
|
|
40
|
-
alt: "Supabase Logo",
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
src: OpenAILogo,
|
|
44
|
-
alt: "OpenAI Logo",
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
src: TursoLogo,
|
|
48
|
-
alt: "Turso Logo",
|
|
49
|
-
},
|
|
50
|
-
|
|
51
|
-
{
|
|
52
|
-
src: GithubLogo,
|
|
53
|
-
alt: "GitHub Logo",
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
src: ClaudeLogo,
|
|
57
|
-
alt: "Claude AI Logo",
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
src: NvidiaLogo,
|
|
61
|
-
alt: "Nvidia Logo",
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
src: ClerkLogo,
|
|
65
|
-
alt: "Clerk Logo",
|
|
66
|
-
},
|
|
67
|
-
];
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
-
ArchiveIcon,
|
|
5
|
-
ChevronRightIcon,
|
|
6
|
-
CircleCheckIcon,
|
|
7
|
-
CircleDashedIcon,
|
|
8
|
-
MailIcon,
|
|
9
|
-
MoreHorizontalIcon,
|
|
10
|
-
} from '
|
|
4
|
+
Archive as ArchiveIcon,
|
|
5
|
+
ChevronRight as ChevronRightIcon,
|
|
6
|
+
CircleCheck as CircleCheckIcon,
|
|
7
|
+
CircleDashed as CircleDashedIcon,
|
|
8
|
+
Mail as MailIcon,
|
|
9
|
+
Ellipsis as MoreHorizontalIcon,
|
|
10
|
+
} from 'love-ui/icons';
|
|
11
11
|
import { useState } from 'react';
|
|
12
12
|
import { Button } from '@/registry/default/ui/button';
|
|
13
13
|
import { Collapsible, CollapsibleContent } from '@/registry/default/ui/collapsible';
|
|
@@ -1,21 +1,31 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
-
CircleCheckIcon,
|
|
5
|
-
FolderIcon,
|
|
6
|
-
PlugIcon,
|
|
7
|
-
RocketIcon,
|
|
8
|
-
UsersIcon,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
CircleCheck as CircleCheckIcon,
|
|
5
|
+
Folder as FolderIcon,
|
|
6
|
+
Plug as PlugIcon,
|
|
7
|
+
Rocket as RocketIcon,
|
|
8
|
+
Users as UsersIcon,
|
|
9
|
+
} from 'love-ui/icons';
|
|
10
|
+
import {
|
|
11
|
+
useState,
|
|
12
|
+
type ForwardRefExoticComponent,
|
|
13
|
+
type RefAttributes,
|
|
14
|
+
type SVGProps,
|
|
15
|
+
} from 'react';
|
|
12
16
|
import { Button } from '@/registry/default/ui/button';
|
|
13
17
|
import { cn } from '@/lib/utils';
|
|
14
18
|
|
|
19
|
+
type IconComponent = ForwardRefExoticComponent<
|
|
20
|
+
SVGProps<SVGSVGElement> &
|
|
21
|
+
{ size?: number | string; strokeWidth?: number } &
|
|
22
|
+
RefAttributes<SVGSVGElement>
|
|
23
|
+
>;
|
|
24
|
+
|
|
15
25
|
interface StepData {
|
|
16
26
|
title: string;
|
|
17
27
|
description: string;
|
|
18
|
-
icon:
|
|
28
|
+
icon: IconComponent;
|
|
19
29
|
actionLabel: string;
|
|
20
30
|
}
|
|
21
31
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
-
ChartBarIcon,
|
|
5
|
-
CircleCheckIcon,
|
|
6
|
-
Code2Icon,
|
|
7
|
-
DatabaseIcon,
|
|
8
|
-
SlidersHorizontalIcon,
|
|
9
|
-
} from '
|
|
4
|
+
ChartBar as ChartBarIcon,
|
|
5
|
+
CircleCheck as CircleCheckIcon,
|
|
6
|
+
Code as Code2Icon,
|
|
7
|
+
Database as DatabaseIcon,
|
|
8
|
+
SlidersHorizontal as SlidersHorizontalIcon,
|
|
9
|
+
} from 'love-ui/icons';
|
|
10
10
|
import { useState } from 'react';
|
|
11
11
|
import {
|
|
12
12
|
Accordion,
|