love-ui 1.2.12 → 1.2.14

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 (988) hide show
  1. package/dist/index.js +8 -7
  2. package/dist/mcp-server.js +1 -1
  3. package/package.json +3 -2
  4. package/packages/loveui-skills/SKILL.md +99 -0
  5. package/packages/loveui-skills/agents/openai.yaml +11 -0
  6. package/packages/loveui-skills/references/design-directions.md +60 -0
  7. package/packages/loveui-skills/references/mcp-catalog-workflow.md +68 -0
  8. package/packages/loveui-skills/references/page-blueprints.md +76 -0
  9. package/packages/loveui-skills/references/quality-gates.md +51 -0
  10. package/public/r/accordion-controlled.json +1 -1
  11. package/public/r/accordion-demo.json +1 -1
  12. package/public/r/accordion-multiple.json +1 -1
  13. package/public/r/accordion-single.json +1 -1
  14. package/public/r/alert-demo.json +1 -1
  15. package/public/r/alert-dialog-demo.json +1 -1
  16. package/public/r/alert-error.json +1 -1
  17. package/public/r/alert-info.json +1 -1
  18. package/public/r/alert-success.json +1 -1
  19. package/public/r/alert-warning.json +1 -1
  20. package/public/r/alert-with-icon-action.json +1 -1
  21. package/public/r/alert-with-icon.json +1 -1
  22. package/public/r/announcement-tagless.json +1 -1
  23. package/public/r/announcement-themes.json +1 -1
  24. package/public/r/announcement.json +1 -1
  25. package/public/r/autocomplete-async.json +1 -1
  26. package/public/r/autocomplete-autohighlight.json +1 -1
  27. package/public/r/autocomplete-demo.json +1 -1
  28. package/public/r/autocomplete-disabled.json +1 -1
  29. package/public/r/autocomplete-form.json +1 -1
  30. package/public/r/autocomplete-grouped.json +1 -1
  31. package/public/r/autocomplete-inline.json +1 -1
  32. package/public/r/autocomplete-lg.json +1 -1
  33. package/public/r/autocomplete-limit.json +1 -1
  34. package/public/r/autocomplete-sm.json +1 -1
  35. package/public/r/autocomplete-with-clear.json +1 -1
  36. package/public/r/autocomplete-with-label.json +1 -1
  37. package/public/r/autocomplete-with-trigger-clear.json +1 -1
  38. package/public/r/avatar-demo.json +1 -1
  39. package/public/r/avatar-fallback.json +1 -1
  40. package/public/r/avatar-group.json +1 -1
  41. package/public/r/avatar-radius.json +1 -1
  42. package/public/r/avatar-size.json +1 -1
  43. package/public/r/avatar-stack-hover.json +1 -1
  44. package/public/r/avatar-stack.json +1 -1
  45. package/public/r/badge-demo.json +1 -1
  46. package/public/r/badge-destructive.json +1 -1
  47. package/public/r/badge-error.json +1 -1
  48. package/public/r/badge-info.json +1 -1
  49. package/public/r/badge-lg.json +1 -1
  50. package/public/r/badge-outline.json +1 -1
  51. package/public/r/badge-secondary.json +1 -1
  52. package/public/r/badge-sm.json +1 -1
  53. package/public/r/badge-success.json +1 -1
  54. package/public/r/badge-warning.json +1 -1
  55. package/public/r/badge-with-icon.json +1 -1
  56. package/public/r/badge-with-link.json +1 -1
  57. package/public/r/banner-inset.json +1 -1
  58. package/public/r/banner-themes.json +1 -1
  59. package/public/r/banner.json +1 -1
  60. package/public/r/bookmarks.json +206 -0
  61. package/public/r/breadcrumb-custom-separator.json +1 -1
  62. package/public/r/breadcrumb-demo.json +1 -1
  63. package/public/r/button-demo.json +1 -1
  64. package/public/r/button-destructive-outline.json +1 -1
  65. package/public/r/button-destructive.json +1 -1
  66. package/public/r/button-disabled.json +1 -1
  67. package/public/r/button-ghost.json +1 -1
  68. package/public/r/button-lg.json +1 -1
  69. package/public/r/button-link.json +1 -1
  70. package/public/r/button-loading.json +1 -1
  71. package/public/r/button-outline.json +1 -1
  72. package/public/r/button-secondary.json +1 -1
  73. package/public/r/button-sm.json +1 -1
  74. package/public/r/button-with-icon.json +1 -1
  75. package/public/r/button-with-link.json +1 -1
  76. package/public/r/button-xl.json +1 -1
  77. package/public/r/button-xs.json +1 -1
  78. package/public/r/calendar-headless.json +1 -1
  79. package/public/r/calendar-rac.json +16 -0
  80. package/public/r/calendar.json +1 -1
  81. package/public/r/card-demo.json +1 -1
  82. package/public/r/chart.json +15 -0
  83. package/public/r/checkbox-card.json +1 -1
  84. package/public/r/checkbox-demo.json +1 -1
  85. package/public/r/checkbox-disabled.json +1 -1
  86. package/public/r/checkbox-form.json +1 -1
  87. package/public/r/checkbox-group-demo.json +1 -1
  88. package/public/r/checkbox-group-disabled.json +1 -1
  89. package/public/r/checkbox-group-form.json +1 -1
  90. package/public/r/checkbox-group-nested-parent.json +1 -1
  91. package/public/r/checkbox-group-parent.json +1 -1
  92. package/public/r/checkbox-tree.json +12 -0
  93. package/public/r/checkbox-with-description.json +1 -1
  94. package/public/r/choicebox-inline.json +1 -1
  95. package/public/r/choicebox.json +1 -1
  96. package/public/r/codebase.json +1 -1
  97. package/public/r/collaborative-canvas.json +1 -1
  98. package/public/r/collapsible-demo.json +1 -1
  99. package/public/r/combobox-autohighlight.json +1 -1
  100. package/public/r/combobox-controlled.json +1 -1
  101. package/public/r/combobox-create-new.json +1 -1
  102. package/public/r/combobox-demo.json +1 -1
  103. package/public/r/combobox-disabled.json +1 -1
  104. package/public/r/combobox-fixed-width.json +1 -1
  105. package/public/r/combobox-form.json +1 -1
  106. package/public/r/combobox-grouped.json +1 -1
  107. package/public/r/combobox-lg.json +1 -1
  108. package/public/r/combobox-multiple-form.json +1 -1
  109. package/public/r/combobox-multiple.json +1 -1
  110. package/public/r/combobox-sm.json +1 -1
  111. package/public/r/combobox-with-clear.json +1 -1
  112. package/public/r/combobox-with-inner-input.json +1 -1
  113. package/public/r/combobox-with-label.json +1 -1
  114. package/public/r/command.json +18 -0
  115. package/public/r/comp-01.json +22 -0
  116. package/public/r/comp-02.json +23 -0
  117. package/public/r/comp-03.json +23 -0
  118. package/public/r/comp-04.json +23 -0
  119. package/public/r/comp-05.json +22 -0
  120. package/public/r/comp-06.json +23 -0
  121. package/public/r/comp-07.json +22 -0
  122. package/public/r/comp-08.json +23 -0
  123. package/public/r/comp-09.json +22 -0
  124. package/public/r/comp-10.json +22 -0
  125. package/public/r/comp-100.json +23 -0
  126. package/public/r/comp-101.json +23 -0
  127. package/public/r/comp-102.json +23 -0
  128. package/public/r/comp-103.json +23 -0
  129. package/public/r/comp-104.json +23 -0
  130. package/public/r/comp-105.json +23 -0
  131. package/public/r/comp-106.json +22 -0
  132. package/public/r/comp-107.json +22 -0
  133. package/public/r/comp-108.json +23 -0
  134. package/public/r/comp-109.json +22 -0
  135. package/public/r/comp-11.json +22 -0
  136. package/public/r/comp-110.json +22 -0
  137. package/public/r/comp-111.json +21 -0
  138. package/public/r/comp-112.json +21 -0
  139. package/public/r/comp-113.json +22 -0
  140. package/public/r/comp-114.json +23 -0
  141. package/public/r/comp-115.json +22 -0
  142. package/public/r/comp-116.json +22 -0
  143. package/public/r/comp-117.json +23 -0
  144. package/public/r/comp-118.json +23 -0
  145. package/public/r/comp-119.json +27 -0
  146. package/public/r/comp-12.json +22 -0
  147. package/public/r/comp-120.json +27 -0
  148. package/public/r/comp-121.json +27 -0
  149. package/public/r/comp-122.json +27 -0
  150. package/public/r/comp-123.json +22 -0
  151. package/public/r/comp-124.json +22 -0
  152. package/public/r/comp-125.json +31 -0
  153. package/public/r/comp-126.json +31 -0
  154. package/public/r/comp-127.json +21 -0
  155. package/public/r/comp-128.json +21 -0
  156. package/public/r/comp-129.json +24 -0
  157. package/public/r/comp-13.json +22 -0
  158. package/public/r/comp-130.json +23 -0
  159. package/public/r/comp-131.json +23 -0
  160. package/public/r/comp-132.json +23 -0
  161. package/public/r/comp-133.json +23 -0
  162. package/public/r/comp-134.json +23 -0
  163. package/public/r/comp-135.json +24 -0
  164. package/public/r/comp-136.json +23 -0
  165. package/public/r/comp-137.json +23 -0
  166. package/public/r/comp-138.json +25 -0
  167. package/public/r/comp-139.json +23 -0
  168. package/public/r/comp-14.json +22 -0
  169. package/public/r/comp-140.json +23 -0
  170. package/public/r/comp-141.json +23 -0
  171. package/public/r/comp-142.json +25 -0
  172. package/public/r/comp-143.json +23 -0
  173. package/public/r/comp-144.json +24 -0
  174. package/public/r/comp-145.json +24 -0
  175. package/public/r/comp-146.json +24 -0
  176. package/public/r/comp-147.json +24 -0
  177. package/public/r/comp-148.json +25 -0
  178. package/public/r/comp-149.json +24 -0
  179. package/public/r/comp-15.json +22 -0
  180. package/public/r/comp-150.json +21 -0
  181. package/public/r/comp-151.json +23 -0
  182. package/public/r/comp-152.json +23 -0
  183. package/public/r/comp-153.json +23 -0
  184. package/public/r/comp-154.json +23 -0
  185. package/public/r/comp-155.json +23 -0
  186. package/public/r/comp-156.json +25 -0
  187. package/public/r/comp-157.json +27 -0
  188. package/public/r/comp-158.json +24 -0
  189. package/public/r/comp-159.json +24 -0
  190. package/public/r/comp-16.json +22 -0
  191. package/public/r/comp-160.json +24 -0
  192. package/public/r/comp-161.json +24 -0
  193. package/public/r/comp-162.json +24 -0
  194. package/public/r/comp-163.json +28 -0
  195. package/public/r/comp-164.json +24 -0
  196. package/public/r/comp-165.json +24 -0
  197. package/public/r/comp-166.json +25 -0
  198. package/public/r/comp-167.json +24 -0
  199. package/public/r/comp-168.json +24 -0
  200. package/public/r/comp-169.json +23 -0
  201. package/public/r/comp-17.json +25 -0
  202. package/public/r/comp-170.json +25 -0
  203. package/public/r/comp-171.json +28 -0
  204. package/public/r/comp-172.json +23 -0
  205. package/public/r/comp-173.json +23 -0
  206. package/public/r/comp-174.json +23 -0
  207. package/public/r/comp-175.json +23 -0
  208. package/public/r/comp-176.json +23 -0
  209. package/public/r/comp-177.json +23 -0
  210. package/public/r/comp-178.json +23 -0
  211. package/public/r/comp-179.json +24 -0
  212. package/public/r/comp-18.json +25 -0
  213. package/public/r/comp-180.json +23 -0
  214. package/public/r/comp-181.json +25 -0
  215. package/public/r/comp-182.json +24 -0
  216. package/public/r/comp-183.json +25 -0
  217. package/public/r/comp-184.json +25 -0
  218. package/public/r/comp-185.json +24 -0
  219. package/public/r/comp-186.json +25 -0
  220. package/public/r/comp-187.json +25 -0
  221. package/public/r/comp-188.json +25 -0
  222. package/public/r/comp-189.json +23 -0
  223. package/public/r/comp-19.json +23 -0
  224. package/public/r/comp-190.json +23 -0
  225. package/public/r/comp-191.json +24 -0
  226. package/public/r/comp-192.json +23 -0
  227. package/public/r/comp-193.json +23 -0
  228. package/public/r/comp-194.json +24 -0
  229. package/public/r/comp-195.json +23 -0
  230. package/public/r/comp-196.json +24 -0
  231. package/public/r/comp-197.json +23 -0
  232. package/public/r/comp-198.json +23 -0
  233. package/public/r/comp-199.json +23 -0
  234. package/public/r/comp-20.json +23 -0
  235. package/public/r/comp-200.json +25 -0
  236. package/public/r/comp-201.json +22 -0
  237. package/public/r/comp-202.json +22 -0
  238. package/public/r/comp-203.json +23 -0
  239. package/public/r/comp-204.json +23 -0
  240. package/public/r/comp-205.json +23 -0
  241. package/public/r/comp-206.json +24 -0
  242. package/public/r/comp-207.json +23 -0
  243. package/public/r/comp-208.json +23 -0
  244. package/public/r/comp-209.json +23 -0
  245. package/public/r/comp-21.json +23 -0
  246. package/public/r/comp-210.json +24 -0
  247. package/public/r/comp-211.json +24 -0
  248. package/public/r/comp-212.json +23 -0
  249. package/public/r/comp-213.json +23 -0
  250. package/public/r/comp-214.json +23 -0
  251. package/public/r/comp-215.json +24 -0
  252. package/public/r/comp-216.json +22 -0
  253. package/public/r/comp-217.json +22 -0
  254. package/public/r/comp-218.json +25 -0
  255. package/public/r/comp-219.json +23 -0
  256. package/public/r/comp-22.json +23 -0
  257. package/public/r/comp-220.json +24 -0
  258. package/public/r/comp-221.json +23 -0
  259. package/public/r/comp-222.json +26 -0
  260. package/public/r/comp-223.json +26 -0
  261. package/public/r/comp-224.json +23 -0
  262. package/public/r/comp-225.json +24 -0
  263. package/public/r/comp-226.json +26 -0
  264. package/public/r/comp-227.json +26 -0
  265. package/public/r/comp-228.json +26 -0
  266. package/public/r/comp-229.json +30 -0
  267. package/public/r/comp-23.json +24 -0
  268. package/public/r/comp-230.json +30 -0
  269. package/public/r/comp-231.json +32 -0
  270. package/public/r/comp-232.json +31 -0
  271. package/public/r/comp-233.json +30 -0
  272. package/public/r/comp-234.json +28 -0
  273. package/public/r/comp-235.json +28 -0
  274. package/public/r/comp-236.json +24 -0
  275. package/public/r/comp-237.json +26 -0
  276. package/public/r/comp-238.json +26 -0
  277. package/public/r/comp-239.json +26 -0
  278. package/public/r/comp-24.json +23 -0
  279. package/public/r/comp-240.json +23 -0
  280. package/public/r/comp-241.json +24 -0
  281. package/public/r/comp-242.json +23 -0
  282. package/public/r/comp-243.json +23 -0
  283. package/public/r/comp-244.json +23 -0
  284. package/public/r/comp-245.json +23 -0
  285. package/public/r/comp-246.json +23 -0
  286. package/public/r/comp-247.json +23 -0
  287. package/public/r/comp-248.json +23 -0
  288. package/public/r/comp-249.json +24 -0
  289. package/public/r/comp-25.json +24 -0
  290. package/public/r/comp-250.json +25 -0
  291. package/public/r/comp-251.json +25 -0
  292. package/public/r/comp-252.json +25 -0
  293. package/public/r/comp-253.json +25 -0
  294. package/public/r/comp-254.json +35 -0
  295. package/public/r/comp-255.json +30 -0
  296. package/public/r/comp-256.json +25 -0
  297. package/public/r/comp-257.json +25 -0
  298. package/public/r/comp-258.json +32 -0
  299. package/public/r/comp-259.json +26 -0
  300. package/public/r/comp-26.json +24 -0
  301. package/public/r/comp-260.json +26 -0
  302. package/public/r/comp-261.json +24 -0
  303. package/public/r/comp-262.json +31 -0
  304. package/public/r/comp-263.json +25 -0
  305. package/public/r/comp-264.json +33 -0
  306. package/public/r/comp-265.json +32 -0
  307. package/public/r/comp-266.json +24 -0
  308. package/public/r/comp-267.json +19 -0
  309. package/public/r/comp-268.json +19 -0
  310. package/public/r/comp-269.json +19 -0
  311. package/public/r/comp-27.json +24 -0
  312. package/public/r/comp-270.json +19 -0
  313. package/public/r/comp-271.json +19 -0
  314. package/public/r/comp-272.json +19 -0
  315. package/public/r/comp-273.json +19 -0
  316. package/public/r/comp-274.json +19 -0
  317. package/public/r/comp-275.json +19 -0
  318. package/public/r/comp-276.json +19 -0
  319. package/public/r/comp-277.json +21 -0
  320. package/public/r/comp-278.json +21 -0
  321. package/public/r/comp-279.json +23 -0
  322. package/public/r/comp-28.json +24 -0
  323. package/public/r/comp-280.json +23 -0
  324. package/public/r/comp-281.json +23 -0
  325. package/public/r/comp-282.json +23 -0
  326. package/public/r/comp-283.json +23 -0
  327. package/public/r/comp-284.json +23 -0
  328. package/public/r/comp-285.json +23 -0
  329. package/public/r/comp-286.json +23 -0
  330. package/public/r/comp-287.json +24 -0
  331. package/public/r/comp-288.json +23 -0
  332. package/public/r/comp-289.json +24 -0
  333. package/public/r/comp-29.json +24 -0
  334. package/public/r/comp-290.json +24 -0
  335. package/public/r/comp-291.json +24 -0
  336. package/public/r/comp-292.json +24 -0
  337. package/public/r/comp-293.json +26 -0
  338. package/public/r/comp-294.json +24 -0
  339. package/public/r/comp-295.json +23 -0
  340. package/public/r/comp-296.json +23 -0
  341. package/public/r/comp-297.json +30 -0
  342. package/public/r/comp-298.json +26 -0
  343. package/public/r/comp-299.json +28 -0
  344. package/public/r/comp-30.json +23 -0
  345. package/public/r/comp-300.json +29 -0
  346. package/public/r/comp-301.json +24 -0
  347. package/public/r/comp-302.json +18 -0
  348. package/public/r/comp-303.json +18 -0
  349. package/public/r/comp-304.json +18 -0
  350. package/public/r/comp-305.json +21 -0
  351. package/public/r/comp-306.json +21 -0
  352. package/public/r/comp-307.json +21 -0
  353. package/public/r/comp-308.json +21 -0
  354. package/public/r/comp-309.json +21 -0
  355. package/public/r/comp-31.json +21 -0
  356. package/public/r/comp-310.json +23 -0
  357. package/public/r/comp-311.json +20 -0
  358. package/public/r/comp-312.json +21 -0
  359. package/public/r/comp-313.json +26 -0
  360. package/public/r/comp-314.json +26 -0
  361. package/public/r/comp-315.json +24 -0
  362. package/public/r/comp-316.json +25 -0
  363. package/public/r/comp-317.json +24 -0
  364. package/public/r/comp-318.json +24 -0
  365. package/public/r/comp-319.json +24 -0
  366. package/public/r/comp-32.json +21 -0
  367. package/public/r/comp-320.json +27 -0
  368. package/public/r/comp-321.json +28 -0
  369. package/public/r/comp-322.json +27 -0
  370. package/public/r/comp-323.json +30 -0
  371. package/public/r/comp-324.json +28 -0
  372. package/public/r/comp-325.json +29 -0
  373. package/public/r/comp-326.json +30 -0
  374. package/public/r/comp-327.json +30 -0
  375. package/public/r/comp-328.json +37 -0
  376. package/public/r/comp-329.json +38 -0
  377. package/public/r/comp-33.json +18 -0
  378. package/public/r/comp-330.json +27 -0
  379. package/public/r/comp-331.json +42 -0
  380. package/public/r/comp-332.json +25 -0
  381. package/public/r/comp-333.json +29 -0
  382. package/public/r/comp-334.json +22 -0
  383. package/public/r/comp-335.json +22 -0
  384. package/public/r/comp-336.json +22 -0
  385. package/public/r/comp-337.json +22 -0
  386. package/public/r/comp-338.json +22 -0
  387. package/public/r/comp-339.json +22 -0
  388. package/public/r/comp-34.json +27 -0
  389. package/public/r/comp-340.json +22 -0
  390. package/public/r/comp-341.json +22 -0
  391. package/public/r/comp-342.json +22 -0
  392. package/public/r/comp-343.json +22 -0
  393. package/public/r/comp-344.json +22 -0
  394. package/public/r/comp-345.json +22 -0
  395. package/public/r/comp-346.json +22 -0
  396. package/public/r/comp-347.json +22 -0
  397. package/public/r/comp-348.json +22 -0
  398. package/public/r/comp-349.json +22 -0
  399. package/public/r/comp-35.json +27 -0
  400. package/public/r/comp-350.json +22 -0
  401. package/public/r/comp-351.json +22 -0
  402. package/public/r/comp-352.json +24 -0
  403. package/public/r/comp-353.json +24 -0
  404. package/public/r/comp-354.json +23 -0
  405. package/public/r/comp-355.json +23 -0
  406. package/public/r/comp-356.json +23 -0
  407. package/public/r/comp-357.json +23 -0
  408. package/public/r/comp-358.json +23 -0
  409. package/public/r/comp-359.json +24 -0
  410. package/public/r/comp-36.json +26 -0
  411. package/public/r/comp-360.json +25 -0
  412. package/public/r/comp-361.json +23 -0
  413. package/public/r/comp-362.json +24 -0
  414. package/public/r/comp-363.json +27 -0
  415. package/public/r/comp-364.json +26 -0
  416. package/public/r/comp-365.json +24 -0
  417. package/public/r/comp-366.json +23 -0
  418. package/public/r/comp-367.json +23 -0
  419. package/public/r/comp-368.json +23 -0
  420. package/public/r/comp-369.json +23 -0
  421. package/public/r/comp-37.json +23 -0
  422. package/public/r/comp-370.json +23 -0
  423. package/public/r/comp-371.json +24 -0
  424. package/public/r/comp-372.json +24 -0
  425. package/public/r/comp-373.json +25 -0
  426. package/public/r/comp-374.json +26 -0
  427. package/public/r/comp-375.json +25 -0
  428. package/public/r/comp-376.json +26 -0
  429. package/public/r/comp-377.json +27 -0
  430. package/public/r/comp-378.json +24 -0
  431. package/public/r/comp-379.json +24 -0
  432. package/public/r/comp-38.json +23 -0
  433. package/public/r/comp-380.json +24 -0
  434. package/public/r/comp-381.json +26 -0
  435. package/public/r/comp-382.json +25 -0
  436. package/public/r/comp-383.json +26 -0
  437. package/public/r/comp-384.json +24 -0
  438. package/public/r/comp-385.json +24 -0
  439. package/public/r/comp-386.json +24 -0
  440. package/public/r/comp-387.json +28 -0
  441. package/public/r/comp-388.json +26 -0
  442. package/public/r/comp-389.json +24 -0
  443. package/public/r/comp-39.json +23 -0
  444. package/public/r/comp-390.json +23 -0
  445. package/public/r/comp-391.json +23 -0
  446. package/public/r/comp-392.json +23 -0
  447. package/public/r/comp-393.json +23 -0
  448. package/public/r/comp-394.json +24 -0
  449. package/public/r/comp-395.json +24 -0
  450. package/public/r/comp-396.json +24 -0
  451. package/public/r/comp-397.json +25 -0
  452. package/public/r/comp-398.json +26 -0
  453. package/public/r/comp-399.json +26 -0
  454. package/public/r/comp-40.json +23 -0
  455. package/public/r/comp-400.json +20 -0
  456. package/public/r/comp-401.json +19 -0
  457. package/public/r/comp-402.json +19 -0
  458. package/public/r/comp-403.json +19 -0
  459. package/public/r/comp-404.json +19 -0
  460. package/public/r/comp-405.json +19 -0
  461. package/public/r/comp-406.json +19 -0
  462. package/public/r/comp-407.json +19 -0
  463. package/public/r/comp-408.json +19 -0
  464. package/public/r/comp-409.json +22 -0
  465. package/public/r/comp-41.json +29 -0
  466. package/public/r/comp-410.json +22 -0
  467. package/public/r/comp-411.json +22 -0
  468. package/public/r/comp-412.json +19 -0
  469. package/public/r/comp-413.json +22 -0
  470. package/public/r/comp-414.json +22 -0
  471. package/public/r/comp-415.json +22 -0
  472. package/public/r/comp-416.json +23 -0
  473. package/public/r/comp-417.json +22 -0
  474. package/public/r/comp-418.json +23 -0
  475. package/public/r/comp-419.json +23 -0
  476. package/public/r/comp-42.json +30 -0
  477. package/public/r/comp-420.json +23 -0
  478. package/public/r/comp-421.json +23 -0
  479. package/public/r/comp-422.json +23 -0
  480. package/public/r/comp-423.json +24 -0
  481. package/public/r/comp-424.json +22 -0
  482. package/public/r/comp-425.json +23 -0
  483. package/public/r/comp-426.json +23 -0
  484. package/public/r/comp-427.json +23 -0
  485. package/public/r/comp-428.json +23 -0
  486. package/public/r/comp-429.json +23 -0
  487. package/public/r/comp-43.json +32 -0
  488. package/public/r/comp-430.json +23 -0
  489. package/public/r/comp-431.json +23 -0
  490. package/public/r/comp-432.json +23 -0
  491. package/public/r/comp-433.json +24 -0
  492. package/public/r/comp-434.json +24 -0
  493. package/public/r/comp-435.json +24 -0
  494. package/public/r/comp-436.json +24 -0
  495. package/public/r/comp-437.json +25 -0
  496. package/public/r/comp-438.json +23 -0
  497. package/public/r/comp-439.json +24 -0
  498. package/public/r/comp-44.json +25 -0
  499. package/public/r/comp-440.json +25 -0
  500. package/public/r/comp-441.json +25 -0
  501. package/public/r/comp-442.json +24 -0
  502. package/public/r/comp-443.json +24 -0
  503. package/public/r/comp-444.json +24 -0
  504. package/public/r/comp-445.json +24 -0
  505. package/public/r/comp-446.json +24 -0
  506. package/public/r/comp-447.json +25 -0
  507. package/public/r/comp-448.json +23 -0
  508. package/public/r/comp-449.json +23 -0
  509. package/public/r/comp-45.json +25 -0
  510. package/public/r/comp-450.json +23 -0
  511. package/public/r/comp-451.json +23 -0
  512. package/public/r/comp-452.json +23 -0
  513. package/public/r/comp-453.json +25 -0
  514. package/public/r/comp-454.json +22 -0
  515. package/public/r/comp-455.json +22 -0
  516. package/public/r/comp-456.json +22 -0
  517. package/public/r/comp-457.json +21 -0
  518. package/public/r/comp-458.json +22 -0
  519. package/public/r/comp-459.json +26 -0
  520. package/public/r/comp-46.json +26 -0
  521. package/public/r/comp-460.json +26 -0
  522. package/public/r/comp-461.json +27 -0
  523. package/public/r/comp-462.json +27 -0
  524. package/public/r/comp-463.json +30 -0
  525. package/public/r/comp-464.json +29 -0
  526. package/public/r/comp-465.json +29 -0
  527. package/public/r/comp-466.json +21 -0
  528. package/public/r/comp-467.json +23 -0
  529. package/public/r/comp-468.json +21 -0
  530. package/public/r/comp-469.json +21 -0
  531. package/public/r/comp-47.json +32 -0
  532. package/public/r/comp-470.json +21 -0
  533. package/public/r/comp-471.json +21 -0
  534. package/public/r/comp-472.json +23 -0
  535. package/public/r/comp-473.json +24 -0
  536. package/public/r/comp-474.json +22 -0
  537. package/public/r/comp-475.json +22 -0
  538. package/public/r/comp-476.json +21 -0
  539. package/public/r/comp-477.json +31 -0
  540. package/public/r/comp-478.json +36 -0
  541. package/public/r/comp-479.json +28 -0
  542. package/public/r/comp-48.json +32 -0
  543. package/public/r/comp-480.json +30 -0
  544. package/public/r/comp-481.json +34 -0
  545. package/public/r/comp-482.json +33 -0
  546. package/public/r/comp-483.json +37 -0
  547. package/public/r/comp-484.json +41 -0
  548. package/public/r/comp-485.json +43 -0
  549. package/public/r/comp-486.json +23 -0
  550. package/public/r/comp-487.json +26 -0
  551. package/public/r/comp-488.json +27 -0
  552. package/public/r/comp-489.json +28 -0
  553. package/public/r/comp-49.json +32 -0
  554. package/public/r/comp-490.json +23 -0
  555. package/public/r/comp-491.json +24 -0
  556. package/public/r/comp-492.json +25 -0
  557. package/public/r/comp-493.json +23 -0
  558. package/public/r/comp-494.json +23 -0
  559. package/public/r/comp-495.json +24 -0
  560. package/public/r/comp-496.json +23 -0
  561. package/public/r/comp-497.json +24 -0
  562. package/public/r/comp-498.json +24 -0
  563. package/public/r/comp-499.json +24 -0
  564. package/public/r/comp-50.json +32 -0
  565. package/public/r/comp-500.json +25 -0
  566. package/public/r/comp-501.json +25 -0
  567. package/public/r/comp-502.json +26 -0
  568. package/public/r/comp-503.json +27 -0
  569. package/public/r/comp-504.json +28 -0
  570. package/public/r/comp-505.json +28 -0
  571. package/public/r/comp-506.json +26 -0
  572. package/public/r/comp-507.json +27 -0
  573. package/public/r/comp-508.json +25 -0
  574. package/public/r/comp-509.json +25 -0
  575. package/public/r/comp-51.json +23 -0
  576. package/public/r/comp-510.json +24 -0
  577. package/public/r/comp-511.json +27 -0
  578. package/public/r/comp-512.json +27 -0
  579. package/public/r/comp-513.json +21 -0
  580. package/public/r/comp-514.json +21 -0
  581. package/public/r/comp-515.json +21 -0
  582. package/public/r/comp-516.json +22 -0
  583. package/public/r/comp-517.json +22 -0
  584. package/public/r/comp-518.json +21 -0
  585. package/public/r/comp-519.json +21 -0
  586. package/public/r/comp-52.json +23 -0
  587. package/public/r/comp-520.json +22 -0
  588. package/public/r/comp-521.json +22 -0
  589. package/public/r/comp-522.json +21 -0
  590. package/public/r/comp-523.json +21 -0
  591. package/public/r/comp-524.json +21 -0
  592. package/public/r/comp-525.json +21 -0
  593. package/public/r/comp-526.json +22 -0
  594. package/public/r/comp-527.json +23 -0
  595. package/public/r/comp-528.json +22 -0
  596. package/public/r/comp-529.json +22 -0
  597. package/public/r/comp-53.json +24 -0
  598. package/public/r/comp-530.json +22 -0
  599. package/public/r/comp-531.json +22 -0
  600. package/public/r/comp-532.json +22 -0
  601. package/public/r/comp-533.json +22 -0
  602. package/public/r/comp-534.json +22 -0
  603. package/public/r/comp-535.json +22 -0
  604. package/public/r/comp-536.json +22 -0
  605. package/public/r/comp-537.json +22 -0
  606. package/public/r/comp-538.json +22 -0
  607. package/public/r/comp-539.json +22 -0
  608. package/public/r/comp-54.json +26 -0
  609. package/public/r/comp-540.json +21 -0
  610. package/public/r/comp-541.json +21 -0
  611. package/public/r/comp-542.json +124 -0
  612. package/public/r/comp-543.json +29 -0
  613. package/public/r/comp-544.json +26 -0
  614. package/public/r/comp-545.json +29 -0
  615. package/public/r/comp-546.json +29 -0
  616. package/public/r/comp-547.json +29 -0
  617. package/public/r/comp-548.json +29 -0
  618. package/public/r/comp-549.json +29 -0
  619. package/public/r/comp-55.json +27 -0
  620. package/public/r/comp-550.json +29 -0
  621. package/public/r/comp-551.json +30 -0
  622. package/public/r/comp-552.json +29 -0
  623. package/public/r/comp-553.json +29 -0
  624. package/public/r/comp-554.json +36 -0
  625. package/public/r/comp-555.json +23 -0
  626. package/public/r/comp-556.json +23 -0
  627. package/public/r/comp-557.json +23 -0
  628. package/public/r/comp-558.json +23 -0
  629. package/public/r/comp-559.json +23 -0
  630. package/public/r/comp-56.json +26 -0
  631. package/public/r/comp-560.json +23 -0
  632. package/public/r/comp-561.json +25 -0
  633. package/public/r/comp-562.json +23 -0
  634. package/public/r/comp-563.json +23 -0
  635. package/public/r/comp-564.json +24 -0
  636. package/public/r/comp-565.json +20 -0
  637. package/public/r/comp-566.json +20 -0
  638. package/public/r/comp-567.json +20 -0
  639. package/public/r/comp-568.json +20 -0
  640. package/public/r/comp-569.json +20 -0
  641. package/public/r/comp-57.json +26 -0
  642. package/public/r/comp-570.json +20 -0
  643. package/public/r/comp-571.json +23 -0
  644. package/public/r/comp-572.json +23 -0
  645. package/public/r/comp-573.json +20 -0
  646. package/public/r/comp-574.json +22 -0
  647. package/public/r/comp-575.json +20 -0
  648. package/public/r/comp-576.json +21 -0
  649. package/public/r/comp-577.json +23 -0
  650. package/public/r/comp-578.json +28 -0
  651. package/public/r/comp-579.json +28 -0
  652. package/public/r/comp-58.json +25 -0
  653. package/public/r/comp-580.json +29 -0
  654. package/public/r/comp-581.json +45 -0
  655. package/public/r/comp-582.json +42 -0
  656. package/public/r/comp-583.json +41 -0
  657. package/public/r/comp-584.json +41 -0
  658. package/public/r/comp-585.json +41 -0
  659. package/public/r/comp-586.json +34 -0
  660. package/public/r/comp-587.json +29 -0
  661. package/public/r/comp-588.json +33 -0
  662. package/public/r/comp-589.json +37 -0
  663. package/public/r/comp-59.json +22 -0
  664. package/public/r/comp-590.json +40 -0
  665. package/public/r/comp-591.json +29 -0
  666. package/public/r/comp-592.json +41 -0
  667. package/public/r/comp-593.json +36 -0
  668. package/public/r/comp-594.json +33 -0
  669. package/public/r/comp-595.json +22 -0
  670. package/public/r/comp-596.json +26 -0
  671. package/public/r/comp-597.json +22 -0
  672. package/public/r/comp-598.json +22 -0
  673. package/public/r/comp-599.json +22 -0
  674. package/public/r/comp-60.json +23 -0
  675. package/public/r/comp-600.json +17 -0
  676. package/public/r/comp-601.json +20 -0
  677. package/public/r/comp-602.json +17 -0
  678. package/public/r/comp-603.json +20 -0
  679. package/public/r/comp-604.json +17 -0
  680. package/public/r/comp-605.json +17 -0
  681. package/public/r/comp-606.json +20 -0
  682. package/public/r/comp-607.json +20 -0
  683. package/public/r/comp-608.json +20 -0
  684. package/public/r/comp-609.json +20 -0
  685. package/public/r/comp-61.json +23 -0
  686. package/public/r/comp-610.json +23 -0
  687. package/public/r/comp-611.json +23 -0
  688. package/public/r/comp-612.json +17 -0
  689. package/public/r/comp-613.json +20 -0
  690. package/public/r/comp-614.json +17 -0
  691. package/public/r/comp-615.json +26 -0
  692. package/public/r/comp-616.json +26 -0
  693. package/public/r/comp-617.json +26 -0
  694. package/public/r/comp-62.json +23 -0
  695. package/public/r/comp-63.json +22 -0
  696. package/public/r/comp-64.json +23 -0
  697. package/public/r/comp-65.json +22 -0
  698. package/public/r/comp-66.json +22 -0
  699. package/public/r/comp-67.json +23 -0
  700. package/public/r/comp-68.json +24 -0
  701. package/public/r/comp-69.json +24 -0
  702. package/public/r/comp-70.json +24 -0
  703. package/public/r/comp-71.json +22 -0
  704. package/public/r/comp-72.json +21 -0
  705. package/public/r/comp-73.json +18 -0
  706. package/public/r/comp-74.json +27 -0
  707. package/public/r/comp-75.json +22 -0
  708. package/public/r/comp-76.json +23 -0
  709. package/public/r/comp-77.json +22 -0
  710. package/public/r/comp-78.json +21 -0
  711. package/public/r/comp-79.json +22 -0
  712. package/public/r/comp-80.json +21 -0
  713. package/public/r/comp-81.json +21 -0
  714. package/public/r/comp-82.json +22 -0
  715. package/public/r/comp-83.json +21 -0
  716. package/public/r/comp-84.json +21 -0
  717. package/public/r/comp-85.json +22 -0
  718. package/public/r/comp-86.json +22 -0
  719. package/public/r/comp-87.json +21 -0
  720. package/public/r/comp-88.json +22 -0
  721. package/public/r/comp-89.json +21 -0
  722. package/public/r/comp-90.json +22 -0
  723. package/public/r/comp-91.json +22 -0
  724. package/public/r/comp-92.json +22 -0
  725. package/public/r/comp-93.json +22 -0
  726. package/public/r/comp-94.json +24 -0
  727. package/public/r/comp-95.json +26 -0
  728. package/public/r/comp-96.json +21 -0
  729. package/public/r/comp-97.json +21 -0
  730. package/public/r/comp-98.json +22 -0
  731. package/public/r/comp-99.json +23 -0
  732. package/public/r/comparison-event-handlers.json +1 -1
  733. package/public/r/comparison-hover.json +1 -1
  734. package/public/r/comparison.json +1 -1
  735. package/public/r/context-menu.json +16 -0
  736. package/public/r/contribution-graph-custom-footer.json +1 -1
  737. package/public/r/credit-card-apple.json +1 -1
  738. package/public/r/credit-card-back.json +1 -1
  739. package/public/r/credit-card.json +1 -1
  740. package/public/r/cropper.json +15 -0
  741. package/public/r/cursor-color.json +1 -1
  742. package/public/r/cursor-message.json +1 -1
  743. package/public/r/cursor-name-message.json +1 -1
  744. package/public/r/cursor-name.json +1 -1
  745. package/public/r/cursor.json +1 -1
  746. package/public/r/dashboard-1.json +263 -0
  747. package/public/r/dashboard-2.json +264 -0
  748. package/public/r/dashboard-3.json +225 -0
  749. package/public/r/datefield-rac.json +15 -0
  750. package/public/r/deck-controlled.json +1 -1
  751. package/public/r/deck-product-cards.json +1 -1
  752. package/public/r/deck.json +1 -1
  753. package/public/r/dialog-close-confirmation.json +1 -1
  754. package/public/r/dialog-demo.json +1 -1
  755. package/public/r/dialog-from-menu.json +1 -1
  756. package/public/r/dialog-nested.json +1 -1
  757. package/public/r/dialog-stack-controlled.json +1 -1
  758. package/public/r/dialog-stack-navigation.json +1 -1
  759. package/public/r/dialog-stack-six.json +1 -1
  760. package/public/r/dialog-stack.json +1 -1
  761. package/public/r/dropdown-menu.json +15 -0
  762. package/public/r/dropzone-custom-empty-state.json +1 -1
  763. package/public/r/dropzone-image-preview.json +1 -1
  764. package/public/r/editor.json +1 -1
  765. package/public/r/emails.json +243 -0
  766. package/public/r/empty-demo.json +1 -1
  767. package/public/r/example-app-calendar.json +323 -0
  768. package/public/r/field-2.json +19 -0
  769. package/public/r/field-autocomplete.json +1 -1
  770. package/public/r/field-checkbox-group.json +1 -1
  771. package/public/r/field-checkbox.json +1 -1
  772. package/public/r/field-combobox-multiple.json +1 -1
  773. package/public/r/field-combobox.json +1 -1
  774. package/public/r/field-complete-form.json +1 -1
  775. package/public/r/field-demo.json +1 -1
  776. package/public/r/field-disabled.json +1 -1
  777. package/public/r/field-error.json +1 -1
  778. package/public/r/field-number-field.json +1 -1
  779. package/public/r/field-radio.json +1 -1
  780. package/public/r/field-required.json +1 -1
  781. package/public/r/field-select.json +1 -1
  782. package/public/r/field-slider.json +1 -1
  783. package/public/r/field-switch.json +1 -1
  784. package/public/r/field-textarea.json +1 -1
  785. package/public/r/field-validity.json +1 -1
  786. package/public/r/fieldset-demo.json +1 -1
  787. package/public/r/files.json +195 -0
  788. package/public/r/form-demo.json +1 -1
  789. package/public/r/form-zod.json +1 -1
  790. package/public/r/form.json +1 -1
  791. package/public/r/frame-demo.json +1 -1
  792. package/public/r/gantt-lanes.json +1 -1
  793. package/public/r/gantt-no-sidebar.json +1 -1
  794. package/public/r/gantt-read-only.json +1 -1
  795. package/public/r/gantt.json +1 -1
  796. package/public/r/glimpse-custom.json +1 -1
  797. package/public/r/glimpse.json +1 -1
  798. package/public/r/gooey-toast-demo.json +1 -1
  799. package/public/r/gooey-toast-promise.json +1 -1
  800. package/public/r/gooey-toast-states.json +1 -1
  801. package/public/r/gooey-toast-with-button.json +1 -1
  802. package/public/r/group-demo.json +1 -1
  803. package/public/r/group-with-input.json +1 -1
  804. package/public/r/hero.json +1 -1
  805. package/public/r/hover-card.json +15 -0
  806. package/public/r/image-crop-circular.json +1 -1
  807. package/public/r/image-crop-custom.json +1 -1
  808. package/public/r/image-crop.json +1 -1
  809. package/public/r/image-zoom-background.json +1 -1
  810. package/public/r/image-zoom-margin.json +1 -1
  811. package/public/r/image-zoom.json +1 -1
  812. package/public/r/input-demo.json +1 -1
  813. package/public/r/input-disabled.json +1 -1
  814. package/public/r/input-file.json +1 -1
  815. package/public/r/input-group.json +20 -0
  816. package/public/r/input-lg.json +1 -1
  817. package/public/r/input-sm.json +1 -1
  818. package/public/r/input-with-button.json +1 -1
  819. package/public/r/input-with-label.json +1 -1
  820. package/public/r/kanban-simple.json +1 -1
  821. package/public/r/kanban.json +1 -1
  822. package/public/r/kbd.json +12 -0
  823. package/public/r/leads.json +271 -0
  824. package/public/r/list-simple.json +1 -1
  825. package/public/r/list.json +1 -1
  826. package/public/r/maps.json +188 -0
  827. package/public/r/menu-checkbox.json +1 -1
  828. package/public/r/menu-close-on-click.json +1 -1
  829. package/public/r/menu-demo.json +1 -1
  830. package/public/r/menu-group-labels.json +1 -1
  831. package/public/r/menu-hover.json +1 -1
  832. package/public/r/menu-link.json +1 -1
  833. package/public/r/menu-nested.json +1 -1
  834. package/public/r/menu-radio-group.json +1 -1
  835. package/public/r/meter-demo.json +1 -1
  836. package/public/r/meter-with-formatted-value.json +1 -1
  837. package/public/r/meter-with-range.json +1 -1
  838. package/public/r/mini-calendar-controlled.json +1 -1
  839. package/public/r/multiselect.json +15 -0
  840. package/public/r/navigation-menu.json +12 -0
  841. package/public/r/number-field-form.json +1 -1
  842. package/public/r/number-field-with-label.json +1 -1
  843. package/public/r/number-field-with-scrub.json +1 -1
  844. package/public/r/number-field-with-step.json +1 -1
  845. package/public/r/pill-avatar-group.json +1 -1
  846. package/public/r/pill-delta.json +1 -1
  847. package/public/r/pill-icon.json +1 -1
  848. package/public/r/pill-indicator.json +1 -1
  849. package/public/r/pill-status.json +1 -1
  850. package/public/r/pill.json +1 -1
  851. package/public/r/popover-demo.json +1 -1
  852. package/public/r/popover-with-close.json +1 -1
  853. package/public/r/preview-card-demo.json +1 -1
  854. package/public/r/pricing.json +1 -1
  855. package/public/r/progress-with-formatted-value.json +1 -1
  856. package/public/r/progress-with-label-value.json +1 -1
  857. package/public/r/radio-group-card.json +1 -1
  858. package/public/r/radio-group-demo.json +1 -1
  859. package/public/r/radio-group-disabled.json +1 -1
  860. package/public/r/radio-group-form.json +1 -1
  861. package/public/r/radio-group-with-description.json +1 -1
  862. package/public/r/reel-custom.json +1 -1
  863. package/public/r/reel-images.json +1 -1
  864. package/public/r/reel-minimal.json +1 -1
  865. package/public/r/reel.json +1 -1
  866. package/public/r/registry.json +18217 -0
  867. package/public/r/relative-time-controlled.json +1 -1
  868. package/public/r/relative-time-format-date.json +1 -1
  869. package/public/r/relative-time-format-time.json +1 -1
  870. package/public/r/relative-time.json +1 -1
  871. package/public/r/rentals.json +187 -0
  872. package/public/r/roadmap.json +1 -1
  873. package/public/r/sandbox-no-file-explorer.json +1 -1
  874. package/public/r/sandbox.json +1 -1
  875. package/public/r/scroll-area-both.json +1 -1
  876. package/public/r/scroll-area-demo.json +1 -1
  877. package/public/r/scroll-area-horizontal.json +1 -1
  878. package/public/r/select-demo.json +1 -1
  879. package/public/r/select-disabled.json +1 -1
  880. package/public/r/select-form.json +1 -1
  881. package/public/r/select-lg.json +1 -1
  882. package/public/r/select-native.json +12 -0
  883. package/public/r/select-sm.json +1 -1
  884. package/public/r/select-with-groups.json +1 -1
  885. package/public/r/select-without-alignment.json +1 -1
  886. package/public/r/select.json +1 -1
  887. package/public/r/separator-demo.json +1 -1
  888. package/public/r/sheet-demo.json +1 -1
  889. package/public/r/sheet-position.json +1 -1
  890. package/public/r/sidebar-nav.json +22 -0
  891. package/public/r/skeleton-demo.json +1 -1
  892. package/public/r/skeleton.json +1 -1
  893. package/public/r/slider-form.json +1 -1
  894. package/public/r/slider-with-label-value.json +1 -1
  895. package/public/r/sonner.json +16 -0
  896. package/public/r/stats-card.json +22 -0
  897. package/public/r/status-custom.json +1 -1
  898. package/public/r/stepper.json +15 -0
  899. package/public/r/stories-images.json +1 -1
  900. package/public/r/switch-card.json +1 -1
  901. package/public/r/switch-demo.json +1 -1
  902. package/public/r/switch-disabled.json +1 -1
  903. package/public/r/switch-form.json +1 -1
  904. package/public/r/switch-with-description.json +1 -1
  905. package/public/r/table-demo.json +1 -1
  906. package/public/r/table-framed.json +1 -1
  907. package/public/r/table-simple.json +1 -1
  908. package/public/r/table.json +1 -1
  909. package/public/r/tabs-demo.json +1 -1
  910. package/public/r/tabs-underline-vertical.json +1 -1
  911. package/public/r/tabs-underline.json +1 -1
  912. package/public/r/tabs-vertical.json +1 -1
  913. package/public/r/tags-create.json +1 -1
  914. package/public/r/tags-filter.json +1 -1
  915. package/public/r/tags.json +1 -1
  916. package/public/r/template-auth-eight.json +28 -0
  917. package/public/r/template-auth-five.json +28 -0
  918. package/public/r/template-auth-four.json +29 -0
  919. package/public/r/template-auth-nine.json +28 -0
  920. package/public/r/template-auth-one.json +49 -0
  921. package/public/r/template-auth-seven.json +29 -0
  922. package/public/r/template-auth-six.json +28 -0
  923. package/public/r/template-auth-three.json +49 -0
  924. package/public/r/template-auth-two.json +44 -0
  925. package/public/r/template-hero-eight.json +83 -0
  926. package/public/r/template-hero-eleven.json +29 -0
  927. package/public/r/template-hero-five.json +35 -0
  928. package/public/r/template-hero-four.json +35 -0
  929. package/public/r/template-hero-fourteen.json +101 -0
  930. package/public/r/template-hero-nine.json +74 -0
  931. package/public/r/template-hero-one.json +90 -0
  932. package/public/r/template-hero-seven.json +83 -0
  933. package/public/r/template-hero-six.json +83 -0
  934. package/public/r/template-hero-ten.json +77 -0
  935. package/public/r/template-hero-thirteen.json +101 -0
  936. package/public/r/template-hero-three.json +35 -0
  937. package/public/r/template-hero-twelve.json +30 -0
  938. package/public/r/template-hero-two.json +96 -0
  939. package/public/r/template-logo-cloud-five.json +68 -0
  940. package/public/r/template-logo-cloud-four.json +71 -0
  941. package/public/r/template-logo-cloud-one.json +89 -0
  942. package/public/r/template-logo-cloud-three.json +71 -0
  943. package/public/r/template-logo-cloud-two.json +74 -0
  944. package/public/r/textarea-demo.json +1 -1
  945. package/public/r/textarea-disabled.json +1 -1
  946. package/public/r/textarea-form.json +1 -1
  947. package/public/r/textarea-lg.json +1 -1
  948. package/public/r/textarea-sm.json +1 -1
  949. package/public/r/textarea-with-label.json +1 -1
  950. package/public/r/ticker-inline.json +1 -1
  951. package/public/r/timeline.json +15 -0
  952. package/public/r/toast-demo.json +1 -1
  953. package/public/r/toast-heights.json +1 -1
  954. package/public/r/toast-loading.json +1 -1
  955. package/public/r/toast-promise.json +1 -1
  956. package/public/r/toast-with-action.json +1 -1
  957. package/public/r/toast-with-status.json +1 -1
  958. package/public/r/toggle-demo.json +1 -1
  959. package/public/r/toggle-disabled.json +1 -1
  960. package/public/r/toggle-group-demo.json +1 -1
  961. package/public/r/toggle-group-disabled.json +1 -1
  962. package/public/r/toggle-group-lg.json +1 -1
  963. package/public/r/toggle-group-multiple.json +1 -1
  964. package/public/r/toggle-group-outline-with-separator.json +1 -1
  965. package/public/r/toggle-group-outline.json +1 -1
  966. package/public/r/toggle-group-sm.json +1 -1
  967. package/public/r/toggle-group-with-disabled-item.json +1 -1
  968. package/public/r/toggle-icon-group.json +1 -1
  969. package/public/r/toggle-lg.json +1 -1
  970. package/public/r/toggle-outline.json +1 -1
  971. package/public/r/toggle-sm.json +1 -1
  972. package/public/r/toggle-with-icon.json +1 -1
  973. package/public/r/toolbar-demo.json +1 -1
  974. package/public/r/tooltip-demo.json +1 -1
  975. package/public/r/tooltip-grouped.json +1 -1
  976. package/public/r/tree-controlled.json +1 -1
  977. package/public/r/tree-custom-icons.json +1 -1
  978. package/public/r/tree-no-lines.json +1 -1
  979. package/public/r/tree-simple.json +1 -1
  980. package/public/r/tree.json +1 -1
  981. package/public/r/typography.json +1 -1
  982. package/public/r/ui.json +5 -0
  983. package/public/r/use-character-limit.json +12 -0
  984. package/public/r/use-file-upload.json +12 -0
  985. package/public/r/use-pagination.json +12 -0
  986. package/public/r/use-slider-with-input.json +12 -0
  987. package/public/r/use-toast.json +12 -0
  988. package/public/r/utils.json +16 -0
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-316",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/dialog.json",
8
+ "https://loveui.dev/building-blocks/r/scroll-area.json"
9
+ ],
10
+ "files": [
11
+ {
12
+ "path": "registry/default/components/comp-316.tsx",
13
+ "content": "import { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/building-blocks/default/ui/dialog\"\nimport { ScrollArea } from \"@/registry/building-blocks/default/ui/scroll-area\"\n\nexport default function Component() {\n return (\n <Dialog>\n <DialogTrigger asChild>\n <Button variant=\"outline\">Scrollable (custom scrollbar)</Button>\n </DialogTrigger>\n <DialogContent className=\"flex flex-col gap-0 p-0 sm:max-h-[min(640px,80vh)] sm:max-w-lg [&>button:last-child]:hidden\">\n <ScrollArea className=\"flex max-h-full flex-col overflow-hidden\">\n <DialogHeader className=\"contents space-y-0 text-left\">\n <DialogTitle className=\"px-6 pt-6\">\n Frequently Asked Questions (FAQ)\n </DialogTitle>\n <DialogDescription asChild>\n <div className=\"p-6\">\n <div className=\"space-y-4 [&_strong]:font-semibold [&_strong]:text-foreground\">\n <div className=\"space-y-1\">\n <p>\n <strong>Account Management</strong>\n </p>\n <p>\n Navigate to the registration page, provide required\n information, and verify your email address. You can sign\n up using your email or through social media platforms.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Password Reset Process</strong>\n </p>\n <p>\n Users can reset their password through the account\n settings page. Click &quot;Forgot Password&quot; and\n follow the email verification steps to regain account\n access quickly and securely.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Service Pricing Tiers</strong>\n </p>\n <p>\n We offer three primary subscription levels designed to\n meet diverse user needs: Basic (free with limited\n features), Professional (monthly fee with comprehensive\n access), and Enterprise (custom pricing with full platform\n capabilities).\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Technical Support Channels</strong>\n </p>\n <p>\n Customer support is accessible through multiple\n communication methods including email support, live chat\n during business hours, an integrated support ticket\n system, and phone support specifically for\n enterprise-level customers.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Data Protection Strategies</strong>\n </p>\n <p>\n Our platform implements rigorous security measures\n including 256-bit SSL encryption, regular comprehensive\n security audits, strict data access controls, and\n compliance with international privacy protection\n standards.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Platform Compatibility</strong>\n </p>\n <p>\n The service supports multiple device and operating system\n environments, including web browsers like Chrome and\n Firefox, mobile applications for iOS and Android, and\n desktop applications compatible with Windows and macOS.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Subscription Management</strong>\n </p>\n <p>\n Subscriptions can be cancelled at any time through account\n settings, with pro-rated refunds available within 30 days\n of payment. Both monthly and annual billing options are\n provided, with special discounts offered for annual\n commitments.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Payment Method Options</strong>\n </p>\n <p>\n We accept a wide range of payment methods including major\n credit cards such as Visa, MasterCard, and American\n Express, digital payment platforms like PayPal, and direct\n bank transfers. Regional payment options may also be\n available depending on user location.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Customer Support</strong>\n </p>\n <p>\n Our dedicated customer support team is available 24/7,\n providing quick and efficient assistance to address any\n inquiries or issues you may have.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Privacy Policy</strong>\n </p>\n <p>\n Our privacy policy outlines how we collect, use, and\n protect your personal data, ensuring your privacy is\n protected at all times.\n </p>\n </div>\n </div>\n </div>\n </DialogDescription>\n </DialogHeader>\n <DialogFooter className=\"px-6 pb-6 sm:justify-start\">\n <DialogClose asChild>\n <Button type=\"button\" variant=\"outline\">\n Cancel\n </Button>\n </DialogClose>\n <DialogClose asChild>\n <Button type=\"button\">Okay</Button>\n </DialogClose>\n </DialogFooter>\n </ScrollArea>\n </DialogContent>\n </Dialog>\n )\n}\n",
14
+ "type": "registry:component"
15
+ }
16
+ ],
17
+ "meta": {
18
+ "tags": [
19
+ "dialog",
20
+ "modal",
21
+ "radix"
22
+ ],
23
+ "style": 1
24
+ }
25
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-317",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/dialog.json"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "registry/default/components/comp-317.tsx",
12
+ "content": "import { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/building-blocks/default/ui/dialog\"\n\nexport default function Component() {\n return (\n <Dialog>\n <DialogTrigger asChild>\n <Button variant=\"outline\">Scrollable (sticky header)</Button>\n </DialogTrigger>\n <DialogContent className=\"flex flex-col gap-0 p-0 sm:max-h-[min(640px,80vh)] sm:max-w-lg [&>button:last-child]:top-3.5\">\n <DialogHeader className=\"contents space-y-0 text-left\">\n <DialogTitle className=\"border-b px-6 py-4 text-base\">\n Frequently Asked Questions (FAQ)\n </DialogTitle>\n <div className=\"overflow-y-auto\">\n <DialogDescription asChild>\n <div className=\"px-6 py-4\">\n <div className=\"space-y-4 [&_strong]:font-semibold [&_strong]:text-foreground\">\n <div className=\"space-y-1\">\n <p>\n <strong>Account Management</strong>\n </p>\n <p>\n Navigate to the registration page, provide required\n information, and verify your email address. You can sign\n up using your email or through social media platforms.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Password Reset Process</strong>\n </p>\n <p>\n Users can reset their password through the account\n settings page. Click &quot;Forgot Password&quot; and\n follow the email verification steps to regain account\n access quickly and securely.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Service Pricing Tiers</strong>\n </p>\n <p>\n We offer three primary subscription levels designed to\n meet diverse user needs: Basic (free with limited\n features), Professional (monthly fee with comprehensive\n access), and Enterprise (custom pricing with full platform\n capabilities).\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Technical Support Channels</strong>\n </p>\n <p>\n Customer support is accessible through multiple\n communication methods including email support, live chat\n during business hours, an integrated support ticket\n system, and phone support specifically for\n enterprise-level customers.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Data Protection Strategies</strong>\n </p>\n <p>\n Our platform implements rigorous security measures\n including 256-bit SSL encryption, regular comprehensive\n security audits, strict data access controls, and\n compliance with international privacy protection\n standards.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Platform Compatibility</strong>\n </p>\n <p>\n The service supports multiple device and operating system\n environments, including web browsers like Chrome and\n Firefox, mobile applications for iOS and Android, and\n desktop applications compatible with Windows and macOS.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Subscription Management</strong>\n </p>\n <p>\n Subscriptions can be cancelled at any time through account\n settings, with pro-rated refunds available within 30 days\n of payment. Both monthly and annual billing options are\n provided, with special discounts offered for annual\n commitments.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Payment Method Options</strong>\n </p>\n <p>\n We accept a wide range of payment methods including major\n credit cards such as Visa, MasterCard, and American\n Express, digital payment platforms like PayPal, and direct\n bank transfers. Regional payment options may also be\n available depending on user location.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Customer Support</strong>\n </p>\n <p>\n Our dedicated customer support team is available 24/7,\n providing quick and efficient assistance to address any\n inquiries or issues you may have.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Privacy Policy</strong>\n </p>\n <p>\n Our privacy policy outlines how we collect, use, and\n protect your personal data, ensuring your privacy is\n protected at all times.\n </p>\n </div>\n </div>\n </div>\n </DialogDescription>\n <DialogFooter className=\"px-6 pb-6 sm:justify-start\">\n <DialogClose asChild>\n <Button type=\"button\">Okay</Button>\n </DialogClose>\n </DialogFooter>\n </div>\n </DialogHeader>\n </DialogContent>\n </Dialog>\n )\n}\n",
13
+ "type": "registry:component"
14
+ }
15
+ ],
16
+ "meta": {
17
+ "tags": [
18
+ "dialog",
19
+ "modal",
20
+ "radix"
21
+ ],
22
+ "style": 1
23
+ }
24
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-318",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/dialog.json"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "registry/default/components/comp-318.tsx",
12
+ "content": "import { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/building-blocks/default/ui/dialog\"\n\nexport default function Component() {\n return (\n <Dialog>\n <DialogTrigger asChild>\n <Button variant=\"outline\">Scrollable (sticky footer)</Button>\n </DialogTrigger>\n <DialogContent className=\"flex flex-col gap-0 p-0 sm:max-h-[min(640px,80vh)] sm:max-w-lg [&>button:last-child]:hidden\">\n <div className=\"overflow-y-auto\">\n <DialogHeader className=\"contents space-y-0 text-left\">\n <DialogTitle className=\"px-6 pt-6 text-base\">\n Frequently Asked Questions (FAQ)\n </DialogTitle>\n <DialogDescription asChild>\n <div className=\"p-6\">\n <div className=\"space-y-4 [&_strong]:font-semibold [&_strong]:text-foreground\">\n <div className=\"space-y-1\">\n <p>\n <strong>Account Management</strong>\n </p>\n <p>\n Navigate to the registration page, provide required\n information, and verify your email address. You can sign\n up using your email or through social media platforms.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Password Reset Process</strong>\n </p>\n <p>\n Users can reset their password through the account\n settings page. Click &quot;Forgot Password&quot; and\n follow the email verification steps to regain account\n access quickly and securely.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Service Pricing Tiers</strong>\n </p>\n <p>\n We offer three primary subscription levels designed to\n meet diverse user needs: Basic (free with limited\n features), Professional (monthly fee with comprehensive\n access), and Enterprise (custom pricing with full platform\n capabilities).\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Technical Support Channels</strong>\n </p>\n <p>\n Customer support is accessible through multiple\n communication methods including email support, live chat\n during business hours, an integrated support ticket\n system, and phone support specifically for\n enterprise-level customers.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Data Protection Strategies</strong>\n </p>\n <p>\n Our platform implements rigorous security measures\n including 256-bit SSL encryption, regular comprehensive\n security audits, strict data access controls, and\n compliance with international privacy protection\n standards.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Platform Compatibility</strong>\n </p>\n <p>\n The service supports multiple device and operating system\n environments, including web browsers like Chrome and\n Firefox, mobile applications for iOS and Android, and\n desktop applications compatible with Windows and macOS.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Subscription Management</strong>\n </p>\n <p>\n Subscriptions can be cancelled at any time through account\n settings, with pro-rated refunds available within 30 days\n of payment. Both monthly and annual billing options are\n provided, with special discounts offered for annual\n commitments.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Payment Method Options</strong>\n </p>\n <p>\n We accept a wide range of payment methods including major\n credit cards such as Visa, MasterCard, and American\n Express, digital payment platforms like PayPal, and direct\n bank transfers. Regional payment options may also be\n available depending on user location.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Customer Support</strong>\n </p>\n <p>\n Our dedicated customer support team is available 24/7,\n providing quick and efficient assistance to address any\n inquiries or issues you may have.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Privacy Policy</strong>\n </p>\n <p>\n Our privacy policy outlines how we collect, use, and\n protect your personal data, ensuring your privacy is\n protected at all times.\n </p>\n </div>\n </div>\n </div>\n </DialogDescription>\n </DialogHeader>\n </div>\n <DialogFooter className=\"border-t px-6 py-4\">\n <DialogClose asChild>\n <Button type=\"button\" variant=\"outline\">\n Cancel\n </Button>\n </DialogClose>\n <DialogClose asChild>\n <Button type=\"button\">Okay</Button>\n </DialogClose>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n )\n}\n",
13
+ "type": "registry:component"
14
+ }
15
+ ],
16
+ "meta": {
17
+ "tags": [
18
+ "dialog",
19
+ "modal",
20
+ "radix"
21
+ ],
22
+ "style": 1
23
+ }
24
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-319",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/dialog.json"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "registry/default/components/comp-319.tsx",
12
+ "content": "\"use client\"\n\nimport { useRef, useState } from \"react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/building-blocks/default/ui/dialog\"\n\nexport default function Component() {\n const [hasReadToBottom, setHasReadToBottom] = useState(false)\n const contentRef = useRef<HTMLDivElement>(null)\n\n const handleScroll = () => {\n const content = contentRef.current\n if (!content) return\n\n const scrollPercentage =\n content.scrollTop / (content.scrollHeight - content.clientHeight)\n if (scrollPercentage >= 0.99 && !hasReadToBottom) {\n setHasReadToBottom(true)\n }\n }\n\n return (\n <Dialog>\n <DialogTrigger asChild>\n <Button variant=\"outline\">Terms & Conditions</Button>\n </DialogTrigger>\n <DialogContent className=\"flex flex-col gap-0 p-0 sm:max-h-[min(640px,80vh)] sm:max-w-lg [&>button:last-child]:top-3.5\">\n <DialogHeader className=\"contents space-y-0 text-left\">\n <DialogTitle className=\"border-b px-6 py-4 text-base\">\n Terms & Conditions\n </DialogTitle>\n <div\n ref={contentRef}\n onScroll={handleScroll}\n className=\"overflow-y-auto\"\n >\n <DialogDescription asChild>\n <div className=\"px-6 py-4\">\n <div className=\"space-y-4 [&_strong]:font-semibold [&_strong]:text-foreground\">\n <div className=\"space-y-4\">\n <div className=\"space-y-1\">\n <p>\n <strong>Acceptance of Terms</strong>\n </p>\n <p>\n By accessing and using this website, users agree to\n comply with and be bound by these Terms of Service.\n Users who do not agree with these terms should\n discontinue use of the website immediately.\n </p>\n </div>\n\n <div className=\"space-y-1\">\n <p>\n <strong>User Account Responsibilities</strong>\n </p>\n <p>\n Users are responsible for maintaining the\n confidentiality of their account credentials. Any\n activities occurring under a user&lsquo;s account are\n the sole responsibility of the account holder. Users\n must notify the website administrators immediately of\n any unauthorized account access.\n </p>\n </div>\n\n <div className=\"space-y-1\">\n <p>\n <strong>Content Usage and Restrictions</strong>\n </p>\n <p>\n The website and its original content are protected by\n intellectual property laws. Users may not reproduce,\n distribute, modify, create derivative works, or\n commercially exploit any content without explicit\n written permission from the website owners.\n </p>\n </div>\n\n <div className=\"space-y-1\">\n <p>\n <strong>Limitation of Liability</strong>\n </p>\n <p>\n The website provides content &ldquo;as is&ldquo; without\n any warranties. The website owners shall not be liable\n for direct, indirect, incidental, consequential, or\n punitive damages arising from user interactions with the\n platform.\n </p>\n </div>\n\n <div className=\"space-y-1\">\n <p>\n <strong>User Conduct Guidelines</strong>\n </p>\n <ul className=\"list-disc pl-6\">\n <li>Not upload harmful or malicious content</li>\n <li>Respect the rights of other users</li>\n <li>\n Avoid activities that could disrupt website\n functionality\n </li>\n <li>\n Comply with applicable local and international laws\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-1\">\n <p>\n <strong>Modifications to Terms</strong>\n </p>\n <p>\n The website reserves the right to modify these terms at\n any time. Continued use of the website after changes\n constitutes acceptance of the new terms.\n </p>\n </div>\n\n <div className=\"space-y-1\">\n <p>\n <strong>Termination Clause</strong>\n </p>\n <p>\n The website may terminate or suspend user access without\n prior notice for violations of these terms or for any\n other reason deemed appropriate by the administration.\n </p>\n </div>\n\n <div className=\"space-y-1\">\n <p>\n <strong>Governing Law</strong>\n </p>\n <p>\n These terms are governed by the laws of the jurisdiction\n where the website is primarily operated, without regard\n to conflict of law principles.\n </p>\n </div>\n </div>\n </div>\n </div>\n </DialogDescription>\n </div>\n </DialogHeader>\n <DialogFooter className=\"border-t px-6 py-4 sm:items-center\">\n {!hasReadToBottom && (\n <span className=\"grow text-xs text-muted-foreground max-sm:text-center\">\n Read all terms before accepting.\n </span>\n )}\n <DialogClose asChild>\n <Button type=\"button\" variant=\"outline\">\n Cancel\n </Button>\n </DialogClose>\n <DialogClose asChild>\n <Button type=\"button\" disabled={!hasReadToBottom}>\n I agree\n </Button>\n </DialogClose>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n )\n}\n",
13
+ "type": "registry:component"
14
+ }
15
+ ],
16
+ "meta": {
17
+ "tags": [
18
+ "dialog",
19
+ "modal",
20
+ "radix"
21
+ ],
22
+ "style": 1
23
+ }
24
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-32",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/input.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-32.tsx",
11
+ "content": "import { useId } from \"react\"\n\nimport { Input } from \"@/registry/building-blocks/default/ui/input\"\n\nexport default function Component() {\n const id = useId()\n return (\n <div className=\"group relative\">\n <label\n htmlFor={id}\n className=\"origin-start absolute top-1/2 block -translate-y-1/2 cursor-text px-1 text-sm text-muted-foreground/70 transition-all group-focus-within:pointer-events-none group-focus-within:top-0 group-focus-within:cursor-default group-focus-within:text-xs group-focus-within:font-medium group-focus-within:text-foreground has-[+input:not(:placeholder-shown)]:pointer-events-none has-[+input:not(:placeholder-shown)]:top-0 has-[+input:not(:placeholder-shown)]:cursor-default has-[+input:not(:placeholder-shown)]:text-xs has-[+input:not(:placeholder-shown)]:font-medium has-[+input:not(:placeholder-shown)]:text-foreground\"\n >\n <span className=\"inline-flex bg-background px-2\">\n Input with label animation\n </span>\n </label>\n <Input id={id} type=\"email\" placeholder=\" \" />\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "input",
18
+ "label"
19
+ ]
20
+ }
21
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-320",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/dialog.json",
8
+ "https://loveui.dev/building-blocks/r/input.json",
9
+ "https://loveui.dev/building-blocks/r/label.json"
10
+ ],
11
+ "files": [
12
+ {
13
+ "path": "registry/default/components/comp-320.tsx",
14
+ "content": "\"use client\"\n\nimport { useId, useState } from \"react\"\nimport { CircleAlertIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/building-blocks/default/ui/dialog\"\nimport { Input } from \"@/registry/building-blocks/default/ui/input\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\n\nconst PROJECT_NAME = \"loveui\"\n\nexport default function Component() {\n const id = useId()\n const [inputValue, setInputValue] = useState(\"\")\n\n return (\n <Dialog>\n <DialogTrigger asChild>\n <Button variant=\"outline\">Delete project</Button>\n </DialogTrigger>\n <DialogContent>\n <div className=\"flex flex-col items-center gap-2\">\n <div\n className=\"flex size-9 shrink-0 items-center justify-center rounded-full border\"\n aria-hidden=\"true\"\n >\n <CircleAlertIcon className=\"opacity-80\" size={16} />\n </div>\n <DialogHeader>\n <DialogTitle className=\"sm:text-center\">\n Final confirmation\n </DialogTitle>\n <DialogDescription className=\"sm:text-center\">\n This action cannot be undone. To confirm, please enter the project\n name <span className=\"text-foreground\">loveui</span>.\n </DialogDescription>\n </DialogHeader>\n </div>\n\n <form className=\"space-y-5\">\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Project name</Label>\n <Input\n id={id}\n type=\"text\"\n placeholder=\"Type loveui to confirm\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n />\n </div>\n <DialogFooter>\n <DialogClose asChild>\n <Button type=\"button\" variant=\"outline\" className=\"flex-1\">\n Cancel\n </Button>\n </DialogClose>\n <Button\n type=\"button\"\n className=\"flex-1\"\n disabled={inputValue !== PROJECT_NAME}\n >\n Delete\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog>\n )\n}\n",
15
+ "type": "registry:component"
16
+ }
17
+ ],
18
+ "meta": {
19
+ "tags": [
20
+ "dialog",
21
+ "modal",
22
+ "delete",
23
+ "radix"
24
+ ],
25
+ "style": 1
26
+ }
27
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-321",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/dialog.json",
8
+ "https://loveui.dev/building-blocks/r/input.json"
9
+ ],
10
+ "files": [
11
+ {
12
+ "path": "registry/default/components/comp-321.tsx",
13
+ "content": "import { MailIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/building-blocks/default/ui/dialog\"\nimport { Input } from \"@/registry/building-blocks/default/ui/input\"\n\nexport default function Component() {\n return (\n <Dialog>\n <DialogTrigger asChild>\n <Button variant=\"outline\">Newsletter</Button>\n </DialogTrigger>\n <DialogContent>\n <div className=\"mb-2 flex flex-col items-center gap-2\">\n <div\n className=\"flex size-11 shrink-0 items-center justify-center rounded-full border\"\n aria-hidden=\"true\"\n >\n <svg\n className=\"stroke-zinc-800 dark:stroke-zinc-100\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n >\n <circle cx=\"16\" cy=\"16\" r=\"12\" fill=\"none\" strokeWidth=\"8\" />\n </svg>\n </div>\n <DialogHeader>\n <DialogTitle className=\"sm:text-center\">\n Never miss an update\n </DialogTitle>\n <DialogDescription className=\"sm:text-center\">\n Subscribe to receive news and special offers.\n </DialogDescription>\n </DialogHeader>\n </div>\n\n <form className=\"space-y-5\">\n <div className=\"*:not-first:mt-2\">\n <div className=\"relative\">\n <Input\n id=\"dialog-subscribe\"\n className=\"peer ps-9\"\n placeholder=\"hi@yourcompany.com\"\n type=\"email\"\n aria-label=\"Email\"\n />\n <div className=\"pointer-events-none absolute inset-y-0 start-0 flex items-center justify-center ps-3 text-muted-foreground/80 peer-disabled:opacity-50\">\n <MailIcon size={16} aria-hidden=\"true\" />\n </div>\n </div>\n </div>\n <Button type=\"button\" className=\"w-full\">\n Subscribe\n </Button>\n </form>\n\n <p className=\"text-center text-xs text-muted-foreground\">\n By subscribing you agree to our{\" \"}\n <a className=\"underline hover:no-underline\" href=\"#\">\n Privacy Policy\n </a>\n .\n </p>\n </DialogContent>\n </Dialog>\n )\n}\n",
14
+ "type": "registry:component"
15
+ }
16
+ ],
17
+ "meta": {
18
+ "tags": [
19
+ "dialog",
20
+ "modal",
21
+ "newsletter",
22
+ "subscribe",
23
+ "form",
24
+ "radix"
25
+ ],
26
+ "style": 1
27
+ }
28
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-322",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/dialog.json",
8
+ "https://loveui.dev/building-blocks/r/textarea.json"
9
+ ],
10
+ "files": [
11
+ {
12
+ "path": "registry/default/components/comp-322.tsx",
13
+ "content": "import { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/building-blocks/default/ui/dialog\"\nimport { Textarea } from \"@/registry/building-blocks/default/ui/textarea\"\n\nexport default function Component() {\n return (\n <Dialog>\n <DialogTrigger asChild>\n <Button variant=\"outline\">Feedback</Button>\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Send us feedback</DialogTitle>\n <DialogDescription>\n Watch{\" \"}\n <a className=\"text-foreground hover:underline\" href=\"#\">\n tutorials\n </a>\n , read loveui&lsquo;s{\" \"}\n <a className=\"text-foreground hover:underline\" href=\"#\">\n documentation\n </a>\n , or join our{\" \"}\n <a className=\"text-foreground hover:underline\" href=\"#\">\n Discord\n </a>{\" \"}\n for community help.\n </DialogDescription>\n </DialogHeader>\n <form className=\"space-y-5\">\n <Textarea\n id=\"feedback\"\n placeholder=\"How can we improve loveui?\"\n aria-label=\"Send feedback\"\n />\n <div className=\"flex flex-col sm:flex-row sm:justify-end\">\n <Button type=\"button\">Send feedback</Button>\n </div>\n </form>\n </DialogContent>\n </Dialog>\n )\n}\n",
14
+ "type": "registry:component"
15
+ }
16
+ ],
17
+ "meta": {
18
+ "tags": [
19
+ "dialog",
20
+ "modal",
21
+ "feedback",
22
+ "form",
23
+ "radix"
24
+ ],
25
+ "style": 1
26
+ }
27
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-323",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/dialog.json",
8
+ "https://loveui.dev/building-blocks/r/label.json",
9
+ "https://loveui.dev/building-blocks/r/radio-group.json",
10
+ "https://loveui.dev/building-blocks/r/textarea.json"
11
+ ],
12
+ "files": [
13
+ {
14
+ "path": "registry/default/components/comp-323.tsx",
15
+ "content": "import { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/building-blocks/default/ui/dialog\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport { RadioGroup, RadioGroupItem } from \"@/registry/building-blocks/default/ui/radio-group\"\nimport { Textarea } from \"@/registry/building-blocks/default/ui/textarea\"\n\nexport default function Component() {\n return (\n <Dialog>\n <DialogTrigger asChild>\n <Button variant=\"outline\">Rating</Button>\n </DialogTrigger>\n <DialogContent className=\"flex flex-col gap-0 p-0 [&>button:last-child]:top-3.5\">\n <DialogHeader className=\"contents space-y-0 text-left\">\n <DialogTitle className=\"border-b px-6 py-4 text-base\">\n Help us improve\n </DialogTitle>\n </DialogHeader>\n <div className=\"px-6 py-4\">\n <form className=\"space-y-5\">\n <div className=\"space-y-4\">\n <div>\n <fieldset className=\"space-y-4\">\n <legend className=\"text-lg leading-none font-semibold text-foreground\">\n How hard was it to set up your account?\n </legend>\n <RadioGroup className=\"flex gap-0 -space-x-px rounded-md shadow-xs\">\n {[0, 1, 2, 3, 4, 5, 6, 7, 8].map((number) => (\n <label\n key={number}\n className=\"relative flex size-9 flex-1 cursor-pointer flex-col items-center justify-center gap-3 border border-input text-center text-sm transition-[color,box-shadow] outline-none first:rounded-s-md last:rounded-e-md has-focus-visible:border-ring has-focus-visible:ring-[3px] has-focus-visible:ring-ring/50 has-data-disabled:cursor-not-allowed has-data-disabled:opacity-50 has-data-[state=checked]:z-10 has-data-[state=checked]:border-primary/50\"\n >\n <RadioGroupItem\n id={`radio-17-r${number}`}\n value={number.toString()}\n className=\"sr-only after:absolute after:inset-0\"\n />\n {number}\n </label>\n ))}\n </RadioGroup>\n </fieldset>\n <div className=\"mt-2 flex justify-between text-xs text-muted-foreground\">\n <p>Very easy</p>\n <p>Very dificult</p>\n </div>\n </div>\n\n <div className=\"*:not-first:mt-2\">\n <Label>Why did you give this rating?</Label>\n <Textarea\n id=\"feedback\"\n placeholder=\"How can we improve loveui?\"\n aria-label=\"Send feedback\"\n />\n </div>\n </div>\n <Button type=\"button\" className=\"w-full\">\n Send feedback\n </Button>\n </form>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n",
16
+ "type": "registry:component"
17
+ }
18
+ ],
19
+ "meta": {
20
+ "tags": [
21
+ "dialog",
22
+ "modal",
23
+ "rating",
24
+ "feedback",
25
+ "form",
26
+ "radix"
27
+ ],
28
+ "style": 1
29
+ }
30
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-324",
4
+ "type": "registry:component",
5
+ "dependencies": [
6
+ "input-otp"
7
+ ],
8
+ "registryDependencies": [
9
+ "https://loveui.dev/building-blocks/r/button.json",
10
+ "https://loveui.dev/building-blocks/r/dialog.json"
11
+ ],
12
+ "files": [
13
+ {
14
+ "path": "registry/default/components/comp-324.tsx",
15
+ "content": "\"use client\"\n\nimport { useEffect, useRef, useState } from \"react\"\nimport { OTPInput, SlotProps } from \"input-otp\"\n\nimport { cn } from \"@/registry/building-blocks/default/lib/utils\"\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/building-blocks/default/ui/dialog\"\n\nconst CORRECT_CODE = \"6548\"\n\nexport default function Component() {\n const [value, setValue] = useState(\"\")\n const [hasGuessed, setHasGuessed] = useState<undefined | boolean>(undefined)\n const inputRef = useRef<HTMLInputElement>(null)\n const closeButtonRef = useRef<HTMLButtonElement>(null)\n\n useEffect(() => {\n if (hasGuessed) {\n closeButtonRef.current?.focus()\n }\n }, [hasGuessed])\n\n async function onSubmit(e?: React.FormEvent<HTMLFormElement>) {\n e?.preventDefault?.()\n\n inputRef.current?.select()\n await new Promise((r) => setTimeout(r, 1_00))\n\n setHasGuessed(value === CORRECT_CODE)\n\n setValue(\"\")\n setTimeout(() => {\n inputRef.current?.blur()\n }, 20)\n }\n\n return (\n <Dialog>\n <DialogTrigger asChild>\n <Button variant=\"outline\">OTP code</Button>\n </DialogTrigger>\n <DialogContent>\n <div className=\"flex flex-col items-center gap-2\">\n <div\n className=\"flex size-11 shrink-0 items-center justify-center rounded-full border\"\n aria-hidden=\"true\"\n >\n <svg\n className=\"stroke-zinc-800 dark:stroke-zinc-100\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n >\n <circle cx=\"16\" cy=\"16\" r=\"12\" fill=\"none\" strokeWidth=\"8\" />\n </svg>\n </div>\n <DialogHeader>\n <DialogTitle className=\"sm:text-center\">\n {hasGuessed ? \"Code verified!\" : \"Enter confirmation code\"}\n </DialogTitle>\n <DialogDescription className=\"sm:text-center\">\n {hasGuessed\n ? \"Your code has been successfully verified.\"\n : `Check your email and enter the code - Try ${CORRECT_CODE}`}\n </DialogDescription>\n </DialogHeader>\n </div>\n\n {hasGuessed ? (\n <div className=\"text-center\">\n <DialogClose asChild>\n <Button type=\"button\" ref={closeButtonRef}>\n Close\n </Button>\n </DialogClose>\n </div>\n ) : (\n <div className=\"space-y-4\">\n <div className=\"flex justify-center\">\n <OTPInput\n id=\"cofirmation-code\"\n ref={inputRef}\n value={value}\n onChange={setValue}\n containerClassName=\"flex items-center gap-3 has-disabled:opacity-50\"\n maxLength={4}\n onFocus={() => setHasGuessed(undefined)}\n render={({ slots }) => (\n <div className=\"flex gap-2\">\n {slots.map((slot, idx) => (\n <Slot key={idx} {...slot} />\n ))}\n </div>\n )}\n onComplete={onSubmit}\n />\n </div>\n {hasGuessed === false && (\n <p\n className=\"text-center text-xs text-muted-foreground\"\n role=\"alert\"\n aria-live=\"polite\"\n >\n Invalid code. Please try again.\n </p>\n )}\n <p className=\"text-center text-sm\">\n <a className=\"underline hover:no-underline\" href=\"#\">\n Resend code\n </a>\n </p>\n </div>\n )}\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction Slot(props: SlotProps) {\n return (\n <div\n className={cn(\n \"flex size-9 items-center justify-center rounded-md border border-input bg-background font-medium text-foreground shadow-xs transition-[color,box-shadow]\",\n { \"z-10 border-ring ring-[3px] ring-ring/50\": props.isActive }\n )}\n >\n {props.char !== null && <div>{props.char}</div>}\n </div>\n )\n}\n",
16
+ "type": "registry:component"
17
+ }
18
+ ],
19
+ "meta": {
20
+ "tags": [
21
+ "dialog",
22
+ "modal",
23
+ "otp",
24
+ "radix"
25
+ ],
26
+ "style": 1
27
+ }
28
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-325",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/dialog.json",
8
+ "https://loveui.dev/building-blocks/r/input.json",
9
+ "https://loveui.dev/building-blocks/r/label.json"
10
+ ],
11
+ "files": [
12
+ {
13
+ "path": "registry/default/components/comp-325.tsx",
14
+ "content": "import { useId } from \"react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/building-blocks/default/ui/dialog\"\nimport { Input } from \"@/registry/building-blocks/default/ui/input\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\n\nexport default function Component() {\n const id = useId()\n return (\n <Dialog>\n <DialogTrigger asChild>\n <Button variant=\"outline\">Sign up</Button>\n </DialogTrigger>\n <DialogContent>\n <div className=\"flex flex-col items-center gap-2\">\n <div\n className=\"flex size-11 shrink-0 items-center justify-center rounded-full border\"\n aria-hidden=\"true\"\n >\n <svg\n className=\"stroke-zinc-800 dark:stroke-zinc-100\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n >\n <circle cx=\"16\" cy=\"16\" r=\"12\" fill=\"none\" strokeWidth=\"8\" />\n </svg>\n </div>\n <DialogHeader>\n <DialogTitle className=\"sm:text-center\">\n Sign up loveui\n </DialogTitle>\n <DialogDescription className=\"sm:text-center\">\n We just need a few details to get you started.\n </DialogDescription>\n </DialogHeader>\n </div>\n\n <form className=\"space-y-5\">\n <div className=\"space-y-4\">\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={`${id}-name`}>Full name</Label>\n <Input\n id={`${id}-name`}\n placeholder=\"Connor Love\"\n type=\"text\"\n required\n />\n </div>\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={`${id}-email`}>Email</Label>\n <Input\n id={`${id}-email`}\n placeholder=\"hi@yourcompany.com\"\n type=\"email\"\n required\n />\n </div>\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={`${id}-password`}>Password</Label>\n <Input\n id={`${id}-password`}\n placeholder=\"Enter your password\"\n type=\"password\"\n required\n />\n </div>\n </div>\n <Button type=\"button\" className=\"w-full\">\n Sign up\n </Button>\n </form>\n\n <div className=\"flex items-center gap-3 before:h-px before:flex-1 before:bg-border after:h-px after:flex-1 after:bg-border\">\n <span className=\"text-xs text-muted-foreground\">Or</span>\n </div>\n\n <Button variant=\"outline\">Continue with Google</Button>\n\n <p className=\"text-center text-xs text-muted-foreground\">\n By signing up you agree to our{\" \"}\n <a className=\"underline hover:no-underline\" href=\"#\">\n Terms\n </a>\n .\n </p>\n </DialogContent>\n </Dialog>\n )\n}\n",
15
+ "type": "registry:component"
16
+ }
17
+ ],
18
+ "meta": {
19
+ "tags": [
20
+ "dialog",
21
+ "modal",
22
+ "signup",
23
+ "authentication",
24
+ "form",
25
+ "radix"
26
+ ],
27
+ "style": 1
28
+ }
29
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-326",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/checkbox.json",
8
+ "https://loveui.dev/building-blocks/r/dialog.json",
9
+ "https://loveui.dev/building-blocks/r/input.json",
10
+ "https://loveui.dev/building-blocks/r/label.json"
11
+ ],
12
+ "files": [
13
+ {
14
+ "path": "registry/default/components/comp-326.tsx",
15
+ "content": "import { useId } from \"react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport { Checkbox } from \"@/registry/building-blocks/default/ui/checkbox\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/building-blocks/default/ui/dialog\"\nimport { Input } from \"@/registry/building-blocks/default/ui/input\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\n\nexport default function Component() {\n const id = useId()\n return (\n <Dialog>\n <DialogTrigger asChild>\n <Button variant=\"outline\">Sign in</Button>\n </DialogTrigger>\n <DialogContent>\n <div className=\"flex flex-col items-center gap-2\">\n <div\n className=\"flex size-11 shrink-0 items-center justify-center rounded-full border\"\n aria-hidden=\"true\"\n >\n <svg\n className=\"stroke-zinc-800 dark:stroke-zinc-100\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n >\n <circle cx=\"16\" cy=\"16\" r=\"12\" fill=\"none\" strokeWidth=\"8\" />\n </svg>\n </div>\n <DialogHeader>\n <DialogTitle className=\"sm:text-center\">Welcome back</DialogTitle>\n <DialogDescription className=\"sm:text-center\">\n Enter your credentials to login to your account.\n </DialogDescription>\n </DialogHeader>\n </div>\n\n <form className=\"space-y-5\">\n <div className=\"space-y-4\">\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={`${id}-email`}>Email</Label>\n <Input\n id={`${id}-email`}\n placeholder=\"hi@yourcompany.com\"\n type=\"email\"\n required\n />\n </div>\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={`${id}-password`}>Password</Label>\n <Input\n id={`${id}-password`}\n placeholder=\"Enter your password\"\n type=\"password\"\n required\n />\n </div>\n </div>\n <div className=\"flex justify-between gap-2\">\n <div className=\"flex items-center gap-2\">\n <Checkbox id={`${id}-remember`} />\n <Label\n htmlFor={`${id}-remember`}\n className=\"font-normal text-muted-foreground\"\n >\n Remember me\n </Label>\n </div>\n <a className=\"text-sm underline hover:no-underline\" href=\"#\">\n Forgot password?\n </a>\n </div>\n <Button type=\"button\" className=\"w-full\">\n Sign in\n </Button>\n </form>\n\n <div className=\"flex items-center gap-3 before:h-px before:flex-1 before:bg-border after:h-px after:flex-1 after:bg-border\">\n <span className=\"text-xs text-muted-foreground\">Or</span>\n </div>\n\n <Button variant=\"outline\">Login with Google</Button>\n </DialogContent>\n </Dialog>\n )\n}\n",
16
+ "type": "registry:component"
17
+ }
18
+ ],
19
+ "meta": {
20
+ "tags": [
21
+ "dialog",
22
+ "modal",
23
+ "login",
24
+ "authentication",
25
+ "form",
26
+ "radix"
27
+ ],
28
+ "style": 1
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-327",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/dialog.json",
8
+ "https://loveui.dev/building-blocks/r/input.json",
9
+ "https://loveui.dev/building-blocks/r/label.json",
10
+ "https://loveui.dev/building-blocks/r/tooltip.json"
11
+ ],
12
+ "files": [
13
+ {
14
+ "path": "registry/default/components/comp-327.tsx",
15
+ "content": "\"use client\"\n\nimport { useId, useRef, useState } from \"react\"\nimport { CheckIcon, CopyIcon, UserRoundPlusIcon } from \"lucide-react\"\n\nimport { cn } from \"@/registry/building-blocks/default/lib/utils\"\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/building-blocks/default/ui/dialog\"\nimport { Input } from \"@/registry/building-blocks/default/ui/input\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/registry/building-blocks/default/ui/tooltip\"\n\nexport default function Component() {\n const id = useId()\n const [emails, setEmails] = useState([\n \"tyler@example.com\",\n \"owen@example.com\",\n \"\",\n ])\n const [copied, setCopied] = useState<boolean>(false)\n const inputRef = useRef<HTMLInputElement>(null)\n const lastInputRef = useRef<HTMLInputElement>(null)\n\n const addEmail = () => {\n setEmails([...emails, \"\"])\n }\n\n const handleEmailChange = (index: number, value: string) => {\n const newEmails = [...emails]\n newEmails[index] = value\n setEmails(newEmails)\n }\n\n const handleCopy = () => {\n if (inputRef.current) {\n navigator.clipboard.writeText(inputRef.current.value)\n setCopied(true)\n setTimeout(() => setCopied(false), 1500)\n }\n }\n\n return (\n <Dialog>\n <DialogTrigger asChild>\n <Button variant=\"outline\">Invite members</Button>\n </DialogTrigger>\n <DialogContent\n onOpenAutoFocus={(e) => {\n e.preventDefault()\n lastInputRef.current?.focus()\n }}\n >\n <div className=\"flex flex-col gap-2\">\n <div\n className=\"flex size-11 shrink-0 items-center justify-center rounded-full border\"\n aria-hidden=\"true\"\n >\n <UserRoundPlusIcon className=\"opacity-80\" size={16} />\n </div>\n <DialogHeader>\n <DialogTitle className=\"text-left\">Invite team members</DialogTitle>\n <DialogDescription className=\"text-left\">\n Invite teammates to earn free components.\n </DialogDescription>\n </DialogHeader>\n </div>\n\n <form className=\"space-y-5\">\n <div className=\"space-y-4\">\n <div className=\"*:not-first:mt-2\">\n <Label>Invite via email</Label>\n <div className=\"space-y-3\">\n {emails.map((email, index) => (\n <Input\n key={index}\n id={`team-email-${index + 1}`}\n placeholder=\"hi@yourcompany.com\"\n type=\"email\"\n value={email}\n onChange={(e) => handleEmailChange(index, e.target.value)}\n ref={index === emails.length - 1 ? lastInputRef : undefined}\n />\n ))}\n </div>\n </div>\n <button\n type=\"button\"\n onClick={addEmail}\n className=\"text-sm underline hover:no-underline\"\n >\n + Add another\n </button>\n </div>\n <Button type=\"button\" className=\"w-full\">\n Send invites\n </Button>\n </form>\n\n <hr className=\"my-1 border-t\" />\n\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Invite via magic link</Label>\n <div className=\"relative\">\n <Input\n ref={inputRef}\n id={id}\n className=\"pe-9\"\n type=\"text\"\n defaultValue=\"https://loveui.dev/ui/refer/87689\"\n readOnly\n />\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={handleCopy}\n className=\"absolute inset-y-0 end-0 flex h-full w-9 items-center justify-center rounded-e-md text-muted-foreground/80 transition-[color,box-shadow] outline-none hover:text-foreground focus:z-10 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed\"\n aria-label={copied ? \"Copied\" : \"Copy to clipboard\"}\n disabled={copied}\n >\n <div\n className={cn(\n \"transition-all\",\n copied ? \"scale-100 opacity-100\" : \"scale-0 opacity-0\"\n )}\n >\n <CheckIcon\n className=\"stroke-emerald-500\"\n size={16}\n aria-hidden=\"true\"\n />\n </div>\n <div\n className={cn(\n \"absolute transition-all\",\n copied ? \"scale-0 opacity-0\" : \"scale-100 opacity-100\"\n )}\n >\n <CopyIcon size={16} aria-hidden=\"true\" />\n </div>\n </button>\n </TooltipTrigger>\n <TooltipContent className=\"px-2 py-1 text-xs\">\n Copy to clipboard\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n",
16
+ "type": "registry:component"
17
+ }
18
+ ],
19
+ "meta": {
20
+ "tags": [
21
+ "dialog",
22
+ "modal",
23
+ "form",
24
+ "user",
25
+ "team",
26
+ "radix"
27
+ ],
28
+ "style": 1
29
+ }
30
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-328",
4
+ "type": "registry:component",
5
+ "dependencies": [
6
+ "react-payment-inputs"
7
+ ],
8
+ "devDependencies": [
9
+ "@types/react-payment-inputs"
10
+ ],
11
+ "registryDependencies": [
12
+ "https://loveui.dev/building-blocks/r/button.json",
13
+ "https://loveui.dev/building-blocks/r/checkbox.json",
14
+ "https://loveui.dev/building-blocks/r/dialog.json",
15
+ "https://loveui.dev/building-blocks/r/input.json",
16
+ "https://loveui.dev/building-blocks/r/label.json"
17
+ ],
18
+ "files": [
19
+ {
20
+ "path": "registry/default/components/comp-328.tsx",
21
+ "content": "\"use client\"\n\nimport { useId } from \"react\"\nimport { CreditCardIcon, WalletIcon } from \"lucide-react\"\nimport { usePaymentInputs } from \"react-payment-inputs\"\nimport images, { type CardImages } from \"react-payment-inputs/images\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport { Checkbox } from \"@/registry/building-blocks/default/ui/checkbox\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/building-blocks/default/ui/dialog\"\nimport { Input } from \"@/registry/building-blocks/default/ui/input\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\n\nexport default function Component() {\n const id = useId()\n const {\n meta,\n getCardNumberProps,\n getExpiryDateProps,\n getCVCProps,\n getCardImageProps,\n } = usePaymentInputs()\n\n return (\n <Dialog>\n <DialogTrigger asChild>\n <Button variant=\"outline\">Card details</Button>\n </DialogTrigger>\n <DialogContent>\n <div className=\"flex flex-col gap-2\">\n <div\n className=\"flex size-11 shrink-0 items-center justify-center rounded-full border\"\n aria-hidden=\"true\"\n >\n <WalletIcon className=\"opacity-80\" size={16} />\n </div>\n <DialogHeader>\n <DialogTitle className=\"text-left\">Update your card</DialogTitle>\n <DialogDescription className=\"text-left\">\n Your new card will replace your current card.\n </DialogDescription>\n </DialogHeader>\n </div>\n\n <form className=\"space-y-5\">\n <div className=\"space-y-4\">\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={`name-${id}`}>Name on card</Label>\n <Input id={`name-${id}`} type=\"text\" required />\n </div>\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={`number-${id}`}>Card Number</Label>\n <div className=\"relative\">\n <Input\n {...getCardNumberProps()}\n id={`number-${id}`}\n className=\"peer pe-9 [direction:inherit]\"\n />\n <div className=\"pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center pe-3 text-muted-foreground/80 peer-disabled:opacity-50\">\n {meta.cardType ? (\n <svg\n className=\"overflow-hidden rounded-sm\"\n {...getCardImageProps({\n images: images as unknown as CardImages,\n })}\n width={20}\n />\n ) : (\n <CreditCardIcon size={16} aria-hidden=\"true\" />\n )}\n </div>\n </div>\n </div>\n <div className=\"flex gap-4\">\n <div className=\"flex-1 space-y-2\">\n <Label htmlFor={`expiry-${id}`}>Expiry date</Label>\n <Input\n className=\"[direction:inherit]\"\n {...getExpiryDateProps()}\n id={`expiry-${id}`}\n />\n </div>\n <div className=\"flex-1 space-y-2\">\n <Label htmlFor={`cvc-${id}`}>CVC</Label>\n <Input\n className=\"[direction:inherit]\"\n {...getCVCProps()}\n id={`cvc-${id}`}\n />\n </div>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <Checkbox id={`primary-${id}`} />\n <Label\n htmlFor={`primary-${id}`}\n className=\"font-normal text-muted-foreground\"\n >\n Set as default payment method\n </Label>\n </div>\n <Button type=\"button\" className=\"w-full\">\n Update card\n </Button>\n </form>\n </DialogContent>\n </Dialog>\n )\n}\n",
22
+ "type": "registry:component"
23
+ }
24
+ ],
25
+ "meta": {
26
+ "tags": [
27
+ "dialog",
28
+ "modal",
29
+ "checkout",
30
+ "payment",
31
+ "credit card",
32
+ "form",
33
+ "radix"
34
+ ],
35
+ "style": 1
36
+ }
37
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-329",
4
+ "type": "registry:component",
5
+ "dependencies": [
6
+ "react-payment-inputs"
7
+ ],
8
+ "devDependencies": [
9
+ "@types/react-payment-inputs"
10
+ ],
11
+ "registryDependencies": [
12
+ "https://loveui.dev/building-blocks/r/badge.json",
13
+ "https://loveui.dev/building-blocks/r/button.json",
14
+ "https://loveui.dev/building-blocks/r/dialog.json",
15
+ "https://loveui.dev/building-blocks/r/input.json",
16
+ "https://loveui.dev/building-blocks/r/label.json",
17
+ "https://loveui.dev/building-blocks/r/radio-group.json"
18
+ ],
19
+ "files": [
20
+ {
21
+ "path": "registry/default/components/comp-329.tsx",
22
+ "content": "\"use client\"\n\nimport { useEffect, useId, useRef, useState } from \"react\"\nimport { CreditCardIcon, StoreIcon } from \"lucide-react\"\nimport { usePaymentInputs } from \"react-payment-inputs\"\nimport images, { type CardImages } from \"react-payment-inputs/images\"\n\nimport { Badge } from \"@/registry/building-blocks/default/ui/badge\"\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/building-blocks/default/ui/dialog\"\nimport { Input } from \"@/registry/building-blocks/default/ui/input\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport { RadioGroup, RadioGroupItem } from \"@/registry/building-blocks/default/ui/radio-group\"\n\nexport default function Component() {\n const id = useId()\n const {\n meta,\n getCardNumberProps,\n getExpiryDateProps,\n getCVCProps,\n getCardImageProps,\n } = usePaymentInputs()\n const couponInputRef = useRef<HTMLInputElement>(null)\n const [showCouponInput, setShowCouponInput] = useState(false)\n const [couponCode, setCouponCode] = useState(\"\")\n\n // Auto-focus the coupon input when it's shown\n useEffect(() => {\n if (showCouponInput && couponInputRef.current) {\n couponInputRef.current.focus()\n }\n }, [showCouponInput])\n\n return (\n <Dialog>\n <DialogTrigger asChild>\n <Button variant=\"outline\">Checkout</Button>\n </DialogTrigger>\n <DialogContent>\n <div className=\"mb-2 flex flex-col gap-2\">\n <div\n className=\"flex size-11 shrink-0 items-center justify-center rounded-full border\"\n aria-hidden=\"true\"\n >\n <StoreIcon className=\"opacity-80\" size={16} />\n </div>\n <DialogHeader>\n <DialogTitle className=\"text-left\">Confirm and pay</DialogTitle>\n <DialogDescription className=\"text-left\">\n Pay securely and cancel any time.\n </DialogDescription>\n </DialogHeader>\n </div>\n\n <form className=\"space-y-5\">\n <div className=\"space-y-4\">\n <RadioGroup className=\"grid-cols-2\" defaultValue=\"yearly\">\n {/* Monthly */}\n <label className=\"relative flex cursor-pointer flex-col gap-1 rounded-md border border-input px-4 py-3 shadow-xs transition-[color,box-shadow] outline-none has-focus-visible:border-ring has-focus-visible:ring-[3px] has-focus-visible:ring-ring/50 has-data-[state=checked]:border-primary/50\">\n <RadioGroupItem\n id=\"radio-monthly\"\n value=\"monthly\"\n className=\"sr-only after:absolute after:inset-0\"\n />\n <p className=\"text-sm font-medium text-foreground\">Monthly</p>\n <p className=\"text-sm text-muted-foreground\">$32/month</p>\n </label>\n {/* Yearly */}\n <label className=\"relative flex cursor-pointer flex-col gap-1 rounded-md border border-input px-4 py-3 shadow-xs transition-[color,box-shadow] outline-none has-focus-visible:border-ring has-focus-visible:ring-[3px] has-focus-visible:ring-ring/50 has-data-[state=checked]:border-primary/50\">\n <RadioGroupItem\n id=\"radio-yearly\"\n value=\"yearly\"\n className=\"sr-only after:absolute after:inset-0\"\n />\n <div className=\"inline-flex items-start justify-between gap-2\">\n <p className=\"text-sm font-medium text-foreground\">Yearly</p>\n <Badge>Popular</Badge>\n </div>\n <p className=\"text-sm text-muted-foreground\">$320/month</p>\n </label>\n </RadioGroup>\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={`name-${id}`}>Name on card</Label>\n <Input id={`name-${id}`} type=\"text\" required />\n </div>\n <div className=\"*:not-first:mt-2\">\n <legend className=\"text-sm font-medium text-foreground\">\n Card Details\n </legend>\n <div className=\"rounded-md shadow-xs\">\n <div className=\"relative focus-within:z-10\">\n <Input\n className=\"peer rounded-b-none pe-9 shadow-none [direction:inherit]\"\n {...getCardNumberProps()}\n />\n <div className=\"pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center pe-3 text-muted-foreground/80 peer-disabled:opacity-50\">\n {meta.cardType ? (\n <svg\n className=\"overflow-hidden rounded-sm\"\n {...getCardImageProps({\n images: images as unknown as CardImages,\n })}\n width={20}\n />\n ) : (\n <CreditCardIcon size={16} aria-hidden=\"true\" />\n )}\n </div>\n </div>\n <div className=\"-mt-px flex\">\n <div className=\"min-w-0 flex-1 focus-within:z-10\">\n <Input\n className=\"rounded-e-none rounded-t-none shadow-none [direction:inherit]\"\n {...getExpiryDateProps()}\n />\n </div>\n <div className=\"-ms-px min-w-0 flex-1 focus-within:z-10\">\n <Input\n className=\"rounded-s-none rounded-t-none shadow-none [direction:inherit]\"\n {...getCVCProps()}\n />\n </div>\n </div>\n </div>\n </div>\n {!showCouponInput ? (\n <button\n type=\"button\"\n onClick={() => setShowCouponInput(true)}\n className=\"text-sm underline hover:no-underline\"\n >\n + Add coupon\n </button>\n ) : (\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={`coupon-${id}`}>Coupon code</Label>\n <Input\n id={`coupon-${id}`}\n ref={couponInputRef}\n placeholder=\"Enter your code\"\n value={couponCode}\n onChange={(e) => setCouponCode(e.target.value)}\n />\n </div>\n )}\n </div>\n <Button type=\"button\" className=\"w-full\">\n Subscribe\n </Button>\n </form>\n\n <p className=\"text-center text-xs text-muted-foreground\">\n Payments are non-refundable. Cancel anytime.\n </p>\n </DialogContent>\n </Dialog>\n )\n}\n",
23
+ "type": "registry:component"
24
+ }
25
+ ],
26
+ "meta": {
27
+ "tags": [
28
+ "dialog",
29
+ "modal",
30
+ "checkout",
31
+ "payment",
32
+ "credit card",
33
+ "form",
34
+ "radix"
35
+ ],
36
+ "style": 1
37
+ }
38
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-33",
4
+ "type": "registry:component",
5
+ "files": [
6
+ {
7
+ "path": "registry/default/components/comp-33.tsx",
8
+ "content": "import { useId } from \"react\"\n\nexport default function Component() {\n const id = useId()\n return (\n <div className=\"relative rounded-md border border-input bg-background shadow-xs transition-[color,box-shadow] outline-none focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50 has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-aria-invalid:border-destructive has-aria-invalid:ring-destructive/20 has-[input:is(:disabled)]:*:pointer-events-none dark:has-aria-invalid:ring-destructive/40\">\n <label\n htmlFor={id}\n className=\"block px-3 pt-2 text-xs font-medium text-foreground\"\n >\n Input with inset label\n </label>\n <input\n id={id}\n className=\"flex h-10 w-full bg-transparent px-3 pb-2 text-sm text-foreground placeholder:text-muted-foreground/70 focus-visible:outline-none\"\n placeholder=\"Email\"\n type=\"email\"\n disabled\n />\n </div>\n )\n}\n",
9
+ "type": "registry:component"
10
+ }
11
+ ],
12
+ "meta": {
13
+ "tags": [
14
+ "input",
15
+ "label"
16
+ ]
17
+ }
18
+ }