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,28 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-504",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/calendar.json",
8
+ "https://loveui.dev/building-blocks/r/collapsible.json",
9
+ "https://loveui.dev/building-blocks/r/scroll-area.json"
10
+ ],
11
+ "files": [
12
+ {
13
+ "path": "registry/default/components/comp-504.tsx",
14
+ "content": "\"use client\"\n\nimport { useEffect, useRef, useState } from \"react\"\nimport {\n eachMonthOfInterval,\n eachYearOfInterval,\n endOfYear,\n format,\n isAfter,\n isBefore,\n startOfYear,\n} from \"date-fns\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport { CaptionLabelProps, MonthGridProps } from \"react-day-picker\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport { Calendar } from \"@/registry/building-blocks/default/ui/calendar\"\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/registry/building-blocks/default/ui/collapsible\"\nimport { ScrollArea } from \"@/registry/building-blocks/default/ui/scroll-area\"\n\nexport default function Component() {\n const today = new Date()\n const [month, setMonth] = useState(today)\n const [date, setDate] = useState<Date | undefined>(today)\n const [isYearView, setIsYearView] = useState(false)\n const startDate = new Date(1980, 6)\n const endDate = new Date(2030, 6)\n\n const years = eachYearOfInterval({\n start: startOfYear(startDate),\n end: endOfYear(endDate),\n })\n\n return (\n <div>\n <Calendar\n mode=\"single\"\n selected={date}\n onSelect={setDate}\n month={month}\n onMonthChange={setMonth}\n defaultMonth={new Date()}\n startMonth={startDate}\n endMonth={endDate}\n className=\"overflow-hidden rounded-md border p-2\"\n classNames={{\n month_caption: \"ms-2.5 me-20 justify-start\",\n nav: \"justify-end\",\n }}\n components={{\n CaptionLabel: (props: CaptionLabelProps) => (\n <CaptionLabel\n isYearView={isYearView}\n setIsYearView={setIsYearView}\n {...props}\n />\n ),\n MonthGrid: (props: MonthGridProps) => {\n return (\n <MonthGrid\n className={props.className}\n isYearView={isYearView}\n setIsYearView={setIsYearView}\n startDate={startDate}\n endDate={endDate}\n years={years}\n currentYear={month.getFullYear()}\n currentMonth={month.getMonth()}\n onMonthSelect={(selectedMonth: Date) => {\n setMonth(selectedMonth)\n setIsYearView(false)\n }}\n >\n {props.children}\n </MonthGrid>\n )\n },\n }}\n />\n <p\n className=\"mt-4 text-center text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Advanced selection -{\" \"}\n <a\n className=\"underline hover:text-foreground\"\n href=\"https://daypicker.dev/\"\n target=\"_blank\"\n rel=\"noopener nofollow\"\n >\n React DayPicker\n </a>\n </p>\n </div>\n )\n}\n\nfunction MonthGrid({\n className,\n children,\n isYearView,\n startDate,\n endDate,\n years,\n currentYear,\n currentMonth,\n onMonthSelect,\n}: {\n className?: string\n children: React.ReactNode\n isYearView: boolean\n setIsYearView: React.Dispatch<React.SetStateAction<boolean>>\n startDate: Date\n endDate: Date\n years: Date[]\n currentYear: number\n currentMonth: number\n onMonthSelect: (date: Date) => void\n}) {\n const currentYearRef = useRef<HTMLDivElement>(null)\n const currentMonthButtonRef = useRef<HTMLButtonElement>(null)\n const scrollAreaRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (isYearView && currentYearRef.current && scrollAreaRef.current) {\n const viewport = scrollAreaRef.current.querySelector(\n \"[data-radix-scroll-area-viewport]\"\n ) as HTMLElement\n if (viewport) {\n const yearTop = currentYearRef.current.offsetTop\n viewport.scrollTop = yearTop\n }\n setTimeout(() => {\n currentMonthButtonRef.current?.focus()\n }, 100)\n }\n }, [isYearView])\n\n return (\n <div className=\"relative\">\n <table className={className}>{children}</table>\n {isYearView && (\n <div className=\"absolute inset-0 z-20 -mx-2 -mb-2 bg-background\">\n <ScrollArea ref={scrollAreaRef} className=\"h-full\">\n {years.map((year) => {\n const months = eachMonthOfInterval({\n start: startOfYear(year),\n end: endOfYear(year),\n })\n const isCurrentYear = year.getFullYear() === currentYear\n\n return (\n <div\n key={year.getFullYear()}\n ref={isCurrentYear ? currentYearRef : undefined}\n >\n <CollapsibleYear\n title={year.getFullYear().toString()}\n open={isCurrentYear}\n >\n <div className=\"grid grid-cols-3 gap-2\">\n {months.map((month) => {\n const isDisabled =\n isBefore(month, startDate) || isAfter(month, endDate)\n const isCurrentMonth =\n month.getMonth() === currentMonth &&\n year.getFullYear() === currentYear\n\n return (\n <Button\n key={month.getTime()}\n ref={\n isCurrentMonth ? currentMonthButtonRef : undefined\n }\n variant={isCurrentMonth ? \"default\" : \"outline\"}\n size=\"sm\"\n className=\"h-7\"\n disabled={isDisabled}\n onClick={() => onMonthSelect(month)}\n >\n {format(month, \"MMM\")}\n </Button>\n )\n })}\n </div>\n </CollapsibleYear>\n </div>\n )\n })}\n </ScrollArea>\n </div>\n )}\n </div>\n )\n}\n\nfunction CaptionLabel({\n children,\n isYearView,\n setIsYearView,\n}: {\n isYearView: boolean\n setIsYearView: React.Dispatch<React.SetStateAction<boolean>>\n} & React.HTMLAttributes<HTMLSpanElement>) {\n return (\n <Button\n className=\"-ms-2 flex items-center gap-2 text-sm font-medium hover:bg-transparent data-[state=open]:text-muted-foreground/80 [&[data-state=open]>svg]:rotate-180\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setIsYearView((prev) => !prev)}\n data-state={isYearView ? \"open\" : \"closed\"}\n >\n {children}\n <ChevronDownIcon\n size={16}\n className=\"shrink-0 text-muted-foreground/80 transition-transform duration-200\"\n aria-hidden=\"true\"\n />\n </Button>\n )\n}\n\nfunction CollapsibleYear({\n title,\n children,\n open,\n}: {\n title: string\n children: React.ReactNode\n open?: boolean\n}) {\n return (\n <Collapsible className=\"border-t px-2 py-1.5\" defaultOpen={open}>\n <CollapsibleTrigger asChild>\n <Button\n className=\"flex w-full justify-start gap-2 text-sm font-medium hover:bg-transparent [&[data-state=open]>svg]:rotate-180\"\n variant=\"ghost\"\n size=\"sm\"\n >\n <ChevronDownIcon\n size={16}\n className=\"shrink-0 text-muted-foreground/80 transition-transform duration-200\"\n aria-hidden=\"true\"\n />\n {title}\n </Button>\n </CollapsibleTrigger>\n <CollapsibleContent className=\"overflow-hidden px-3 py-1 text-sm transition-all data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down\">\n {children}\n </CollapsibleContent>\n </Collapsible>\n )\n}\n",
15
+ "type": "registry:component"
16
+ }
17
+ ],
18
+ "meta": {
19
+ "tags": [
20
+ "calendar",
21
+ "date",
22
+ "collapsible",
23
+ "react daypicker",
24
+ "radix"
25
+ ],
26
+ "style": 1
27
+ }
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-505",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/calendar.json",
8
+ "https://loveui.dev/building-blocks/r/scroll-area.json"
9
+ ],
10
+ "files": [
11
+ {
12
+ "path": "registry/default/components/comp-505.tsx",
13
+ "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { format } from \"date-fns\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport { Calendar } from \"@/registry/building-blocks/default/ui/calendar\"\nimport { ScrollArea } from \"@/registry/building-blocks/default/ui/scroll-area\"\n\nexport default function Component() {\n const today = new Date()\n const [date, setDate] = useState<Date>(today)\n const [time, setTime] = useState<string | null>(null)\n\n // Mock time slots data\n const timeSlots = [\n { time: \"09:00\", available: false },\n { time: \"09:30\", available: false },\n { time: \"10:00\", available: true },\n { time: \"10:30\", available: true },\n { time: \"11:00\", available: true },\n { time: \"11:30\", available: true },\n { time: \"12:00\", available: false },\n { time: \"12:30\", available: true },\n { time: \"13:00\", available: true },\n { time: \"13:30\", available: true },\n { time: \"14:00\", available: true },\n { time: \"14:30\", available: false },\n { time: \"15:00\", available: false },\n { time: \"15:30\", available: true },\n { time: \"16:00\", available: true },\n { time: \"16:30\", available: true },\n { time: \"17:00\", available: true },\n { time: \"17:30\", available: true },\n ]\n\n return (\n <div>\n <div className=\"rounded-md border\">\n <div className=\"flex max-sm:flex-col\">\n <Calendar\n mode=\"single\"\n selected={date}\n onSelect={(newDate) => {\n if (newDate) {\n setDate(newDate)\n setTime(null)\n }\n }}\n className=\"p-2 sm:pe-5\"\n disabled={[\n { before: today }, // Dates before today\n ]}\n />\n <div className=\"relative w-full max-sm:h-48 sm:w-40\">\n <div className=\"absolute inset-0 py-4 max-sm:border-t\">\n <ScrollArea className=\"h-full sm:border-s\">\n <div className=\"space-y-3\">\n <div className=\"flex h-5 shrink-0 items-center px-5\">\n <p className=\"text-sm font-medium\">\n {format(date, \"EEEE, d\")}\n </p>\n </div>\n <div className=\"grid gap-1.5 px-5 max-sm:grid-cols-2\">\n {timeSlots.map(({ time: timeSlot, available }) => (\n <Button\n key={timeSlot}\n variant={time === timeSlot ? \"default\" : \"outline\"}\n size=\"sm\"\n className=\"w-full\"\n onClick={() => setTime(timeSlot)}\n disabled={!available}\n >\n {timeSlot}\n </Button>\n ))}\n </div>\n </div>\n </ScrollArea>\n </div>\n </div>\n </div>\n </div>\n <p\n className=\"mt-4 text-center text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Appointment picker -{\" \"}\n <a\n className=\"underline hover:text-foreground\"\n href=\"https://daypicker.dev/\"\n target=\"_blank\"\n rel=\"noopener nofollow\"\n >\n React DayPicker\n </a>\n </p>\n </div>\n )\n}\n",
14
+ "type": "registry:component"
15
+ }
16
+ ],
17
+ "meta": {
18
+ "tags": [
19
+ "calendar",
20
+ "date",
21
+ "time",
22
+ "button",
23
+ "react daypicker"
24
+ ],
25
+ "colSpan": 3,
26
+ "style": 1
27
+ }
28
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-506",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/calendar.json"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "registry/default/components/comp-506.tsx",
12
+ "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { subDays, subMonths, subYears } from \"date-fns\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport { Calendar } from \"@/registry/building-blocks/default/ui/calendar\"\n\nexport default function Component() {\n const today = new Date()\n const yesterday = subDays(today, 1)\n const lastWeek = subDays(today, 7)\n const lastMonth = subMonths(today, 1)\n const lastYear = subYears(today, 1)\n const [month, setMonth] = useState(today)\n const [date, setDate] = useState<Date>(today)\n\n return (\n <div>\n <div className=\"rounded-md border\">\n <div className=\"flex max-sm:flex-col\">\n <div className=\"relative py-4 max-sm:order-1 max-sm:border-t sm:w-32\">\n <div className=\"h-full sm:border-e\">\n <div className=\"flex flex-col px-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start\"\n onClick={() => {\n setDate(today)\n setMonth(today)\n }}\n >\n Today\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start\"\n onClick={() => {\n setDate(yesterday)\n setMonth(yesterday)\n }}\n >\n Yesterday\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start\"\n onClick={() => {\n setDate(lastWeek)\n setMonth(lastWeek)\n }}\n >\n Last week\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start\"\n onClick={() => {\n setDate(lastMonth)\n setMonth(lastMonth)\n }}\n >\n Last month\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start\"\n onClick={() => {\n setDate(lastYear)\n setMonth(lastYear)\n }}\n >\n Last year\n </Button>\n </div>\n </div>\n </div>\n <Calendar\n mode=\"single\"\n selected={date}\n onSelect={(newDate) => {\n if (newDate) {\n setDate(newDate)\n }\n }}\n month={month}\n onMonthChange={setMonth}\n className=\"p-2\"\n disabled={[\n { after: today }, // Dates before today\n ]}\n />\n </div>\n </div>\n <p\n className=\"mt-4 text-center text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Calendar with presets -{\" \"}\n <a\n className=\"underline hover:text-foreground\"\n href=\"https://daypicker.dev/\"\n target=\"_blank\"\n rel=\"noopener nofollow\"\n >\n React DayPicker\n </a>\n </p>\n </div>\n )\n}\n",
13
+ "type": "registry:component"
14
+ }
15
+ ],
16
+ "meta": {
17
+ "tags": [
18
+ "calendar",
19
+ "date",
20
+ "button",
21
+ "react daypicker"
22
+ ],
23
+ "colSpan": 3,
24
+ "style": 1
25
+ }
26
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-507",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/calendar.json"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "registry/default/components/comp-507.tsx",
12
+ "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport {\n endOfMonth,\n endOfYear,\n startOfMonth,\n startOfYear,\n subDays,\n subMonths,\n subYears,\n} from \"date-fns\"\nimport { DateRange } from \"react-day-picker\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport { Calendar } from \"@/registry/building-blocks/default/ui/calendar\"\n\nexport default function Component() {\n const today = new Date()\n const yesterday = {\n from: subDays(today, 1),\n to: subDays(today, 1),\n }\n const last7Days = {\n from: subDays(today, 6),\n to: today,\n }\n const last30Days = {\n from: subDays(today, 29),\n to: today,\n }\n const monthToDate = {\n from: startOfMonth(today),\n to: today,\n }\n const lastMonth = {\n from: startOfMonth(subMonths(today, 1)),\n to: endOfMonth(subMonths(today, 1)),\n }\n const yearToDate = {\n from: startOfYear(today),\n to: today,\n }\n const lastYear = {\n from: startOfYear(subYears(today, 1)),\n to: endOfYear(subYears(today, 1)),\n }\n const [month, setMonth] = useState(today)\n const [date, setDate] = useState<DateRange | undefined>(last7Days)\n\n return (\n <div>\n <div className=\"rounded-md border\">\n <div className=\"flex max-sm:flex-col\">\n <div className=\"relative py-4 max-sm:order-1 max-sm:border-t sm:w-32\">\n <div className=\"h-full sm:border-e\">\n <div className=\"flex flex-col px-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start\"\n onClick={() => {\n setDate({\n from: today,\n to: today,\n })\n setMonth(today)\n }}\n >\n Today\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start\"\n onClick={() => {\n setDate(yesterday)\n setMonth(yesterday.to)\n }}\n >\n Yesterday\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start\"\n onClick={() => {\n setDate(last7Days)\n setMonth(last7Days.to)\n }}\n >\n Last 7 days\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start\"\n onClick={() => {\n setDate(last30Days)\n setMonth(last30Days.to)\n }}\n >\n Last 30 days\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start\"\n onClick={() => {\n setDate(monthToDate)\n setMonth(monthToDate.to)\n }}\n >\n Month to date\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start\"\n onClick={() => {\n setDate(lastMonth)\n setMonth(lastMonth.to)\n }}\n >\n Last month\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start\"\n onClick={() => {\n setDate(yearToDate)\n setMonth(yearToDate.to)\n }}\n >\n Year to date\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start\"\n onClick={() => {\n setDate(lastYear)\n setMonth(lastYear.to)\n }}\n >\n Last year\n </Button>\n </div>\n </div>\n </div>\n <Calendar\n mode=\"range\"\n selected={date}\n onSelect={(newDate) => {\n if (newDate) {\n setDate(newDate)\n }\n }}\n month={month}\n onMonthChange={setMonth}\n className=\"p-2\"\n disabled={[\n { after: today }, // Dates before today\n ]}\n />\n </div>\n </div>\n <p\n className=\"mt-4 text-center text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Range calendar with presets -{\" \"}\n <a\n className=\"underline hover:text-foreground\"\n href=\"https://daypicker.dev/\"\n target=\"_blank\"\n rel=\"noopener nofollow\"\n >\n React DayPicker\n </a>\n </p>\n </div>\n )\n}\n",
13
+ "type": "registry:component"
14
+ }
15
+ ],
16
+ "meta": {
17
+ "tags": [
18
+ "calendar",
19
+ "range calendar",
20
+ "date",
21
+ "button",
22
+ "react daypicker"
23
+ ],
24
+ "colSpan": 3,
25
+ "style": 1
26
+ }
27
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-508",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/calendar.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-508.tsx",
11
+ "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { addDays } from \"date-fns\"\nimport { DateRange } from \"react-day-picker\"\n\nimport { Calendar } from \"@/registry/building-blocks/default/ui/calendar\"\n\nexport default function Component() {\n const today = new Date()\n const [date, setDate] = useState<DateRange | undefined>({\n from: today,\n to: addDays(today, 25),\n })\n\n return (\n <div>\n <Calendar\n mode=\"range\"\n selected={date}\n onSelect={setDate}\n numberOfMonths={2}\n pagedNavigation\n showOutsideDays={false}\n className=\"rounded-md border p-2\"\n classNames={{\n months: \"gap-8\",\n month:\n \"relative first-of-type:before:hidden before:absolute max-sm:before:inset-x-2 max-sm:before:h-px max-sm:before:-top-2 sm:before:inset-y-2 sm:before:w-px before:bg-border sm:before:-left-4\",\n }}\n />\n <p\n className=\"mt-4 text-center text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Two months calendar -{\" \"}\n <a\n className=\"underline hover:text-foreground\"\n href=\"https://daypicker.dev/\"\n target=\"_blank\"\n rel=\"noopener nofollow\"\n >\n React DayPicker\n </a>\n </p>\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "calendar",
18
+ "range calendar",
19
+ "date",
20
+ "react daypicker"
21
+ ],
22
+ "colSpan": 3,
23
+ "style": 1
24
+ }
25
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-509",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/calendar.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-509.tsx",
11
+ "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { addDays } from \"date-fns\"\nimport { DateRange } from \"react-day-picker\"\n\nimport { Calendar } from \"@/registry/building-blocks/default/ui/calendar\"\n\nexport default function Component() {\n const today = new Date()\n const [date, setDate] = useState<DateRange | undefined>({\n from: today,\n to: addDays(today, 48),\n })\n\n return (\n <div>\n <Calendar\n mode=\"range\"\n selected={date}\n onSelect={setDate}\n numberOfMonths={3}\n pagedNavigation\n showOutsideDays={false}\n className=\"rounded-md border p-2\"\n classNames={{\n months: \"sm:flex-col md:flex-row gap-8\",\n month:\n \"relative first-of-type:before:hidden before:absolute max-md:before:inset-x-2 max-md:before:h-px max-md:before:-top-4 md:before:inset-y-2 md:before:w-px before:bg-border md:before:-left-4\",\n }}\n />\n <p\n className=\"mt-4 text-center text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Three months calendar -{\" \"}\n <a\n className=\"underline hover:text-foreground\"\n href=\"https://daypicker.dev/\"\n target=\"_blank\"\n rel=\"noopener nofollow\"\n >\n React DayPicker\n </a>\n </p>\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "calendar",
18
+ "range calendar",
19
+ "date",
20
+ "react daypicker"
21
+ ],
22
+ "colSpan": 3,
23
+ "style": 1
24
+ }
25
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-51",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/input.json",
7
+ "https://loveui.dev/building-blocks/r/label.json"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "registry/default/components/comp-51.tsx",
12
+ "content": "\"use client\"\n\nimport { useId, useMemo, useState } from \"react\"\nimport { CheckIcon, EyeIcon, EyeOffIcon, XIcon } from \"lucide-react\"\n\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 [password, setPassword] = useState(\"\")\n const [isVisible, setIsVisible] = useState<boolean>(false)\n\n const toggleVisibility = () => setIsVisible((prevState) => !prevState)\n\n const checkStrength = (pass: string) => {\n const requirements = [\n { regex: /.{8,}/, text: \"At least 8 characters\" },\n { regex: /[0-9]/, text: \"At least 1 number\" },\n { regex: /[a-z]/, text: \"At least 1 lowercase letter\" },\n { regex: /[A-Z]/, text: \"At least 1 uppercase letter\" },\n ]\n\n return requirements.map((req) => ({\n met: req.regex.test(pass),\n text: req.text,\n }))\n }\n\n const strength = checkStrength(password)\n\n const strengthScore = useMemo(() => {\n return strength.filter((req) => req.met).length\n }, [strength])\n\n const getStrengthColor = (score: number) => {\n if (score === 0) return \"bg-border\"\n if (score <= 1) return \"bg-red-500\"\n if (score <= 2) return \"bg-orange-500\"\n if (score === 3) return \"bg-amber-500\"\n return \"bg-emerald-500\"\n }\n\n const getStrengthText = (score: number) => {\n if (score === 0) return \"Enter a password\"\n if (score <= 2) return \"Weak password\"\n if (score === 3) return \"Medium password\"\n return \"Strong password\"\n }\n\n return (\n <div>\n {/* Password input field with toggle visibility button */}\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Input with password strength indicator</Label>\n <div className=\"relative\">\n <Input\n id={id}\n className=\"pe-9\"\n placeholder=\"Password\"\n type={isVisible ? \"text\" : \"password\"}\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n aria-describedby={`${id}-description`}\n />\n <button\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 disabled:opacity-50\"\n type=\"button\"\n onClick={toggleVisibility}\n aria-label={isVisible ? \"Hide password\" : \"Show password\"}\n aria-pressed={isVisible}\n aria-controls=\"password\"\n >\n {isVisible ? (\n <EyeOffIcon size={16} aria-hidden=\"true\" />\n ) : (\n <EyeIcon size={16} aria-hidden=\"true\" />\n )}\n </button>\n </div>\n </div>\n\n {/* Password strength indicator */}\n <div\n className=\"mt-3 mb-4 h-1 w-full overflow-hidden rounded-full bg-border\"\n role=\"progressbar\"\n aria-valuenow={strengthScore}\n aria-valuemin={0}\n aria-valuemax={4}\n aria-label=\"Password strength\"\n >\n <div\n className={`h-full ${getStrengthColor(strengthScore)} transition-all duration-500 ease-out`}\n style={{ width: `${(strengthScore / 4) * 100}%` }}\n ></div>\n </div>\n\n {/* Password strength description */}\n <p\n id={`${id}-description`}\n className=\"mb-2 text-sm font-medium text-foreground\"\n >\n {getStrengthText(strengthScore)}. Must contain:\n </p>\n\n {/* Password requirements list */}\n <ul className=\"space-y-1.5\" aria-label=\"Password requirements\">\n {strength.map((req, index) => (\n <li key={index} className=\"flex items-center gap-2\">\n {req.met ? (\n <CheckIcon\n size={16}\n className=\"text-emerald-500\"\n aria-hidden=\"true\"\n />\n ) : (\n <XIcon\n size={16}\n className=\"text-muted-foreground/80\"\n aria-hidden=\"true\"\n />\n )}\n <span\n className={`text-xs ${req.met ? \"text-emerald-600\" : \"text-muted-foreground\"}`}\n >\n {req.text}\n <span className=\"sr-only\">\n {req.met ? \" - Requirement met\" : \" - Requirement not met\"}\n </span>\n </span>\n </li>\n ))}\n </ul>\n </div>\n )\n}\n",
13
+ "type": "registry:component"
14
+ }
15
+ ],
16
+ "meta": {
17
+ "tags": [
18
+ "input",
19
+ "label",
20
+ "password"
21
+ ]
22
+ }
23
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-510",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/calendar.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-510.tsx",
11
+ "content": "\"use client\"\n\nimport { useEffect, useState } from \"react\"\nimport { format } from \"date-fns\"\nimport { DayButtonProps } from \"react-day-picker\"\n\nimport { cn } from \"@/registry/building-blocks/default/lib/utils\"\nimport { Calendar } from \"@/registry/building-blocks/default/ui/calendar\"\n\nconst GOOD_PRICE_THRESHOLD = 100\n\nexport default function Component() {\n const today = new Date()\n const [date, setDate] = useState<Date | undefined>(today)\n\n // Mock price data\n const [mockPriceData, setMockPriceData] = useState<Record<string, number>>({})\n useEffect(() => {\n const generateMockPriceData = () => {\n const data: Record<string, number> = {}\n\n for (let i = 0; i < 180; i++) {\n const date = new Date(today)\n date.setDate(today.getDate() + i)\n const dateKey = format(date, \"yyyy-MM-dd\")\n const randomPrice = Math.floor(Math.random() * (200 - 80 + 1)) + 80\n data[dateKey] = randomPrice\n }\n return data\n }\n setMockPriceData(generateMockPriceData())\n }, [])\n\n const isDateDisabled = (date: Date) => {\n return !mockPriceData[format(date, \"yyyy-MM-dd\")]\n }\n\n return (\n <div>\n <Calendar\n mode=\"single\"\n selected={date}\n onSelect={setDate}\n numberOfMonths={2}\n pagedNavigation\n showOutsideDays={false}\n className=\"rounded-md border p-2\"\n classNames={{\n months: \"sm:flex-col md:flex-row gap-8\",\n month:\n \"relative first-of-type:before:hidden before:absolute max-md:before:inset-x-2 max-md:before:h-px max-md:before:-top-4 md:before:inset-y-2 md:before:w-px before:bg-border md:before:-left-4\",\n weekday: \"w-12\",\n day_button: \"size-12\",\n today: \"*:after:hidden\",\n }}\n components={{\n DayButton: (props: DayButtonProps) => (\n <DayButton {...props} prices={mockPriceData} />\n ),\n }}\n disabled={isDateDisabled}\n />\n <p\n className=\"mt-4 text-center text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Pricing calendar -{\" \"}\n <a\n className=\"underline hover:text-foreground\"\n href=\"https://daypicker.dev/\"\n target=\"_blank\"\n rel=\"noopener nofollow\"\n >\n React DayPicker\n </a>\n </p>\n </div>\n )\n}\n\nfunction DayButton(props: DayButtonProps & { prices: Record<string, number> }) {\n const { day, modifiers, prices, ...buttonProps } = props\n const price = prices[format(day.date, \"yyyy-MM-dd\")]\n const isGoodPrice = price < GOOD_PRICE_THRESHOLD\n\n return (\n <button {...buttonProps}>\n <span className=\"flex flex-col\">\n {props.children}\n {price && (\n <span\n className={cn(\n \"text-[10px] font-medium\",\n isGoodPrice\n ? \"text-emerald-500\"\n : \"text-muted-foreground group-data-selected:text-primary-foreground/70\"\n )}\n >\n ${price}\n </span>\n )}\n </span>\n </button>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "calendar",
18
+ "date",
19
+ "react daypicker"
20
+ ],
21
+ "colSpan": 3,
22
+ "style": 1
23
+ }
24
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-511",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/calendar.json",
8
+ "https://loveui.dev/building-blocks/r/label.json",
9
+ "https://loveui.dev/building-blocks/r/popover.json"
10
+ ],
11
+ "files": [
12
+ {
13
+ "path": "registry/default/components/comp-511.tsx",
14
+ "content": "\"use client\"\n\nimport { useId, useState } from \"react\"\nimport { format } from \"date-fns\"\nimport { CalendarIcon } from \"lucide-react\"\n\nimport { cn } from \"@/registry/building-blocks/default/lib/utils\"\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport { Calendar } from \"@/registry/building-blocks/default/ui/calendar\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/registry/building-blocks/default/ui/popover\"\n\nexport default function Component() {\n const id = useId()\n const [date, setDate] = useState<Date | undefined>()\n\n return (\n <div>\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Date picker</Label>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n id={id}\n variant={\"outline\"}\n className=\"group w-full justify-between border-input bg-background px-3 font-normal outline-offset-0 outline-none hover:bg-background focus-visible:outline-[3px]\"\n >\n <span\n className={cn(\"truncate\", !date && \"text-muted-foreground\")}\n >\n {date ? format(date, \"PPP\") : \"Pick a date\"}\n </span>\n <CalendarIcon\n size={16}\n className=\"shrink-0 text-muted-foreground/80 transition-colors group-hover:text-foreground\"\n aria-hidden=\"true\"\n />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-2\" align=\"start\">\n <Calendar mode=\"single\" selected={date} onSelect={setDate} />\n </PopoverContent>\n </Popover>\n </div>\n <p\n className=\"mt-2 text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Built with{\" \"}\n <a\n className=\"underline hover:text-foreground\"\n href=\"https://daypicker.dev/\"\n target=\"_blank\"\n rel=\"noopener nofollow\"\n >\n React DayPicker\n </a>\n </p>\n </div>\n )\n}\n",
15
+ "type": "registry:component"
16
+ }
17
+ ],
18
+ "meta": {
19
+ "tags": [
20
+ "calendar",
21
+ "date",
22
+ "button",
23
+ "picker",
24
+ "react daypicker"
25
+ ]
26
+ }
27
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-512",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/calendar.json",
8
+ "https://loveui.dev/building-blocks/r/label.json",
9
+ "https://loveui.dev/building-blocks/r/popover.json"
10
+ ],
11
+ "files": [
12
+ {
13
+ "path": "registry/default/components/comp-512.tsx",
14
+ "content": "\"use client\"\n\nimport { useId, useState } from \"react\"\nimport { format } from \"date-fns\"\nimport { CalendarIcon } from \"lucide-react\"\nimport { DateRange } from \"react-day-picker\"\n\nimport { cn } from \"@/registry/building-blocks/default/lib/utils\"\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport { Calendar } from \"@/registry/building-blocks/default/ui/calendar\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/registry/building-blocks/default/ui/popover\"\n\nexport default function Component() {\n const id = useId()\n const [date, setDate] = useState<DateRange | undefined>()\n\n return (\n <div>\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Date range picker</Label>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n id={id}\n variant=\"outline\"\n className=\"group w-full justify-between border-input bg-background px-3 font-normal outline-offset-0 outline-none hover:bg-background focus-visible:outline-[3px]\"\n >\n <span\n className={cn(\"truncate\", !date && \"text-muted-foreground\")}\n >\n {date?.from ? (\n date.to ? (\n <>\n {format(date.from, \"LLL dd, y\")} -{\" \"}\n {format(date.to, \"LLL dd, y\")}\n </>\n ) : (\n format(date.from, \"LLL dd, y\")\n )\n ) : (\n \"Pick a date range\"\n )}\n </span>\n <CalendarIcon\n size={16}\n className=\"shrink-0 text-muted-foreground/80 transition-colors group-hover:text-foreground\"\n aria-hidden=\"true\"\n />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-2\" align=\"start\">\n <Calendar mode=\"range\" selected={date} onSelect={setDate} />\n </PopoverContent>\n </Popover>\n </div>\n <p\n className=\"mt-2 text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Built with{\" \"}\n <a\n className=\"underline hover:text-foreground\"\n href=\"https://daypicker.dev/\"\n target=\"_blank\"\n rel=\"noopener nofollow\"\n >\n React DayPicker\n </a>\n </p>\n </div>\n )\n}\n",
15
+ "type": "registry:component"
16
+ }
17
+ ],
18
+ "meta": {
19
+ "tags": [
20
+ "calendar",
21
+ "date",
22
+ "button",
23
+ "picker",
24
+ "react daypicker"
25
+ ]
26
+ }
27
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-513",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/stepper.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-513.tsx",
11
+ "content": "import {\n Stepper,\n StepperIndicator,\n StepperItem,\n StepperSeparator,\n StepperTrigger,\n} from \"@/registry/building-blocks/default/ui/stepper\"\n\nconst steps = [1, 2, 3, 4]\n\nexport default function Component() {\n return (\n <div className=\"mx-auto max-w-xl space-y-8 text-center\">\n <Stepper defaultValue={2}>\n {steps.map((step) => (\n <StepperItem key={step} step={step} className=\"not-last:flex-1\">\n <StepperTrigger>\n <StepperIndicator asChild>{step}</StepperIndicator>\n </StepperTrigger>\n {step < steps.length && <StepperSeparator />}\n </StepperItem>\n ))}\n </Stepper>\n <p\n className=\"mt-2 text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Stepper with numbers only\n </p>\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "stepper"
18
+ ],
19
+ "colSpan": 3
20
+ }
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-514",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/stepper.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-514.tsx",
11
+ "content": "import {\n Stepper,\n StepperIndicator,\n StepperItem,\n StepperSeparator,\n StepperTrigger,\n} from \"@/registry/building-blocks/default/ui/stepper\"\n\nconst steps = [1, 2, 3, 4]\n\nexport default function Component() {\n return (\n <div className=\"mx-auto max-w-xl space-y-8 text-center\">\n <Stepper defaultValue={2}>\n {steps.map((step) => (\n <StepperItem key={step} step={step} className=\"not-last:flex-1\">\n <StepperTrigger>\n <StepperIndicator />\n </StepperTrigger>\n {step < steps.length && <StepperSeparator />}\n </StepperItem>\n ))}\n </Stepper>\n <p\n className=\"mt-2 text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Stepper with numbers and checkmarks\n </p>\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "stepper"
18
+ ],
19
+ "colSpan": 3
20
+ }
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-515",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/stepper.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-515.tsx",
11
+ "content": "import {\n Stepper,\n StepperIndicator,\n StepperItem,\n StepperSeparator,\n StepperTrigger,\n} from \"@/registry/building-blocks/default/ui/stepper\"\n\nconst steps = [1, 2, 3, 4]\n\nexport default function Component() {\n return (\n <div className=\"mx-auto max-w-xl space-y-8 text-center\">\n <Stepper defaultValue={2}>\n {steps.map((step) => (\n <StepperItem key={step} step={step} className=\"not-last:flex-1\">\n <StepperTrigger>\n <StepperIndicator className=\"size-4 data-[state=active]:border-2 data-[state=active]:border-primary data-[state=active]:bg-transparent [&_span]:sr-only [&_svg]:size-3\" />\n </StepperTrigger>\n {step < steps.length && <StepperSeparator />}\n </StepperItem>\n ))}\n </Stepper>\n <p\n className=\"mt-2 text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Stepper with tiny buttons and checkmarks\n </p>\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "stepper"
18
+ ],
19
+ "colSpan": 3
20
+ }
21
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-516",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/stepper.json"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "registry/default/components/comp-516.tsx",
12
+ "content": "\"use client\"\n\nimport { useState } from \"react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Stepper,\n StepperIndicator,\n StepperItem,\n StepperSeparator,\n StepperTrigger,\n} from \"@/registry/building-blocks/default/ui/stepper\"\n\nconst steps = [1, 2, 3, 4]\n\nexport default function Component() {\n const [currentStep, setCurrentStep] = useState(2)\n\n return (\n <div className=\"mx-auto max-w-xl space-y-8 text-center\">\n <Stepper value={currentStep} onValueChange={setCurrentStep}>\n {steps.map((step) => (\n <StepperItem key={step} step={step} className=\"not-last:flex-1\">\n <StepperTrigger asChild>\n <StepperIndicator />\n </StepperTrigger>\n {step < steps.length && <StepperSeparator />}\n </StepperItem>\n ))}\n </Stepper>\n <div className=\"flex justify-center space-x-4\">\n <Button\n variant=\"outline\"\n className=\"w-32\"\n onClick={() => setCurrentStep((prev) => prev - 1)}\n disabled={currentStep === 1}\n >\n Prev step\n </Button>\n <Button\n variant=\"outline\"\n className=\"w-32\"\n onClick={() => setCurrentStep((prev) => prev + 1)}\n disabled={currentStep > steps.length}\n >\n Next step\n </Button>\n </div>\n <p\n className=\"mt-2 text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Controlled stepper with checkmarks\n </p>\n </div>\n )\n}\n",
13
+ "type": "registry:component"
14
+ }
15
+ ],
16
+ "meta": {
17
+ "tags": [
18
+ "stepper"
19
+ ],
20
+ "colSpan": 3
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-517",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/stepper.json"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "registry/default/components/comp-517.tsx",
12
+ "content": "\"use client\"\n\nimport { useState } from \"react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Stepper,\n StepperIndicator,\n StepperItem,\n StepperSeparator,\n StepperTrigger,\n} from \"@/registry/building-blocks/default/ui/stepper\"\n\nconst steps = [1, 2, 3, 4]\n\nexport default function Component() {\n const [currentStep, setCurrentStep] = useState(2)\n const [isLoading, setIsLoading] = useState(false)\n\n const handleNextStep = () => {\n setIsLoading(true)\n setTimeout(() => {\n setCurrentStep((prev) => prev + 1)\n setIsLoading(false)\n }, 1000)\n }\n\n return (\n <div className=\"mx-auto max-w-xl space-y-8 text-center\">\n <Stepper value={currentStep} onValueChange={setCurrentStep}>\n {steps.map((step) => (\n <StepperItem\n key={step}\n step={step}\n className=\"not-last:flex-1\"\n loading={isLoading}\n >\n <StepperTrigger asChild>\n <StepperIndicator />\n </StepperTrigger>\n {step < steps.length && <StepperSeparator />}\n </StepperItem>\n ))}\n </Stepper>\n <div className=\"flex justify-center space-x-4\">\n <Button\n variant=\"outline\"\n className=\"w-32\"\n onClick={() => setCurrentStep((prev) => prev - 1)}\n disabled={currentStep === 1}\n >\n Prev step\n </Button>\n <Button\n variant=\"outline\"\n className=\"w-32\"\n onClick={handleNextStep}\n disabled={currentStep > steps.length}\n >\n Next step\n </Button>\n </div>\n <p\n className=\"mt-2 text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Controlled stepper with checkmarks and loading state\n </p>\n </div>\n )\n}\n",
13
+ "type": "registry:component"
14
+ }
15
+ ],
16
+ "meta": {
17
+ "tags": [
18
+ "stepper"
19
+ ],
20
+ "colSpan": 3
21
+ }
22
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-518",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/stepper.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-518.tsx",
11
+ "content": "import { Shuffle } from \"lucide-react\"\nimport {\n Stepper,\n StepperIndicator,\n StepperItem,\n StepperSeparator,\n StepperTrigger,\n} from \"@/registry/building-blocks/default/ui/stepper\"\n\nexport default function Component() {\n return (\n <div className=\"mx-auto max-w-xl space-y-8 text-center\">\n <Stepper defaultValue={2}>\n <StepperItem step={1} className=\"not-last:flex-1\">\n <StepperTrigger>\n <StepperIndicator asChild>\n <img\n className=\"rounded-full\"\n src={\"https://i.pravatar.cc/160?img=12\"}\n width={32}\n height={32}\n alt=\"Mike Palmer\"\n />\n </StepperIndicator>\n </StepperTrigger>\n <StepperSeparator />\n </StepperItem>\n <StepperItem step={2} className=\"not-last:flex-1\" loading>\n <StepperTrigger>\n <StepperIndicator />\n </StepperTrigger>\n <StepperSeparator />\n </StepperItem>\n <StepperItem step={3} className=\"not-last:flex-1\">\n <StepperTrigger>\n <StepperIndicator asChild>\n <Shuffle size={14} aria-hidden=\"true\" />\n <span className=\"sr-only\">Shuffle</span>\n </StepperIndicator>\n </StepperTrigger>\n </StepperItem>\n </Stepper>\n <p\n className=\"mt-2 text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Stepper with mixed elements\n </p>\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "stepper"
18
+ ],
19
+ "colSpan": 3
20
+ }
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-519",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/stepper.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-519.tsx",
11
+ "content": "import {\n Stepper,\n StepperIndicator,\n StepperItem,\n StepperTitle,\n StepperTrigger,\n} from \"@/registry/building-blocks/default/ui/stepper\"\n\nconst steps = [\n {\n step: 1,\n title: \"Step One\",\n },\n {\n step: 2,\n title: \"Step Two\",\n },\n {\n step: 3,\n title: \"Step Three\",\n },\n {\n step: 4,\n title: \"Step Four\",\n },\n]\n\nexport default function Component() {\n return (\n <div className=\"mx-auto max-w-xl space-y-8 text-center\">\n <Stepper defaultValue={2} className=\"items-start gap-4\">\n {steps.map(({ step, title }) => (\n <StepperItem key={step} step={step} className=\"flex-1\">\n <StepperTrigger className=\"w-full flex-col items-start gap-2 rounded\">\n <StepperIndicator asChild className=\"h-1 w-full bg-border\">\n <span className=\"sr-only\">{step}</span>\n </StepperIndicator>\n <div className=\"space-y-0.5\">\n <StepperTitle>{title}</StepperTitle>\n </div>\n </StepperTrigger>\n </StepperItem>\n ))}\n </Stepper>\n <p\n className=\"mt-2 text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Stepper with labels\n </p>\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "stepper"
18
+ ],
19
+ "colSpan": 3
20
+ }
21
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-52",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/input.json",
7
+ "https://loveui.dev/building-blocks/r/label.json"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "registry/default/components/comp-52.tsx",
12
+ "content": "import { useId } from \"react\"\n\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 <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Read-only input</Label>\n <Input\n id={id}\n className=\"read-only:bg-muted\"\n defaultValue=\"This is a read-only input\"\n readOnly\n placeholder=\"Email\"\n type=\"email\"\n />\n </div>\n )\n}\n",
13
+ "type": "registry:component"
14
+ }
15
+ ],
16
+ "meta": {
17
+ "tags": [
18
+ "input",
19
+ "label",
20
+ "read-only"
21
+ ]
22
+ }
23
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-520",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/stepper.json"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "registry/default/components/comp-520.tsx",
12
+ "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Stepper,\n StepperIndicator,\n StepperItem,\n StepperTrigger,\n} from \"@/registry/building-blocks/default/ui/stepper\"\n\nconst steps = [1, 2, 3, 4]\n\nexport default function Component() {\n const [currentStep, setCurrentStep] = useState(2)\n\n return (\n <div className=\"mx-auto max-w-xl space-y-8 text-center\">\n <div className=\"flex items-center gap-2\">\n <Button\n className=\"shrink-0\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => setCurrentStep((prev) => prev - 1)}\n disabled={currentStep === 1}\n aria-label=\"Prev step\"\n >\n <ChevronLeftIcon size={16} aria-hidden=\"true\" />\n </Button>\n <Stepper\n value={currentStep}\n onValueChange={setCurrentStep}\n className=\"gap-1\"\n >\n {steps.map((step) => (\n <StepperItem key={step} step={step} className=\"flex-1\">\n <StepperTrigger\n className=\"w-full flex-col items-start gap-2\"\n asChild\n >\n <StepperIndicator asChild className=\"h-1 w-full bg-border\">\n <span className=\"sr-only\">{step}</span>\n </StepperIndicator>\n </StepperTrigger>\n </StepperItem>\n ))}\n </Stepper>\n <Button\n className=\"shrink-0\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => setCurrentStep((prev) => prev + 1)}\n disabled={currentStep === steps.length}\n aria-label=\"Next step\"\n >\n <ChevronRightIcon size={16} aria-hidden=\"true\" />\n </Button>\n </div>\n <p\n className=\"mt-2 text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Paginated stepper\n </p>\n </div>\n )\n}\n",
13
+ "type": "registry:component"
14
+ }
15
+ ],
16
+ "meta": {
17
+ "tags": [
18
+ "stepper"
19
+ ],
20
+ "colSpan": 3
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-521",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/stepper.json"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "registry/default/components/comp-521.tsx",
12
+ "content": "\"use client\"\n\nimport { useState } from \"react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Stepper,\n StepperIndicator,\n StepperItem,\n StepperTrigger,\n} from \"@/registry/building-blocks/default/ui/stepper\"\n\nconst steps = [1, 2, 3, 4]\n\nexport default function Component() {\n const [currentStep, setCurrentStep] = useState(1)\n\n return (\n <div className=\"mx-auto max-w-xl space-y-8 text-center\">\n <div className=\"space-y-3\">\n <Stepper value={currentStep} onValueChange={setCurrentStep}>\n {steps.map((step) => (\n <StepperItem key={step} step={step} className=\"flex-1\">\n <StepperTrigger\n className=\"w-full flex-col items-start gap-2\"\n asChild\n >\n <StepperIndicator\n asChild\n className=\"h-2 w-full rounded-none bg-border\"\n >\n <span className=\"sr-only\">{step}</span>\n </StepperIndicator>\n </StepperTrigger>\n </StepperItem>\n ))}\n </Stepper>\n <div className=\"text-sm font-medium text-muted-foreground tabular-nums\">\n Step {currentStep} of {steps.length}\n </div>\n </div>\n <div className=\"flex justify-center space-x-4\">\n <Button\n variant=\"outline\"\n className=\"w-32\"\n onClick={() => setCurrentStep((prev) => prev - 1)}\n disabled={currentStep === 1}\n >\n Prev step\n </Button>\n <Button\n variant=\"outline\"\n className=\"w-32\"\n onClick={() => setCurrentStep((prev) => prev + 1)}\n disabled={currentStep >= steps.length}\n >\n Next step\n </Button>\n </div>\n <p\n className=\"mt-2 text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Progress stepper\n </p>\n </div>\n )\n}\n",
13
+ "type": "registry:component"
14
+ }
15
+ ],
16
+ "meta": {
17
+ "tags": [
18
+ "stepper"
19
+ ],
20
+ "colSpan": 3
21
+ }
22
+ }