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.
- package/dist/index.js +8 -7
- package/dist/mcp-server.js +1 -1
- package/package.json +3 -2
- package/packages/loveui-skills/SKILL.md +99 -0
- package/packages/loveui-skills/agents/openai.yaml +11 -0
- package/packages/loveui-skills/references/design-directions.md +60 -0
- package/packages/loveui-skills/references/mcp-catalog-workflow.md +68 -0
- package/packages/loveui-skills/references/page-blueprints.md +76 -0
- package/packages/loveui-skills/references/quality-gates.md +51 -0
- package/public/r/accordion-controlled.json +1 -1
- package/public/r/accordion-demo.json +1 -1
- package/public/r/accordion-multiple.json +1 -1
- package/public/r/accordion-single.json +1 -1
- package/public/r/alert-demo.json +1 -1
- package/public/r/alert-dialog-demo.json +1 -1
- package/public/r/alert-error.json +1 -1
- package/public/r/alert-info.json +1 -1
- package/public/r/alert-success.json +1 -1
- package/public/r/alert-warning.json +1 -1
- package/public/r/alert-with-icon-action.json +1 -1
- package/public/r/alert-with-icon.json +1 -1
- package/public/r/announcement-tagless.json +1 -1
- package/public/r/announcement-themes.json +1 -1
- package/public/r/announcement.json +1 -1
- package/public/r/autocomplete-async.json +1 -1
- package/public/r/autocomplete-autohighlight.json +1 -1
- package/public/r/autocomplete-demo.json +1 -1
- package/public/r/autocomplete-disabled.json +1 -1
- package/public/r/autocomplete-form.json +1 -1
- package/public/r/autocomplete-grouped.json +1 -1
- package/public/r/autocomplete-inline.json +1 -1
- package/public/r/autocomplete-lg.json +1 -1
- package/public/r/autocomplete-limit.json +1 -1
- package/public/r/autocomplete-sm.json +1 -1
- package/public/r/autocomplete-with-clear.json +1 -1
- package/public/r/autocomplete-with-label.json +1 -1
- package/public/r/autocomplete-with-trigger-clear.json +1 -1
- package/public/r/avatar-demo.json +1 -1
- package/public/r/avatar-fallback.json +1 -1
- package/public/r/avatar-group.json +1 -1
- package/public/r/avatar-radius.json +1 -1
- package/public/r/avatar-size.json +1 -1
- package/public/r/avatar-stack-hover.json +1 -1
- package/public/r/avatar-stack.json +1 -1
- package/public/r/badge-demo.json +1 -1
- package/public/r/badge-destructive.json +1 -1
- package/public/r/badge-error.json +1 -1
- package/public/r/badge-info.json +1 -1
- package/public/r/badge-lg.json +1 -1
- package/public/r/badge-outline.json +1 -1
- package/public/r/badge-secondary.json +1 -1
- package/public/r/badge-sm.json +1 -1
- package/public/r/badge-success.json +1 -1
- package/public/r/badge-warning.json +1 -1
- package/public/r/badge-with-icon.json +1 -1
- package/public/r/badge-with-link.json +1 -1
- package/public/r/banner-inset.json +1 -1
- package/public/r/banner-themes.json +1 -1
- package/public/r/banner.json +1 -1
- package/public/r/bookmarks.json +206 -0
- package/public/r/breadcrumb-custom-separator.json +1 -1
- package/public/r/breadcrumb-demo.json +1 -1
- package/public/r/button-demo.json +1 -1
- package/public/r/button-destructive-outline.json +1 -1
- package/public/r/button-destructive.json +1 -1
- package/public/r/button-disabled.json +1 -1
- package/public/r/button-ghost.json +1 -1
- package/public/r/button-lg.json +1 -1
- package/public/r/button-link.json +1 -1
- package/public/r/button-loading.json +1 -1
- package/public/r/button-outline.json +1 -1
- package/public/r/button-secondary.json +1 -1
- package/public/r/button-sm.json +1 -1
- package/public/r/button-with-icon.json +1 -1
- package/public/r/button-with-link.json +1 -1
- package/public/r/button-xl.json +1 -1
- package/public/r/button-xs.json +1 -1
- package/public/r/calendar-headless.json +1 -1
- package/public/r/calendar-rac.json +16 -0
- package/public/r/calendar.json +1 -1
- package/public/r/card-demo.json +1 -1
- package/public/r/chart.json +15 -0
- package/public/r/checkbox-card.json +1 -1
- package/public/r/checkbox-demo.json +1 -1
- package/public/r/checkbox-disabled.json +1 -1
- package/public/r/checkbox-form.json +1 -1
- package/public/r/checkbox-group-demo.json +1 -1
- package/public/r/checkbox-group-disabled.json +1 -1
- package/public/r/checkbox-group-form.json +1 -1
- package/public/r/checkbox-group-nested-parent.json +1 -1
- package/public/r/checkbox-group-parent.json +1 -1
- package/public/r/checkbox-tree.json +12 -0
- package/public/r/checkbox-with-description.json +1 -1
- package/public/r/choicebox-inline.json +1 -1
- package/public/r/choicebox.json +1 -1
- package/public/r/codebase.json +1 -1
- package/public/r/collaborative-canvas.json +1 -1
- package/public/r/collapsible-demo.json +1 -1
- package/public/r/combobox-autohighlight.json +1 -1
- package/public/r/combobox-controlled.json +1 -1
- package/public/r/combobox-create-new.json +1 -1
- package/public/r/combobox-demo.json +1 -1
- package/public/r/combobox-disabled.json +1 -1
- package/public/r/combobox-fixed-width.json +1 -1
- package/public/r/combobox-form.json +1 -1
- package/public/r/combobox-grouped.json +1 -1
- package/public/r/combobox-lg.json +1 -1
- package/public/r/combobox-multiple-form.json +1 -1
- package/public/r/combobox-multiple.json +1 -1
- package/public/r/combobox-sm.json +1 -1
- package/public/r/combobox-with-clear.json +1 -1
- package/public/r/combobox-with-inner-input.json +1 -1
- package/public/r/combobox-with-label.json +1 -1
- package/public/r/command.json +18 -0
- package/public/r/comp-01.json +22 -0
- package/public/r/comp-02.json +23 -0
- package/public/r/comp-03.json +23 -0
- package/public/r/comp-04.json +23 -0
- package/public/r/comp-05.json +22 -0
- package/public/r/comp-06.json +23 -0
- package/public/r/comp-07.json +22 -0
- package/public/r/comp-08.json +23 -0
- package/public/r/comp-09.json +22 -0
- package/public/r/comp-10.json +22 -0
- package/public/r/comp-100.json +23 -0
- package/public/r/comp-101.json +23 -0
- package/public/r/comp-102.json +23 -0
- package/public/r/comp-103.json +23 -0
- package/public/r/comp-104.json +23 -0
- package/public/r/comp-105.json +23 -0
- package/public/r/comp-106.json +22 -0
- package/public/r/comp-107.json +22 -0
- package/public/r/comp-108.json +23 -0
- package/public/r/comp-109.json +22 -0
- package/public/r/comp-11.json +22 -0
- package/public/r/comp-110.json +22 -0
- package/public/r/comp-111.json +21 -0
- package/public/r/comp-112.json +21 -0
- package/public/r/comp-113.json +22 -0
- package/public/r/comp-114.json +23 -0
- package/public/r/comp-115.json +22 -0
- package/public/r/comp-116.json +22 -0
- package/public/r/comp-117.json +23 -0
- package/public/r/comp-118.json +23 -0
- package/public/r/comp-119.json +27 -0
- package/public/r/comp-12.json +22 -0
- package/public/r/comp-120.json +27 -0
- package/public/r/comp-121.json +27 -0
- package/public/r/comp-122.json +27 -0
- package/public/r/comp-123.json +22 -0
- package/public/r/comp-124.json +22 -0
- package/public/r/comp-125.json +31 -0
- package/public/r/comp-126.json +31 -0
- package/public/r/comp-127.json +21 -0
- package/public/r/comp-128.json +21 -0
- package/public/r/comp-129.json +24 -0
- package/public/r/comp-13.json +22 -0
- package/public/r/comp-130.json +23 -0
- package/public/r/comp-131.json +23 -0
- package/public/r/comp-132.json +23 -0
- package/public/r/comp-133.json +23 -0
- package/public/r/comp-134.json +23 -0
- package/public/r/comp-135.json +24 -0
- package/public/r/comp-136.json +23 -0
- package/public/r/comp-137.json +23 -0
- package/public/r/comp-138.json +25 -0
- package/public/r/comp-139.json +23 -0
- package/public/r/comp-14.json +22 -0
- package/public/r/comp-140.json +23 -0
- package/public/r/comp-141.json +23 -0
- package/public/r/comp-142.json +25 -0
- package/public/r/comp-143.json +23 -0
- package/public/r/comp-144.json +24 -0
- package/public/r/comp-145.json +24 -0
- package/public/r/comp-146.json +24 -0
- package/public/r/comp-147.json +24 -0
- package/public/r/comp-148.json +25 -0
- package/public/r/comp-149.json +24 -0
- package/public/r/comp-15.json +22 -0
- package/public/r/comp-150.json +21 -0
- package/public/r/comp-151.json +23 -0
- package/public/r/comp-152.json +23 -0
- package/public/r/comp-153.json +23 -0
- package/public/r/comp-154.json +23 -0
- package/public/r/comp-155.json +23 -0
- package/public/r/comp-156.json +25 -0
- package/public/r/comp-157.json +27 -0
- package/public/r/comp-158.json +24 -0
- package/public/r/comp-159.json +24 -0
- package/public/r/comp-16.json +22 -0
- package/public/r/comp-160.json +24 -0
- package/public/r/comp-161.json +24 -0
- package/public/r/comp-162.json +24 -0
- package/public/r/comp-163.json +28 -0
- package/public/r/comp-164.json +24 -0
- package/public/r/comp-165.json +24 -0
- package/public/r/comp-166.json +25 -0
- package/public/r/comp-167.json +24 -0
- package/public/r/comp-168.json +24 -0
- package/public/r/comp-169.json +23 -0
- package/public/r/comp-17.json +25 -0
- package/public/r/comp-170.json +25 -0
- package/public/r/comp-171.json +28 -0
- package/public/r/comp-172.json +23 -0
- package/public/r/comp-173.json +23 -0
- package/public/r/comp-174.json +23 -0
- package/public/r/comp-175.json +23 -0
- package/public/r/comp-176.json +23 -0
- package/public/r/comp-177.json +23 -0
- package/public/r/comp-178.json +23 -0
- package/public/r/comp-179.json +24 -0
- package/public/r/comp-18.json +25 -0
- package/public/r/comp-180.json +23 -0
- package/public/r/comp-181.json +25 -0
- package/public/r/comp-182.json +24 -0
- package/public/r/comp-183.json +25 -0
- package/public/r/comp-184.json +25 -0
- package/public/r/comp-185.json +24 -0
- package/public/r/comp-186.json +25 -0
- package/public/r/comp-187.json +25 -0
- package/public/r/comp-188.json +25 -0
- package/public/r/comp-189.json +23 -0
- package/public/r/comp-19.json +23 -0
- package/public/r/comp-190.json +23 -0
- package/public/r/comp-191.json +24 -0
- package/public/r/comp-192.json +23 -0
- package/public/r/comp-193.json +23 -0
- package/public/r/comp-194.json +24 -0
- package/public/r/comp-195.json +23 -0
- package/public/r/comp-196.json +24 -0
- package/public/r/comp-197.json +23 -0
- package/public/r/comp-198.json +23 -0
- package/public/r/comp-199.json +23 -0
- package/public/r/comp-20.json +23 -0
- package/public/r/comp-200.json +25 -0
- package/public/r/comp-201.json +22 -0
- package/public/r/comp-202.json +22 -0
- package/public/r/comp-203.json +23 -0
- package/public/r/comp-204.json +23 -0
- package/public/r/comp-205.json +23 -0
- package/public/r/comp-206.json +24 -0
- package/public/r/comp-207.json +23 -0
- package/public/r/comp-208.json +23 -0
- package/public/r/comp-209.json +23 -0
- package/public/r/comp-21.json +23 -0
- package/public/r/comp-210.json +24 -0
- package/public/r/comp-211.json +24 -0
- package/public/r/comp-212.json +23 -0
- package/public/r/comp-213.json +23 -0
- package/public/r/comp-214.json +23 -0
- package/public/r/comp-215.json +24 -0
- package/public/r/comp-216.json +22 -0
- package/public/r/comp-217.json +22 -0
- package/public/r/comp-218.json +25 -0
- package/public/r/comp-219.json +23 -0
- package/public/r/comp-22.json +23 -0
- package/public/r/comp-220.json +24 -0
- package/public/r/comp-221.json +23 -0
- package/public/r/comp-222.json +26 -0
- package/public/r/comp-223.json +26 -0
- package/public/r/comp-224.json +23 -0
- package/public/r/comp-225.json +24 -0
- package/public/r/comp-226.json +26 -0
- package/public/r/comp-227.json +26 -0
- package/public/r/comp-228.json +26 -0
- package/public/r/comp-229.json +30 -0
- package/public/r/comp-23.json +24 -0
- package/public/r/comp-230.json +30 -0
- package/public/r/comp-231.json +32 -0
- package/public/r/comp-232.json +31 -0
- package/public/r/comp-233.json +30 -0
- package/public/r/comp-234.json +28 -0
- package/public/r/comp-235.json +28 -0
- package/public/r/comp-236.json +24 -0
- package/public/r/comp-237.json +26 -0
- package/public/r/comp-238.json +26 -0
- package/public/r/comp-239.json +26 -0
- package/public/r/comp-24.json +23 -0
- package/public/r/comp-240.json +23 -0
- package/public/r/comp-241.json +24 -0
- package/public/r/comp-242.json +23 -0
- package/public/r/comp-243.json +23 -0
- package/public/r/comp-244.json +23 -0
- package/public/r/comp-245.json +23 -0
- package/public/r/comp-246.json +23 -0
- package/public/r/comp-247.json +23 -0
- package/public/r/comp-248.json +23 -0
- package/public/r/comp-249.json +24 -0
- package/public/r/comp-25.json +24 -0
- package/public/r/comp-250.json +25 -0
- package/public/r/comp-251.json +25 -0
- package/public/r/comp-252.json +25 -0
- package/public/r/comp-253.json +25 -0
- package/public/r/comp-254.json +35 -0
- package/public/r/comp-255.json +30 -0
- package/public/r/comp-256.json +25 -0
- package/public/r/comp-257.json +25 -0
- package/public/r/comp-258.json +32 -0
- package/public/r/comp-259.json +26 -0
- package/public/r/comp-26.json +24 -0
- package/public/r/comp-260.json +26 -0
- package/public/r/comp-261.json +24 -0
- package/public/r/comp-262.json +31 -0
- package/public/r/comp-263.json +25 -0
- package/public/r/comp-264.json +33 -0
- package/public/r/comp-265.json +32 -0
- package/public/r/comp-266.json +24 -0
- package/public/r/comp-267.json +19 -0
- package/public/r/comp-268.json +19 -0
- package/public/r/comp-269.json +19 -0
- package/public/r/comp-27.json +24 -0
- package/public/r/comp-270.json +19 -0
- package/public/r/comp-271.json +19 -0
- package/public/r/comp-272.json +19 -0
- package/public/r/comp-273.json +19 -0
- package/public/r/comp-274.json +19 -0
- package/public/r/comp-275.json +19 -0
- package/public/r/comp-276.json +19 -0
- package/public/r/comp-277.json +21 -0
- package/public/r/comp-278.json +21 -0
- package/public/r/comp-279.json +23 -0
- package/public/r/comp-28.json +24 -0
- package/public/r/comp-280.json +23 -0
- package/public/r/comp-281.json +23 -0
- package/public/r/comp-282.json +23 -0
- package/public/r/comp-283.json +23 -0
- package/public/r/comp-284.json +23 -0
- package/public/r/comp-285.json +23 -0
- package/public/r/comp-286.json +23 -0
- package/public/r/comp-287.json +24 -0
- package/public/r/comp-288.json +23 -0
- package/public/r/comp-289.json +24 -0
- package/public/r/comp-29.json +24 -0
- package/public/r/comp-290.json +24 -0
- package/public/r/comp-291.json +24 -0
- package/public/r/comp-292.json +24 -0
- package/public/r/comp-293.json +26 -0
- package/public/r/comp-294.json +24 -0
- package/public/r/comp-295.json +23 -0
- package/public/r/comp-296.json +23 -0
- package/public/r/comp-297.json +30 -0
- package/public/r/comp-298.json +26 -0
- package/public/r/comp-299.json +28 -0
- package/public/r/comp-30.json +23 -0
- package/public/r/comp-300.json +29 -0
- package/public/r/comp-301.json +24 -0
- package/public/r/comp-302.json +18 -0
- package/public/r/comp-303.json +18 -0
- package/public/r/comp-304.json +18 -0
- package/public/r/comp-305.json +21 -0
- package/public/r/comp-306.json +21 -0
- package/public/r/comp-307.json +21 -0
- package/public/r/comp-308.json +21 -0
- package/public/r/comp-309.json +21 -0
- package/public/r/comp-31.json +21 -0
- package/public/r/comp-310.json +23 -0
- package/public/r/comp-311.json +20 -0
- package/public/r/comp-312.json +21 -0
- package/public/r/comp-313.json +26 -0
- package/public/r/comp-314.json +26 -0
- package/public/r/comp-315.json +24 -0
- package/public/r/comp-316.json +25 -0
- package/public/r/comp-317.json +24 -0
- package/public/r/comp-318.json +24 -0
- package/public/r/comp-319.json +24 -0
- package/public/r/comp-32.json +21 -0
- package/public/r/comp-320.json +27 -0
- package/public/r/comp-321.json +28 -0
- package/public/r/comp-322.json +27 -0
- package/public/r/comp-323.json +30 -0
- package/public/r/comp-324.json +28 -0
- package/public/r/comp-325.json +29 -0
- package/public/r/comp-326.json +30 -0
- package/public/r/comp-327.json +30 -0
- package/public/r/comp-328.json +37 -0
- package/public/r/comp-329.json +38 -0
- package/public/r/comp-33.json +18 -0
- package/public/r/comp-330.json +27 -0
- package/public/r/comp-331.json +42 -0
- package/public/r/comp-332.json +25 -0
- package/public/r/comp-333.json +29 -0
- package/public/r/comp-334.json +22 -0
- package/public/r/comp-335.json +22 -0
- package/public/r/comp-336.json +22 -0
- package/public/r/comp-337.json +22 -0
- package/public/r/comp-338.json +22 -0
- package/public/r/comp-339.json +22 -0
- package/public/r/comp-34.json +27 -0
- package/public/r/comp-340.json +22 -0
- package/public/r/comp-341.json +22 -0
- package/public/r/comp-342.json +22 -0
- package/public/r/comp-343.json +22 -0
- package/public/r/comp-344.json +22 -0
- package/public/r/comp-345.json +22 -0
- package/public/r/comp-346.json +22 -0
- package/public/r/comp-347.json +22 -0
- package/public/r/comp-348.json +22 -0
- package/public/r/comp-349.json +22 -0
- package/public/r/comp-35.json +27 -0
- package/public/r/comp-350.json +22 -0
- package/public/r/comp-351.json +22 -0
- package/public/r/comp-352.json +24 -0
- package/public/r/comp-353.json +24 -0
- package/public/r/comp-354.json +23 -0
- package/public/r/comp-355.json +23 -0
- package/public/r/comp-356.json +23 -0
- package/public/r/comp-357.json +23 -0
- package/public/r/comp-358.json +23 -0
- package/public/r/comp-359.json +24 -0
- package/public/r/comp-36.json +26 -0
- package/public/r/comp-360.json +25 -0
- package/public/r/comp-361.json +23 -0
- package/public/r/comp-362.json +24 -0
- package/public/r/comp-363.json +27 -0
- package/public/r/comp-364.json +26 -0
- package/public/r/comp-365.json +24 -0
- package/public/r/comp-366.json +23 -0
- package/public/r/comp-367.json +23 -0
- package/public/r/comp-368.json +23 -0
- package/public/r/comp-369.json +23 -0
- package/public/r/comp-37.json +23 -0
- package/public/r/comp-370.json +23 -0
- package/public/r/comp-371.json +24 -0
- package/public/r/comp-372.json +24 -0
- package/public/r/comp-373.json +25 -0
- package/public/r/comp-374.json +26 -0
- package/public/r/comp-375.json +25 -0
- package/public/r/comp-376.json +26 -0
- package/public/r/comp-377.json +27 -0
- package/public/r/comp-378.json +24 -0
- package/public/r/comp-379.json +24 -0
- package/public/r/comp-38.json +23 -0
- package/public/r/comp-380.json +24 -0
- package/public/r/comp-381.json +26 -0
- package/public/r/comp-382.json +25 -0
- package/public/r/comp-383.json +26 -0
- package/public/r/comp-384.json +24 -0
- package/public/r/comp-385.json +24 -0
- package/public/r/comp-386.json +24 -0
- package/public/r/comp-387.json +28 -0
- package/public/r/comp-388.json +26 -0
- package/public/r/comp-389.json +24 -0
- package/public/r/comp-39.json +23 -0
- package/public/r/comp-390.json +23 -0
- package/public/r/comp-391.json +23 -0
- package/public/r/comp-392.json +23 -0
- package/public/r/comp-393.json +23 -0
- package/public/r/comp-394.json +24 -0
- package/public/r/comp-395.json +24 -0
- package/public/r/comp-396.json +24 -0
- package/public/r/comp-397.json +25 -0
- package/public/r/comp-398.json +26 -0
- package/public/r/comp-399.json +26 -0
- package/public/r/comp-40.json +23 -0
- package/public/r/comp-400.json +20 -0
- package/public/r/comp-401.json +19 -0
- package/public/r/comp-402.json +19 -0
- package/public/r/comp-403.json +19 -0
- package/public/r/comp-404.json +19 -0
- package/public/r/comp-405.json +19 -0
- package/public/r/comp-406.json +19 -0
- package/public/r/comp-407.json +19 -0
- package/public/r/comp-408.json +19 -0
- package/public/r/comp-409.json +22 -0
- package/public/r/comp-41.json +29 -0
- package/public/r/comp-410.json +22 -0
- package/public/r/comp-411.json +22 -0
- package/public/r/comp-412.json +19 -0
- package/public/r/comp-413.json +22 -0
- package/public/r/comp-414.json +22 -0
- package/public/r/comp-415.json +22 -0
- package/public/r/comp-416.json +23 -0
- package/public/r/comp-417.json +22 -0
- package/public/r/comp-418.json +23 -0
- package/public/r/comp-419.json +23 -0
- package/public/r/comp-42.json +30 -0
- package/public/r/comp-420.json +23 -0
- package/public/r/comp-421.json +23 -0
- package/public/r/comp-422.json +23 -0
- package/public/r/comp-423.json +24 -0
- package/public/r/comp-424.json +22 -0
- package/public/r/comp-425.json +23 -0
- package/public/r/comp-426.json +23 -0
- package/public/r/comp-427.json +23 -0
- package/public/r/comp-428.json +23 -0
- package/public/r/comp-429.json +23 -0
- package/public/r/comp-43.json +32 -0
- package/public/r/comp-430.json +23 -0
- package/public/r/comp-431.json +23 -0
- package/public/r/comp-432.json +23 -0
- package/public/r/comp-433.json +24 -0
- package/public/r/comp-434.json +24 -0
- package/public/r/comp-435.json +24 -0
- package/public/r/comp-436.json +24 -0
- package/public/r/comp-437.json +25 -0
- package/public/r/comp-438.json +23 -0
- package/public/r/comp-439.json +24 -0
- package/public/r/comp-44.json +25 -0
- package/public/r/comp-440.json +25 -0
- package/public/r/comp-441.json +25 -0
- package/public/r/comp-442.json +24 -0
- package/public/r/comp-443.json +24 -0
- package/public/r/comp-444.json +24 -0
- package/public/r/comp-445.json +24 -0
- package/public/r/comp-446.json +24 -0
- package/public/r/comp-447.json +25 -0
- package/public/r/comp-448.json +23 -0
- package/public/r/comp-449.json +23 -0
- package/public/r/comp-45.json +25 -0
- package/public/r/comp-450.json +23 -0
- package/public/r/comp-451.json +23 -0
- package/public/r/comp-452.json +23 -0
- package/public/r/comp-453.json +25 -0
- package/public/r/comp-454.json +22 -0
- package/public/r/comp-455.json +22 -0
- package/public/r/comp-456.json +22 -0
- package/public/r/comp-457.json +21 -0
- package/public/r/comp-458.json +22 -0
- package/public/r/comp-459.json +26 -0
- package/public/r/comp-46.json +26 -0
- package/public/r/comp-460.json +26 -0
- package/public/r/comp-461.json +27 -0
- package/public/r/comp-462.json +27 -0
- package/public/r/comp-463.json +30 -0
- package/public/r/comp-464.json +29 -0
- package/public/r/comp-465.json +29 -0
- package/public/r/comp-466.json +21 -0
- package/public/r/comp-467.json +23 -0
- package/public/r/comp-468.json +21 -0
- package/public/r/comp-469.json +21 -0
- package/public/r/comp-47.json +32 -0
- package/public/r/comp-470.json +21 -0
- package/public/r/comp-471.json +21 -0
- package/public/r/comp-472.json +23 -0
- package/public/r/comp-473.json +24 -0
- package/public/r/comp-474.json +22 -0
- package/public/r/comp-475.json +22 -0
- package/public/r/comp-476.json +21 -0
- package/public/r/comp-477.json +31 -0
- package/public/r/comp-478.json +36 -0
- package/public/r/comp-479.json +28 -0
- package/public/r/comp-48.json +32 -0
- package/public/r/comp-480.json +30 -0
- package/public/r/comp-481.json +34 -0
- package/public/r/comp-482.json +33 -0
- package/public/r/comp-483.json +37 -0
- package/public/r/comp-484.json +41 -0
- package/public/r/comp-485.json +43 -0
- package/public/r/comp-486.json +23 -0
- package/public/r/comp-487.json +26 -0
- package/public/r/comp-488.json +27 -0
- package/public/r/comp-489.json +28 -0
- package/public/r/comp-49.json +32 -0
- package/public/r/comp-490.json +23 -0
- package/public/r/comp-491.json +24 -0
- package/public/r/comp-492.json +25 -0
- package/public/r/comp-493.json +23 -0
- package/public/r/comp-494.json +23 -0
- package/public/r/comp-495.json +24 -0
- package/public/r/comp-496.json +23 -0
- package/public/r/comp-497.json +24 -0
- package/public/r/comp-498.json +24 -0
- package/public/r/comp-499.json +24 -0
- package/public/r/comp-50.json +32 -0
- package/public/r/comp-500.json +25 -0
- package/public/r/comp-501.json +25 -0
- package/public/r/comp-502.json +26 -0
- package/public/r/comp-503.json +27 -0
- package/public/r/comp-504.json +28 -0
- package/public/r/comp-505.json +28 -0
- package/public/r/comp-506.json +26 -0
- package/public/r/comp-507.json +27 -0
- package/public/r/comp-508.json +25 -0
- package/public/r/comp-509.json +25 -0
- package/public/r/comp-51.json +23 -0
- package/public/r/comp-510.json +24 -0
- package/public/r/comp-511.json +27 -0
- package/public/r/comp-512.json +27 -0
- package/public/r/comp-513.json +21 -0
- package/public/r/comp-514.json +21 -0
- package/public/r/comp-515.json +21 -0
- package/public/r/comp-516.json +22 -0
- package/public/r/comp-517.json +22 -0
- package/public/r/comp-518.json +21 -0
- package/public/r/comp-519.json +21 -0
- package/public/r/comp-52.json +23 -0
- package/public/r/comp-520.json +22 -0
- package/public/r/comp-521.json +22 -0
- package/public/r/comp-522.json +21 -0
- package/public/r/comp-523.json +21 -0
- package/public/r/comp-524.json +21 -0
- package/public/r/comp-525.json +21 -0
- package/public/r/comp-526.json +22 -0
- package/public/r/comp-527.json +23 -0
- package/public/r/comp-528.json +22 -0
- package/public/r/comp-529.json +22 -0
- package/public/r/comp-53.json +24 -0
- package/public/r/comp-530.json +22 -0
- package/public/r/comp-531.json +22 -0
- package/public/r/comp-532.json +22 -0
- package/public/r/comp-533.json +22 -0
- package/public/r/comp-534.json +22 -0
- package/public/r/comp-535.json +22 -0
- package/public/r/comp-536.json +22 -0
- package/public/r/comp-537.json +22 -0
- package/public/r/comp-538.json +22 -0
- package/public/r/comp-539.json +22 -0
- package/public/r/comp-54.json +26 -0
- package/public/r/comp-540.json +21 -0
- package/public/r/comp-541.json +21 -0
- package/public/r/comp-542.json +124 -0
- package/public/r/comp-543.json +29 -0
- package/public/r/comp-544.json +26 -0
- package/public/r/comp-545.json +29 -0
- package/public/r/comp-546.json +29 -0
- package/public/r/comp-547.json +29 -0
- package/public/r/comp-548.json +29 -0
- package/public/r/comp-549.json +29 -0
- package/public/r/comp-55.json +27 -0
- package/public/r/comp-550.json +29 -0
- package/public/r/comp-551.json +30 -0
- package/public/r/comp-552.json +29 -0
- package/public/r/comp-553.json +29 -0
- package/public/r/comp-554.json +36 -0
- package/public/r/comp-555.json +23 -0
- package/public/r/comp-556.json +23 -0
- package/public/r/comp-557.json +23 -0
- package/public/r/comp-558.json +23 -0
- package/public/r/comp-559.json +23 -0
- package/public/r/comp-56.json +26 -0
- package/public/r/comp-560.json +23 -0
- package/public/r/comp-561.json +25 -0
- package/public/r/comp-562.json +23 -0
- package/public/r/comp-563.json +23 -0
- package/public/r/comp-564.json +24 -0
- package/public/r/comp-565.json +20 -0
- package/public/r/comp-566.json +20 -0
- package/public/r/comp-567.json +20 -0
- package/public/r/comp-568.json +20 -0
- package/public/r/comp-569.json +20 -0
- package/public/r/comp-57.json +26 -0
- package/public/r/comp-570.json +20 -0
- package/public/r/comp-571.json +23 -0
- package/public/r/comp-572.json +23 -0
- package/public/r/comp-573.json +20 -0
- package/public/r/comp-574.json +22 -0
- package/public/r/comp-575.json +20 -0
- package/public/r/comp-576.json +21 -0
- package/public/r/comp-577.json +23 -0
- package/public/r/comp-578.json +28 -0
- package/public/r/comp-579.json +28 -0
- package/public/r/comp-58.json +25 -0
- package/public/r/comp-580.json +29 -0
- package/public/r/comp-581.json +45 -0
- package/public/r/comp-582.json +42 -0
- package/public/r/comp-583.json +41 -0
- package/public/r/comp-584.json +41 -0
- package/public/r/comp-585.json +41 -0
- package/public/r/comp-586.json +34 -0
- package/public/r/comp-587.json +29 -0
- package/public/r/comp-588.json +33 -0
- package/public/r/comp-589.json +37 -0
- package/public/r/comp-59.json +22 -0
- package/public/r/comp-590.json +40 -0
- package/public/r/comp-591.json +29 -0
- package/public/r/comp-592.json +41 -0
- package/public/r/comp-593.json +36 -0
- package/public/r/comp-594.json +33 -0
- package/public/r/comp-595.json +22 -0
- package/public/r/comp-596.json +26 -0
- package/public/r/comp-597.json +22 -0
- package/public/r/comp-598.json +22 -0
- package/public/r/comp-599.json +22 -0
- package/public/r/comp-60.json +23 -0
- package/public/r/comp-600.json +17 -0
- package/public/r/comp-601.json +20 -0
- package/public/r/comp-602.json +17 -0
- package/public/r/comp-603.json +20 -0
- package/public/r/comp-604.json +17 -0
- package/public/r/comp-605.json +17 -0
- package/public/r/comp-606.json +20 -0
- package/public/r/comp-607.json +20 -0
- package/public/r/comp-608.json +20 -0
- package/public/r/comp-609.json +20 -0
- package/public/r/comp-61.json +23 -0
- package/public/r/comp-610.json +23 -0
- package/public/r/comp-611.json +23 -0
- package/public/r/comp-612.json +17 -0
- package/public/r/comp-613.json +20 -0
- package/public/r/comp-614.json +17 -0
- package/public/r/comp-615.json +26 -0
- package/public/r/comp-616.json +26 -0
- package/public/r/comp-617.json +26 -0
- package/public/r/comp-62.json +23 -0
- package/public/r/comp-63.json +22 -0
- package/public/r/comp-64.json +23 -0
- package/public/r/comp-65.json +22 -0
- package/public/r/comp-66.json +22 -0
- package/public/r/comp-67.json +23 -0
- package/public/r/comp-68.json +24 -0
- package/public/r/comp-69.json +24 -0
- package/public/r/comp-70.json +24 -0
- package/public/r/comp-71.json +22 -0
- package/public/r/comp-72.json +21 -0
- package/public/r/comp-73.json +18 -0
- package/public/r/comp-74.json +27 -0
- package/public/r/comp-75.json +22 -0
- package/public/r/comp-76.json +23 -0
- package/public/r/comp-77.json +22 -0
- package/public/r/comp-78.json +21 -0
- package/public/r/comp-79.json +22 -0
- package/public/r/comp-80.json +21 -0
- package/public/r/comp-81.json +21 -0
- package/public/r/comp-82.json +22 -0
- package/public/r/comp-83.json +21 -0
- package/public/r/comp-84.json +21 -0
- package/public/r/comp-85.json +22 -0
- package/public/r/comp-86.json +22 -0
- package/public/r/comp-87.json +21 -0
- package/public/r/comp-88.json +22 -0
- package/public/r/comp-89.json +21 -0
- package/public/r/comp-90.json +22 -0
- package/public/r/comp-91.json +22 -0
- package/public/r/comp-92.json +22 -0
- package/public/r/comp-93.json +22 -0
- package/public/r/comp-94.json +24 -0
- package/public/r/comp-95.json +26 -0
- package/public/r/comp-96.json +21 -0
- package/public/r/comp-97.json +21 -0
- package/public/r/comp-98.json +22 -0
- package/public/r/comp-99.json +23 -0
- package/public/r/comparison-event-handlers.json +1 -1
- package/public/r/comparison-hover.json +1 -1
- package/public/r/comparison.json +1 -1
- package/public/r/context-menu.json +16 -0
- package/public/r/contribution-graph-custom-footer.json +1 -1
- package/public/r/credit-card-apple.json +1 -1
- package/public/r/credit-card-back.json +1 -1
- package/public/r/credit-card.json +1 -1
- package/public/r/cropper.json +15 -0
- package/public/r/cursor-color.json +1 -1
- package/public/r/cursor-message.json +1 -1
- package/public/r/cursor-name-message.json +1 -1
- package/public/r/cursor-name.json +1 -1
- package/public/r/cursor.json +1 -1
- package/public/r/dashboard-1.json +263 -0
- package/public/r/dashboard-2.json +264 -0
- package/public/r/dashboard-3.json +225 -0
- package/public/r/datefield-rac.json +15 -0
- package/public/r/deck-controlled.json +1 -1
- package/public/r/deck-product-cards.json +1 -1
- package/public/r/deck.json +1 -1
- package/public/r/dialog-close-confirmation.json +1 -1
- package/public/r/dialog-demo.json +1 -1
- package/public/r/dialog-from-menu.json +1 -1
- package/public/r/dialog-nested.json +1 -1
- package/public/r/dialog-stack-controlled.json +1 -1
- package/public/r/dialog-stack-navigation.json +1 -1
- package/public/r/dialog-stack-six.json +1 -1
- package/public/r/dialog-stack.json +1 -1
- package/public/r/dropdown-menu.json +15 -0
- package/public/r/dropzone-custom-empty-state.json +1 -1
- package/public/r/dropzone-image-preview.json +1 -1
- package/public/r/editor.json +1 -1
- package/public/r/emails.json +243 -0
- package/public/r/empty-demo.json +1 -1
- package/public/r/example-app-calendar.json +323 -0
- package/public/r/field-2.json +19 -0
- package/public/r/field-autocomplete.json +1 -1
- package/public/r/field-checkbox-group.json +1 -1
- package/public/r/field-checkbox.json +1 -1
- package/public/r/field-combobox-multiple.json +1 -1
- package/public/r/field-combobox.json +1 -1
- package/public/r/field-complete-form.json +1 -1
- package/public/r/field-demo.json +1 -1
- package/public/r/field-disabled.json +1 -1
- package/public/r/field-error.json +1 -1
- package/public/r/field-number-field.json +1 -1
- package/public/r/field-radio.json +1 -1
- package/public/r/field-required.json +1 -1
- package/public/r/field-select.json +1 -1
- package/public/r/field-slider.json +1 -1
- package/public/r/field-switch.json +1 -1
- package/public/r/field-textarea.json +1 -1
- package/public/r/field-validity.json +1 -1
- package/public/r/fieldset-demo.json +1 -1
- package/public/r/files.json +195 -0
- package/public/r/form-demo.json +1 -1
- package/public/r/form-zod.json +1 -1
- package/public/r/form.json +1 -1
- package/public/r/frame-demo.json +1 -1
- package/public/r/gantt-lanes.json +1 -1
- package/public/r/gantt-no-sidebar.json +1 -1
- package/public/r/gantt-read-only.json +1 -1
- package/public/r/gantt.json +1 -1
- package/public/r/glimpse-custom.json +1 -1
- package/public/r/glimpse.json +1 -1
- package/public/r/gooey-toast-demo.json +1 -1
- package/public/r/gooey-toast-promise.json +1 -1
- package/public/r/gooey-toast-states.json +1 -1
- package/public/r/gooey-toast-with-button.json +1 -1
- package/public/r/group-demo.json +1 -1
- package/public/r/group-with-input.json +1 -1
- package/public/r/hero.json +1 -1
- package/public/r/hover-card.json +15 -0
- package/public/r/image-crop-circular.json +1 -1
- package/public/r/image-crop-custom.json +1 -1
- package/public/r/image-crop.json +1 -1
- package/public/r/image-zoom-background.json +1 -1
- package/public/r/image-zoom-margin.json +1 -1
- package/public/r/image-zoom.json +1 -1
- package/public/r/input-demo.json +1 -1
- package/public/r/input-disabled.json +1 -1
- package/public/r/input-file.json +1 -1
- package/public/r/input-group.json +20 -0
- package/public/r/input-lg.json +1 -1
- package/public/r/input-sm.json +1 -1
- package/public/r/input-with-button.json +1 -1
- package/public/r/input-with-label.json +1 -1
- package/public/r/kanban-simple.json +1 -1
- package/public/r/kanban.json +1 -1
- package/public/r/kbd.json +12 -0
- package/public/r/leads.json +271 -0
- package/public/r/list-simple.json +1 -1
- package/public/r/list.json +1 -1
- package/public/r/maps.json +188 -0
- package/public/r/menu-checkbox.json +1 -1
- package/public/r/menu-close-on-click.json +1 -1
- package/public/r/menu-demo.json +1 -1
- package/public/r/menu-group-labels.json +1 -1
- package/public/r/menu-hover.json +1 -1
- package/public/r/menu-link.json +1 -1
- package/public/r/menu-nested.json +1 -1
- package/public/r/menu-radio-group.json +1 -1
- package/public/r/meter-demo.json +1 -1
- package/public/r/meter-with-formatted-value.json +1 -1
- package/public/r/meter-with-range.json +1 -1
- package/public/r/mini-calendar-controlled.json +1 -1
- package/public/r/multiselect.json +15 -0
- package/public/r/navigation-menu.json +12 -0
- package/public/r/number-field-form.json +1 -1
- package/public/r/number-field-with-label.json +1 -1
- package/public/r/number-field-with-scrub.json +1 -1
- package/public/r/number-field-with-step.json +1 -1
- package/public/r/pill-avatar-group.json +1 -1
- package/public/r/pill-delta.json +1 -1
- package/public/r/pill-icon.json +1 -1
- package/public/r/pill-indicator.json +1 -1
- package/public/r/pill-status.json +1 -1
- package/public/r/pill.json +1 -1
- package/public/r/popover-demo.json +1 -1
- package/public/r/popover-with-close.json +1 -1
- package/public/r/preview-card-demo.json +1 -1
- package/public/r/pricing.json +1 -1
- package/public/r/progress-with-formatted-value.json +1 -1
- package/public/r/progress-with-label-value.json +1 -1
- package/public/r/radio-group-card.json +1 -1
- package/public/r/radio-group-demo.json +1 -1
- package/public/r/radio-group-disabled.json +1 -1
- package/public/r/radio-group-form.json +1 -1
- package/public/r/radio-group-with-description.json +1 -1
- package/public/r/reel-custom.json +1 -1
- package/public/r/reel-images.json +1 -1
- package/public/r/reel-minimal.json +1 -1
- package/public/r/reel.json +1 -1
- package/public/r/registry.json +18217 -0
- package/public/r/relative-time-controlled.json +1 -1
- package/public/r/relative-time-format-date.json +1 -1
- package/public/r/relative-time-format-time.json +1 -1
- package/public/r/relative-time.json +1 -1
- package/public/r/rentals.json +187 -0
- package/public/r/roadmap.json +1 -1
- package/public/r/sandbox-no-file-explorer.json +1 -1
- package/public/r/sandbox.json +1 -1
- package/public/r/scroll-area-both.json +1 -1
- package/public/r/scroll-area-demo.json +1 -1
- package/public/r/scroll-area-horizontal.json +1 -1
- package/public/r/select-demo.json +1 -1
- package/public/r/select-disabled.json +1 -1
- package/public/r/select-form.json +1 -1
- package/public/r/select-lg.json +1 -1
- package/public/r/select-native.json +12 -0
- package/public/r/select-sm.json +1 -1
- package/public/r/select-with-groups.json +1 -1
- package/public/r/select-without-alignment.json +1 -1
- package/public/r/select.json +1 -1
- package/public/r/separator-demo.json +1 -1
- package/public/r/sheet-demo.json +1 -1
- package/public/r/sheet-position.json +1 -1
- package/public/r/sidebar-nav.json +22 -0
- package/public/r/skeleton-demo.json +1 -1
- package/public/r/skeleton.json +1 -1
- package/public/r/slider-form.json +1 -1
- package/public/r/slider-with-label-value.json +1 -1
- package/public/r/sonner.json +16 -0
- package/public/r/stats-card.json +22 -0
- package/public/r/status-custom.json +1 -1
- package/public/r/stepper.json +15 -0
- package/public/r/stories-images.json +1 -1
- package/public/r/switch-card.json +1 -1
- package/public/r/switch-demo.json +1 -1
- package/public/r/switch-disabled.json +1 -1
- package/public/r/switch-form.json +1 -1
- package/public/r/switch-with-description.json +1 -1
- package/public/r/table-demo.json +1 -1
- package/public/r/table-framed.json +1 -1
- package/public/r/table-simple.json +1 -1
- package/public/r/table.json +1 -1
- package/public/r/tabs-demo.json +1 -1
- package/public/r/tabs-underline-vertical.json +1 -1
- package/public/r/tabs-underline.json +1 -1
- package/public/r/tabs-vertical.json +1 -1
- package/public/r/tags-create.json +1 -1
- package/public/r/tags-filter.json +1 -1
- package/public/r/tags.json +1 -1
- package/public/r/template-auth-eight.json +28 -0
- package/public/r/template-auth-five.json +28 -0
- package/public/r/template-auth-four.json +29 -0
- package/public/r/template-auth-nine.json +28 -0
- package/public/r/template-auth-one.json +49 -0
- package/public/r/template-auth-seven.json +29 -0
- package/public/r/template-auth-six.json +28 -0
- package/public/r/template-auth-three.json +49 -0
- package/public/r/template-auth-two.json +44 -0
- package/public/r/template-hero-eight.json +83 -0
- package/public/r/template-hero-eleven.json +29 -0
- package/public/r/template-hero-five.json +35 -0
- package/public/r/template-hero-four.json +35 -0
- package/public/r/template-hero-fourteen.json +101 -0
- package/public/r/template-hero-nine.json +74 -0
- package/public/r/template-hero-one.json +90 -0
- package/public/r/template-hero-seven.json +83 -0
- package/public/r/template-hero-six.json +83 -0
- package/public/r/template-hero-ten.json +77 -0
- package/public/r/template-hero-thirteen.json +101 -0
- package/public/r/template-hero-three.json +35 -0
- package/public/r/template-hero-twelve.json +30 -0
- package/public/r/template-hero-two.json +96 -0
- package/public/r/template-logo-cloud-five.json +68 -0
- package/public/r/template-logo-cloud-four.json +71 -0
- package/public/r/template-logo-cloud-one.json +89 -0
- package/public/r/template-logo-cloud-three.json +71 -0
- package/public/r/template-logo-cloud-two.json +74 -0
- package/public/r/textarea-demo.json +1 -1
- package/public/r/textarea-disabled.json +1 -1
- package/public/r/textarea-form.json +1 -1
- package/public/r/textarea-lg.json +1 -1
- package/public/r/textarea-sm.json +1 -1
- package/public/r/textarea-with-label.json +1 -1
- package/public/r/ticker-inline.json +1 -1
- package/public/r/timeline.json +15 -0
- package/public/r/toast-demo.json +1 -1
- package/public/r/toast-heights.json +1 -1
- package/public/r/toast-loading.json +1 -1
- package/public/r/toast-promise.json +1 -1
- package/public/r/toast-with-action.json +1 -1
- package/public/r/toast-with-status.json +1 -1
- package/public/r/toggle-demo.json +1 -1
- package/public/r/toggle-disabled.json +1 -1
- package/public/r/toggle-group-demo.json +1 -1
- package/public/r/toggle-group-disabled.json +1 -1
- package/public/r/toggle-group-lg.json +1 -1
- package/public/r/toggle-group-multiple.json +1 -1
- package/public/r/toggle-group-outline-with-separator.json +1 -1
- package/public/r/toggle-group-outline.json +1 -1
- package/public/r/toggle-group-sm.json +1 -1
- package/public/r/toggle-group-with-disabled-item.json +1 -1
- package/public/r/toggle-icon-group.json +1 -1
- package/public/r/toggle-lg.json +1 -1
- package/public/r/toggle-outline.json +1 -1
- package/public/r/toggle-sm.json +1 -1
- package/public/r/toggle-with-icon.json +1 -1
- package/public/r/toolbar-demo.json +1 -1
- package/public/r/tooltip-demo.json +1 -1
- package/public/r/tooltip-grouped.json +1 -1
- package/public/r/tree-controlled.json +1 -1
- package/public/r/tree-custom-icons.json +1 -1
- package/public/r/tree-no-lines.json +1 -1
- package/public/r/tree-simple.json +1 -1
- package/public/r/tree.json +1 -1
- package/public/r/typography.json +1 -1
- package/public/r/ui.json +5 -0
- package/public/r/use-character-limit.json +12 -0
- package/public/r/use-file-upload.json +12 -0
- package/public/r/use-pagination.json +12 -0
- package/public/r/use-slider-with-input.json +12 -0
- package/public/r/use-toast.json +12 -0
- package/public/r/utils.json +16 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-220",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"registryDependencies": [
|
|
6
|
+
"https://loveui.dev/building-blocks/r/select.json",
|
|
7
|
+
"https://loveui.dev/building-blocks/r/label.json"
|
|
8
|
+
],
|
|
9
|
+
"files": [
|
|
10
|
+
{
|
|
11
|
+
"path": "registry/default/components/comp-220.tsx",
|
|
12
|
+
"content": "import { useId } from \"react\"\n\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/registry/building-blocks/default/ui/select\"\n\nfunction StatusDot({ className }: { className?: string }) {\n return (\n <svg\n width=\"8\"\n height=\"8\"\n fill=\"currentColor\"\n viewBox=\"0 0 8 8\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden=\"true\"\n >\n <circle cx=\"4\" cy=\"4\" r=\"4\" />\n </svg>\n )\n}\n\nexport default function Component() {\n const id = useId()\n return (\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Status select</Label>\n <Select defaultValue=\"1\">\n <SelectTrigger\n id={id}\n className=\"[&>span]:flex [&>span]:items-center [&>span]:gap-2 [&>span_svg]:shrink-0\"\n >\n <SelectValue placeholder=\"Select status\" />\n </SelectTrigger>\n <SelectContent className=\"[&_*[role=option]]:ps-2 [&_*[role=option]]:pe-8 [&_*[role=option]>span]:start-auto [&_*[role=option]>span]:end-2 [&_*[role=option]>span]:flex [&_*[role=option]>span]:items-center [&_*[role=option]>span]:gap-2 [&_*[role=option]>span>svg]:shrink-0 [&_*[role=option]>span>svg]:text-muted-foreground/80\">\n <SelectItem value=\"1\">\n <span className=\"flex items-center gap-2\">\n <StatusDot className=\"text-emerald-600\" />\n <span className=\"truncate\">Completed</span>\n </span>\n </SelectItem>\n <SelectItem value=\"2\">\n <span className=\"flex items-center gap-2\">\n <StatusDot className=\"text-blue-500\" />\n <span className=\"truncate\">In Progress</span>\n </span>\n </SelectItem>\n <SelectItem value=\"3\">\n <span className=\"flex items-center gap-2\">\n <StatusDot className=\"text-amber-500\" />\n <span className=\"truncate\">Pending</span>\n </span>\n </SelectItem>\n <SelectItem value=\"4\">\n <span className=\"flex items-center gap-2\">\n <StatusDot className=\"text-gray-500\" />\n <span className=\"truncate\">Cancelled</span>\n </span>\n </SelectItem>\n <SelectItem value=\"5\">\n <span className=\"flex items-center gap-2\">\n <StatusDot className=\"text-red-500\" />\n <span className=\"truncate\">Failed</span>\n </span>\n </SelectItem>\n </SelectContent>\n </Select>\n </div>\n )\n}\n",
|
|
13
|
+
"type": "registry:component"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"meta": {
|
|
17
|
+
"tags": [
|
|
18
|
+
"label",
|
|
19
|
+
"select",
|
|
20
|
+
"status",
|
|
21
|
+
"radix"
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-221",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"registryDependencies": [
|
|
6
|
+
"https://loveui.dev/building-blocks/r/select.json",
|
|
7
|
+
"https://loveui.dev/building-blocks/r/label.json"
|
|
8
|
+
],
|
|
9
|
+
"files": [
|
|
10
|
+
{
|
|
11
|
+
"path": "registry/default/components/comp-221.tsx",
|
|
12
|
+
"content": "import { useId } from \"react\"\n\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/registry/building-blocks/default/ui/select\"\n\nexport default function Component() {\n const id = useId()\n return (\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Select with left text</Label>\n <Select defaultValue=\"1\">\n <SelectTrigger id={id}>\n <span>\n Language: <SelectValue placeholder=\"Select a language\" />\n </span>\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"1\">Javascript</SelectItem>\n <SelectItem value=\"2\">Bash</SelectItem>\n </SelectContent>\n </Select>\n </div>\n )\n}\n",
|
|
13
|
+
"type": "registry:component"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"meta": {
|
|
17
|
+
"tags": [
|
|
18
|
+
"label",
|
|
19
|
+
"select",
|
|
20
|
+
"radix"
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-222",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"dependencies": [
|
|
6
|
+
"@remixicon/react"
|
|
7
|
+
],
|
|
8
|
+
"registryDependencies": [
|
|
9
|
+
"https://loveui.dev/building-blocks/r/select.json",
|
|
10
|
+
"https://loveui.dev/building-blocks/r/label.json"
|
|
11
|
+
],
|
|
12
|
+
"files": [
|
|
13
|
+
{
|
|
14
|
+
"path": "registry/default/components/comp-222.tsx",
|
|
15
|
+
"content": "import { useId } from \"react\"\nimport { RiGatsbyLine, RiNextjsLine, RiReactjsLine } from \"@remixicon/react\"\n\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/registry/building-blocks/default/ui/select\"\n\nexport default function Component() {\n const id = useId()\n return (\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Options with icon</Label>\n <Select defaultValue=\"3\">\n <SelectTrigger\n id={id}\n className=\"[&>span]:flex [&>span]:items-center [&>span]:gap-2 [&>span_svg]:shrink-0 [&>span_svg]:text-muted-foreground/80\"\n >\n <SelectValue placeholder=\"Select framework\" />\n </SelectTrigger>\n <SelectContent className=\"[&_*[role=option]>span]:flex [&_*[role=option]>span]:gap-2 [&_*[role=option]>span>svg]:shrink-0 [&_*[role=option]>span>svg]:text-muted-foreground/80\">\n <SelectItem value=\"1\">\n <RiReactjsLine size={16} aria-hidden=\"true\" />\n <span className=\"truncate\">React</span>\n </SelectItem>\n <SelectItem value=\"2\">\n <RiNextjsLine size={16} aria-hidden=\"true\" />\n <span className=\"truncate\">Next.js</span>\n </SelectItem>\n <SelectItem value=\"3\">\n <RiGatsbyLine size={16} aria-hidden=\"true\" />\n <span className=\"truncate\">Gatsby</span>\n </SelectItem>\n </SelectContent>\n </Select>\n </div>\n )\n}\n",
|
|
16
|
+
"type": "registry:component"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"meta": {
|
|
20
|
+
"tags": [
|
|
21
|
+
"label",
|
|
22
|
+
"select",
|
|
23
|
+
"radix"
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-223",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"dependencies": [
|
|
6
|
+
"@remixicon/react"
|
|
7
|
+
],
|
|
8
|
+
"registryDependencies": [
|
|
9
|
+
"https://loveui.dev/building-blocks/r/select.json",
|
|
10
|
+
"https://loveui.dev/building-blocks/r/label.json"
|
|
11
|
+
],
|
|
12
|
+
"files": [
|
|
13
|
+
{
|
|
14
|
+
"path": "registry/default/components/comp-223.tsx",
|
|
15
|
+
"content": "import { useId } from \"react\"\nimport { RiGatsbyLine, RiNextjsLine, RiReactjsLine } from \"@remixicon/react\"\n\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/registry/building-blocks/default/ui/select\"\n\nexport default function Component() {\n const id = useId()\n return (\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Options with icon and right indicator</Label>\n <Select defaultValue=\"2\">\n <SelectTrigger\n id={id}\n className=\"[&>span]:flex [&>span]:items-center [&>span]:gap-2 [&>span_svg]:shrink-0 [&>span_svg]:text-muted-foreground/80\"\n >\n <SelectValue placeholder=\"Select framework\" />\n </SelectTrigger>\n <SelectContent className=\"[&_*[role=option]]:ps-2 [&_*[role=option]]:pe-8 [&_*[role=option]>span]:start-auto [&_*[role=option]>span]:end-2 [&_*[role=option]>span]:flex [&_*[role=option]>span]:items-center [&_*[role=option]>span]:gap-2 [&_*[role=option]>span>svg]:shrink-0 [&_*[role=option]>span>svg]:text-muted-foreground/80\">\n <SelectItem value=\"1\">\n <RiReactjsLine size={16} aria-hidden=\"true\" />\n <span className=\"truncate\">React</span>\n </SelectItem>\n <SelectItem value=\"2\">\n <RiNextjsLine size={16} aria-hidden=\"true\" />\n <span className=\"truncate\">Next.js</span>\n </SelectItem>\n <SelectItem value=\"3\">\n <RiGatsbyLine size={16} aria-hidden=\"true\" />\n <span className=\"truncate\">Gatsby</span>\n </SelectItem>\n </SelectContent>\n </Select>\n </div>\n )\n}\n",
|
|
16
|
+
"type": "registry:component"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"meta": {
|
|
20
|
+
"tags": [
|
|
21
|
+
"label",
|
|
22
|
+
"select",
|
|
23
|
+
"radix"
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-224",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"registryDependencies": [
|
|
6
|
+
"https://loveui.dev/building-blocks/r/select.json",
|
|
7
|
+
"https://loveui.dev/building-blocks/r/label.json"
|
|
8
|
+
],
|
|
9
|
+
"files": [
|
|
10
|
+
{
|
|
11
|
+
"path": "registry/default/components/comp-224.tsx",
|
|
12
|
+
"content": "import { useId } from \"react\"\n\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/registry/building-blocks/default/ui/select\"\n\nexport default function Component() {\n const id = useId()\n return (\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Select with description and right indicator</Label>\n <Select defaultValue=\"2\">\n <SelectTrigger id={id} className=\"**:data-desc:hidden\">\n <SelectValue placeholder=\"Choose a plan\" />\n </SelectTrigger>\n <SelectContent className=\"[&_*[role=option]]:ps-2 [&_*[role=option]]:pe-8 [&_*[role=option]>span]:start-auto [&_*[role=option]>span]:end-2\">\n <SelectItem value=\"1\">\n Standard Plan\n <span\n className=\"mt-1 block text-xs text-muted-foreground\"\n data-desc\n >\n Ideal for individuals\n </span>\n </SelectItem>\n <SelectItem value=\"2\">\n Pro Plan\n <span\n className=\"mt-1 block text-xs text-muted-foreground\"\n data-desc\n >\n For professional users\n </span>\n </SelectItem>\n <SelectItem value=\"3\">\n Enterprise Plan\n <span\n className=\"mt-1 block text-xs text-muted-foreground\"\n data-desc\n >\n Built for large teams\n </span>\n </SelectItem>\n </SelectContent>\n </Select>\n </div>\n )\n}\n",
|
|
13
|
+
"type": "registry:component"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"meta": {
|
|
17
|
+
"tags": [
|
|
18
|
+
"label",
|
|
19
|
+
"select",
|
|
20
|
+
"radix"
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-225",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"registryDependencies": [
|
|
6
|
+
"https://loveui.dev/building-blocks/r/select.json",
|
|
7
|
+
"https://loveui.dev/building-blocks/r/label.json"
|
|
8
|
+
],
|
|
9
|
+
"files": [
|
|
10
|
+
{
|
|
11
|
+
"path": "registry/default/components/comp-225.tsx",
|
|
12
|
+
"content": "import { useId } from \"react\"\n\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectTrigger,\n SelectValue,\n} from \"@/registry/building-blocks/default/ui/select\"\n\nconst countries = [\n {\n continent: \"America\",\n items: [\n { value: \"1\", label: \"United States\", flag: \"🇺🇸\" },\n { value: \"2\", label: \"Canada\", flag: \"🇨🇦\" },\n { value: \"3\", label: \"Mexico\", flag: \"🇲🇽\" },\n ],\n },\n {\n continent: \"Africa\",\n items: [\n { value: \"4\", label: \"South Africa\", flag: \"🇿🇦\" },\n { value: \"5\", label: \"Nigeria\", flag: \"🇳🇬\" },\n { value: \"6\", label: \"Morocco\", flag: \"🇲🇦\" },\n ],\n },\n {\n continent: \"Asia\",\n items: [\n { value: \"7\", label: \"China\", flag: \"🇨🇳\" },\n { value: \"8\", label: \"Japan\", flag: \"🇯🇵\" },\n { value: \"9\", label: \"India\", flag: \"🇮🇳\" },\n ],\n },\n {\n continent: \"Europe\",\n items: [\n { value: \"10\", label: \"United Kingdom\", flag: \"🇬🇧\" },\n { value: \"11\", label: \"France\", flag: \"🇫🇷\" },\n { value: \"12\", label: \"Germany\", flag: \"🇩🇪\" },\n ],\n },\n {\n continent: \"Oceania\",\n items: [\n { value: \"13\", label: \"Australia\", flag: \"🇦🇺\" },\n { value: \"14\", label: \"New Zealand\", flag: \"🇳🇿\" },\n ],\n },\n]\n\nexport default function Component() {\n const id = useId()\n return (\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Options with flag</Label>\n <Select defaultValue=\"2\">\n <SelectTrigger\n id={id}\n className=\"[&>span]:flex [&>span]:items-center [&>span]:gap-2 [&>span_svg]:shrink-0 [&>span_svg]:text-muted-foreground/80\"\n >\n <SelectValue placeholder=\"Select framework\" />\n </SelectTrigger>\n <SelectContent className=\"[&_*[role=option]]:ps-2 [&_*[role=option]]:pe-8 [&_*[role=option]>span]:start-auto [&_*[role=option]>span]:end-2 [&_*[role=option]>span]:flex [&_*[role=option]>span]:items-center [&_*[role=option]>span]:gap-2 [&_*[role=option]>span>svg]:shrink-0 [&_*[role=option]>span>svg]:text-muted-foreground/80\">\n {countries.map((continent) => (\n <SelectGroup key={continent.continent}>\n <SelectLabel className=\"ps-2\">{continent.continent}</SelectLabel>\n {continent.items.map((item) => (\n <SelectItem key={item.value} value={item.value}>\n <span className=\"text-lg leading-none\">{item.flag}</span>{\" \"}\n <span className=\"truncate\">{item.label}</span>\n </SelectItem>\n ))}\n </SelectGroup>\n ))}\n </SelectContent>\n </Select>\n </div>\n )\n}\n",
|
|
13
|
+
"type": "registry:component"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"meta": {
|
|
17
|
+
"tags": [
|
|
18
|
+
"label",
|
|
19
|
+
"select",
|
|
20
|
+
"flag",
|
|
21
|
+
"radix"
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-226",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"registryDependencies": [
|
|
6
|
+
"https://loveui.dev/building-blocks/r/select.json",
|
|
7
|
+
"https://loveui.dev/building-blocks/r/label.json"
|
|
8
|
+
],
|
|
9
|
+
"files": [
|
|
10
|
+
{
|
|
11
|
+
"path": "registry/default/components/comp-226.tsx",
|
|
12
|
+
"content": "import { useId } from \"react\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectTrigger,\n SelectValue,\n} from \"@/registry/building-blocks/default/ui/select\"\n\nexport default function Component() {\n const id = useId()\n return (\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Options with avatar</Label>\n <Select defaultValue=\"1\">\n <SelectTrigger\n id={id}\n className=\"ps-2 [&>span]:flex [&>span]:items-center [&>span]:gap-2 [&>span_img]:shrink-0\"\n >\n <SelectValue placeholder=\"Select framework\" />\n </SelectTrigger>\n <SelectContent className=\"[&_*[role=option]]:ps-2 [&_*[role=option]]:pe-8 [&_*[role=option]>span]:start-auto [&_*[role=option]>span]:end-2 [&_*[role=option]>span]:flex [&_*[role=option]>span]:items-center [&_*[role=option]>span]:gap-2\">\n <SelectGroup>\n <SelectLabel className=\"ps-2\">Impersonate user</SelectLabel>\n <SelectItem value=\"1\">\n <img\n className=\"size-5 rounded\"\n src={\"https://i.pravatar.cc/160?img=1\"}\n alt=\"Frank Allison\"\n width={20}\n height={20}\n />\n <span className=\"truncate\">Connor Love</span>\n </SelectItem>\n <SelectItem value=\"2\">\n <img\n className=\"size-5 rounded\"\n src={\"https://github.com/monster0506.png\"}\n alt=\"Xavier Guerra\"\n width={20}\n height={20}\n />\n <span className=\"truncate\">Thomas Raklovits</span>\n </SelectItem>\n <SelectItem value=\"3\">\n <img\n className=\"size-5 rounded\"\n src={\"https://i.pravatar.cc/160?img=3\"}\n alt=\"Anne Kelley\"\n width={20}\n height={20}\n />\n <span className=\"truncate\">Ian Schroeter</span>\n </SelectItem>\n </SelectGroup>\n </SelectContent>\n </Select>\n </div>\n )\n}\n",
|
|
13
|
+
"type": "registry:component"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"meta": {
|
|
17
|
+
"tags": [
|
|
18
|
+
"label",
|
|
19
|
+
"select",
|
|
20
|
+
"user",
|
|
21
|
+
"avatar",
|
|
22
|
+
"profile",
|
|
23
|
+
"radix"
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-227",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"registryDependencies": [
|
|
6
|
+
"https://loveui.dev/building-blocks/r/select.json",
|
|
7
|
+
"https://loveui.dev/building-blocks/r/label.json"
|
|
8
|
+
],
|
|
9
|
+
"files": [
|
|
10
|
+
{
|
|
11
|
+
"path": "registry/default/components/comp-227.tsx",
|
|
12
|
+
"content": "import { useId } from \"react\"\n\nimport { cn } from \"@/registry/building-blocks/default/lib/utils\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectTrigger,\n SelectValue,\n} from \"@/registry/building-blocks/default/ui/select\"\n\nconst Square = ({\n className,\n children,\n}: {\n className?: string\n children: React.ReactNode\n}) => (\n <span\n data-square\n className={cn(\n \"flex size-5 items-center justify-center rounded bg-muted text-xs font-medium text-muted-foreground\",\n className\n )}\n aria-hidden=\"true\"\n >\n {children}\n </span>\n)\n\nexport default function Component() {\n const id = useId()\n return (\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Options with placeholder avatar</Label>\n <Select defaultValue=\"1\">\n <SelectTrigger\n id={id}\n className=\"ps-2 [&>span]:flex [&>span]:items-center [&>span]:gap-2 [&>span_[data-square]]:shrink-0\"\n >\n <SelectValue placeholder=\"Select framework\" />\n </SelectTrigger>\n <SelectContent className=\"[&_*[role=option]]:ps-2 [&_*[role=option]]:pe-8 [&_*[role=option]>span]:start-auto [&_*[role=option]>span]:end-2 [&_*[role=option]>span]:flex [&_*[role=option]>span]:items-center [&_*[role=option]>span]:gap-2\">\n <SelectGroup>\n <SelectLabel className=\"ps-2\">Impersonate user</SelectLabel>\n <SelectItem value=\"1\">\n <Square className=\"bg-indigo-400/20 text-indigo-500\">F</Square>\n <span className=\"truncate\">Connor Love</span>\n </SelectItem>\n <SelectItem value=\"2\">\n <Square className=\"bg-purple-400/20 text-purple-500\">X</Square>\n <span className=\"truncate\">Xavier Guerra</span>\n </SelectItem>\n <SelectItem value=\"3\">\n <Square className=\"bg-rose-400/20 text-rose-500\">A</Square>\n <span className=\"truncate\">Anne Kelley</span>\n </SelectItem>\n </SelectGroup>\n </SelectContent>\n </Select>\n </div>\n )\n}\n",
|
|
13
|
+
"type": "registry:component"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"meta": {
|
|
17
|
+
"tags": [
|
|
18
|
+
"label",
|
|
19
|
+
"select",
|
|
20
|
+
"user",
|
|
21
|
+
"avatar",
|
|
22
|
+
"profile",
|
|
23
|
+
"radix"
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-228",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"registryDependencies": [
|
|
6
|
+
"https://loveui.dev/building-blocks/r/select.json",
|
|
7
|
+
"https://loveui.dev/building-blocks/r/label.json"
|
|
8
|
+
],
|
|
9
|
+
"files": [
|
|
10
|
+
{
|
|
11
|
+
"path": "registry/default/components/comp-228.tsx",
|
|
12
|
+
"content": "import { useId } from \"react\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/registry/building-blocks/default/ui/select\"\n\nexport default function Component() {\n const id = useId()\n return (\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Options with portrait</Label>\n <Select defaultValue=\"1\">\n <SelectTrigger\n id={id}\n className=\"h-auto ps-2 text-left [&>span]:flex [&>span]:items-center [&>span]:gap-2 [&>span_img]:shrink-0\"\n >\n <SelectValue placeholder=\"Choose a plan\" />\n </SelectTrigger>\n <SelectContent className=\"[&_*[role=option]]:ps-2 [&_*[role=option]]:pe-8 [&_*[role=option]>span]:start-auto [&_*[role=option]>span]:end-2\">\n <SelectItem value=\"1\">\n <span className=\"flex items-center gap-2\">\n <img\n className=\"rounded-full\"\n src={\"https://i.pravatar.cc/160?img=8\"}\n alt=\"Connor Love\"\n width={40}\n height={40}\n />\n <span>\n <span className=\"block font-medium\">Connor Love</span>\n <span className=\"mt-0.5 block text-xs text-muted-foreground\">\n @loveconnor\n </span>\n </span>\n </span>\n </SelectItem>\n <SelectItem value=\"2\">\n <span className=\"flex items-center gap-2\">\n <img\n className=\"rounded-full\"\n src={\"https://i.pravatar.cc/160?img=9\"}\n alt=\"Thomas Raklovits\"\n width={40}\n height={40}\n />\n <span>\n <span className=\"block font-medium\">Thomas Raklovits</span>\n <span className=\"mt-0.5 block text-xs text-muted-foreground\">\n @monster0506\n </span>\n </span>\n </span>\n </SelectItem>\n <SelectItem value=\"3\">\n <span className=\"flex items-center gap-2\">\n <img\n className=\"rounded-full\"\n src={\"https://i.pravatar.cc/160?img=10\"}\n alt=\"Ian Schroeter\"\n width={40}\n height={40}\n />\n <span>\n <span className=\"block font-medium\">Ian Schroeter</span>\n <span className=\"mt-0.5 block text-xs text-muted-foreground\">\n @ischroeter\n </span>\n </span>\n </span>\n </SelectItem>\n </SelectContent>\n </Select>\n </div>\n )\n}\n",
|
|
13
|
+
"type": "registry:component"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"meta": {
|
|
17
|
+
"tags": [
|
|
18
|
+
"label",
|
|
19
|
+
"select",
|
|
20
|
+
"user",
|
|
21
|
+
"avatar",
|
|
22
|
+
"profile",
|
|
23
|
+
"radix"
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-229",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"registryDependencies": [
|
|
6
|
+
"https://loveui.dev/building-blocks/r/button.json",
|
|
7
|
+
"https://loveui.dev/building-blocks/r/command.json",
|
|
8
|
+
"https://loveui.dev/building-blocks/r/label.json",
|
|
9
|
+
"https://loveui.dev/building-blocks/r/popover.json"
|
|
10
|
+
],
|
|
11
|
+
"files": [
|
|
12
|
+
{
|
|
13
|
+
"path": "registry/default/components/comp-229.tsx",
|
|
14
|
+
"content": "\"use client\"\n\nimport { useId, useState } from \"react\"\nimport { CheckIcon, ChevronDownIcon } from \"lucide-react\"\n\nimport { cn } from \"@/registry/building-blocks/default/lib/utils\"\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/registry/building-blocks/default/ui/command\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/registry/building-blocks/default/ui/popover\"\n\nconst frameworks = [\n {\n value: \"next.js\",\n label: \"Next.js\",\n },\n {\n value: \"sveltekit\",\n label: \"SvelteKit\",\n },\n {\n value: \"nuxt.js\",\n label: \"Nuxt.js\",\n },\n {\n value: \"remix\",\n label: \"Remix\",\n },\n {\n value: \"astro\",\n label: \"Astro\",\n },\n {\n value: \"angular\",\n label: \"Angular\",\n },\n {\n value: \"vue\",\n label: \"Vue.js\",\n },\n {\n value: \"react\",\n label: \"React\",\n },\n {\n value: \"ember\",\n label: \"Ember.js\",\n },\n {\n value: \"gatsby\",\n label: \"Gatsby\",\n },\n {\n value: \"eleventy\",\n label: \"Eleventy\",\n },\n {\n value: \"solid\",\n label: \"SolidJS\",\n },\n {\n value: \"preact\",\n label: \"Preact\",\n },\n {\n value: \"qwik\",\n label: \"Qwik\",\n },\n {\n value: \"alpine\",\n label: \"Alpine.js\",\n },\n {\n value: \"lit\",\n label: \"Lit\",\n },\n]\n\nexport default function Component() {\n const id = useId()\n const [open, setOpen] = useState<boolean>(false)\n const [value, setValue] = useState<string>(\"\")\n\n return (\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Select with search</Label>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n id={id}\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"w-full justify-between border-input bg-background px-3 font-normal outline-offset-0 outline-none hover:bg-background focus-visible:outline-[3px]\"\n >\n <span className={cn(\"truncate\", !value && \"text-muted-foreground\")}>\n {value\n ? frameworks.find((framework) => framework.value === value)\n ?.label\n : \"Select framework\"}\n </span>\n <ChevronDownIcon\n size={16}\n className=\"shrink-0 text-muted-foreground/80\"\n aria-hidden=\"true\"\n />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-full min-w-[var(--radix-popper-anchor-width)] border-input p-0\"\n align=\"start\"\n >\n <Command>\n <CommandInput placeholder=\"Search framework...\" />\n <CommandList>\n <CommandEmpty>No framework found.</CommandEmpty>\n <CommandGroup>\n {frameworks.map((framework) => (\n <CommandItem\n key={framework.value}\n value={framework.value}\n onSelect={(currentValue) => {\n setValue(currentValue === value ? \"\" : currentValue)\n setOpen(false)\n }}\n >\n {framework.label}\n {value === framework.value && (\n <CheckIcon size={16} className=\"ml-auto\" />\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n",
|
|
15
|
+
"type": "registry:component"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"meta": {
|
|
19
|
+
"tags": [
|
|
20
|
+
"label",
|
|
21
|
+
"select",
|
|
22
|
+
"command",
|
|
23
|
+
"combobox",
|
|
24
|
+
"popover",
|
|
25
|
+
"search",
|
|
26
|
+
"autocomplete",
|
|
27
|
+
"radix"
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-23",
|
|
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-23.tsx",
|
|
12
|
+
"content": "\"use client\"\n\nimport { useId, useState } from \"react\"\nimport { EyeIcon, EyeOffIcon } from \"lucide-react\"\n\nimport { Input } from \"@/registry/building-blocks/default/ui/input\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\n\nexport default function Component() {\n const id = useId()\n const [isVisible, setIsVisible] = useState<boolean>(false)\n\n const toggleVisibility = () => setIsVisible((prevState) => !prevState)\n\n return (\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Show/hide password input</Label>\n <div className=\"relative\">\n <Input\n id={id}\n className=\"pe-9\"\n placeholder=\"Password\"\n type={isVisible ? \"text\" : \"password\"}\n />\n <button\n className=\"absolute inset-y-0 end-0 flex h-full w-9 items-center justify-center rounded-e-md text-muted-foreground/80 transition-[color,box-shadow] outline-none hover:text-foreground focus:z-10 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\"\n type=\"button\"\n onClick={toggleVisibility}\n aria-label={isVisible ? \"Hide password\" : \"Show password\"}\n aria-pressed={isVisible}\n aria-controls=\"password\"\n >\n {isVisible ? (\n <EyeOffIcon size={16} aria-hidden=\"true\" />\n ) : (\n <EyeIcon size={16} aria-hidden=\"true\" />\n )}\n </button>\n </div>\n </div>\n )\n}\n",
|
|
13
|
+
"type": "registry:component"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"meta": {
|
|
17
|
+
"tags": [
|
|
18
|
+
"input",
|
|
19
|
+
"label",
|
|
20
|
+
"button",
|
|
21
|
+
"password"
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-230",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"registryDependencies": [
|
|
6
|
+
"https://loveui.dev/building-blocks/r/button.json",
|
|
7
|
+
"https://loveui.dev/building-blocks/r/command.json",
|
|
8
|
+
"https://loveui.dev/building-blocks/r/label.json",
|
|
9
|
+
"https://loveui.dev/building-blocks/r/popover.json"
|
|
10
|
+
],
|
|
11
|
+
"files": [
|
|
12
|
+
{
|
|
13
|
+
"path": "registry/default/components/comp-230.tsx",
|
|
14
|
+
"content": "\"use client\"\n\nimport { useId, useState } from \"react\"\nimport { CheckIcon, ChevronDownIcon, PlusIcon } from \"lucide-react\"\n\nimport { cn } from \"@/registry/building-blocks/default/lib/utils\"\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from \"@/registry/building-blocks/default/ui/command\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/registry/building-blocks/default/ui/popover\"\n\nconst organizations = [\n {\n value: \"loveui\",\n label: \"loveui\",\n },\n {\n value: \"cruip\",\n label: \"Cruip\",\n },\n]\n\nexport default function Component() {\n const id = useId()\n const [open, setOpen] = useState<boolean>(false)\n const [value, setValue] = useState<string>(\"loveui\")\n\n return (\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Select with search and button</Label>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n id={id}\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"w-full justify-between border-input bg-background px-3 font-normal outline-offset-0 outline-none hover:bg-background focus-visible:outline-[3px]\"\n >\n <span className={cn(\"truncate\", !value && \"text-muted-foreground\")}>\n {value\n ? organizations.find(\n (organization) => organization.value === value\n )?.label\n : \"Select organization\"}\n </span>\n <ChevronDownIcon\n size={16}\n className=\"shrink-0 text-muted-foreground/80\"\n aria-hidden=\"true\"\n />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-full min-w-[var(--radix-popper-anchor-width)] border-input p-0\"\n align=\"start\"\n >\n <Command>\n <CommandInput placeholder=\"Find organization\" />\n <CommandList>\n <CommandEmpty>No organization found.</CommandEmpty>\n <CommandGroup>\n {organizations.map((organization) => (\n <CommandItem\n key={organization.value}\n value={organization.value}\n onSelect={(currentValue) => {\n setValue(currentValue === value ? \"\" : currentValue)\n setOpen(false)\n }}\n >\n {organization.label}\n {value === organization.value && (\n <CheckIcon size={16} className=\"ml-auto\" />\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n <CommandSeparator />\n <CommandGroup>\n <Button\n variant=\"ghost\"\n className=\"w-full justify-start font-normal\"\n >\n <PlusIcon\n size={16}\n className=\"-ms-2 opacity-60\"\n aria-hidden=\"true\"\n />\n New organization\n </Button>\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n",
|
|
15
|
+
"type": "registry:component"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"meta": {
|
|
19
|
+
"tags": [
|
|
20
|
+
"label",
|
|
21
|
+
"select",
|
|
22
|
+
"command",
|
|
23
|
+
"combobox",
|
|
24
|
+
"popover",
|
|
25
|
+
"search",
|
|
26
|
+
"autocomplete",
|
|
27
|
+
"radix"
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-231",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"registryDependencies": [
|
|
6
|
+
"https://loveui.dev/building-blocks/r/button.json",
|
|
7
|
+
"https://loveui.dev/building-blocks/r/command.json",
|
|
8
|
+
"https://loveui.dev/building-blocks/r/label.json",
|
|
9
|
+
"https://loveui.dev/building-blocks/r/popover.json"
|
|
10
|
+
],
|
|
11
|
+
"files": [
|
|
12
|
+
{
|
|
13
|
+
"path": "registry/default/components/comp-231.tsx",
|
|
14
|
+
"content": "\"use client\"\n\nimport { useId, useMemo, useState } from \"react\"\nimport { CheckIcon, ChevronDownIcon } from \"lucide-react\"\n\nimport { cn } from \"@/registry/building-blocks/default/lib/utils\"\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/registry/building-blocks/default/ui/command\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/registry/building-blocks/default/ui/popover\"\n\nexport default function Component() {\n const id = useId()\n const [open, setOpen] = useState<boolean>(false)\n const [value, setValue] = useState<string>(\"Europe/London\")\n\n const timezones = Intl.supportedValuesOf(\"timeZone\")\n\n const formattedTimezones = useMemo(() => {\n return timezones\n .map((timezone) => {\n const formatter = new Intl.DateTimeFormat(\"en\", {\n timeZone: timezone,\n timeZoneName: \"shortOffset\",\n })\n const parts = formatter.formatToParts(new Date())\n const offset =\n parts.find((part) => part.type === \"timeZoneName\")?.value || \"\"\n const modifiedOffset = offset === \"GMT\" ? \"GMT+0\" : offset\n\n return {\n value: timezone,\n label: `(${modifiedOffset}) ${timezone.replace(/_/g, \" \")}`,\n numericOffset: parseInt(\n offset.replace(\"GMT\", \"\").replace(\"+\", \"\") || \"0\"\n ),\n }\n })\n .sort((a, b) => a.numericOffset - b.numericOffset)\n }, [timezones])\n\n return (\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Timezone select with search</Label>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n id={id}\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"w-full justify-between border-input bg-background px-3 font-normal outline-offset-0 outline-none hover:bg-background focus-visible:outline-[3px]\"\n >\n <span className={cn(\"truncate\", !value && \"text-muted-foreground\")}>\n {value\n ? formattedTimezones.find(\n (timezone) => timezone.value === value\n )?.label\n : \"Select timezone\"}\n </span>\n <ChevronDownIcon\n size={16}\n className=\"shrink-0 text-muted-foreground/80\"\n aria-hidden=\"true\"\n />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-full min-w-[var(--radix-popper-anchor-width)] border-input p-0\"\n align=\"start\"\n >\n <Command\n filter={(value, search) => {\n const normalizedValue = value.toLowerCase()\n const normalizedSearch = search.toLowerCase().replace(/\\s+/g, \"\")\n return normalizedValue.includes(normalizedSearch) ? 1 : 0\n }}\n >\n <CommandInput placeholder=\"Search timezone...\" />\n <CommandList>\n <CommandEmpty>No timezone found.</CommandEmpty>\n <CommandGroup>\n {formattedTimezones.map(({ value: itemValue, label }) => (\n <CommandItem\n key={itemValue}\n value={itemValue}\n onSelect={(currentValue) => {\n setValue(currentValue === value ? \"\" : currentValue)\n setOpen(false)\n }}\n >\n {label}\n {value === itemValue && (\n <CheckIcon size={16} className=\"ml-auto\" />\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n",
|
|
15
|
+
"type": "registry:component"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"meta": {
|
|
19
|
+
"tags": [
|
|
20
|
+
"label",
|
|
21
|
+
"select",
|
|
22
|
+
"command",
|
|
23
|
+
"combobox",
|
|
24
|
+
"popover",
|
|
25
|
+
"search",
|
|
26
|
+
"autocomplete",
|
|
27
|
+
"timezone",
|
|
28
|
+
"time",
|
|
29
|
+
"radix"
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-232",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"registryDependencies": [
|
|
6
|
+
"https://loveui.dev/building-blocks/r/button.json",
|
|
7
|
+
"https://loveui.dev/building-blocks/r/command.json",
|
|
8
|
+
"https://loveui.dev/building-blocks/r/label.json",
|
|
9
|
+
"https://loveui.dev/building-blocks/r/popover.json"
|
|
10
|
+
],
|
|
11
|
+
"files": [
|
|
12
|
+
{
|
|
13
|
+
"path": "registry/default/components/comp-232.tsx",
|
|
14
|
+
"content": "\"use client\"\n\nimport { Fragment, useId, useState } from \"react\"\nimport { CheckIcon, ChevronDownIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/registry/building-blocks/default/ui/command\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/registry/building-blocks/default/ui/popover\"\n\nconst countries = [\n {\n continent: \"America\",\n items: [\n { value: \"United States\", flag: \"🇺🇸\" },\n { value: \"Canada\", flag: \"🇨🇦\" },\n { value: \"Mexico\", flag: \"🇲🇽\" },\n ],\n },\n {\n continent: \"Africa\",\n items: [\n { value: \"South Africa\", flag: \"🇿🇦\" },\n { value: \"Nigeria\", flag: \"🇳🇬\" },\n { value: \"Morocco\", flag: \"🇲🇦\" },\n ],\n },\n {\n continent: \"Asia\",\n items: [\n { value: \"China\", flag: \"🇨🇳\" },\n { value: \"Japan\", flag: \"🇯🇵\" },\n { value: \"India\", flag: \"🇮🇳\" },\n ],\n },\n {\n continent: \"Europe\",\n items: [\n { value: \"United Kingdom\", flag: \"🇬🇧\" },\n { value: \"France\", flag: \"🇫🇷\" },\n { value: \"Germany\", flag: \"🇩🇪\" },\n ],\n },\n {\n continent: \"Oceania\",\n items: [\n { value: \"Australia\", flag: \"🇦🇺\" },\n { value: \"New Zealand\", flag: \"🇳🇿\" },\n ],\n },\n]\n\nexport default function Component() {\n const id = useId()\n const [open, setOpen] = useState<boolean>(false)\n const [value, setValue] = useState<string>(\"\")\n\n return (\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Options with flag and search</Label>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n id={id}\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"w-full justify-between border-input bg-background px-3 font-normal outline-offset-0 outline-none hover:bg-background focus-visible:outline-[3px]\"\n >\n {value ? (\n <span className=\"flex min-w-0 items-center gap-2\">\n <span className=\"text-lg leading-none\">\n {\n countries\n .map((group) =>\n group.items.find((item) => item.value === value)\n )\n .filter(Boolean)[0]?.flag\n }\n </span>\n <span className=\"truncate\">{value}</span>\n </span>\n ) : (\n <span className=\"text-muted-foreground\">Select country</span>\n )}\n <ChevronDownIcon\n size={16}\n className=\"shrink-0 text-muted-foreground/80\"\n aria-hidden=\"true\"\n />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-full min-w-[var(--radix-popper-anchor-width)] border-input p-0\"\n align=\"start\"\n >\n <Command>\n <CommandInput placeholder=\"Search country...\" />\n <CommandList>\n <CommandEmpty>No country found.</CommandEmpty>\n {countries.map((group) => (\n <Fragment key={group.continent}>\n <CommandGroup heading={group.continent}>\n {group.items.map((country) => (\n <CommandItem\n key={country.value}\n value={country.value}\n onSelect={(currentValue) => {\n setValue(currentValue)\n setOpen(false)\n }}\n >\n <span className=\"text-lg leading-none\">\n {country.flag}\n </span>{\" \"}\n {country.value}\n {value === country.value && (\n <CheckIcon size={16} className=\"ml-auto\" />\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n </Fragment>\n ))}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n",
|
|
15
|
+
"type": "registry:component"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"meta": {
|
|
19
|
+
"tags": [
|
|
20
|
+
"label",
|
|
21
|
+
"select",
|
|
22
|
+
"command",
|
|
23
|
+
"combobox",
|
|
24
|
+
"popover",
|
|
25
|
+
"search",
|
|
26
|
+
"autocomplete",
|
|
27
|
+
"flag",
|
|
28
|
+
"radix"
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-233",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"registryDependencies": [
|
|
6
|
+
"https://loveui.dev/building-blocks/r/button.json",
|
|
7
|
+
"https://loveui.dev/building-blocks/r/command.json",
|
|
8
|
+
"https://loveui.dev/building-blocks/r/label.json",
|
|
9
|
+
"https://loveui.dev/building-blocks/r/popover.json"
|
|
10
|
+
],
|
|
11
|
+
"files": [
|
|
12
|
+
{
|
|
13
|
+
"path": "registry/default/components/comp-233.tsx",
|
|
14
|
+
"content": "\"use client\"\n\nimport { useId, useState } from \"react\"\nimport {\n BlocksIcon,\n BrainIcon,\n ChevronDownIcon,\n CpuIcon,\n DatabaseIcon,\n GlobeIcon,\n LayoutIcon,\n LineChartIcon,\n NetworkIcon,\n SearchIcon,\n ServerIcon,\n} from \"lucide-react\"\n\nimport { Button } from \"@/registry/building-blocks/default/ui/button\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/registry/building-blocks/default/ui/command\"\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/registry/building-blocks/default/ui/popover\"\n\nconst items = [\n {\n value: \"analytics platform\",\n label: \"Analytics Platform\",\n icon: LineChartIcon,\n number: 2451,\n },\n {\n value: \"ai services\",\n label: \"AI Services\",\n icon: BrainIcon,\n number: 1832,\n },\n {\n value: \"database systems\",\n label: \"Database Systems\",\n icon: DatabaseIcon,\n number: 1654,\n },\n {\n value: \"compute resources\",\n label: \"Compute Resources\",\n icon: CpuIcon,\n number: 943,\n },\n {\n value: \"network services\",\n label: \"Network Services\",\n icon: NetworkIcon,\n number: 832,\n },\n {\n value: \"web services\",\n label: \"Web Services\",\n icon: GlobeIcon,\n number: 654,\n },\n {\n value: \"monitoring tools\",\n label: \"Monitoring Tools\",\n icon: SearchIcon,\n number: 432,\n },\n {\n value: \"server management\",\n label: \"Server Management\",\n icon: ServerIcon,\n number: 321,\n },\n {\n value: \"infrastructure\",\n label: \"Infrastructure\",\n icon: BlocksIcon,\n number: 234,\n },\n {\n value: \"frontend services\",\n label: \"Frontend Services\",\n icon: LayoutIcon,\n number: 123,\n },\n]\n\nexport default function Component() {\n const id = useId()\n const [open, setOpen] = useState<boolean>(false)\n const [value, setValue] = useState<string>(\"\")\n\n return (\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Options with icon and number</Label>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n id={id}\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"w-full justify-between border-input bg-background px-3 font-normal outline-offset-0 outline-none hover:bg-background focus-visible:outline-[3px]\"\n >\n {value ? (\n <span className=\"flex min-w-0 items-center gap-2\">\n {(() => {\n const selectedItem = items.find(\n (item) => item.value === value\n )\n if (selectedItem) {\n const Icon = selectedItem.icon\n return <Icon className=\"size-4 text-muted-foreground\" />\n }\n return null\n })()}\n <span className=\"truncate\">\n {items.find((item) => item.value === value)?.label}\n </span>\n </span>\n ) : (\n <span className=\"text-muted-foreground\">\n Select service category\n </span>\n )}\n <ChevronDownIcon\n size={16}\n className=\"shrink-0 text-muted-foreground/80\"\n aria-hidden=\"true\"\n />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-full min-w-[var(--radix-popper-anchor-width)] border-input p-0\"\n align=\"start\"\n >\n <Command>\n <CommandInput placeholder=\"Search services...\" />\n <CommandList>\n <CommandEmpty>No service found.</CommandEmpty>\n <CommandGroup>\n {items.map((item) => (\n <CommandItem\n key={item.value}\n value={item.value}\n onSelect={(currentValue) => {\n setValue(currentValue === value ? \"\" : currentValue)\n setOpen(false)\n }}\n className=\"flex items-center justify-between\"\n >\n <div className=\"flex items-center gap-2\">\n <item.icon className=\"size-4 text-muted-foreground\" />\n {item.label}\n </div>\n <span className=\"text-xs text-muted-foreground\">\n {item.number.toLocaleString()}\n </span>\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n",
|
|
15
|
+
"type": "registry:component"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"meta": {
|
|
19
|
+
"tags": [
|
|
20
|
+
"label",
|
|
21
|
+
"select",
|
|
22
|
+
"command",
|
|
23
|
+
"combobox",
|
|
24
|
+
"popover",
|
|
25
|
+
"search",
|
|
26
|
+
"autocomplete",
|
|
27
|
+
"radix"
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-234",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"registryDependencies": [
|
|
6
|
+
"https://loveui.dev/building-blocks/r/label.json",
|
|
7
|
+
"https://loveui.dev/building-blocks/r/multiselect.json"
|
|
8
|
+
],
|
|
9
|
+
"files": [
|
|
10
|
+
{
|
|
11
|
+
"path": "registry/default/components/comp-234.tsx",
|
|
12
|
+
"content": "import { useId } from \"react\"\n\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport MultipleSelector, { Option } from \"@/registry/building-blocks/default/ui/multiselect\"\n\nconst frameworks: Option[] = [\n {\n value: \"next.js\",\n label: \"Next.js\",\n },\n {\n value: \"sveltekit\",\n label: \"SvelteKit\",\n },\n {\n value: \"nuxt.js\",\n label: \"Nuxt.js\",\n disable: true,\n },\n {\n value: \"remix\",\n label: \"Remix\",\n },\n {\n value: \"astro\",\n label: \"Astro\",\n },\n {\n value: \"angular\",\n label: \"Angular\",\n },\n {\n value: \"vue\",\n label: \"Vue.js\",\n },\n {\n value: \"react\",\n label: \"React\",\n },\n {\n value: \"ember\",\n label: \"Ember.js\",\n },\n {\n value: \"gatsby\",\n label: \"Gatsby\",\n },\n {\n value: \"eleventy\",\n label: \"Eleventy\",\n disable: true,\n },\n {\n value: \"solid\",\n label: \"SolidJS\",\n },\n {\n value: \"preact\",\n label: \"Preact\",\n },\n {\n value: \"qwik\",\n label: \"Qwik\",\n },\n {\n value: \"alpine\",\n label: \"Alpine.js\",\n },\n {\n value: \"lit\",\n label: \"Lit\",\n },\n]\n\nexport default function Component() {\n const id = useId()\n return (\n <div className=\"*:not-first:mt-2\">\n <Label>Multiselect</Label>\n <MultipleSelector\n commandProps={{\n label: \"Select frameworks\",\n }}\n value={frameworks.slice(0, 2)}\n defaultOptions={frameworks}\n placeholder=\"Select frameworks\"\n hideClearAllButton\n hidePlaceholderWhenSelected\n emptyIndicator={<p className=\"text-center text-sm\">No results found</p>}\n />\n <p\n className=\"mt-2 text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Inspired by{\" \"}\n <a\n className=\"underline hover:text-foreground\"\n href=\"https://shadcnui-expansions.typeart.cc/docs/multiple-selector\"\n target=\"_blank\"\n rel=\"noopener nofollow\"\n >\n shadcn/ui expansions\n </a>\n </p>\n </div>\n )\n}\n",
|
|
13
|
+
"type": "registry:component"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"meta": {
|
|
17
|
+
"tags": [
|
|
18
|
+
"label",
|
|
19
|
+
"select",
|
|
20
|
+
"multiselect",
|
|
21
|
+
"tag",
|
|
22
|
+
"input",
|
|
23
|
+
"search",
|
|
24
|
+
"autocomplete",
|
|
25
|
+
"radix"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-235",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"registryDependencies": [
|
|
6
|
+
"https://loveui.dev/building-blocks/r/label.json",
|
|
7
|
+
"https://loveui.dev/building-blocks/r/multiselect.json"
|
|
8
|
+
],
|
|
9
|
+
"files": [
|
|
10
|
+
{
|
|
11
|
+
"path": "registry/default/components/comp-235.tsx",
|
|
12
|
+
"content": "import { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport MultipleSelector, { Option } from \"@/registry/building-blocks/default/ui/multiselect\"\n\nconst frameworks: Option[] = [\n {\n value: \"next.js\",\n label: \"Next.js\",\n },\n {\n value: \"sveltekit\",\n label: \"SvelteKit\",\n },\n {\n value: \"nuxt.js\",\n label: \"Nuxt.js\",\n },\n {\n value: \"remix\",\n label: \"Remix\",\n },\n {\n value: \"astro\",\n label: \"Astro\",\n },\n {\n value: \"angular\",\n label: \"Angular\",\n },\n {\n value: \"vue\",\n label: \"Vue.js\",\n },\n {\n value: \"react\",\n label: \"React\",\n },\n {\n value: \"ember\",\n label: \"Ember.js\",\n },\n {\n value: \"gatsby\",\n label: \"Gatsby\",\n },\n {\n value: \"eleventy\",\n label: \"Eleventy\",\n },\n {\n value: \"solid\",\n label: \"SolidJS\",\n },\n {\n value: \"preact\",\n label: \"Preact\",\n },\n {\n value: \"qwik\",\n label: \"Qwik\",\n },\n {\n value: \"alpine\",\n label: \"Alpine.js\",\n },\n {\n value: \"lit\",\n label: \"Lit\",\n },\n]\n\nexport default function Component() {\n return (\n <div className=\"*:not-first:mt-2\">\n <Label>Multiselect with placeholder and clear</Label>\n <MultipleSelector\n commandProps={{\n label: \"Select frameworks\",\n }}\n defaultOptions={frameworks}\n placeholder=\"Select frameworks\"\n emptyIndicator={<p className=\"text-center text-sm\">No results found</p>}\n />\n <p\n className=\"mt-2 text-xs text-muted-foreground\"\n role=\"region\"\n aria-live=\"polite\"\n >\n Inspired by{\" \"}\n <a\n className=\"underline hover:text-foreground\"\n href=\"https://shadcnui-expansions.typeart.cc/docs/multiple-selector\"\n target=\"_blank\"\n rel=\"noopener nofollow\"\n >\n shadcn/ui expansions\n </a>\n </p>\n </div>\n )\n}\n",
|
|
13
|
+
"type": "registry:component"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"meta": {
|
|
17
|
+
"tags": [
|
|
18
|
+
"label",
|
|
19
|
+
"select",
|
|
20
|
+
"multiselect",
|
|
21
|
+
"tag",
|
|
22
|
+
"input",
|
|
23
|
+
"search",
|
|
24
|
+
"autocomplete",
|
|
25
|
+
"radix"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "comp-236",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"registryDependencies": [
|
|
6
|
+
"https://loveui.dev/building-blocks/r/label.json",
|
|
7
|
+
"https://loveui.dev/building-blocks/r/select-native.json"
|
|
8
|
+
],
|
|
9
|
+
"files": [
|
|
10
|
+
{
|
|
11
|
+
"path": "registry/default/components/comp-236.tsx",
|
|
12
|
+
"content": "import { useId } from \"react\"\n\nimport { Label } from \"@/registry/building-blocks/default/ui/label\"\nimport { SelectNative } from \"@/registry/building-blocks/default/ui/select-native\"\n\nexport default function Component() {\n const id = useId()\n return (\n <div className=\"*:not-first:mt-2\">\n <Label htmlFor={id}>Multiple select (native)</Label>\n <div className=\"overflow-hidden rounded-md border border-input\">\n <SelectNative id={id} multiple className=\"rounded-none border-none\">\n <option value=\"1\">React</option>\n <option value=\"2\">Next.js</option>\n <option value=\"3\">Astro</option>\n <option value=\"4\">Gatsby</option>\n <option value=\"5\">Vue</option>\n <option value=\"6\">Angular</option>\n </SelectNative>\n </div>\n </div>\n )\n}\n",
|
|
13
|
+
"type": "registry:component"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"meta": {
|
|
17
|
+
"tags": [
|
|
18
|
+
"label",
|
|
19
|
+
"select",
|
|
20
|
+
"multiselect",
|
|
21
|
+
"native select"
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
}
|