ืจื›ื™ื‘ื™ืื—ื“ืฉ

ืžื’ื™ืจืช ืชืคืจื™ื˜ ื ืฉืœืคืช

ืœื•ื— ืฆื“ ื ื›ื ืก ืขืœ ืงืคื™ืฅ ื•ื›ืคืชื•ืจ ื”ืชืคืจื™ื˜ ืžืชืžื–ื’ ื‘ื•. ืืคืฉืจ ืœื’ืจื•ืจ ืืช ื”ืœื•ื—, ืœืœื—ื•ืฅ ืขืœ ื”ืจืงืข ืื• ืขืœ ื›ืคืชื•ืจ ื”ืกื’ื™ืจื” ื›ื“ื™ ืœืกื’ื•ืจ.

ื”ืชืืžื”

backgroundColor
accentColor

ืžื‘ื•ืกืก ืขืœ Motion Drawer (MIT ืจื™ืฉื™ื•ืŸ) ยท ืชื ืื™ ืฉื™ืžื•ืฉ

ืžืืคื™ื™ื ื™ื

15 ืžืืคื™ื™ื ื™ื
ืžืืคื™ื™ืŸืกื•ื’ื‘ืจื™ืจืช ืžื—ื“ืœืชื™ืื•ืจ
childrenReactNodeโ€”ืชื•ื›ืŸ ื”ืœื•ื—, ืœืžืฉืœ ืชืคืจื™ื˜.
widthnumber280ืจื•ื—ื‘ ื”ืœื•ื— ื‘ืคื™ืงืกืœื™ื.
direction'left' | 'right'"left"ืžืื™ื–ื” ืฆื“ ื”ืœื•ื— ื ื›ื ืก.
buttonOpeningVariants'merge' | 'push' | 'stay'"merge"ืื™ืš ื›ืคืชื•ืจ ื”ืชืคืจื™ื˜ ื ืขืœื: ืžืชืžื–ื’ ื‘ืœื•ื—, ื ื•ืกืข ืื™ืชื• ืื• ื“ื•ืขืš ื‘ืžืงื•ื.
enableDragbooleantrueืืคืฉืจ ืœื’ืจื•ืจ ืืช ื”ืœื•ื— ื›ื“ื™ ืœืกื’ื•ืจ ืื•ืชื•.
dragThresholdnumber0.3ืื™ื–ื” ื—ืœืง ืžื”ืจื•ื—ื‘ ืฆืจื™ืš ืœื’ืจื•ืจ ื›ื“ื™ ืฉื”ืœื•ื— ื™ื™ืกื’ืจ.
backgroundColorstring"#111111"ืฆื‘ืข ื”ืœื•ื—.
accentColorstring"#ffffff"ืฆื‘ืข ืกืžืœ ื”ืชืคืจื™ื˜ ื•ืงื• ื”ืงืฆื” ืฉืœ ื”ืžื’ื™ืจื”.
overlayColorstring"rgba(0, 0, 0, 0.55)"ืฆื‘ืข ื”ื”ื—ืฉื›ื” ืžืื—ื•ืจื™ ื”ืœื•ื—.
containedbooleanfalseื”ืœื•ื— ื•ื”ื›ืคืชื•ืจ ื™ื•ืฉื‘ื™ื ื‘ืชื•ืš ื”ื”ื•ืจื” ื”ืžืžื•ืงื ื”ืงืจื•ื‘ ื•ืœื ืžืขืœ ื›ืœ ื”ื—ืœื•ืŸ.
isOpenbooleanโ€”ืžืฆื‘ ืžื‘ื•ืงืจ: ื”ืื ื”ืœื•ื— ืคืชื•ื—.
onToggle(isOpen: boolean) => voidโ€”ื ืงืจื ื‘ืคืชื™ื—ื” ื•ื‘ืกื’ื™ืจื”.
showToggleButtonbooleantrueืœื”ืฆื™ื’ ืืช ื›ืคืชื•ืจ ื”ืชืคืจื™ื˜ ื•ืืช ื›ืคืชื•ืจ ื”ืกื’ื™ืจื”.
animationConfig{ type?, damping?, stiffness?, duration? }โ€”ื”ื’ื“ืจื•ืช ื”ืงืคื™ืฅ ืฉืœ ื”ื›ื ื™ืกื”.
classNamestringโ€”ืžื—ืœืงื•ืช ื ื•ืกืคื•ืช.

ืชืœื•ื™ื•ืช

4 ื—ื‘ื™ืœื•ืช ื ื“ืจืฉื•ืช

npm install motion lucide-react clsx tailwind-merge

ืจื›ื™ื‘ื™ื ื“ื•ืžื™ื

ืœื›ืœ ื”ืจื›ื™ื‘ื™ื