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,23 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-296",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-296.tsx",
11
+ "content": "import { RadioIcon, XIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\n\nexport default function Component() {\n return (\n // To make the notification fixed, add classes like `fixed bottom-4 right-4` to the container element.\n <div className=\"z-50 max-w-[400px] rounded-md border bg-background p-4 shadow-lg\">\n <div className=\"flex items-center gap-2\">\n <div\n className=\"flex size-9 shrink-0 items-center justify-center rounded-full border\"\n aria-hidden=\"true\"\n >\n <RadioIcon className=\"opacity-60\" size={16} />\n </div>\n <div className=\"flex grow items-center gap-12\">\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium\">Goes live in 18 hours</p>\n <p className=\"text-xs text-muted-foreground\">March 12 at 9:30 AM.</p>\n </div>\n <Button size=\"sm\">Add to calendar</Button>\n </div>\n <Button\n variant=\"ghost\"\n className=\"group -my-1.5 -me-2 size-8 shrink-0 p-0 hover:bg-transparent\"\n aria-label=\"Close notification\"\n >\n <XIcon\n size={16}\n className=\"opacity-60 transition-opacity group-hover:opacity-100\"\n aria-hidden=\"true\"\n />\n </Button>\n </div>\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "notification",
18
+ "button"
19
+ ],
20
+ "colSpan": 2,
21
+ "style": 1
22
+ }
23
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-297",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/toast.json"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "registry/default/components/comp-297.tsx",
12
+ "content": "\"use client\"\n\nimport { useToast } from \"@/registry/building-blocks/default/hooks/use-toast\"\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport { ToastAction } from \"@/registry/building-blocks/default/ui/toast\"\n\nexport default function Component() {\n const { toast } = useToast()\n\n return (\n <Button\n variant=\"outline\"\n onClick={() => {\n toast({\n title: \"Deploy succeeded\",\n description: \"Production updated with build #5421.\",\n action: <ToastAction altText=\"View logs\">View logs</ToastAction>,\n })\n }}\n >\n Show toast\n </Button>\n )\n}\n",
13
+ "type": "registry:component"
14
+ },
15
+ {
16
+ "path": "registry/default/hooks/use-toast.ts",
17
+ "content": "\"use client\"\n\n// Inspired by react-hot-toast library\nimport * as React from \"react\"\n\nimport type {\n ToastActionElement,\n ToastProps,\n} from \"@/registry/default/ui/toast\"\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\ntype ToasterToast = ToastProps & {\n id: string\n title?: React.ReactNode\n description?: React.ReactNode\n action?: ToastActionElement\n}\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER\n return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"]\n toast: ToasterToast\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"]\n toast: Partial<ToasterToast>\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"]\n toastId?: ToasterToast[\"id\"]\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"]\n toastId?: ToasterToast[\"id\"]\n }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n }\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n }\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId)\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id)\n })\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n }\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n }\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n }\n }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action)\n listeners.forEach((listener) => {\n listener(memoryState)\n })\n}\n\ntype Toast = Omit<ToasterToast, \"id\">\n\nfunction toast({ ...props }: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n })\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id })\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss()\n },\n },\n })\n\n return {\n id: id,\n dismiss,\n update,\n }\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState)\n\n React.useEffect(() => {\n listeners.push(setState)\n return () => {\n const index = listeners.indexOf(setState)\n if (index > -1) {\n listeners.splice(index, 1)\n }\n }\n }, [state])\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n }\n}\n\nexport { toast, useToast }\n",
18
+ "type": "registry:hook"
19
+ }
20
+ ],
21
+ "meta": {
22
+ "tags": [
23
+ "notification",
24
+ "toast",
25
+ "radix"
26
+ ],
27
+ "colSpan": 2,
28
+ "style": 1
29
+ }
30
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-298",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/toast.json"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "registry/default/components/comp-298.tsx",
12
+ "content": "\"use client\"\n\nimport { useCallback, useEffect, useRef, useState } from \"react\"\nimport { CircleCheckIcon, XIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Toast,\n ToastAction,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from \"@/registry/building-blocks/default/ui/toast\"\n\ninterface UseProgressTimerProps {\n duration: number\n interval?: number\n onComplete?: () => void\n}\n\nfunction useProgressTimer({\n duration,\n interval = 100,\n onComplete,\n}: UseProgressTimerProps) {\n const [progress, setProgress] = useState(duration)\n const timerRef = useRef(0)\n const timerState = useRef({\n startTime: 0,\n remaining: duration,\n isPaused: false,\n })\n\n const cleanup = useCallback(() => {\n window.clearInterval(timerRef.current)\n }, [])\n\n const reset = useCallback(() => {\n cleanup()\n setProgress(duration)\n timerState.current = {\n startTime: 0,\n remaining: duration,\n isPaused: false,\n }\n }, [duration, cleanup])\n\n const start = useCallback(() => {\n const state = timerState.current\n state.startTime = Date.now()\n state.isPaused = false\n\n timerRef.current = window.setInterval(() => {\n const elapsedTime = Date.now() - state.startTime\n const remaining = Math.max(0, state.remaining - elapsedTime)\n\n setProgress(remaining)\n\n if (remaining <= 0) {\n cleanup()\n onComplete?.()\n }\n }, interval)\n }, [interval, cleanup, onComplete])\n\n const pause = useCallback(() => {\n const state = timerState.current\n if (!state.isPaused) {\n cleanup()\n state.remaining = Math.max(\n 0,\n state.remaining - (Date.now() - state.startTime)\n )\n state.isPaused = true\n }\n }, [cleanup])\n\n const resume = useCallback(() => {\n const state = timerState.current\n if (state.isPaused && state.remaining > 0) {\n start()\n }\n }, [start])\n\n useEffect(() => {\n return cleanup\n }, [cleanup])\n\n return {\n progress,\n start,\n pause,\n resume,\n reset,\n }\n}\n\nexport default function Component() {\n const [open, setOpen] = useState(false)\n const toastDuration = 5000\n const { progress, start, pause, resume, reset } = useProgressTimer({\n duration: toastDuration,\n onComplete: () => setOpen(false),\n })\n\n const handleOpenChange = useCallback(\n (isOpen: boolean) => {\n setOpen(isOpen)\n if (isOpen) {\n reset()\n start()\n }\n },\n [reset, start]\n )\n\n const handleButtonClick = useCallback(() => {\n if (open) {\n setOpen(false)\n // Wait for the close animation to finish\n window.setTimeout(() => {\n handleOpenChange(true)\n }, 150)\n } else {\n handleOpenChange(true)\n }\n }, [open, handleOpenChange])\n\n return (\n <ToastProvider swipeDirection=\"left\">\n <Button variant=\"outline\" onClick={handleButtonClick}>\n Show toast\n </Button>\n <Toast\n open={open}\n onOpenChange={handleOpenChange}\n onPause={pause}\n onResume={resume}\n >\n <div className=\"flex w-full justify-between gap-3\">\n <CircleCheckIcon\n className=\"mt-0.5 shrink-0 text-emerald-500\"\n size={16}\n aria-hidden=\"true\"\n />\n <div className=\"flex grow flex-col gap-3\">\n <div className=\"space-y-1\">\n <ToastTitle>Invoice paid in full</ToastTitle>\n <ToastDescription>\n Funds should settle in the next payout cycle.\n </ToastDescription>\n </div>\n <div>\n <ToastAction altText=\"View receipt\" asChild>\n <Button size=\"sm\">View receipt</Button>\n </ToastAction>\n </div>\n </div>\n <ToastClose asChild>\n <Button\n variant=\"ghost\"\n className=\"group -my-1.5 -me-2 size-8 shrink-0 p-0 hover:bg-transparent\"\n aria-label=\"Close notification\"\n >\n <XIcon\n size={16}\n className=\"opacity-60 transition-opacity group-hover:opacity-100\"\n aria-hidden=\"true\"\n />\n </Button>\n </ToastClose>\n </div>\n <div className=\"contents\" aria-hidden=\"true\">\n <div\n className=\"pointer-events-none absolute bottom-0 left-0 h-1 w-full bg-emerald-500\"\n style={{\n width: `${(progress / toastDuration) * 100}%`,\n transition: \"width 100ms linear\",\n }}\n />\n </div>\n </Toast>\n <ToastViewport className=\"sm:right-auto sm:left-0\" />\n </ToastProvider>\n )\n}\n",
13
+ "type": "registry:component"
14
+ }
15
+ ],
16
+ "meta": {
17
+ "tags": [
18
+ "notification",
19
+ "toast",
20
+ "success",
21
+ "radix"
22
+ ],
23
+ "colSpan": 2,
24
+ "style": 1
25
+ }
26
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-299",
4
+ "type": "registry:component",
5
+ "dependencies": [
6
+ "sonner"
7
+ ],
8
+ "registryDependencies": [
9
+ "https://loveui.dev/building-blocks/r/button.json"
10
+ ],
11
+ "files": [
12
+ {
13
+ "path": "registry/default/components/comp-299.tsx",
14
+ "content": "\"use client\"\n\nimport { toast } from \"sonner\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\n\nexport default function Component() {\n return (\n <Button\n variant=\"outline\"\n onClick={() => {\n toast(\"Deploy finished without errors.\", {\n description: \"Main branch is now live.\",\n action: {\n label: \"View logs\",\n onClick: () => console.log(\"View logs\"),\n },\n })\n }}\n >\n Show sonner\n </Button>\n )\n}\n",
15
+ "type": "registry:component"
16
+ }
17
+ ],
18
+ "meta": {
19
+ "tags": [
20
+ "notification",
21
+ "toast",
22
+ "sonner",
23
+ "radix"
24
+ ],
25
+ "colSpan": 2,
26
+ "style": 1
27
+ }
28
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-30",
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-30.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}>File input</Label>\n <Input\n id={id}\n className=\"p-0 pe-3 file:me-3 file:border-0 file:border-e\"\n type=\"file\"\n />\n </div>\n )\n}\n",
13
+ "type": "registry:component"
14
+ }
15
+ ],
16
+ "meta": {
17
+ "tags": [
18
+ "input",
19
+ "label",
20
+ "file"
21
+ ]
22
+ }
23
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-300",
4
+ "type": "registry:component",
5
+ "dependencies": [
6
+ "sonner"
7
+ ],
8
+ "registryDependencies": [
9
+ "https://loveui.dev/building-blocks/r/button.json"
10
+ ],
11
+ "files": [
12
+ {
13
+ "path": "registry/default/components/comp-300.tsx",
14
+ "content": "\"use client\"\n\nimport { CircleCheckIcon, XIcon } from \"lucide-react\"\nimport { toast } from \"sonner\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\n\nexport default function Component() {\n return (\n <Button\n variant=\"outline\"\n onClick={() => {\n toast.custom((t) => (\n <div className=\"w-full rounded-md border bg-background px-4 py-3 text-foreground shadow-lg sm:w-[var(--width)]\">\n <div className=\"flex gap-2\">\n <div className=\"flex grow gap-3\">\n <CircleCheckIcon\n className=\"mt-0.5 shrink-0 text-emerald-500\"\n size={16}\n aria-hidden=\"true\"\n />\n <div className=\"flex grow justify-between gap-12\">\n <p className=\"text-sm\">Release goes live tomorrow at 9:00 AM.</p>\n <div className=\"text-sm whitespace-nowrap\">\n <button className=\"text-sm font-medium hover:underline\">\n Review plan\n </button>{\" \"}\n <span className=\"mx-1 text-muted-foreground\">·</span>{\" \"}\n <button\n className=\"text-sm font-medium hover:underline\"\n onClick={() => toast.dismiss(t)}\n >\n Reschedule\n </button>\n </div>\n </div>\n </div>\n <Button\n variant=\"ghost\"\n className=\"group -my-1.5 -me-2 size-8 shrink-0 p-0 hover:bg-transparent\"\n onClick={() => toast.dismiss(t)}\n aria-label=\"Close banner\"\n >\n <XIcon\n size={16}\n className=\"opacity-60 transition-opacity group-hover:opacity-100\"\n aria-hidden=\"true\"\n />\n </Button>\n </div>\n </div>\n ))\n }}\n >\n Show custom toast\n </Button>\n )\n}\n",
15
+ "type": "registry:component"
16
+ }
17
+ ],
18
+ "meta": {
19
+ "tags": [
20
+ "notification",
21
+ "toast",
22
+ "sonner",
23
+ "success",
24
+ "radix"
25
+ ],
26
+ "colSpan": 2,
27
+ "style": 1
28
+ }
29
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-301",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-301.tsx",
11
+ "content": "import { Button } from \"@/registry/building-blocks/default/ui/button\"\n\nexport default function Component() {\n return (\n // To make the notification fixed, add classes like `fixed bottom-4 inset-x-4` to the container element.\n <div className=\"z-50 rounded-md border bg-background px-4 py-3 shadow-lg\">\n <div className=\"flex flex-col justify-between gap-3 md:flex-row md:items-center\">\n <p className=\"text-sm\">\n We use cookies to personalize dashboards and track anonymized product analytics.\n </p>\n <div className=\"flex gap-2 max-md:flex-wrap\">\n <Button size=\"sm\">Accept all</Button>\n <Button variant=\"outline\" size=\"sm\">\n Manage preferences\n </Button>\n </div>\n </div>\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "banner",
18
+ "cookies",
19
+ "gdpr",
20
+ "privacy"
21
+ ],
22
+ "colSpan": 3
23
+ }
24
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-302",
4
+ "type": "registry:component",
5
+ "files": [
6
+ {
7
+ "path": "registry/default/components/comp-302.tsx",
8
+ "content": "import { ArrowRightIcon } from \"lucide-react\"\n\nexport default function Component() {\n return (\n <div className=\"rounded-md border border-border/60 bg-muted/80 px-4 py-3 text-foreground shadow-sm\">\n <p className=\"flex justify-center text-sm\">\n <a href=\"#\" className=\"group\">\n <span className=\"me-1 text-base leading-none\">✨</span>\n Launch customer journey templates for product teams\n <ArrowRightIcon\n className=\"ms-2 -mt-0.5 inline-flex opacity-60 transition-transform group-hover:translate-x-0.5\"\n size={16}\n aria-hidden=\"true\"\n />\n </a>\n </p>\n </div>\n )\n}\n",
9
+ "type": "registry:component"
10
+ }
11
+ ],
12
+ "meta": {
13
+ "tags": [
14
+ "banner"
15
+ ],
16
+ "colSpan": 3
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-303",
4
+ "type": "registry:component",
5
+ "files": [
6
+ {
7
+ "path": "registry/default/components/comp-303.tsx",
8
+ "content": "import { EclipseIcon } from \"lucide-react\"\n\nexport default function Component() {\n return (\n <div className=\"rounded-md border border-border/60 bg-muted/80 px-4 py-3 text-foreground shadow-sm\">\n <p className=\"text-center text-sm\">\n <EclipseIcon\n className=\"me-3 -mt-0.5 inline-flex opacity-60\"\n size={16}\n aria-hidden=\"true\"\n />\n Unlock role-based dashboards with live product analytics{\" \"}\n <span className=\"text-muted-foreground\">·</span>{\" \"}\n <a href=\"#\" className=\"font-medium underline hover:no-underline\">\n Upgrade now\n </a>\n </p>\n </div>\n )\n}\n",
9
+ "type": "registry:component"
10
+ }
11
+ ],
12
+ "meta": {
13
+ "tags": [
14
+ "banner"
15
+ ],
16
+ "colSpan": 3
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-304",
4
+ "type": "registry:component",
5
+ "files": [
6
+ {
7
+ "path": "registry/default/components/comp-304.tsx",
8
+ "content": "import { ArrowRightIcon, Eclipse } from \"lucide-react\"\n\nexport default function Component() {\n return (\n <div className=\"rounded-md border border-border/60 bg-muted/80 px-4 py-3 text-foreground shadow-sm\">\n <div className=\"flex flex-col justify-between gap-2 md:flex-row\">\n <div className=\"flex grow gap-3\">\n <Eclipse\n className=\"mt-0.5 shrink-0 opacity-60\"\n size={16}\n aria-hidden=\"true\"\n />\n <div className=\"flex grow flex-col justify-between gap-2 md:flex-row md:items-center\">\n <p className=\"text-sm\">\n Workspace automation now supports conditional branches and approvals.\n </p>\n <a href=\"#\" className=\"group text-sm font-medium whitespace-nowrap\">\n See what’s new\n <ArrowRightIcon\n className=\"ms-1 -mt-0.5 inline-flex opacity-60 transition-transform group-hover:translate-x-0.5\"\n size={16}\n aria-hidden=\"true\"\n />\n </a>\n </div>\n </div>\n </div>\n </div>\n )\n}\n",
9
+ "type": "registry:component"
10
+ }
11
+ ],
12
+ "meta": {
13
+ "tags": [
14
+ "banner"
15
+ ],
16
+ "colSpan": 3
17
+ }
18
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-305",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-305.tsx",
11
+ "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { ArrowRightIcon, Eclipse, XIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\n\nexport default function Component() {\n const [isVisible, setIsVisible] = useState(true)\n\n if (!isVisible) return null\n\n return (\n <div className=\"rounded-md border border-border/60 bg-muted/80 px-4 py-3 text-foreground shadow-sm\">\n <div className=\"flex gap-2\">\n <div className=\"flex grow gap-3\">\n <Eclipse\n className=\"mt-0.5 shrink-0 opacity-60\"\n size={16}\n aria-hidden=\"true\"\n />\n <div className=\"flex grow flex-col justify-between gap-2 md:flex-row\">\n <p className=\"text-sm\">\n Real-time dashboards just shipped—stream events without refreshing.\n </p>\n <a href=\"#\" className=\"group text-sm font-medium whitespace-nowrap\">\n View release notes\n <ArrowRightIcon\n className=\"ms-1 -mt-0.5 inline-flex opacity-60 transition-transform group-hover:translate-x-0.5\"\n size={16}\n aria-hidden=\"true\"\n />\n </a>\n </div>\n </div>\n <Button\n variant=\"ghost\"\n className=\"group -my-1.5 -me-2 size-8 shrink-0 p-0 hover:bg-transparent\"\n onClick={() => setIsVisible(false)}\n aria-label=\"Close banner\"\n >\n <XIcon\n size={16}\n className=\"opacity-60 transition-opacity group-hover:opacity-100\"\n aria-hidden=\"true\"\n />\n </Button>\n </div>\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "banner"
18
+ ],
19
+ "colSpan": 3
20
+ }
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-306",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-306.tsx",
11
+ "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { EclipseIcon, XIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\n\nexport default function Component() {\n const [isVisible, setIsVisible] = useState(true)\n\n if (!isVisible) return null\n\n return (\n <div className=\"rounded-md border border-border/60 bg-muted/80 px-4 py-3 text-foreground shadow-sm md:py-2\">\n <div className=\"flex gap-2 md:items-center\">\n <div className=\"flex grow gap-3 md:items-center\">\n <EclipseIcon\n className=\"shrink-0 opacity-60 max-md:mt-0.5\"\n size={16}\n aria-hidden=\"true\"\n />\n <div className=\"flex grow flex-col justify-between gap-3 md:flex-row md:items-center\">\n <p className=\"text-sm\">\n Usage-based billing is live. Export detailed invoices anytime.\n </p>\n <div className=\"flex gap-2 max-md:flex-wrap\">\n <Button size=\"sm\" className=\"text-sm\">\n Download invoices\n </Button>\n <Button variant=\"outline\" size=\"sm\" className=\"text-sm\">\n View docs\n </Button>\n </div>\n </div>\n </div>\n <Button\n variant=\"ghost\"\n className=\"group -my-1.5 -me-2 size-8 shrink-0 p-0 hover:bg-transparent\"\n onClick={() => setIsVisible(false)}\n aria-label=\"Close banner\"\n >\n <XIcon\n size={16}\n className=\"opacity-60 transition-opacity group-hover:opacity-100\"\n aria-hidden=\"true\"\n />\n </Button>\n </div>\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "banner"
18
+ ],
19
+ "colSpan": 3
20
+ }
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-307",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-307.tsx",
11
+ "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { Eclipse, XIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\n\nexport default function Component() {\n const [isVisible, setIsVisible] = useState(true)\n\n if (!isVisible) return null\n\n return (\n <div className=\"rounded-md border border-border/60 bg-muted/80 px-4 py-3 text-foreground shadow-sm md:py-2\">\n <div className=\"flex gap-2 md:items-center\">\n <div className=\"flex grow gap-3 md:items-center\">\n <Eclipse\n className=\"shrink-0 opacity-60 max-md:mt-0.5\"\n size={16}\n aria-hidden=\"true\"\n />\n <div className=\"flex grow flex-col justify-between gap-3 md:flex-row md:items-center\">\n <p className=\"text-sm\">\n A new API explorer ships with this release—call endpoints in your browser.\n </p>\n <div className=\"flex gap-2 max-md:flex-wrap\">\n <Button size=\"sm\" className=\"text-sm\">\n Try it now\n </Button>\n <Button variant=\"link\" size=\"sm\" className=\"text-sm\">\n Read docs\n </Button>\n </div>\n </div>\n </div>\n <Button\n variant=\"ghost\"\n className=\"group -my-1.5 -me-2 size-8 shrink-0 p-0 hover:bg-transparent\"\n onClick={() => setIsVisible(false)}\n aria-label=\"Close banner\"\n >\n <XIcon\n size={16}\n className=\"opacity-60 transition-opacity group-hover:opacity-100\"\n aria-hidden=\"true\"\n />\n </Button>\n </div>\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "banner"
18
+ ],
19
+ "colSpan": 3
20
+ }
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-308",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-308.tsx",
11
+ "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { Eclipse, XIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\n\nexport default function Component() {\n const [isVisible, setIsVisible] = useState(true)\n\n if (!isVisible) return null\n\n return (\n <div className=\"rounded-md border border-border/60 bg-muted/80 px-4 py-3 text-foreground shadow-sm md:py-2\">\n <div className=\"flex gap-2 md:items-center\">\n <div className=\"flex grow gap-3 md:items-center md:justify-center\">\n <Eclipse\n className=\"shrink-0 opacity-60 max-md:mt-0.5\"\n size={16}\n aria-hidden=\"true\"\n />\n <div className=\"flex flex-col justify-between gap-3 md:flex-row md:items-center\">\n <p className=\"text-sm\">\n AI summaries now ship inside the insights tab—turn them on for your team.\n </p>\n <div className=\"flex gap-2 max-md:flex-wrap\">\n <Button size=\"sm\" className=\"rounded-full\">\n Enable now\n </Button>\n </div>\n </div>\n </div>\n <Button\n variant=\"ghost\"\n className=\"group -my-1.5 -me-2 size-8 shrink-0 p-0 hover:bg-transparent\"\n onClick={() => setIsVisible(false)}\n aria-label=\"Close banner\"\n >\n <XIcon\n size={16}\n className=\"opacity-60 transition-opacity group-hover:opacity-100\"\n aria-hidden=\"true\"\n />\n </Button>\n </div>\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "banner"
18
+ ],
19
+ "colSpan": 3
20
+ }
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-309",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-309.tsx",
11
+ "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { RocketIcon, XIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\n\nexport default function Component() {\n const [isVisible, setIsVisible] = useState(true)\n\n if (!isVisible) return null\n\n return (\n <div className=\"rounded-md border border-border/60 bg-muted/80 px-4 py-3 text-foreground shadow-sm\">\n <div className=\"flex gap-2 md:items-center\">\n <div className=\"flex grow gap-3 md:items-center\">\n <div\n className=\"flex size-9 shrink-0 items-center justify-center rounded-full bg-primary/15 max-md:mt-0.5\"\n aria-hidden=\"true\"\n >\n <RocketIcon className=\"opacity-80\" size={16} />\n </div>\n <div className=\"flex grow flex-col justify-between gap-3 md:flex-row md:items-center\">\n <div className=\"space-y-0.5\">\n <p className=\"text-sm font-medium\">\n Launch guided onboarding checklists\n </p>\n <p className=\"text-sm text-muted-foreground\">\n Activate the templates and share feedback with the product team.\n </p>\n </div>\n <div className=\"flex gap-2 max-md:flex-wrap\">\n <Button size=\"sm\" className=\"text-sm\">\n Enable now\n </Button>\n </div>\n </div>\n </div>\n <Button\n variant=\"ghost\"\n className=\"group -my-1.5 -me-2 size-8 shrink-0 p-0 hover:bg-transparent\"\n onClick={() => setIsVisible(false)}\n aria-label=\"Close banner\"\n >\n <XIcon\n size={16}\n className=\"opacity-60 transition-opacity group-hover:opacity-100\"\n aria-hidden=\"true\"\n />\n </Button>\n </div>\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "banner"
18
+ ],
19
+ "colSpan": 3
20
+ }
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-31",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/input.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-31.tsx",
11
+ "content": "import { useId } from \"react\"\n\nimport { Input } from \"@/registry/building-blocks/default/ui/input\"\n\nexport default function Component() {\n const id = useId()\n return (\n <div className=\"group relative\">\n <label\n htmlFor={id}\n className=\"absolute start-1 top-0 z-10 block -translate-y-1/2 bg-background px-2 text-xs font-medium text-foreground group-has-disabled:opacity-50\"\n >\n Input with overlapping label\n </label>\n <Input id={id} className=\"h-10\" placeholder=\"Email\" type=\"email\" />\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "input",
18
+ "label"
19
+ ]
20
+ }
21
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-310",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-310.tsx",
11
+ "content": "\"use client\"\n\nimport { useEffect, useState } from \"react\"\nimport { TicketPercent, XIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\n\n// Define the sale end date - eg: new Date('2024-12-31T23:59:59');\nconst saleEndDate = new Date(\n Date.now() + 9 * 60 * 60 * 1000 + 45 * 60 * 1000 + 24 * 1000\n) // Setting 9h 45m 24s from now for demo purposes\n\ninterface TimeLeft {\n days: number\n hours: number\n minutes: number\n seconds: number\n isExpired: boolean\n}\n\nexport default function Component() {\n const [isVisible, setIsVisible] = useState(true)\n const [timeLeft, setTimeLeft] = useState<TimeLeft>({\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0,\n isExpired: false,\n })\n\n useEffect(() => {\n const calculateTimeLeft = () => {\n const now = new Date()\n const difference = saleEndDate.getTime() - now.getTime()\n\n if (difference <= 0) {\n setTimeLeft({\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0,\n isExpired: true,\n })\n return\n }\n\n const days = Math.floor(difference / (1000 * 60 * 60 * 24))\n const hours = Math.floor(\n (difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)\n )\n const minutes = Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60))\n const seconds = Math.floor((difference % (1000 * 60)) / 1000)\n\n setTimeLeft({\n days,\n hours,\n minutes,\n seconds,\n isExpired: false,\n })\n }\n\n // Calculate immediately and then every second\n calculateTimeLeft()\n const timer = setInterval(calculateTimeLeft, 1000)\n\n return () => clearInterval(timer)\n }, [])\n\n if (!isVisible || timeLeft.isExpired) return null\n\n return (\n <div className=\"rounded-md border border-border/60 bg-muted/80 px-4 py-3 text-foreground shadow-sm\">\n <div className=\"flex gap-2 md:items-center\">\n <div className=\"flex grow gap-3 md:items-center\">\n <div\n className=\"flex size-9 shrink-0 items-center justify-center rounded-full bg-primary/15 max-md:mt-0.5\"\n aria-hidden=\"true\"\n >\n <TicketPercent className=\"opacity-80\" size={16} />\n </div>\n <div className=\"flex grow flex-col justify-between gap-3 md:flex-row md:items-center\">\n <div className=\"space-y-0.5\">\n <p className=\"text-sm font-medium\">Launch Week ends soon</p>\n <p className=\"text-sm text-muted-foreground\">\n Save 30% on yearly plans for the next 24 hours—lock it in while it lasts.\n </p>\n </div>\n <div className=\"flex gap-3 max-md:flex-wrap\">\n <div className=\"flex items-center divide-x divide-primary-foreground rounded-md bg-primary/15 text-sm tabular-nums\">\n {timeLeft.days > 0 && (\n <span className=\"flex h-8 items-center justify-center p-2\">\n {timeLeft.days}\n <span className=\"text-muted-foreground\">d</span>\n </span>\n )}\n <span className=\"flex h-8 items-center justify-center p-2\">\n {timeLeft.hours.toString().padStart(2, \"0\")}\n <span className=\"text-muted-foreground\">h</span>\n </span>\n <span className=\"flex h-8 items-center justify-center p-2\">\n {timeLeft.minutes.toString().padStart(2, \"0\")}\n <span className=\"text-muted-foreground\">m</span>\n </span>\n <span className=\"flex h-8 items-center justify-center p-2\">\n {timeLeft.seconds.toString().padStart(2, \"0\")}\n <span className=\"text-muted-foreground\">s</span>\n </span>\n </div>\n <Button size=\"sm\" className=\"text-sm\">\n Buy now\n </Button>\n </div>\n </div>\n </div>\n <Button\n variant=\"ghost\"\n className=\"group -my-1.5 -me-2 size-8 shrink-0 p-0 hover:bg-transparent\"\n onClick={() => setIsVisible(false)}\n aria-label=\"Close banner\"\n >\n <XIcon\n size={16}\n className=\"opacity-60 transition-opacity group-hover:opacity-100\"\n aria-hidden=\"true\"\n />\n </Button>\n </div>\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "banner",
18
+ "countdown",
19
+ "sale"
20
+ ],
21
+ "colSpan": 3
22
+ }
23
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-311",
4
+ "type": "registry:component",
5
+ "files": [
6
+ {
7
+ "path": "registry/default/components/comp-311.tsx",
8
+ "content": "export default function Component() {\n return (\n <div className=\"border-b px-4 py-3\">\n <p className=\"text-center text-sm\">\n <span className=\"mr-1 text-base leading-none\">📫</span> Subscribe to our\n newsletter and get 10% off your first order!{\" \"}\n <span className=\"mx-1 text-muted-foreground\">·</span>{\" \"}\n <a href=\"#\" className=\"font-medium underline hover:no-underline\">\n Subscribe\n </a>\n </p>\n </div>\n )\n}\n",
9
+ "type": "registry:component"
10
+ }
11
+ ],
12
+ "meta": {
13
+ "tags": [
14
+ "banner",
15
+ "newsletter",
16
+ "subscribe"
17
+ ],
18
+ "colSpan": 3
19
+ }
20
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-312",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "registry/default/components/comp-312.tsx",
11
+ "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { DownloadIcon, LoaderCircleIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\n\nexport default function Component() {\n const [isDownloading, setIsDownloading] = useState(false)\n\n const handleDownload = () => {\n setIsDownloading(true)\n // Simulate download\n setTimeout(() => {\n setIsDownloading(false)\n }, 2000)\n }\n\n return (\n <div className=\"bg-muted px-4 py-3 md:py-2\">\n <div className=\"flex flex-wrap items-center justify-center gap-x-4 gap-y-2\">\n <p className=\"text-sm\">\n <span className=\"font-medium\">v2.1.0</span>\n <span className=\"mx-2 text-muted-foreground\">•</span>\n New features and improvements available\n </p>\n <Button\n size=\"sm\"\n variant=\"outline\"\n disabled={isDownloading}\n onClick={handleDownload}\n className=\"min-w-24\"\n >\n {isDownloading ? (\n <>\n <LoaderCircleIcon\n className=\"-ms-0.5 me-2 animate-spin\"\n size={16}\n aria-hidden=\"true\"\n />\n Updating...\n </>\n ) : (\n <>\n <DownloadIcon size={16} className=\"-ms-0.5\" aria-hidden=\"true\" />\n Update now\n </>\n )}\n </Button>\n </div>\n </div>\n )\n}\n",
12
+ "type": "registry:component"
13
+ }
14
+ ],
15
+ "meta": {
16
+ "tags": [
17
+ "banner"
18
+ ],
19
+ "colSpan": 3
20
+ }
21
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-313",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/alert-dialog.json",
7
+ "https://loveui.dev/building-blocks/r/button.json"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "registry/default/components/comp-313.tsx",
12
+ "content": "import {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"@/registry/building-blocks/default/ui/alert-dialog\"\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\n\nexport default function AlertComponent() {\n return (\n <AlertDialog>\n <AlertDialogTrigger asChild>\n <Button variant=\"outline\">Alert dialog</Button>\n </AlertDialogTrigger>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Are you sure?</AlertDialogTitle>\n <AlertDialogDescription>\n Take a moment to review the details provided to ensure you\n understand the implications.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction>Okay</AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )\n}\n",
13
+ "type": "registry:component"
14
+ }
15
+ ],
16
+ "meta": {
17
+ "tags": [
18
+ "dialog",
19
+ "modal",
20
+ "alert",
21
+ "alert dialog",
22
+ "radix"
23
+ ],
24
+ "style": 1
25
+ }
26
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-314",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/alert-dialog.json",
7
+ "https://loveui.dev/building-blocks/r/button.json"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "registry/default/components/comp-314.tsx",
12
+ "content": "import { CircleAlertIcon } from \"lucide-react\"\n\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"@/registry/building-blocks/default/ui/alert-dialog\"\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\n\nexport default function AlertComponent() {\n return (\n <AlertDialog>\n <AlertDialogTrigger asChild>\n <Button variant=\"outline\">Alert dialog with icon</Button>\n </AlertDialogTrigger>\n <AlertDialogContent>\n <div className=\"flex flex-col gap-2 max-sm:items-center sm:flex-row sm:gap-4\">\n <div\n className=\"flex size-9 shrink-0 items-center justify-center rounded-full border\"\n aria-hidden=\"true\"\n >\n <CircleAlertIcon className=\"opacity-80\" size={16} />\n </div>\n <AlertDialogHeader>\n <AlertDialogTitle>Are you sure?</AlertDialogTitle>\n <AlertDialogDescription>\n Are you sure you want to delete your account? All your data will\n be removed.\n </AlertDialogDescription>\n </AlertDialogHeader>\n </div>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction>Confirm</AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )\n}\n",
13
+ "type": "registry:component"
14
+ }
15
+ ],
16
+ "meta": {
17
+ "tags": [
18
+ "dialog",
19
+ "modal",
20
+ "alert",
21
+ "alert dialog",
22
+ "radix"
23
+ ],
24
+ "style": 1
25
+ }
26
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "comp-315",
4
+ "type": "registry:component",
5
+ "registryDependencies": [
6
+ "https://loveui.dev/building-blocks/r/button.json",
7
+ "https://loveui.dev/building-blocks/r/dialog.json"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "registry/default/components/comp-315.tsx",
12
+ "content": "import { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/building-blocks/default/ui/dialog\"\n\nexport default function Component() {\n return (\n <Dialog>\n <DialogTrigger asChild>\n <Button variant=\"outline\">Scrollable (native scrollbar)</Button>\n </DialogTrigger>\n <DialogContent className=\"flex flex-col gap-0 p-0 sm:max-h-[min(640px,80vh)] sm:max-w-lg [&>button:last-child]:hidden\">\n <div className=\"overflow-y-auto\">\n <DialogHeader className=\"contents space-y-0 text-left\">\n <DialogTitle className=\"px-6 pt-6\">\n Frequently Asked Questions (FAQ)\n </DialogTitle>\n <DialogDescription asChild>\n <div className=\"p-6\">\n <div className=\"space-y-4 [&_strong]:font-semibold [&_strong]:text-foreground\">\n <div className=\"space-y-1\">\n <p>\n <strong>Account Management</strong>\n </p>\n <p>\n Navigate to the registration page, provide required\n information, and verify your email address. You can sign\n up using your email or through social media platforms.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Password Reset Process</strong>\n </p>\n <p>\n Users can reset their password through the account\n settings page. Click &quot;Forgot Password&quot; and\n follow the email verification steps to regain account\n access quickly and securely.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Service Pricing Tiers</strong>\n </p>\n <p>\n We offer three primary subscription levels designed to\n meet diverse user needs: Basic (free with limited\n features), Professional (monthly fee with comprehensive\n access), and Enterprise (custom pricing with full platform\n capabilities).\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Technical Support Channels</strong>\n </p>\n <p>\n Customer support is accessible through multiple\n communication methods including email support, live chat\n during business hours, an integrated support ticket\n system, and phone support specifically for\n enterprise-level customers.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Data Protection Strategies</strong>\n </p>\n <p>\n Our platform implements rigorous security measures\n including 256-bit SSL encryption, regular comprehensive\n security audits, strict data access controls, and\n compliance with international privacy protection\n standards.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Platform Compatibility</strong>\n </p>\n <p>\n The service supports multiple device and operating system\n environments, including web browsers like Chrome and\n Firefox, mobile applications for iOS and Android, and\n desktop applications compatible with Windows and macOS.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Subscription Management</strong>\n </p>\n <p>\n Subscriptions can be cancelled at any time through account\n settings, with pro-rated refunds available within 30 days\n of payment. Both monthly and annual billing options are\n provided, with special discounts offered for annual\n commitments.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Payment Method Options</strong>\n </p>\n <p>\n We accept a wide range of payment methods including major\n credit cards such as Visa, MasterCard, and American\n Express, digital payment platforms like PayPal, and direct\n bank transfers. Regional payment options may also be\n available depending on user location.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Customer Support</strong>\n </p>\n <p>\n Our dedicated customer support team is available 24/7,\n providing quick and efficient assistance to address any\n inquiries or issues you may have.\n </p>\n </div>\n <div className=\"space-y-1\">\n <p>\n <strong>Privacy Policy</strong>\n </p>\n <p>\n Our privacy policy outlines how we collect, use, and\n protect your personal data, ensuring your privacy is\n protected at all times.\n </p>\n </div>\n </div>\n </div>\n </DialogDescription>\n </DialogHeader>\n <DialogFooter className=\"px-6 pb-6 sm:justify-start\">\n <DialogClose asChild>\n <Button type=\"button\" variant=\"outline\">\n Cancel\n </Button>\n </DialogClose>\n <DialogClose asChild>\n <Button type=\"button\">Okay</Button>\n </DialogClose>\n </DialogFooter>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n",
13
+ "type": "registry:component"
14
+ }
15
+ ],
16
+ "meta": {
17
+ "tags": [
18
+ "dialog",
19
+ "modal",
20
+ "radix"
21
+ ],
22
+ "style": 1
23
+ }
24
+ }