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.
Files changed (320) hide show
  1. package/dist/chunk-VDMHIXDM.js +121 -0
  2. package/dist/index.js +156 -134
  3. package/dist/mcp-server.js +1 -1
  4. package/package.json +38 -3
  5. package/registry/default/blocks/404-1/components/not-found.tsx +1 -1
  6. package/registry/default/blocks/404-2/components/not-found.tsx +1 -1
  7. package/registry/default/blocks/auth1/components/auth-page.tsx +2 -3
  8. package/registry/default/blocks/auth2/components/auth.tsx +2 -3
  9. package/registry/default/blocks/auth3/components/auth-page.tsx +2 -3
  10. package/registry/default/blocks/contact1/components/contact.tsx +1 -1
  11. package/registry/default/blocks/contact2/components/contact.tsx +2 -2
  12. package/registry/default/blocks/contact3/components/contact.tsx +2 -3
  13. package/registry/default/blocks/contact4/components/contact.tsx +1 -1
  14. package/registry/default/blocks/contact5/components/contact.tsx +1 -1
  15. package/registry/default/blocks/cta-2/components/cta.tsx +1 -1
  16. package/registry/default/blocks/cta-3/components/cta.tsx +1 -1
  17. package/registry/default/blocks/cta-4/components/cta.tsx +1 -1
  18. package/registry/default/blocks/cta-5/components/cta.tsx +1 -1
  19. package/registry/default/blocks/faq-4/components/faq.tsx +7 -1
  20. package/registry/default/blocks/faq-5/components/faq.tsx +1 -1
  21. package/registry/default/blocks/features1/components/feature-section.tsx +6 -1
  22. package/registry/default/blocks/features2/components/feature-section.tsx +1 -1
  23. package/registry/default/blocks/features3/components/feature-section.tsx +6 -1
  24. package/registry/default/blocks/features4/components/feature-section.tsx +6 -1
  25. package/registry/default/blocks/features5/components/feature-section.tsx +8 -1
  26. package/registry/default/blocks/features6/components/feature-section.tsx +1 -1
  27. package/registry/default/blocks/footer1/components/footer.tsx +1 -2
  28. package/registry/default/blocks/footer2/components/footer.tsx +1 -3
  29. package/registry/default/blocks/footer3/components/footer.tsx +1 -4
  30. package/registry/default/blocks/footer4/components/footer.tsx +2 -5
  31. package/registry/default/blocks/footer5/components/footer.tsx +1 -6
  32. package/registry/default/blocks/footer6/app/page.tsx +1 -1
  33. package/registry/default/blocks/footer6/components/footer.tsx +1 -4
  34. package/registry/default/blocks/header1/components/mobile-nav.tsx +1 -1
  35. package/registry/default/blocks/header2/components/mobile-nav.tsx +1 -1
  36. package/registry/default/blocks/header3/components/mobile-nav.tsx +1 -1
  37. package/registry/default/blocks/header3/components/nav-links.tsx +16 -1
  38. package/registry/default/blocks/header3/components/ui/navigation-menu.tsx +1 -1
  39. package/registry/default/blocks/hero1/components/hero.tsx +1 -1
  40. package/registry/default/blocks/hero1/components/logo-cloud.tsx +43 -61
  41. package/registry/default/blocks/hero1/components/mobile-nav.tsx +1 -1
  42. package/registry/default/blocks/hero2/components/hero.tsx +1 -1
  43. package/registry/default/blocks/hero2/components/logo-cloud.tsx +38 -107
  44. package/registry/default/blocks/hero2/components/mobile-nav.tsx +1 -1
  45. package/registry/default/blocks/hero3/components/hero.tsx +1 -1
  46. package/registry/default/blocks/hero3/components/logo-cloud.tsx +39 -55
  47. package/registry/default/blocks/hero3/components/mobile-nav.tsx +1 -1
  48. package/registry/default/blocks/integrations1/components/integrations.tsx +45 -27
  49. package/registry/default/blocks/integrations2/components/integrations.tsx +46 -36
  50. package/registry/default/blocks/integrations3/components/integrations.tsx +53 -106
  51. package/registry/default/blocks/integrations4/components/integrations.tsx +53 -108
  52. package/registry/default/blocks/integrations5/components/integrations.tsx +51 -68
  53. package/registry/default/blocks/logo-cloud-1/components/logo-cloud.tsx +39 -54
  54. package/registry/default/blocks/logo-cloud-2/components/logo-cloud.tsx +39 -50
  55. package/registry/default/blocks/logo-cloud-3/components/logo-cloud.tsx +41 -56
  56. package/registry/default/blocks/logo-cloud-4/components/logo-cloud.tsx +41 -56
  57. package/registry/default/blocks/logo-cloud-5/components/logo-cloud.tsx +39 -55
  58. package/registry/default/blocks/onboarding1/components/onboarding.tsx +7 -7
  59. package/registry/default/blocks/onboarding2/components/onboarding.tsx +19 -9
  60. package/registry/default/blocks/onboarding3/components/onboarding.tsx +1 -1
  61. package/registry/default/blocks/onboarding4/components/onboarding.tsx +6 -6
  62. package/registry/default/blocks/onboarding6/components/onboarding.tsx +1 -1
  63. package/registry/default/blocks/onboarding7/components/onboarding.tsx +4 -4
  64. package/registry/default/blocks/pricing1/components/pricing.tsx +1 -1
  65. package/registry/default/blocks/pricing2/components/pricing.tsx +1 -1
  66. package/registry/default/blocks/pricing3/components/pricing.tsx +6 -1
  67. package/registry/default/blocks/pricing4/components/pricing.tsx +1 -1
  68. package/registry/default/blocks/stats11/components/stats.tsx +1 -1
  69. package/registry/default/blocks/stats2/components/stats.tsx +1 -1
  70. package/registry/default/blocks/stats4/components/stats.tsx +1 -1
  71. package/registry/default/blocks/stats6/components/stats.tsx +6 -1
  72. package/registry/default/blocks/stats7/components/stats.tsx +1 -1
  73. package/registry/default/blocks/testimonials3/components/testimonials.tsx +1 -1
  74. package/registry/default/blocks/testimonials4/components/testimonials.tsx +1 -1
  75. package/registry/default/examples/accordion-in-card.tsx +1 -1
  76. package/registry/default/examples/accordion-leading-icon.tsx +1 -1
  77. package/registry/default/examples/accordion-with-icons.tsx +1 -1
  78. package/registry/default/examples/alert-billing-notice.tsx +1 -1
  79. package/registry/default/examples/alert-error.tsx +1 -1
  80. package/registry/default/examples/alert-info.tsx +1 -1
  81. package/registry/default/examples/alert-success.tsx +1 -1
  82. package/registry/default/examples/alert-warning.tsx +1 -1
  83. package/registry/default/examples/alert-with-icon-action.tsx +1 -1
  84. package/registry/default/examples/alert-with-icon.tsx +1 -1
  85. package/registry/default/examples/autocomplete-async.tsx +1 -1
  86. package/registry/default/examples/avatar-badge-icons.tsx +5 -5
  87. package/registry/default/examples/avatar-empty-collaborators.tsx +1 -1
  88. package/registry/default/examples/avatar-loading.tsx +2 -2
  89. package/registry/default/examples/avatar-menu.tsx +6 -6
  90. package/registry/default/examples/badge-release-status.tsx +1 -1
  91. package/registry/default/examples/badge-with-icon.tsx +1 -1
  92. package/registry/default/examples/breadcrumb-buttons.tsx +5 -5
  93. package/registry/default/examples/breadcrumb-card.tsx +1 -1
  94. package/registry/default/examples/breadcrumb-workspace-path.tsx +1 -1
  95. package/registry/default/examples/button-command-bar.tsx +1 -1
  96. package/registry/default/examples/button-default-icons.tsx +1 -1
  97. package/registry/default/examples/button-demo.tsx +1 -1
  98. package/registry/default/examples/button-destructive-icons.tsx +1 -1
  99. package/registry/default/examples/button-destructive-outline-icons.tsx +1 -1
  100. package/registry/default/examples/button-ghost-icons.tsx +1 -1
  101. package/registry/default/examples/button-icon-lg.tsx +1 -1
  102. package/registry/default/examples/button-icon-sm.tsx +1 -1
  103. package/registry/default/examples/button-icon.tsx +1 -1
  104. package/registry/default/examples/button-link-icons.tsx +1 -1
  105. package/registry/default/examples/button-loading.tsx +1 -1
  106. package/registry/default/examples/button-outline-icons.tsx +1 -1
  107. package/registry/default/examples/button-secondary-icons.tsx +1 -1
  108. package/registry/default/examples/button-theme-toggle.tsx +1 -1
  109. package/registry/default/examples/button-with-icon.tsx +1 -1
  110. package/registry/default/examples/card-help-link.tsx +1 -1
  111. package/registry/default/examples/card-help-menu.tsx +7 -7
  112. package/registry/default/examples/card-image-centered.tsx +1 -1
  113. package/registry/default/examples/card-image-feature.tsx +1 -1
  114. package/registry/default/examples/card-metric-actions.tsx +9 -9
  115. package/registry/default/examples/card-metric-summary.tsx +1 -1
  116. package/registry/default/examples/card-resource-link.tsx +1 -1
  117. package/registry/default/examples/card-usage-expandable.tsx +1 -1
  118. package/registry/default/examples/checkbox-notification-row.tsx +1 -1
  119. package/registry/default/examples/collapsible-demo.tsx +1 -1
  120. package/registry/default/examples/collapsible-release-notes.tsx +1 -1
  121. package/registry/default/examples/combobox-with-inner-input.tsx +1 -1
  122. package/registry/default/examples/empty-demo.tsx +1 -1
  123. package/registry/default/examples/empty-filtered-results.tsx +1 -1
  124. package/registry/default/examples/empty-inbox-zero.tsx +1 -1
  125. package/registry/default/examples/empty-upload-queue.tsx +1 -1
  126. package/registry/default/examples/form.tsx +7 -7
  127. package/registry/default/examples/group-demo.tsx +1 -1
  128. package/registry/default/examples/group-toolbar-actions.tsx +1 -1
  129. package/registry/default/examples/group-with-input.tsx +1 -1
  130. package/registry/default/examples/input-search-inline.tsx +1 -1
  131. package/registry/default/examples/menu-demo.tsx +6 -6
  132. package/registry/default/examples/menu-project-actions.tsx +1 -1
  133. package/registry/default/examples/popover-with-close.tsx +1 -1
  134. package/registry/default/examples/preview-card-demo.tsx +1 -1
  135. package/registry/default/examples/preview-card-repository.tsx +1 -1
  136. package/registry/default/examples/skeleton-demo.tsx +1 -1
  137. package/registry/default/examples/switch-privacy-mode.tsx +1 -1
  138. package/registry/default/examples/table.tsx +1 -1
  139. package/registry/default/examples/toggle-group-demo.tsx +1 -1
  140. package/registry/default/examples/toggle-group-disabled.tsx +1 -1
  141. package/registry/default/examples/toggle-group-lg.tsx +1 -1
  142. package/registry/default/examples/toggle-group-multiple.tsx +1 -1
  143. package/registry/default/examples/toggle-group-outline-with-separator.tsx +1 -1
  144. package/registry/default/examples/toggle-group-outline.tsx +1 -1
  145. package/registry/default/examples/toggle-group-sm.tsx +1 -1
  146. package/registry/default/examples/toggle-group-with-disabled-item.tsx +1 -1
  147. package/registry/default/examples/toggle-icon-group.tsx +1 -1
  148. package/registry/default/examples/toggle-view-mode.tsx +1 -1
  149. package/registry/default/examples/toggle-with-icon.tsx +1 -1
  150. package/registry/default/examples/toolbar-canvas-controls.tsx +1 -1
  151. package/registry/default/examples/toolbar-demo.tsx +6 -6
  152. package/registry/default/examples/toolbar-density-controls.tsx +1 -1
  153. package/registry/default/examples/toolbar-media-controls.tsx +1 -1
  154. package/registry/default/examples/tooltip-grouped.tsx +1 -1
  155. package/registry/default/examples/tooltip-icon-row.tsx +1 -1
  156. package/registry/default/icons/package.json +1 -1
  157. package/registry/default/icons/scripts/generate-registry.ts +5 -5
  158. package/registry/default/logos/package.json +1 -1
  159. package/registry/default/logos/scripts/generate-registry.ts +5 -5
  160. package/registry/default/logos/src/generated/ai/index.tsx +3 -3
  161. package/registry/default/logos/src/generated/index.tsx +4 -4
  162. package/registry/default/ui/accordion.tsx +1 -1
  163. package/registry/default/ui/autocomplete.tsx +1 -1
  164. package/registry/default/ui/breadcrumb.tsx +1 -1
  165. package/registry/default/ui/combobox.tsx +1 -1
  166. package/registry/default/ui/dialog.tsx +1 -1
  167. package/registry/default/ui/dropdown-menu.tsx +1 -1
  168. package/registry/default/ui/menu.tsx +1 -1
  169. package/registry/default/ui/number-field.tsx +1 -1
  170. package/registry/default/ui/pagination.tsx +4 -4
  171. package/registry/default/ui/select.tsx +4 -4
  172. package/registry/default/ui/sheet.tsx +1 -1
  173. package/registry/default/ui/sidebar.tsx +1 -1
  174. package/registry/default/ui/toast.tsx +6 -6
  175. package/registry/default/vectors/package.json +1 -1
  176. package/registry/default/vectors/scripts/generate-registry.ts +5 -5
  177. package/registry/default/blocks/auth1/components/icons/github-icon.tsx +0 -10
  178. package/registry/default/blocks/auth1/components/icons/google-icon.tsx +0 -14
  179. package/registry/default/blocks/auth2/components/icons/github-icon.tsx +0 -10
  180. package/registry/default/blocks/auth2/components/icons/google-icon.tsx +0 -14
  181. package/registry/default/blocks/auth3/components/icons/github-icon.tsx +0 -10
  182. package/registry/default/blocks/auth3/components/icons/google-icon.tsx +0 -14
  183. package/registry/default/blocks/contact2/components/icons/x-icon.tsx +0 -12
  184. package/registry/default/blocks/contact3/components/icons/github-icon.tsx +0 -10
  185. package/registry/default/blocks/contact3/components/icons/x-icon.tsx +0 -12
  186. package/registry/default/blocks/footer1/components/icons/github-icon.tsx +0 -10
  187. package/registry/default/blocks/footer1/components/icons/x-icon.tsx +0 -12
  188. package/registry/default/blocks/footer2/components/icons/github-icon.tsx +0 -10
  189. package/registry/default/blocks/footer2/components/icons/instagram-icon.tsx +0 -12
  190. package/registry/default/blocks/footer2/components/icons/x-icon.tsx +0 -12
  191. package/registry/default/blocks/footer3/components/icons/github-icon.tsx +0 -10
  192. package/registry/default/blocks/footer3/components/icons/instagram-icon.tsx +0 -12
  193. package/registry/default/blocks/footer3/components/icons/linkedin-icon.tsx +0 -12
  194. package/registry/default/blocks/footer3/components/icons/x-icon.tsx +0 -12
  195. package/registry/default/blocks/footer4/components/icons/github-icon.tsx +0 -10
  196. package/registry/default/blocks/footer4/components/icons/instagram-icon.tsx +0 -12
  197. package/registry/default/blocks/footer4/components/icons/linkedin-icon.tsx +0 -12
  198. package/registry/default/blocks/footer4/components/icons/x-icon.tsx +0 -12
  199. package/registry/default/blocks/footer5/components/icons/apple-icon.tsx +0 -18
  200. package/registry/default/blocks/footer5/components/icons/facebook-icon.tsx +0 -12
  201. package/registry/default/blocks/footer5/components/icons/google-play-icon.tsx +0 -10
  202. package/registry/default/blocks/footer5/components/icons/instagram-icon.tsx +0 -12
  203. package/registry/default/blocks/footer5/components/icons/linkedin-icon.tsx +0 -12
  204. package/registry/default/blocks/footer5/components/icons/x-icon.tsx +0 -12
  205. package/registry/default/blocks/footer6/components/icons/apple-icon.tsx +0 -18
  206. package/registry/default/blocks/footer6/components/icons/facebook-icon.tsx +0 -12
  207. package/registry/default/blocks/footer6/components/icons/github-icon.tsx +0 -10
  208. package/registry/default/blocks/footer6/components/icons/google-play-icon.tsx +0 -10
  209. package/registry/default/blocks/footer6/components/icons/instagram-icon.tsx +0 -12
  210. package/registry/default/blocks/footer6/components/icons/linkedin-icon.tsx +0 -12
  211. package/registry/default/blocks/footer6/components/icons/x-icon.tsx +0 -12
  212. package/registry/default/blocks/hero1/components/logos/claude-wordmark.svg +0 -1
  213. package/registry/default/blocks/hero1/components/logos/clerk-wordmark.svg +0 -1
  214. package/registry/default/blocks/hero1/components/logos/github-wordmark.svg +0 -6
  215. package/registry/default/blocks/hero1/components/logos/nvidia-wordmark.svg +0 -1
  216. package/registry/default/blocks/hero1/components/logos/openai-wordmark.svg +0 -1
  217. package/registry/default/blocks/hero1/components/logos/supabase-wordmark.svg +0 -23
  218. package/registry/default/blocks/hero1/components/logos/turso-wordmark.svg +0 -1
  219. package/registry/default/blocks/hero1/components/logos/vercel-wordmark.svg +0 -1
  220. package/registry/default/blocks/hero2/components/logos/claude-wordmark.svg +0 -1
  221. package/registry/default/blocks/hero2/components/logos/clerk-wordmark.svg +0 -1
  222. package/registry/default/blocks/hero2/components/logos/github-wordmark.svg +0 -6
  223. package/registry/default/blocks/hero2/components/logos/nvidia-wordmark.svg +0 -1
  224. package/registry/default/blocks/hero2/components/logos/openai-wordmark.svg +0 -1
  225. package/registry/default/blocks/hero2/components/logos/supabase-wordmark.svg +0 -23
  226. package/registry/default/blocks/hero2/components/logos/turso-wordmark.svg +0 -1
  227. package/registry/default/blocks/hero2/components/logos/vercel-wordmark.svg +0 -1
  228. package/registry/default/blocks/hero3/components/logos/claude-wordmark.svg +0 -1
  229. package/registry/default/blocks/hero3/components/logos/clerk-wordmark.svg +0 -1
  230. package/registry/default/blocks/hero3/components/logos/github-wordmark.svg +0 -6
  231. package/registry/default/blocks/hero3/components/logos/nvidia-wordmark.svg +0 -1
  232. package/registry/default/blocks/hero3/components/logos/openai-wordmark.svg +0 -1
  233. package/registry/default/blocks/hero3/components/logos/supabase-wordmark.svg +0 -23
  234. package/registry/default/blocks/hero3/components/logos/turso-wordmark.svg +0 -1
  235. package/registry/default/blocks/hero3/components/logos/vercel-wordmark.svg +0 -1
  236. package/registry/default/blocks/integrations1/components/logos/adobe.svg +0 -1
  237. package/registry/default/blocks/integrations1/components/logos/canva.svg +0 -1
  238. package/registry/default/blocks/integrations1/components/logos/cursor.svg +0 -1
  239. package/registry/default/blocks/integrations1/components/logos/gmail.svg +0 -1
  240. package/registry/default/blocks/integrations1/components/logos/notion.svg +0 -1
  241. package/registry/default/blocks/integrations1/components/logos/planetscale.svg +0 -1
  242. package/registry/default/blocks/integrations1/components/logos/polar.svg +0 -1
  243. package/registry/default/blocks/integrations1/components/logos/supabase.svg +0 -1
  244. package/registry/default/blocks/integrations1/components/logos/vercel.svg +0 -1
  245. package/registry/default/blocks/integrations2/components/logos/adobe.svg +0 -1
  246. package/registry/default/blocks/integrations2/components/logos/canva.svg +0 -1
  247. package/registry/default/blocks/integrations2/components/logos/cursor.svg +0 -1
  248. package/registry/default/blocks/integrations2/components/logos/gmail.svg +0 -1
  249. package/registry/default/blocks/integrations2/components/logos/notion.svg +0 -1
  250. package/registry/default/blocks/integrations2/components/logos/planetscale.svg +0 -1
  251. package/registry/default/blocks/integrations2/components/logos/polar.svg +0 -1
  252. package/registry/default/blocks/integrations2/components/logos/supabase.svg +0 -1
  253. package/registry/default/blocks/integrations2/components/logos/vercel.svg +0 -1
  254. package/registry/default/blocks/integrations3/components/logos/adobe.svg +0 -1
  255. package/registry/default/blocks/integrations3/components/logos/canva.svg +0 -1
  256. package/registry/default/blocks/integrations3/components/logos/cursor.svg +0 -1
  257. package/registry/default/blocks/integrations3/components/logos/gmail.svg +0 -1
  258. package/registry/default/blocks/integrations3/components/logos/notion.svg +0 -1
  259. package/registry/default/blocks/integrations3/components/logos/planetscale.svg +0 -1
  260. package/registry/default/blocks/integrations3/components/logos/polar.svg +0 -1
  261. package/registry/default/blocks/integrations3/components/logos/supabase.svg +0 -1
  262. package/registry/default/blocks/integrations3/components/logos/vercel.svg +0 -1
  263. package/registry/default/blocks/integrations4/components/logos/adobe.svg +0 -1
  264. package/registry/default/blocks/integrations4/components/logos/canva.svg +0 -1
  265. package/registry/default/blocks/integrations4/components/logos/cursor.svg +0 -1
  266. package/registry/default/blocks/integrations4/components/logos/gmail.svg +0 -1
  267. package/registry/default/blocks/integrations4/components/logos/notion.svg +0 -1
  268. package/registry/default/blocks/integrations4/components/logos/planetscale.svg +0 -1
  269. package/registry/default/blocks/integrations4/components/logos/polar.svg +0 -1
  270. package/registry/default/blocks/integrations4/components/logos/supabase.svg +0 -1
  271. package/registry/default/blocks/integrations4/components/logos/vercel.svg +0 -1
  272. package/registry/default/blocks/integrations5/components/logos/adobe.svg +0 -1
  273. package/registry/default/blocks/integrations5/components/logos/canva.svg +0 -1
  274. package/registry/default/blocks/integrations5/components/logos/cursor.svg +0 -1
  275. package/registry/default/blocks/integrations5/components/logos/gmail.svg +0 -1
  276. package/registry/default/blocks/integrations5/components/logos/notion.svg +0 -1
  277. package/registry/default/blocks/integrations5/components/logos/planetscale.svg +0 -1
  278. package/registry/default/blocks/integrations5/components/logos/polar.svg +0 -1
  279. package/registry/default/blocks/integrations5/components/logos/supabase.svg +0 -1
  280. package/registry/default/blocks/integrations5/components/logos/vercel.svg +0 -1
  281. package/registry/default/blocks/logo-cloud-1/components/logos/claude-wordmark.svg +0 -1
  282. package/registry/default/blocks/logo-cloud-1/components/logos/clerk-wordmark.svg +0 -1
  283. package/registry/default/blocks/logo-cloud-1/components/logos/github-wordmark.svg +0 -6
  284. package/registry/default/blocks/logo-cloud-1/components/logos/nvidia-wordmark.svg +0 -1
  285. package/registry/default/blocks/logo-cloud-1/components/logos/openai-wordmark.svg +0 -1
  286. package/registry/default/blocks/logo-cloud-1/components/logos/supabase-wordmark.svg +0 -23
  287. package/registry/default/blocks/logo-cloud-1/components/logos/turso-wordmark.svg +0 -1
  288. package/registry/default/blocks/logo-cloud-1/components/logos/vercel-wordmark.svg +0 -1
  289. package/registry/default/blocks/logo-cloud-2/components/logos/claude-wordmark.svg +0 -1
  290. package/registry/default/blocks/logo-cloud-2/components/logos/clerk-wordmark.svg +0 -1
  291. package/registry/default/blocks/logo-cloud-2/components/logos/github-wordmark.svg +0 -6
  292. package/registry/default/blocks/logo-cloud-2/components/logos/nvidia-wordmark.svg +0 -1
  293. package/registry/default/blocks/logo-cloud-2/components/logos/openai-wordmark.svg +0 -1
  294. package/registry/default/blocks/logo-cloud-2/components/logos/supabase-wordmark.svg +0 -23
  295. package/registry/default/blocks/logo-cloud-2/components/logos/turso-wordmark.svg +0 -1
  296. package/registry/default/blocks/logo-cloud-2/components/logos/vercel-wordmark.svg +0 -1
  297. package/registry/default/blocks/logo-cloud-3/components/logos/claude-wordmark.svg +0 -1
  298. package/registry/default/blocks/logo-cloud-3/components/logos/clerk-wordmark.svg +0 -1
  299. package/registry/default/blocks/logo-cloud-3/components/logos/github-wordmark.svg +0 -6
  300. package/registry/default/blocks/logo-cloud-3/components/logos/nvidia-wordmark.svg +0 -1
  301. package/registry/default/blocks/logo-cloud-3/components/logos/openai-wordmark.svg +0 -1
  302. package/registry/default/blocks/logo-cloud-3/components/logos/supabase-wordmark.svg +0 -23
  303. package/registry/default/blocks/logo-cloud-3/components/logos/turso-wordmark.svg +0 -1
  304. package/registry/default/blocks/logo-cloud-3/components/logos/vercel-wordmark.svg +0 -1
  305. package/registry/default/blocks/logo-cloud-4/components/logos/claude-wordmark.svg +0 -1
  306. package/registry/default/blocks/logo-cloud-4/components/logos/clerk-wordmark.svg +0 -1
  307. package/registry/default/blocks/logo-cloud-4/components/logos/github-wordmark.svg +0 -6
  308. package/registry/default/blocks/logo-cloud-4/components/logos/nvidia-wordmark.svg +0 -1
  309. package/registry/default/blocks/logo-cloud-4/components/logos/openai-wordmark.svg +0 -1
  310. package/registry/default/blocks/logo-cloud-4/components/logos/supabase-wordmark.svg +0 -23
  311. package/registry/default/blocks/logo-cloud-4/components/logos/turso-wordmark.svg +0 -1
  312. package/registry/default/blocks/logo-cloud-4/components/logos/vercel-wordmark.svg +0 -1
  313. package/registry/default/blocks/logo-cloud-5/components/logos/claude-wordmark.svg +0 -1
  314. package/registry/default/blocks/logo-cloud-5/components/logos/clerk-wordmark.svg +0 -1
  315. package/registry/default/blocks/logo-cloud-5/components/logos/github-wordmark.svg +0 -6
  316. package/registry/default/blocks/logo-cloud-5/components/logos/nvidia-wordmark.svg +0 -1
  317. package/registry/default/blocks/logo-cloud-5/components/logos/openai-wordmark.svg +0 -1
  318. package/registry/default/blocks/logo-cloud-5/components/logos/supabase-wordmark.svg +0 -23
  319. package/registry/default/blocks/logo-cloud-5/components/logos/turso-wordmark.svg +0 -1
  320. 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 "lucide-react";
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 "lucide-react";
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 { cn } from "@/lib/utils";
2
- import { DecorIcon } from "./decor-icon";
3
- import ClaudeLogo from "./logos/claude-wordmark.svg";
4
- import ClerkLogo from "./logos/clerk-wordmark.svg";
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";
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
- src: { src: string } | string;
16
+ Component: LogoComponent;
14
17
  alt: string;
