From 5124c1b66adb793b1a4af2a12aaedcd8a7be65a9 Mon Sep 17 00:00:00 2001 From: ValdiANS Date: Wed, 12 Nov 2025 13:24:51 +0700 Subject: [PATCH] chore: create ConfirmationModalWithNotes component --- .../modal/ConfirmationModalWithNotes.tsx | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/components/modal/ConfirmationModalWithNotes.tsx diff --git a/src/components/modal/ConfirmationModalWithNotes.tsx b/src/components/modal/ConfirmationModalWithNotes.tsx new file mode 100644 index 00000000..3a0111cd --- /dev/null +++ b/src/components/modal/ConfirmationModalWithNotes.tsx @@ -0,0 +1,69 @@ +'use client'; + +import { ChangeEventHandler, useId, useState } from 'react'; + +import ConfirmationModal, { + ConfirmationModalProps, +} from '@/components/modal/ConfirmationModal'; +import TextArea from '@/components/input/TextArea'; + +import { Color } from '@/types/theme'; + +interface ConfirmationModalWithNotesProps + extends Omit { + rows?: number; + placeholder?: string; + + primaryButton?: { + text?: string; + color?: Color; + isLoading?: boolean; + onClick?: (notes: string) => void; + }; +} + +const ConfirmationModalWithNotes: React.FC = ({ + ref, + type = 'info', + text, + closeOnBackdrop, + primaryButton, + secondaryButton, + className, + rows = 3, + placeholder = 'Catatan...', +}) => { + const randomId = useId(); + const [notes, setNotes] = useState(''); + + const notesChangeHandler: ChangeEventHandler = (e) => { + setNotes(e.target.value); + }; + + return ( + { + primaryButton?.onClick?.(notes); + }, + }} + secondaryButton={secondaryButton} + className={className} + > +