love-ui 1.2.19 → 1.2.21
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-VDMHIXDM.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
|
@@ -3,7 +3,7 @@ import React from "react";
|
|
|
3
3
|
import { Button } from "@/registry/default/ui/button";
|
|
4
4
|
import { Portal, PortalBackdrop } from "./ui/portal";
|
|
5
5
|
import { navLinks } from "./header";
|
|
6
|
-
import { XIcon, MenuIcon } from "
|
|
6
|
+
import { X as XIcon, Menu as MenuIcon } from "love-ui/icons";
|
|
7
7
|
|
|
8
8
|
export function MobileNav() {
|
|
9
9
|
const [open, setOpen] = React.useState(false);
|
|
@@ -2,7 +2,7 @@ import { cn } from "@/lib/utils";
|
|
|
2
2
|
import { Button } from "@/registry/default/ui/button";
|
|
3
3
|
import { DecorIcon } from "./decor-icon";
|
|
4
4
|
import { FullWidthDivider } from "./full-width-divider";
|
|
5
|
-
import { ArrowRightIcon, PhoneCallIcon } from "
|
|
5
|
+
import { ArrowRight as ArrowRightIcon, PhoneCall as PhoneCallIcon } from "love-ui/icons";
|
|
6
6
|
|
|
7
7
|
export function HeroSection() {
|
|
8
8
|
return (
|
|
@@ -1,120 +1,51 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
+
|
|
13
|
+
type LogoComponent = ElementType<SVGProps<SVGSVGElement>>;
|
|
11
14
|
|
|
12
15
|
type Logo = {
|
|
13
|
-
|
|
16
|
+
Component: LogoComponent;
|
|
14
17
|
alt: string;
|
|
18
|
+
className?: string;
|
|
15
19
|
};
|
|
16
20
|
|
|
17
|
-
|
|
18
|
-
|
|
21
|
+
function LogoAsset({ logo, className }: { logo: Logo; className: string }) {
|
|
22
|
+
const Component = logo.Component;
|
|
23
|
+
const logoClassName = [className, logo.className].filter(Boolean).join(" ");
|
|
19
24
|
|
|
20
|
-
|
|
21
|
-
return (
|
|
22
|
-
<div className="grid grid-cols-2 border md:grid-cols-4">
|
|
23
|
-
<LogoCard
|
|
24
|
-
className="relative border-r border-b bg-secondary dark:bg-secondary/30"
|
|
25
|
-
logo={{
|
|
26
|
-
src: NvidiaLogo,
|
|
27
|
-
alt: "Nvidia Logo",
|
|
28
|
-
}}
|
|
29
|
-
>
|
|
30
|
-
<DecorIcon className="z-10" position="bottom-right" />
|
|
31
|
-
</LogoCard>
|
|
32
|
-
|
|
33
|
-
<LogoCard
|
|
34
|
-
className="border-b md:border-r"
|
|
35
|
-
logo={{
|
|
36
|
-
src: SupabaseLogo,
|
|
37
|
-
alt: "Supabase Logo",
|
|
38
|
-
}}
|
|
39
|
-
/>
|
|
40
|
-
|
|
41
|
-
<LogoCard
|
|
42
|
-
className="relative border-r border-b md:bg-secondary dark:md:bg-secondary/30"
|
|
43
|
-
logo={{
|
|
44
|
-
src: GithubLogo,
|
|
45
|
-
alt: "GitHub Logo",
|
|
46
|
-
}}
|
|
47
|
-
>
|
|
48
|
-
<DecorIcon className="z-10" position="bottom-right" />
|
|
49
|
-
<DecorIcon className="z-10 hidden md:block" position="bottom-left" />
|
|
50
|
-
</LogoCard>
|
|
51
|
-
|
|
52
|
-
<LogoCard
|
|
53
|
-
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
|
-
}}
|
|
58
|
-
/>
|
|
59
|
-
|
|
60
|
-
<LogoCard
|
|
61
|
-
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
|
-
>
|
|
67
|
-
<DecorIcon className="z-10 md:hidden" position="bottom-right" />
|
|
68
|
-
</LogoCard>
|
|
69
|
-
|
|
70
|
-
<LogoCard
|
|
71
|
-
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
|
-
}}
|
|
76
|
-
/>
|
|
77
|
-
|
|
78
|
-
<LogoCard
|
|
79
|
-
className="border-r"
|
|
80
|
-
logo={{
|
|
81
|
-
src: ClaudeLogo,
|
|
82
|
-
alt: "Claude AI Logo",
|
|
83
|
-
}}
|
|
84
|
-
/>
|
|
85
|
-
|
|
86
|
-
<LogoCard
|
|
87
|
-
className="bg-secondary dark:bg-secondary/30"
|
|
88
|
-
logo={{
|
|
89
|
-
src: VercelLogo,
|
|
90
|
-
alt: "Vercel Logo",
|
|
91
|
-
}}
|
|
92
|
-
/>
|
|
93
|
-
</div>
|
|
94
|
-
);
|
|
25
|
+
return <Component aria-label={logo.alt} className={logoClassName} role="img" />;
|
|
95
26
|
}
|
|
96
27
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
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
|
+
];
|
|
100
38
|
|
|
101
|
-
function
|
|
39
|
+
export function LogoCloud() {
|
|
102
40
|
return (
|
|
103
|
-
<div
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
alt={logo.alt}
|
|
112
|
-
className="pointer-events-none h-4 select-none md:h-5 dark:brightness-0 dark:invert"
|
|
113
|
-
height="auto"
|
|
114
|
-
src={getLogoSrc(logo.src)}
|
|
115
|
-
width="auto"
|
|
116
|
-
/>
|
|
117
|
-
{children}
|
|
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">
|
|
42
|
+
{logos.map((logo) => (
|
|
43
|
+
<LogoAsset
|
|
44
|
+
className="pointer-events-none h-8 w-32 select-none text-foreground sm:h-9 sm:w-36"
|
|
45
|
+
key={logo.alt}
|
|
46
|
+
logo={logo}
|
|
47
|
+
/>
|
|
48
|
+
))}
|
|
118
49
|
</div>
|
|
119
50
|
);
|
|
120
51
|
}
|
|
@@ -3,7 +3,7 @@ import React from "react";
|
|
|
3
3
|
import { Button } from "@/registry/default/ui/button";
|
|
4
4
|
import { Portal, PortalBackdrop } from "./ui/portal";
|
|
5
5
|
import { navLinks } from "./header";
|
|
6
|
-
import { XIcon, MenuIcon } from "
|
|
6
|
+
import { X as XIcon, Menu as MenuIcon } from "love-ui/icons";
|
|
7
7
|
|
|
8
8
|
export function MobileNav() {
|
|
9
9
|
const [open, setOpen] = React.useState(false);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { cn } from "@/lib/utils";
|
|
2
2
|
import { Button } from "@/registry/default/ui/button";
|
|
3
|
-
import { ArrowRightIcon, PhoneCallIcon } from "
|
|
3
|
+
import { ArrowRight as ArrowRightIcon, PhoneCall as PhoneCallIcon } from "love-ui/icons";
|
|
4
4
|
|
|
5
5
|
export function HeroSection() {
|
|
6
6
|
return (
|
|
@@ -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
|
-
];
|
|
@@ -3,7 +3,7 @@ import React from "react";
|
|
|
3
3
|
import { Button } from "@/registry/default/ui/button";
|
|
4
4
|
import { Portal, PortalBackdrop } from "./ui/portal";
|
|
5
5
|
import { navLinks } from "./header";
|
|
6
|
-
import { XIcon, MenuIcon } from "
|
|
6
|
+
import { X as XIcon, Menu as MenuIcon } from "love-ui/icons";
|
|
7
7
|
|
|
8
8
|
export function MobileNav() {
|
|
9
9
|
const [open, setOpen] = React.useState(false);
|
|
@@ -1,43 +1,49 @@
|
|
|
1
|
+
import type { ElementType, SVGProps } from "react";
|
|
2
|
+
import {
|
|
3
|
+
Cursor as CursorLogo,
|
|
4
|
+
Neon as NeonLogo,
|
|
5
|
+
Notion as NotionLogo,
|
|
6
|
+
Vercel as VercelLogo,
|
|
7
|
+
} from "love-ui/logos";
|
|
8
|
+
|
|
1
9
|
import { cn } from "@/lib/utils";
|
|
2
10
|
import { Button } from "@/registry/default/ui/button";
|
|
3
|
-
import { ArrowUpRightIcon } from "
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import VercelLogo from "./logos/vercel.svg";
|
|
7
|
-
import CursorLogo from "./logos/cursor.svg";
|
|
11
|
+
import { ArrowUpRight as ArrowUpRightIcon } from "love-ui/icons";
|
|
12
|
+
|
|
13
|
+
type LogoComponent = ElementType<SVGProps<SVGSVGElement>>;
|
|
8
14
|
|
|
9
15
|
type Integration = {
|
|
10
|
-
|
|
16
|
+
Component: LogoComponent;
|
|
11
17
|
name: string;
|
|
12
18
|
description: string;
|
|
13
19
|
isInvertable?: boolean;
|
|
14
20
|
};
|
|
15
21
|
|
|
16
|
-
const getLogoSrc = (source: Integration["src"]) =>
|
|
17
|
-
typeof source === "string" ? source : source.src;
|
|
18
|
-
|
|
19
22
|
const data: Integration[] = [
|
|
20
23
|
{
|
|
21
|
-
|
|
24
|
+
Component: VercelLogo,
|
|
22
25
|
name: "Vercel",
|
|
23
|
-
description:
|
|
26
|
+
description:
|
|
27
|
+
"Deploy LoveUI examples, docs, and product pages with fast previews.",
|
|
24
28
|
isInvertable: true,
|
|
25
29
|
},
|
|
26
30
|
{
|
|
27
|
-
|
|
31
|
+
Component: CursorLogo,
|
|
28
32
|
name: "Cursor",
|
|
29
|
-
description:
|
|
33
|
+
description:
|
|
34
|
+
"Use LoveUI Skills to guide AI-assisted interface work in your editor.",
|
|
30
35
|
isInvertable: true,
|
|
31
36
|
},
|
|
32
37
|
{
|
|
33
|
-
|
|
34
|
-
name: "
|
|
35
|
-
description: "Pair LoveUI app screens with
|
|
38
|
+
Component: NeonLogo,
|
|
39
|
+
name: "Neon",
|
|
40
|
+
description: "Pair LoveUI app screens with serverless Postgres and product data.",
|
|
36
41
|
},
|
|
37
42
|
{
|
|
38
|
-
|
|
43
|
+
Component: NotionLogo,
|
|
39
44
|
name: "Notion",
|
|
40
|
-
description:
|
|
45
|
+
description:
|
|
46
|
+
"Document component decisions, block usage, and product patterns.",
|
|
41
47
|
},
|
|
42
48
|
];
|
|
43
49
|
|
|
@@ -55,15 +61,9 @@ export function Integrations() {
|
|
|
55
61
|
)}
|
|
56
62
|
key={item.name}
|
|
57
63
|
>
|
|
58
|
-
<
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
"pointer-events-none size-8 shrink-0 select-none object-contain",
|
|
62
|
-
item.isInvertable && "dark:invert"
|
|
63
|
-
)}
|
|
64
|
-
height={32}
|
|
65
|
-
src={getLogoSrc(item.src)}
|
|
66
|
-
width={32}
|
|
64
|
+
<LogoAsset
|
|
65
|
+
className="pointer-events-none size-9 shrink-0 select-none object-contain"
|
|
66
|
+
integration={item}
|
|
67
67
|
/>
|
|
68
68
|
<div className="space-y-1">
|
|
69
69
|
<h3 className="font-semibold">{item.name}</h3>
|
|
@@ -84,3 +84,21 @@ export function Integrations() {
|
|
|
84
84
|
</div>
|
|
85
85
|
);
|
|
86
86
|
}
|
|
87
|
+
|
|
88
|
+
function LogoAsset({
|
|
89
|
+
integration,
|
|
90
|
+
className,
|
|
91
|
+
}: {
|
|
92
|
+
integration: Integration;
|
|
93
|
+
className: string;
|
|
94
|
+
}) {
|
|
95
|
+
const Component = integration.Component;
|
|
96
|
+
|
|
97
|
+
return (
|
|
98
|
+
<Component
|
|
99
|
+
aria-label={integration.name}
|
|
100
|
+
className={cn(className, integration.isInvertable && "dark:invert")}
|
|
101
|
+
role="img"
|
|
102
|
+
/>
|
|
103
|
+
);
|
|
104
|
+
}
|
|
@@ -1,33 +1,36 @@
|
|
|
1
|
+
import type { ElementType, SVGProps } from "react";
|
|
2
|
+
import {
|
|
3
|
+
Cursor as CursorLogo,
|
|
4
|
+
GoogleGmail as GmailLogo,
|
|
5
|
+
Neon as NeonLogo,
|
|
6
|
+
Notion as NotionLogo,
|
|
7
|
+
PlanetScale as PlanetscaleLogo,
|
|
8
|
+
Vercel as VercelLogo,
|
|
9
|
+
} from "love-ui/logos";
|
|
10
|
+
|
|
1
11
|
import { cn } from "@/lib/utils";
|
|
2
12
|
import { DecorIcon } from "./decor-icon";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import NotionLogo from "./logos/notion.svg";
|
|
6
|
-
import SupabaseLogo from "./logos/supabase.svg";
|
|
7
|
-
import VercelLogo from "./logos/vercel.svg";
|
|
8
|
-
import PlanetscaleLogo from "./logos/planetscale.svg";
|
|
13
|
+
|
|
14
|
+
type LogoComponent = ElementType<SVGProps<SVGSVGElement>>;
|
|
9
15
|
|
|
10
16
|
type Integration = {
|
|
11
|
-
|
|
17
|
+
Component: LogoComponent;
|
|
12
18
|
name: string;
|
|
13
19
|
description: string;
|
|
14
20
|
isInvertable?: boolean;
|
|
15
21
|
icon?: React.ReactNode;
|
|
16
22
|
};
|
|
17
23
|
|
|
18
|
-
const getLogoSrc = (source: Integration["src"]) =>
|
|
19
|
-
typeof source === "string" ? source : source.src;
|
|
20
|
-
|
|
21
24
|
const data: Integration[] = [
|
|
22
25
|
{
|
|
23
|
-
|
|
26
|
+
Component: VercelLogo,
|
|
24
27
|
name: "Vercel",
|
|
25
28
|
description:
|
|
26
29
|
"Deploy LoveUI block previews, docs, and production product pages.",
|
|
27
30
|
isInvertable: true,
|
|
28
31
|
},
|
|
29
32
|
{
|
|
30
|
-
|
|
33
|
+
Component: CursorLogo,
|
|
31
34
|
name: "Cursor",
|
|
32
35
|
description:
|
|
33
36
|
"Use LoveUI Skills to give AI agents concrete interface guidance.",
|
|
@@ -35,29 +38,26 @@ const data: Integration[] = [
|
|
|
35
38
|
icon: <DecorIcon position="bottom-left" />,
|
|
36
39
|
},
|
|
37
40
|
{
|
|
38
|
-
|
|
39
|
-
name: "
|
|
41
|
+
Component: NeonLogo,
|
|
42
|
+
name: "Neon",
|
|
40
43
|
description:
|
|
41
|
-
"Connect polished LoveUI surfaces to
|
|
44
|
+
"Connect polished LoveUI surfaces to serverless Postgres and application data.",
|
|
42
45
|
},
|
|
43
46
|
{
|
|
44
|
-
|
|
47
|
+
Component: PlanetscaleLogo,
|
|
45
48
|
name: "PlanetScale",
|
|
46
|
-
description:
|
|
47
|
-
"Back product screens with schema changes your team can review.",
|
|
49
|
+
description: "Back product screens with schema changes your team can review.",
|
|
48
50
|
isInvertable: true,
|
|
49
51
|
},
|
|
50
52
|
{
|
|
51
|
-
|
|
53
|
+
Component: NotionLogo,
|
|
52
54
|
name: "Notion",
|
|
53
|
-
description:
|
|
54
|
-
"Track component decisions, block adoption, and design system notes.",
|
|
55
|
+
description: "Track component decisions, block adoption, and design system notes.",
|
|
55
56
|
},
|
|
56
57
|
{
|
|
57
|
-
|
|
58
|
+
Component: GmailLogo,
|
|
58
59
|
name: "Gmail",
|
|
59
|
-
description:
|
|
60
|
-
"Send product notifications from interfaces built with LoveUI forms.",
|
|
60
|
+
description: "Send product notifications from interfaces built with LoveUI forms.",
|
|
61
61
|
icon: <DecorIcon position="top-left" />,
|
|
62
62
|
},
|
|
63
63
|
];
|
|
@@ -85,9 +85,7 @@ function IntegrationCard({
|
|
|
85
85
|
className,
|
|
86
86
|
children,
|
|
87
87
|
...props
|
|
88
|
-
}: React.ComponentProps<"div"> & {
|
|
89
|
-
integration: Integration;
|
|
90
|
-
}) {
|
|
88
|
+
}: React.ComponentProps<"div"> & { integration: Integration }) {
|
|
91
89
|
return (
|
|
92
90
|
<div
|
|
93
91
|
className={cn(
|
|
@@ -96,15 +94,9 @@ function IntegrationCard({
|
|
|
96
94
|
)}
|
|
97
95
|
{...props}
|
|
98
96
|
>
|
|
99
|
-
<
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
"pointer-events-none size-8 shrink-0 select-none object-contain",
|
|
103
|
-
integration.isInvertable && "dark:invert"
|
|
104
|
-
)}
|
|
105
|
-
height={32}
|
|
106
|
-
src={getLogoSrc(integration.src)}
|
|
107
|
-
width={32}
|
|
97
|
+
<LogoAsset
|
|
98
|
+
className="pointer-events-none size-9 shrink-0 select-none object-contain"
|
|
99
|
+
integration={integration}
|
|
108
100
|
/>
|
|
109
101
|
<div className="space-y-1">
|
|
110
102
|
<h3 className="font-semibold">{integration.name}</h3>
|
|
@@ -116,3 +108,21 @@ function IntegrationCard({
|
|
|
116
108
|
</div>
|
|
117
109
|
);
|
|
118
110
|
}
|
|
111
|
+
|
|
112
|
+
function LogoAsset({
|
|
113
|
+
integration,
|
|
114
|
+
className,
|
|
115
|
+
}: {
|
|
116
|
+
integration: Integration;
|
|
117
|
+
className: string;
|
|
118
|
+
}) {
|
|
119
|
+
const Component = integration.Component;
|
|
120
|
+
|
|
121
|
+
return (
|
|
122
|
+
<Component
|
|
123
|
+
aria-label={integration.name}
|
|
124
|
+
className={cn(className, integration.isInvertable && "dark:invert")}
|
|
125
|
+
role="img"
|
|
126
|
+
/>
|
|
127
|
+
);
|
|
128
|
+
}
|