18
+ className?: string;
15
19
  };
16
20
 
17
- const getLogoSrc = (source: Logo["src"]) =>
18
- typeof source === "string" ? source : source.src;
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
- export function LogoCloud() {
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
- type LogoCardProps = React.ComponentProps<"div"> & {
98
- logo: Logo;
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 LogoCard({ logo, className, children, ...props }: LogoCardProps) {
39
+ export function LogoCloud() {
102
40
  return (
103
- <div
104
- className={cn(
105
- "flex items-center justify-center bg-background px-4 py-8 md:p-8",
106
- className
107
- )}
108
- {...props}
109
- >
110
- <img
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 "lucide-react";
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 "lucide-react";
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 ClaudeLogo from "./logos/claude-wordmark.svg";
2
- import ClerkLogo from "./logos/clerk-wordmark.svg";
3
- import GithubLogo from "./logos/github-wordmark.svg";
4
- import NvidiaLogo from "./logos/nvidia-wordmark.svg";
5
- import OpenAILogo from "./logos/openai-wordmark.svg";
6
- import SupabaseLogo from "./logos/supabase-wordmark.svg";
7
- import TursoLogo from "./logos/turso-wordmark.svg";
8
- import VercelLogo from "./logos/vercel-wordmark.svg";
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 LogoSource = { src: string } | string;
13
+ type LogoComponent = ElementType<SVGProps<SVGSVGElement>>;
11
14
 
12
- const getLogoSrc = (source: LogoSource) =>
13
- typeof source === "string" ? source : source.src;
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-10 gap-y-8 py-6 sm:gap-x-12 sm:gap-y-12">
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
- <img
20
- alt={logo.alt}
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
- loading="lazy"
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 "lucide-react";
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 "lucide-react";
4
- import NotionLogo from "./logos/notion.svg";
5
- import SupabaseLogo from "./logos/supabase.svg";
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
- src: { src: string } | string;
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
- src: VercelLogo,
24
+ Component: VercelLogo,
22
25
  name: "Vercel",
23
- description: "Deploy LoveUI examples, docs, and product pages with fast previews.",
26
+ description:
27
+ "Deploy LoveUI examples, docs, and product pages with fast previews.",
24
28
  isInvertable: true,
25
29
  },
26
30
  {
27
- src: CursorLogo,
31
+ Component: CursorLogo,
28
32
  name: "Cursor",
29
- description: "Use LoveUI Skills to guide AI-assisted interface work in your editor.",
33
+ description:
34
+ "Use LoveUI Skills to guide AI-assisted interface work in your editor.",
30
35
  isInvertable: true,
31
36
  },
32
37
  {
33
- src: SupabaseLogo,
34
- name: "Supabase",
35
- description: "Pair LoveUI app screens with auth, storage, and product data.",
38
+ Component: NeonLogo,
39
+ name: "Neon",
40
+ description: "Pair LoveUI app screens with serverless Postgres and product data.",
36
41
  },
37
42
  {
38
- src: NotionLogo,
43
+ Component: NotionLogo,
39
44
  name: "Notion",
40
- description: "Document component decisions, block usage, and product patterns.",
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
- <img
59
- alt={item.name}
60
- className={cn(
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
- import CursorLogo from "./logos/cursor.svg";
4
- import GmailLogo from "./logos/gmail.svg";
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
- src: { src: string } | string;
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
- src: VercelLogo,
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
- src: CursorLogo,
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
- src: SupabaseLogo,
39
- name: "Supabase",
41
+ Component: NeonLogo,
42
+ name: "Neon",
40
43
  description:
41
- "Connect polished LoveUI surfaces to auth, storage, and application data.",
44
+ "Connect polished LoveUI surfaces to serverless Postgres and application data.",
42
45
  },
43
46
  {
44
- src: PlanetscaleLogo,
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
- src: NotionLogo,
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
- src: GmailLogo,
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
- <img
100
- alt={integration.name}
101
- className={cn(
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
+ }