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.
Files changed (320) hide show
  1. package/dist/chunk-NJPHI6KT.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
@@ -1,70 +1,55 @@
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
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-8"
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
- <img
24
- alt={logo.alt}
25
- className="pointer-events-none block h-4 select-none md:h-5 dark:brightness-0 dark:invert"
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
- 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";
15
+
16
+ type LogoComponent = ElementType<SVGProps<SVGSVGElement>>;
11
17
 
12
18
  type Logo = {
13
- src: { src: string } | string;
19
+ Component: LogoComponent;
14
20
  alt: string;
21
+ className?: string;
15
22
  };
16
23
 
17
- const getLogoSrc = (source: Logo["src"]) =>
18
- typeof source === "string" ? source : source.src;
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
- <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"
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 ClaudeLogo from "./logos/claude-wordmark.svg";
3
- import ClerkLogo from "./logos/clerk-wordmark.svg";
4
- import GithubLogo from "./logos/github-wordmark.svg";
5
- import NvidiaLogo from "./logos/nvidia-wordmark.svg";
6
- import OpenAILogo from "./logos/openai-wordmark.svg";
7
- import SupabaseLogo from "./logos/supabase-wordmark.svg";
8
- import TursoLogo from "./logos/turso-wordmark.svg";
9
- import VercelLogo from "./logos/vercel-wordmark.svg";
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 LogoSource = { src: string } | string;
14
+ type LogoComponent = ElementType<SVGProps<SVGSVGElement>>;
12
15
 
13
- const getLogoSrc = (source: LogoSource) =>
14
- typeof source === "string" ? source : source.src;
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-4">
19
- <InfiniteSlider gap={42} reverse speed={80} speedOnHover={25}>
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
- <img
22
- alt={logo.alt}
23
- className="pointer-events-none h-4 select-none md:h-5 dark:brightness-0 dark:invert"
24
- height="auto"
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 ClaudeLogo from "./logos/claude-wordmark.svg";
6
- import ClerkLogo from "./logos/clerk-wordmark.svg";
7
- import GithubLogo from "./logos/github-wordmark.svg";
8
- import NvidiaLogo from "./logos/nvidia-wordmark.svg";
9
- import OpenAILogo from "./logos/openai-wordmark.svg";
10
- import SupabaseLogo from "./logos/supabase-wordmark.svg";
11
- import TursoLogo from "./logos/turso-wordmark.svg";
12
- import VercelLogo from "./logos/vercel-wordmark.svg";
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 LogoSource = { src: string } | string;
17
+ type LogoComponent = ElementType<SVGProps<SVGSVGElement>>;
15
18
 
16
- const getLogoSrc = (source: LogoSource) =>
17
- typeof source === "string" ? source : source.src;
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-6">
22
- <InfiniteSlider gap={42} reverse speed={60} speedOnHover={20}>
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
- <img
25
- alt={logo.alt}
26
- className="pointer-events-none h-4 select-none md:h-5 dark:brightness-0 dark:invert"
27
- height="auto"
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 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
- ];
@@ -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 'lucide-react';
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
- type LucideIcon,
10
- } from 'lucide-react';
11
- import { useState } from 'react';
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: LucideIcon;
28
+ icon: IconComponent;
19
29
  actionLabel: string;
20
30
  }
21
31
 
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { CircleCheckIcon } from 'lucide-react';
3
+ import { CircleCheck as CircleCheckIcon } from 'love-ui/icons';
4
4
  import { useState } from 'react';
5
5
  import { Progress } from '@/registry/default/ui/progress';
6
6
  import { cn } from '@/lib/utils';
@@ -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 'lucide-react';
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,