diff --git a/src/components/shared/ActionDropdown.tsx b/src/components/shared/ActionDropdown.tsx index f71083c..adcb860 100644 --- a/src/components/shared/ActionDropdown.tsx +++ b/src/components/shared/ActionDropdown.tsx @@ -1,13 +1,15 @@ import { useState, useRef, useEffect } from 'react'; import { createPortal } from 'react-dom'; import type { ReactElement } from 'react'; -import { MoreVertical, Eye, Edit, Trash2 } from 'lucide-react'; +import { MoreVertical, Eye, Edit, Trash2, Users, BarChart3 } from 'lucide-react'; import { cn } from '@/lib/utils'; interface ActionDropdownProps { onView?: () => void; onEdit?: () => void; onDelete?: () => void; + onContacts?: () => void; + onScorecards?: () => void; className?: string; } @@ -15,6 +17,8 @@ export const ActionDropdown = ({ onView, onEdit, onDelete, + onContacts, + onScorecards, className, }: ActionDropdownProps): ReactElement => { const [isOpen, setIsOpen] = useState(false); @@ -149,6 +153,26 @@ export const ActionDropdown = ({ Delete )} + {onContacts && ( + + )} + {onScorecards && ( + + )} , document.body diff --git a/src/components/shared/FormTextArea.tsx b/src/components/shared/FormTextArea.tsx new file mode 100644 index 0000000..6f49a7a --- /dev/null +++ b/src/components/shared/FormTextArea.tsx @@ -0,0 +1,60 @@ +import type { ReactElement, TextareaHTMLAttributes } from 'react'; +import { cn } from '@/lib/utils'; + +interface FormTextAreaProps extends TextareaHTMLAttributes { + label: string; + required?: boolean; + error?: string; + helperText?: string; +} + +export const FormTextArea = ({ + label, + required = false, + error, + helperText, + className, + id, + ...props +}: FormTextAreaProps): ReactElement => { + const fieldId = id || `field-${label.toLowerCase().replace(/\s+/g, '-')}`; + const hasError = Boolean(error); + + return ( +
+ +