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
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
{
|
|
11
11
|
"path": "registry/default/examples/deck-product-cards.tsx",
|
|
12
|
-
"content": "\"use client\"\n\nimport Image from \"next/image\"\nimport { StarIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport {\n Deck,\n DeckCards,\n DeckEmpty,\n DeckItem,\n} from \"../../../../../packages/deck\"\nimport { Badge } from \"../../../../../packages/ui/src/ui/badge\"\n\nconst products = [\n {\n id: 1,\n name: \"Wireless Headphones\",\n price: \"$199\",\n rating: 4.5,\n image: \"https://placehold.co/400x300/ff6b6b/fff?text=Headphones\",\n category: \"Electronics\",\n description: \"Premium wireless headphones with noise cancellation\",\n },\n {\n id: 2,\n name: \"Smart Watch\",\n price: \"$299\",\n rating: 4.8,\n image: \"https://placehold.co/400x300/4ecdc4/fff?text=Watch\",\n category: \"Wearables\",\n description: \"Feature-rich smartwatch with health tracking\",\n },\n {\n id: 3,\n name: \"Coffee Maker\",\n price: \"$149\",\n rating: 4.3,\n image: \"https://placehold.co/400x300/45b7d1/fff?text=Coffee\",\n category: \"Kitchen\",\n description: \"Programmable coffee maker with built-in grinder\",\n },\n {\n id: 4,\n name: \"Laptop Stand\",\n price: \"$79\",\n rating: 4.6,\n image: \"https://placehold.co/400x300/96ceb4/fff?text=Stand\",\n category: \"Accessories\",\n description
|
|
12
|
+
"content": "\"use client\"\n\nimport Image from \"next/image\"\nimport { StarIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport {\n Deck,\n DeckCards,\n DeckEmpty,\n DeckItem,\n} from \"../../../../../packages/deck\"\nimport { Badge } from \"../../../../../packages/ui/src/ui/badge\"\n\nconst products = [\n {\n id: 1,\n name: \"Updated Wireless Headphones\",\n price: \"$199\",\n rating: 4.5,\n image: \"https://placehold.co/400x300/ff6b6b/fff?text=Headphones\",\n category: \"Electronics\",\n description: \"Updated Premium wireless headphones with noise cancellation\",\n },\n {\n id: 2,\n name: \"Updated Smart Watch\",\n price: \"$299\",\n rating: 4.8,\n image: \"https://placehold.co/400x300/4ecdc4/fff?text=Watch\",\n category: \"Wearables\",\n description: \"Updated Feature-rich smartwatch with health tracking\",\n },\n {\n id: 3,\n name: \"Updated Coffee Maker\",\n price: \"$149\",\n rating: 4.3,\n image: \"https://placehold.co/400x300/45b7d1/fff?text=Coffee\",\n category: \"Kitchen\",\n description: \"Updated Programmable coffee maker with built-in grinder\",\n },\n {\n id: 4,\n name: \"Updated Laptop Stand\",\n price: \"$79\",\n rating: 4.6,\n image: \"https://placehold.co/400x300/96ceb4/fff?text=Stand\",\n category: \"Accessories\",\n description:\n \"Updated Adjustable aluminum laptop stand for better ergonomics\",\n },\n]\n\nconst Example = () => (\n <div className=\"mx-auto w-80\">\n <Deck>\n <DeckCards className=\"aspect-[4/5]\" onSwipe={console.log}>\n {products.map((product) => (\n <DeckItem className=\"flex flex-col p-0\" key={product.id}>\n <div className=\"relative\">\n <Image\n alt={product.name}\n className=\"h-64 w-full rounded-t-lg object-cover\"\n draggable={false}\n height={300}\n src={product.image}\n unoptimized\n width={400}\n />\n <Badge className=\"absolute top-3 right-3\">\n {product.category}\n </Badge>\n </div>\n\n <div className=\"flex flex-1 flex-col p-4\">\n <div className=\"flex items-start justify-between\">\n <h3 className=\"text-lg font-semibold\">{product.name}</h3>\n <span className=\"text-lg font-bold text-primary\">\n {product.price}\n </span>\n </div>\n\n <div className=\"mt-1 flex items-center gap-1\">\n <div className=\"flex\">\n {[...new Array(5)].map((_, i) => (\n <StarIcon\n className={cn(\n \"h-4 w-4\",\n i < Math.floor(product.rating)\n ? \"fill-yellow-400 text-yellow-400\"\n : \"text-muted-foreground\"\n )}\n key={`star-${product.id}-${i}`}\n />\n ))}\n </div>\n <span className=\"text-sm text-muted-foreground\">\n ({product.rating})\n </span>\n </div>\n\n <p className=\"mt-2 flex-1 text-sm text-muted-foreground\">\n {product.description}\n </p>\n </div>\n </DeckItem>\n ))}\n </DeckCards>\n <DeckEmpty />\n </Deck>\n </div>\n)\n\nexport default Example\n",
|
|
13
13
|
"type": "registry:example"
|
|
14
14
|
}
|
|
15
15
|
],
|
package/public/r/deck.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"files": [
|
|
9
9
|
{
|
|
10
10
|
"path": "registry/default/examples/deck.tsx",
|
|
11
|
-
"content": "\"use client\"\n\nimport Image from \"next/image\"\n\nimport {\n Deck,\n DeckCards,\n DeckEmpty,\n DeckItem,\n} from \"../../../../../packages/deck\"\n\nconst images = [\n {\n id: 1,\n src: \"https://placehold.co/400x600/ff6b6b/fff?text=Card+1\",\n title: \"Card 1\",\n },\n {\n id: 2,\n src: \"https://placehold.co/400x600/4ecdc4/fff?text=Card+2\",\n title: \"Card 2\",\n },\n {\n id: 3,\n src: \"https://placehold.co/400x600/45b7d1/fff?text=Card+3\",\n title: \"Card 3\",\n },\n {\n id: 4,\n src: \"https://placehold.co/400x600/96ceb4/fff?text=Card+4\",\n title: \"Card 4\",\n },\n {\n id: 5,\n src: \"https://placehold.co/400x600/feca57/fff?text=Card+5\",\n title: \"Card 5\",\n },\n]\n\nconst Example = () => (\n <Deck className=\"size-full\">\n <DeckCards>\n {images.map((image) => (\n <DeckItem className=\"p-0\" key={image.id}>\n <Image\n alt={image.title}\n className=\"h-full w-full rounded-lg object-cover\"\n draggable={false}\n height={600}\n src={image.src}\n unoptimized\n width={400}\n />\n </DeckItem>\n ))}\n </DeckCards>\n <DeckEmpty />\n </Deck>\n)\n\nexport default Example\n",
|
|
11
|
+
"content": "\"use client\"\n\nimport Image from \"next/image\"\n\nimport {\n Deck,\n DeckCards,\n DeckEmpty,\n DeckItem,\n} from \"../../../../../packages/deck\"\n\nconst images = [\n {\n id: 1,\n src: \"https://placehold.co/400x600/ff6b6b/fff?text=Card+1\",\n title: \"Updated Card 1\",\n },\n {\n id: 2,\n src: \"https://placehold.co/400x600/4ecdc4/fff?text=Card+2\",\n title: \"Updated Card 2\",\n },\n {\n id: 3,\n src: \"https://placehold.co/400x600/45b7d1/fff?text=Card+3\",\n title: \"Updated Card 3\",\n },\n {\n id: 4,\n src: \"https://placehold.co/400x600/96ceb4/fff?text=Card+4\",\n title: \"Updated Card 4\",\n },\n {\n id: 5,\n src: \"https://placehold.co/400x600/feca57/fff?text=Card+5\",\n title: \"Updated Card 5\",\n },\n]\n\nconst Example = () => (\n <Deck className=\"size-full\">\n <DeckCards>\n {images.map((image) => (\n <DeckItem className=\"p-0\" key={image.id}>\n <Image\n alt={image.title}\n className=\"h-full w-full rounded-lg object-cover\"\n draggable={false}\n height={600}\n src={image.src}\n unoptimized\n width={400}\n />\n </DeckItem>\n ))}\n </DeckCards>\n <DeckEmpty />\n </Deck>\n)\n\nexport default Example\n",
|
|
12
12
|
"type": "registry:example"
|
|
13
13
|
}
|
|
14
14
|
],
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"files": [
|
|
14
14
|
{
|
|
15
15
|
"path": "registry/default/examples/dialog-close-confirmation.tsx",
|
|
16
|
-
"content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n AlertDialog,\n AlertDialogClose,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogPopup,\n AlertDialogTitle,\n} from \"@/registry/default/ui/alert-dialog\"\nimport { Button } from \"@/registry/default/ui/button\"\nimport {\n Dialog,\n DialogClose,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogPopup,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/default/ui/dialog\"\nimport { Field } from \"@/registry/default/ui/field\"\nimport { Form } from \"@/registry/default/ui/form\"\nimport { Textarea } from \"@/registry/default/ui/textarea\"\n\nexport default function DialogCloseConfirmationDemo() {\n const [dialogOpen, setDialogOpen] = React.useState(false)\n const [confirmOpen, setConfirmOpen] = React.useState(false)\n const [value, setValue] = React.useState(\"\")\n\n return (\n <Dialog\n open={dialogOpen}\n onOpenChange={(o) => {\n if (!o && value) {\n setConfirmOpen(true)\n } else {\n setDialogOpen(o)\n }\n }}\n >\n <DialogTrigger render={<Button variant=\"outline\" />}>\n Compose\n </DialogTrigger>\n <DialogPopup showCloseButton={false}>\n <DialogHeader>\n <DialogTitle>New message</DialogTitle>\n <DialogDescription
|
|
16
|
+
"content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n AlertDialog,\n AlertDialogClose,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogPopup,\n AlertDialogTitle,\n} from \"@/registry/default/ui/alert-dialog\"\nimport { Button } from \"@/registry/default/ui/button\"\nimport {\n Dialog,\n DialogClose,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogPopup,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/default/ui/dialog\"\nimport { Field } from \"@/registry/default/ui/field\"\nimport { Form } from \"@/registry/default/ui/form\"\nimport { Textarea } from \"@/registry/default/ui/textarea\"\n\nexport default function DialogCloseConfirmationDemo() {\n const [dialogOpen, setDialogOpen] = React.useState(false)\n const [confirmOpen, setConfirmOpen] = React.useState(false)\n const [value, setValue] = React.useState(\"\")\n\n return (\n <Dialog\n open={dialogOpen}\n onOpenChange={(o) => {\n if (!o && value) {\n setConfirmOpen(true)\n } else {\n setDialogOpen(o)\n }\n }}\n >\n <DialogTrigger render={<Button variant=\"outline\" />}>\n Updated Compose\n </DialogTrigger>\n <DialogPopup showCloseButton={false}>\n <DialogHeader>\n <DialogTitle>Updated New message</DialogTitle>\n <DialogDescription>\n Updated Type something and try closing.\n </DialogDescription>\n </DialogHeader>\n <Form\n onSubmit={(event) => {\n event.preventDefault()\n // Close the dialog when submitting\n setDialogOpen(false)\n }}\n >\n <Field>\n <Textarea\n value={value}\n onChange={(e) => setValue(e.target.value)}\n />\n </Field>\n <DialogFooter>\n <DialogClose render={<Button variant=\"ghost\" />}>\n Updated Cancel\n </DialogClose>\n <Button\n onClick={() => {\n setValue(\"\")\n setDialogOpen(false)\n }}\n >\n Updated Send\n </Button>\n </DialogFooter>\n </Form>\n </DialogPopup>\n\n {/* Confirmation dialog */}\n <AlertDialog open={confirmOpen} onOpenChange={setConfirmOpen}>\n <AlertDialogPopup>\n <AlertDialogHeader>\n <AlertDialogTitle>Updated Discard changes?</AlertDialogTitle>\n <AlertDialogDescription>\n Updated Your message will be lost.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogClose render={<Button variant=\"ghost\" />}>\n Updated Go back\n </AlertDialogClose>\n <Button\n onClick={() => {\n setConfirmOpen(false)\n setValue(\"\")\n setDialogOpen(false)\n }}\n >\n Updated Discard\n </Button>\n </AlertDialogFooter>\n </AlertDialogPopup>\n </AlertDialog>\n </Dialog>\n )\n}\n",
|
|
17
17
|
"type": "registry:example"
|
|
18
18
|
}
|
|
19
19
|
],
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"files": [
|
|
12
12
|
{
|
|
13
13
|
"path": "registry/default/examples/dialog-demo.tsx",
|
|
14
|
-
"content": "import { Button } from \"@/registry/default/ui/button\"\nimport {\n Dialog,\n DialogClose,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogPopup,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/default/ui/dialog\"\nimport { Field, FieldControl, FieldLabel } from \"@/registry/default/ui/field\"\nimport { Form } from \"@/registry/default/ui/form\"\n\nexport default function DialogDemo() {\n return (\n <Dialog>\n <DialogTrigger render={<Button variant=\"outline\" />}>\n Open Dialog\n </DialogTrigger>\n <DialogPopup className=\"sm:max-w-sm\">\n <Form>\n <DialogHeader>\n <DialogTitle>Edit profile</DialogTitle>\n <DialogDescription>\n Make changes to your profile here. Click save when
|
|
14
|
+
"content": "import { Button } from \"@/registry/default/ui/button\"\nimport {\n Dialog,\n DialogClose,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogPopup,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/default/ui/dialog\"\nimport { Field, FieldControl, FieldLabel } from \"@/registry/default/ui/field\"\nimport { Form } from \"@/registry/default/ui/form\"\n\nexport default function DialogDemo() {\n return (\n <Dialog>\n <DialogTrigger render={<Button variant=\"outline\" />}>\n Updated Open Dialog\n </DialogTrigger>\n <DialogPopup className=\"sm:max-w-sm\">\n <Form>\n <DialogHeader>\n <DialogTitle>Updated Edit profile</DialogTitle>\n <DialogDescription>\n Updated Make changes to your profile here. Click save when\n you're done.\n </DialogDescription>\n </DialogHeader>\n <div className=\"flex flex-col gap-4\">\n <Field>\n <FieldLabel>Updated Name</FieldLabel>\n <FieldControl type=\"text\" defaultValue=\"Connor Love\" />\n </Field>\n <Field>\n <FieldLabel>Updated Username</FieldLabel>\n <FieldControl type=\"text\" defaultValue=\"@loveconnor\" />\n </Field>\n </div>\n <DialogFooter>\n <DialogClose render={<Button variant=\"ghost\" />}>\n Updated Cancel\n </DialogClose>\n <Button type=\"submit\">Updated Save</Button>\n </DialogFooter>\n </Form>\n </DialogPopup>\n </Dialog>\n )\n}\n",
|
|
15
15
|
"type": "registry:example"
|
|
16
16
|
}
|
|
17
17
|
],
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"files": [
|
|
11
11
|
{
|
|
12
12
|
"path": "registry/default/examples/dialog-from-menu.tsx",
|
|
13
|
-
"content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/registry/default/ui/button\"\nimport {\n Dialog,\n DialogClose,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogPopup,\n DialogTitle,\n} from \"@/registry/default/ui/dialog\"\nimport {\n Menu,\n MenuItem,\n MenuPopup,\n MenuTrigger,\n} from \"@/registry/default/ui/menu\"\n\nexport default function DialogFromMenuDemo() {\n const [dialogOpen, setDialogOpen] = React.useState(false)\n return (\n <>\n <Menu>\n <MenuTrigger render={<Button variant=\"outline\" />}>\n Open menu\n </MenuTrigger>\n <MenuPopup align=\"start\">\n <MenuItem onClick={() => setDialogOpen(true)}
|
|
13
|
+
"content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/registry/default/ui/button\"\nimport {\n Dialog,\n DialogClose,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogPopup,\n DialogTitle,\n} from \"@/registry/default/ui/dialog\"\nimport {\n Menu,\n MenuItem,\n MenuPopup,\n MenuTrigger,\n} from \"@/registry/default/ui/menu\"\n\nexport default function DialogFromMenuDemo() {\n const [dialogOpen, setDialogOpen] = React.useState(false)\n return (\n <>\n <Menu>\n <MenuTrigger render={<Button variant=\"outline\" />}>\n Updated Open menu\n </MenuTrigger>\n <MenuPopup align=\"start\">\n <MenuItem onClick={() => setDialogOpen(true)}>\n Updated Open dialog\n </MenuItem>\n </MenuPopup>\n </Menu>\n <Dialog open={dialogOpen} onOpenChange={setDialogOpen}>\n <DialogPopup>\n <DialogHeader>\n <DialogTitle>Updated Settings</DialogTitle>\n <DialogDescription>\n Updated Change your preferences\n </DialogDescription>\n </DialogHeader>\n <DialogFooter>\n <DialogClose render={<Button variant=\"ghost\" />}>\n Updated Close\n </DialogClose>\n </DialogFooter>\n </DialogPopup>\n </Dialog>\n </>\n )\n}\n",
|
|
14
14
|
"type": "registry:example"
|
|
15
15
|
}
|
|
16
16
|
],
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"files": [
|
|
11
11
|
{
|
|
12
12
|
"path": "registry/default/examples/dialog-nested.tsx",
|
|
13
|
-
"content": "import { Button } from \"@/registry/default/ui/button\"\nimport {\n Dialog,\n DialogClose,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogPopup,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/default/ui/dialog\"\nimport { Field, FieldControl, FieldLabel } from \"@/registry/default/ui/field\"\n\nexport default function DialogNestedDemo() {\n return (\n <Dialog>\n <DialogTrigger render={<Button variant=\"outline\" />}>\n Open parent\n </DialogTrigger>\n <DialogPopup showCloseButton={false}>\n <DialogHeader>\n <DialogTitle>Manage team member</DialogTitle>\n <DialogDescription>\n View and manage a user in your team.\n </DialogDescription>\n </DialogHeader>\n <div className=\"grid gap-4\">\n <div className=\"grid gap-1\">\n <p className=\"text-sm text-muted-foreground\">Name</p>\n <p className=\"text-sm font-medium\">Connor Love</p>\n </div>\n <div className=\"grid gap-1\">\n <p className=\"text-sm text-muted-foreground\">Email</p>\n <p className=\"text-sm font-medium\">clove@loveui.dev</p>\n </div>\n </div>\n <DialogFooter>\n <Dialog>\n <DialogTrigger render={<Button variant=\"outline\" />}>\n Edit details\n </DialogTrigger>\n <DialogPopup showCloseButton={false}>\n <DialogHeader>\n <DialogTitle>Edit details</DialogTitle>\n <DialogDescription>\n Make changes to the member's information.\n </DialogDescription>\n </DialogHeader>\n <div className=\"flex flex-col gap-4\">\n <Field>\n <FieldLabel>Name</FieldLabel>\n <FieldControl type=\"text\" defaultValue=\"Connor Love\" />\n </Field>\n <Field>\n <FieldLabel>Email</FieldLabel>\n <FieldControl type=\"text\" defaultValue=\"clove@loveui.dev\" />\n </Field>\n </div>\n <DialogFooter>\n <DialogClose render={<Button variant=\"ghost\" />}>\n Cancel\n </DialogClose>\n <Button type=\"submit\">Save changes</Button>\n </DialogFooter>\n </DialogPopup>\n </Dialog>\n </DialogFooter>\n </DialogPopup>\n </Dialog>\n )\n}\n",
|
|
13
|
+
"content": "import { Button } from \"@/registry/default/ui/button\"\nimport {\n Dialog,\n DialogClose,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogPopup,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/default/ui/dialog\"\nimport { Field, FieldControl, FieldLabel } from \"@/registry/default/ui/field\"\n\nexport default function DialogNestedDemo() {\n return (\n <Dialog>\n <DialogTrigger render={<Button variant=\"outline\" />}>\n Updated Open parent\n </DialogTrigger>\n <DialogPopup showCloseButton={false}>\n <DialogHeader>\n <DialogTitle>Updated Manage team member</DialogTitle>\n <DialogDescription>\n Updated View and manage a user in your team.\n </DialogDescription>\n </DialogHeader>\n <div className=\"grid gap-4\">\n <div className=\"grid gap-1\">\n <p className=\"text-sm text-muted-foreground\">Updated Name</p>\n <p className=\"text-sm font-medium\">Updated Connor Love</p>\n </div>\n <div className=\"grid gap-1\">\n <p className=\"text-sm text-muted-foreground\">Updated Email</p>\n <p className=\"text-sm font-medium\">clove@loveui.dev</p>\n </div>\n </div>\n <DialogFooter>\n <Dialog>\n <DialogTrigger render={<Button variant=\"outline\" />}>\n Updated Edit details\n </DialogTrigger>\n <DialogPopup showCloseButton={false}>\n <DialogHeader>\n <DialogTitle>Updated Edit details</DialogTitle>\n <DialogDescription>\n Updated Make changes to the member's information.\n </DialogDescription>\n </DialogHeader>\n <div className=\"flex flex-col gap-4\">\n <Field>\n <FieldLabel>Updated Name</FieldLabel>\n <FieldControl type=\"text\" defaultValue=\"Connor Love\" />\n </Field>\n <Field>\n <FieldLabel>Updated Email</FieldLabel>\n <FieldControl type=\"text\" defaultValue=\"clove@loveui.dev\" />\n </Field>\n </div>\n <DialogFooter>\n <DialogClose render={<Button variant=\"ghost\" />}>\n Updated Cancel\n </DialogClose>\n <Button type=\"submit\">Updated Save changes</Button>\n </DialogFooter>\n </DialogPopup>\n </Dialog>\n </DialogFooter>\n </DialogPopup>\n </Dialog>\n )\n}\n",
|
|
14
14
|
"type": "registry:example"
|
|
15
15
|
}
|
|
16
16
|
],
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
{
|
|
11
11
|
"path": "registry/default/examples/dialog-stack-controlled.tsx",
|
|
12
|
-
"content": "\"use client\"\n\nimport { useState } from \"react\"\n\nimport {\n DialogStack,\n DialogStackBody,\n DialogStackContent,\n DialogStackDescription,\n DialogStackFooter,\n DialogStackHeader,\n DialogStackNext,\n DialogStackOverlay,\n DialogStackPrevious,\n DialogStackTitle,\n} from \"../../../../../packages/dialog-stack\"\nimport { Button } from \"../../../../../packages/ui/src/ui/button\"\n\nconst Example = () => {\n const [open, setOpen] = useState(false)\n\n return (\n <>\n <Button onClick={() => setOpen(!open)} variant=\"outline\">\n Toggle Dialog\n </Button>\n\n <DialogStack onOpenChange={setOpen} open={open}>\n <DialogStackOverlay />\n <DialogStackBody>\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>I'm the first dialog</DialogStackTitle>\n <DialogStackDescription>\n With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-end\">\n <DialogStackNext asChild>\n <Button variant=\"outline\">Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>I'm the second dialog</DialogStackTitle>\n <DialogStackDescription>\n With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Previous</Button>\n </DialogStackPrevious>\n <DialogStackNext asChild>\n <Button variant=\"outline\">Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>I'm the third dialog</DialogStackTitle>\n <DialogStackDescription>\n With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Previous</Button>\n </DialogStackPrevious>\n </DialogStackFooter>\n </DialogStackContent>\n </DialogStackBody>\n </DialogStack>\n </>\n )\n}\n\nexport default Example\n",
|
|
12
|
+
"content": "\"use client\"\n\nimport { useState } from \"react\"\n\nimport {\n DialogStack,\n DialogStackBody,\n DialogStackContent,\n DialogStackDescription,\n DialogStackFooter,\n DialogStackHeader,\n DialogStackNext,\n DialogStackOverlay,\n DialogStackPrevious,\n DialogStackTitle,\n} from \"../../../../../packages/dialog-stack\"\nimport { Button } from \"../../../../../packages/ui/src/ui/button\"\n\nconst Example = () => {\n const [open, setOpen] = useState(false)\n\n return (\n <>\n <Button onClick={() => setOpen(!open)} variant=\"outline\">\n Updated Toggle Dialog\n </Button>\n\n <DialogStack onOpenChange={setOpen} open={open}>\n <DialogStackOverlay />\n <DialogStackBody>\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>Updated I'm the first dialog</DialogStackTitle>\n <DialogStackDescription>\n Updated With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-end\">\n <DialogStackNext asChild>\n <Button variant=\"outline\">Updated Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>Updated I'm the second dialog</DialogStackTitle>\n <DialogStackDescription>\n Updated With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Updated Previous</Button>\n </DialogStackPrevious>\n <DialogStackNext asChild>\n <Button variant=\"outline\">Updated Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>Updated I'm the third dialog</DialogStackTitle>\n <DialogStackDescription>\n Updated With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Updated Previous</Button>\n </DialogStackPrevious>\n </DialogStackFooter>\n </DialogStackContent>\n </DialogStackBody>\n </DialogStack>\n </>\n )\n}\n\nexport default Example\n",
|
|
13
13
|
"type": "registry:example"
|
|
14
14
|
}
|
|
15
15
|
],
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
{
|
|
11
11
|
"path": "registry/default/examples/dialog-stack-navigation.tsx",
|
|
12
|
-
"content": "\"use client\"\n\nimport {\n DialogStack,\n DialogStackBody,\n DialogStackContent,\n DialogStackDescription,\n DialogStackFooter,\n DialogStackHeader,\n DialogStackNext,\n DialogStackOverlay,\n DialogStackPrevious,\n DialogStackTitle,\n DialogStackTrigger,\n} from \"../../../../../packages/dialog-stack\"\nimport { Button } from \"../../../../../packages/ui/src/ui/button\"\n\nconst Example = () => (\n <DialogStack clickable>\n <DialogStackTrigger asChild>\n <Button variant=\"outline\">Show me</Button>\n </DialogStackTrigger>\n <DialogStackOverlay />\n\n <DialogStackBody>\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>I'm the first dialog</DialogStackTitle>\n <DialogStackDescription>\n With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-end\">\n <DialogStackNext asChild>\n <Button variant=\"outline\">Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>I'm the second dialog</DialogStackTitle>\n <DialogStackDescription>\n With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Previous</Button>\n </DialogStackPrevious>\n <DialogStackNext asChild>\n <Button variant=\"outline\">Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>I'm the third dialog</DialogStackTitle>\n <DialogStackDescription>\n With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Previous</Button>\n </DialogStackPrevious>\n </DialogStackFooter>\n </DialogStackContent>\n </DialogStackBody>\n </DialogStack>\n)\n\nexport default Example\n",
|
|
12
|
+
"content": "\"use client\"\n\nimport {\n DialogStack,\n DialogStackBody,\n DialogStackContent,\n DialogStackDescription,\n DialogStackFooter,\n DialogStackHeader,\n DialogStackNext,\n DialogStackOverlay,\n DialogStackPrevious,\n DialogStackTitle,\n DialogStackTrigger,\n} from \"../../../../../packages/dialog-stack\"\nimport { Button } from \"../../../../../packages/ui/src/ui/button\"\n\nconst Example = () => (\n <DialogStack clickable>\n <DialogStackTrigger asChild>\n <Button variant=\"outline\">Updated Show me</Button>\n </DialogStackTrigger>\n <DialogStackOverlay />\n\n <DialogStackBody>\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>Updated I'm the first dialog</DialogStackTitle>\n <DialogStackDescription>\n Updated With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-end\">\n <DialogStackNext asChild>\n <Button variant=\"outline\">Updated Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>Updated I'm the second dialog</DialogStackTitle>\n <DialogStackDescription>\n Updated With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Updated Previous</Button>\n </DialogStackPrevious>\n <DialogStackNext asChild>\n <Button variant=\"outline\">Updated Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>Updated I'm the third dialog</DialogStackTitle>\n <DialogStackDescription>\n Updated With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Updated Previous</Button>\n </DialogStackPrevious>\n </DialogStackFooter>\n </DialogStackContent>\n </DialogStackBody>\n </DialogStack>\n)\n\nexport default Example\n",
|
|
13
13
|
"type": "registry:example"
|
|
14
14
|
}
|
|
15
15
|
],
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
{
|
|
11
11
|
"path": "registry/default/examples/dialog-stack-six.tsx",
|
|
12
|
-
"content": "\"use client\"\n\nimport {\n DialogStack,\n DialogStackBody,\n DialogStackContent,\n DialogStackDescription,\n DialogStackFooter,\n DialogStackHeader,\n DialogStackNext,\n DialogStackOverlay,\n DialogStackPrevious,\n DialogStackTitle,\n DialogStackTrigger,\n} from \"../../../../../packages/dialog-stack\"\nimport { Button } from \"../../../../../packages/ui/src/ui/button\"\n\nconst Example = () => (\n <DialogStack>\n <DialogStackTrigger asChild>\n <Button variant=\"outline\">Show me</Button>\n </DialogStackTrigger>\n <DialogStackOverlay />\n\n <DialogStackBody>\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>I'm the first dialog</DialogStackTitle>\n <DialogStackDescription>\n With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-end\">\n <DialogStackNext asChild>\n <Button variant=\"outline\">Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>I'm the second dialog</DialogStackTitle>\n <DialogStackDescription>\n With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Previous</Button>\n </DialogStackPrevious>\n <DialogStackNext asChild>\n <Button variant=\"outline\">Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>I'm the third dialog</DialogStackTitle>\n <DialogStackDescription>\n With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Previous</Button>\n </DialogStackPrevious>\n <DialogStackNext asChild>\n <Button variant=\"outline\">Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>I'm the fourth dialog</DialogStackTitle>\n <DialogStackDescription>\n With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Previous</Button>\n </DialogStackPrevious>\n <DialogStackNext asChild>\n <Button variant=\"outline\">Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>I'm the fifth dialog</DialogStackTitle>\n <DialogStackDescription>\n With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Previous</Button>\n </DialogStackPrevious>\n <DialogStackNext asChild>\n <Button variant=\"outline\">Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>I'm the sixth dialog</DialogStackTitle>\n <DialogStackDescription>\n With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-start\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Previous</Button>\n </DialogStackPrevious>\n </DialogStackFooter>\n </DialogStackContent>\n </DialogStackBody>\n </DialogStack>\n)\n\nexport default Example\n",
|
|
12
|
+
"content": "\"use client\"\n\nimport {\n DialogStack,\n DialogStackBody,\n DialogStackContent,\n DialogStackDescription,\n DialogStackFooter,\n DialogStackHeader,\n DialogStackNext,\n DialogStackOverlay,\n DialogStackPrevious,\n DialogStackTitle,\n DialogStackTrigger,\n} from \"../../../../../packages/dialog-stack\"\nimport { Button } from \"../../../../../packages/ui/src/ui/button\"\n\nconst Example = () => (\n <DialogStack>\n <DialogStackTrigger asChild>\n <Button variant=\"outline\">Updated Show me</Button>\n </DialogStackTrigger>\n <DialogStackOverlay />\n\n <DialogStackBody>\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>Updated I'm the first dialog</DialogStackTitle>\n <DialogStackDescription>\n Updated With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-end\">\n <DialogStackNext asChild>\n <Button variant=\"outline\">Updated Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>Updated I'm the second dialog</DialogStackTitle>\n <DialogStackDescription>\n Updated With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Updated Previous</Button>\n </DialogStackPrevious>\n <DialogStackNext asChild>\n <Button variant=\"outline\">Updated Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>Updated I'm the third dialog</DialogStackTitle>\n <DialogStackDescription>\n Updated With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Updated Previous</Button>\n </DialogStackPrevious>\n <DialogStackNext asChild>\n <Button variant=\"outline\">Updated Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>Updated I'm the fourth dialog</DialogStackTitle>\n <DialogStackDescription>\n Updated With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Updated Previous</Button>\n </DialogStackPrevious>\n <DialogStackNext asChild>\n <Button variant=\"outline\">Updated Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>Updated I'm the fifth dialog</DialogStackTitle>\n <DialogStackDescription>\n Updated With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Updated Previous</Button>\n </DialogStackPrevious>\n <DialogStackNext asChild>\n <Button variant=\"outline\">Updated Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>Updated I'm the sixth dialog</DialogStackTitle>\n <DialogStackDescription>\n Updated With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-start\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Updated Previous</Button>\n </DialogStackPrevious>\n </DialogStackFooter>\n </DialogStackContent>\n </DialogStackBody>\n </DialogStack>\n)\n\nexport default Example\n",
|
|
13
13
|
"type": "registry:example"
|
|
14
14
|
}
|
|
15
15
|
],
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
{
|
|
11
11
|
"path": "registry/default/examples/dialog-stack.tsx",
|
|
12
|
-
"content": "\"use client\"\n\nimport {\n DialogStack,\n DialogStackBody,\n DialogStackContent,\n DialogStackDescription,\n DialogStackFooter,\n DialogStackHeader,\n DialogStackNext,\n DialogStackOverlay,\n DialogStackPrevious,\n DialogStackTitle,\n DialogStackTrigger,\n} from \"../../../../../packages/dialog-stack\"\nimport { Button } from \"../../../../../packages/ui/src/ui/button\"\n\nconst Example = () => (\n <DialogStack>\n <DialogStackTrigger asChild>\n <Button variant=\"outline\">Show me</Button>\n </DialogStackTrigger>\n <DialogStackOverlay />\n\n <DialogStackBody>\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>I'm the first dialog</DialogStackTitle>\n <DialogStackDescription>\n With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-end\">\n <DialogStackNext asChild>\n <Button variant=\"outline\">Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>I'm the second dialog</DialogStackTitle>\n <DialogStackDescription>\n With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Previous</Button>\n </DialogStackPrevious>\n <DialogStackNext asChild>\n <Button variant=\"outline\">Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>I'm the third dialog</DialogStackTitle>\n <DialogStackDescription>\n With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Previous</Button>\n </DialogStackPrevious>\n </DialogStackFooter>\n </DialogStackContent>\n </DialogStackBody>\n </DialogStack>\n)\n\nexport default Example\n",
|
|
12
|
+
"content": "\"use client\"\n\nimport {\n DialogStack,\n DialogStackBody,\n DialogStackContent,\n DialogStackDescription,\n DialogStackFooter,\n DialogStackHeader,\n DialogStackNext,\n DialogStackOverlay,\n DialogStackPrevious,\n DialogStackTitle,\n DialogStackTrigger,\n} from \"../../../../../packages/dialog-stack\"\nimport { Button } from \"../../../../../packages/ui/src/ui/button\"\n\nconst Example = () => (\n <DialogStack>\n <DialogStackTrigger asChild>\n <Button variant=\"outline\">Updated Show me</Button>\n </DialogStackTrigger>\n <DialogStackOverlay />\n\n <DialogStackBody>\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>Updated I'm the first dialog</DialogStackTitle>\n <DialogStackDescription>\n Updated With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-end\">\n <DialogStackNext asChild>\n <Button variant=\"outline\">Updated Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>Updated I'm the second dialog</DialogStackTitle>\n <DialogStackDescription>\n Updated With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Updated Previous</Button>\n </DialogStackPrevious>\n <DialogStackNext asChild>\n <Button variant=\"outline\">Updated Next</Button>\n </DialogStackNext>\n </DialogStackFooter>\n </DialogStackContent>\n\n <DialogStackContent>\n <DialogStackHeader>\n <DialogStackTitle>Updated I'm the third dialog</DialogStackTitle>\n <DialogStackDescription>\n Updated With a fancy description\n </DialogStackDescription>\n </DialogStackHeader>\n <DialogStackFooter className=\"justify-between\">\n <DialogStackPrevious asChild>\n <Button variant=\"outline\">Updated Previous</Button>\n </DialogStackPrevious>\n </DialogStackFooter>\n </DialogStackContent>\n </DialogStackBody>\n </DialogStack>\n)\n\nexport default Example\n",
|
|
13
13
|
"type": "registry:example"
|
|
14
14
|
}
|
|
15
15
|
],
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "dropdown-menu",
|
|
4
|
+
"type": "registry:ui",
|
|
5
|
+
"dependencies": [
|
|
6
|
+
"radix-ui"
|
|
7
|
+
],
|
|
8
|
+
"files": [
|
|
9
|
+
{
|
|
10
|
+
"path": "registry/default/ui/dropdown-menu.tsx",
|
|
11
|
+
"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/default/lib/utils\"\n\ntype PointerDownEvent = Parameters<\n NonNullable<DropdownMenuPrimitive.DropdownMenuContentProps[\"onPointerDown\"]>\n>[0]\ntype PointerDownOutsideEvent = Parameters<\n NonNullable<\n DropdownMenuPrimitive.DropdownMenuContentProps[\"onPointerDownOutside\"]\n >\n>[0]\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n onPointerDown,\n onPointerDownOutside,\n onCloseAutoFocus,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n const isCloseFromMouse = React.useRef<boolean>(false)\n\n const handlePointerDown = React.useCallback(\n (e: PointerDownEvent) => {\n isCloseFromMouse.current = true\n onPointerDown?.(e)\n },\n [onPointerDown]\n )\n\n const handlePointerDownOutside = React.useCallback(\n (e: PointerDownOutsideEvent) => {\n isCloseFromMouse.current = true\n onPointerDownOutside?.(e)\n },\n [onPointerDownOutside]\n )\n\n const handleCloseAutoFocus = React.useCallback(\n (e: Event) => {\n if (onCloseAutoFocus) {\n return onCloseAutoFocus(e)\n }\n\n if (!isCloseFromMouse.current) {\n return\n }\n\n e.preventDefault()\n isCloseFromMouse.current = false\n },\n [onCloseAutoFocus]\n )\n\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-40 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\n onPointerDown={handlePointerDown}\n onPointerDownOutside={handlePointerDownOutside}\n onCloseAutoFocus={handleCloseAutoFocus}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive-foreground data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive-foreground dark:data-[variant=destructive]:focus:bg-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 data-[variant=destructive]:*:[svg]:!text-destructive-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon size={16} />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-xs font-medium text-muted-foreground data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <kbd\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"ms-auto -me-1 inline-flex h-5 max-h-full items-center rounded border bg-background px-1 font-[inherit] text-[0.625rem] font-medium text-muted-foreground/70\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon\n size={16}\n className=\"ml-auto text-muted-foreground/80\"\n />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"z-50 min-w-40 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n}\n",
|
|
12
|
+
"type": "registry:ui"
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"files": [
|
|
9
9
|
{
|
|
10
10
|
"path": "registry/default/examples/dropzone-custom-empty-state.tsx",
|
|
11
|
-
"content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { UploadIcon } from \"lucide-react\"\n\nimport {\n Dropzone,\n DropzoneContent,\n DropzoneEmptyState,\n} from \"../../../../../packages/dropzone\"\n\nconst Example = () => {\n const [files, setFiles] = useState<File[] | undefined>()\n\n const handleDrop = (files: File[]) => {\n console.log(files)\n setFiles(files)\n }\n\n return (\n <Dropzone onDrop={handleDrop} onError={console.error} src={files}>\n <DropzoneEmptyState>\n <div className=\"flex w-full items-center gap-4 p-8\">\n <div className=\"flex size-16 items-center justify-center rounded-lg bg-muted text-muted-foreground\">\n <UploadIcon size={24} />\n </div>\n <div className=\"text-left\">\n <p className=\"text-sm font-medium\">Upload a file</p>\n <p className=\"text-xs text-muted-foreground\">\n Drag and drop or click to upload\n </p>\n </div>\n </div>\n </DropzoneEmptyState>\n <DropzoneContent />\n </Dropzone>\n )\n}\n\nexport default Example\n",
|
|
11
|
+
"content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { UploadIcon } from \"lucide-react\"\n\nimport {\n Dropzone,\n DropzoneContent,\n DropzoneEmptyState,\n} from \"../../../../../packages/dropzone\"\n\nconst Example = () => {\n const [files, setFiles] = useState<File[] | undefined>()\n\n const handleDrop = (files: File[]) => {\n console.log(files)\n setFiles(files)\n }\n\n return (\n <Dropzone onDrop={handleDrop} onError={console.error} src={files}>\n <DropzoneEmptyState>\n <div className=\"flex w-full items-center gap-4 p-8\">\n <div className=\"flex size-16 items-center justify-center rounded-lg bg-muted text-muted-foreground\">\n <UploadIcon size={24} />\n </div>\n <div className=\"text-left\">\n <p className=\"text-sm font-medium\">Updated Upload a file</p>\n <p className=\"text-xs text-muted-foreground\">\n Updated Drag and drop or click to upload\n </p>\n </div>\n </div>\n </DropzoneEmptyState>\n <DropzoneContent />\n </Dropzone>\n )\n}\n\nexport default Example\n",
|
|
12
12
|
"type": "registry:example"
|
|
13
13
|
}
|
|
14
14
|
],
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"files": [
|
|
9
9
|
{
|
|
10
10
|
"path": "registry/default/examples/dropzone-image-preview.tsx",
|
|
11
|
-
"content": "\"use client\"\n\nimport { useState } from \"react\"\n\nimport {\n Dropzone,\n DropzoneContent,\n DropzoneEmptyState,\n} from \"../../../../../packages/dropzone\"\n\nconst Example = () => {\n const [files, setFiles] = useState<File[] | undefined>()\n const [filePreview, setFilePreview] = useState<string | undefined>()\n\n const handleDrop = (files: File[]) => {\n console.log(files)\n setFiles(files)\n\n if (files.length > 0) {\n const reader = new FileReader()\n reader.onload = (e) => {\n if (typeof e.target?.result === \"string\") {\n setFilePreview(e.target?.result)\n }\n }\n reader.readAsDataURL(files[0])\n }\n }\n\n return (\n <Dropzone\n accept={{ \"image/*\": [\".png\", \".jpg\", \".jpeg\"] }}\n onDrop={handleDrop}\n onError={console.error}\n src={files}\n >\n <DropzoneEmptyState />\n <DropzoneContent>\n {filePreview && (\n <div className=\"h-[102px] w-full\">\n <img\n alt=\"Preview\"\n className=\"absolute top-0 left-0 h-full w-full object-cover\"\n src={filePreview}\n />\n </div>\n )}\n </DropzoneContent>\n </Dropzone>\n )\n}\n\nexport default Example\n",
|
|
11
|
+
"content": "\"use client\"\n\nimport { useState } from \"react\"\n\nimport {\n Dropzone,\n DropzoneContent,\n DropzoneEmptyState,\n} from \"../../../../../packages/dropzone\"\n\nconst Example = () => {\n const [files, setFiles] = useState<File[] | undefined>()\n const [filePreview, setFilePreview] = useState<string | undefined>()\n\n const handleDrop = (files: File[]) => {\n console.log(files)\n setFiles(files)\n\n if (files.length > 0) {\n const reader = new FileReader()\n reader.onload = (e) => {\n if (typeof e.target?.result === \"string\") {\n setFilePreview(e.target?.result)\n }\n }\n reader.readAsDataURL(files[0])\n }\n }\n\n return (\n <Dropzone\n accept={{ \"image/*\": [\".png\", \".jpg\", \".jpeg\"] }}\n onDrop={handleDrop}\n onError={console.error}\n src={files}\n >\n <DropzoneEmptyState />\n <DropzoneContent>\n {filePreview && (\n <div className=\"h-[102px] w-full\">\n <img\n alt=\"Updated Preview\"\n className=\"absolute top-0 left-0 h-full w-full object-cover\"\n src={filePreview}\n />\n </div>\n )}\n </DropzoneContent>\n </Dropzone>\n )\n}\n\nexport default Example\n",
|
|
12
12
|
"type": "registry:example"
|
|
13
13
|
}
|
|
14
14
|
],
|
package/public/r/editor.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
{
|
|
11
11
|
"path": "registry/default/examples/editor.tsx",
|
|
12
|
-
"content": "\"use client\"\n\nimport { useState } from \"react\"\n\nimport type { Editor, JSONContent } from \"../../../../../packages/editor\"\nimport {\n EditorBubbleMenu,\n EditorCharacterCount,\n EditorClearFormatting,\n EditorFloatingMenu,\n EditorFormatBold,\n EditorFormatCode,\n EditorFormatItalic,\n EditorFormatStrike,\n EditorFormatSubscript,\n EditorFormatSuperscript,\n EditorFormatUnderline,\n EditorLinkSelector,\n EditorNodeBulletList,\n EditorNodeCode,\n EditorNodeHeading1,\n EditorNodeHeading2,\n EditorNodeHeading3,\n EditorNodeOrderedList,\n EditorNodeQuote,\n EditorNodeTable,\n EditorNodeTaskList,\n EditorNodeText,\n EditorProvider,\n EditorSelector,\n EditorTableColumnAfter,\n EditorTableColumnBefore,\n EditorTableColumnDelete,\n EditorTableColumnMenu,\n EditorTableDelete,\n EditorTableFix,\n EditorTableGlobalMenu,\n EditorTableHeaderColumnToggle,\n EditorTableHeaderRowToggle,\n EditorTableMenu,\n EditorTableMergeCells,\n EditorTableRowAfter,\n EditorTableRowBefore,\n EditorTableRowDelete,\n EditorTableRowMenu,\n EditorTableSplitCell,\n} from \"../../../../../packages/editor\"\n\nconst Example = () => {\n const [content, setContent] = useState<JSONContent>({\n type: \"doc\",\n content: [\n {\n type: \"heading\",\n attrs: { level: 1 },\n content: [{ type: \"text\", text: \"Heading 1\" }],\n },\n {\n type: \"heading\",\n attrs: { level: 2 },\n content: [{ type: \"text\", text: \"Heading 2\" }],\n },\n {\n type: \"heading\",\n attrs: { level: 3 },\n content: [{ type: \"text\", text: \"Heading 3\" }],\n },\n {\n type: \"heading\",\n attrs: { level: 4 },\n content: [{ type: \"text\", text: \"Heading 4\" }],\n },\n {\n type: \"heading\",\n attrs: { level: 5 },\n content: [{ type: \"text\", text: \"Heading 5\" }],\n },\n {\n type: \"heading\",\n attrs: { level: 6 },\n content: [{ type: \"text\", text: \"Heading 6\" }],\n },\n { type: \"paragraph\" },\n { type: \"paragraph\", content: [{ type: \"text\", text: \"Hello, world.\" }] },\n { type: \"paragraph\" },\n {\n type: \"taskList\",\n content: [\n {\n type: \"taskItem\",\n attrs: { checked: false },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"This is a todo list\" }],\n },\n ],\n },\n {\n type: \"taskItem\",\n attrs: { checked: false },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"With two items\" }],\n },\n ],\n },\n ],\n },\n { type: \"paragraph\" },\n {\n type: \"bulletList\",\n content: [\n {\n type: \"listItem\",\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"This is an unordered list\" }],\n },\n {\n type: \"bulletList\",\n content: [\n {\n type: \"listItem\",\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"With a nested item\" }],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n { type: \"paragraph\" },\n {\n type: \"orderedList\",\n attrs: { start: 1 },\n content: [\n {\n type: \"listItem\",\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"This is an ordered list\" }],\n },\n ],\n },\n {\n type: \"listItem\",\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"With two items\" }],\n },\n ],\n },\n ],\n },\n { type: \"paragraph\" },\n {\n type: \"blockquote\",\n content: [\n {\n type: \"paragraph\",\n content: [\n {\n type: \"text\",\n text: \"This is a quote, probably by someone famous.\",\n },\n ],\n },\n ],\n },\n { type: \"paragraph\" },\n {\n type: \"paragraph\",\n content: [\n { type: \"text\", text: \"This is some \" },\n { type: \"text\", marks: [{ type: \"code\" }], text: \"inline code\" },\n { type: \"text\", text: \", while this is a code block:\" },\n ],\n },\n { type: \"paragraph\" },\n {\n type: \"codeBlock\",\n attrs: { language: null },\n content: [\n {\n type: \"text\",\n text: \"function x () {\\\\n console.log('hello, world.');\\\\n}\",\n },\n ],\n },\n { type: \"paragraph\" },\n {\n type: \"paragraph\",\n content: [\n {\n type: \"text\",\n text: \"You can also create complex tables, like so:\",\n },\n ],\n },\n {\n type: \"table\",\n content: [\n {\n type: \"tableRow\",\n content: [\n {\n type: \"tableHeader\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Here’s a column\" }],\n },\n ],\n },\n {\n type: \"tableHeader\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Another column\" }],\n },\n ],\n },\n {\n type: \"tableHeader\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Yet another\" }],\n },\n ],\n },\n ],\n },\n {\n type: \"tableRow\",\n content: [\n {\n type: \"tableCell\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Cell 1A\" }],\n },\n ],\n },\n {\n type: \"tableCell\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Cell 2A\" }],\n },\n ],\n },\n {\n type: \"tableCell\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Cell 3A\" }],\n },\n ],\n },\n ],\n },\n {\n type: \"tableRow\",\n content: [\n {\n type: \"tableCell\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Cell 1B\" }],\n },\n ],\n },\n {\n type: \"tableCell\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Cell 2B\" }],\n },\n ],\n },\n {\n type: \"tableCell\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Cell 3B\" }],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n })\n\n const handleUpdate = ({ editor }: { editor: Editor }) => {\n const json = editor.getJSON()\n\n setContent(json)\n console.log(JSON.stringify(json))\n }\n\n return (\n <EditorProvider\n className=\"h-full w-full overflow-y-auto rounded-lg border bg-background p-4\"\n content={content}\n onUpdate={handleUpdate}\n placeholder=\"Start typing...\"\n >\n <EditorFloatingMenu>\n <EditorNodeHeading1 hideName />\n <EditorNodeBulletList hideName />\n <EditorNodeQuote hideName />\n <EditorNodeCode hideName />\n <EditorNodeTable hideName />\n </EditorFloatingMenu>\n <EditorBubbleMenu>\n <EditorSelector title=\"Text\">\n <EditorNodeText />\n <EditorNodeHeading1 />\n <EditorNodeHeading2 />\n <EditorNodeHeading3 />\n <EditorNodeBulletList />\n <EditorNodeOrderedList />\n <EditorNodeTaskList />\n <EditorNodeQuote />\n <EditorNodeCode />\n </EditorSelector>\n <EditorSelector title=\"Format\">\n <EditorFormatBold />\n <EditorFormatItalic />\n <EditorFormatUnderline />\n <EditorFormatStrike />\n <EditorFormatCode />\n <EditorFormatSuperscript />\n <EditorFormatSubscript />\n </EditorSelector>\n <EditorLinkSelector />\n <EditorClearFormatting />\n </EditorBubbleMenu>\n <EditorTableMenu>\n <EditorTableColumnMenu>\n <EditorTableColumnBefore />\n <EditorTableColumnAfter />\n <EditorTableColumnDelete />\n </EditorTableColumnMenu>\n <EditorTableRowMenu>\n <EditorTableRowBefore />\n <EditorTableRowAfter />\n <EditorTableRowDelete />\n </EditorTableRowMenu>\n <EditorTableGlobalMenu>\n <EditorTableHeaderColumnToggle />\n <EditorTableHeaderRowToggle />\n <EditorTableDelete />\n <EditorTableMergeCells />\n <EditorTableSplitCell />\n <EditorTableFix />\n </EditorTableGlobalMenu>\n </EditorTableMenu>\n <EditorCharacterCount.Words>Words: </EditorCharacterCount.Words>\n </EditorProvider>\n )\n}\n\nexport default Example\n",
|
|
12
|
+
"content": "\"use client\"\n\nimport { useState } from \"react\"\n\nimport type { Editor, JSONContent } from \"../../../../../packages/editor\"\nimport {\n EditorBubbleMenu,\n EditorCharacterCount,\n EditorClearFormatting,\n EditorFloatingMenu,\n EditorFormatBold,\n EditorFormatCode,\n EditorFormatItalic,\n EditorFormatStrike,\n EditorFormatSubscript,\n EditorFormatSuperscript,\n EditorFormatUnderline,\n EditorLinkSelector,\n EditorNodeBulletList,\n EditorNodeCode,\n EditorNodeHeading1,\n EditorNodeHeading2,\n EditorNodeHeading3,\n EditorNodeOrderedList,\n EditorNodeQuote,\n EditorNodeTable,\n EditorNodeTaskList,\n EditorNodeText,\n EditorProvider,\n EditorSelector,\n EditorTableColumnAfter,\n EditorTableColumnBefore,\n EditorTableColumnDelete,\n EditorTableColumnMenu,\n EditorTableDelete,\n EditorTableFix,\n EditorTableGlobalMenu,\n EditorTableHeaderColumnToggle,\n EditorTableHeaderRowToggle,\n EditorTableMenu,\n EditorTableMergeCells,\n EditorTableRowAfter,\n EditorTableRowBefore,\n EditorTableRowDelete,\n EditorTableRowMenu,\n EditorTableSplitCell,\n} from \"../../../../../packages/editor\"\n\nconst Example = () => {\n const [content, setContent] = useState<JSONContent>({\n type: \"doc\",\n content: [\n {\n type: \"heading\",\n attrs: { level: 1 },\n content: [{ type: \"text\", text: \"Updated Heading 1\" }],\n },\n {\n type: \"heading\",\n attrs: { level: 2 },\n content: [{ type: \"text\", text: \"Updated Heading 2\" }],\n },\n {\n type: \"heading\",\n attrs: { level: 3 },\n content: [{ type: \"text\", text: \"Updated Heading 3\" }],\n },\n {\n type: \"heading\",\n attrs: { level: 4 },\n content: [{ type: \"text\", text: \"Updated Heading 4\" }],\n },\n {\n type: \"heading\",\n attrs: { level: 5 },\n content: [{ type: \"text\", text: \"Updated Heading 5\" }],\n },\n {\n type: \"heading\",\n attrs: { level: 6 },\n content: [{ type: \"text\", text: \"Updated Heading 6\" }],\n },\n { type: \"paragraph\" },\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Updated Hello, world.\" }],\n },\n { type: \"paragraph\" },\n {\n type: \"taskList\",\n content: [\n {\n type: \"taskItem\",\n attrs: { checked: false },\n content: [\n {\n type: \"paragraph\",\n content: [\n { type: \"text\", text: \"Updated This is a todo list\" },\n ],\n },\n ],\n },\n {\n type: \"taskItem\",\n attrs: { checked: false },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Updated With two items\" }],\n },\n ],\n },\n ],\n },\n { type: \"paragraph\" },\n {\n type: \"bulletList\",\n content: [\n {\n type: \"listItem\",\n content: [\n {\n type: \"paragraph\",\n content: [\n { type: \"text\", text: \"Updated This is an unordered list\" },\n ],\n },\n {\n type: \"bulletList\",\n content: [\n {\n type: \"listItem\",\n content: [\n {\n type: \"paragraph\",\n content: [\n { type: \"text\", text: \"Updated With a nested item\" },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n { type: \"paragraph\" },\n {\n type: \"orderedList\",\n attrs: { start: 1 },\n content: [\n {\n type: \"listItem\",\n content: [\n {\n type: \"paragraph\",\n content: [\n { type: \"text\", text: \"Updated This is an ordered list\" },\n ],\n },\n ],\n },\n {\n type: \"listItem\",\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Updated With two items\" }],\n },\n ],\n },\n ],\n },\n { type: \"paragraph\" },\n {\n type: \"blockquote\",\n content: [\n {\n type: \"paragraph\",\n content: [\n {\n type: \"text\",\n text: \"Updated This is a quote, probably by someone famous.\",\n },\n ],\n },\n ],\n },\n { type: \"paragraph\" },\n {\n type: \"paragraph\",\n content: [\n { type: \"text\", text: \"Updated This is some \" },\n {\n type: \"text\",\n marks: [{ type: \"code\" }],\n text: \"Updated inline code\",\n },\n { type: \"text\", text: \"Updated , while this is a code block:\" },\n ],\n },\n { type: \"paragraph\" },\n {\n type: \"codeBlock\",\n attrs: { language: null },\n content: [\n {\n type: \"text\",\n text: \"Updated function x () {\\\\n console.log('hello, world.');\\\\n}\",\n },\n ],\n },\n { type: \"paragraph\" },\n {\n type: \"paragraph\",\n content: [\n {\n type: \"text\",\n text: \"Updated You can also create complex tables, like so:\",\n },\n ],\n },\n {\n type: \"table\",\n content: [\n {\n type: \"tableRow\",\n content: [\n {\n type: \"tableHeader\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [\n { type: \"text\", text: \"Updated Here’s a column\" },\n ],\n },\n ],\n },\n {\n type: \"tableHeader\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Updated Another column\" }],\n },\n ],\n },\n {\n type: \"tableHeader\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Updated Yet another\" }],\n },\n ],\n },\n ],\n },\n {\n type: \"tableRow\",\n content: [\n {\n type: \"tableCell\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Updated Cell 1A\" }],\n },\n ],\n },\n {\n type: \"tableCell\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Updated Cell 2A\" }],\n },\n ],\n },\n {\n type: \"tableCell\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Updated Cell 3A\" }],\n },\n ],\n },\n ],\n },\n {\n type: \"tableRow\",\n content: [\n {\n type: \"tableCell\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Updated Cell 1B\" }],\n },\n ],\n },\n {\n type: \"tableCell\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Updated Cell 2B\" }],\n },\n ],\n },\n {\n type: \"tableCell\",\n attrs: { colspan: 1, rowspan: 1, colwidth: null },\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: \"Updated Cell 3B\" }],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n })\n\n const handleUpdate = ({ editor }: { editor: Editor }) => {\n const json = editor.getJSON()\n\n setContent(json)\n console.log(JSON.stringify(json))\n }\n\n return (\n <EditorProvider\n className=\"h-full w-full overflow-y-auto rounded-lg border bg-background p-4\"\n content={content}\n onUpdate={handleUpdate}\n placeholder=\"Updated Start typing...\"\n >\n <EditorFloatingMenu>\n <EditorNodeHeading1 hideName />\n <EditorNodeBulletList hideName />\n <EditorNodeQuote hideName />\n <EditorNodeCode hideName />\n <EditorNodeTable hideName />\n </EditorFloatingMenu>\n <EditorBubbleMenu>\n <EditorSelector title=\"Updated Text\">\n <EditorNodeText />\n <EditorNodeHeading1 />\n <EditorNodeHeading2 />\n <EditorNodeHeading3 />\n <EditorNodeBulletList />\n <EditorNodeOrderedList />\n <EditorNodeTaskList />\n <EditorNodeQuote />\n <EditorNodeCode />\n </EditorSelector>\n <EditorSelector title=\"Updated Format\">\n <EditorFormatBold />\n <EditorFormatItalic />\n <EditorFormatUnderline />\n <EditorFormatStrike />\n <EditorFormatCode />\n <EditorFormatSuperscript />\n <EditorFormatSubscript />\n </EditorSelector>\n <EditorLinkSelector />\n <EditorClearFormatting />\n </EditorBubbleMenu>\n <EditorTableMenu>\n <EditorTableColumnMenu>\n <EditorTableColumnBefore />\n <EditorTableColumnAfter />\n <EditorTableColumnDelete />\n </EditorTableColumnMenu>\n <EditorTableRowMenu>\n <EditorTableRowBefore />\n <EditorTableRowAfter />\n <EditorTableRowDelete />\n </EditorTableRowMenu>\n <EditorTableGlobalMenu>\n <EditorTableHeaderColumnToggle />\n <EditorTableHeaderRowToggle />\n <EditorTableDelete />\n <EditorTableMergeCells />\n <EditorTableSplitCell />\n <EditorTableFix />\n </EditorTableGlobalMenu>\n </EditorTableMenu>\n <EditorCharacterCount.Words>Updated Words: </EditorCharacterCount.Words>\n </EditorProvider>\n )\n}\n\nexport default Example\n",
|
|
13
13
|
"type": "registry:example"
|
|
14
14
|
}
|
|
15
15
|
],
|