braid-ui 1.0.7 → 1.0.8

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.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/utils.ts","../src/components/ui/card.tsx","../src/components/ui/form-card.tsx","../src/components/ui/badge.tsx","../src/components/alerts/AlertTimeline.tsx","../src/components/ui/button.tsx","../src/components/ui/enhanced-textarea.tsx","../src/components/ui/enhanced-select.tsx","../src/hooks/use-toast.ts","../src/components/alerts/AlertNotes.tsx","../src/components/ui/enhanced-input.tsx","../src/components/alerts/AlertDocuments.tsx","../src/components/ui/info-field.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/table.tsx","../src/components/ui/dialog.tsx","../src/components/ui/json-viewer.tsx","../src/components/alerts/OFACAlertView.tsx","../src/components/alerts/AlertDetailRouter.tsx","../src/lib/constants.ts","../src/lib/utils/alert-utils.ts","../src/components/alerts/AlertHeaderControls.tsx","../src/components/alerts/ContextSection.tsx","../src/components/ui/form-provider.tsx","../src/components/ui/form-input.tsx","../src/components/ui/form-select.tsx","../src/hooks/useFormWithEditState.ts","../src/lib/schemas/alert-schemas.ts","../src/components/alerts/ResolveAlertDialog.tsx","../src/hooks/use-mobile.tsx","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/sidebar.tsx","../src/components/app-sidebar.tsx","../src/components/MainLayout.tsx","../src/hooks/useEditState.ts","../src/components/ui/editable-form-card.tsx","../src/lib/schemas/banking-schemas.ts","../src/lib/mock-data/banking-data.ts","../src/components/form-sections/ACHBankCard.tsx","../src/components/form-sections/ACHBasicInfoCard.tsx","../src/components/ui/responsive-grid.tsx","../src/lib/schemas/counterparty-schemas.ts","../src/lib/schemas/wire-schemas.ts","../src/lib/schemas/business-schemas.ts","../src/components/form-sections/BankAddressCard.tsx","../src/components/form-sections/ACHTransferSection.tsx","../src/components/form-sections/AddressForm.tsx","../src/components/form-sections/BankingDetailsCard.tsx","../src/components/ui/counterparty-type-badge.tsx","../src/components/ui/status-badge.tsx","../src/components/form-sections/BasicInfoCard.tsx","../src/lib/mock-data/counterparty-data.ts","../src/components/form-sections/CounterpartyProfileCard.tsx","../src/components/form-sections/CounterpartyRecordsCard.tsx","../src/components/form-sections/BasicInfoSection.tsx","../src/components/form-sections/BeneficiaryAddress.tsx","../src/components/ui/data-grid.tsx","../src/components/form-sections/BeneficiaryDomesticWire.tsx","../src/components/form-sections/BeneficiaryCard.tsx","../src/lib/mock-data/business-data.ts","../src/components/form-sections/BusinessProfileCard.tsx","../src/components/form-sections/BusinessStatusCard.tsx","../src/components/form-sections/ContactInfoCard.tsx","../src/components/ui/label.tsx","../src/components/form-sections/CounterpartyBasicInfo.tsx","../src/components/ui/form-section.tsx","../src/components/form-sections/IntermediaryFI.tsx","../src/components/form-sections/IntermediaryFIAddress.tsx","../src/lib/mock-data/wire-data.ts","../src/components/form-sections/IntermediaryCard.tsx","../src/components/form-sections/OriginatorFI.tsx","../src/components/form-sections/OriginatorFIAddress.tsx","../src/components/form-sections/OriginatorCard.tsx","../src/components/form-sections/ReceiverCard.tsx","../src/components/form-sections/PaymentInformationSection.tsx","../src/components/form-sections/WireTransferSection.tsx","../src/components/ui/container.tsx","../src/components/ui/stack.tsx","../src/components/ui/breadcrumb.tsx","../src/components/layouts/list-page.tsx","../src/components/statement/StatementHeader.tsx","../src/components/ui/calendar.tsx","../src/components/ui/popover.tsx","../src/components/ui/data-table.tsx","../src/components/statement/StatementView.tsx","../src/components/transaction/ACHDetailsSection.tsx","../src/components/transaction/WireDetailsSection.tsx","../src/components/ui/account-card.tsx","../src/components/ui/business-type-badge.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/page-layout.tsx","../src/components/ui/detail-page-layout.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/editable-info-field.tsx","../src/components/ui/entity-card.tsx","../src/components/ui/form-field.tsx","../src/components/ui/metric-card.tsx","../src/components/ui/sonner.tsx","../src/components/ui/tabs.tsx","../src/components/ui/toast.tsx","../src/components/ui/transaction-type-badge.tsx","../src/lib/mock-data.tsx","../src/components/ui-kit/dashboard-demo.tsx","../src/components/ui-kit/pattern-library.tsx","../src/components/ui-kit/showcase.tsx","../src/lib/mock-data/alert-data.ts","../src/hooks/useAlertDetail.ts","../src/pages/alerts/AlertDetail.tsx","../src/pages/alerts/Alerts.tsx","../src/lib/mock-data/businesses-list-data.ts","../src/pages/business/Businesses.tsx","../src/pages/business/BusinessDetail.tsx","../src/pages/business/Create.tsx","../src/pages/Cases.tsx","../src/pages/counterparty/Create.tsx","../src/pages/counterparty/DomesticWire.tsx","../src/pages/counterparty/Manage.tsx","../src/pages/Dashboard.tsx","../src/pages/NotFound.tsx","../src/lib/mock-data/statement-data.ts","../src/pages/Statement.tsx","../src/lib/mock-data/transaction-data.ts","../src/pages/TransactionHistory.tsx","../src/pages/transactions/NewTransaction.tsx","../src/pages/transactions/TransactionDetail.tsx","../src/pages/UIKit.tsx"],"names":["React","React2","jsx","cva","getStatusColor","jsxs","React3","React4","React5","toast","props","React6","useState","React7","createPortal","X","Trash2","React8","React9","React10","Check","ChevronDown","ChevronRight","Fragment","RHFFormProvider","useFormContext","Controller","useEffect","React11","React12","SheetPrimitive","React13","React14","open","Slot","FileText","RefreshCw","Upload","useCallback","React16","Edit","z","React17","gridClasses","Building2","User","Shield","Icon","CheckCircle","XCircle","gapClasses","React18","columns","Circle","UserPlus","React19","React20","spacing","ChevronUp","Plus","React21","spacingClasses","React22","React23","NavLink","React24","React25","Download","CreditCard","React26","typeConfig","Building","Briefcase","Users","React27","React28","React29","React30","Eye","React31","TrendingUp","React32","Sonner","React33","React34","React35","badgeVariants","React36","Copy","React37","useMemo","useNavigate","getTypeBadgeVariant","Filter","CalendarIcon","format","useParams","Create_default","useLocation","ChevronLeft","ArrowLeftRight","Settings","Zap","useForm","zodResolver","amount","Search","CheckCircle2","AlertCircle"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst cardVariants = cva(\n \"rounded-lg border bg-card text-card-foreground transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"shadow-sm\",\n elevated: \"shadow-md hover:shadow-lg\",\n outlined: \"border-2 shadow-none\",\n ghost: \"border-transparent shadow-none bg-transparent\",\n subtle: \"border-border/75 shadow-none\"\n },\n size: {\n sm: \"p-3\",\n md: \"p-4\", \n lg: \"p-6\",\n none: \"p-0\"\n },\n fullHeight: {\n true: \"h-full flex flex-col\",\n false: \"\"\n },\n interactive: {\n true: \"cursor-pointer hover:shadow-md hover:scale-[1.02]\",\n false: \"\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"none\",\n fullHeight: false,\n interactive: false\n }\n }\n)\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, size, fullHeight, interactive, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(cardVariants({ variant, size, fullHeight, interactive }), className)}\n {...props}\n />\n )\n)\nCard.displayName = \"Card\"\n\nconst cardHeaderVariants = cva(\n \"flex flex-col space-y-1.5\",\n {\n variants: {\n size: {\n sm: \"px-3 pt-3 pb-2\",\n md: \"px-4 pt-4 pb-3\",\n lg: \"px-6 pt-6 pb-4\"\n },\n align: {\n start: \"items-start\",\n center: \"items-center\", \n end: \"items-end\"\n },\n direction: {\n row: \"flex-row justify-between items-center space-y-0 space-x-4\",\n column: \"flex-col space-y-1.5\"\n }\n },\n defaultVariants: {\n size: \"lg\",\n align: \"start\",\n direction: \"column\"\n }\n }\n)\n\nexport interface CardHeaderProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardHeaderVariants> {}\n\nconst CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, size, align, direction, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(cardHeaderVariants({ size, align, direction }), className)}\n {...props}\n />\n )\n)\nCardHeader.displayName = \"CardHeader\"\n\nconst cardTitleVariants = cva(\n \"font-semibold leading-none tracking-tight\",\n {\n variants: {\n size: {\n sm: \"text-base\",\n md: \"text-lg\", \n lg: \"text-xl\"\n }\n },\n defaultVariants: {\n size: \"md\"\n }\n }\n)\n\nexport interface CardTitleProps\n extends React.HTMLAttributes<HTMLHeadingElement>,\n VariantProps<typeof cardTitleVariants> {}\n\nconst CardTitle = React.forwardRef<HTMLParagraphElement, CardTitleProps>(\n ({ className, size, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(cardTitleVariants({ size }), className)}\n {...props}\n />\n )\n)\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst cardContentVariants = cva(\n \"\",\n {\n variants: {\n size: {\n sm: \"px-3 pb-2\",\n md: \"px-4 pb-3\",\n lg: \"px-6 pb-4\"\n },\n fullHeight: {\n true: \"flex-1\",\n false: \"\"\n }\n },\n defaultVariants: {\n size: \"lg\",\n fullHeight: false\n }\n }\n)\n\nexport interface CardContentProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardContentVariants> {}\n\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, size, fullHeight, ...props }, ref) => (\n <div \n ref={ref} \n className={cn(cardContentVariants({ size, fullHeight }), className)} \n {...props} \n />\n )\n)\nCardContent.displayName = \"CardContent\"\n\nconst cardFooterVariants = cva(\n \"flex items-center pt-0\",\n {\n variants: {\n size: {\n sm: \"p-3 pt-0\",\n md: \"p-4 pt-0\",\n lg: \"p-6 pt-0\"\n },\n justify: {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\"\n }\n },\n defaultVariants: {\n size: \"lg\",\n justify: \"start\"\n }\n }\n)\n\nexport interface CardFooterProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardFooterVariants> {}\n\nconst CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(\n ({ className, size, justify, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(cardFooterVariants({ size, justify }), className)}\n {...props}\n />\n )\n)\nCardFooter.displayName = \"CardFooter\"\n\nexport { \n Card, \n CardHeader, \n CardFooter, \n CardTitle, \n CardDescription, \n CardContent,\n cardVariants\n}\n","import * as React from \"react\"\nimport { Card, CardContent, CardHeader, CardTitle, CardDescription, type CardProps } from \"@/components/ui/card\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface FormCardProps extends Omit<CardProps, 'children'> {\n title: string\n description?: string\n children: React.ReactNode\n headerActions?: React.ReactNode\n}\n\nexport const FormCard = React.forwardRef<HTMLDivElement, FormCardProps>(\n ({ title, description, children, headerActions, className, variant = \"default\", ...props }, ref) => (\n <Card \n ref={ref}\n variant={variant}\n fullHeight\n className={cn(\"\", className)}\n {...props}\n >\n <CardHeader \n direction={headerActions ? \"row\" : \"column\"}\n size=\"md\"\n >\n <div className=\"space-y-1\">\n <CardTitle size=\"md\">{title}</CardTitle>\n </div>\n {headerActions && (\n <div className=\"flex items-center gap-2\">\n {headerActions}\n </div>\n )}\n </CardHeader>\n <CardContent size=\"md\" fullHeight>\n {children}\n </CardContent>\n </Card>\n )\n)\nFormCard.displayName = \"FormCard\"","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n success:\n \"border-transparent bg-success text-success-foreground hover:bg-success/80\",\n warning:\n \"border-transparent bg-warning text-warning-foreground hover:bg-warning/80\",\n inbound:\n \"border-transparent bg-blue-500 text-white hover:bg-blue-600\",\n outbound:\n \"border-transparent bg-orange-500 text-white hover:bg-orange-600\",\n // Business type specific variants\n business:\n \"border-blue-200 bg-blue-50 text-blue-700 hover:bg-blue-100 dark:border-blue-800 dark:bg-blue-950 dark:text-blue-300\",\n individual:\n \"border-green-200 bg-green-50 text-green-700 hover:bg-green-100 dark:border-green-800 dark:bg-green-950 dark:text-green-300\",\n government:\n \"border-purple-200 bg-purple-50 text-purple-700 hover:bg-purple-100 dark:border-purple-800 dark:bg-purple-950 dark:text-purple-300\",\n nonprofit:\n \"border-orange-200 bg-orange-50 text-orange-700 hover:bg-orange-100 dark:border-orange-800 dark:bg-orange-950 dark:text-orange-300\",\n // Business entity type variants\n corporation:\n \"border-slate-200 bg-slate-50 text-slate-700 hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-900 dark:text-slate-300\",\n llc:\n \"border-teal-200 bg-teal-50 text-teal-700 hover:bg-teal-100 dark:border-teal-800 dark:bg-teal-950 dark:text-teal-300\",\n partnership:\n \"border-indigo-200 bg-indigo-50 text-indigo-700 hover:bg-indigo-100 dark:border-indigo-800 dark:bg-indigo-950 dark:text-indigo-300\",\n sole_proprietorship:\n \"border-amber-200 bg-amber-50 text-amber-700 hover:bg-amber-100 dark:border-amber-800 dark:bg-amber-950 dark:text-amber-300\",\n // Status variants\n active:\n \"border-green-200 bg-green-50 text-green-700 hover:bg-green-100 dark:border-green-800 dark:bg-green-950 dark:text-green-300\",\n inactive:\n \"border-red-200 bg-red-50 text-red-700 hover:bg-red-100 dark:border-red-800 dark:bg-red-950 dark:text-red-300\",\n pending:\n \"border-yellow-200 bg-yellow-50 text-yellow-700 hover:bg-yellow-100 dark:border-yellow-800 dark:bg-yellow-950 dark:text-yellow-300\",\n suspended:\n \"border-gray-200 bg-gray-50 text-gray-700 hover:bg-gray-100 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300\",\n // Alert type subtle variants\n \"alert-ofac\":\n \"border-red-200 bg-red-50 text-red-700 hover:bg-red-100 dark:border-red-800 dark:bg-red-950 dark:text-red-300 font-medium\",\n \"alert-dual\":\n \"border-emerald-200 bg-emerald-50 text-emerald-700 hover:bg-emerald-100 dark:border-emerald-800 dark:bg-emerald-950 dark:text-emerald-300 font-medium\",\n \"alert-monitoring\":\n \"border-amber-200 bg-amber-50 text-amber-700 hover:bg-amber-100 dark:border-amber-800 dark:bg-amber-950 dark:text-amber-300 font-medium\",\n \"alert-error\":\n \"border-rose-200 bg-rose-50 text-rose-700 hover:bg-rose-100 dark:border-rose-800 dark:bg-rose-950 dark:text-rose-300 font-medium\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n )\n}\n\nexport { Badge, badgeVariants }","import { TimelineEvent } from \"@/lib/mock-data/alert-data\";\nimport { CheckCircle, Circle, UserPlus, Edit, XCircle, StickyNote, FileUp, RefreshCw } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\ninterface AlertTimelineProps {\n events: TimelineEvent[];\n}\n\nexport const AlertTimeline = ({ events }: AlertTimelineProps) => {\n const getIcon = (action: string) => {\n if (action.includes(\"Note added\")) return <StickyNote className=\"h-4 w-4\" />;\n if (action.includes(\"Document added\")) return <FileUp className=\"h-4 w-4\" />;\n if (action.includes(\"Alert Approved\")) return <CheckCircle className=\"h-4 w-4\" />;\n if (action.includes(\"Alert Declined\")) return <XCircle className=\"h-4 w-4\" />;\n if (action.includes(\"RFI Status change\")) return <RefreshCw className=\"h-4 w-4\" />;\n if (action.includes(\"Created\")) return <Circle className=\"h-4 w-4\" />;\n if (action.includes(\"Assigned\")) return <UserPlus className=\"h-4 w-4\" />;\n if (action.includes(\"Updated\") || action.includes(\"Modified\")) return <Edit className=\"h-4 w-4\" />;\n if (action.includes(\"Closed\") || action.includes(\"Resolved\")) return <CheckCircle className=\"h-4 w-4\" />;\n if (action.includes(\"Rejected\")) return <XCircle className=\"h-4 w-4\" />;\n return <Circle className=\"h-4 w-4\" />;\n };\n\n const getStatusColor = (status?: string, action?: string) => {\n // Color by action type for specific events\n if (action?.includes(\"Note added\")) return \"text-blue-500\";\n if (action?.includes(\"Document added\")) return \"text-purple-500\";\n if (action?.includes(\"Alert Approved\")) return \"text-success\";\n if (action?.includes(\"Alert Declined\")) return \"text-destructive\";\n if (action?.includes(\"RFI Status change\")) return \"text-warning\";\n \n // Default color by status\n switch (status) {\n case \"Unassigned\":\n return \"text-destructive\";\n case \"Closed\":\n return \"text-success\";\n case \"In Progress\":\n return \"text-warning\";\n default:\n return \"text-muted-foreground\";\n }\n };\n\n if (events.length === 0) {\n return <div className=\"text-center py-8 text-muted-foreground\">No timeline events yet</div>;\n }\n\n return (\n <div className=\"space-y-3\">\n {events.map((event, index) => (\n <div key={event.id} className=\"relative pl-6 pb-3\">\n {/* Timeline line */}\n {index !== events.length - 1 && <div className=\"absolute left-[7px] top-5 bottom-0 w-[2px] bg-border\" />}\n\n {/* Icon */}\n <div className={cn(\"absolute left-0 top-0 flex-none\", getStatusColor(event.status, event.action))}>\n <div className=\"h-4 w-4\">{getIcon(event.action)}</div>\n </div>\n\n {/* Content */}\n <div className=\"space-y-0.5\">\n <p className=\"text-xs font-medium text-foreground\">{event.action}</p>\n <p className=\"text-xs text-muted-foreground\">by {event.user}</p>\n {event.details && <p className=\"text-xs text-muted-foreground\">{event.details}</p>}\n <p className=\"text-xs text-muted-foreground/70 pt-0.5\">{event.timestamp}</p>\n </div>\n </div>\n ))}\n </div>\n );\n};\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst textareaVariants = cva(\n \"flex min-h-[80px] w-full rounded-md bg-form-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground transition-form resize-y\",\n {\n variants: {\n variant: {\n default: \"border border-form-border focus-visible:border-form-border-focus focus-visible:outline-none focus-visible:shadow-form-focus\",\n error: \"border border-form-border-error focus-visible:border-form-border-error focus-visible:outline-none focus-visible:shadow-form-error\",\n success: \"border border-form-border-success focus-visible:border-form-border-success focus-visible:outline-none\",\n disabled: \"border border-form-border bg-muted cursor-not-allowed opacity-50 resize-none\",\n readonly: \"border border-form-border bg-muted/50 cursor-default resize-none\"\n }\n },\n defaultVariants: {\n variant: \"default\"\n }\n }\n)\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n VariantProps<typeof textareaVariants> {\n label?: string\n hint?: string\n error?: string\n success?: string\n}\n\nconst EnhancedTextarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, variant, label, hint, error, success, ...props }, ref) => {\n const textareaVariant = error ? \"error\" : success ? \"success\" : props.disabled ? \"disabled\" : props.readOnly ? \"readonly\" : variant\n\n return (\n <div className=\"space-y-2\">\n {label && (\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {label}\n {props.required && <span className=\"text-destructive ml-1\">*</span>}\n </label>\n )}\n <textarea\n className={cn(textareaVariants({ variant: textareaVariant, className }))}\n ref={ref}\n {...props}\n />\n {hint && !error && !success && (\n <p className=\"text-xs text-muted-foreground\">{hint}</p>\n )}\n {error && (\n <p className=\"text-xs text-destructive\">{error}</p>\n )}\n {success && (\n <p className=\"text-xs text-success\">{success}</p>\n )}\n </div>\n )\n }\n)\nEnhancedTextarea.displayName = \"EnhancedTextarea\"\n\nexport { EnhancedTextarea, textareaVariants }","import * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst selectVariants = cva(\n \"flex h-10 w-full items-center justify-between rounded-md bg-form-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none transition-form\",\n {\n variants: {\n variant: {\n default: \"border border-form-border focus:border-form-border-focus focus:shadow-form-focus\",\n error: \"border border-form-border-error focus:border-form-border-error focus:shadow-form-error\",\n success: \"border border-form-border-success focus:border-form-border-success\",\n disabled: \"border border-form-border bg-muted cursor-not-allowed opacity-50\",\n }\n },\n defaultVariants: {\n variant: \"default\"\n }\n }\n)\n\ninterface EnhancedSelectProps extends VariantProps<typeof selectVariants> {\n label?: string\n hint?: string\n error?: string\n success?: string\n placeholder?: string\n options: { value: string; label: string; disabled?: boolean }[]\n value?: string\n onValueChange?: (value: string) => void\n disabled?: boolean\n className?: string\n}\n\nconst EnhancedSelect = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n EnhancedSelectProps\n>(({ variant, label, hint, error, success, placeholder, options, disabled, className, ...props }, ref) => {\n const selectVariant = error ? \"error\" : success ? \"success\" : disabled ? \"disabled\" : variant\n\n return (\n <div className={cn(\"space-y-2\", className)}>\n {label && (\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {label}\n </label>\n )}\n <SelectPrimitive.Root {...props} disabled={disabled}>\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(selectVariants({ variant: selectVariant }))}\n >\n <SelectPrimitive.Value placeholder={placeholder} />\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content className=\"relative z-[9999] max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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\">\n <SelectPrimitive.ScrollUpButton className=\"flex cursor-default items-center justify-center py-1\">\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n <SelectPrimitive.Viewport className=\"p-1\">\n {options.map((option) => (\n <SelectPrimitive.Item\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n className=\"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{option.label}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n <SelectPrimitive.ScrollDownButton className=\"flex cursor-default items-center justify-center py-1\">\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n {hint && !error && !success && (\n <p className=\"text-xs text-muted-foreground\">{hint}</p>\n )}\n {error && (\n <p className=\"text-xs text-destructive\">{error}</p>\n )}\n {success && (\n <p className=\"text-xs text-success\">{success}</p>\n )}\n </div>\n )\n})\nEnhancedSelect.displayName = \"EnhancedSelect\"\n\nexport { EnhancedSelect }\n","import * as React from \"react\"\n\nimport type {\n ToastActionElement,\n ToastProps,\n} from \"@/components/ui/toast\"\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\ntype ToasterToast = ToastProps & {\n id: string\n title?: React.ReactNode\n description?: React.ReactNode\n action?: ToastActionElement\n}\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER\n return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"]\n toast: ToasterToast\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"]\n toast: Partial<ToasterToast>\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"]\n toastId?: ToasterToast[\"id\"]\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"]\n toastId?: ToasterToast[\"id\"]\n }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n }\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n }\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId)\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id)\n })\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n }\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n }\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n }\n }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action)\n listeners.forEach((listener) => {\n listener(memoryState)\n })\n}\n\ntype Toast = Omit<ToasterToast, \"id\">\n\nfunction toast({ ...props }: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n })\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id })\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss()\n },\n },\n })\n\n return {\n id: id,\n dismiss,\n update,\n }\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState)\n\n React.useEffect(() => {\n listeners.push(setState)\n return () => {\n const index = listeners.indexOf(setState)\n if (index > -1) {\n listeners.splice(index, 1)\n }\n }\n }, [state])\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n }\n}\n\nexport { useToast, toast }\n","import { useState } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { AlertNote } from \"@/lib/mock-data/alert-data\"\nimport { Button } from \"@/components/ui/button\"\nimport { EnhancedTextarea } from \"@/components/ui/enhanced-textarea\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { toast } from \"@/hooks/use-toast\"\nimport { MessageSquare, Plus, X, Trash2 } from \"lucide-react\"\n\nconst NOTE_TYPE_OPTIONS = [\n { value: \"RFI Note\", label: \"RFI Note\" },\n { value: \"Internal Note\", label: \"Internal Note\" }\n]\n\ninterface AlertNotesProps {\n alertId: string\n notes: AlertNote[]\n}\n\nexport const AlertNotes = ({ alertId, notes }: AlertNotesProps) => {\n const [showNoteDialog, setShowNoteDialog] = useState(false)\n const [newNote, setNewNote] = useState(\"\")\n const [noteType, setNoteType] = useState<\"RFI Note\" | \"Internal Note\">(\"RFI Note\")\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n const resetForm = () => {\n setNewNote(\"\")\n setNoteType(\"RFI Note\")\n }\n\n const handleCancelNote = () => {\n setShowNoteDialog(false)\n resetForm()\n }\n\n const handleAddNote = async () => {\n if (!newNote.trim()) {\n toast({\n title: \"Error\",\n description: \"Please enter a note before submitting\",\n variant: \"destructive\"\n })\n return\n }\n\n setIsSubmitting(true)\n \n // Simulate API call\n setTimeout(() => {\n toast({\n title: \"Note Added\",\n description: \"Your note has been added successfully\"\n })\n setShowNoteDialog(false)\n resetForm()\n setIsSubmitting(false)\n }, 500)\n }\n\n const handleDeleteNote = (noteId: string, noteContent: string) => {\n toast({\n title: \"Note Deleted\",\n description: `Note deleted successfully`\n })\n // TODO: API call to delete note\n console.log(\"Deleting note:\", noteId)\n }\n\n return (\n <div className=\"space-y-6\">\n {/* Add Note Dialog - Render using portal */}\n {showNoteDialog && createPortal(\n <div className=\"fixed inset-0 z-[100] flex items-center justify-center p-4\">\n <div \n className=\"fixed inset-0 bg-background/80 backdrop-blur-sm\"\n onClick={handleCancelNote}\n />\n <div className=\"relative bg-card border rounded-lg shadow-lg max-w-lg w-full p-6 z-[101]\">\n <div className=\"flex items-center justify-between mb-6\">\n <h2 className=\"text-2xl font-bold\">Add Note</h2>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={handleCancelNote}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"space-y-4\">\n <EnhancedSelect\n label=\"Note Type\"\n value={noteType}\n onValueChange={(value) => setNoteType(value as \"RFI Note\" | \"Internal Note\")}\n options={NOTE_TYPE_OPTIONS}\n />\n <EnhancedTextarea\n label=\"Note\"\n placeholder=\"Enter your note here...\"\n value={newNote}\n onChange={(e) => setNewNote(e.target.value)}\n rows={6}\n required\n />\n </div>\n\n <div className=\"flex gap-3 mt-6\">\n <Button\n variant=\"outline\"\n onClick={handleCancelNote}\n disabled={isSubmitting}\n className=\"flex-1\"\n >\n Cancel\n </Button>\n <Button\n onClick={handleAddNote}\n disabled={isSubmitting || !newNote.trim()}\n className=\"flex-1\"\n >\n {isSubmitting ? \"Adding...\" : \"Add Note\"}\n </Button>\n </div>\n </div>\n </div>,\n document.body\n )}\n\n {/* Notes History */}\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-sm font-medium text-foreground\">Note History</h3>\n <Button \n onClick={() => setShowNoteDialog(true)}\n variant=\"ghost\"\n size=\"sm\"\n className=\"gap-2 text-primary hover:text-primary\"\n >\n <Plus className=\"h-4 w-4\" />\n Add Note\n </Button>\n </div>\n {notes.length === 0 ? (\n <div className=\"text-center py-8 text-muted-foreground\">\n <MessageSquare className=\"h-8 w-8 mx-auto mb-2 opacity-50\" />\n <p>No notes yet</p>\n </div>\n ) : (\n <div className=\"space-y-3\">\n {notes.map((note) => (\n <div \n key={note.id} \n className=\"border rounded-lg p-4 bg-muted/30\"\n >\n <div className=\"flex items-start justify-between gap-4 mb-2\">\n <div className=\"flex items-center gap-2\">\n <p className=\"font-medium text-sm text-foreground\">{note.user}</p>\n <Badge variant={note.type === \"RFI Note\" ? \"default\" : \"outline\"}>\n {note.type === \"RFI Note\" ? \"RFI\" : \"Internal\"}\n </Badge>\n </div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs text-muted-foreground whitespace-nowrap\">\n {note.timestamp}\n </span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 text-muted-foreground hover:text-foreground\"\n onClick={() => handleDeleteNote(note.id, note.content)}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n <p className=\"text-sm text-foreground\">{note.content}</p>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst inputVariants = cva(\n \"flex w-full rounded-md bg-form-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground transition-form\",\n {\n variants: {\n variant: {\n default: \"border border-form-border focus-visible:border-form-border-focus focus-visible:outline-none focus-visible:shadow-form-focus\",\n error: \"border border-form-border-error focus-visible:border-form-border-error focus-visible:outline-none focus-visible:shadow-form-error\",\n success: \"border border-form-border-success focus-visible:border-form-border-success focus-visible:outline-none\",\n disabled: \"border border-form-border bg-muted cursor-not-allowed opacity-50\",\n readonly: \"border border-form-border bg-muted/50 cursor-default\"\n },\n size: {\n default: \"h-10\",\n sm: \"h-9\",\n lg: \"h-11\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n)\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof inputVariants> {\n label?: string\n hint?: string\n error?: string\n success?: string\n isLoading?: boolean\n}\n\nconst EnhancedInput = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, variant, size, label, hint, error, success, isLoading, ...props }, ref) => {\n const inputVariant = error ? \"error\" : success ? \"success\" : props.disabled ? \"disabled\" : props.readOnly ? \"readonly\" : variant\n\n return (\n <div className=\"space-y-2\">\n {label && (\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {label}\n {props.required && <span className=\"text-destructive ml-1\">*</span>}\n </label>\n )}\n <div className=\"relative\">\n <input\n className={cn(inputVariants({ variant: inputVariant, size, className }))}\n ref={ref}\n {...props}\n />\n {isLoading && (\n <div className=\"absolute right-3 top-1/2 transform -translate-y-1/2\">\n <div className=\"animate-spin rounded-full h-4 w-4 border-2 border-primary border-t-transparent\"></div>\n </div>\n )}\n </div>\n {hint && !error && !success && (\n <p className=\"text-xs text-muted-foreground\">{hint}</p>\n )}\n {error && (\n <p className=\"text-xs text-destructive\">{error}</p>\n )}\n {success && (\n <p className=\"text-xs text-success\">{success}</p>\n )}\n </div>\n )\n }\n)\nEnhancedInput.displayName = \"EnhancedInput\"\n\nexport { EnhancedInput, inputVariants }","import { useState } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { AlertDocument } from \"@/lib/mock-data/alert-data\"\nimport { Button } from \"@/components/ui/button\"\nimport { toast } from \"@/hooks/use-toast\"\nimport { FileText, Upload, Download, Eye, Trash2, X } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedTextarea } from \"@/components/ui/enhanced-textarea\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\n\ninterface AlertDocumentsProps {\n alertId: string\n documents: AlertDocument[]\n}\n\nexport const AlertDocuments = ({ alertId, documents }: AlertDocumentsProps) => {\n const [isUploading, setIsUploading] = useState(false)\n const [showUploadDialog, setShowUploadDialog] = useState(false)\n const [selectedFile, setSelectedFile] = useState<File | null>(null)\n const [documentName, setDocumentName] = useState(\"\")\n const [description, setDescription] = useState(\"\")\n const [documentType, setDocumentType] = useState(\"\")\n\n const handleFileSelect = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0]\n if (!file) return\n \n setSelectedFile(file)\n setDocumentName(file.name)\n }\n\n const handleUploadSubmit = () => {\n if (!selectedFile || !documentName || !documentType) {\n toast({\n title: \"Missing Information\",\n description: \"Please fill in all required fields\",\n variant: \"destructive\"\n })\n return\n }\n\n setIsUploading(true)\n \n // Simulate upload\n setTimeout(() => {\n const newDocument: AlertDocument = {\n id: String(Date.now()),\n name: documentName,\n type: documentType,\n description: description || undefined,\n size: `${(selectedFile.size / 1024 / 1024).toFixed(1)} MB`,\n uploadedBy: \"Current User\",\n uploadedAt: new Date().toISOString()\n }\n \n toast({\n title: \"Upload Successful\",\n description: `${documentName} uploaded successfully`\n })\n setIsUploading(false)\n setShowUploadDialog(false)\n resetForm()\n }, 1000)\n }\n\n const resetForm = () => {\n setSelectedFile(null)\n setDocumentName(\"\")\n setDescription(\"\")\n setDocumentType(\"\")\n const fileInput = document.getElementById(\"file-upload\") as HTMLInputElement\n if (fileInput) fileInput.value = \"\"\n }\n\n const handleCancelUpload = () => {\n setShowUploadDialog(false)\n resetForm()\n }\n\n const isImageType = (name: string) => {\n const imageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.webp', '.bmp']\n return imageExtensions.some(ext => name.toLowerCase().endsWith(ext))\n }\n\n const getFileIcon = (type: string) => {\n return <FileText className=\"h-5 w-5\" />\n }\n\n const getFileTypeColor = (type: string) => {\n switch (type.toUpperCase()) {\n case \"PDF\":\n return \"text-red-500\"\n case \"DOCX\":\n case \"DOC\":\n return \"text-blue-500\"\n case \"XLSX\":\n case \"XLS\":\n return \"text-green-500\"\n case \"JPG\":\n case \"JPEG\":\n case \"PNG\":\n return \"text-purple-500\"\n default:\n return \"text-muted-foreground\"\n }\n }\n\n const documentTypeOptions = [\n { value: \"ID_DOCUMENT_FRONT\", label: \"ID Document (Front)\" },\n { value: \"ID_DOCUMENT_BACK\", label: \"ID Document (Back)\" },\n { value: \"PASSPORT\", label: \"Passport\" },\n { value: \"PROOF_OF_ADDRESS\", label: \"Proof of Address\" },\n { value: \"BANK_STATEMENT\", label: \"Bank Statement\" },\n { value: \"BUSINESS_LICENSE\", label: \"Business License\" },\n { value: \"TAX_DOCUMENT\", label: \"Tax Document\" },\n { value: \"OTHER\", label: \"Other\" }\n ]\n\n return (\n <div className=\"space-y-6\">\n {/* Upload Dialog - Render using portal */}\n {showUploadDialog && createPortal(\n <div className=\"fixed inset-0 z-[100] flex items-center justify-center p-4\">\n <div \n className=\"fixed inset-0 bg-background/80 backdrop-blur-sm\"\n onClick={handleCancelUpload}\n />\n <div className=\"relative bg-card border rounded-lg shadow-lg max-w-lg w-full p-6 z-[101]\">\n <div className=\"flex items-center justify-between mb-6\">\n <h2 className=\"text-2xl font-bold\">Upload Document</h2>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={handleCancelUpload}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"space-y-4\">\n {/* File Upload Area Inside Dialog */}\n <div className=\"border-2 border-dashed rounded-lg p-6 text-center hover:border-primary/50 transition-colors\">\n <input\n type=\"file\"\n id=\"file-upload-dialog\"\n className=\"hidden\"\n onChange={handleFileSelect}\n disabled={isUploading}\n />\n <label\n htmlFor=\"file-upload-dialog\"\n className={cn(\n \"cursor-pointer flex flex-col items-center gap-2\",\n isUploading && \"opacity-50 cursor-not-allowed\"\n )}\n >\n <Upload className=\"h-8 w-8 text-muted-foreground\" />\n <div>\n <p className=\"text-sm font-medium text-foreground\">\n {selectedFile ? \"Change file\" : \"Click to upload or drag and drop\"}\n </p>\n <p className=\"text-xs text-muted-foreground mt-1\">\n PDF, DOC, DOCX, JPG, PNG up to 10MB\n </p>\n </div>\n </label>\n </div>\n\n {selectedFile && (\n <div className=\"p-3 bg-muted/50 rounded-lg\">\n <p className=\"text-sm text-muted-foreground\">Selected file:</p>\n <p className=\"text-sm font-medium\">{selectedFile.name}</p>\n <p className=\"text-xs text-muted-foreground\">\n {(selectedFile.size / 1024 / 1024).toFixed(2)} MB\n </p>\n </div>\n )}\n\n <EnhancedInput\n label=\"Document name\"\n value={documentName}\n onChange={(e) => setDocumentName(e.target.value)}\n placeholder=\"Enter document name\"\n />\n\n <EnhancedTextarea\n label=\"Description\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n placeholder=\"Enter document description (optional)\"\n rows={3}\n />\n\n <EnhancedSelect\n label=\"Document type\"\n value={documentType}\n onValueChange={setDocumentType}\n placeholder=\"Select document type\"\n options={documentTypeOptions}\n />\n </div>\n\n <div className=\"flex gap-3 mt-6\">\n <Button\n variant=\"outline\"\n onClick={handleCancelUpload}\n disabled={isUploading}\n className=\"flex-1\"\n >\n Cancel\n </Button>\n <Button\n onClick={handleUploadSubmit}\n disabled={isUploading}\n className=\"flex-1\"\n >\n {isUploading ? \"Uploading...\" : \"Upload\"}\n </Button>\n </div>\n </div>\n </div>,\n document.body\n )}\n\n {/* Documents List */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-sm font-medium text-foreground\">Uploaded Documents</h3>\n <Button \n onClick={() => setShowUploadDialog(true)}\n variant=\"ghost\"\n size=\"sm\"\n className=\"gap-2 text-primary hover:text-primary\"\n >\n <Upload className=\"h-4 w-4\" />\n Upload\n </Button>\n </div>\n {documents.length === 0 ? (\n <div className=\"text-center py-8 text-muted-foreground\">\n <FileText className=\"h-8 w-8 mx-auto mb-2 opacity-50\" />\n <p>No documents uploaded yet</p>\n </div>\n ) : (\n <div className=\"space-y-2\">\n {documents.map((doc) => (\n <div\n key={doc.id}\n className=\"border rounded-lg hover:bg-muted/30 transition-colors overflow-hidden\"\n >\n {/* Image Preview for image types */}\n {isImageType(doc.name) && doc.url && (\n <div className=\"w-full bg-muted/50\">\n <img \n src={doc.url} \n alt={doc.name}\n className=\"w-full h-48 object-cover\"\n />\n </div>\n )}\n \n <div className=\"flex items-center justify-between p-3\">\n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n {!isImageType(doc.name) && (\n <div className={cn(getFileTypeColor(doc.type))}>\n {getFileIcon(doc.type)}\n </div>\n )}\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"font-medium text-sm truncate\">{doc.name}</h4>\n <span className={cn(\"text-xs px-2 py-0.5 rounded-full bg-muted inline-block mt-1\", getFileTypeColor(doc.type))}>\n {doc.type}\n </span>\n {doc.description && (\n <p className=\"text-sm text-foreground mt-1\">{doc.description}</p>\n )}\n <p className=\"text-xs text-muted-foreground mt-1\">\n {doc.size} • Uploaded by {doc.uploadedBy} • {new Date(doc.uploadedAt).toLocaleDateString()}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => toast({ title: \"Preview\", description: `Viewing ${doc.name}` })}\n >\n <Eye className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => toast({ title: \"Download\", description: `Downloading ${doc.name}` })}\n >\n <Download className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 text-muted-foreground hover:text-foreground\"\n onClick={() => toast({ title: \"Delete\", description: `Deleted ${doc.name}` })}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n )\n}\n","interface InfoFieldProps {\n label?: string\n value: string | React.ReactNode\n layout?: 'vertical' | 'horizontal' | 'compact'\n className?: string\n}\n\nimport React from \"react\"\n\nexport const InfoField = ({ label, value, layout = 'vertical', className }: InfoFieldProps) => {\n if (layout === 'horizontal') {\n return (\n <div className={`flex items-start gap-3 ${className || ''}`}>\n {label && <p className=\"text-sm font-medium text-muted-foreground flex-shrink-0 max-w-[50%]\">{label}</p>}\n <div className=\"text-sm text-foreground flex-1 min-w-0 break-words\">{value}</div>\n </div>\n )\n }\n\n if (layout === 'compact') {\n return (\n <div className={`flex items-center gap-2 ${className || ''}`}>\n {label && <p className=\"text-xs font-medium text-muted-foreground\">{label}:</p>}\n <div className=\"text-xs text-foreground\">{value}</div>\n </div>\n )\n }\n\n // Default vertical layout\n return (\n <div className={className}>\n {label && <p className=\"text-sm font-medium text-muted-foreground\">{label}</p>}\n <div className={`text-sm text-foreground ${label ? 'mt-1' : ''}`}>{value}</div>\n </div>\n )\n}","import * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n))\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n))\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\n\nexport { ScrollArea, ScrollBar }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n))\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-white/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-4xl translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] rounded-lg max-h-[90vh] overflow-hidden\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","import { useState } from \"react\"\nimport { ChevronDown, ChevronRight, Copy, Check } from \"lucide-react\"\nimport { Button } from \"./button\"\nimport { cn } from \"@/lib/utils\"\n\ninterface JsonViewerProps {\n data: any\n className?: string\n compact?: boolean\n maxHeight?: string\n}\n\nexport const JsonViewer = ({ data, className, compact = false, maxHeight = \"60vh\" }: JsonViewerProps) => {\n const [copied, setCopied] = useState(false)\n\n const handleCopy = () => {\n navigator.clipboard.writeText(JSON.stringify(data, null, 2))\n setCopied(true)\n setTimeout(() => setCopied(false), 2000)\n }\n\n return (\n <div className={cn(\"relative\", className)}>\n <div className={cn(\"absolute z-10\", compact ? \"right-1 top-1\" : \"right-2 top-2\")}>\n <Button\n variant=\"outline\"\n size={compact ? \"sm\" : \"sm\"}\n onClick={handleCopy}\n className={cn(\"gap-2\", compact && \"h-7 text-xs px-2\")}\n >\n {copied ? (\n <>\n <Check className=\"h-3 w-3\" />\n {!compact && \"Copied\"}\n </>\n ) : (\n <>\n <Copy className=\"h-3 w-3\" />\n {!compact && \"Copy JSON\"}\n </>\n )}\n </Button>\n </div>\n <div \n className={cn(\n \"overflow-auto bg-muted/30 rounded-lg border font-mono\",\n compact ? \"max-h-[300px] p-2 text-xs\" : `max-h-[${maxHeight}] p-4 text-xs`\n )}\n style={{ maxHeight: compact ? \"300px\" : maxHeight }}\n >\n <JsonNode data={data} name=\"root\" depth={0} compact={compact} />\n </div>\n </div>\n )\n}\n\ninterface JsonNodeProps {\n data: any\n name: string\n depth: number\n compact?: boolean\n}\n\nconst JsonNode = ({ data, name, depth, compact = false }: JsonNodeProps) => {\n const [isExpanded, setIsExpanded] = useState(compact ? depth < 1 : depth < 2)\n\n const indent = compact ? depth * 12 : depth * 16\n\n if (data === null) {\n return (\n <div style={{ paddingLeft: indent }} className=\"text-muted-foreground\">\n <span className=\"text-primary\">{name}</span>: <span className=\"text-orange-500\">null</span>\n </div>\n )\n }\n\n if (typeof data !== \"object\") {\n const valueClass = \n typeof data === \"string\" ? \"text-green-600 dark:text-green-400\" :\n typeof data === \"number\" ? \"text-blue-600 dark:text-blue-400\" :\n typeof data === \"boolean\" ? \"text-orange-500\" :\n \"text-foreground\"\n\n return (\n <div style={{ paddingLeft: indent }}>\n <span className=\"text-primary\">{name}</span>:{\" \"}\n <span className={valueClass}>\n {typeof data === \"string\" ? `\"${data}\"` : String(data)}\n </span>\n </div>\n )\n }\n\n const isArray = Array.isArray(data)\n const entries = isArray ? data : Object.entries(data)\n const isEmpty = entries.length === 0\n\n return (\n <div style={{ paddingLeft: indent }}>\n <div\n className=\"flex items-center gap-1 cursor-pointer hover:bg-muted/50 rounded\"\n onClick={() => !isEmpty && setIsExpanded(!isExpanded)}\n >\n {!isEmpty && (\n isExpanded ? (\n <ChevronDown className=\"h-3 w-3 text-muted-foreground\" />\n ) : (\n <ChevronRight className=\"h-3 w-3 text-muted-foreground\" />\n )\n )}\n <span className=\"text-primary\">{name}</span>\n <span className=\"text-muted-foreground\">\n {isArray ? \"[\" : \"{\"}\n {!isExpanded && !isEmpty && \"...\"}\n {isEmpty && (isArray ? \"]\" : \"}\")}\n </span>\n </div>\n {isExpanded && !isEmpty && (\n <div>\n {isArray\n ? data.map((item: any, index: number) => (\n <JsonNode\n key={index}\n data={item}\n name={String(index)}\n depth={depth + 1}\n compact={compact}\n />\n ))\n : Object.entries(data).map(([key, value]) => (\n <JsonNode\n key={key}\n data={value}\n name={key}\n depth={depth + 1}\n compact={compact}\n />\n ))}\n <div style={{ paddingLeft: indent }} className=\"text-muted-foreground\">\n {isArray ? \"]\" : \"}\"}\n </div>\n </div>\n )}\n </div>\n )\n}\n","import { useState } from \"react\"\nimport { FormCard } from \"@/components/ui/form-card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { AlertTimeline } from \"@/components/alerts/AlertTimeline\"\nimport { AlertNotes } from \"@/components/alerts/AlertNotes\"\nimport { AlertDocuments } from \"@/components/alerts/AlertDocuments\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport type { Alert } from \"@/lib/mock-data/alert-data\"\nimport { Link } from \"react-router-dom\"\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { Button } from \"@/components/ui/button\"\nimport { FileJson } from \"lucide-react\"\nimport { JsonViewer } from \"@/components/ui/json-viewer\"\n\nexport interface OFACAlertViewProps {\n alert: Alert\n}\n\nexport const OFACAlertView = ({ alert }: OFACAlertViewProps) => {\n const [isJsonDialogOpen, setIsJsonDialogOpen] = useState(false)\n\n // Parse OFAC raw results and create table rows\n const parseOFACMatches = (data: any) => {\n if (!data.rawResults || !data.ofacCheckDetails) return []\n\n try {\n const rawResults = JSON.parse(data.rawResults)\n const tableRows: any[] = []\n\n // Helper to get user-friendly list names\n const getListName = (listType: string) => {\n const listNames: Record<string, string> = {\n 'SDNs': 'OFAC SDN List',\n 'altNames': 'OFAC Alternate Names',\n 'sectoralSanctions': 'OFAC Sectoral Sanctions',\n 'nonSDNMenuBasedSanctionsList': 'OFAC Non-SDN List',\n 'ukConsolidatedSanctionsList': 'UK Consolidated List'\n }\n return listNames[listType] || listType\n }\n\n // Helper to format check key\n const formatCheckKey = (key: string) => {\n return key\n .replace(/([A-Z])/g, ' $1')\n .replace(/^./, str => str.toUpperCase())\n .trim()\n }\n\n // Process each list type\n const listTypes = [\n { key: 'SDNs', nameField: 'sdnName' },\n { key: 'altNames', nameField: 'alternateName' },\n { key: 'sectoralSanctions', nameField: 'Name' },\n { key: 'nonSDNMenuBasedSanctionsList', nameField: 'Name' },\n { key: 'ukConsolidatedSanctionsList', nameField: 'Names' }\n ]\n\n listTypes.forEach(({ key, nameField }) => {\n const list = rawResults[key]\n if (list && Array.isArray(list)) {\n list.forEach((item: any) => {\n // For each check detail, create rows if there's a match\n data.ofacCheckDetails.forEach((check: any) => {\n // Only create row if the match is relevant to this check\n // For simplicity, we're showing all matches for all checks\n tableRows.push({\n type: formatCheckKey(check.checkKey),\n name: check.checkValue,\n matchedName: item.matchedName || item[nameField] || 'N/A',\n list: getListName(key),\n matchScore: item.match ? `${(item.match * 100).toFixed(2)}%` : 'N/A'\n })\n })\n })\n }\n })\n\n return tableRows\n } catch (error) {\n console.error('Error parsing OFAC results:', error)\n return []\n }\n }\n\n const renderOFACContext = () => {\n const data = alert.contextData\n if (!data) return null\n\n const tableRows = parseOFACMatches(data)\n\n // Determine entity name and link\n const entityName = data.counterpartyName || data.businessName || data.individualName || data.transactionPaymentId || 'N/A'\n const entityType = data.counterpartyName ? 'Counterparty' \n : data.businessName ? 'Business' \n : data.individualName ? 'Individual' \n : data.transactionPaymentId ? 'Transaction'\n : 'N/A'\n const entityId = data.counterpartyId || data.businessId || data.individualId || data.transactionPaymentId\n const entityLink = entityId \n ? data.counterpartyId ? `/counterparties/${entityId}` \n : data.businessId ? `/businesses/${entityId}` \n : data.individualId ? `/individuals/${entityId}`\n : data.transactionPaymentId ? `/transactions/${entityId}`\n : null\n : null\n\n return (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField \n label=\"Entity Name\" \n value={\n entityLink ? (\n <Link \n to={entityLink} \n className=\"text-primary hover:underline\"\n >\n {entityName}\n </Link>\n ) : entityName\n } \n layout=\"horizontal\" \n />\n <InfoField label=\"Entity Type\" value={entityType} layout=\"horizontal\" />\n </div>\n\n {tableRows.length > 0 && (\n <div className=\"mt-4\">\n <ScrollArea className=\"h-[300px] rounded-md border\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>Type</TableHead>\n <TableHead>Name</TableHead>\n <TableHead>Matched Name</TableHead>\n <TableHead className=\"flex items-center gap-1\">\n <span>List</span>\n <Dialog open={isJsonDialogOpen} onOpenChange={setIsJsonDialogOpen}>\n <DialogTrigger asChild>\n <Button \n variant=\"ghost\" \n size=\"icon\"\n className=\"h-6 w-6 text-primary hover:text-primary/80\"\n >\n <FileJson className=\"h-4 w-4\" />\n </Button>\n </DialogTrigger>\n <DialogContent className=\"max-w-4xl max-h-[80vh]\">\n <DialogHeader>\n <DialogTitle>OFAC Raw Results</DialogTitle>\n <DialogDescription>\n Complete JSON response from the OFAC screening check\n </DialogDescription>\n </DialogHeader>\n <JsonViewer \n data={data.rawResults ? JSON.parse(data.rawResults) : {}} \n maxHeight=\"60vh\"\n />\n </DialogContent>\n </Dialog>\n </TableHead>\n <TableHead>Match Score</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {tableRows.map((row, index) => (\n <TableRow key={index}>\n <TableCell>{row.type}</TableCell>\n <TableCell>{row.name}</TableCell>\n <TableCell>{row.matchedName}</TableCell>\n <TableCell>{row.list}</TableCell>\n <TableCell>{row.matchScore}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </ScrollArea>\n </div>\n )}\n </div>\n )\n }\n\n const renderTransactionContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Transaction ID\" value=\"TXN-12345\" />\n <InfoField label=\"Amount\" value=\"$30,000.00\" />\n <InfoField label=\"Transaction Type\" value=\"Wire Transfer\" />\n <InfoField label=\"Date\" value=\"2025-09-30\" />\n </div>\n )\n }\n\n const renderFileRecordContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"File Name\" value=\"wire_batch_093025.csv\" />\n <InfoField label=\"Record Count\" value=\"1,234\" />\n <InfoField label=\"Error Count\" value=\"3\" />\n <InfoField label=\"Status\" value={<Badge variant=\"alert-error\">Failed</Badge>} />\n </div>\n )\n }\n\n const renderProductContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Product ID\" value=\"PROD-2787\" />\n <InfoField label=\"Product Name\" value=\"Business Checking Account\" />\n <InfoField label=\"Status\" value=\"Pending Deactivation\" />\n <InfoField label=\"Reason\" value=\"Compliance review required\" />\n </div>\n )\n }\n\n const getContextTitle = () => {\n switch (alert.contextType) {\n case \"Ofac\":\n return \"OFAC Context\"\n case \"Transaction\":\n return \"Transaction Context\"\n case \"File Record\":\n return \"File Processing Context\"\n case \"Product\":\n return \"Product Context\"\n default:\n return \"Context Information\"\n }\n }\n\n const renderContext = () => {\n switch (alert.contextType) {\n case \"Ofac\":\n return renderOFACContext()\n case \"Transaction\":\n return renderTransactionContext()\n case \"File Record\":\n return renderFileRecordContext()\n case \"Product\":\n return renderProductContext()\n default:\n return <p className=\"text-sm text-muted-foreground\">No additional context available</p>\n }\n }\n\n return (\n <div className=\"flex flex-col lg:flex-row gap-6\">\n {/* Left Section: 2x2 Grid */}\n <div className=\"flex-1 grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <FormCard title=\"Alert Details\" className=\"lg:col-span-2\">\n <div className=\"space-y-3\">\n {/* Description */}\n <InfoField label=\"Description\" value={alert.description} layout=\"horizontal\" />\n\n {/* OFAC Context Data */}\n {renderContext()}\n </div>\n </FormCard>\n\n {/* Notes Section */}\n <FormCard title=\"Notes\">\n <AlertNotes alertId={alert.id} notes={alert.notes || []} />\n </FormCard>\n\n {/* Documents Section */}\n <FormCard title=\"Documents\">\n <AlertDocuments alertId={alert.id} documents={alert.documents || []} />\n </FormCard>\n </div>\n\n {/* Right Section: Timeline Column */}\n <div className=\"lg:w-64\">\n <FormCard title=\"Status Timeline\" className=\"h-full\">\n <AlertTimeline events={alert.timeline || []} />\n </FormCard>\n </div>\n\n </div>\n )\n}\n","import type { Alert } from \"@/lib/mock-data/alert-data\"\nimport { OFACAlertView } from \"./OFACAlertView\"\n\nexport interface AlertDetailRouterProps {\n alert: Alert\n}\n\nexport const AlertDetailRouter = ({ alert }: AlertDetailRouterProps) => {\n // Route to appropriate view based on alert type\n switch (alert.type) {\n case \"Ofac\":\n return <OFACAlertView alert={alert} />\n \n case \"Transaction Monitoring\":\n // TODO: Create TransactionMonitoringAlertView\n return <div>Transaction Monitoring view - Coming soon</div>\n \n case \"Prohibited Entity\":\n // TODO: Create ProhibitedEntityAlertView\n return <div>Prohibited Entity view - Coming soon</div>\n \n case \"314a\":\n // TODO: Create Alert314aView\n return <div>314a view - Coming soon</div>\n \n case \"Dual Approval\":\n // TODO: Create DualApprovalAlertView\n return <div>Dual Approval view - Coming soon</div>\n \n case \"Transaction Processing Error\":\n // TODO: Create TransactionProcessingErrorAlertView\n return <div>Transaction Processing Error view - Coming soon</div>\n \n case \"ACH Return\":\n // TODO: Create ACHReturnAlertView\n return <div>ACH Return view - Coming soon</div>\n \n default:\n return <div>Unknown alert type: {alert.type}</div>\n }\n}\n","// Shared constants for form options across the application\n\nexport const COUNTRY_OPTIONS = [\n { value: \"US\", label: \"United States\" },\n { value: \"CA\", label: \"Canada\" },\n { value: \"GB\", label: \"United Kingdom\" },\n { value: \"DE\", label: \"Germany\" },\n { value: \"FR\", label: \"France\" }\n]\n\nexport const FI_ID_TYPE_OPTIONS = [\n { value: \"bic\", label: \"BIC\" },\n { value: \"swift\", label: \"SWIFT\" },\n { value: \"aba\", label: \"ABA\" },\n { value: \"iban\", label: \"IBAN\" },\n { value: \"routing\", label: \"Routing Number\" }\n]\n\nexport const ADDRESS_TYPE_OPTIONS = {\n FI: [\n { value: \"headquarters\", label: \"Headquarters\" },\n { value: \"branch\", label: \"Branch Office\" },\n { value: \"correspondent\", label: \"Correspondent Bank\" }\n ]\n}\n\nexport const RFI_STATUS_OPTIONS = [\n { value: \"Completed\", label: \"Completed\" },\n { value: \"Provided\", label: \"Provided\" },\n { value: \"Pending\", label: \"Pending\" }\n]\n\nexport const ASSIGNEE_OPTIONS = [\n { value: \"John Smith\", label: \"John Smith\" },\n { value: \"Sarah Johnson\", label: \"Sarah Johnson\" },\n { value: \"Michael Chen\", label: \"Michael Chen\" },\n { value: \"approverdev\", label: \"approverdev\" },\n { value: \"Unassigned\", label: \"Unassigned\" }\n]","export const getTypeBadgeVariant = (type: string): any => {\n switch (type) {\n case \"Ofac\":\n return \"alert-ofac\"\n case \"Dual Approval\":\n return \"alert-dual\"\n case \"Transaction Monitoring\":\n return \"alert-monitoring\"\n case \"Transaction Processing Error\":\n return \"alert-error\"\n default:\n return \"outline\"\n }\n}\n\nexport const getStatusColor = (status: string) => {\n switch (status) {\n case \"Unassigned\":\n return \"text-destructive\"\n case \"Closed\":\n return \"text-success\"\n case \"In Progress\":\n return \"text-warning\"\n default:\n return \"\"\n }\n}\n","import { Badge } from \"@/components/ui/badge\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { RFI_STATUS_OPTIONS, ASSIGNEE_OPTIONS } from \"@/lib/constants\"\nimport { cn } from \"@/lib/utils\"\nimport { getStatusColor } from \"@/lib/utils/alert-utils\"\n\ninterface AlertHeaderControlsProps {\n status: string\n assignee: string\n rfiStatus: string\n onAssigneeChange: (value: string) => void\n onRfiStatusChange: (value: string) => void\n}\n\nexport const AlertHeaderControls = ({\n status,\n assignee,\n rfiStatus,\n onAssigneeChange,\n onRfiStatusChange\n}: AlertHeaderControlsProps) => {\n return (\n <div className=\"flex items-center gap-4\">\n {/* Status Display */}\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">Status:</span>\n <span className={cn(\"font-medium text-sm\", getStatusColor(status))}>{status}</span>\n </div>\n\n {/* Assignee Select */}\n <div className=\"flex items-center gap-2 min-w-[180px]\">\n <span className=\"text-sm text-muted-foreground\">Assignee:</span>\n <EnhancedSelect\n value={assignee}\n onValueChange={onAssigneeChange}\n options={ASSIGNEE_OPTIONS}\n placeholder=\"Unassigned\"\n />\n </div>\n\n {/* RFI Status Select */}\n <div className=\"flex items-center gap-2 min-w-[180px]\">\n <span className=\"text-sm text-muted-foreground\">RFI Status:</span>\n <EnhancedSelect\n value={rfiStatus}\n onValueChange={onRfiStatusChange}\n options={RFI_STATUS_OPTIONS}\n placeholder=\"Select status\"\n />\n </div>\n </div>\n )\n}\n","import { useState } from \"react\"\nimport { Alert } from \"@/lib/mock-data/alert-data\"\nimport { FormCard } from \"@/components/ui/form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from \"@/components/ui/dialog\"\nimport { JsonViewer } from \"@/components/ui/json-viewer\"\nimport { ChevronRight } from \"lucide-react\"\n\ninterface ContextSectionProps {\n alert: Alert\n}\n\nexport const ContextSection = ({ alert }: ContextSectionProps) => {\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n\n const renderOFACContext = () => {\n const data = alert.contextData\n if (!data) return null\n\n return (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Entity Name\" value={data.entityName} />\n <InfoField label=\"Entity Type\" value={data.entityType} />\n <InfoField label=\"Match Score\" value={<Badge variant=\"alert-ofac\">{data.matchScore}</Badge>} />\n <InfoField label=\"List Name\" value={data.listName} />\n </div>\n\n <div>\n <h4 className=\"text-sm font-medium mb-3\">Flagged Items</h4>\n <div className=\"overflow-x-auto border rounded-lg\">\n <table className=\"w-full\">\n <thead className=\"border-b bg-muted/50\">\n <tr>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">Field</th>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">Value</th>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">Match Score</th>\n </tr>\n </thead>\n <tbody>\n {data.flaggedItems?.map((item: any, index: number) => (\n <tr key={index} className=\"border-b hover:bg-muted/50\">\n <td className=\"px-4 py-3 text-sm font-medium\">{item.field}</td>\n <td className=\"px-4 py-3 text-sm\">{item.value}</td>\n <td className=\"px-4 py-3\">\n <Badge variant={parseInt(item.matchScore) > 90 ? \"alert-ofac\" : \"outline\"}>\n {item.matchScore}\n </Badge>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n\n {alert.contextData && (\n <div>\n <Button \n variant=\"ghost\" \n className=\"w-full justify-between h-auto py-3 px-4 border rounded-lg hover:bg-muted/50\"\n onClick={() => setIsDialogOpen(true)}\n >\n <span className=\"text-sm font-medium\">Detail Result</span>\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n )}\n </div>\n )\n }\n\n const renderTransactionContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Transaction ID\" value=\"TXN-12345\" />\n <InfoField label=\"Amount\" value=\"$30,000.00\" />\n <InfoField label=\"Transaction Type\" value=\"Wire Transfer\" />\n <InfoField label=\"Date\" value=\"2025-09-30\" />\n </div>\n )\n }\n\n const renderFileRecordContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"File Name\" value=\"wire_batch_093025.csv\" />\n <InfoField label=\"Record Count\" value=\"1,234\" />\n <InfoField label=\"Error Count\" value=\"3\" />\n <InfoField label=\"Status\" value={<Badge variant=\"alert-error\">Failed</Badge>} />\n </div>\n )\n }\n\n const renderProductContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Product ID\" value=\"PROD-2787\" />\n <InfoField label=\"Product Name\" value=\"Business Checking Account\" />\n <InfoField label=\"Status\" value=\"Pending Deactivation\" />\n <InfoField label=\"Reason\" value=\"Compliance review required\" />\n </div>\n )\n }\n\n const getContextTitle = () => {\n switch (alert.contextType) {\n case \"Ofac\":\n return \"OFAC Context\"\n case \"Transaction\":\n return \"Transaction Context\"\n case \"File Record\":\n return \"File Processing Context\"\n case \"Product\":\n return \"Product Context\"\n default:\n return \"Context Information\"\n }\n }\n\n const renderContext = () => {\n switch (alert.contextType) {\n case \"Ofac\":\n return renderOFACContext()\n case \"Transaction\":\n return renderTransactionContext()\n case \"File Record\":\n return renderFileRecordContext()\n case \"Product\":\n return renderProductContext()\n default:\n return <p className=\"text-sm text-muted-foreground\">No additional context available</p>\n }\n }\n\n\n return (\n <>\n <FormCard title={getContextTitle()}>\n {renderContext()}\n </FormCard>\n\n <Dialog open={isDialogOpen} onOpenChange={setIsDialogOpen}>\n <DialogContent className=\"max-w-4xl\">\n <DialogHeader>\n <DialogTitle>{getContextTitle()} - Detail Result</DialogTitle>\n </DialogHeader>\n <JsonViewer data={alert.contextData} />\n </DialogContent>\n </Dialog>\n </>\n )\n}\n","import * as React from \"react\"\nimport { FormProvider as RHFFormProvider, UseFormReturn, FieldValues } from \"react-hook-form\"\n\ninterface FormProviderProps<T extends FieldValues> {\n form: UseFormReturn<T>\n children: React.ReactNode\n}\n\nexport const FormProvider = <T extends FieldValues>({ \n form, \n children \n}: FormProviderProps<T>) => {\n return (\n <RHFFormProvider {...form}>\n {children}\n </RHFFormProvider>\n )\n}","import * as React from \"react\"\nimport { Controller, useFormContext, FieldPath, FieldValues } from \"react-hook-form\"\nimport { EnhancedInput, type InputProps } from \"@/components/ui/enhanced-input\"\n\ninterface FormInputProps<T extends FieldValues = FieldValues> extends Omit<InputProps, 'error' | 'name'> {\n name: FieldPath<T>\n}\n\nexport const FormInput = <T extends FieldValues = FieldValues>({ \n name, \n ...props \n}: FormInputProps<T>) => {\n const { control, formState } = useFormContext<T>()\n const error = formState.errors[name]?.message as string | undefined\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <EnhancedInput\n {...props}\n {...field}\n error={error}\n />\n )}\n />\n )\n}","import * as React from \"react\"\nimport { Controller, useFormContext, FieldPath, FieldValues } from \"react-hook-form\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\n\ninterface FormSelectProps<T extends FieldValues = FieldValues> {\n name: FieldPath<T>\n label?: string\n hint?: string\n placeholder?: string\n options: { value: string; label: string; disabled?: boolean }[]\n disabled?: boolean\n className?: string\n}\n\nexport const FormSelect = <T extends FieldValues = FieldValues>({ \n name, \n ...props \n}: FormSelectProps<T>) => {\n const { control, formState } = useFormContext<T>()\n const error = formState.errors[name]?.message as string | undefined\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <EnhancedSelect\n {...props}\n value={field.value}\n onValueChange={field.onChange}\n error={error}\n />\n )}\n />\n )\n}","import { useState, useCallback, useEffect } from \"react\"\nimport { useForm, UseFormProps, UseFormReturn, FieldValues, Path } from \"react-hook-form\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { z } from \"zod\"\n\ninterface UseFormWithEditStateProps<T extends FieldValues> extends UseFormProps<T> {\n schema?: z.ZodSchema<T>\n initialEditing?: boolean\n onToggleEdit?: () => void\n onSave?: (data: T) => void | Promise<void>\n onCancel?: () => void\n}\n\ninterface UseFormWithEditStateReturn<T extends FieldValues> extends UseFormReturn<T> {\n isEditing: boolean\n isLoading: boolean\n handleToggleEdit: () => void\n handleSave: () => Promise<void>\n handleCancel: () => void\n isFormValid: boolean\n isDirty: boolean\n setFieldError: (field: Path<T>, error: string) => void\n}\n\nexport const useFormWithEditState = <T extends FieldValues>({\n schema,\n initialEditing = false,\n onToggleEdit,\n onSave,\n onCancel,\n ...formProps\n}: UseFormWithEditStateProps<T>): UseFormWithEditStateReturn<T> => {\n const [localEditing, setLocalEditing] = useState(initialEditing)\n const [isLoading, setIsLoading] = useState(false)\n \n const form = useForm<T>({\n ...formProps,\n resolver: schema ? zodResolver(schema) : undefined,\n })\n\n const { formState, reset, setError } = form\n const { isValid, isDirty } = formState\n \n // Sync local state with prop changes\n useEffect(() => {\n setLocalEditing(initialEditing)\n }, [initialEditing])\n \n const isEditing = onToggleEdit !== undefined ? initialEditing : localEditing\n \n const handleToggleEdit = useCallback(() => {\n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(prev => !prev)\n }\n }, [onToggleEdit])\n \n const handleSave = useCallback(async () => {\n if (!isValid) return\n \n setIsLoading(true)\n \n try {\n const data = form.getValues()\n if (onSave) {\n await onSave(data)\n }\n \n // Exit edit mode after successful save\n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(false)\n }\n } catch (error) {\n console.error(\"Form save error:\", error)\n // Don't exit edit mode on error\n } finally {\n setIsLoading(false)\n }\n }, [form, isValid, onSave, onToggleEdit])\n \n const handleCancel = useCallback(() => {\n // Reset form to original values\n reset()\n \n if (onCancel) {\n onCancel()\n }\n \n // Exit edit mode\n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(false)\n }\n }, [reset, onCancel, onToggleEdit])\n\n const setFieldError = useCallback((field: Path<T>, error: string) => {\n setError(field, { type: \"manual\", message: error })\n }, [setError])\n \n return {\n ...form,\n isEditing,\n isLoading,\n handleToggleEdit,\n handleSave,\n handleCancel,\n isFormValid: isValid,\n isDirty,\n setFieldError,\n }\n}","import { z } from \"zod\"\n\nexport const resolveAlertSchema = z.object({\n action: z.enum([\"APPROVE\", \"DECLINE\", \"CLOSE\"], {\n required_error: \"Please select an action\",\n }),\n changeToAccount: z.string().optional(),\n note: z.string().min(1, \"Note is required\").max(1000, \"Note must be less than 1000 characters\"),\n returnCode: z.string().optional(),\n}).refine((data) => {\n // If action is DECLINE, returnCode should be provided\n if (data.action === \"DECLINE\" && !data.returnCode) {\n return false\n }\n return true\n}, {\n message: \"Return code is required when declining\",\n path: [\"returnCode\"],\n})\n\nexport type ResolveAlertFormData = z.infer<typeof resolveAlertSchema>\n\nexport const RETURN_CODES = [\n { value: \"R03_NO_ACCOUNT\", label: \"R03 - No Account/Unable to Locate Account\" },\n { value: \"R01_INSUFFICIENT_FUNDS\", label: \"R01 - Insufficient Funds\" },\n { value: \"R02_ACCOUNT_CLOSED\", label: \"R02 - Account Closed\" },\n { value: \"R04_INVALID_ACCOUNT\", label: \"R04 - Invalid Account Number\" },\n { value: \"R10_UNAUTHORIZED\", label: \"R10 - Customer Advises Unauthorized\" },\n { value: \"R07_AUTHORIZATION_REVOKED\", label: \"R07 - Authorization Revoked\" },\n { value: \"R08_PAYMENT_STOPPED\", label: \"R08 - Payment Stopped\" },\n { value: \"R09_UNCOLLECTED_FUNDS\", label: \"R09 - Uncollected Funds\" },\n] as const\n","import { useState } from \"react\"\nimport { Controller } from \"react-hook-form\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\nimport { Button } from \"@/components/ui/button\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { EnhancedTextarea } from \"@/components/ui/enhanced-textarea\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { resolveAlertSchema, type ResolveAlertFormData, RETURN_CODES } from \"@/lib/schemas/alert-schemas\"\nimport { toast } from \"@/hooks/use-toast\"\n\ninterface ResolveAlertDialogProps {\n alertId: string\n open: boolean\n onOpenChange: (open: boolean) => void\n onResolve: (data: ResolveAlertFormData) => Promise<void>\n}\n\nexport const ResolveAlertDialog = ({ \n alertId, \n open, \n onOpenChange,\n onResolve \n}: ResolveAlertDialogProps) => {\n const form = useFormWithEditState<ResolveAlertFormData>({\n schema: resolveAlertSchema,\n defaultValues: {\n action: \"APPROVE\",\n changeToAccount: \"\",\n note: \"\",\n returnCode: \"\",\n },\n })\n\n const { handleSubmit, watch, control, formState } = form\n const action = watch(\"action\")\n\n const onSubmit = async (data: ResolveAlertFormData) => {\n try {\n await onResolve(data)\n toast({\n title: \"Alert Resolved\",\n description: `Alert #${alertId} has been ${data.action.toLowerCase()}d successfully.`,\n })\n onOpenChange(false)\n form.reset()\n } catch (error) {\n toast({\n title: \"Error\",\n description: \"Failed to resolve alert. Please try again.\",\n variant: \"destructive\",\n })\n }\n }\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"sm:max-w-[600px]\">\n <DialogHeader>\n <DialogTitle>Resolve Alert #{alertId}</DialogTitle>\n <DialogDescription>\n Select an action and provide details to resolve this alert.\n </DialogDescription>\n </DialogHeader>\n\n <FormProvider form={form}>\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-4\">\n <FormSelect\n name=\"action\"\n label=\"Action\"\n placeholder=\"Select action\"\n options={[\n { value: \"APPROVE\", label: \"Approve\" },\n { value: \"DECLINE\", label: \"Decline\" },\n { value: \"CLOSE\", label: \"Close\" },\n ]}\n />\n\n <FormInput\n name=\"changeToAccount\"\n label=\"Change to Account (Optional)\"\n placeholder=\"Enter account number\"\n />\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-foreground\">\n Note <span className=\"text-destructive\">*</span>\n </label>\n <Controller\n name=\"note\"\n control={control}\n render={({ field }) => (\n <EnhancedTextarea\n {...field}\n placeholder=\"Enter resolution notes...\"\n rows={4}\n error={formState.errors.note?.message}\n />\n )}\n />\n </div>\n\n {action === \"DECLINE\" && (\n <FormSelect\n name=\"returnCode\"\n label=\"Return Code\"\n placeholder=\"Select return code\"\n options={RETURN_CODES.map(code => ({\n value: code.value,\n label: code.label,\n }))}\n />\n )}\n\n <DialogFooter>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => {\n onOpenChange(false)\n form.reset()\n }}\n >\n Cancel\n </Button>\n <Button \n type=\"submit\" \n disabled={!formState.isValid || formState.isSubmitting}\n >\n {formState.isSubmitting ? \"Submitting...\" : \"Resolve\"}\n </Button>\n </DialogFooter>\n </form>\n </FormProvider>\n </DialogContent>\n </Dialog>\n )\n}\n","import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }","\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-white/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-foreground\", className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}","import * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 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\",\n className\n )}\n {...props}\n />\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { VariantProps, cva } from \"class-variance-authority\"\nimport { PanelLeft } from \"lucide-react\"\n\nimport { useIsMobile } from \"@/hooks/use-mobile\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Separator } from \"@/components/ui/separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"@/components/ui/sheet\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar:state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"15rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContext = {\n state: \"expanded\" | \"collapsed\"\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContext | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n }\n>(\n (\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile\n ? setOpenMobile((open) => !open)\n : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContext>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n }\n)\nSidebarProvider.displayName = \"SidebarProvider\"\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n }\n>(\n (\n {\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n },\n ref\n ) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n className={cn(\n \"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n ref={ref}\n className=\"group peer hidden md:block text-sidebar-foreground\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n \"duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\"\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\"\n )}\n />\n <div\n className={cn(\n \"duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\"\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n }\n)\nSidebar.displayName = \"Sidebar\"\n\nconst SidebarTrigger = React.forwardRef<\n React.ElementRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeft />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n})\nSidebarTrigger.displayName = \"SidebarTrigger\"\n\nconst SidebarRail = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\">\n>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\",\n \"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarRail.displayName = \"SidebarRail\"\n\nconst SidebarInset = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n \"relative flex min-h-svh flex-1 flex-col bg-background\",\n \"peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInset.displayName = \"SidebarInset\"\n\nconst SidebarInput = React.forwardRef<\n React.ElementRef<\"input\">,\n React.ComponentProps<\"input\">\n>(({ className, ...props }, ref) => {\n return (\n <input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n \"flex h-8 w-full rounded-md bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInput.displayName = \"SidebarInput\"\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarHeader.displayName = \"SidebarHeader\"\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarFooter.displayName = \"SidebarFooter\"\n\nconst SidebarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n {...props}\n />\n )\n})\nSidebarSeparator.displayName = \"SidebarSeparator\"\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarContent.displayName = \"SidebarContent\"\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n )\n})\nSidebarGroup.displayName = \"SidebarGroup\"\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n \"duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\"\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupAction.displayName = \"SidebarGroupAction\"\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n )\n})\nSidebarGroupContent.displayName = \"SidebarGroupContent\"\n\nconst SidebarMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => {\n return (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n )\n})\nSidebarMenu.displayName = \"SidebarMenu\"\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => {\n return (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n )\n})\nSidebarMenuItem.displayName = \"SidebarMenuItem\"\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md pl-4 pr-2 py-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:!size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n }\n)\nSidebarMenuButton.displayName = \"SidebarMenuButton\"\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n showOnHover?: boolean\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n \"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuAction.displayName = \"SidebarMenuAction\"\n\nconst SidebarMenuBadge = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n \"absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground select-none pointer-events-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\"\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn(\"rounded-md h-8 flex gap-2 px-2 items-center\", className)}\n {...props}\n >\n {showIcon && (\n <div className=\"flex size-4 rounded-sm bg-sidebar-primary/10\" />\n )}\n <div\n className=\"h-4 flex-1 max-w-[--skeleton-width] rounded-sm bg-sidebar-primary/10\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n})\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\"\n\nconst SidebarMenuSub = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => {\n return (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuSub.displayName = \"SidebarMenuSub\"\n\nconst SidebarMenuSubItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ ...props }, ref) => {\n return <li ref={ref} {...props} />\n})\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\"\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<\"a\"> & {\n asChild?: boolean\n size?: \"sm\" | \"md\"\n isActive?: boolean\n }\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md pl-4 pr-2 py-1 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-foreground/50\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\"\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","import { \n LayoutDashboard, Bell, Briefcase, ArrowLeftRight, FileText, Users, Building2, \n CreditCard, Shield, RefreshCw, DollarSign, Zap, Settings, User, Key,\n Upload, AlertCircle, TrendingUp, Box, BarChart3, FileCheck, Receipt,\n Landmark, Search, Repeat, CheckCircle, ChevronRight\n} from \"lucide-react\"\nimport { NavLink, useLocation } from \"react-router-dom\"\nimport { useState } from \"react\"\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from \"@radix-ui/react-collapsible\"\nimport braidLogo from \"@/assets/braid-logo.png\"\n\nimport {\n Sidebar,\n SidebarContent,\n SidebarGroup,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuBadge,\n SidebarMenuSub,\n SidebarMenuSubItem,\n SidebarMenuSubButton,\n SidebarTrigger,\n useSidebar,\n} from \"@/components/ui/sidebar\"\n\nconst navigationItems = [\n {\n title: \"Dashboard\",\n url: \"/dashboard\",\n icon: LayoutDashboard,\n },\n {\n title: \"Alerts and Cases\",\n icon: Bell,\n items: [\n {\n title: \"Alerts\",\n url: \"/alerts\",\n icon: Bell,\n badge: \"99+\"\n },\n {\n title: \"Cases\",\n url: \"/cases\",\n icon: Briefcase,\n },\n ],\n },\n {\n title: \"Transactions\",\n icon: ArrowLeftRight,\n items: [\n {\n title: \"Transaction History\",\n url: \"/transactions/history\",\n icon: FileText,\n },\n {\n title: \"Transaction Review\",\n url: \"/transactions/review\",\n icon: FileCheck,\n },\n {\n title: \"New Transaction\",\n url: \"/transactions/new\",\n icon: Receipt,\n },\n ],\n },\n {\n title: \"Statement\",\n url: \"/statement\",\n icon: FileText,\n },\n {\n title: \"Individuals\",\n url: \"/individuals\",\n icon: Users,\n },\n {\n title: \"Businesses\",\n url: \"/business\",\n icon: Building2,\n },\n {\n title: \"Counterparty\",\n icon: Briefcase,\n items: [\n {\n title: \"Management\",\n url: \"/counterparty/manage\",\n icon: FileCheck,\n },\n {\n title: \"Create Counterparty\",\n url: \"/counterparty/create\",\n icon: Receipt,\n },\n {\n title: \"Domestic Wire\",\n url: \"/counterparty/domestic-wire\",\n icon: Zap,\n },\n ],\n },\n {\n title: \"Accounts\",\n url: \"/accounts\",\n icon: CreditCard,\n },\n {\n title: \"Compliance\",\n icon: Shield,\n items: [\n {\n title: \"OFAC\",\n url: \"/compliance/ofac\",\n icon: Shield,\n },\n {\n title: \"314a\",\n url: \"/compliance/314a\",\n icon: FileText,\n },\n {\n title: \"Velocity Limits\",\n url: \"/compliance/velocity\",\n icon: TrendingUp,\n },\n ],\n },\n {\n title: \"Recon\",\n icon: RefreshCw,\n items: [\n {\n title: \"File Upload\",\n url: \"/recon/upload\",\n icon: Upload,\n },\n {\n title: \"Exception Review\",\n url: \"/recon/exceptions\",\n icon: AlertCircle,\n },\n ],\n },\n {\n title: \"ACH\",\n icon: Repeat,\n items: [\n {\n title: \"Processing\",\n url: \"/ach/processing\",\n icon: FileText,\n },\n {\n title: \"Settlement\",\n url: \"/ach/settlement\",\n icon: Landmark,\n },\n {\n title: \"Return\",\n url: \"/ach/return\",\n icon: Search,\n },\n {\n title: \"NOC\",\n url: \"/ach/noc\",\n icon: RefreshCw,\n },\n ],\n },\n {\n title: \"Wire\",\n icon: Zap,\n items: [\n {\n title: \"Processing\",\n url: \"/wire/processing\",\n icon: FileText,\n },\n {\n title: \"Settlement\",\n url: \"/wire/settlement\",\n icon: Landmark,\n },\n ],\n },\n {\n title: \"Configurations\",\n icon: Settings,\n items: [\n {\n title: \"Developers\",\n url: \"/configurations/developers\",\n icon: Box,\n },\n {\n title: \"Programs\",\n url: \"/configurations/programs\",\n icon: LayoutDashboard,\n },\n {\n title: \"Products\",\n url: \"/configurations/products\",\n icon: FileText,\n },\n ],\n },\n {\n title: \"ClearSight\",\n url: \"/clearsight\",\n icon: BarChart3,\n },\n {\n title: \"Settings\",\n icon: Settings,\n items: [\n {\n title: \"User Management\",\n url: \"/settings/users\",\n icon: Users,\n },\n {\n title: \"API Key\",\n url: \"/settings/api-key\",\n icon: Key,\n },\n ],\n },\n]\n\nexport function AppSidebar() {\n const { state } = useSidebar()\n const location = useLocation()\n const currentPath = location.pathname\n \n // Track which menu items are open\n const [openItems, setOpenItems] = useState<string[]>([])\n\n const isActive = (path: string) => currentPath === path\n \n const toggleItem = (title: string) => {\n setOpenItems(prev => \n prev.includes(title) \n ? prev.filter(item => item !== title)\n : [...prev, title]\n )\n }\n\n return (\n <Sidebar collapsible=\"icon\">\n <SidebarHeader className=\"border-b border-sidebar-border\">\n <div className=\"flex items-center justify-between gap-2 px-4 py-3\">\n {state !== \"collapsed\" ? (\n <img src={braidLogo} alt=\"Braid\" className=\"h-8\" />\n ) : (\n <img src={braidLogo} alt=\"Braid\" className=\"h-6\" />\n )}\n <SidebarTrigger />\n </div>\n </SidebarHeader>\n\n <SidebarContent>\n <SidebarMenu>\n {navigationItems.map((item) => {\n // Check if it's a group with sub-items\n if (item.items) {\n const isOpen = openItems.includes(item.title)\n \n return (\n <Collapsible\n key={item.title}\n open={isOpen}\n onOpenChange={() => toggleItem(item.title)}\n >\n <SidebarMenuItem>\n <CollapsibleTrigger asChild>\n <SidebarMenuButton\n tooltip={state === \"collapsed\" ? item.title : undefined}\n >\n <item.icon className=\"w-4 h-4\" />\n <span>{item.title}</span>\n <ChevronRight \n className={`ml-auto h-4 w-4 transition-transform ${isOpen ? 'rotate-90' : ''}`}\n />\n </SidebarMenuButton>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <SidebarMenuSub>\n {item.items.map((subItem) => (\n <SidebarMenuSubItem key={subItem.title}>\n <SidebarMenuSubButton \n asChild\n isActive={isActive(subItem.url)}\n >\n <NavLink to={subItem.url}>\n <subItem.icon className=\"w-4 h-4\" />\n <span>{subItem.title}</span>\n {subItem.badge && (\n <SidebarMenuBadge className=\"ml-auto\">\n {subItem.badge}\n </SidebarMenuBadge>\n )}\n </NavLink>\n </SidebarMenuSubButton>\n </SidebarMenuSubItem>\n ))}\n </SidebarMenuSub>\n </CollapsibleContent>\n </SidebarMenuItem>\n </Collapsible>\n )\n }\n\n // Single item without sub-items\n return (\n <SidebarMenuItem key={item.title}>\n <SidebarMenuButton \n asChild\n isActive={isActive(item.url!)}\n tooltip={state === \"collapsed\" ? item.title : undefined}\n >\n <NavLink to={item.url!}>\n <item.icon className=\"w-4 h-4\" />\n <span>{item.title}</span>\n </NavLink>\n </SidebarMenuButton>\n </SidebarMenuItem>\n )\n })}\n </SidebarMenu>\n </SidebarContent>\n </Sidebar>\n )\n}","import { ReactNode } from \"react\"\n\ninterface MainLayoutProps {\n children: ReactNode\n}\n\nexport const MainLayout = ({ children }: MainLayoutProps) => {\n return (\n <div className=\"flex min-h-screen w-full\">\n <main className=\"flex-1 pl-4\">\n {children}\n </main>\n </div>\n )\n}","import { useState, useCallback, useEffect } from \"react\"\n\ninterface UseEditStateProps {\n initialEditing?: boolean\n onToggleEdit?: () => void\n onSave?: () => void | Promise<void>\n onCancel?: () => void\n}\n\nexport const useEditState = ({ initialEditing = false, onToggleEdit, onSave, onCancel }: UseEditStateProps) => {\n const [localEditing, setLocalEditing] = useState(initialEditing)\n const [isLoading, setIsLoading] = useState(false)\n \n // Sync local state with prop changes\n useEffect(() => {\n setLocalEditing(initialEditing)\n }, [initialEditing])\n \n const isEditing = onToggleEdit !== undefined ? initialEditing : localEditing\n \n const handleToggleEdit = useCallback(() => {\n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(prev => !prev)\n }\n }, [onToggleEdit])\n \n const handleSave = useCallback(async () => {\n setIsLoading(true)\n \n try {\n if (onSave) {\n await onSave()\n }\n \n // Exit edit mode after successful save\n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(false)\n }\n } catch (error) {\n console.error(\"Save error:\", error)\n // Don't exit edit mode on error\n } finally {\n setIsLoading(false)\n }\n }, [onSave, onToggleEdit])\n \n const handleCancel = useCallback(() => {\n if (onCancel) {\n onCancel()\n }\n \n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(false)\n }\n }, [onCancel, onToggleEdit])\n \n return {\n isEditing,\n isLoading,\n handleToggleEdit,\n handleSave,\n handleCancel\n }\n}","import * as React from \"react\"\nimport { FormCard, type FormCardProps } from \"@/components/ui/form-card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Edit } from \"lucide-react\"\nimport { useEditState } from \"@/hooks/useEditState\"\nimport { cn } from \"@/lib/utils\"\n\ninterface EditableFormCardProps extends Omit<FormCardProps, 'headerActions' | 'children'> {\n title: string\n description?: string\n children?: React.ReactNode\n editContent: React.ReactNode\n viewContent: React.ReactNode\n isEditing?: boolean\n onToggleEdit?: () => void\n hideActions?: boolean\n onSave?: () => void | Promise<void>\n onCancel?: () => void\n className?: string\n isFormValid?: boolean\n isDirty?: boolean\n isSubmitting?: boolean\n}\n\nexport const EditableFormCard = React.forwardRef<HTMLDivElement, EditableFormCardProps>(\n ({ \n title, \n description, \n editContent, \n viewContent, \n isEditing, \n onToggleEdit, \n hideActions = false,\n onSave,\n onCancel,\n className,\n variant = \"subtle\",\n isFormValid = true,\n isDirty = false,\n isSubmitting = false,\n ...props \n }, ref) => {\n const { isEditing: currentlyEditing, handleToggleEdit, handleCancel } = useEditState({\n initialEditing: isEditing ?? false,\n onToggleEdit\n })\n\n const handleSaveAction = async () => {\n if (onSave) {\n await onSave()\n }\n }\n\n const handleCancelAction = () => {\n if (onCancel) {\n onCancel()\n } else {\n handleCancel()\n }\n }\n\n return (\n <FormCard \n ref={ref}\n title={title}\n description={description}\n variant={variant}\n className={className}\n headerActions={\n !hideActions ? (\n <div className=\"flex items-center gap-2\">\n {currentlyEditing ? (\n <>\n <Button variant=\"outline\" size=\"sm\" onClick={handleCancelAction}>\n Cancel\n </Button>\n <Button \n size=\"sm\" \n onClick={handleSaveAction}\n disabled={!isFormValid || isSubmitting}\n >\n {isSubmitting ? \"Saving...\" : \"Save\"}\n </Button>\n </>\n ) : (\n <Button \n variant=\"ghost\" \n size=\"icon\" \n onClick={handleToggleEdit} \n className=\"text-primary hover:text-primary/80 hover:bg-primary/10\"\n >\n <Edit className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n ) : undefined\n }\n {...props}\n >\n {currentlyEditing ? editContent : viewContent}\n </FormCard>\n )\n }\n)\n\nEditableFormCard.displayName = \"EditableFormCard\"","import { z } from \"zod\"\n\nexport const achBasicInfoSchema = z.object({\n counterpartyName: z.string().min(1, \"Counterparty name is required\"),\n shortName: z.string().min(1, \"Short name is required\"),\n type: z.string().min(1, \"Type is required\"),\n description: z.string().optional(),\n})\n\nexport const achBankDetailsSchema = z.object({\n gatewayRoutingNumber: z.string().min(9, \"Gateway routing number must be at least 9 digits\").max(9, \"Gateway routing number must be 9 digits\"),\n rdfiNumberQualifier: z.string().min(1, \"RDFI number qualifier is required\"),\n})\n\nexport const achTransferSchema = z.object({\n basicInfo: achBasicInfoSchema,\n bankDetails: achBankDetailsSchema,\n})\n\nexport const bankingDetailsSchema = z.object({\n primaryBank: z.string().min(1, \"Primary bank is required\"),\n accountNumber: z.string().min(1, \"Account number is required\"),\n routingNumber: z.string().min(9, \"Routing number must be at least 9 digits\").max(9, \"Routing number must be 9 digits\"),\n accountType: z.string().min(1, \"Account type is required\"),\n})\n\nexport type ACHBasicInfo = z.infer<typeof achBasicInfoSchema>\nexport type ACHBankDetails = z.infer<typeof achBankDetailsSchema>\nexport type ACHTransfer = z.infer<typeof achTransferSchema>\nexport type BankingDetails = z.infer<typeof bankingDetailsSchema>","export interface ACHBasicInfo {\n bankName: string\n accountType: string\n routingNumber: string\n accountNumber: string\n countryCode: string\n status: string\n swiftCode?: string\n bankAddress?: string\n}\n\nexport interface ACHBankDetails {\n gatewayRoutingNumber: string\n rdfiNumberQualifier: string\n}\n\nexport interface BankAddress {\n street: string\n city: string\n state: string\n postalCode: string\n country: string\n}\n\nexport interface BankingDetails {\n primaryBank: string\n accountNumber: string\n routingNumber: string\n accountType: string\n}\n\nexport const defaultACHBasicInfo: ACHBasicInfo = {\n bankName: \"Bank of New York\",\n accountType: \"checking\",\n routingNumber: \"043087080\",\n accountNumber: \"1234567890\",\n countryCode: \"US\",\n status: \"active\",\n swiftCode: \"CHASUS33\",\n bankAddress: \"270 Park Avenue, New York, NY 10017\"\n}\n\nexport const defaultACHBankDetails: ACHBankDetails = {\n gatewayRoutingNumber: \"043087080\",\n rdfiNumberQualifier: \"01\"\n}\n\nexport const defaultBankAddress: BankAddress = {\n street: \"270 Park Avenue\",\n city: \"New York\", \n state: \"NY\",\n postalCode: \"10017\",\n country: \"US\"\n}\n\nexport const defaultBankingDetails: BankingDetails = {\n primaryBank: \"JPMorgan Chase\",\n accountNumber: \"****-****-****-1234\",\n routingNumber: \"021000021\",\n accountType: \"Business Checking\"\n}\n\n// Combined ACH Transfer data that matches the schema\nexport const defaultACHTransfer = {\n basicInfo: {\n counterpartyName: \"Acme Corporation\",\n shortName: \"ACME\",\n type: \"business\",\n description: \"ACH transfer for Acme Corporation\"\n },\n bankDetails: defaultACHBankDetails\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { achTransferSchema, type ACHTransfer } from \"@/lib/schemas/banking-schemas\"\nimport { defaultACHTransfer } from \"@/lib/mock-data/banking-data\"\n\ninterface ACHBankCardProps {\n data?: Partial<ACHTransfer>\n onDataChange?: (data: ACHTransfer) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const ACHBankCard = ({ data, onDataChange, isEditing, onToggleEdit, className, hideActions }: ACHBankCardProps) => {\n const form = useFormWithEditState<ACHTransfer>({\n schema: achTransferSchema,\n defaultValues: { ...defaultACHTransfer, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"bankDetails.gatewayRoutingNumber\"\n label=\"Gateway Routing Number\"\n placeholder=\"Enter gateway routing number\"\n pattern=\"[0-9]{9}\"\n maxLength={9}\n hint=\"9-digit gateway routing number\"\n required\n />\n \n <FormInput\n name=\"bankDetails.rdfiNumberQualifier\"\n label=\"RDFI Number Qualifier\"\n placeholder=\"Enter RDFI qualifier\"\n maxLength={2}\n hint=\"2-digit RDFI number qualifier\"\n required\n />\n </div>\n </div>\n </FormProvider>\n )\n\n const viewContent = (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <InfoField label=\"Gateway Routing Number\" value={form.getValues(\"bankDetails.gatewayRoutingNumber\")} layout=\"horizontal\" />\n <InfoField label=\"RDFI Number Qualifier\" value={form.getValues(\"bankDetails.rdfiNumberQualifier\")} layout=\"horizontal\" />\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"ACH Bank Details\"\n description=\"ACH-specific routing and qualification information\"\n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n isFormValid={form.isFormValid}\n isDirty={form.isDirty}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { achTransferSchema, type ACHTransfer } from \"@/lib/schemas/banking-schemas\"\nimport { defaultACHTransfer } from \"@/lib/mock-data/banking-data\"\n\ninterface ACHBasicInfoCardProps {\n data?: Partial<ACHTransfer>\n onDataChange?: (data: ACHTransfer) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const ACHBasicInfoCard = ({ \n data, \n onDataChange, \n isEditing, \n onToggleEdit, \n className, \n hideActions \n}: ACHBasicInfoCardProps) => {\n const form = useFormWithEditState<ACHTransfer>({\n schema: achTransferSchema,\n defaultValues: { ...defaultACHTransfer, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <FormInput\n name=\"basicInfo.counterpartyName\"\n label=\"Counterparty Name\"\n placeholder=\"Enter counterparty name\"\n required\n />\n \n <FormInput\n name=\"basicInfo.shortName\"\n label=\"Short Name\"\n placeholder=\"Enter short name\"\n required\n />\n </div>\n \n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <FormSelect\n name=\"basicInfo.type\"\n label=\"Type\"\n placeholder=\"Select type\"\n options={[\n { value: \"business\", label: \"Business\" },\n { value: \"individual\", label: \"Individual\" }\n ]}\n />\n \n <FormInput\n name=\"basicInfo.description\"\n label=\"Description\"\n placeholder=\"Enter description\"\n />\n </div>\n </div>\n </FormProvider>\n )\n\n const viewContent = (\n <div className=\"space-y-3\">\n <InfoField label=\"Counterparty Name\" value={form.getValues(\"basicInfo.counterpartyName\")} layout=\"horizontal\" />\n <InfoField label=\"Short Name\" value={form.getValues(\"basicInfo.shortName\")} layout=\"horizontal\" />\n <InfoField label=\"Type\" value={form.getValues(\"basicInfo.type\")} layout=\"horizontal\" />\n <InfoField label=\"Description\" value={form.getValues(\"basicInfo.description\") || \"N/A\"} layout=\"horizontal\" />\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Basic Information\" \n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n isFormValid={form.isFormValid}\n isDirty={form.isDirty}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface ResponsiveGridProps {\n children: React.ReactNode\n type?: \"cards\" | \"forms\" | \"data\" | \"custom\"\n gap?: \"sm\" | \"md\" | \"lg\" | \"xl\"\n editMode?: boolean\n className?: string\n}\n\nconst typeClasses = {\n cards: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3\",\n forms: \"grid-cols-1 lg:grid-cols-2\", \n data: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\",\n custom: \"\"\n}\n\nconst gapClasses = {\n sm: \"gap-3\",\n md: \"gap-4\",\n lg: \"gap-6\", \n xl: \"gap-8\"\n}\n\nexport const ResponsiveGrid = React.forwardRef<HTMLDivElement, ResponsiveGridProps>(\n ({ children, type = \"cards\", gap = \"md\", editMode = false, className }, ref) => {\n const gridClasses = editMode ? \"grid-cols-1\" : typeClasses[type]\n \n return (\n <div \n ref={ref}\n className={cn(\n \"grid\",\n gridClasses,\n gapClasses[gap],\n className\n )}\n >\n {children}\n </div>\n )\n }\n)\n\nResponsiveGrid.displayName = \"ResponsiveGrid\"","import { z } from \"zod\"\n\nexport const counterpartyBasicInfoSchema = z.object({\n name: z.string().min(1, \"Name is required\"),\n type: z.string().min(1, \"Type is required\"),\n status: z.string().min(1, \"Status is required\"),\n description: z.string().optional(),\n})\n\nexport const counterpartyProfileSchema = z.object({\n legalName: z.string().min(1, \"Legal name is required\"),\n dbaName: z.string().optional(),\n businessType: z.string().min(1, \"Business type is required\"),\n taxId: z.string().min(1, \"Tax ID is required\"),\n businessPhone: z.string().min(1, \"Business phone is required\"),\n businessEmail: z.string().email(\"Invalid email format\"),\n website: z.string().url(\"Invalid URL format\").optional().or(z.literal(\"\")),\n})\n\nexport const addressSchema = z.object({\n streetAddress: z.string().min(1, \"Street address is required\"),\n apartment: z.string().optional(),\n city: z.string().min(1, \"City is required\"),\n state: z.string().min(1, \"State is required\"),\n postalCode: z.string().min(1, \"Postal code is required\"),\n country: z.string().min(1, \"Country is required\"),\n addressType: z.string().optional(),\n})\n\nexport const counterpartyRecordsSchema = z.object({\n id: z.string(),\n createdBy: z.string(),\n createdAt: z.string(),\n updatedBy: z.string(),\n updatedAt: z.string(),\n lastOFACDate: z.string(),\n lastOFACStatus: z.string(),\n})\n\nexport type CounterpartyBasicInfo = z.infer<typeof counterpartyBasicInfoSchema>\nexport type CounterpartyProfile = z.infer<typeof counterpartyProfileSchema>\nexport type Address = z.infer<typeof addressSchema>\nexport type CounterpartyRecords = z.infer<typeof counterpartyRecordsSchema>","import { z } from \"zod\"\nimport { addressSchema } from \"./counterparty-schemas\"\n\nexport const wireBasicInfoSchema = z.object({\n counterpartyName: z.string().min(1, \"Counterparty name is required\"),\n shortName: z.string().min(1, \"Short name is required\"),\n type: z.string().min(1, \"Type is required\"),\n description: z.string().optional(),\n})\n\nexport const beneficiarySchema = z.object({\n name: z.string().min(1, \"Beneficiary name is required\"),\n accountNumber: z.string().min(1, \"Account number is required\"),\n address: addressSchema,\n})\n\nexport const originatorFISchema = z.object({\n accountNumber: z.string().min(1, \"Account number is required\"),\n name: z.string().min(1, \"FI name is required\"),\n idType: z.string().min(1, \"ID type is required\"),\n idNumber: z.string().min(1, \"ID number is required\"),\n address: addressSchema,\n})\n\nexport const intermediaryFISchema = z.object({\n accountNumber: z.string().optional(),\n name: z.string().optional(),\n idType: z.string().optional(),\n idNumber: z.string().optional(),\n address: addressSchema.optional(),\n})\n\nexport const wireTransferSchema = z.object({\n basicInfo: wireBasicInfoSchema,\n beneficiary: beneficiarySchema,\n originatorFI: originatorFISchema,\n intermediaryFI: intermediaryFISchema.optional(),\n})\n\nexport type WireBasicInfo = z.infer<typeof wireBasicInfoSchema>\nexport type Beneficiary = z.infer<typeof beneficiarySchema>\nexport type OriginatorFI = z.infer<typeof originatorFISchema>\nexport type IntermediaryFI = z.infer<typeof intermediaryFISchema>\nexport type WireTransfer = z.infer<typeof wireTransferSchema>","import { z } from \"zod\"\nimport { addressSchema } from \"./counterparty-schemas\"\n\nexport const businessProfileSchema = z.object({\n legalName: z.string().min(1, \"Legal name is required\"),\n dbaName: z.string().optional(),\n businessType: z.string().min(1, \"Business type is required\"),\n taxId: z.string().min(1, \"Tax ID is required\"),\n formationDate: z.string().optional(),\n idType: z.string().optional(),\n incorporationState: z.string().optional(),\n website: z.string().url(\"Invalid URL format\").optional().or(z.literal(\"\")),\n contactFirstName: z.string().optional(),\n contactLastName: z.string().optional(),\n contactEmail: z.string().optional(),\n contactPhone: z.string().optional(),\n address: addressSchema,\n})\n\nexport const businessStatusSchema = z.object({\n status: z.string().min(1, \"Status is required\"),\n cipStatus: z.string().min(1, \"CIP status is required\"),\n createdDate: z.string(),\n updatedDate: z.string(),\n lastOFACDate: z.string(),\n lastOFACStatus: z.string(),\n})\n\nexport const businessRecordsSchema = z.object({\n id: z.string(),\n createdBy: z.string(),\n createdAt: z.string(),\n updatedBy: z.string(),\n updatedAt: z.string(),\n lastOFACDate: z.string(),\n lastOFACStatus: z.string(),\n})\n\nexport type BusinessProfile = z.infer<typeof businessProfileSchema>\nexport type BusinessStatus = z.infer<typeof businessStatusSchema>\nexport type BusinessRecords = z.infer<typeof businessRecordsSchema>","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { addressSchema, type Address } from \"@/lib/schemas\"\nimport { defaultBankAddress } from \"@/lib/mock-data/banking-data\"\n\ninterface BankAddressCardProps {\n data?: Partial<Address>\n onDataChange?: (data: Address) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const BankAddressCard = ({ \n data, \n onDataChange, \n isEditing, \n onToggleEdit, \n className, \n hideActions \n}: BankAddressCardProps) => {\n const form = useFormWithEditState<Address>({\n schema: addressSchema,\n defaultValues: { ...defaultBankAddress, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"streetAddress\"\n label=\"Street Address\"\n placeholder=\"Enter street address\"\n required\n />\n \n <FormInput\n name=\"city\"\n label=\"City\"\n placeholder=\"Enter city\"\n required\n />\n \n <FormInput\n name=\"state\"\n label=\"State\"\n placeholder=\"Enter state\"\n required\n />\n \n <FormInput\n name=\"postalCode\"\n label=\"Postal Code\"\n placeholder=\"Enter postal code\"\n required\n />\n </div>\n </div>\n </FormProvider>\n )\n\n const formValues = form.watch()\n const viewContent = (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <InfoField label=\"Street Address\" value={formValues?.streetAddress} layout=\"horizontal\" />\n <InfoField label=\"City\" value={formValues?.city} layout=\"horizontal\" />\n <InfoField label=\"State\" value={formValues?.state} layout=\"horizontal\" />\n <InfoField label=\"Postal Code\" value={formValues?.postalCode} layout=\"horizontal\" />\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Bank Address\"\n description=\"Physical address of the banking institution\"\n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import { useState } from \"react\"\nimport { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { ACHBasicInfoCard } from \"./ACHBasicInfoCard\"\nimport { ACHBankCard } from \"./ACHBankCard\"\nimport { BankAddressCard } from \"./BankAddressCard\"\nimport { defaultACHTransfer } from \"@/lib/mock-data/banking-data\"\nimport { type ACHTransfer } from \"@/lib/schemas/banking-schemas\"\n\ninterface ACHTransferSectionProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const ACHTransferSection = ({ isEditing, onToggleEdit, className, hideActions }: ACHTransferSectionProps) => {\n const [achData, setAchData] = useState<ACHTransfer>(defaultACHTransfer)\n\n const handleDataChange = (newData: ACHTransfer) => {\n setAchData(newData)\n }\n\n const content = (\n <div className=\"space-y-6\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium text-muted-foreground\">Transfer Type:</span>\n <span className=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-secondary text-secondary-foreground\">\n ACH\n </span>\n </div>\n \n <ResponsiveGrid type=\"forms\" gap=\"md\" editMode={isEditing}>\n <ACHBasicInfoCard \n data={achData}\n onDataChange={handleDataChange}\n isEditing={isEditing} \n hideActions={true} \n />\n <ACHBankCard \n data={achData}\n onDataChange={handleDataChange}\n isEditing={isEditing} \n hideActions={true} \n />\n <BankAddressCard isEditing={isEditing} hideActions={true} />\n </ResponsiveGrid>\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"ACH Transfer Configuration\"\n description=\"Configure ACH transfer settings and bank details\"\n variant=\"subtle\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={content}\n viewContent={content}\n />\n )\n}","import { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { COUNTRY_OPTIONS, ADDRESS_TYPE_OPTIONS } from \"@/lib/constants\"\n\ninterface AddressFormProps {\n title: string\n description: string\n fieldPrefix?: string\n showAddressType?: boolean\n addressTypeOptions?: Array<{ value: string; label: string }>\n fieldOverrides?: {\n state?: Partial<React.ComponentProps<typeof EnhancedInput>>\n city?: Partial<React.ComponentProps<typeof EnhancedInput>>\n streetAddress?: Partial<React.ComponentProps<typeof EnhancedInput>>\n postalCode?: Partial<React.ComponentProps<typeof EnhancedInput>>\n apartment?: Partial<React.ComponentProps<typeof EnhancedInput>>\n }\n showApartment?: boolean\n}\n\nexport const AddressForm = ({ \n title, \n description, \n fieldPrefix = \"\",\n showAddressType = true,\n addressTypeOptions = ADDRESS_TYPE_OPTIONS.FI,\n fieldOverrides = {},\n showApartment = false\n}: AddressFormProps) => {\n const addressTypeLabel = fieldPrefix ? `${fieldPrefix} Address Type` : \"Address Type\"\n \n return (\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h2 className=\"text-lg font-semibold text-foreground\">{title}</h2>\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n </div>\n \n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 gap-6\">\n <EnhancedInput\n label=\"State\"\n placeholder=\"Enter state\"\n hint=\"State or province\"\n {...fieldOverrides.state}\n />\n \n <EnhancedInput\n label=\"City\"\n placeholder=\"Enter city\"\n required\n {...fieldOverrides.city}\n />\n \n <EnhancedInput\n label=\"Street Address\"\n placeholder=\"Enter street address\"\n hint={fieldPrefix ? `${fieldPrefix} street address` : \"Primary street address\"}\n {...fieldOverrides.streetAddress}\n />\n \n {showApartment && (\n <EnhancedInput\n label=\"Apt, Building etc\"\n placeholder=\"Additional address information\"\n hint=\"Additional address information\"\n {...fieldOverrides.apartment}\n />\n )}\n \n <EnhancedInput\n label=\"Postal Code\"\n placeholder=\"12345\"\n {...fieldOverrides.postalCode}\n />\n \n <EnhancedSelect\n label=\"Country Code\"\n placeholder=\"Select country\"\n options={COUNTRY_OPTIONS}\n />\n \n {showAddressType && (\n <EnhancedSelect\n label={addressTypeLabel}\n placeholder=\"Select type\"\n options={addressTypeOptions}\n />\n )}\n </div>\n </div>\n </div>\n )\n}","import { FormCard } from \"@/components/ui/form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { Button } from \"@/components/ui/button\"\nimport { Edit } from \"lucide-react\"\n\ninterface BankingDetailsCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n}\n\nexport const BankingDetailsCard = ({ isEditing, onToggleEdit, className }: BankingDetailsCardProps) => {\n return (\n <FormCard \n title=\"Banking Details\"\n className={className}\n headerActions={\n <div className=\"flex items-center gap-2\">\n {isEditing ? (\n <>\n <Button variant=\"outline\" size=\"sm\" onClick={onToggleEdit}>\n Cancel\n </Button>\n <Button size=\"sm\" onClick={onToggleEdit}>\n Save\n </Button>\n </>\n ) : (\n <Button variant=\"ghost\" size=\"icon\" onClick={onToggleEdit} className=\"text-primary hover:text-primary/80 hover:bg-primary/10\">\n <Edit className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n }\n >\n <div className=\"space-y-3\">\n <div className=\"grid grid-cols-1 gap-2\">\n <InfoField label=\"Primary Bank\" value=\"JPMorgan Chase\" layout=\"horizontal\" />\n <InfoField label=\"Account Number\" value=\"****-****-****-1234\" layout=\"horizontal\" />\n <InfoField label=\"Routing Number\" value=\"021000021\" layout=\"horizontal\" />\n <InfoField label=\"Account Type\" value=\"Business Checking\" layout=\"horizontal\" />\n </div>\n </div>\n </FormCard>\n )\n}","import { Badge } from \"@/components/ui/badge\"\nimport { Building2, User, Shield, Heart } from \"lucide-react\"\n\ninterface CounterpartyTypeBadgeProps {\n type: \"BUSINESS\" | \"INDIVIDUAL\" | \"GOVERNMENT\" | \"NONPROFIT\"\n className?: string\n}\n\nconst typeConfig = {\n BUSINESS: {\n variant: \"business\" as const,\n label: \"Business\",\n icon: Building2\n },\n INDIVIDUAL: {\n variant: \"individual\" as const,\n label: \"Individual\",\n icon: User\n },\n GOVERNMENT: {\n variant: \"government\" as const,\n label: \"Government\",\n icon: Shield\n },\n NONPROFIT: {\n variant: \"nonprofit\" as const,\n label: \"Non-Profit\",\n icon: Heart\n }\n}\n\nexport const CounterpartyTypeBadge = ({ type, className }: CounterpartyTypeBadgeProps) => {\n const config = typeConfig[type]\n \n // Fallback if config is not found\n if (!config) {\n return (\n <Badge variant=\"secondary\" className={className}>\n <Building2 className=\"w-3 h-3 mr-1\" />\n {type || \"Unknown\"}\n </Badge>\n )\n }\n \n const Icon = config.icon\n\n return (\n <Badge variant={config.variant} className={className}>\n <Icon className=\"w-3 h-3 mr-1\" />\n {config.label}\n </Badge>\n )\n}","import { Badge } from \"@/components/ui/badge\"\nimport { CheckCircle, XCircle, Clock, AlertTriangle } from \"lucide-react\"\n\ninterface StatusBadgeProps {\n status: \"ACTIVE\" | \"INACTIVE\" | \"PENDING\" | \"SUSPENDED\" | \"POSTED\" | \"FAILED\" | \"CANCELLED\"\n className?: string\n}\n\nconst statusConfig = {\n ACTIVE: {\n variant: \"active\" as const,\n label: \"Active\",\n icon: CheckCircle\n },\n INACTIVE: {\n variant: \"inactive\" as const,\n label: \"Inactive\",\n icon: XCircle\n },\n PENDING: {\n variant: \"pending\" as const,\n label: \"Pending\",\n icon: Clock\n },\n SUSPENDED: {\n variant: \"suspended\" as const,\n label: \"Suspended\",\n icon: AlertTriangle\n },\n POSTED: {\n variant: \"active\" as const,\n label: \"Posted\",\n icon: CheckCircle\n },\n FAILED: {\n variant: \"inactive\" as const,\n label: \"Failed\",\n icon: XCircle\n },\n CANCELLED: {\n variant: \"secondary\" as const,\n label: \"Cancelled\",\n icon: XCircle\n }\n}\n\nexport const StatusBadge = ({ status, className }: StatusBadgeProps) => {\n const config = statusConfig[status]\n \n // Fallback if config is not found\n if (!config) {\n return (\n <Badge variant=\"secondary\" className={className}>\n <AlertTriangle className=\"w-3 h-3 mr-1\" />\n {status || \"Unknown\"}\n </Badge>\n )\n }\n \n const Icon = config.icon\n\n return (\n <Badge variant={config.variant} className={className}>\n <Icon className=\"w-3 h-3 mr-1\" />\n {config.label}\n </Badge>\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { CounterpartyTypeBadge } from \"@/components/ui/counterparty-type-badge\"\nimport { StatusBadge } from \"@/components/ui/status-badge\"\nimport { useState } from \"react\"\n\ninterface BasicInfoCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const BasicInfoCard = ({ isEditing, onToggleEdit, className, hideActions }: BasicInfoCardProps) => {\n const [name, setName] = useState(\"John wire hot\")\n const [status, setStatus] = useState(\"ACTIVE\")\n\n const editContent = (\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <EnhancedInput\n label=\"Name\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder=\"Enter counterparty name\"\n />\n \n <EnhancedSelect\n label=\"Status\"\n value={status}\n onValueChange={setStatus}\n placeholder=\"Select status\"\n options={[\n { value: \"ACTIVE\", label: \"Active\" },\n { value: \"INACTIVE\", label: \"Inactive\" },\n { value: \"PENDING\", label: \"Pending\" },\n { value: \"SUSPENDED\", label: \"Suspended\" }\n ]}\n />\n </div>\n \n <div className=\"grid grid-cols-2 gap-4 pt-4 border-t border-border\">\n <InfoField label=\"ID\" value=\"5000541\" layout=\"horizontal\" />\n <InfoField label=\"Counterparty Type\" value={<CounterpartyTypeBadge type=\"BUSINESS\" />} layout=\"horizontal\" />\n <InfoField label=\"ID Number\" value=\"•••••••\" layout=\"horizontal\" />\n <InfoField label=\"ID Type\" value=\"SSN\" layout=\"horizontal\" />\n <InfoField label=\"Date of Birth\" value=\"1985-8-20\" layout=\"horizontal\" />\n <InfoField label=\"Created By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Created At\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Updated By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Updated At\" value=\"2025-07-14\" layout=\"horizontal\" />\n </div>\n \n <div className=\"pt-3 border-t border-border\">\n <h4 className=\"text-sm font-medium text-foreground mb-2\">OFAC Details</h4>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Last OFAC date\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Last OFAC status\" value=\"Verified\" layout=\"horizontal\" />\n </div>\n </div>\n </div>\n )\n\n const viewContent = (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"ID\" value=\"5000541\" layout=\"horizontal\" />\n <InfoField label=\"Name\" value={name} layout=\"horizontal\" />\n <InfoField label=\"Counterparty Type\" value={<CounterpartyTypeBadge type=\"BUSINESS\" />} layout=\"horizontal\" />\n <InfoField label=\"Status\" value={<StatusBadge status={status as \"ACTIVE\" | \"INACTIVE\" | \"PENDING\" | \"SUSPENDED\"} />} layout=\"horizontal\" />\n <InfoField label=\"ID Number\" value=\"•••••••\" layout=\"horizontal\" />\n <InfoField label=\"ID Type\" value=\"SSN\" layout=\"horizontal\" />\n <InfoField label=\"Date of Birth\" value=\"1985-8-20\" layout=\"horizontal\" />\n <InfoField label=\"Created By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Created At\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Updated By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Updated At\" value=\"2025-07-14\" layout=\"horizontal\" />\n </div>\n \n <div className=\"pt-3 border-t border-border\">\n <h4 className=\"text-sm font-medium text-foreground mb-2\">OFAC Details</h4>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Last OFAC date\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Last OFAC status\" value=\"Verified\" layout=\"horizontal\" />\n </div>\n </div>\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Basic Info\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","export interface CounterpartyBasicInfo {\n name: string\n status: string\n type: string\n businessType?: string\n description: string\n website?: string\n taxId?: string\n incorporationDate?: string\n legalStructure?: string\n}\n\nexport interface CounterpartyProfile {\n primaryContact: string\n contactEmail: string\n contactPhone: string\n secondaryContact?: string\n industry?: string\n region?: string\n}\n\nexport interface CounterpartyAddress {\n street: string\n city: string\n state: string\n postalCode: string\n country: string\n apartment?: string\n}\n\nexport const defaultCounterpartyBasicInfo: CounterpartyBasicInfo = {\n name: \"Acme Corporation\",\n status: \"active\",\n type: \"business\",\n businessType: \"corporation\",\n description: \"Leading technology solutions provider\",\n website: \"https://acme.com\",\n taxId: \"12-3456789\",\n incorporationDate: \"2020-01-15\",\n legalStructure: \"C-Corporation\"\n}\n\nexport const defaultCounterpartyProfile: CounterpartyProfile = {\n primaryContact: \"John Smith\",\n contactEmail: \"john.smith@acme.com\",\n contactPhone: \"+1 (555) 123-4567\",\n secondaryContact: \"Jane Doe\",\n industry: \"Technology\",\n region: \"North America\"\n}\n\nexport const defaultCounterpartyAddress: CounterpartyAddress = {\n street: \"123 Business Ave\",\n city: \"New York\",\n state: \"NY\",\n postalCode: \"10001\",\n country: \"US\",\n apartment: \"Suite 100\"\n}\n\n// Combined counterparty profile data that matches the schema\nexport const defaultCounterpartyProfileData = {\n legalName: \"Acme Corporation\",\n dbaName: \"ACME Tech\",\n businessType: \"corporation\",\n taxId: \"12-3456789\",\n businessPhone: \"+1 (555) 123-4567\",\n businessEmail: \"contact@acme.com\",\n website: \"https://acme.com\"\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { CounterpartyTypeBadge } from \"@/components/ui/counterparty-type-badge\"\nimport { StatusBadge } from \"@/components/ui/status-badge\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { counterpartyBasicInfoSchema, type CounterpartyBasicInfo } from \"@/lib/schemas\"\nimport { defaultCounterpartyBasicInfo } from \"@/lib/mock-data/counterparty-data\"\n\ninterface CounterpartyProfileCardProps {\n data?: Partial<CounterpartyBasicInfo>\n onDataChange?: (data: CounterpartyBasicInfo) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n hideActions?: boolean\n className?: string\n}\n\nexport const CounterpartyProfileCard = ({ \n data,\n onDataChange,\n isEditing = false,\n onToggleEdit,\n hideActions = false, \n className \n}: CounterpartyProfileCardProps) => {\n const form = useFormWithEditState<CounterpartyBasicInfo>({\n schema: counterpartyBasicInfoSchema,\n defaultValues: { ...defaultCounterpartyBasicInfo, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <div className=\"space-y-6\">\n <FormInput\n name=\"name\"\n label=\"Name\"\n placeholder=\"Enter counterparty name\"\n required\n />\n \n <FormSelect\n name=\"type\"\n label=\"Counterparty Type\"\n placeholder=\"Select counterparty type\"\n options={[\n { value: \"BUSINESS\", label: \"Business\" },\n { value: \"INDIVIDUAL\", label: \"Individual\" },\n { value: \"GOVERNMENT\", label: \"Government\" },\n { value: \"NONPROFIT\", label: \"Non-Profit\" }\n ]}\n />\n \n <FormSelect\n name=\"status\"\n label=\"Status\"\n placeholder=\"Select status\"\n options={[\n { value: \"ACTIVE\", label: \"Active\" },\n { value: \"INACTIVE\", label: \"Inactive\" },\n { value: \"PENDING\", label: \"Pending\" },\n { value: \"SUSPENDED\", label: \"Suspended\" }\n ]}\n />\n\n <FormInput\n name=\"description\"\n label=\"Description\"\n placeholder=\"Enter description\"\n />\n </div>\n </FormProvider>\n )\n\n const formValues = form.watch()\n const viewContent = (\n <div className=\"space-y-3\">\n <InfoField label=\"Name\" value={formValues?.name} layout=\"horizontal\" />\n <InfoField label=\"Counterparty Type\" value={<CounterpartyTypeBadge type={formValues?.type as \"BUSINESS\" | \"INDIVIDUAL\" | \"GOVERNMENT\" | \"NONPROFIT\"} />} layout=\"horizontal\" />\n <InfoField label=\"Status\" value={<StatusBadge status={formValues?.status as \"ACTIVE\" | \"INACTIVE\" | \"PENDING\" | \"SUSPENDED\"} />} layout=\"horizontal\" />\n <InfoField label=\"Description\" value={formValues?.description} layout=\"horizontal\" />\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Profile Information\"\n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { InfoField } from \"@/components/ui/info-field\"\n\ninterface CounterpartyRecordsCardProps {\n isEditing?: boolean\n hideActions?: boolean\n className?: string\n}\n\nexport const CounterpartyRecordsCard = ({ \n isEditing = false, \n hideActions = false, \n className \n}: CounterpartyRecordsCardProps) => {\n return (\n <Card variant=\"subtle\" className={className}>\n <CardHeader size=\"lg\">\n <CardTitle size=\"lg\">System Records</CardTitle>\n </CardHeader>\n <CardContent size=\"lg\">\n <div className=\"space-y-4\">\n <div className=\"space-y-3\">\n <InfoField label=\"ID\" value=\"5000541\" layout=\"horizontal\" />\n <InfoField label=\"Created By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Created At\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Updated By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Updated At\" value=\"2025-07-14\" layout=\"horizontal\" />\n </div>\n \n <div className=\"pt-3 border-t border-border\">\n <h4 className=\"text-sm font-medium text-foreground mb-2\">OFAC Details</h4>\n <div className=\"space-y-3\">\n <InfoField label=\"Last OFAC date\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Last OFAC status\" value=\"Verified\" layout=\"horizontal\" />\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { CounterpartyProfileCard } from \"./CounterpartyProfileCard\"\nimport { CounterpartyRecordsCard } from \"./CounterpartyRecordsCard\"\n\ninterface BasicInfoSectionProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const BasicInfoSection = ({ isEditing, onToggleEdit, className, hideActions }: BasicInfoSectionProps) => {\n const content = (\n <ResponsiveGrid type=\"forms\" gap=\"md\" editMode={isEditing}>\n <CounterpartyProfileCard isEditing={isEditing} hideActions={true} />\n <CounterpartyRecordsCard isEditing={isEditing} hideActions={true} />\n </ResponsiveGrid>\n )\n\n return (\n <EditableFormCard\n title=\"Basic Information\"\n description=\"Core counterparty details and records\"\n variant=\"subtle\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={content}\n viewContent={content}\n />\n )\n}","import { AddressForm } from \"./AddressForm\"\n\nexport const BeneficiaryAddress = () => {\n return (\n <AddressForm\n title=\"Beneficiary Address Details\"\n description=\"Address information for the beneficiary\"\n showAddressType={false}\n showApartment={true}\n fieldOverrides={{\n apartment: { \n placeholder: \"this is a very long address that will be truncated\",\n value: \"this is a very long address that will be truncated\"\n },\n postalCode: { error: \"Invalid postal code format\" }\n }}\n />\n )\n}","import * as React from \"react\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface DataGridItem {\n label?: string\n value: string\n layout?: \"vertical\" | \"horizontal\"\n}\n\nexport interface DataGridSection {\n title?: string\n items: DataGridItem[]\n className?: string\n}\n\ninterface DataGridProps {\n data: DataGridItem[] | DataGridSection[]\n columns?: 1 | 2 | 3 | 4\n gap?: \"sm\" | \"md\" | \"lg\"\n className?: string\n}\n\nconst gapClasses = {\n sm: \"gap-2\",\n md: \"gap-4\", \n lg: \"gap-6\"\n}\n\nconst columnClasses = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 md:grid-cols-2\",\n 3: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-4\"\n}\n\nexport const DataGrid = React.forwardRef<HTMLDivElement, DataGridProps>(\n ({ data, columns = 2, gap = \"md\", className }, ref) => {\n // Check if data is sections or simple items\n const isItemArray = data.length > 0 && 'label' in data[0]\n \n if (isItemArray) {\n // Simple items array\n const items = data as DataGridItem[]\n return (\n <div \n ref={ref}\n className={cn(\n \"grid\",\n columnClasses[columns],\n gapClasses[gap],\n className\n )}\n >\n {items.map((item, index) => (\n <InfoField\n key={index}\n label={item.label}\n value={item.value}\n layout={item.layout || \"horizontal\"}\n />\n ))}\n </div>\n )\n }\n\n // Sections array\n const sections = data as DataGridSection[]\n return (\n <div ref={ref} className={cn(\"space-y-4\", className)}>\n {sections.map((section, sectionIndex) => (\n <div key={sectionIndex} className={section.className}>\n {section.title && (\n <h4 className=\"text-sm font-medium text-foreground mb-2\">\n {section.title}\n </h4>\n )}\n <div className={cn(\n \"grid\",\n columnClasses[columns],\n gapClasses[gap]\n )}>\n {section.items.map((item, itemIndex) => (\n <InfoField\n key={itemIndex}\n label={item.label}\n value={item.value}\n layout={item.layout || \"horizontal\"}\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n )\n }\n)\n\nDataGrid.displayName = \"DataGrid\"","import { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { BeneficiaryAddress } from \"./BeneficiaryAddress\"\n\nexport const BeneficiaryDomesticWire = () => {\n return (\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h3 className=\"text-lg font-semibold text-foreground\">Beneficiary Information</h3>\n <p className=\"text-sm text-muted-foreground\">Account and address details for the beneficiary</p>\n </div>\n \n <div className=\"space-y-6\">\n <EnhancedInput\n label=\"Beneficiary Account Number\"\n placeholder=\"Enter beneficiary account number\"\n hint=\"Account number for the beneficiary\"\n />\n \n <BeneficiaryAddress />\n </div>\n </div>\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { BeneficiaryDomesticWire } from \"@/components/form-sections/BeneficiaryDomesticWire\"\n\ninterface BeneficiaryCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const BeneficiaryCard = ({ isEditing, onToggleEdit, className, hideActions }: BeneficiaryCardProps) => {\n const viewData = [\n {\n title: \"Account Information\",\n items: [\n { label: \"Account Number\", value: \"123456789012\" }\n ]\n },\n {\n title: \"Beneficiary Address\", \n items: [\n { value: \"123 Main Street, Apartment 4B, New York, NY 10001, United States\" }\n ],\n className: \"pt-3 border-t border-border\"\n }\n ]\n\n return (\n <EditableFormCard\n title=\"Beneficiary\"\n variant=\"subtle\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={<BeneficiaryDomesticWire />}\n viewContent={<DataGrid data={viewData} columns={1} />}\n />\n )\n}","export interface BusinessProfile {\n legalName: string\n dbaName?: string\n businessType: string\n taxId: string\n formationDate?: string\n idType?: string\n incorporationState?: string\n website?: string\n address: {\n streetAddress: string\n apartment?: string\n city: string\n state: string\n postalCode: string\n country: string\n addressType?: string\n }\n}\n\nexport interface BusinessStatus {\n operationalStatus: string\n complianceStatus: string\n lastReview: string\n nextReview: string\n riskLevel: string\n}\n\nexport interface ContactInfo {\n primaryContact: string\n email: string\n phone: string\n alternateContact?: string\n alternateEmail?: string\n alternatePhone?: string\n}\n\nexport const defaultBusinessProfile: BusinessProfile = {\n legalName: \"Acme Corporation\",\n dbaName: \"ACME Tech\",\n businessType: \"corporation\",\n taxId: \"12-3456789\",\n formationDate: \"2020-01-15\",\n idType: \"EIN\",\n incorporationState: \"Delaware\",\n website: \"https://acme.com\",\n address: {\n streetAddress: \"123 Business Avenue\",\n apartment: \"Suite 100\",\n city: \"New York\",\n state: \"NY\",\n postalCode: \"10001\",\n country: \"US\",\n addressType: \"business\"\n }\n}\n\nexport const defaultBusinessStatus: BusinessStatus = {\n operationalStatus: \"active\",\n complianceStatus: \"compliant\",\n lastReview: \"2024-01-15\",\n nextReview: \"2024-07-15\",\n riskLevel: \"low\"\n}\n\nexport const defaultContactInfo: ContactInfo = {\n primaryContact: \"John Smith\",\n email: \"john.smith@acme.com\",\n phone: \"+1 (555) 123-4567\",\n alternateContact: \"Jane Doe\",\n alternateEmail: \"jane.doe@acme.com\",\n alternatePhone: \"+1 (555) 987-6543\"\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { businessProfileSchema, type BusinessProfile } from \"@/lib/schemas\"\nimport { defaultBusinessProfile } from \"@/lib/mock-data/business-data\"\n\ninterface BusinessProfileCardProps {\n data?: Partial<BusinessProfile>\n onDataChange?: (data: BusinessProfile) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const BusinessProfileCard = ({ \n data, \n onDataChange, \n isEditing, \n onToggleEdit, \n className, \n hideActions \n}: BusinessProfileCardProps) => {\n const form = useFormWithEditState<BusinessProfile>({\n schema: businessProfileSchema,\n defaultValues: { ...defaultBusinessProfile, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"legalName\"\n label=\"Legal Name\"\n placeholder=\"Enter legal business name\"\n required\n />\n \n <FormInput\n name=\"dbaName\"\n label=\"DBA Name\"\n placeholder=\"Enter doing business as name\"\n />\n \n <FormSelect\n name=\"businessType\"\n label=\"Business Type\"\n placeholder=\"Select business type\"\n options={[\n { value: \"corporation\", label: \"Corporation\" },\n { value: \"llc\", label: \"LLC\" },\n { value: \"partnership\", label: \"Partnership\" },\n { value: \"sole_proprietorship\", label: \"Sole Proprietorship\" }\n ]}\n />\n \n <FormInput\n name=\"taxId\"\n label=\"Tax ID\"\n placeholder=\"Enter tax identification number\"\n required\n />\n\n <FormInput\n name=\"formationDate\"\n label=\"Formation Date\"\n type=\"date\"\n placeholder=\"Enter formation date\"\n />\n\n <FormSelect\n name=\"idType\"\n label=\"ID Type\"\n placeholder=\"Select ID type\"\n options={[\n { value: \"ein\", label: \"EIN\" },\n { value: \"ssn\", label: \"SSN\" },\n { value: \"itin\", label: \"ITIN\" }\n ]}\n />\n\n <FormInput\n name=\"incorporationState\"\n label=\"Incorporation State\"\n placeholder=\"Enter incorporation state\"\n />\n \n <FormInput\n name=\"website\"\n label=\"Website\"\n placeholder=\"Enter website URL\"\n />\n </div>\n\n <div className=\"grid grid-cols-1 gap-4\">\n <FormInput\n name=\"address.streetAddress\"\n label=\"Street Address\"\n placeholder=\"Enter street address\"\n />\n \n <FormInput\n name=\"address.apartment\"\n label=\"Apartment, suite, or floor\"\n placeholder=\"Enter apartment, suite, or floor\"\n />\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"address.city\"\n label=\"City\"\n placeholder=\"Enter city\"\n />\n \n <FormInput\n name=\"address.state\"\n label=\"State\"\n placeholder=\"Enter state\"\n />\n \n <FormInput\n name=\"address.postalCode\"\n label=\"Postal Code\"\n placeholder=\"Enter postal code\"\n />\n \n <FormInput\n name=\"address.country\"\n label=\"Country Code\"\n placeholder=\"Enter country code\"\n />\n </div>\n\n <h4 className=\"text-sm font-medium text-muted-foreground mt-6\">Contact Person</h4>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"contactFirstName\"\n label=\"First Name\"\n placeholder=\"Enter first name\"\n />\n \n <FormInput\n name=\"contactLastName\"\n label=\"Last Name\"\n placeholder=\"Enter last name\"\n />\n \n <FormInput\n name=\"contactEmail\"\n label=\"Email\"\n type=\"email\"\n placeholder=\"Enter email\"\n />\n \n <FormInput\n name=\"contactPhone\"\n label=\"Phone Number\"\n placeholder=\"Enter phone number\"\n />\n </div>\n </div>\n </FormProvider>\n )\n\n const formValues = form.watch()\n const viewContent = (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Legal Name\" value={formValues?.legalName} layout=\"horizontal\" />\n <InfoField label=\"DBA Name\" value={formValues?.dbaName} layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Business Type\" value={formValues?.businessType} layout=\"horizontal\" />\n <InfoField label=\"Tax ID\" value={formValues?.taxId} layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Formation Date\" value={formValues?.formationDate || \"2020-01-15\"} layout=\"horizontal\" />\n <InfoField label=\"ID Type\" value={formValues?.idType || \"EIN\"} layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Incorporation State\" value={formValues?.incorporationState || \"Delaware\"} layout=\"horizontal\" />\n <InfoField label=\"Website\" value={formValues?.website} layout=\"horizontal\" />\n </div>\n <InfoField \n label=\"Address\" \n value={formValues?.address ? `${formValues.address.streetAddress}${formValues.address.apartment ? ', ' + formValues.address.apartment : ''}, ${formValues.address.city}, ${formValues.address.state} ${formValues.address.postalCode}, ${formValues.address.country}` : \"123 Business Avenue, Suite 100, New York, NY 10001, US\"} \n layout=\"horizontal\" \n />\n\n <h4 className=\"text-sm font-medium text-muted-foreground mt-6\">Contact Person</h4>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"First Name\" value={formValues?.contactFirstName || \"John\"} layout=\"horizontal\" />\n <InfoField label=\"Last Name\" value={formValues?.contactLastName || \"Smith\"} layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Email\" value={formValues?.contactEmail || \"john.smith@acme.com\"} layout=\"horizontal\" />\n <InfoField label=\"Phone Number\" value={formValues?.contactPhone || \"+1 (555) 123-4567\"} layout=\"horizontal\" />\n </div>\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Business Profile\"\n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import { FormCard } from \"@/components/ui/form-card\"\nimport { CheckCircle, Circle, UserPlus, Edit } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface TimelineEvent {\n id: string\n action: string\n user: string\n details?: string\n status?: string\n timestamp: string\n}\n\ninterface BusinessStatusCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n}\n\nconst mockBusinessTimeline: TimelineEvent[] = [\n {\n id: \"1\",\n action: \"Business Created\",\n user: \"admin\",\n details: \"Initial business setup\",\n status: \"Active\",\n timestamp: \"2025-08-03 10:30:00\"\n },\n {\n id: \"2\",\n action: \"Profile Updated\",\n user: \"admin\",\n details: \"Updated business information\",\n timestamp: \"2025-09-05 14:22:00\"\n },\n {\n id: \"3\",\n action: \"OFAC Check Completed\",\n user: \"System\",\n details: \"Automated compliance check\",\n status: \"Verified\",\n timestamp: \"2025-09-05 14:30:00\"\n }\n]\n\nexport const BusinessStatusCard = ({ isEditing, onToggleEdit, className }: BusinessStatusCardProps) => {\n const getIcon = (action: string) => {\n if (action.includes(\"Created\")) return <Circle className=\"h-4 w-4\" />\n if (action.includes(\"Assigned\")) return <UserPlus className=\"h-4 w-4\" />\n if (action.includes(\"Updated\") || action.includes(\"Modified\") || action.includes(\"Check\")) return <Edit className=\"h-4 w-4\" />\n if (action.includes(\"Completed\") || action.includes(\"Verified\")) return <CheckCircle className=\"h-4 w-4\" />\n return <Circle className=\"h-4 w-4\" />\n }\n\n const getStatusColor = (status?: string) => {\n switch (status) {\n case \"Active\":\n case \"Verified\":\n return \"text-success\"\n case \"Pending\":\n return \"text-warning\"\n default:\n return \"text-muted-foreground\"\n }\n }\n\n return (\n <FormCard \n title=\"Timeline\"\n className={className}\n >\n <div className=\"space-y-3\">\n {mockBusinessTimeline.map((event, index) => (\n <div key={event.id} className=\"relative pl-6 pb-3\">\n {/* Timeline line */}\n {index !== mockBusinessTimeline.length - 1 && (\n <div className=\"absolute left-[7px] top-5 bottom-0 w-[2px] bg-border\" />\n )}\n \n {/* Icon */}\n <div className={cn(\n \"absolute left-0 top-0 flex-none\",\n getStatusColor(event.status)\n )}>\n <div className=\"h-4 w-4\">\n {getIcon(event.action)}\n </div>\n </div>\n \n {/* Content */}\n <div className=\"space-y-0.5\">\n <p className=\"text-xs font-medium text-foreground\">{event.action}</p>\n <p className=\"text-xs text-muted-foreground\">by {event.user}</p>\n {event.details && (\n <p className=\"text-xs text-muted-foreground\">{event.details}</p>\n )}\n {event.status && (\n <p className={cn(\"text-xs font-medium\", getStatusColor(event.status))}>\n Status: {event.status}\n </p>\n )}\n <p className=\"text-xs text-muted-foreground/70 pt-0.5\">\n {event.timestamp}\n </p>\n </div>\n </div>\n ))}\n </div>\n </FormCard>\n )\n}","import { FormCard } from \"@/components/ui/form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { Button } from \"@/components/ui/button\"\nimport { Edit } from \"lucide-react\"\n\ninterface ContactInfoCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n}\n\nexport const ContactInfoCard = ({ isEditing, onToggleEdit, className }: ContactInfoCardProps) => {\n return (\n <FormCard \n title=\"Contact Information\"\n className={className}\n headerActions={\n <div className=\"flex items-center gap-2\">\n {isEditing ? (\n <>\n <Button variant=\"outline\" size=\"sm\" onClick={onToggleEdit}>\n Cancel\n </Button>\n <Button size=\"sm\" onClick={onToggleEdit}>\n Save\n </Button>\n </>\n ) : (\n <Button variant=\"ghost\" size=\"icon\" onClick={onToggleEdit} className=\"text-primary hover:text-primary/80 hover:bg-primary/10\">\n <Edit className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n }\n >\n <div className=\"space-y-4\">\n <h4 className=\"text-sm font-medium text-muted-foreground\">Contact Person</h4>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"First Name\" value=\"\" layout=\"horizontal\" />\n <InfoField label=\"Last Name\" value=\"\" layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Email\" value=\"\" layout=\"horizontal\" />\n <InfoField label=\"Phone Number\" value=\"\" layout=\"horizontal\" />\n </div>\n \n <h4 className=\"text-sm font-medium text-muted-foreground mt-6\">Mailing Address</h4>\n {isEditing ? (\n <>\n <div className=\"grid grid-cols-1 gap-3\">\n <InfoField label=\"Street Address\" value=\"\" layout=\"horizontal\" />\n <InfoField label=\"Apartment, suite, or floor\" value=\"\" layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"City\" value=\"\" layout=\"horizontal\" />\n <InfoField label=\"State\" value=\"Alabama\" layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Postal Code\" value=\"\" layout=\"horizontal\" />\n <InfoField label=\"Country Code\" value=\"US\" layout=\"horizontal\" />\n </div>\n </>\n ) : (\n <InfoField \n label=\"Address\" \n value=\"123 Business Avenue, Suite 100, New York, NY 10001, US\" \n layout=\"horizontal\" \n />\n )}\n </div>\n </FormCard>\n )\n}","import * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","import { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { Label } from \"@/components/ui/label\"\nimport { useState } from \"react\"\n\ninterface CounterpartyBasicInfoProps {\n onDataChange?: (data: any) => void\n}\n\nexport const CounterpartyBasicInfo = ({ onDataChange }: CounterpartyBasicInfoProps) => {\n const [formData, setFormData] = useState({\n name: \"\",\n type: \"business\",\n email: \"\",\n phone: \"\",\n productId: \"167990\"\n })\n\n const handleInputChange = (field: string, value: string) => {\n const updatedData = { ...formData, [field]: value }\n setFormData(updatedData)\n onDataChange?.(updatedData)\n }\n\n const handleTypeChange = (type: string) => {\n handleInputChange(\"type\", type)\n }\n\n return (\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h2 className=\"text-lg font-semibold text-foreground\">Basic Information</h2>\n <p className=\"text-sm text-muted-foreground\">Enter the basic details for the counterparty</p>\n </div>\n \n <div className=\"space-y-6\">\n <EnhancedInput\n label=\"Counterparty Name\"\n value={formData.name}\n onChange={(e) => handleInputChange(\"name\", e.target.value)}\n placeholder=\"Enter counterparty name\"\n required\n />\n \n <div className=\"space-y-3\">\n <Label className=\"text-sm font-medium\">Counterparty Type</Label>\n <div className=\"flex gap-6\">\n <label className=\"flex items-center space-x-2 cursor-pointer\">\n <input\n type=\"radio\"\n name=\"counterpartyType\"\n value=\"business\"\n checked={formData.type === \"business\"}\n onChange={() => handleTypeChange(\"business\")}\n className=\"w-4 h-4 text-primary border-border focus:ring-primary focus:ring-2\"\n />\n <span className=\"text-sm text-foreground\">Business</span>\n </label>\n <label className=\"flex items-center space-x-2 cursor-pointer\">\n <input\n type=\"radio\"\n name=\"counterpartyType\"\n value=\"individual\"\n checked={formData.type === \"individual\"}\n onChange={() => handleTypeChange(\"individual\")}\n className=\"w-4 h-4 text-primary border-border focus:ring-primary focus:ring-2\"\n />\n <span className=\"text-sm text-foreground\">Individual</span>\n </label>\n </div>\n </div>\n \n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <EnhancedInput\n label=\"Email\"\n type=\"email\"\n value={formData.email}\n onChange={(e) => handleInputChange(\"email\", e.target.value)}\n placeholder=\"Enter email address\"\n required\n />\n \n <EnhancedInput\n label=\"Phone Number\"\n type=\"tel\"\n value={formData.phone}\n onChange={(e) => handleInputChange(\"phone\", e.target.value)}\n placeholder=\"Enter phone number\"\n required\n />\n </div>\n \n <EnhancedInput\n label=\"Product ID\"\n value={formData.productId}\n readOnly\n className=\"bg-muted\"\n />\n </div>\n </div>\n )\n}","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface FormSectionProps {\n title?: string\n description?: string\n children: React.ReactNode\n className?: string\n spacing?: \"sm\" | \"md\" | \"lg\"\n layout?: \"vertical\" | \"grid\"\n columns?: 1 | 2 | 3 | 4\n}\n\nconst spacingClasses = {\n sm: \"space-y-3\",\n md: \"space-y-4\",\n lg: \"space-y-6\"\n}\n\nconst gridClasses = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 md:grid-cols-2\", \n 3: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-4\"\n}\n\nexport const FormSection = React.forwardRef<HTMLDivElement, FormSectionProps>(\n ({ \n title, \n description, \n children, \n className, \n spacing = \"md\", \n layout = \"vertical\",\n columns = 2 \n }, ref) => {\n return (\n <div ref={ref} className={cn(\"space-y-4\", className)}>\n {(title || description) && (\n <div className=\"space-y-1\">\n {title && (\n <h3 className=\"text-lg font-semibold text-foreground\">\n {title}\n </h3>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n )}\n \n <div className={cn(\n layout === \"grid\" \n ? `grid gap-4 ${gridClasses[columns]}` \n : spacingClasses[spacing]\n )}>\n {children}\n </div>\n </div>\n )\n }\n)\n\nFormSection.displayName = \"FormSection\"","import { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { FI_ID_TYPE_OPTIONS } from \"@/lib/constants\"\n\nexport const IntermediaryFI = () => {\n return (\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h2 className=\"text-lg font-semibold text-foreground\">Intermediary FI Details</h2>\n <p className=\"text-sm text-muted-foreground\">Financial institution details for the intermediary</p>\n </div>\n \n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n <EnhancedInput\n label=\"Intermediary FI Account Number\"\n placeholder=\"Enter account number\"\n />\n \n <EnhancedInput\n label=\"Intermediary FI Name\"\n placeholder=\"Enter FI name\"\n hint=\"Full name of the intermediary financial institution\"\n />\n \n <EnhancedSelect\n label=\"Intermediary FI ID Type\"\n placeholder=\"Select ID type\"\n options={FI_ID_TYPE_OPTIONS}\n />\n \n <EnhancedInput\n label=\"Intermediary FI ID Number\"\n placeholder=\"Enter ID number\"\n hint=\"Financial institution identification number\"\n />\n </div>\n </div>\n </div>\n )\n}","import { AddressForm } from \"./AddressForm\"\n\nexport const IntermediaryFIAddress = () => {\n return (\n <AddressForm\n title=\"Intermediary FI Address\"\n description=\"Address of the intermediary financial institution\"\n fieldPrefix=\"Intermediary FI\"\n fieldOverrides={{\n streetAddress: { hint: \"Intermediary financial institution street address\" }\n }}\n />\n )\n}","export interface WireTransferInfo {\n transferType: string\n}\n\nexport interface ReceiverInfo {\n routingNumber: string\n bankShortName: string\n}\n\nexport interface BeneficiaryInfo {\n accountNumber: string\n address: {\n street: string\n city: string\n state: string\n postalCode: string\n country: string\n apartment?: string\n }\n}\n\nexport interface OriginatorFIInfo {\n accountNumber: string\n name: string\n idType: string\n idNumber: string\n address: {\n streetAddress: string\n apartment?: string\n city: string\n state: string\n postalCode: string\n country: string\n addressType?: string\n }\n}\n\nexport interface IntermediaryFIInfo {\n accountNumber?: string\n name: string\n idType: string\n idNumber: string\n address?: {\n streetAddress: string\n apartment?: string\n city: string\n state: string\n postalCode: string\n country: string\n addressType?: string\n }\n}\n\nexport const defaultWireTransferInfo: WireTransferInfo = {\n transferType: \"domestic\"\n}\n\nexport const defaultReceiverInfo: ReceiverInfo = {\n routingNumber: \"043087080\",\n bankShortName: \"Bank of New York\"\n}\n\nexport const defaultBeneficiaryInfo: BeneficiaryInfo = {\n accountNumber: \"123456789012\",\n address: {\n street: \"123 Main Street\",\n city: \"New York\",\n state: \"NY\", \n postalCode: \"10001\",\n country: \"US\",\n apartment: \"Apartment 4B\"\n }\n}\n\nexport const defaultOriginatorFIInfo: OriginatorFIInfo = {\n accountNumber: \"987654321098\",\n name: \"Originator Bank\",\n idType: \"swift\",\n idNumber: \"ORIGUS33XXX\",\n address: {\n streetAddress: \"270 Park Avenue\",\n city: \"New York\",\n state: \"NY\",\n postalCode: \"10017\",\n country: \"US\",\n addressType: \"business\"\n }\n}\n\nexport const defaultIntermediaryFIInfo: IntermediaryFIInfo = {\n accountNumber: \"555666777888\",\n name: \"Intermediary Bank\",\n idType: \"swift\", \n idNumber: \"INTEUS33XXX\",\n address: {\n streetAddress: \"Taunusanlage 12\",\n city: \"Frankfurt\",\n state: \"HE\",\n postalCode: \"60325\",\n country: \"DE\",\n addressType: \"business\"\n }\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormSection } from \"@/components/ui/form-section\"\nimport { IntermediaryFI } from \"@/components/form-sections/IntermediaryFI\"\nimport { IntermediaryFIAddress } from \"@/components/form-sections/IntermediaryFIAddress\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { intermediaryFISchema, type IntermediaryFI as IntermediaryFIType } from \"@/lib/schemas\"\nimport { defaultIntermediaryFIInfo } from \"@/lib/mock-data/wire-data\"\n\ninterface IntermediaryCardProps {\n data?: Partial<IntermediaryFIType>\n onDataChange?: (data: IntermediaryFIType) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const IntermediaryCard = ({ \n data, \n onDataChange, \n isEditing, \n onToggleEdit, \n className, \n hideActions \n}: IntermediaryCardProps) => {\n const form = useFormWithEditState<IntermediaryFIType>({\n schema: intermediaryFISchema,\n defaultValues: { ...defaultIntermediaryFIInfo, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <FormSection spacing=\"lg\">\n <IntermediaryFI />\n <IntermediaryFIAddress />\n </FormSection>\n </FormProvider>\n )\n\n const formValues = form.watch()\n const viewContent = (\n <div className=\"space-y-3\">\n <div>\n <h4 className=\"text-sm font-medium text-foreground mb-2\">Financial Institution</h4>\n <div className=\"space-y-1.5\">\n <InfoField label=\"Institution\" value={`${formValues?.name} (${formValues?.accountNumber})`} layout=\"horizontal\" />\n <InfoField label=\"Identifier\" value={`${formValues?.idType?.toUpperCase()} - ${formValues?.idNumber}`} layout=\"horizontal\" />\n </div>\n </div>\n \n <div className=\"pt-3 border-t border-border\">\n <h4 className=\"text-sm font-medium text-foreground mb-2\">FI Address</h4>\n <InfoField value={formValues?.address ? `${formValues.address.streetAddress}, ${formValues.address.city}, ${formValues.address.postalCode}, ${formValues.address.country}` : \"\"} />\n </div>\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Intermediary\" \n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { FI_ID_TYPE_OPTIONS } from \"@/lib/constants\"\n\nexport const OriginatorFI = () => {\n return (\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h2 className=\"text-lg font-semibold text-foreground\">Originator FI Details</h2>\n <p className=\"text-sm text-muted-foreground\">Financial institution details for the originator</p>\n </div>\n \n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n <EnhancedInput\n label=\"Originator FI Account Number\"\n placeholder=\"Enter account number\"\n required\n />\n \n <EnhancedInput\n label=\"Originator FI Name\"\n placeholder=\"Enter FI name\"\n hint=\"Full name of the originating financial institution\"\n />\n \n <EnhancedSelect\n label=\"Originator FI ID Type\"\n placeholder=\"Select ID type\"\n options={FI_ID_TYPE_OPTIONS}\n />\n \n <EnhancedInput\n label=\"Originator FI ID Number\"\n placeholder=\"Enter ID number\"\n hint=\"Financial institution identification number\"\n />\n </div>\n </div>\n </div>\n )\n}","import { AddressForm } from \"./AddressForm\"\n\nexport const OriginatorFIAddress = () => {\n return (\n <AddressForm\n title=\"Originator FI Address\"\n description=\"Address of the originating financial institution\"\n fieldPrefix=\"Originator FI\"\n fieldOverrides={{\n streetAddress: { hint: \"Originating financial institution street address\" }\n }}\n />\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { FormSection } from \"@/components/ui/form-section\"\nimport { OriginatorFI } from \"@/components/form-sections/OriginatorFI\"\nimport { OriginatorFIAddress } from \"@/components/form-sections/OriginatorFIAddress\"\n\ninterface OriginatorCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const OriginatorCard = ({ isEditing, onToggleEdit, className, hideActions }: OriginatorCardProps) => {\n const viewData = [\n {\n title: \"Financial Institution\",\n items: [\n { label: \"Institution\", value: \"JPMorgan Chase Bank (1234567890)\" },\n { label: \"Identifier\", value: \"ABA - 021000021\" }\n ]\n },\n {\n title: \"FI Address\",\n items: [\n { value: \"270 Park Avenue, New York, NY, 10017, United States\" }\n ],\n className: \"pt-3 border-t border-border\"\n }\n ]\n\n return (\n <EditableFormCard\n title=\"Originator\"\n variant=\"subtle\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={\n <FormSection spacing=\"lg\">\n <OriginatorFI />\n <OriginatorFIAddress />\n </FormSection>\n }\n viewContent={<DataGrid data={viewData} columns={1} />}\n />\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { FormSection } from \"@/components/ui/form-section\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { z } from \"zod\"\nimport { defaultReceiverInfo } from \"@/lib/mock-data/wire-data\"\n\nconst receiverSchema = z.object({\n routingNumber: z.string().min(9, \"Routing number must be 9 digits\").max(9, \"Routing number must be 9 digits\"),\n bankShortName: z.string().min(1, \"Bank short name is required\"),\n})\n\ntype ReceiverInfo = z.infer<typeof receiverSchema>\n\ninterface ReceiverCardProps {\n data?: Partial<ReceiverInfo>\n onDataChange?: (data: ReceiverInfo) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const ReceiverCard = ({ \n data, \n onDataChange, \n isEditing, \n onToggleEdit, \n className, \n hideActions \n}: ReceiverCardProps) => {\n const form = useFormWithEditState<ReceiverInfo>({\n schema: receiverSchema,\n defaultValues: { ...defaultReceiverInfo, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <FormSection>\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h2 className=\"text-lg font-semibold text-foreground\">Receiver Details</h2>\n <p className=\"text-sm text-muted-foreground\">Receiving bank information</p>\n </div>\n \n <div className=\"grid grid-cols-1 gap-6\">\n <FormInput\n name=\"routingNumber\"\n label=\"Receiver Routing Number\"\n placeholder=\"Enter routing number\"\n hint=\"9-digit routing number\"\n pattern=\"[0-9]{9}\"\n maxLength={9}\n required\n />\n \n <FormInput\n name=\"bankShortName\"\n label=\"Receiver Bank Short Name\"\n placeholder=\"Enter bank short name\"\n required\n />\n </div>\n </div>\n </FormSection>\n </FormProvider>\n )\n\n const formValues = form.watch()\n const viewData = [\n { label: \"Routing Number\", value: formValues?.routingNumber },\n { label: \"Bank Short Name\", value: formValues?.bankShortName }\n ]\n\n return (\n <EditableFormCard\n title=\"FedWire Receiver\"\n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={<DataGrid data={viewData} columns={2} />}\n />\n )\n}","import { useState } from \"react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Plus, Trash2, ChevronDown, ChevronUp } from \"lucide-react\"\nimport { ACHBasicInfoCard } from \"./ACHBasicInfoCard\"\nimport { ACHBankCard } from \"./ACHBankCard\"\nimport { BankAddressCard } from \"./BankAddressCard\"\nimport { ReceiverCard } from \"./ReceiverCard\"\nimport { BeneficiaryCard } from \"./BeneficiaryCard\"\nimport { OriginatorCard } from \"./OriginatorCard\"\nimport { IntermediaryCard } from \"./IntermediaryCard\"\nimport { defaultACHTransfer } from \"@/lib/mock-data/banking-data\"\nimport { type ACHTransfer } from \"@/lib/schemas/banking-schemas\"\n\ninterface PaymentMethod {\n id: string\n type: \"ach\" | \"wire\"\n name: string\n collapsed: boolean\n}\n\nexport const PaymentInformationSection = () => {\n const [paymentMethods, setPaymentMethods] = useState<PaymentMethod[]>([])\n const [showAddMenu, setShowAddMenu] = useState(false)\n const [achData, setAchData] = useState<ACHTransfer>(defaultACHTransfer)\n\n const addPaymentMethod = (type: \"ach\" | \"wire\") => {\n const newMethod: PaymentMethod = {\n id: `${type}-${Date.now()}`,\n type,\n name: type === \"ach\" ? \"ACH Payment\" : \"Wire Transfer\",\n collapsed: false\n }\n setPaymentMethods([...paymentMethods, newMethod])\n setShowAddMenu(false)\n }\n\n const removePaymentMethod = (id: string) => {\n setPaymentMethods(paymentMethods.filter(method => method.id !== id))\n }\n\n const toggleCollapse = (id: string) => {\n setPaymentMethods(paymentMethods.map(method => \n method.id === id ? { ...method, collapsed: !method.collapsed } : method\n ))\n }\n\n const handleACHDataChange = (newData: ACHTransfer) => {\n setAchData(newData)\n }\n\n const renderPaymentMethodContent = (method: PaymentMethod) => {\n if (method.type === \"ach\") {\n return (\n <div className=\"space-y-4\">\n <ACHBasicInfoCard \n data={achData}\n onDataChange={handleACHDataChange}\n isEditing={true} \n hideActions={true} \n />\n <ACHBankCard \n data={achData}\n onDataChange={handleACHDataChange}\n isEditing={true} \n hideActions={true} \n />\n <BankAddressCard isEditing={true} hideActions={true} />\n </div>\n )\n } else {\n return (\n <div className=\"space-y-4\">\n <ReceiverCard isEditing={true} hideActions={true} />\n <BeneficiaryCard isEditing={true} hideActions={true} />\n <OriginatorCard isEditing={true} hideActions={true} />\n <IntermediaryCard isEditing={true} hideActions={true} />\n </div>\n )\n }\n }\n\n return (\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h2 className=\"text-lg font-semibold text-foreground\">Payment Information</h2>\n <p className=\"text-sm text-muted-foreground\">Add payment methods for this counterparty</p>\n </div>\n\n {paymentMethods.map((method) => (\n <Card key={method.id} className=\"relative\">\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => toggleCollapse(method.id)}\n className=\"h-6 w-6\"\n >\n {method.collapsed ? (\n <ChevronDown className=\"h-4 w-4\" />\n ) : (\n <ChevronUp className=\"h-4 w-4\" />\n )}\n </Button>\n <CardTitle className=\"text-base\">{method.name}</CardTitle>\n <span className=\"text-xs bg-muted px-2 py-1 rounded-md uppercase font-medium\">\n {method.type}\n </span>\n </div>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => removePaymentMethod(method.id)}\n className=\"h-6 w-6 text-destructive hover:text-destructive/80 hover:bg-destructive/10\"\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </div>\n </CardHeader>\n {!method.collapsed && (\n <CardContent>\n {renderPaymentMethodContent(method)}\n </CardContent>\n )}\n </Card>\n ))}\n\n <div className=\"relative\">\n <Button\n variant=\"outline\"\n onClick={() => setShowAddMenu(!showAddMenu)}\n className=\"w-full border-dashed\"\n >\n <Plus className=\"h-4 w-4 mr-2\" />\n Add Payment Information\n </Button>\n \n {showAddMenu && (\n <div className=\"absolute top-full left-0 right-0 mt-2 bg-background border border-border rounded-md shadow-lg z-10\">\n <div className=\"p-2 space-y-1\">\n <Button\n variant=\"ghost\"\n onClick={() => addPaymentMethod(\"ach\")}\n className=\"w-full justify-start\"\n >\n Add ACH Payment\n </Button>\n <Button\n variant=\"ghost\"\n onClick={() => addPaymentMethod(\"wire\")}\n className=\"w-full justify-start\"\n >\n Add Wire Transfer\n </Button>\n </div>\n </div>\n )}\n </div>\n </div>\n )\n}","import { useState } from \"react\"\nimport { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { ReceiverCard } from \"./ReceiverCard\"\nimport { BeneficiaryCard } from \"./BeneficiaryCard\"\nimport { OriginatorCard } from \"./OriginatorCard\"\nimport { IntermediaryCard } from \"./IntermediaryCard\"\n\ninterface WireTransferSectionProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const WireTransferSection = ({ isEditing, onToggleEdit, className, hideActions }: WireTransferSectionProps) => {\n const [wireTransferType, setWireTransferType] = useState(\"INTERNATIONAL\")\n\n const editContent = (\n <div className=\"space-y-6\">\n <div className=\"flex items-center gap-4\">\n <EnhancedSelect\n label=\"Transfer Type\"\n value={wireTransferType}\n onValueChange={setWireTransferType}\n options={[\n { value: \"DOMESTIC\", label: \"Domestic\" },\n { value: \"INTERNATIONAL\", label: \"International\" }\n ]}\n placeholder=\"Select transfer type\"\n />\n </div>\n \n <ResponsiveGrid type=\"forms\" gap=\"md\" editMode={isEditing}>\n <ReceiverCard isEditing={isEditing} hideActions={true} />\n <BeneficiaryCard isEditing={isEditing} hideActions={true} />\n <OriginatorCard isEditing={isEditing} hideActions={true} />\n <IntermediaryCard isEditing={isEditing} hideActions={true} />\n </ResponsiveGrid>\n </div>\n )\n\n const viewContent = (\n <div className=\"space-y-6\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium text-muted-foreground\">Transfer Type:</span>\n <span className=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-secondary text-secondary-foreground\">\n {wireTransferType}\n </span>\n </div>\n \n <ResponsiveGrid type=\"forms\" gap=\"md\">\n <ReceiverCard isEditing={false} hideActions={true} />\n <BeneficiaryCard isEditing={false} hideActions={true} />\n <OriginatorCard isEditing={false} hideActions={true} />\n <IntermediaryCard isEditing={false} hideActions={true} />\n </ResponsiveGrid>\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Wire Transfer Configuration\"\n description=\"Configure wire transfer settings and participants\"\n variant=\"subtle\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface ContainerProps {\n children: React.ReactNode\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\"\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\"\n center?: boolean\n className?: string\n}\n\nconst sizeClasses = {\n sm: \"max-w-2xl\",\n md: \"max-w-4xl\", \n lg: \"max-w-6xl\",\n xl: \"max-w-7xl\",\n full: \"max-w-full\"\n}\n\nconst paddingClasses = {\n none: \"\",\n sm: \"px-4 py-4\",\n md: \"px-6 py-6\", \n lg: \"px-8 py-8\"\n}\n\nexport const Container = React.forwardRef<HTMLDivElement, ContainerProps>(\n ({ children, size = \"lg\", padding = \"md\", center = true, className }, ref) => {\n return (\n <div \n ref={ref}\n className={cn(\n sizeClasses[size],\n paddingClasses[padding],\n center && \"mx-auto\",\n className\n )}\n >\n {children}\n </div>\n )\n }\n)\n\nContainer.displayName = \"Container\"","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface StackProps {\n children: React.ReactNode\n direction?: \"vertical\" | \"horizontal\"\n spacing?: \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"\n align?: \"start\" | \"center\" | \"end\" | \"stretch\"\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\"\n className?: string\n}\n\nconst spacingClasses = {\n vertical: {\n none: \"\",\n xs: \"space-y-1\",\n sm: \"space-y-2\",\n md: \"space-y-4\",\n lg: \"space-y-6\",\n xl: \"space-y-8\"\n },\n horizontal: {\n none: \"\",\n xs: \"space-x-1\",\n sm: \"space-x-2\", \n md: \"space-x-4\",\n lg: \"space-x-6\",\n xl: \"space-x-8\"\n }\n}\n\nconst alignClasses = {\n vertical: {\n start: \"\",\n center: \"items-center\",\n end: \"items-end\", \n stretch: \"items-stretch\"\n },\n horizontal: {\n start: \"\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\"\n }\n}\n\nconst justifyClasses = {\n start: \"\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\"\n}\n\nexport const Stack = React.forwardRef<HTMLDivElement, StackProps>(\n ({ children, direction = \"vertical\", spacing = \"md\", align = \"start\", justify = \"start\", className }, ref) => {\n const isHorizontal = direction === \"horizontal\"\n \n return (\n <div \n ref={ref}\n className={cn(\n \"flex\",\n isHorizontal ? \"flex-row\" : \"flex-col\",\n spacingClasses[direction][spacing],\n alignClasses[direction][align],\n justifyClasses[justify],\n className\n )}\n >\n {children}\n </div>\n )\n }\n)\n\nStack.displayName = \"Stack\"","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { ChevronRight, Home } from \"lucide-react\"\nimport { NavLink } from \"react-router-dom\"\n\nexport interface BreadcrumbItem {\n label: string\n href?: string\n icon?: React.ReactNode\n}\n\ninterface BreadcrumbProps {\n items: BreadcrumbItem[]\n showHome?: boolean\n separator?: React.ReactNode\n className?: string\n}\n\nexport const Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(\n ({ items, showHome = true, separator, className }, ref) => {\n const defaultSeparator = <ChevronRight className=\"w-4 h-4 text-muted-foreground\" />\n const separatorElement = separator || defaultSeparator\n\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cn(\"flex items-center space-x-1 text-sm\", className)}\n >\n {showHome && (\n <>\n <NavLink\n to=\"/\"\n className=\"flex items-center text-muted-foreground hover:text-foreground transition-colors\"\n >\n <Home className=\"w-4 h-4\" />\n </NavLink>\n {items.length > 0 && (\n <span className=\"text-muted-foreground\">{separatorElement}</span>\n )}\n </>\n )}\n \n {items.map((item, index) => {\n const isLast = index === items.length - 1\n \n return (\n <React.Fragment key={index}>\n {item.href && !isLast ? (\n <NavLink\n to={item.href}\n className=\"flex items-center text-muted-foreground hover:text-foreground transition-colors\"\n >\n {item.icon && <span className=\"mr-1\">{item.icon}</span>}\n {item.label}\n </NavLink>\n ) : (\n <span className={cn(\n \"flex items-center\",\n isLast ? \"text-foreground font-medium\" : \"text-muted-foreground\"\n )}>\n {item.icon && <span className=\"mr-1\">{item.icon}</span>}\n {item.label}\n </span>\n )}\n \n {!isLast && (\n <span className=\"text-muted-foreground\">{separatorElement}</span>\n )}\n </React.Fragment>\n )\n })}\n </nav>\n )\n }\n)\n\nBreadcrumb.displayName = \"Breadcrumb\"","import * as React from \"react\"\nimport { Container } from \"@/components/ui/container\"\nimport { Stack } from \"@/components/ui/stack\"\nimport { Button } from \"@/components/ui/button\"\nimport { Breadcrumb, type BreadcrumbItem } from \"@/components/ui/breadcrumb\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { cn } from \"@/lib/utils\"\n\ninterface PageAction {\n label: string\n onClick: () => void\n variant?: \"default\" | \"outline\" | \"secondary\"\n icon?: React.ReactNode\n}\n\ninterface ListPageProps {\n title: string\n description?: string\n breadcrumbs?: BreadcrumbItem[]\n actions?: PageAction[]\n children: React.ReactNode\n maxWidth?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\"\n loading?: boolean\n emptyState?: React.ReactNode\n className?: string\n}\n\nexport const ListPage = React.forwardRef<HTMLDivElement, ListPageProps>(\n ({ \n title, \n description, \n breadcrumbs,\n actions,\n children, \n maxWidth = \"xl\",\n loading = false,\n emptyState,\n className \n }, ref) => {\n const hasData = React.Children.count(children) > 0\n\n return (\n <div ref={ref} className={cn(\"min-h-screen bg-gradient-subtle\", className)}>\n <Container size={maxWidth}>\n <Stack spacing=\"lg\">\n {/* Breadcrumbs */}\n {breadcrumbs && breadcrumbs.length > 0 && (\n <Breadcrumb items={breadcrumbs} />\n )}\n \n {/* Page Header */}\n <div className=\"flex items-start justify-between\">\n <Stack spacing=\"sm\">\n <h1 className=\"text-3xl font-bold text-foreground\">{title}</h1>\n {description && (\n <p className=\"text-muted-foreground max-w-2xl\">{description}</p>\n )}\n </Stack>\n \n {actions && actions.length > 0 && (\n <Stack direction=\"horizontal\" spacing=\"sm\">\n {actions.map((action, index) => (\n <Button\n key={index}\n variant={action.variant || \"default\"}\n onClick={action.onClick}\n >\n {action.icon}\n {action.label}\n </Button>\n ))}\n </Stack>\n )}\n </div>\n \n {/* Content */}\n {loading ? (\n <div className=\"flex items-center justify-center py-12\">\n <div className=\"animate-pulse text-muted-foreground\">Loading...</div>\n </div>\n ) : hasData ? (\n <ResponsiveGrid type=\"cards\" gap=\"lg\">\n {children}\n </ResponsiveGrid>\n ) : emptyState ? (\n <div className=\"flex items-center justify-center py-12\">\n {emptyState}\n </div>\n ) : (\n <div className=\"flex items-center justify-center py-12\">\n <div className=\"text-center\">\n <p className=\"text-muted-foreground\">No items found</p>\n </div>\n </div>\n )}\n </Stack>\n </Container>\n </div>\n )\n }\n)\n\nListPage.displayName = \"ListPage\"","import { Edit } from \"lucide-react\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { StatementHeader as StatementHeaderType } from \"@/lib/mock-data/statement-data\"\n\ninterface StatementHeaderProps {\n data: StatementHeaderType\n onEdit: () => void\n}\n\nexport const StatementHeader = ({ data, onEdit }: StatementHeaderProps) => {\n return (\n <Card>\n <CardHeader direction=\"row\">\n <CardTitle size=\"md\">Statement Summary</CardTitle>\n <Button variant=\"outline\" size=\"sm\" onClick={onEdit}>\n <Edit className=\"h-4 w-4 mr-2\" />\n Edit\n </Button>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n <InfoField \n label=\"Account\" \n value={data.account} \n layout=\"horizontal\"\n />\n <InfoField \n label=\"Product ID\" \n value={data.productId} \n layout=\"horizontal\"\n />\n <InfoField \n label=\"Program ID\" \n value={data.programId} \n layout=\"horizontal\"\n />\n <InfoField \n label=\"Start Date\" \n value={data.startDate} \n layout=\"horizontal\"\n />\n <InfoField \n label=\"End Date\" \n value={data.endDate} \n layout=\"horizontal\"\n />\n <InfoField \n label=\"Starting Balance\" \n value={data.startingBalance} \n layout=\"horizontal\"\n />\n <InfoField \n label=\"Ending Balance\" \n value={data.endingBalance} \n layout=\"horizontal\"\n />\n </div>\n </CardContent>\n </Card>\n )\n}\n","import * as React from \"react\"\nimport { DayPicker } from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/components/ui/button\"\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3 pointer-events-auto\", className)}\n classNames={{\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n month: \"space-y-4\",\n caption: \"flex justify-center pt-1 relative items-center\",\n caption_label: \"text-sm font-medium\",\n nav: \"space-x-1 flex items-center\",\n button_previous: \"absolute left-1 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\n button_next: \"absolute right-1 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\n month_grid: \"w-full border-collapse space-y-1\",\n weekdays: \"flex\",\n weekday: \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\n week: \"flex w-full mt-2\",\n day: \"h-9 w-9 text-center text-sm p-0 relative hover:bg-accent hover:text-accent-foreground rounded-md\",\n day_button: cn(\n buttonVariants({ variant: \"ghost\" }),\n \"h-9 w-9 p-0 font-normal\"\n ),\n selected: \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground\",\n today: \"bg-accent text-accent-foreground\",\n outside: \"text-muted-foreground opacity-50\",\n disabled: \"text-muted-foreground opacity-50\",\n hidden: \"invisible\",\n ...classNames,\n }}\n {...props}\n />\n )\n}\nCalendar.displayName = \"Calendar\"\n\nexport { Calendar }\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent }\n","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { ChevronDown, ChevronUp, ChevronsUpDown } from \"lucide-react\"\n\nexport interface DataTableColumn<T = any> {\n key: string\n title: string\n sortable?: boolean\n render?: (value: any, row: T) => React.ReactNode\n width?: string\n align?: \"left\" | \"center\" | \"right\"\n}\n\nexport interface DataTableProps<T = any> {\n columns: DataTableColumn<T>[]\n data: T[]\n sortBy?: string\n sortDirection?: \"asc\" | \"desc\"\n onSort?: (key: string) => void\n onRowClick?: (row: T) => void\n loading?: boolean\n emptyMessage?: string\n className?: string\n}\n\nexport function DataTable<T extends Record<string, any>>({\n columns,\n data,\n sortBy,\n sortDirection,\n onSort,\n onRowClick,\n loading = false,\n emptyMessage = \"No data available\",\n className\n}: DataTableProps<T>) {\n const handleSort = (key: string) => {\n if (onSort) {\n onSort(key)\n }\n }\n\n const renderSortIcon = (column: DataTableColumn<T>) => {\n if (!column.sortable || !onSort) return null\n \n if (sortBy === column.key) {\n return sortDirection === \"asc\" ? \n <ChevronUp className=\"w-4 h-4 ml-1\" /> : \n <ChevronDown className=\"w-4 h-4 ml-1\" />\n }\n \n return <ChevronsUpDown className=\"w-4 h-4 ml-1 opacity-50\" />\n }\n\n const renderCell = (column: DataTableColumn<T>, row: T) => {\n const value = row[column.key]\n \n if (column.render) {\n return column.render(value, row)\n }\n \n // Auto-render common types\n if (typeof value === \"boolean\") {\n return <Badge variant={value ? \"success\" : \"secondary\"}>{value ? \"Yes\" : \"No\"}</Badge>\n }\n \n if (Array.isArray(value)) {\n return value.join(\", \")\n }\n \n return value?.toString() || \"-\"\n }\n\n if (loading) {\n return (\n <div className={cn(\"rounded-md border\", className)}>\n <div className=\"p-8 text-center\">\n <div className=\"animate-pulse text-muted-foreground\">Loading...</div>\n </div>\n </div>\n )\n }\n\n return (\n <div className={cn(\"rounded-md border\", className)}>\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b bg-muted/50\">\n {columns.map((column) => (\n <th\n key={column.key}\n className={cn(\n \"px-3 py-2 text-left align-middle text-sm font-medium bg-muted/50\",\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\",\n column.width && `w-[${column.width}]`\n )}\n >\n {column.sortable && onSort ? (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-auto p-0 text-sm font-medium hover:bg-transparent\"\n onClick={() => handleSort(column.key)}\n >\n <span className=\"flex items-center\">\n {column.title}\n {renderSortIcon(column)}\n </span>\n </Button>\n ) : (\n column.title\n )}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.length === 0 ? (\n <tr>\n <td colSpan={columns.length} className=\"h-24 text-center text-muted-foreground\">\n {emptyMessage}\n </td>\n </tr>\n ) : (\n data.map((row, index) => (\n <tr\n key={index}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50\",\n onRowClick && \"cursor-pointer\"\n )}\n onClick={() => onRowClick?.(row)}\n >\n {columns.map((column) => (\n <td\n key={column.key}\n className={cn(\n \"px-3 py-2 align-middle text-sm\",\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\"\n )}\n >\n {renderCell(column, row)}\n </td>\n ))}\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n </div>\n )\n}","import { format } from \"date-fns\"\nimport { CalendarIcon, Download, FileText, Loader2 } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { Calendar } from \"@/components/ui/calendar\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\"\nimport { DataTable, DataTableColumn } from \"@/components/ui/data-table\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { StatementHeader as StatementHeaderComponent } from \"@/components/statement/StatementHeader\"\nimport { StatementTransaction, StatementHeader } from \"@/lib/mock-data/statement-data\"\nimport { cn } from \"@/lib/utils\"\n\nconst statementTypes = [\n { value: \"root\", label: \"Root\" },\n { value: \"program\", label: \"Program\" },\n { value: \"product\", label: \"Product\" },\n { value: \"account\", label: \"Account\" }\n]\n\nconst columns: DataTableColumn<StatementTransaction>[] = [\n {\n key: \"transactionType\",\n title: \"Transaction Type\",\n sortable: true,\n align: \"left\"\n },\n {\n key: \"direction\",\n title: \"Direction\",\n sortable: true,\n align: \"left\",\n render: (value: string) => (\n <Badge variant={value === \"CREDIT\" ? \"success\" : \"secondary\"}>\n {value}\n </Badge>\n )\n },\n {\n key: \"amount\",\n title: \"Amount\",\n sortable: true,\n align: \"right\",\n render: (value: number) => `$${value.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`\n },\n {\n key: \"count\",\n title: \"Count\",\n sortable: true,\n align: \"right\"\n }\n]\n\ninterface StatementViewProps {\n statementType: string\n selectedProgram: string\n selectedProduct: string\n accountNumber: string\n startDate: Date | undefined\n endDate: Date | undefined\n statementGenerated: boolean\n programs: Array<{ value: string; label: string }>\n products: Array<{ value: string; label: string }>\n statementHeader: StatementHeader | null\n statementTransactions: StatementTransaction[]\n onStatementTypeChange: (value: string) => void\n onProgramChange: (value: string) => void\n onProductChange: (value: string) => void\n onAccountNumberChange: (value: string) => void\n onStartDateChange: (date: Date | undefined) => void\n onEndDateChange: (date: Date | undefined) => void\n onGenerateStatement: () => void\n onEdit: () => void\n onDownloadCSV: () => void\n onPrintPDF: () => void\n isGenerateDisabled: boolean\n isLoading: boolean\n}\n\nexport const StatementView = ({\n statementType,\n selectedProgram,\n selectedProduct,\n accountNumber,\n startDate,\n endDate,\n statementGenerated,\n programs,\n products,\n statementHeader,\n statementTransactions,\n onStatementTypeChange,\n onProgramChange,\n onProductChange,\n onAccountNumberChange,\n onStartDateChange,\n onEndDateChange,\n onGenerateStatement,\n onEdit,\n onDownloadCSV,\n onPrintPDF,\n isGenerateDisabled,\n isLoading\n}: StatementViewProps) => {\n return (\n <div className=\"container mx-auto p-6 space-y-6\">\n {/* Page Header */}\n <div>\n <h1 className=\"text-3xl font-bold tracking-tight\">Statement</h1>\n <p className=\"text-muted-foreground mt-1\">\n Generate and view statement reports\n </p>\n </div>\n\n {/* Filter Section - Only show when not generated */}\n {!statementGenerated && (\n <Card>\n <CardHeader>\n <CardTitle size=\"md\">Statement Parameters</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4\">\n {/* Statement Type */}\n <EnhancedSelect\n label=\"Statement Type\"\n placeholder=\"Select type\"\n options={statementTypes}\n value={statementType}\n onValueChange={onStatementTypeChange}\n />\n\n {/* Conditional Secondary Selector */}\n {statementType === \"program\" && (\n <EnhancedSelect\n label=\"Program Name\"\n placeholder=\"Select program\"\n options={programs}\n value={selectedProgram}\n onValueChange={onProgramChange}\n />\n )}\n\n {statementType === \"product\" && (\n <EnhancedSelect\n label=\"Product Name\"\n placeholder=\"Select product\"\n options={products}\n value={selectedProduct}\n onValueChange={onProductChange}\n />\n )}\n\n {statementType === \"account\" && (\n <EnhancedInput\n label=\"Account Number\"\n placeholder=\"Enter account number\"\n value={accountNumber}\n onChange={(e) => onAccountNumberChange(e.target.value)}\n />\n )}\n\n {/* Start Date */}\n <div className=\"flex flex-col gap-2\">\n <label className=\"text-sm font-medium\">Start Date</label>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n \"justify-start text-left font-normal\",\n !startDate && \"text-muted-foreground\"\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {startDate ? format(startDate, \"MM/dd/yyyy\") : \"Select date\"}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={startDate}\n onSelect={onStartDateChange}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n </div>\n\n {/* End Date */}\n <div className=\"flex flex-col gap-2\">\n <label className=\"text-sm font-medium\">End Date</label>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n \"justify-start text-left font-normal\",\n !endDate && \"text-muted-foreground\"\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {endDate ? format(endDate, \"MM/dd/yyyy\") : \"Select date\"}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={endDate}\n onSelect={onEndDateChange}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n </div>\n </div>\n\n {/* Generate Button */}\n <div className=\"flex justify-end\">\n <Button \n onClick={onGenerateStatement}\n disabled={isGenerateDisabled || isLoading}\n >\n {isLoading && <Loader2 className=\"h-4 w-4 animate-spin\" />}\n {isLoading ? \"Generating...\" : \"Generate Statement\"}\n </Button>\n </div>\n </CardContent>\n </Card>\n )}\n\n {/* Statement Results */}\n {statementGenerated && statementHeader && (\n <>\n {/* Statement Header */}\n <StatementHeaderComponent data={statementHeader} onEdit={onEdit} />\n\n {/* Statement Table */}\n <Card>\n <CardHeader direction=\"row\">\n <CardTitle size=\"md\">Transaction Summary</CardTitle>\n \n {/* Action Buttons */}\n <div className=\"flex items-center gap-2\">\n <Button variant=\"outline\" onClick={onDownloadCSV}>\n <Download className=\"h-4 w-4 mr-2\" />\n Download CSV\n </Button>\n <Button variant=\"outline\" onClick={onPrintPDF}>\n <FileText className=\"h-4 w-4 mr-2\" />\n Print PDF\n </Button>\n </div>\n </CardHeader>\n <CardContent>\n <DataTable\n columns={columns}\n data={statementTransactions}\n emptyMessage=\"No transactions found\"\n />\n </CardContent>\n </Card>\n </>\n )}\n </div>\n )\n}\n","import { FormCard } from \"@/components/ui/form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { Button } from \"@/components/ui/button\"\nimport { JsonViewer } from \"@/components/ui/json-viewer\"\n\ninterface ACHDetails {\n type: string\n originatorName: string\n originatorAccountNumber: string\n receiverName: string\n receiverAccountNumber: string\n receiverRoutingNumber: string\n amount: number\n secCode: string\n companyEntryDescription: string\n companyDiscretionaryData?: string\n individualIdNumber?: string\n individualName?: string\n traceNumber: string\n raw?: any\n}\n\ninterface ACHDetailsSectionProps {\n data: ACHDetails\n}\n\nexport const ACHDetailsSection = ({ data }: ACHDetailsSectionProps) => {\n const formatCurrency = (value: number) => {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2\n }).format(value)\n }\n\n return (\n <FormCard title=\"ACH Transfer Details\">\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-x-8 gap-y-4\">\n <InfoField label=\"Type\" value={data.type} layout=\"horizontal\" />\n <InfoField label=\"Originator Name\" value={data.originatorName} layout=\"horizontal\" />\n <InfoField \n label=\"Originator Account Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {data.originatorAccountNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Receiver Name\" value={data.receiverName} layout=\"horizontal\" />\n <InfoField \n label=\"Receiver Account Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {data.receiverAccountNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField \n label=\"Receiver Routing Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {data.receiverRoutingNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Amount\" value={formatCurrency(data.amount)} layout=\"horizontal\" />\n <InfoField label=\"SEC Code\" value={data.secCode} layout=\"horizontal\" />\n <InfoField label=\"Company Entry Description\" value={data.companyEntryDescription} layout=\"horizontal\" />\n {data.companyDiscretionaryData && (\n <InfoField label=\"Company Discretionary Data\" value={data.companyDiscretionaryData} layout=\"horizontal\" />\n )}\n {data.individualIdNumber && (\n <InfoField label=\"Individual ID Number\" value={data.individualIdNumber} layout=\"horizontal\" />\n )}\n {data.individualName && (\n <InfoField label=\"Individual Name\" value={data.individualName} layout=\"horizontal\" />\n )}\n <InfoField label=\"Trace Number\" value={data.traceNumber} layout=\"horizontal\" />\n </div>\n\n {/* Raw JSON - Full Width */}\n {data.raw && (\n <div className=\"mt-6 pt-6 border-t border-border\">\n <InfoField \n label=\"Raw\" \n value={<JsonViewer data={data.raw} className=\"mt-2\" compact={true} />}\n />\n </div>\n )}\n </FormCard>\n )\n}\n","import { FormCard } from \"@/components/ui/form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { Button } from \"@/components/ui/button\"\nimport { JsonViewer } from \"@/components/ui/json-viewer\"\n\ninterface WireDetails {\n type: string\n originatorName: string\n originatorAccountNumber: string\n originatorAddress: string\n beneficiaryName: string\n beneficiaryAccountNumber: string\n beneficiaryAddress: string\n beneficiaryFIName: string\n beneficiaryFIRoutingNumber: string\n beneficiaryFIAddress: string\n originatorFIName: string\n originatorFIRoutingNumber: string\n originatorFIAddress: string\n intermediaryFIName?: string\n intermediaryFIRoutingNumber?: string\n intermediaryFIAddress?: string\n raw?: any\n}\n\ninterface WireDetailsSectionProps {\n data: WireDetails\n}\n\nexport const WireDetailsSection = ({ data }: WireDetailsSectionProps) => {\n return (\n <FormCard title=\"Wire Transfer Details\">\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-x-8 gap-y-4\">\n <InfoField label=\"Type\" value={data.type} layout=\"horizontal\" />\n <InfoField label=\"Originator Name\" value={data.originatorName} layout=\"horizontal\" />\n <InfoField \n label=\"Originator Account Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {data.originatorAccountNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Originator Address\" value={data.originatorAddress} layout=\"horizontal\" />\n <InfoField label=\"Beneficiary Name\" value={data.beneficiaryName} layout=\"horizontal\" />\n <InfoField \n label=\"Beneficiary Account Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {data.beneficiaryAccountNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Beneficiary Address\" value={data.beneficiaryAddress} layout=\"horizontal\" />\n <InfoField label=\"Beneficiary FI Name\" value={data.beneficiaryFIName} layout=\"horizontal\" />\n <InfoField \n label=\"Beneficiary FI Routing Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {data.beneficiaryFIRoutingNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Beneficiary FI Address\" value={data.beneficiaryFIAddress} layout=\"horizontal\" />\n <InfoField label=\"Originator FI Name\" value={data.originatorFIName} layout=\"horizontal\" />\n <InfoField \n label=\"Originator FI Routing Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {data.originatorFIRoutingNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Originator FI Address\" value={data.originatorFIAddress} layout=\"horizontal\" />\n \n {data.intermediaryFIName && (\n <>\n <InfoField label=\"Intermediary FI Name\" value={data.intermediaryFIName} layout=\"horizontal\" />\n {data.intermediaryFIRoutingNumber && (\n <InfoField \n label=\"Intermediary FI Routing Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {data.intermediaryFIRoutingNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n )}\n {data.intermediaryFIAddress && (\n <InfoField label=\"Intermediary FI Address\" value={data.intermediaryFIAddress} layout=\"horizontal\" />\n )}\n </>\n )}\n </div>\n\n {/* Raw JSON - Full Width */}\n {data.raw && (\n <div className=\"mt-6 pt-6 border-t border-border\">\n <InfoField \n label=\"Raw\" \n value={<JsonViewer data={data.raw} className=\"mt-2\" compact={true} />}\n />\n </div>\n )}\n </FormCard>\n )\n}\n","import * as React from \"react\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { cn } from \"@/lib/utils\"\nimport { Building, CreditCard, Globe } from \"lucide-react\"\n\ninterface AccountCardProps {\n account: {\n id: string\n name: string\n number: string\n type: \"checking\" | \"savings\" | \"credit\" | \"investment\"\n status: \"active\" | \"inactive\" | \"pending\" | \"suspended\"\n balance?: string\n currency?: string\n institution?: string\n routingNumber?: string\n country?: string\n }\n showBalance?: boolean\n className?: string\n}\n\nconst typeIcons = {\n checking: CreditCard,\n savings: Building,\n credit: CreditCard,\n investment: Globe\n}\n\nconst typeLabels = {\n checking: \"Checking\",\n savings: \"Savings\", \n credit: \"Credit\",\n investment: \"Investment\"\n}\n\nexport const AccountCard = React.forwardRef<HTMLDivElement, AccountCardProps>(\n ({ account, showBalance = true, className }, ref) => {\n const TypeIcon = typeIcons[account.type]\n \n const accountData = [\n { label: \"Account Number\", value: account.number },\n { label: \"Type\", value: typeLabels[account.type] },\n ...(account.routingNumber ? [{ label: \"Routing Number\", value: account.routingNumber }] : []),\n ...(account.institution ? [{ label: \"Institution\", value: account.institution }] : []),\n ...(account.country ? [{ label: \"Country\", value: account.country }] : [])\n ]\n\n return (\n <Card ref={ref} className={cn(\"\", className)}>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-3\">\n <div className=\"flex items-center justify-center w-10 h-10 rounded-lg bg-primary/10\">\n <TypeIcon className=\"w-5 h-5 text-primary\" />\n </div>\n <div>\n <CardTitle className=\"text-lg\">{account.name}</CardTitle>\n <div className=\"flex items-center space-x-2 mt-1\">\n <Badge variant={account.status as any}>{account.status}</Badge>\n <span className=\"text-sm text-muted-foreground\">\n {typeLabels[account.type]}\n </span>\n </div>\n </div>\n </div>\n \n {showBalance && account.balance && (\n <div className=\"text-right\">\n <div className=\"text-2xl font-bold text-foreground\">\n {account.balance}\n </div>\n {account.currency && (\n <div className=\"text-sm text-muted-foreground\">\n {account.currency}\n </div>\n )}\n </div>\n )}\n </div>\n </CardHeader>\n \n <CardContent>\n <DataGrid data={accountData} columns={2} gap=\"sm\" />\n </CardContent>\n </Card>\n )\n }\n)\n\nAccountCard.displayName = \"AccountCard\"","import { Badge } from \"@/components/ui/badge\"\nimport { Building, Briefcase, Users, User } from \"lucide-react\"\n\ninterface BusinessTypeBadgeProps {\n type: \"corporation\" | \"llc\" | \"partnership\" | \"sole_proprietorship\"\n className?: string\n}\n\nconst typeConfig = {\n corporation: {\n variant: \"corporation\" as const,\n label: \"Corporation\",\n icon: Building\n },\n llc: {\n variant: \"llc\" as const,\n label: \"LLC\",\n icon: Briefcase\n },\n partnership: {\n variant: \"partnership\" as const,\n label: \"Partnership\",\n icon: Users\n },\n sole_proprietorship: {\n variant: \"sole_proprietorship\" as const,\n label: \"Sole Proprietorship\",\n icon: User\n }\n}\n\nexport const BusinessTypeBadge = ({ type, className }: BusinessTypeBadgeProps) => {\n const config = typeConfig[type]\n const Icon = config.icon\n\n return (\n <Badge variant={config.variant} className={className}>\n <Icon className=\"w-3 h-3 mr-1\" />\n {config.label}\n </Badge>\n )\n}","import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface PageAction {\n label: string\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\"\n onClick: () => void\n icon?: React.ComponentType<{ className?: string }>\n}\n\nexport interface PageCard {\n component: React.ComponentType<any>\n key: string\n expandOnEdit?: boolean\n props?: Record<string, any>\n}\n\ninterface PageLayoutProps {\n title: string | React.ReactNode\n description?: string\n children?: React.ReactNode\n actions?: PageAction[]\n cards?: PageCard[]\n mode?: \"simple\" | \"detail\" | \"cards\"\n maxWidth?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\"\n gridCols?: 1 | 2 | 3 | 4\n responsive?: boolean\n className?: string\n headerContent?: React.ReactNode\n}\n\nconst maxWidthClasses = {\n sm: \"max-w-2xl\",\n md: \"max-w-4xl\", \n lg: \"max-w-6xl\",\n xl: \"max-w-7xl\",\n \"2xl\": \"max-w-screen-2xl\",\n full: \"max-w-none\"\n}\n\nconst getGridClasses = (gridCols: number, responsive: boolean) => {\n const colsMap = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\", \n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\"\n }\n \n if (!responsive) {\n return colsMap[gridCols as keyof typeof colsMap] || \"grid-cols-1\"\n }\n \n // Responsive grid classes\n switch (gridCols) {\n case 1:\n return \"grid-cols-1\"\n case 2:\n return \"grid-cols-1 lg:grid-cols-2\"\n case 3:\n return \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3\"\n case 4:\n return \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\"\n default:\n return \"grid-cols-1 lg:grid-cols-2\"\n }\n}\n\nexport const PageLayout = React.forwardRef<HTMLDivElement, PageLayoutProps>(\n ({ \n title, \n description, \n children, \n actions = [], \n cards = [],\n mode = \"simple\",\n maxWidth = \"xl\",\n gridCols = 2,\n responsive = true,\n className,\n headerContent\n }, ref) => {\n const [editingCards, setEditingCards] = React.useState<Set<string>>(new Set())\n\n const toggleEdit = (cardKey: string) => {\n setEditingCards(prev => {\n const next = new Set(prev)\n if (next.has(cardKey)) {\n next.delete(cardKey)\n } else {\n next.add(cardKey)\n }\n return next\n })\n }\n\n return (\n <div ref={ref} className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Sticky Header */}\n <div className={cn(\n \"sticky top-0 z-10 bg-gradient-subtle border-b border-border/40\",\n \"container mx-auto px-4 pt-8 pb-4\",\n maxWidthClasses[maxWidth]\n )}>\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1\">\n <h1 className=\"text-3xl font-bold text-foreground mb-2\">\n {title}\n </h1>\n {description && (\n <p className=\"text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n \n {headerContent && (\n <div className=\"flex items-center\">\n {headerContent}\n </div>\n )}\n \n {actions.length > 0 && (\n <div className=\"flex items-center gap-2\">\n {actions.map((action, index) => {\n const Icon = action.icon\n return (\n <button\n key={index}\n onClick={action.onClick}\n className={cn(\n \"inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors\",\n {\n \"bg-primary text-primary-foreground hover:bg-primary/90\": action.variant === \"default\" || !action.variant,\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\": action.variant === \"secondary\",\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\": action.variant === \"destructive\",\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\": action.variant === \"outline\",\n \"hover:bg-accent hover:text-accent-foreground\": action.variant === \"ghost\"\n }\n )}\n >\n {Icon && <Icon className=\"h-4 w-4\" />}\n {action.label}\n </button>\n )\n })}\n </div>\n )}\n </div>\n </div>\n \n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-y-auto\">\n <div className={cn(\n \"container mx-auto px-4 py-6\",\n maxWidthClasses[maxWidth],\n className\n )}>\n {mode === \"cards\" && cards.length > 0 ? (\n <div className={cn(\"grid gap-6\", getGridClasses(gridCols, responsive))}>\n {cards.map((card) => {\n const isEditing = editingCards.has(card.key)\n const shouldExpand = card.expandOnEdit && isEditing\n \n return (\n <div \n key={card.key}\n className={cn(\n \"transition-all duration-300\",\n shouldExpand && (gridCols > 1 ? \"col-span-full\" : \"\")\n )}\n >\n <card.component\n {...card.props}\n isEditing={isEditing}\n onToggleEdit={() => toggleEdit(card.key)}\n />\n </div>\n )\n })}\n </div>\n ) : (\n children\n )}\n </div>\n </div>\n </div>\n )\n }\n)\n\nPageLayout.displayName = \"PageLayout\"","import { ReactNode, useState } from \"react\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { Button } from \"@/components/ui/button\"\n\ninterface DetailPageCard {\n key: string\n component: (props: { isEditing: boolean; onToggleEdit: () => void; className?: string }) => ReactNode\n expandOnEdit?: boolean\n}\n\ninterface DetailPageAction {\n label: string\n variant?: \"default\" | \"outline\" | \"destructive\" | \"secondary\" | \"ghost\"\n onClick?: () => void\n className?: string\n}\n\ninterface DetailPageLayoutProps {\n title: string\n description: string\n cards: DetailPageCard[]\n actions?: DetailPageAction[]\n initialEditingState?: Record<string, boolean>\n}\n\nexport const DetailPageLayout = ({ \n title, \n description, \n cards, \n actions,\n initialEditingState = {}\n}: DetailPageLayoutProps) => {\n const [editingCards, setEditingCards] = useState<Record<string, boolean>>(\n initialEditingState\n )\n\n const toggleEdit = (cardKey: string) => {\n setEditingCards(prev => ({\n ...prev,\n [cardKey]: !prev[cardKey]\n }))\n }\n\n const isAnyCardEditing = Object.values(editingCards).some(Boolean)\n\n const isSingleCard = cards.length === 1\n const gridClasses = isSingleCard \n ? \"space-y-4 mb-6 lg:space-y-6\" \n : \"grid gap-4 mb-6 grid-cols-1 lg:grid-cols-2 lg:gap-6\"\n\n return (\n <PageLayout \n title={title} \n description={description}\n actions={actions?.map(action => ({\n label: action.label,\n variant: action.variant || \"default\",\n onClick: action.onClick || (() => {})\n }))}\n >\n {/* Cards - Full width for single card, max 2 per row for multiple */}\n <div className={gridClasses}>\n {cards.map((card) => {\n const isEditing = editingCards[card.key] || false\n const shouldExpand = !isSingleCard && card.expandOnEdit !== false && isEditing\n \n return (\n <div \n key={card.key}\n className={shouldExpand ? \"col-span-full\" : \"\"}\n >\n {card.component({ \n isEditing, \n onToggleEdit: () => toggleEdit(card.key),\n className: shouldExpand ? \"col-span-full\" : \"\"\n })}\n </div>\n )\n })}\n </div>\n </PageLayout>\n )\n}","import * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { cn } from \"@/lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n}","import { useState } from \"react\"\nimport { InfoField } from \"./info-field\"\nimport { EnhancedSelect } from \"./enhanced-select\"\nimport { Badge } from \"./badge\"\nimport { cn } from \"@/lib/utils\"\n\ninterface EditableInfoFieldProps {\n label: string\n value: string | null | undefined\n options: { value: string; label: string }[]\n onChange: (value: string) => void\n placeholder?: string\n renderValue?: (value: string) => React.ReactNode\n className?: string\n}\n\nexport const EditableInfoField = ({\n label,\n value,\n options,\n onChange,\n placeholder = \"Select...\",\n renderValue,\n className\n}: EditableInfoFieldProps) => {\n const [isEditing, setIsEditing] = useState(false)\n\n const handleChange = (newValue: string) => {\n onChange(newValue)\n setIsEditing(false)\n }\n\n if (isEditing) {\n return (\n <div className={className}>\n <EnhancedSelect\n label={label}\n value={value || \"\"}\n onValueChange={handleChange}\n options={options}\n placeholder={placeholder}\n />\n </div>\n )\n }\n\n const displayValue = value \n ? (renderValue ? renderValue(value) : value)\n : placeholder\n\n return (\n <div \n className={cn(\"cursor-pointer transition-colors hover:bg-muted/50 rounded-md -mx-2 px-2 -my-1 py-1\", className)}\n onClick={() => setIsEditing(true)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n setIsEditing(true)\n }\n }}\n >\n <InfoField label={label} value={displayValue} />\n </div>\n )\n}\n","import * as React from \"react\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { cn } from \"@/lib/utils\"\nimport { MoreVertical, Edit, Trash2, Eye } from \"lucide-react\"\nimport { \n DropdownMenu, \n DropdownMenuContent, \n DropdownMenuItem, \n DropdownMenuSeparator, \n DropdownMenuTrigger \n} from \"@/components/ui/dropdown-menu\"\n\ninterface EntityAction {\n label: string\n icon: React.ReactNode\n onClick: () => void\n variant?: \"default\" | \"destructive\"\n}\n\ninterface EntityCardProps {\n entity: {\n id: string\n name: string\n type: string\n status: string\n description?: string\n metadata?: Record<string, any>\n }\n actions?: EntityAction[]\n showDefaultActions?: boolean\n onView?: (id: string) => void\n onEdit?: (id: string) => void\n onDelete?: (id: string) => void\n className?: string\n children?: React.ReactNode\n}\n\nexport const EntityCard = React.forwardRef<HTMLDivElement, EntityCardProps>(\n ({ \n entity, \n actions, \n showDefaultActions = true,\n onView,\n onEdit, \n onDelete,\n className, \n children \n }, ref) => {\n const defaultActions: EntityAction[] = [\n ...(onView ? [{\n label: \"View Details\",\n icon: <Eye className=\"w-4 h-4\" />,\n onClick: () => onView(entity.id)\n }] : []),\n ...(onEdit ? [{\n label: \"Edit\",\n icon: <Edit className=\"w-4 h-4\" />,\n onClick: () => onEdit(entity.id)\n }] : []),\n ...(onDelete ? [{\n label: \"Delete\",\n icon: <Trash2 className=\"w-4 h-4\" />,\n onClick: () => onDelete(entity.id),\n variant: \"destructive\" as const\n }] : [])\n ]\n\n const allActions = showDefaultActions ? [...defaultActions, ...(actions || [])] : (actions || [])\n \n const entityData = entity.metadata ? Object.entries(entity.metadata)\n .filter(([_, value]) => value !== null && value !== undefined)\n .map(([key, value]) => ({\n label: key.charAt(0).toUpperCase() + key.slice(1).replace(/([A-Z])/g, ' $1'),\n value: typeof value === 'object' ? JSON.stringify(value) : String(value)\n })) : []\n\n return (\n <Card ref={ref} className={cn(\"relative\", className)}>\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1 min-w-0\">\n <CardTitle className=\"text-lg truncate\">{entity.name}</CardTitle>\n <div className=\"flex items-center space-x-2 mt-2\">\n <Badge variant={entity.status as any}>{entity.status}</Badge>\n <Badge variant=\"outline\">{entity.type}</Badge>\n </div>\n {entity.description && (\n <p className=\"text-sm text-muted-foreground mt-2 line-clamp-2\">\n {entity.description}\n </p>\n )}\n </div>\n \n {allActions.length > 0 && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\">\n <MoreVertical className=\"w-4 h-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {allActions.map((action, index) => (\n <React.Fragment key={index}>\n <DropdownMenuItem\n onClick={action.onClick}\n className={cn(\n action.variant === \"destructive\" && \"text-destructive focus:text-destructive\"\n )}\n >\n {action.icon}\n {action.label}\n </DropdownMenuItem>\n {index < allActions.length - 1 && action.variant === \"destructive\" && (\n <DropdownMenuSeparator />\n )}\n </React.Fragment>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n </CardHeader>\n \n {(entityData.length > 0 || children) && (\n <CardContent>\n {entityData.length > 0 && (\n <DataGrid data={entityData} columns={2} gap=\"sm\" />\n )}\n {children}\n </CardContent>\n )}\n </Card>\n )\n }\n)\n\nEntityCard.displayName = \"EntityCard\"","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface FormFieldProps {\n label?: string\n description?: string\n error?: string\n required?: boolean\n children: React.ReactNode\n className?: string\n layout?: \"vertical\" | \"horizontal\"\n}\n\nexport const FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(\n ({ label, description, error, required, children, className, layout = \"vertical\" }, ref) => {\n const isHorizontal = layout === \"horizontal\"\n \n return (\n <div \n ref={ref}\n className={cn(\n \"space-y-2\",\n isHorizontal && \"grid grid-cols-1 md:grid-cols-3 gap-4 items-start space-y-0\",\n className\n )}\n >\n {label && (\n <div className={cn(\"space-y-1\", isHorizontal && \"pt-2\")}>\n <label className=\"text-sm font-medium text-foreground\">\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </label>\n {description && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n </div>\n )}\n \n <div className={cn(isHorizontal && \"md:col-span-2\")}>\n {children}\n {error && (\n <p className=\"text-xs text-destructive mt-1\">{error}</p>\n )}\n </div>\n </div>\n )\n }\n)\n\nFormField.displayName = \"FormField\"","import * as React from \"react\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { cn } from \"@/lib/utils\"\nimport { TrendingUp, TrendingDown, Minus } from \"lucide-react\"\n\ninterface MetricCardProps {\n title: string\n value: string | number\n description?: string\n trend?: {\n value: number\n label: string\n direction: \"up\" | \"down\" | \"neutral\"\n }\n icon?: React.ReactNode\n variant?: \"default\" | \"success\" | \"warning\" | \"destructive\"\n className?: string\n}\n\nconst variantStyles = {\n default: \"\",\n success: \"border-success/20 bg-success/5\",\n warning: \"border-warning/20 bg-warning/5\", \n destructive: \"border-destructive/20 bg-destructive/5\"\n}\n\nconst trendIcons = {\n up: TrendingUp,\n down: TrendingDown,\n neutral: Minus\n}\n\nconst trendColors = {\n up: \"success\",\n down: \"destructive\",\n neutral: \"secondary\"\n} as const\n\nexport const MetricCard = React.forwardRef<HTMLDivElement, MetricCardProps>(\n ({ title, value, description, trend, icon, variant = \"default\", className }, ref) => {\n const TrendIcon = trend ? trendIcons[trend.direction] : null\n \n return (\n <Card \n ref={ref}\n className={cn(variantStyles[variant], className)}\n >\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium text-muted-foreground\">\n {title}\n </CardTitle>\n {icon && (\n <div className=\"text-muted-foreground\">\n {icon}\n </div>\n )}\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold text-foreground\">{value}</div>\n {(description || trend) && (\n <div className=\"flex items-center justify-between mt-2\">\n {description && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n {trend && TrendIcon && (\n <Badge variant={trendColors[trend.direction]} className=\"text-xs\">\n <TrendIcon className=\"w-3 h-3 mr-1\" />\n {trend.value > 0 ? \"+\" : \"\"}{trend.value}% {trend.label}\n </Badge>\n )}\n </div>\n )}\n </CardContent>\n </Card>\n )\n }\n)\n\nMetricCard.displayName = \"MetricCard\"","import { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, toast } from \"sonner\"\n\ntype ToasterProps = React.ComponentProps<typeof Sonner>\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n \"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\",\n description: \"group-[.toast]:text-muted-foreground\",\n actionButton:\n \"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\",\n cancelButton:\n \"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\",\n },\n }}\n {...props}\n />\n )\n}\n\nexport { Toaster, toast }\n","import * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\nimport { cn } from \"@/lib/utils\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n className\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }","import * as React from \"react\"\nimport * as ToastPrimitives from \"@radix-ui/react-toast\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n className\n )}\n {...props}\n />\n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"border bg-background text-foreground\",\n destructive:\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n )\n})\nToast.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n className\n )}\n {...props}\n />\n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n \"absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"h-4 w-4\" />\n </ToastPrimitives.Close>\n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn(\"text-sm font-semibold\", className)}\n {...props}\n />\n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"text-sm opacity-90\", className)}\n {...props}\n />\n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n}\n","import { Badge } from \"@/components/ui/badge\"\nimport { ArrowDownRight, ArrowUpRight } from \"lucide-react\"\n\ninterface TransactionTypeBadgeProps {\n transactionType: string\n isInbound: boolean\n className?: string\n}\n\nexport const TransactionTypeBadge = ({ \n transactionType, \n isInbound,\n className \n}: TransactionTypeBadgeProps) => {\n const Icon = isInbound ? ArrowDownRight : ArrowUpRight\n const variant = \"outline\"\n \n return (\n <Badge variant={variant} className={className}>\n {isInbound && <Icon className=\"w-3 h-3 mr-1\" />}\n {transactionType}\n {!isInbound && <Icon className=\"w-3 h-3 ml-1\" />}\n </Badge>\n )\n}\n","import { Building, Users, User, CreditCard } from \"lucide-react\"\n\nexport const mockCounterparties = [\n {\n id: \"1\",\n name: \"Acme Corporation\",\n type: \"business\",\n businessType: \"corporation\",\n status: \"active\",\n description: \"Leading technology solutions provider\",\n metadata: {\n email: \"contact@acme.com\",\n phone: \"+1 (555) 123-4567\",\n country: \"United States\",\n lastActivity: \"2024-01-15\"\n }\n },\n {\n id: \"2\", \n name: \"Global Tech LLC\",\n type: \"business\",\n businessType: \"llc\",\n status: \"pending\",\n description: \"Software development and consulting services\",\n metadata: {\n email: \"info@globaltech.com\",\n phone: \"+1 (555) 987-6543\",\n country: \"Canada\",\n lastActivity: \"2024-01-10\"\n }\n },\n {\n id: \"3\",\n name: \"John Smith\",\n type: \"individual\", \n businessType: null,\n status: \"active\",\n description: \"Individual contractor and consultant\",\n metadata: {\n email: \"john.smith@email.com\",\n phone: \"+1 (555) 456-7890\",\n country: \"United States\",\n lastActivity: \"2024-01-20\"\n }\n },\n {\n id: \"4\",\n name: \"Innovation Partners\",\n type: \"business\",\n businessType: \"partnership\", \n status: \"inactive\",\n description: \"Strategic business consulting firm\",\n metadata: {\n email: \"hello@innovation.com\",\n phone: \"+1 (555) 321-0987\",\n country: \"United Kingdom\",\n lastActivity: \"2024-01-05\"\n }\n }\n]\n\nexport const mockAccounts = [\n {\n id: \"1\",\n name: \"Primary Checking\",\n number: \"****1234\",\n type: \"checking\" as const,\n status: \"active\" as const,\n balance: \"$24,567.89\",\n currency: \"USD\",\n institution: \"JPMorgan Chase\",\n routingNumber: \"021000021\",\n country: \"United States\"\n },\n {\n id: \"2\", \n name: \"Business Savings\",\n number: \"****5678\",\n type: \"savings\" as const,\n status: \"active\" as const,\n balance: \"$150,000.00\",\n currency: \"USD\",\n institution: \"Bank of America\", \n routingNumber: \"026009593\",\n country: \"United States\"\n },\n {\n id: \"3\",\n name: \"Investment Account\",\n number: \"****9012\",\n type: \"investment\" as const,\n status: \"pending\" as const,\n balance: \"$75,432.10\",\n currency: \"USD\",\n institution: \"Fidelity Investments\",\n routingNumber: \"011000235\",\n country: \"United States\"\n }\n]\n\nexport const mockMetrics = [\n {\n title: \"Total Counterparties\",\n value: \"1,234\",\n description: \"Active business relationships\",\n trend: {\n value: 12,\n label: \"from last month\",\n direction: \"up\" as const\n },\n icon: <Building className=\"w-4 h-4\" />,\n variant: \"default\" as const\n },\n {\n title: \"Wire Transfers\",\n value: \"$2.4M\",\n description: \"This month\",\n trend: {\n value: 8,\n label: \"from last month\", \n direction: \"up\" as const\n },\n icon: <CreditCard className=\"w-4 h-4\" />,\n variant: \"success\" as const\n },\n {\n title: \"ACH Transfers\",\n value: \"567\",\n description: \"Processed this week\",\n trend: {\n value: -3,\n label: \"from last week\",\n direction: \"down\" as const\n },\n icon: <Users className=\"w-4 h-4\" />,\n variant: \"warning\" as const\n },\n {\n title: \"Pending Reviews\",\n value: \"23\",\n description: \"Require attention\",\n trend: {\n value: 0,\n label: \"no change\",\n direction: \"neutral\" as const\n },\n icon: <User className=\"w-4 h-4\" />,\n variant: \"destructive\" as const\n }\n]\n\nexport const mockTableData = [\n {\n id: \"1\",\n name: \"Acme Corporation\",\n type: \"Business\",\n status: \"Active\",\n amount: \"$125,000\",\n date: \"2024-01-15\",\n verified: true\n },\n {\n id: \"2\",\n name: \"Global Tech LLC\", \n type: \"Business\",\n status: \"Pending\",\n amount: \"$75,500\",\n date: \"2024-01-12\",\n verified: false\n },\n {\n id: \"3\",\n name: \"John Smith\",\n type: \"Individual\",\n status: \"Active\", \n amount: \"$45,200\",\n date: \"2024-01-10\",\n verified: true\n }\n]","import * as React from \"react\"\nimport { ListPage } from \"@/components/layouts/list-page\"\nimport { MetricCard } from \"@/components/ui/metric-card\"\nimport { DataTable, type DataTableColumn } from \"@/components/ui/data-table\"\nimport { EntityCard } from \"@/components/ui/entity-card\"\nimport { AccountCard } from \"@/components/ui/account-card\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { mockMetrics, mockTableData, mockCounterparties, mockAccounts } from \"@/lib/mock-data\"\nimport { Plus, Download, TrendingUp } from \"lucide-react\"\n\nconst recentTransactions = [\n {\n id: \"1\",\n recipient: \"Acme Corporation\",\n amount: \"$25,000\",\n type: \"Wire Transfer\",\n status: \"completed\",\n date: \"2024-01-20\"\n },\n {\n id: \"2\", \n recipient: \"Global Tech LLC\",\n amount: \"$12,500\",\n type: \"ACH Transfer\",\n status: \"pending\",\n date: \"2024-01-20\"\n },\n {\n id: \"3\",\n recipient: \"John Smith\",\n amount: \"$3,200\",\n type: \"Wire Transfer\", \n status: \"completed\",\n date: \"2024-01-19\"\n }\n]\n\nconst transactionColumns: DataTableColumn[] = [\n { key: \"recipient\", title: \"Recipient\", sortable: true },\n { key: \"amount\", title: \"Amount\", sortable: true, align: \"right\" },\n { key: \"type\", title: \"Type\", sortable: true },\n { \n key: \"status\", \n title: \"Status\", \n sortable: true,\n render: (value) => <Badge variant={value === \"completed\" ? \"success\" : \"warning\"}>{value}</Badge>\n },\n { key: \"date\", title: \"Date\", sortable: true }\n]\n\nexport function DashboardDemo() {\n const [sortBy, setSortBy] = React.useState<string>()\n const [sortDirection, setSortDirection] = React.useState<\"asc\" | \"desc\">(\"asc\")\n\n const handleSort = (key: string) => {\n if (sortBy === key) {\n setSortDirection(sortDirection === \"asc\" ? \"desc\" : \"asc\")\n } else {\n setSortBy(key)\n setSortDirection(\"asc\")\n }\n }\n\n const breadcrumbs = [\n { label: \"UI Kit\", href: \"/ui-kit\" },\n { label: \"Dashboard Demo\" }\n ]\n\n const actions = [\n {\n label: \"Export Report\",\n onClick: () => console.log(\"Export\"),\n variant: \"outline\" as const,\n icon: <Download className=\"w-4 h-4\" />\n },\n {\n label: \"New Transfer\",\n onClick: () => console.log(\"New Transfer\"),\n icon: <Plus className=\"w-4 h-4\" />\n }\n ]\n\n return (\n <ListPage\n title=\"Financial Dashboard\"\n description=\"Comprehensive overview of accounts, transfers, and business metrics\"\n breadcrumbs={breadcrumbs}\n actions={actions}\n maxWidth=\"xl\"\n >\n {/* Metrics Overview */}\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockMetrics.map((metric, index) => (\n <MetricCard key={index} {...metric} />\n ))}\n </ResponsiveGrid>\n\n {/* Account Cards */}\n <Card>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <CardTitle>Account Overview</CardTitle>\n <Badge variant=\"secondary\" className=\"flex items-center gap-1\">\n <TrendingUp className=\"w-3 h-3\" />\n 3 Active Accounts\n </Badge>\n </div>\n </CardHeader>\n <CardContent>\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockAccounts.map((account) => (\n <AccountCard key={account.id} account={account} />\n ))}\n </ResponsiveGrid>\n </CardContent>\n </Card>\n\n {/* Recent Transactions */}\n <Card>\n <CardHeader>\n <CardTitle>Recent Transactions</CardTitle>\n </CardHeader>\n <CardContent>\n <DataTable\n columns={transactionColumns}\n data={recentTransactions}\n sortBy={sortBy}\n sortDirection={sortDirection}\n onSort={handleSort}\n />\n </CardContent>\n </Card>\n\n {/* Recent Counterparties */}\n <Card>\n <CardHeader>\n <CardTitle>Recent Counterparties</CardTitle>\n </CardHeader>\n <CardContent>\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockCounterparties.slice(0, 4).map((entity) => (\n <EntityCard \n key={entity.id}\n entity={entity}\n onView={(id) => console.log(\"View\", id)}\n onEdit={(id) => console.log(\"Edit\", id)}\n />\n ))}\n </ResponsiveGrid>\n </CardContent>\n </Card>\n </ListPage>\n )\n}","import * as React from \"react\"\nimport { Container } from \"@/components/ui/container\"\nimport { Stack } from \"@/components/ui/stack\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { Copy, Check } from \"lucide-react\"\n\nconst colorPalette = {\n primary: {\n name: \"Primary\",\n colors: [\n { name: \"primary\", value: \"hsl(204 100% 54%)\", class: \"bg-primary\" },\n { name: \"primary-foreground\", value: \"hsl(0 0% 100%)\", class: \"bg-primary-foreground\" },\n { name: \"primary-glow\", value: \"hsl(204 100% 64%)\", class: \"bg-primary-glow\" }\n ]\n },\n neutral: {\n name: \"Neutral\",\n colors: [\n { name: \"background\", value: \"hsl(240 10% 98%)\", class: \"bg-background\" },\n { name: \"foreground\", value: \"hsl(240 10% 8%)\", class: \"bg-foreground\" },\n { name: \"muted\", value: \"hsl(240 5% 96%)\", class: \"bg-muted\" },\n { name: \"muted-foreground\", value: \"hsl(240 4% 46%)\", class: \"bg-muted-foreground\" }\n ]\n },\n semantic: {\n name: \"Semantic\",\n colors: [\n { name: \"success\", value: \"hsl(142 76% 36%)\", class: \"bg-success\" },\n { name: \"warning\", value: \"hsl(38 92% 50%)\", class: \"bg-warning\" },\n { name: \"destructive\", value: \"hsl(0 84% 60%)\", class: \"bg-destructive\" }\n ]\n }\n}\n\nconst typography = [\n { name: \"Heading 1\", class: \"text-3xl font-bold\", example: \"The quick brown fox\" },\n { name: \"Heading 2\", class: \"text-2xl font-semibold\", example: \"The quick brown fox\" },\n { name: \"Heading 3\", class: \"text-xl font-medium\", example: \"The quick brown fox\" },\n { name: \"Body Large\", class: \"text-lg\", example: \"The quick brown fox jumps over the lazy dog\" },\n { name: \"Body\", class: \"text-base\", example: \"The quick brown fox jumps over the lazy dog\" },\n { name: \"Body Small\", class: \"text-sm\", example: \"The quick brown fox jumps over the lazy dog\" },\n { name: \"Caption\", class: \"text-xs text-muted-foreground\", example: \"The quick brown fox jumps over the lazy dog\" }\n]\n\nconst spacing = [\n { name: \"None\", class: \"space-y-0\", value: \"0\" },\n { name: \"XS\", class: \"space-y-1\", value: \"0.25rem\" },\n { name: \"SM\", class: \"space-y-2\", value: \"0.5rem\" },\n { name: \"MD\", class: \"space-y-4\", value: \"1rem\" },\n { name: \"LG\", class: \"space-y-6\", value: \"1.5rem\" },\n { name: \"XL\", class: \"space-y-8\", value: \"2rem\" }\n]\n\nconst badgeVariants = [\n \"default\", \"secondary\", \"destructive\", \"outline\", \"success\", \"warning\",\n \"business\", \"individual\", \"active\", \"inactive\", \"pending\", \"suspended\"\n]\n\nfunction ColorSwatch({ color }: { color: { name: string; value: string; class: string } }) {\n const [copied, setCopied] = React.useState(false)\n \n const copyToClipboard = () => {\n navigator.clipboard.writeText(color.value)\n setCopied(true)\n setTimeout(() => setCopied(false), 2000)\n }\n \n return (\n <div className=\"group cursor-pointer\" onClick={copyToClipboard}>\n <div className={`h-16 w-full rounded-lg ${color.class} mb-2 group-hover:scale-105 transition-transform`} />\n <div className=\"text-xs\">\n <div className=\"font-medium text-foreground\">{color.name}</div>\n <div className=\"text-muted-foreground flex items-center gap-1\">\n {color.value}\n {copied ? <Check className=\"w-3 h-3 text-success\" /> : <Copy className=\"w-3 h-3 opacity-0 group-hover:opacity-100\" />}\n </div>\n </div>\n </div>\n )\n}\n\nexport function PatternLibrary() {\n return (\n <Container size=\"xl\">\n <Stack spacing=\"lg\">\n <div>\n <h1 className=\"text-3xl font-bold text-foreground\">Pattern Library</h1>\n <p className=\"text-muted-foreground mt-2\">\n Design system tokens, components, and usage guidelines\n </p>\n </div>\n\n <Tabs defaultValue=\"colors\" className=\"w-full\">\n <TabsList className=\"grid w-full grid-cols-4\">\n <TabsTrigger value=\"colors\">Colors</TabsTrigger>\n <TabsTrigger value=\"typography\">Typography</TabsTrigger>\n <TabsTrigger value=\"spacing\">Spacing</TabsTrigger>\n <TabsTrigger value=\"components\">Components</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"colors\" className=\"mt-6\">\n <Stack spacing=\"lg\">\n {Object.entries(colorPalette).map(([key, palette]) => (\n <Card key={key}>\n <CardHeader>\n <CardTitle>{palette.name}</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4\">\n {palette.colors.map((color) => (\n <ColorSwatch key={color.name} color={color} />\n ))}\n </div>\n </CardContent>\n </Card>\n ))}\n </Stack>\n </TabsContent>\n\n <TabsContent value=\"typography\" className=\"mt-6\">\n <Card>\n <CardHeader>\n <CardTitle>Typography Scale</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack spacing=\"lg\">\n {typography.map((type) => (\n <div key={type.name} className=\"grid grid-cols-1 md:grid-cols-4 gap-4 items-center\">\n <div className=\"text-sm font-medium text-muted-foreground\">\n {type.name}\n </div>\n <div className=\"md:col-span-2\">\n <div className={type.class}>{type.example}</div>\n </div>\n <div className=\"text-xs text-muted-foreground font-mono\">\n {type.class}\n </div>\n </div>\n ))}\n </Stack>\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"spacing\" className=\"mt-6\">\n <Card>\n <CardHeader>\n <CardTitle>Spacing System</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack spacing=\"lg\">\n {spacing.map((space) => (\n <div key={space.name} className=\"grid grid-cols-1 md:grid-cols-4 gap-4 items-center\">\n <div className=\"text-sm font-medium text-muted-foreground\">\n {space.name}\n </div>\n <div className=\"md:col-span-2\">\n <div className={space.class}>\n <div className=\"bg-primary/20 p-2 rounded\">Item 1</div>\n <div className=\"bg-primary/20 p-2 rounded\">Item 2</div>\n </div>\n </div>\n <div className=\"text-xs text-muted-foreground font-mono\">\n {space.value} ({space.class})\n </div>\n </div>\n ))}\n </Stack>\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"components\" className=\"mt-6\">\n <Stack spacing=\"lg\">\n {/* Badges */}\n <Card>\n <CardHeader>\n <CardTitle>Badge Variants</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"flex flex-wrap gap-2\">\n {badgeVariants.map((variant) => (\n <Badge key={variant} variant={variant as any}>\n {variant}\n </Badge>\n ))}\n </div>\n </CardContent>\n </Card>\n\n {/* Buttons */}\n <Card>\n <CardHeader>\n <CardTitle>Button Variants</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack direction=\"horizontal\" spacing=\"sm\" className=\"flex-wrap\">\n <Button variant=\"default\">Default</Button>\n <Button variant=\"secondary\">Secondary</Button>\n <Button variant=\"outline\">Outline</Button>\n <Button variant=\"ghost\">Ghost</Button>\n <Button variant=\"link\">Link</Button>\n <Button variant=\"destructive\">Destructive</Button>\n </Stack>\n </CardContent>\n </Card>\n\n {/* Grid Examples */}\n <Card>\n <CardHeader>\n <CardTitle>Grid Layouts</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack spacing=\"md\">\n <div>\n <h4 className=\"text-sm font-medium mb-2\">Cards Grid</h4>\n <ResponsiveGrid type=\"cards\" gap=\"sm\">\n {[1, 2, 3, 4, 5, 6].map((i) => (\n <div key={i} className=\"bg-muted rounded p-4 text-center text-sm\">\n Card {i}\n </div>\n ))}\n </ResponsiveGrid>\n </div>\n <div>\n <h4 className=\"text-sm font-medium mb-2\">Forms Grid</h4>\n <ResponsiveGrid type=\"forms\" gap=\"md\">\n {[1, 2, 3, 4].map((i) => (\n <div key={i} className=\"bg-muted rounded p-4 text-center text-sm\">\n Form Section {i}\n </div>\n ))}\n </ResponsiveGrid>\n </div>\n </Stack>\n </CardContent>\n </Card>\n </Stack>\n </TabsContent>\n </Tabs>\n </Stack>\n </Container>\n )\n}","import * as React from \"react\"\nimport { Container } from \"@/components/ui/container\"\nimport { Stack } from \"@/components/ui/stack\"\nimport { MetricCard } from \"@/components/ui/metric-card\"\nimport { DataTable, type DataTableColumn } from \"@/components/ui/data-table\"\nimport { AccountCard } from \"@/components/ui/account-card\"\nimport { EntityCard } from \"@/components/ui/entity-card\"\nimport { FormField } from \"@/components/ui/form-field\"\nimport { Breadcrumb } from \"@/components/ui/breadcrumb\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { mockCounterparties, mockAccounts, mockMetrics, mockTableData } from \"@/lib/mock-data\"\nimport { Building, Users, Plus, Download } from \"lucide-react\"\n\nconst tableColumns: DataTableColumn[] = [\n { key: \"name\", title: \"Name\", sortable: true },\n { key: \"type\", title: \"Type\", sortable: true },\n { key: \"status\", title: \"Status\", sortable: true },\n { key: \"amount\", title: \"Amount\", sortable: true, align: \"right\" },\n { key: \"date\", title: \"Date\", sortable: true },\n { key: \"verified\", title: \"Verified\", sortable: true }\n]\n\nexport function UIKitShowcase() {\n const [sortBy, setSortBy] = React.useState<string>()\n const [sortDirection, setSortDirection] = React.useState<\"asc\" | \"desc\">(\"asc\")\n\n const handleSort = (key: string) => {\n if (sortBy === key) {\n setSortDirection(sortDirection === \"asc\" ? \"desc\" : \"asc\")\n } else {\n setSortBy(key)\n setSortDirection(\"asc\")\n }\n }\n\n const breadcrumbs = [\n { label: \"UI Kit\", href: \"/ui-kit\" },\n { label: \"Showcase\" }\n ]\n\n return (\n <div className=\"min-h-screen bg-gradient-subtle\">\n <Container size=\"xl\">\n <Stack spacing=\"lg\">\n {/* Breadcrumbs */}\n <Breadcrumb items={breadcrumbs} />\n \n {/* Page Header */}\n <div className=\"flex items-start justify-between\">\n <Stack spacing=\"sm\">\n <h1 className=\"text-3xl font-bold text-foreground\">UI Kit Showcase</h1>\n <p className=\"text-muted-foreground max-w-2xl\">\n Complete collection of reusable components, layouts, and patterns for building financial applications.\n </p>\n </Stack>\n \n <Stack direction=\"horizontal\" spacing=\"sm\">\n <Button variant=\"outline\">\n <Download className=\"w-4 h-4\" />\n Export Kit\n </Button>\n <Button>\n <Plus className=\"w-4 h-4\" />\n Create Component\n </Button>\n </Stack>\n </div>\n\n {/* Metrics Section */}\n <Card>\n <CardHeader>\n <CardTitle>Metric Cards</CardTitle>\n </CardHeader>\n <CardContent>\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockMetrics.map((metric, index) => (\n <MetricCard key={index} {...metric} />\n ))}\n </ResponsiveGrid>\n </CardContent>\n </Card>\n\n {/* Form Components */}\n <Card>\n <CardHeader>\n <CardTitle>Form Components</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack spacing=\"md\">\n <FormField\n label=\"Enhanced Input\"\n description=\"Input field with validation and enhanced styling\"\n required\n >\n <EnhancedInput \n placeholder=\"Enter your name\"\n error=\"This field is required\"\n />\n </FormField>\n \n <FormField\n label=\"Enhanced Select\"\n description=\"Select dropdown with search and validation\"\n layout=\"horizontal\"\n >\n <EnhancedSelect\n placeholder=\"Choose an option\"\n options={[\n { value: \"option1\", label: \"Option 1\" },\n { value: \"option2\", label: \"Option 2\" },\n { value: \"option3\", label: \"Option 3\" }\n ]}\n />\n </FormField>\n </Stack>\n </CardContent>\n </Card>\n\n {/* Account Cards */}\n <Card>\n <CardHeader>\n <CardTitle>Account Cards</CardTitle>\n </CardHeader>\n <CardContent>\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockAccounts.map((account) => (\n <AccountCard key={account.id} account={account} />\n ))}\n </ResponsiveGrid>\n </CardContent>\n </Card>\n\n {/* Entity Cards */}\n <Card>\n <CardHeader>\n <CardTitle>Entity Cards</CardTitle>\n </CardHeader>\n <CardContent>\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockCounterparties.map((entity) => (\n <EntityCard \n key={entity.id}\n entity={entity}\n onView={(id) => console.log(\"View\", id)}\n onEdit={(id) => console.log(\"Edit\", id)}\n onDelete={(id) => console.log(\"Delete\", id)}\n />\n ))}\n </ResponsiveGrid>\n </CardContent>\n </Card>\n\n {/* Data Table */}\n <Card>\n <CardHeader>\n <CardTitle>Data Table</CardTitle>\n </CardHeader>\n <CardContent>\n <DataTable\n columns={tableColumns}\n data={mockTableData}\n sortBy={sortBy}\n sortDirection={sortDirection}\n onSort={handleSort}\n />\n </CardContent>\n </Card>\n\n {/* Layout Examples */}\n <Card>\n <CardHeader>\n <CardTitle>Layout Components</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack spacing=\"md\">\n <div>\n <h4 className=\"text-sm font-medium text-foreground mb-2\">Container Sizes</h4>\n <Stack spacing=\"sm\">\n <div className=\"bg-primary/10 rounded p-2 text-center text-xs\">\n Small Container (max-w-2xl)\n </div>\n <div className=\"bg-primary/10 rounded p-2 text-center text-xs max-w-4xl\">\n Medium Container (max-w-4xl)\n </div>\n <div className=\"bg-primary/10 rounded p-2 text-center text-xs max-w-6xl\">\n Large Container (max-w-6xl)\n </div>\n </Stack>\n </div>\n \n <div>\n <h4 className=\"text-sm font-medium text-foreground mb-2\">Responsive Grids</h4>\n <ResponsiveGrid type=\"forms\" gap=\"sm\">\n <div className=\"bg-secondary rounded p-4 text-center text-sm\">Form Grid 1</div>\n <div className=\"bg-secondary rounded p-4 text-center text-sm\">Form Grid 2</div>\n <div className=\"bg-secondary rounded p-4 text-center text-sm\">Form Grid 3</div>\n <div className=\"bg-secondary rounded p-4 text-center text-sm\">Form Grid 4</div>\n </ResponsiveGrid>\n </div>\n </Stack>\n </CardContent>\n </Card>\n </Stack>\n </Container>\n </div>\n )\n}","export interface TimelineEvent {\n id: string\n timestamp: string\n user: string\n action: string\n details?: string\n status?: string\n}\n\nexport interface AlertNote {\n id: string\n timestamp: string\n user: string\n content: string\n type: \"RFI Note\" | \"Internal Note\"\n}\n\nexport interface AlertDocument {\n id: string\n name: string\n type: string\n description?: string\n size: string\n uploadedBy: string\n uploadedAt: string\n url?: string\n}\n\nexport interface Alert {\n id: string\n createdAt: string\n type: string\n status: \"Unassigned\" | \"Closed\" | \"In Progress\"\n contextType: string\n rfiStatus?: \"Completed\" | \"Provided\" | \"Pending\"\n description: string\n contextId?: string\n assignee?: string\n timeline?: TimelineEvent[]\n notes?: AlertNote[]\n documents?: AlertDocument[]\n contextData?: any\n}\n\nexport const mockAlerts: Alert[] = [\n {\n id: \"4402\",\n createdAt: \"2025-09-30 03:00:21\",\n type: \"Ofac\",\n status: \"Unassigned\",\n contextType: \"Ofac\",\n description: \"WIRE TRANSFER: Multiple OFAC matches detected for beneficiary bank\",\n timeline: [\n { id: \"1\", timestamp: \"2025-09-30 03:00:21\", user: \"System\", action: \"Alert Created\", status: \"Unassigned\" },\n { id: \"2\", timestamp: \"2025-09-30 09:15:32\", user: \"John Smith\", action: \"Alert Assigned\", details: \"Assigned to compliance team\", status: \"In Progress\" },\n { id: \"3\", timestamp: \"2025-09-30 10:22:15\", user: \"John Smith\", action: \"Note added\", details: \"Added RFI note requesting documentation\" },\n { id: \"4\", timestamp: \"2025-09-30 10:25:00\", user: \"John Smith\", action: \"Document added\", details: \"Uploaded passport_scan.pdf\" },\n { id: \"5\", timestamp: \"2025-09-30 11:50:00\", user: \"Sarah Johnson\", action: \"Document added\", details: \"Uploaded proof_of_address.jpg\" },\n { id: \"6\", timestamp: \"2025-10-01 08:30:00\", user: \"System\", action: \"RFI Status change\", details: \"Status changed from Pending to Provided\" },\n { id: \"7\", timestamp: \"2025-10-01 14:20:00\", user: \"Michael Chen\", action: \"Alert Approved\", details: \"Approved after review - false positive confirmed\" }\n ],\n notes: [\n { id: \"1\", timestamp: \"2025-09-30 10:22:15\", user: \"John Smith\", content: \"Reviewing OFAC match. Need to verify identity documents.\", type: \"RFI Note\" },\n { id: \"2\", timestamp: \"2025-09-30 11:45:30\", user: \"Sarah Johnson\", content: \"Requested additional documentation from customer. Passport and proof of address needed.\", type: \"RFI Note\" },\n { id: \"3\", timestamp: \"2025-09-30 14:20:45\", user: \"John Smith\", content: \"Customer responded with requested documents. Passport appears valid, reviewing address verification now.\", type: \"Internal Note\" },\n { id: \"4\", timestamp: \"2025-10-01 09:10:00\", user: \"Michael Chen\", content: \"Cross-referenced with internal records. Customer has been with us for 5 years with no prior issues. Match appears to be false positive due to common name.\", type: \"Internal Note\" }\n ],\n documents: [\n { \n id: \"1\", \n name: \"passport_scan.pdf\", \n type: \"ID Verification\", \n description: \"Customer passport for identity verification\", \n size: \"2.4 MB\", \n uploadedBy: \"John Smith\", \n uploadedAt: \"2025-09-30 10:25:00\",\n url: \"/placeholder.svg\"\n },\n { \n id: \"2\", \n name: \"proof_of_address.jpg\", \n type: \"Proof of Address\", \n description: \"Utility bill showing current residential address\", \n size: \"1.8 MB\", \n uploadedBy: \"Sarah Johnson\", \n uploadedAt: \"2025-09-30 11:50:00\",\n url: \"/placeholder.svg\"\n }\n ],\n contextData: {\n ofacId: 5043462,\n counterpartyName: null,\n counterpartyId: null,\n businessName: null,\n businessId: null,\n individualName: null,\n individualId: null,\n uboId: null,\n transactionPaymentId: \"5c73200c-3ade-4ba5-b6e6-39ad4b519fab\",\n tenantId: \"JakeUAT\",\n alertId: 4425,\n note: null,\n status: \"REVIEW\",\n createdAt: 1760162113.000000000,\n updatedAt: 1760162113.004160000,\n updatedBy: null,\n ofacCheckDetails: [\n {\n id: 24870,\n checkKey: \"originatorName\",\n checkValue: \"Kim jung un\"\n },\n {\n id: 24871,\n checkKey: \"originatorBankName\",\n checkValue: \"TD bank\"\n },\n {\n id: 24872,\n checkKey: \"beneficiaryName\",\n checkValue: \"Jake from Braid LLC\"\n },\n {\n id: 24873,\n checkKey: \"beneficiaryBankName\",\n checkValue: \"RUssian bank\"\n }\n ],\n rawResults: \"{\\\"SDNs\\\":[{\\\"entityID\\\":\\\"51656\\\",\\\"sdnName\\\":\\\"RUSSIAN UNIVERSAL BANK\\\",\\\"sdnType\\\":\\\"\\\",\\\"program\\\":[\\\"RUSSIA-EO14024\\\"],\\\"title\\\":\\\"\\\",\\\"callSign\\\":\\\"\\\",\\\"vesselType\\\":\\\"\\\",\\\"tonnage\\\":\\\"\\\",\\\"grossRegisteredTonnage\\\":\\\"\\\",\\\"vesselFlag\\\":\\\"\\\",\\\"vesselOwner\\\":\\\"\\\",\\\"remarks\\\":\\\"SWIFT/BIC RUNIRUMM; Website www.rubank.ru; Secondary sanctions risk: See Section 11 of Executive Order 14024.; Target Type Financial Institution; Tax ID No. 7718120593 (Russia); Legal Entity Number 253400YYHA5GJQB46R62; Registration Number 1027739671288 (Russia).\\\",\\\"match\\\":0.9325,\\\"matchedName\\\":\\\"russian universal bank\\\"},{\\\"entityID\\\":\\\"17755\\\",\\\"sdnName\\\":\\\"RUSSIAN NATIONAL COMMERCIAL BANK\\\",\\\"sdnType\\\":\\\"\\\",\\\"program\\\":[\\\"UKRAINE-EO13685\\\"],\\\"title\\\":\\\"\\\",\\\"callSign\\\":\\\"\\\",\\\"vesselType\\\":\\\"\\\",\\\"tonnage\\\":\\\"\\\",\\\"grossRegisteredTonnage\\\":\\\"\\\",\\\"vesselFlag\\\":\\\"\\\",\\\"vesselOwner\\\":\\\"\\\",\\\"remarks\\\":\\\"SWIFT/BIC RNCORUMM; Website http://www.rncb.ru; Email Address rncb@rncb.ru; BIK (RU) 044525607; Secondary sanctions risk: Ukraine-/Russia-Related Sanctions Regulations, 31 CFR 589.201 and/or 589.209; Registration ID 1027700381290 (Russia); Tax ID No. 7701105460 (Russia); Government Gazette Number 09610705 (Russia); a.k.a. 'RNCB'.\\\",\\\"match\\\":0.906896551724138,\\\"matchedName\\\":\\\"russian national commercial bank\\\"}],\\\"altNames\\\":[{\\\"entityID\\\":\\\"51760\\\",\\\"alternateID\\\":\\\"81078\\\",\\\"alternateType\\\":\\\"aka\\\",\\\"alternateName\\\":\\\"RUSSITA BANK\\\",\\\"alternateRemarks\\\":\\\"\\\",\\\"match\\\":0.9636363636363636,\\\"matchedName\\\":\\\"russita bank\\\"},{\\\"entityID\\\":\\\"18268\\\",\\\"alternateID\\\":\\\"28201\\\",\\\"alternateType\\\":\\\"aka\\\",\\\"alternateName\\\":\\\"RUSSIAN EXPORT-IMPORT BANK\\\",\\\"alternateRemarks\\\":\\\"\\\",\\\"match\\\":0.9217391304347826,\\\"matchedName\\\":\\\"russian export import bank\\\"},{\\\"entityID\\\":\\\"16681\\\",\\\"alternateID\\\":\\\"25333\\\",\\\"alternateType\\\":\\\"fka\\\",\\\"alternateName\\\":\\\"AKTSIONERNY BANK RUSSIAN FEDERATION\\\",\\\"alternateRemarks\\\":\\\"\\\",\\\"match\\\":0.9015625,\\\"matchedName\\\":\\\"aktsionerny bank russian federation\\\"}],\\\"sectoralSanctions\\\":[{\\\"Addresses\\\":[\\\"3, Gagarinsky Pereulok, Moscow, 119034, RU\\\",\\\"3 Gagarinsky per., Moscow, 119034, RU\\\"],\\\"AlternateNames\\\":[\\\"Russian Agricultural Bank\\\",\\\"Russian Agricultural Bank Open Joint Stock Company\\\",\\\"Rosselkhozbank\\\",\\\"Russian Agricultural Bank OJSC\\\",\\\"RusAg\\\"],\\\"EntityID\\\":\\\"17014\\\",\\\"IDsOnRecord\\\":[\\\"Registration Number, 1027700342890, RU\\\",\\\"Government Gazette Number, 52750822, RU\\\",\\\"Website, http://www.rshb.ru\\\",\\\"SWIFT/BIC, RUAGRUMM\\\",\\\"Executive Order 13662 Directive Determination -, Subject to Directive 1\\\",\\\"Executive Order 14024 Directive Information -, For more information on directives, please visit the following link: https://home.treasury.gov/policy-issues/financial-sanctions/sanctions-programs-and-country-information/russian-harmful-foreign-activities-sanctions#directives\\\",\\\"Executive Order 14024 Directive Information, Subject to Directive 3 - All transactions in, provision of financing for, and other dealings in new debt of longer than 14 days maturity or new equity where such new debt or new equity is issued on or after the 'Effective Date (EO 14024 Directive)' associated with this name are prohibited.\\\",\\\"Listing Date (EO 14024 Directive 3):, 2022-02-24\\\",\\\"Effective Date (EO 14024 Directive 3):, 2022-03-26\\\",\\\"Secondary sanctions risk:, Ukraine-/Russia-Related Sanctions Regulations, 31 CFR 589.201 and/or 589.209\\\"],\\\"Name\\\":\\\"Joint Stock Company Russian Agricultural Bank\\\",\\\"Programs\\\":[\\\"UKRAINE-EO13662\\\",\\\"RUSSIA-EO14024\\\"],\\\"Remarks\\\":[\\\"For more information on directives, please visit the following link: http://www.treasury.gov/resource-center/sanctions/Programs/Pages/ukraine.aspx#directives.\\\"],\\\"SourceInfoURL\\\":\\\"https://ofac.treasury.gov/other-ofac-sanctions-lists\\\",\\\"SourceListURL\\\":\\\"https://sanctionslist.ofac.treas.gov/Home/ConsolidatedList\\\",\\\"Type\\\":\\\"Entity\\\",\\\"match\\\":0.9217391304347826,\\\"matchedName\\\":\\\"russian agricultural bank\\\"},{\\\"Addresses\\\":[\\\"12 Krasnopresnenskaya Embankments, Moscow, 123610, RU\\\"],\\\"AlternateNames\\\":[\\\"ROSEKSIMBANK, ZAO\\\",\\\"RUSSIAN EXPORT-IMPORT BANK\\\",\\\"GOSUDARSTVENNY SPETSIALIZIROVANNY ROSSISKI EKSPORTNO-IMPORTNY BANK (ZAKRYTOE AKTSIONERNOE OBSHCHESTVO)\\\",\\\"STATE SPECIALIZED RUSSIAN EXPORT-IMPORT BANK JOINT-STOCK COMPANY\\\",\\\"Eximbank of Russia ZAO\\\",\\\"Eximbank of Russia\\\",\\\"AO Roseksimbank\\\"],\\\"EntityID\\\":\\\"18268\\\",\\\"IDsOnRecord\\\":[\\\"Registration Number, 1027739109133, RU\\\",\\\"Tax ID No., 7704001959, RU\\\",\\\"Legal Entity Number, 253400HA6URWT39X2982\\\",\\\"SWIFT/BIC, EXIRRUMM\\\",\\\"Website, eximbank.ru\\\",\\\"Executive Order 13662 Directive Determination -, Subject to Directive 1\\\",\\\"Organization Established Date, 1994-05-24\\\",\\\"Target Type, Financial Institution\\\",\\\"Secondary sanctions risk:, Ukraine-/Russia-Related Sanctions Regulations, 31 CFR 589.201 and/or 589.209\\\",\\\"Secondary sanctions risk:, See Section 11 of Executive Order 14024.\\\"],\\\"Name\\\":\\\"EXIMBANK OF RUSSIA JSC\\\",\\\"Programs\\\":[\\\"UKRAINE-EO13662\\\",\\\"RUSSIA-EO14024\\\"],\\\"Remarks\\\":[\\\"All offices worldwide\\\",\\\"for more information on directives, please visit the following link: http://www.treasury.gov/resource-center/sanctions/Programs/Pages/ukraine.aspx#directives.\\\"],\\\"SourceInfoURL\\\":\\\"https://ofac.treasury.gov/other-ofac-sanctions-lists\\\",\\\"SourceListURL\\\":\\\"https://sanctionslist.ofac.treas.gov/Home/ConsolidatedList\\\",\\\"Type\\\":\\\"Entity\\\",\\\"match\\\":0.9217391304347826,\\\"matchedName\\\":\\\"russian export import bank\\\"},{\\\"Addresses\\\":[\\\"65/1 Suschevsky Val, Moscow, 129594, RU\\\",\\\"65 Sushchevskiy val, Moscow, 129594, RU\\\"],\\\"AlternateNames\\\":[\\\"RUSSIAN REGIONAL DEVELOPMENT BANK\\\",\\\"VBRR\\\"],\\\"EntityID\\\":\\\"18298\\\",\\\"IDsOnRecord\\\":[\\\"Registration ID, 3287, RU\\\",\\\"Website, www.vbrr.ru\\\",\\\"Executive Order 13662 Directive Determination -, Subject to Directive 2\\\",\\\"Executive Order 13662 Directive Determination -, Subject to Directive 4\\\",\\\"Secondary sanctions risk:, Ukraine-/Russia-Related Sanctions Regulations, 31 CFR 589.201 and/or 589.209\\\"],\\\"Name\\\":\\\"OJSC RUSSIAN REGIONAL DEVELOPMENT BANK\\\",\\\"Programs\\\":[\\\"UKRAINE-EO13662\\\"],\\\"Remarks\\\":[\\\"For more information on directives, please visit the following link: http://www.treasury.gov/resource-center/sanctions/Programs/Pages/ukraine.aspx#directives.\\\"],\\\"SourceInfoURL\\\":\\\"https://ofac.treasury.gov/other-ofac-sanctions-lists\\\",\\\"SourceListURL\\\":\\\"https://sanctionslist.ofac.treas.gov/Home/ConsolidatedList\\\",\\\"Type\\\":\\\"Entity\\\",\\\"match\\\":0.905,\\\"matchedName\\\":\\\"russian regional development bank\\\"}],\\\"nonSDNMenuBasedSanctionsList\\\":[{\\\"Addresses\\\":[\\\"Neglinnaya St 12, Moscow, 107016, RU\\\",\\\"Moscow, RU\\\"],\\\"AlternateNames\\\":[\\\"Bank Rossi, Federal State Budgetary Institution\\\",\\\"Bank of Russia\\\",\\\"Bank of Russia, Central Bank\\\",\\\"Tsentralny Bank Rossiskoi Federatsii\\\",\\\"Central Bank of Russia\\\"],\\\"EntityID\\\":\\\"31695\\\",\\\"EntityNumber\\\":\\\"31695\\\",\\\"IDs\\\":[\\\"Registration Number, 1037700013020, RU\\\",\\\"Government Gazette Number, 00032253, RU\\\",\\\"Tax ID No., 7702235133, RU\\\",\\\"SWIFT/BIC, CBRFRUMM\\\",\\\"Website, www.cbr.ru\\\",\\\"Organization Established Date, 1990-07-13\\\",\\\"Organization Type:, Central banking\\\",\\\"Executive Order 14024 Directive Information -, For more information on directives, please visit the following link: https://home.treasury.gov/policy-issues/financial-sanctions/sanctions-programs-and-country-information/russian-harmful-foreign-activities-sanctions#directives\\\",\\\"Executive Order 14024 Directive Information, Subject to Directive 1a - As of the effective date, participation in the secondary market for ruble or non-ruble denominated bonds issued on or after the effective date by the Central Bank of the Russian Federation, the National Wealth Fund of the Russian Federation, or the Ministry of Finance of the Russian Federation is prohibited.\\\",\\\"Target Type, Government Entity\\\",\\\"Listing Date (EO 14024 Directive 1a):, 2022-02-22\\\",\\\"Effective Date (EO 14024 Directive 1a):, 2022-03-01\\\",\\\"Executive Order 14024 Directive Information, Subject to Directive 4 - any transaction involving the Central Bank of the Russian Federation, the National Wealth Fund of the Russian Federation, or the Ministry of Finance of the Russian Federation, including any transfer of assets to such entities or any foreign exchange transaction for or on behalf of such entities is prohibited.\\\"],\\\"Name\\\":\\\"Central Bank of the Russian Federation\\\",\\\"Programs\\\":[\\\"RUSSIA-EO14024\\\"],\\\"SourceInfoURL\\\":\\\"https://ofac.treasury.gov/other-ofac-sanctions-lists\\\",\\\"Type\\\":\\\"Entity\\\",\\\"match\\\":0.9326268221574344,\\\"matchedName\\\":\\\"bank of russia\\\"},{\\\"Addresses\\\":[\\\"3, Gagarinsky Pereulok, Moscow, 119034, RU\\\",\\\"3 Gagarinsky per., Moscow, 119034, RU\\\"],\\\"AlternateNames\\\":[\\\"Russian Agricultural Bank\\\",\\\"Russian Agricultural Bank Open Joint Stock Company\\\",\\\"Rosselkhozbank\\\",\\\"Russian Agricultural Bank OJSC\\\",\\\"RusAg\\\"],\\\"EntityID\\\":\\\"17014\\\",\\\"EntityNumber\\\":\\\"17014\\\",\\\"IDs\\\":[\\\"Registration Number, 1027700342890, RU\\\",\\\"Government Gazette Number, 52750822, RU\\\",\\\"Website, http://www.rshb.ru\\\",\\\"SWIFT/BIC, RUAGRUMM\\\",\\\"Executive Order 13662 Directive Determination -, Subject to Directive 1\\\",\\\"Executive Order 14024 Directive Information -, For more information on directives, please visit the following link: https://home.treasury.gov/policy-issues/financial-sanctions/sanctions-programs-and-country-information/russian-harmful-foreign-activities-sanctions#directives\\\",\\\"Executive Order 14024 Directive Information, Subject to Directive 3 - All transactions in, provision of financing for, and other dealings in new debt of longer than 14 days maturity or new equity where such new debt or new equity is issued on or after the 'Effective Date (EO 14024 Directive)' associated with this name are prohibited.\\\",\\\"Listing Date (EO 14024 Directive 3):, 2022-02-24\\\",\\\"Effective Date (EO 14024 Directive 3):, 2022-03-26\\\",\\\"Secondary sanctions risk:, Ukraine-/Russia-Related Sanctions Regulations, 31 CFR 589.201 and/or 589.209\\\"],\\\"Name\\\":\\\"Joint Stock Company Russian Agricultural Bank\\\",\\\"Programs\\\":[\\\"UKRAINE-EO13662\\\",\\\"RUSSIA-EO14024\\\"],\\\"Remarks\\\":[\\\"For more information on directives, please visit the following link: http://www.treasury.gov/resource-center/sanctions/Programs/Pages/ukraine.aspx#directives.\\\"],\\\"SourceInfoURL\\\":\\\"https://ofac.treasury.gov/other-ofac-sanctions-lists\\\",\\\"Type\\\":\\\"Entity\\\",\\\"match\\\":0.9217391304347826,\\\"matchedName\\\":\\\"russian agricultural bank\\\"}],\\\"ukConsolidatedSanctionsList\\\":[{\\\"Addresses\\\":[\\\"Rastrelli Square, 2A, Saint-Petersburg\\\"],\\\"GroupID\\\":14177,\\\"GroupType\\\":\\\"Entity\\\",\\\"LastUpdates\\\":[\\\"15/12/2023\\\"],\\\"ListedDates\\\":[\\\"22/02/2022\\\"],\\\"Names\\\":[\\\"BANK OF RUSSIA\\\",\\\"BANK ROSSIYA\\\",\\\"RUSSIA BANK\\\"],\\\"OtherInfos\\\":[\\\"(UK Sanctions List Ref):RUS0232. Financial sanctions imposed in addition to an asset freeze: Correspondent banking relationships etc. Trust services. Date trust services sanctions imposed: 21/03/2023. The prohibition on correspondent banking relationships etc. measure was imposed on 15/12/2023. (UK Statement of Reasons):Bank \\\\\\\"Rossiya\\\\\\\" is a Russian bank privately owned by elite Russian billionaires with direct links to Putin. Bank \\\\\\\"Rossiya\\\\\\\" also has important stakes in the National Media Group, which controls television stations which actively support the Russian Government's policies of destabilisation in Ukraine. Since the annexation of Crimea, Bank \\\\\\\"Rossiya\\\\\\\" has opened branches across Crimea and Sevastopol, and provided travel cards for the public to travel across the peninsula thereby supporting the integration of Crimea and Sevastopol into the Russian Federation through the financial system. Bank \\\\\\\"Rossiya\\\\\\\" has also contributed to the provision of insurance and investment throughout Crimea and Sevastopol and services to support military capability and major transport links. Bank \\\\\\\"Rossiya\\\\\\\" therefore is or has been involved in providing financial services, or making available funds, economic resources, goods or technology and engaging in, providing support for, or promoting any policy or action that could contribute to destabilising Ukraine or undermining or threatening the territorial integrity, sovereignty or independence of Ukraine. (Website):https://abr.ru/ (Type of entity):Public Joint Stock Company (PJSC) (Business Reg No):License number: 328 INN: 7831000122 OGRN: 1027800000084\\\"],\\\"PostalCodes\\\":[\\\"191124\\\"],\\\"SanctionListDates\\\":[\\\"22/02/2022\\\"],\\\"match\\\":0.9565403304178814,\\\"matchedName\\\":\\\"russia bank\\\"},{\\\"Addresses\\\":[\\\"0 Bld. 2 Presnenskaya Emb. (Moscow City, IQ-quarter Complex), Moscow\\\",\\\"3, Gagarinsky Pereulok, Moscow\\\"],\\\"Countries\\\":[\\\"Russia\\\"],\\\"GroupID\\\":15016,\\\"GroupType\\\":\\\"Entity\\\",\\\"LastUpdates\\\":[\\\"15/12/2023\\\"],\\\"ListedDates\\\":[\\\"24/03/2022\\\"],\\\"Names\\\":[\\\"JSC ROSSELKHOZBANK\\\",\\\"RUSAG\\\",\\\"RUSSIAN AGRICULTURAL BANK\\\"],\\\"OtherInfos\\\":[\\\"(UK Sanctions List Ref):RUS1073. Financial sanctions imposed in addition to an asset freeze: Dealing with transferable securities or money-market instruments. Loans and credit arrangements. Correspondent banking relationships etc. Trust services. Date trust services sanctions imposed: 21/03/2023. The prohibition on correspondent banking relationships etc. measure was imposed on 15/12/2023. (UK Statement of Reasons):RUSSIAN AGRICULTURAL BANK is a Russian bank. RUSSIAN AGRICULTURAL BANK is or has been involved in obtaining a benefit from or supporting the Government of Russia by carrying on business in the financial services sector - a sector of strategic significance to the Government of Russia. (Phone number):(1) 7 (495) 777-11-00 (2) 7 (495) 787-7-787 (3) 8 (800) 100-0-100 (Website):(1) http://www.rshb.ru/en/ (2) https://www.rshb.ru/ (Email address):office@rshb.ru\\\"],\\\"PostalCodes\\\":[\\\"123112\\\",\\\"119034\\\"],\\\"SanctionListDates\\\":[\\\"24/03/2022\\\"],\\\"match\\\":0.9217391304347826,\\\"matchedName\\\":\\\"russian agricultural bank\\\"},{\\\"Addresses\\\":[\\\"27 Kalanchevskaya str., Moscow\\\"],\\\"Countries\\\":[\\\"Russia\\\"],\\\"GroupID\\\":15017,\\\"GroupType\\\":\\\"Entity\\\",\\\"LastUpdates\\\":[\\\"15/12/2023\\\"],\\\"ListedDates\\\":[\\\"24/03/2022\\\"],\\\"Names\\\":[\\\"ALFA-BANK JSC\\\",\\\"ALFA-BANK RUSSIA\\\"],\\\"OtherInfos\\\":[\\\"(UK Sanctions List Ref):RUS1074. Financial sanctions imposed in addition to an asset freeze: Correspondent banking relationships etc. Trust services. Date trust services sanctions imposed: 21/03/2023. The prohibition on correspondent banking relationships etc. measure was imposed on 15/12/2023. (UK Statement of Reasons):Alfa-Bank JSC is a Russian bank. There are reasonable grounds to suspect that Alfa-Bank JSC is or has been involved in obtaining a benefit from or supporting the Government of Russia by carrying on business in the financial services sector - a sector of strategic significance to the Government of Russia. (Phone number):7 495 755-58-58. 7 495 78-888-78 (Website):https://alfabank.ru/ (Type of entity):Bank, Financial Services Company, JSC\\\"],\\\"PostalCodes\\\":[\\\"107078\\\"],\\\"SanctionListDates\\\":[\\\"24/03/2022\\\"],\\\"match\\\":0.9155457448285437,\\\"matchedName\\\":\\\"alfa bank russia\\\"},{\\\"Addresses\\\":[\\\"Naberezhnaja street, 34, Simferopol, The Autonomous Republic of Crimea and the city of Sevastopol\\\"],\\\"Countries\\\":[\\\"Ukraine\\\"],\\\"GroupID\\\":13078,\\\"GroupType\\\":\\\"Entity\\\",\\\"LastUpdates\\\":[\\\"21/03/2023\\\"],\\\"ListedDates\\\":[\\\"31/07/2014\\\"],\\\"Names\\\":[\\\"RUSSIAN NATIONAL COMMERCIAL BANK\\\"],\\\"OtherInfos\\\":[\\\"(UK Sanctions List Ref):RUS0193. Financial sanctions imposed in addition to an asset freeze: Trust services. Date trust services sanctions imposed: 21/03/2023. (UK Statement of Reasons):After the illegal annexation of Crimea, Russian National Commercial Bank (RNCB) became fully owned by the so-called 'Republic of Crimea'. In January 2016 became a property of Federal Agency for State Property Management also known as Rosimushchestvo. It has become the dominant player in the market, while it had no presence in Crimea before the annexation. By buying or taking over from branches of retreating banks operating in Crimea, RNBC supported materially and financially the actions of the Russian government to integrate Crimea into the Russian Federation, thus undermining Ukraine's territorial integrity. (Website):http://www.rncb.ru\\\"],\\\"PostalCodes\\\":[\\\"295000\\\"],\\\"SanctionListDates\\\":[\\\"31/12/2020\\\"],\\\"match\\\":0.906896551724138,\\\"matchedName\\\":\\\"russian national commercial bank\\\"},{\\\"Addresses\\\":[\\\"65 Sushchevskiy val, Moscow\\\"],\\\"Countries\\\":[\\\"Russia\\\"],\\\"GroupID\\\":15918,\\\"GroupType\\\":\\\"Entity\\\",\\\"LastUpdates\\\":[\\\"15/12/2023\\\"],\\\"ListedDates\\\":[\\\"19/05/2023\\\"],\\\"Names\\\":[\\\"RUSSIAN REGIONAL DEVELOPMENT BANK\\\"],\\\"OtherInfos\\\":[\\\"(UK Sanctions List Ref):RUS1860. Financial sanctions imposed in addition to an asset freeze: Correspondent banking relationships etc. Trust services. Date trust services sanctions imposed: 18/05/2023. The prohibition on correspondent banking relationships etc. measure was imposed on 15/12/2023. (UK Statement of Reasons):RUSSIAN REGIONAL DEVELOPMENT BANK is an involved person under the Russia (EU Exit) (Sanctions) Regulations 2019 because it is or has been involved in obtaining a benefit from or supporting the Government of Russia by carrying on business in a sector of strategic significance to the Government of Russia, namely the Russian financial services sector.\\\"],\\\"PostalCodes\\\":[\\\"129594\\\"],\\\"SanctionListDates\\\":[\\\"18/05/2023\\\"],\\\"match\\\":0.905,\\\"matchedName\\\":\\\"russian regional development bank\\\"}],\\\"refreshedAt\\\":\\\"2025-10-11T00:54:13.808076626Z\\\"}\"\n }\n },\n {\n id: \"4401\",\n createdAt: \"2025-09-29 15:00:45\",\n type: \"Ofac\",\n status: \"Closed\",\n contextType: \"Ofac\",\n description: \"INDIVIDUAL: ali hassan is flagged for OFAC\"\n },\n {\n id: \"4400\",\n createdAt: \"2025-09-27 03:02:34\",\n type: \"Ofac\",\n status: \"Unassigned\",\n contextType: \"Ofac\",\n description: \"BUSINESS: Randy is flagged for OFAC\"\n },\n {\n id: \"4399\",\n createdAt: \"2025-09-27 03:02:31\",\n type: \"Ofac\",\n status: \"Unassigned\",\n contextType: \"Ofac\",\n description: \"BUSINESS: test is flagged for OFAC\"\n },\n {\n id: \"4398\",\n createdAt: \"2025-09-24 10:01:58\",\n type: \"Transaction Processing Error\",\n status: \"Unassigned\",\n contextType: \"File Record\",\n description: \"Inbound WIRE for $100,000.00 can not be processed. Exception: incorrect account...\"\n },\n {\n id: \"4397\",\n createdAt: \"2025-09-22 20:33:59\",\n type: \"Dual Approval\",\n status: \"Unassigned\",\n contextType: \"Transaction\",\n description: \"Debit adjustment for $20.00 for account number 84804949\"\n },\n {\n id: \"4396\",\n createdAt: \"2025-09-22 20:33:12\",\n type: \"Transaction Monitoring\",\n status: \"Unassigned\",\n contextType: \"Transaction\",\n description: \"Transaction WIRE_INTERNATIONAL_DEBIT of $3,000.00 is flagged for velocity li...\"\n },\n {\n id: \"4395\",\n createdAt: \"2025-09-13 03:02:29\",\n type: \"Ofac\",\n status: \"Closed\",\n contextType: \"Ofac\",\n rfiStatus: \"Completed\",\n description: \"BUSINESS: test is flagged for OFAC\"\n },\n {\n id: \"4394\",\n createdAt: \"2025-09-11 07:46:28\",\n type: \"Dual Approval\",\n status: \"Closed\",\n contextType: \"Product\",\n description: \"Product 2787 is set for deactivation\"\n },\n {\n id: \"4393\",\n createdAt: \"2025-09-11 07:46:17\",\n type: \"Dual Approval\",\n status: \"Unassigned\",\n contextType: \"Product\",\n description: \"Product 2787 is set for deactivation\"\n },\n {\n id: \"4392\",\n createdAt: \"2025-09-10 14:44:46\",\n type: \"Transaction Monitoring\",\n status: \"Closed\",\n contextType: \"Transaction\",\n rfiStatus: \"Provided\",\n description: \"Transaction WIRE_DOMESTIC_CREDIT of $30,000.00 is flagged for velocity limit ...\"\n }\n]\n","import { useState, useMemo } from \"react\"\nimport { mockAlerts, type Alert } from \"../lib/mock-data/alert-data\"\nimport { type ResolveAlertFormData } from \"../lib/schemas/alert-schemas\"\n\nexport interface UseAlertDetailReturn {\n alert: Alert | undefined\n isLoading: boolean\n rfiStatus: string\n assignee: string\n handleRfiStatusChange: (status: string) => void\n handleAssigneeChange: (assignee: string) => void\n handleResolveAlert: (data: ResolveAlertFormData) => Promise<void>\n}\n\nexport const useAlertDetail = (id: string | undefined): UseAlertDetailReturn => {\n const alert = useMemo(() => mockAlerts.find(a => a.id === id), [id])\n \n const [rfiStatus, setRfiStatus] = useState(alert?.rfiStatus || \"\")\n const [assignee, setAssignee] = useState(alert?.assignee || \"Unassigned\")\n\n const handleRfiStatusChange = (newStatus: string) => {\n setRfiStatus(newStatus)\n console.log(\"RFI Status updated to:\", newStatus)\n // TODO: API call to update alert\n }\n\n const handleAssigneeChange = (newAssignee: string) => {\n setAssignee(newAssignee)\n console.log(\"Assignee updated to:\", newAssignee)\n // TODO: API call to update alert\n }\n\n const handleResolveAlert = async (data: ResolveAlertFormData) => {\n // TODO: Replace with actual API call\n console.log(\"Resolving alert with data:\", data)\n \n // Simulate API call\n await new Promise(resolve => setTimeout(resolve, 1000))\n \n // In a real implementation, this would update the backend\n // and refetch the alert data\n console.log(\"Alert resolved successfully\")\n }\n\n return {\n alert,\n isLoading: false, // Set to true when implementing real data fetching\n rfiStatus,\n assignee,\n handleRfiStatusChange,\n handleAssigneeChange,\n handleResolveAlert\n }\n}\n","import { useState } from \"react\"\nimport { useParams, useNavigate } from \"react-router-dom\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { useAlertDetail } from \"@/hooks/useAlertDetail\"\nimport { AlertDetailRouter } from \"@/components/alerts/AlertDetailRouter\"\nimport { AlertHeaderControls } from \"@/components/alerts/AlertHeaderControls\"\nimport { ResolveAlertDialog } from \"@/components/alerts/ResolveAlertDialog\"\nimport { getTypeBadgeVariant } from \"@/lib/utils/alert-utils\"\n\nconst AlertDetail = () => {\n const { id } = useParams()\n const navigate = useNavigate()\n const [resolveDialogOpen, setResolveDialogOpen] = useState(false)\n \n const {\n alert,\n rfiStatus,\n assignee,\n handleRfiStatusChange,\n handleAssigneeChange,\n handleResolveAlert\n } = useAlertDetail(id)\n \n if (!alert) {\n return (\n <div className=\"container mx-auto px-4 py-8\">\n <div className=\"text-center\">\n <h1 className=\"text-2xl font-bold mb-2\">Alert Not Found</h1>\n <p className=\"text-muted-foreground mb-4\">The alert #{id} could not be found.</p>\n <Button onClick={() => navigate(\"/alerts\")}>\n Back to Alerts\n </Button>\n </div>\n </div>\n )\n }\n\n return (\n <PageLayout \n title={\n <div className=\"flex items-center gap-3\">\n <span>Alert #{alert.id}</span>\n <Badge variant={getTypeBadgeVariant(alert.type)}>{alert.type}</Badge>\n </div>\n }\n maxWidth=\"full\"\n headerContent={\n <AlertHeaderControls\n status={alert.status}\n assignee={assignee}\n rfiStatus={rfiStatus}\n onAssigneeChange={handleAssigneeChange}\n onRfiStatusChange={handleRfiStatusChange}\n />\n }\n actions={[\n {\n label: \"Resolve Alert\",\n variant: \"default\",\n onClick: () => setResolveDialogOpen(true)\n }\n ]}\n >\n <AlertDetailRouter alert={alert} />\n \n <ResolveAlertDialog\n alertId={alert.id}\n open={resolveDialogOpen}\n onOpenChange={setResolveDialogOpen}\n onResolve={handleResolveAlert}\n />\n </PageLayout>\n )\n}\n\nexport default AlertDetail\n","import { useState } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { Button } from \"@/components/ui/button\"\nimport { Filter, ChevronLeft, ChevronRight } from \"lucide-react\"\nimport { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, SheetFooter } from \"@/components/ui/sheet\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { mockAlerts, Alert } from \"@/lib/mock-data/alert-data\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { cn } from \"@/lib/utils\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\n\nconst Alerts = () => {\n const navigate = useNavigate()\n const [filters, setFilters] = useState({\n alertId: \"\",\n contextId: \"\",\n contextType: \"\",\n alertType: \"\",\n alertStatus: \"\",\n assignee: \"\",\n rfiStatus: \"\",\n startDate: \"\",\n endDate: \"\"\n })\n\n const [filteredAlerts, setFilteredAlerts] = useState<Alert[]>(mockAlerts)\n const [currentPage, setCurrentPage] = useState(1)\n const [rowsPerPage, setRowsPerPage] = useState(100)\n\n const handleFilterChange = (field: string, value: string) => {\n setFilters(prev => ({ ...prev, [field]: value }))\n }\n\n const applyFilters = () => {\n let filtered = mockAlerts\n\n if (filters.alertId) {\n filtered = filtered.filter(alert => alert.id.includes(filters.alertId))\n }\n if (filters.alertStatus) {\n filtered = filtered.filter(alert => alert.status === filters.alertStatus)\n }\n if (filters.alertType) {\n filtered = filtered.filter(alert => alert.type === filters.alertType)\n }\n if (filters.contextType) {\n filtered = filtered.filter(alert => alert.contextType === filters.contextType)\n }\n if (filters.rfiStatus) {\n filtered = filtered.filter(alert => alert.rfiStatus === filters.rfiStatus)\n }\n\n setFilteredAlerts(filtered)\n setCurrentPage(1) // Reset to first page when applying filters\n }\n\n const resetFilters = () => {\n setFilters({\n alertId: \"\",\n contextId: \"\",\n contextType: \"\",\n alertType: \"\",\n alertStatus: \"\",\n assignee: \"\",\n rfiStatus: \"\",\n startDate: \"\",\n endDate: \"\"\n })\n setFilteredAlerts(mockAlerts)\n setCurrentPage(1) // Reset to first page when resetting filters\n }\n\n const getTypeBadgeVariant = (type: string): any => {\n switch (type) {\n case \"Ofac\":\n return \"alert-ofac\"\n case \"Dual Approval\":\n return \"alert-dual\"\n case \"Transaction Monitoring\":\n return \"alert-monitoring\"\n case \"Transaction Processing Error\":\n return \"alert-error\"\n default:\n return \"outline\"\n }\n }\n\n const getStatusColor = (status: string) => {\n switch (status) {\n case \"Unassigned\":\n return \"text-destructive\"\n case \"Closed\":\n return \"text-success\"\n case \"In Progress\":\n return \"text-warning\"\n default:\n return \"\"\n }\n }\n\n // Pagination calculations\n const totalPages = Math.ceil(filteredAlerts.length / rowsPerPage)\n const startIndex = (currentPage - 1) * rowsPerPage\n const endIndex = startIndex + rowsPerPage\n const paginatedAlerts = filteredAlerts.slice(startIndex, endIndex)\n\n const handlePageChange = (newPage: number) => {\n if (newPage >= 1 && newPage <= totalPages) {\n setCurrentPage(newPage)\n }\n }\n\n const handleRowsPerPageChange = (value: number) => {\n setRowsPerPage(value)\n setCurrentPage(1) // Reset to first page when changing rows per page\n }\n\n return (\n <div className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Fixed Header */}\n <div className=\"flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <div className=\"container mx-auto px-4 py-4 max-w-none\">\n <div className=\"flex items-center justify-between\">\n <h1 className=\"text-3xl font-bold text-foreground\">Alerts</h1>\n <Sheet>\n <SheetTrigger asChild>\n <Button variant=\"outline\" className=\"gap-2\">\n <Filter className=\"h-4 w-4\" />\n Filters\n </Button>\n </SheetTrigger>\n <SheetContent side=\"right\" className=\"w-full sm:max-w-xl overflow-y-auto\">\n <SheetHeader>\n <SheetTitle>Alert Filters</SheetTitle>\n </SheetHeader>\n \n <div className=\"space-y-6 py-6\">\n <EnhancedInput\n label=\"Alert ID\"\n value={filters.alertId}\n onChange={(e) => handleFilterChange(\"alertId\", e.target.value)}\n placeholder=\"Enter alert ID\"\n />\n\n <EnhancedInput\n label=\"Context ID\"\n value={filters.contextId}\n onChange={(e) => handleFilterChange(\"contextId\", e.target.value)}\n placeholder=\"Enter context ID\"\n />\n\n <EnhancedSelect\n label=\"Context Type\"\n value={filters.contextType}\n onValueChange={(value) => handleFilterChange(\"contextType\", value)}\n placeholder=\"Select context type\"\n options={[\n { value: \"Ofac\", label: \"Ofac\" },\n { value: \"Transaction\", label: \"Transaction\" },\n { value: \"Product\", label: \"Product\" },\n { value: \"File Record\", label: \"File Record\" }\n ]}\n />\n\n <EnhancedSelect\n label=\"Alert Type\"\n value={filters.alertType}\n onValueChange={(value) => handleFilterChange(\"alertType\", value)}\n placeholder=\"Select alert type\"\n options={[\n { value: \"Ofac\", label: \"Ofac\" },\n { value: \"Dual Approval\", label: \"Dual Approval\" },\n { value: \"Transaction Monitoring\", label: \"Transaction Monitoring\" },\n { value: \"Transaction Processing Error\", label: \"Transaction Processing Error\" }\n ]}\n />\n\n <EnhancedSelect\n label=\"Alert Status\"\n value={filters.alertStatus}\n onValueChange={(value) => handleFilterChange(\"alertStatus\", value)}\n placeholder=\"Select status\"\n options={[\n { value: \"Unassigned\", label: \"Unassigned\" },\n { value: \"Closed\", label: \"Closed\" },\n { value: \"In Progress\", label: \"In Progress\" }\n ]}\n />\n\n <EnhancedInput\n label=\"Assignee\"\n value={filters.assignee}\n onChange={(e) => handleFilterChange(\"assignee\", e.target.value)}\n placeholder=\"Enter assignee name\"\n />\n\n <EnhancedSelect\n label=\"RFI Status\"\n value={filters.rfiStatus}\n onValueChange={(value) => handleFilterChange(\"rfiStatus\", value)}\n placeholder=\"Select RFI status\"\n options={[\n { value: \"Completed\", label: \"Completed\" },\n { value: \"Provided\", label: \"Provided\" },\n { value: \"Pending\", label: \"Pending\" }\n ]}\n />\n\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedInput\n label=\"Start Date\"\n type=\"date\"\n value={filters.startDate}\n onChange={(e) => handleFilterChange(\"startDate\", e.target.value)}\n />\n\n <EnhancedInput\n label=\"End Date\"\n type=\"date\"\n value={filters.endDate}\n onChange={(e) => handleFilterChange(\"endDate\", e.target.value)}\n />\n </div>\n </div>\n\n <SheetFooter className=\"gap-2\">\n <Button variant=\"outline\" onClick={resetFilters}>\n Reset Filters\n </Button>\n <Button onClick={applyFilters}>\n Apply Filters\n </Button>\n </SheetFooter>\n </SheetContent>\n </Sheet>\n </div>\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-hidden\">\n <div className=\"container mx-auto px-4 h-full max-w-none flex flex-col\">\n <div className=\"flex-1 mt-4 rounded-lg border bg-card overflow-hidden flex flex-col\">\n <div className=\"flex-1 overflow-auto\">\n <table className=\"w-full table-fixed\">\n <colgroup>\n <col className=\"w-28\" />\n <col className=\"w-36\" />\n <col className=\"w-52\" />\n <col className=\"w-32\" />\n <col className=\"w-36\" />\n <col className=\"w-32\" />\n <col className=\"w-auto\" />\n </colgroup>\n <thead className=\"sticky top-0 bg-card z-10 shadow-sm\">\n <tr className=\"border-b\">\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Alert ID</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Created At</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Type</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Status</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Context Type</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">RFI Status</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Description</th>\n </tr>\n </thead>\n <tbody>\n {paginatedAlerts.map((alert) => (\n <tr \n key={alert.id} \n className=\"border-b hover:bg-muted/50 transition-colors cursor-pointer\"\n onClick={() => navigate(`/alerts/${alert.id}`)}\n >\n <td className=\"px-3 py-2 text-xs\">{alert.id}</td>\n <td className=\"px-3 py-2 text-xs\">{alert.createdAt}</td>\n <td className=\"px-3 py-2\">\n <Badge variant={getTypeBadgeVariant(alert.type)} className=\"whitespace-nowrap\">\n {alert.type}\n </Badge>\n </td>\n <td className=\"px-3 py-2\">\n <span className={cn(\"text-xs font-medium\", getStatusColor(alert.status))}>\n {alert.status}\n </span>\n </td>\n <td className=\"px-3 py-2\">\n <Badge variant=\"outline\" className=\"whitespace-nowrap\">\n {alert.contextType}\n </Badge>\n </td>\n <td className=\"px-3 py-2\">\n {alert.rfiStatus && (\n <Badge variant=\"success\" className=\"whitespace-nowrap\">\n {alert.rfiStatus}\n </Badge>\n )}\n </td>\n <td className=\"px-3 py-2 text-xs truncate\">\n {alert.description}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n \n {/* Pagination Footer */}\n <div className=\"flex-none border-t bg-background py-3 px-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">Rows per page:</span>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 gap-1\">\n {rowsPerPage}\n <ChevronRight className=\"h-4 w-4 rotate-90\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"bg-background z-50\">\n <DropdownMenuItem onClick={() => handleRowsPerPageChange(100)}>\n 100\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => handleRowsPerPageChange(200)}>\n 200\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => handleRowsPerPageChange(500)}>\n 500\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n\n <div className=\"flex items-center gap-4\">\n <span className=\"text-sm text-muted-foreground\">\n Page {currentPage} of {totalPages}\n </span>\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => handlePageChange(currentPage - 1)}\n disabled={currentPage === 1}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => handlePageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default Alerts\n","export interface BusinessListItem {\n id: string\n businessName: string\n productName: string\n cipStatus: \"verified\" | \"not_start\" | \"pending\"\n status: \"active\" | \"inactive\" | \"suspended\"\n created: string\n modified: string\n}\n\nexport const mockBusinessesList: BusinessListItem[] = [\n {\n id: \"8112488\",\n businessName: \"RAPIDZ PAY INC\",\n productName: \"Fiat Republic Canada Inc. FBO Rapidz Pay\",\n cipStatus: \"verified\",\n status: \"active\",\n created: \"2025-10-05\",\n modified: \"2025-10-05\"\n },\n {\n id: \"8111609\",\n businessName: \"Fern Hyper Growth Llc\",\n productName: \"Atomic Brokerage FBO Atomic Brokerage Clients\",\n cipStatus: \"verified\",\n status: \"active\",\n created: \"2025-10-04\",\n modified: \"2025-10-04\"\n },\n {\n id: \"8111026\",\n businessName: \"ACEROSGALVANISADOS & PREPINTADOS\",\n productName: \"SendFriend Inc FBO Conduit Pay Agent\",\n cipStatus: \"not_start\",\n status: \"active\",\n created: \"2025-10-03\",\n modified: \"2025-10-03\"\n },\n {\n id: \"8110892\",\n businessName: \"Tech Solutions Corp\",\n productName: \"Digital Finance Inc FBO Tech Solutions\",\n cipStatus: \"pending\",\n status: \"active\",\n created: \"2025-10-02\",\n modified: \"2025-10-02\"\n },\n {\n id: \"8110654\",\n businessName: \"Global Trade Partners LLC\",\n productName: \"Swift Transfer FBO Global Trade\",\n cipStatus: \"verified\",\n status: \"active\",\n created: \"2025-10-01\",\n modified: \"2025-10-01\"\n }\n]\n","import { useState } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { format } from \"date-fns\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { Card, CardContent } from \"@/components/ui/card\"\nimport { DataTable, DataTableColumn } from \"@/components/ui/data-table\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Filter, Calendar as CalendarIcon } from \"lucide-react\"\nimport { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, SheetFooter } from \"@/components/ui/sheet\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { Calendar } from \"@/components/ui/calendar\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\"\nimport { cn } from \"@/lib/utils\"\nimport { mockBusinessesList, BusinessListItem } from \"@/lib/mock-data/businesses-list-data\"\n\nconst Businesses = () => {\n const navigate = useNavigate()\n const [businesses, setBusinesses] = useState<BusinessListItem[]>(mockBusinessesList)\n const [filteredBusinesses, setFilteredBusinesses] = useState<BusinessListItem[]>(mockBusinessesList)\n const [sortBy, setSortBy] = useState<string>(\"created\")\n const [sortDirection, setSortDirection] = useState<\"asc\" | \"desc\">(\"desc\")\n const [filters, setFilters] = useState({\n name: \"\",\n productName: \"\",\n status: \"\",\n createdDateStart: undefined as Date | undefined,\n createdDateEnd: undefined as Date | undefined\n })\n\n const handleFilterChange = (field: string, value: string | Date | undefined) => {\n setFilters(prev => ({ ...prev, [field]: value }))\n }\n\n const applyFilters = () => {\n let filtered = businesses\n\n if (filters.name) {\n filtered = filtered.filter(business => \n business.businessName.toLowerCase().includes(filters.name.toLowerCase())\n )\n }\n if (filters.productName) {\n filtered = filtered.filter(business => \n business.productName.toLowerCase().includes(filters.productName.toLowerCase())\n )\n }\n if (filters.status) {\n filtered = filtered.filter(business => business.status === filters.status)\n }\n if (filters.createdDateStart) {\n filtered = filtered.filter(business => \n new Date(business.created) >= filters.createdDateStart!\n )\n }\n if (filters.createdDateEnd) {\n filtered = filtered.filter(business => \n new Date(business.created) <= filters.createdDateEnd!\n )\n }\n\n setFilteredBusinesses(filtered)\n }\n\n const resetFilters = () => {\n setFilters({\n name: \"\",\n productName: \"\",\n status: \"\",\n createdDateStart: undefined,\n createdDateEnd: undefined\n })\n setFilteredBusinesses(businesses)\n }\n\n const handleSort = (key: string) => {\n if (sortBy === key) {\n setSortDirection(sortDirection === \"asc\" ? \"desc\" : \"asc\")\n } else {\n setSortBy(key)\n setSortDirection(\"asc\")\n }\n }\n\n const handleRowClick = (business: BusinessListItem) => {\n navigate(`/business/${business.id}`)\n }\n\n const columns: DataTableColumn<BusinessListItem>[] = [\n {\n key: \"id\",\n title: \"Business ID\",\n sortable: true,\n },\n {\n key: \"businessName\",\n title: \"Business Name\",\n sortable: true,\n },\n {\n key: \"productName\",\n title: \"Product Name\",\n sortable: true,\n render: (value) => (\n <span className=\"text-primary hover:underline cursor-pointer\">\n {value as string}\n </span>\n ),\n },\n {\n key: \"cipStatus\",\n title: \"CIP status\",\n sortable: true,\n render: (value) => {\n const status = value as string\n const variant = \n status === \"verified\" ? \"success\" : \n status === \"pending\" ? \"warning\" : \n \"default\"\n const label = \n status === \"verified\" ? \"Verified\" : \n status === \"pending\" ? \"Pending\" : \n \"Not Start\"\n \n return <Badge variant={variant}>{label}</Badge>\n },\n },\n {\n key: \"status\",\n title: \"Status\",\n sortable: true,\n render: (value) => {\n const status = value as string\n const variant = status === \"active\" ? \"success\" : \"default\"\n const label = status.charAt(0).toUpperCase() + status.slice(1)\n \n return <Badge variant={variant}>{label}</Badge>\n },\n },\n {\n key: \"created\",\n title: \"Created\",\n sortable: true,\n },\n {\n key: \"modified\",\n title: \"Modified\",\n sortable: true,\n },\n ]\n\n const sortedBusinesses = [...filteredBusinesses].sort((a, b) => {\n const aValue = a[sortBy as keyof BusinessListItem]\n const bValue = b[sortBy as keyof BusinessListItem]\n \n if (aValue < bValue) return sortDirection === \"asc\" ? -1 : 1\n if (aValue > bValue) return sortDirection === \"asc\" ? 1 : -1\n return 0\n })\n\n return (\n <div className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Fixed Header */}\n <div className=\"flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <div className=\"container mx-auto px-4 py-4 max-w-none\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-3xl font-bold text-foreground\">Businesses</h1>\n <p className=\"text-muted-foreground mt-1\">\n Manage business entities and their configurations\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <Sheet>\n <SheetTrigger asChild>\n <Button variant=\"outline\" className=\"gap-2\">\n <Filter className=\"h-4 w-4\" />\n Filters\n </Button>\n </SheetTrigger>\n <SheetContent side=\"right\" className=\"w-full sm:max-w-xl overflow-y-auto\">\n <SheetHeader>\n <SheetTitle>Business Filters</SheetTitle>\n </SheetHeader>\n \n <div className=\"space-y-6 py-6\">\n <EnhancedInput\n label=\"Name\"\n value={filters.name}\n onChange={(e) => handleFilterChange(\"name\", e.target.value)}\n placeholder=\"Enter business name\"\n />\n\n <EnhancedInput\n label=\"Product Name\"\n value={filters.productName}\n onChange={(e) => handleFilterChange(\"productName\", e.target.value)}\n placeholder=\"Enter product name\"\n />\n\n <EnhancedSelect\n label=\"Status\"\n value={filters.status}\n onValueChange={(value) => handleFilterChange(\"status\", value)}\n placeholder=\"Select status\"\n options={[\n { value: \"active\", label: \"Active\" },\n { value: \"inactive\", label: \"Inactive\" },\n { value: \"suspended\", label: \"Suspended\" }\n ]}\n />\n\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Created Date Start</label>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !filters.createdDateStart && \"text-muted-foreground\"\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {filters.createdDateStart ? format(filters.createdDateStart, \"MM/dd/yyyy\") : <span>MM/DD/YYYY</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0 bg-background z-50\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={filters.createdDateStart}\n onSelect={(date) => handleFilterChange(\"createdDateStart\", date)}\n initialFocus\n className=\"pointer-events-auto\"\n />\n </PopoverContent>\n </Popover>\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Created Date End</label>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !filters.createdDateEnd && \"text-muted-foreground\"\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {filters.createdDateEnd ? format(filters.createdDateEnd, \"MM/dd/yyyy\") : <span>MM/DD/YYYY</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0 bg-background z-50\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={filters.createdDateEnd}\n onSelect={(date) => handleFilterChange(\"createdDateEnd\", date)}\n initialFocus\n className=\"pointer-events-auto\"\n />\n </PopoverContent>\n </Popover>\n </div>\n </div>\n </div>\n\n <SheetFooter className=\"gap-2\">\n <Button variant=\"outline\" onClick={resetFilters}>\n Reset Filters\n </Button>\n <Button onClick={applyFilters}>\n Apply Filters\n </Button>\n </SheetFooter>\n </SheetContent>\n </Sheet>\n <Button onClick={() => navigate(\"/business/create\")}>\n Create Business\n </Button>\n </div>\n </div>\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-hidden\">\n <div className=\"container mx-auto px-4 h-full max-w-none flex flex-col\">\n <div className=\"flex-1 mt-4 overflow-auto\">\n <DataTable\n columns={columns}\n data={sortedBusinesses}\n sortBy={sortBy}\n sortDirection={sortDirection}\n onSort={handleSort}\n onRowClick={handleRowClick}\n />\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default Businesses\n","import { useState } from \"react\"\nimport { useParams } from \"react-router-dom\"\nimport { Button } from \"@/components/ui/button\"\nimport { BusinessProfileCard } from \"@/components/form-sections/BusinessProfileCard\"\nimport { BusinessStatusCard } from \"@/components/form-sections/BusinessStatusCard\"\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from \"@/components/ui/tabs\"\nimport { AccountCard } from \"@/components/ui/account-card\"\nimport { CounterpartyTypeBadge } from \"@/components/ui/counterparty-type-badge\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { DataTable, DataTableColumn } from \"@/components/ui/data-table\"\nimport { StatusBadge } from \"@/components/ui/status-badge\"\nimport { EditableInfoField } from \"@/components/ui/editable-info-field\"\nimport { Plus } from \"lucide-react\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { mockBusinessesList } from \"@/lib/mock-data/businesses-list-data\"\n\n// Mock data for accounts\nconst businessAccounts = [\n {\n id: \"acc-001\",\n name: \"Primary Operating Account\",\n number: \"****7890\",\n type: \"checking\" as const,\n status: \"active\" as const,\n balance: \"$125,450.00\",\n currency: \"USD\",\n institution: \"Chase Bank\",\n routingNumber: \"021000021\",\n country: \"US\"\n },\n {\n id: \"acc-002\",\n name: \"Business Savings\",\n number: \"****4567\",\n type: \"savings\" as const,\n status: \"active\" as const,\n balance: \"$45,230.00\",\n currency: \"USD\",\n institution: \"Chase Bank\",\n routingNumber: \"021000021\",\n country: \"US\"\n },\n {\n id: \"acc-003\",\n name: \"Payroll Account\",\n number: \"****1234\",\n type: \"checking\" as const,\n status: \"active\" as const,\n balance: \"$78,900.00\",\n currency: \"USD\",\n institution: \"Wells Fargo\",\n routingNumber: \"121000248\",\n country: \"US\"\n }\n]\n\n// Mock data for counterparties\nconst businessCounterparties = [\n {\n id: \"cp-001\",\n name: \"Tech Solutions Inc\",\n type: \"BUSINESS\" as const,\n status: \"active\",\n description: \"Technology vendor and service provider\",\n lastTransaction: \"2024-01-15\"\n },\n {\n id: \"cp-002\",\n name: \"Global Logistics LLC\",\n type: \"BUSINESS\" as const,\n status: \"active\",\n description: \"Shipping and logistics partner\",\n lastTransaction: \"2024-01-10\"\n },\n {\n id: \"cp-003\",\n name: \"Marketing Pros Agency\",\n type: \"BUSINESS\" as const,\n status: \"active\",\n description: \"Marketing and advertising services\",\n lastTransaction: \"2024-01-08\"\n },\n {\n id: \"cp-004\",\n name: \"John Smith Consulting\",\n type: \"INDIVIDUAL\" as const,\n status: \"active\",\n description: \"Independent business consultant\",\n lastTransaction: \"2023-12-20\"\n }\n]\n\nconst Business = () => {\n const { id } = useParams()\n \n // Get business data from mock data\n const business = mockBusinessesList.find(b => b.id === id)\n \n // Status management state\n const [currentStatus, setCurrentStatus] = useState(business?.status || \"active\")\n \n // Define columns for the accounts table\n const accountColumns: DataTableColumn[] = [\n {\n key: \"number\",\n title: \"Account Number\",\n sortable: true,\n },\n {\n key: \"name\",\n title: \"Account Name\",\n sortable: true,\n },\n {\n key: \"balance\",\n title: \"Available Balance\",\n sortable: true,\n align: \"right\" as const,\n },\n {\n key: \"status\",\n title: \"Status\",\n render: (value) => <StatusBadge status={value} />,\n },\n ]\n\n if (!business) {\n return (\n <div className=\"container mx-auto px-4 py-8\">\n <div className=\"text-center\">\n <h1 className=\"text-2xl font-bold mb-2\">Business Not Found</h1>\n <p className=\"text-muted-foreground mb-4\">The business could not be found.</p>\n </div>\n </div>\n )\n }\n\n return (\n <PageLayout\n title={\n <div className=\"flex items-center gap-3\">\n <span>{business.businessName}</span>\n <EditableInfoField\n label=\"\"\n value={currentStatus}\n options={[\n { value: \"active\", label: \"Active\" },\n { value: \"inactive\", label: \"Inactive\" },\n { value: \"suspended\", label: \"Suspended\" }\n ]}\n onChange={(newStatus) => setCurrentStatus(newStatus as any)}\n renderValue={(value) => <StatusBadge status={value.toUpperCase() as any} />}\n className=\"inline-block\"\n />\n </div>\n }\n maxWidth=\"full\"\n >\n <Tabs defaultValue=\"profile\" className=\"space-y-6\">\n <TabsList className=\"inline-flex gap-8 h-auto bg-transparent border-b border-border w-full p-0 rounded-none justify-start\">\n <TabsTrigger \n value=\"profile\" \n className=\"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:bg-transparent data-[state=active]:shadow-none pb-3\"\n >\n Profile\n </TabsTrigger>\n <TabsTrigger \n value=\"kyc\" \n className=\"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:bg-transparent data-[state=active]:shadow-none pb-3\"\n >\n KYC\n </TabsTrigger>\n <TabsTrigger \n value=\"counterparty\" \n className=\"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:bg-transparent data-[state=active]:shadow-none pb-3\"\n >\n Counterparty\n </TabsTrigger>\n </TabsList>\n\n {/* Profile Tab */}\n <TabsContent value=\"profile\" className=\"space-y-0\">\n <div className=\"flex flex-col lg:flex-row items-start gap-6\">\n {/* Left Section: Main cards */}\n <div className=\"flex-1 space-y-6\">\n <BusinessProfileCard isEditing={false} onToggleEdit={() => {}} />\n \n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-4\">\n <CardTitle>Accounts</CardTitle>\n <Button size=\"sm\">\n + New Account\n </Button>\n </CardHeader>\n <CardContent>\n <DataTable\n columns={accountColumns} \n data={businessAccounts}\n emptyMessage=\"No accounts found\"\n />\n </CardContent>\n </Card>\n </div>\n\n {/* Right Section: Timeline */}\n <div className=\"lg:w-64\">\n <BusinessStatusCard isEditing={false} onToggleEdit={() => {}} />\n </div>\n </div>\n </TabsContent>\n\n {/* KYC Tab */}\n <TabsContent value=\"kyc\" className=\"space-y-0\">\n <div className=\"p-8 text-center text-muted-foreground\">\n KYC content coming soon\n </div>\n </TabsContent>\n\n {/* Counterparty Tab */}\n <TabsContent value=\"counterparty\" className=\"space-y-0\">\n <div className=\"grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-6\">\n {businessCounterparties.map((counterparty) => (\n <Card key={counterparty.id}>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"text-lg\">{counterparty.name}</CardTitle>\n <CounterpartyTypeBadge type={counterparty.type} />\n </div>\n <div className=\"flex items-center gap-2 mt-2\">\n <Badge variant={counterparty.status === \"active\" ? \"default\" : \"secondary\"}>\n {counterparty.status}\n </Badge>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <p className=\"text-sm text-muted-foreground\">{counterparty.description}</p>\n <div className=\"flex justify-between items-center text-sm\">\n <span className=\"text-muted-foreground\">Last Transaction</span>\n <span className=\"font-medium\">{counterparty.lastTransaction}</span>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n </TabsContent>\n </Tabs>\n </PageLayout>\n )\n}\n\nexport default Business","import { useState } from \"react\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { EnhancedTextarea } from \"@/components/ui/enhanced-textarea\"\nimport { Card } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { BusinessTypeBadge } from \"@/components/ui/business-type-badge\"\n\nconst CreateBusiness = () => {\n const [businessType, setBusinessType] = useState(\"\")\n return (\n <PageLayout \n title=\"Create Business\" \n description=\"Create a new business entity with all required information\"\n actions={[\n { label: \"Cancel\", variant: \"outline\", onClick: () => {} },\n { label: \"Create Business\", variant: \"default\", onClick: () => {} }\n ]}\n >\n {/* Business Creation Form */}\n <div className=\"space-y-6\">\n <Card className=\"p-6\">\n <div className=\"border-b border-border pb-4 mb-6\">\n <h2 className=\"text-lg font-semibold text-foreground\">Business Information</h2>\n <p className=\"text-sm text-muted-foreground\">Basic business details and identification</p>\n </div>\n \n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n <EnhancedInput\n label=\"Business Name\"\n placeholder=\"Enter business name\"\n required\n />\n \n <EnhancedInput\n label=\"Legal Name\"\n placeholder=\"Enter legal business name\"\n hint=\"Official registered business name\"\n />\n \n <div className=\"space-y-2\">\n <EnhancedSelect\n label=\"Business Type\"\n placeholder=\"Select business type\"\n value={businessType}\n onValueChange={setBusinessType}\n options={[\n { value: \"corporation\", label: \"Corporation\" },\n { value: \"llc\", label: \"LLC\" },\n { value: \"partnership\", label: \"Partnership\" },\n { value: \"sole_proprietorship\", label: \"Sole Proprietorship\" }\n ]}\n />\n {businessType && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs text-muted-foreground\">Preview:</span>\n <BusinessTypeBadge type={businessType as \"corporation\" | \"llc\" | \"partnership\" | \"sole_proprietorship\"} />\n </div>\n )}\n </div>\n \n <EnhancedInput\n label=\"Tax ID (EIN)\"\n placeholder=\"12-3456789\"\n hint=\"Employer Identification Number\"\n required\n />\n \n <EnhancedInput\n label=\"Registration Number\"\n placeholder=\"Enter registration number\"\n hint=\"State business registration number\"\n />\n \n <EnhancedSelect\n label=\"Industry\"\n placeholder=\"Select industry\"\n options={[\n { value: \"technology\", label: \"Technology\" },\n { value: \"finance\", label: \"Finance\" },\n { value: \"healthcare\", label: \"Healthcare\" },\n { value: \"manufacturing\", label: \"Manufacturing\" },\n { value: \"retail\", label: \"Retail\" },\n { value: \"other\", label: \"Other\" }\n ]}\n />\n </div>\n </Card>\n\n <Card className=\"p-6\">\n <div className=\"border-b border-border pb-4 mb-6\">\n <h2 className=\"text-lg font-semibold text-foreground\">Contact Information</h2>\n <p className=\"text-sm text-muted-foreground\">Business address and contact details</p>\n </div>\n \n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n <EnhancedInput\n label=\"Street Address\"\n placeholder=\"Enter street address\"\n required\n />\n \n <EnhancedInput\n label=\"City\"\n placeholder=\"Enter city\"\n required\n />\n \n <EnhancedInput\n label=\"State\"\n placeholder=\"Enter state\"\n required\n />\n \n <EnhancedInput\n label=\"Postal Code\"\n placeholder=\"12345\"\n required\n />\n \n <EnhancedSelect\n label=\"Country\"\n placeholder=\"Select country\"\n options={[\n { value: \"US\", label: \"United States\" },\n { value: \"CA\", label: \"Canada\" },\n { value: \"GB\", label: \"United Kingdom\" },\n { value: \"DE\", label: \"Germany\" }\n ]}\n />\n \n <EnhancedInput\n label=\"Phone Number\"\n placeholder=\"+1 (555) 123-4567\"\n required\n />\n \n <EnhancedInput\n label=\"Email Address\"\n placeholder=\"contact@business.com\"\n type=\"email\"\n required\n />\n \n <EnhancedInput\n label=\"Website\"\n placeholder=\"https://www.business.com\"\n type=\"url\"\n />\n </div>\n </Card>\n\n <Card className=\"p-6\">\n <div className=\"border-b border-border pb-4 mb-6\">\n <h2 className=\"text-lg font-semibold text-foreground\">Additional Information</h2>\n <p className=\"text-sm text-muted-foreground\">Optional business description and notes</p>\n </div>\n \n <div className=\"space-y-6\">\n <EnhancedTextarea\n label=\"Business Description\"\n placeholder=\"Describe your business activities and services\"\n hint=\"Brief description of what your business does\"\n />\n </div>\n </Card>\n </div>\n </PageLayout>\n )\n}\n\nexport default CreateBusiness","import { PageLayout } from \"@/components/ui/page-layout\"\n\nconst Cases = () => {\n return (\n <PageLayout \n title=\"Cases\" \n description=\"Manage and track investigation cases\"\n >\n <div className=\"text-center py-12 text-muted-foreground\">\n Cases content coming soon\n </div>\n </PageLayout>\n )\n}\n\nexport default Cases\n","import { useState } from \"react\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { CounterpartyBasicInfo } from \"@/components/form-sections/CounterpartyBasicInfo\"\nimport { PaymentInformationSection } from \"@/components/form-sections/PaymentInformationSection\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nconst CreateCounterparty = () => {\n const [counterpartyData, setCounterpartyData] = useState(null)\n\n const handleBasicInfoChange = (data: any) => {\n setCounterpartyData(data)\n }\n\n const handleSubmit = () => {\n // Handle form submission\n console.log(\"Creating counterparty with data:\", counterpartyData)\n }\n\n return (\n <PageLayout \n title=\"Create Counterparty\" \n description=\"Create a new counterparty with all required information\"\n actions={[\n { label: \"Cancel\", variant: \"outline\", onClick: () => {} },\n { label: \"Create Counterparty\", variant: \"default\", onClick: handleSubmit }\n ]}\n >\n <div className=\"space-y-6\">\n {/* Basic Information Card */}\n <Card>\n <CardContent className=\"p-6\">\n <CounterpartyBasicInfo onDataChange={handleBasicInfoChange} />\n </CardContent>\n </Card>\n\n {/* Payment Information Section */}\n <Card>\n <CardContent className=\"p-6\">\n <PaymentInformationSection />\n </CardContent>\n </Card>\n </div>\n </PageLayout>\n )\n}\n\nexport default CreateCounterparty","import { PageLayout } from \"@/components/ui/page-layout\"\nimport { BasicInfoCard } from \"@/components/form-sections/BasicInfoCard\"\nimport { ReceiverCard } from \"@/components/form-sections/ReceiverCard\"\nimport { BeneficiaryCard } from \"@/components/form-sections/BeneficiaryCard\"\nimport { FormCard } from \"@/components/ui/form-card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Separator } from \"@/components/ui/separator\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { Edit } from \"lucide-react\"\nimport { useEditState } from \"@/hooks/useEditState\"\nimport { useState } from \"react\"\n\nconst CounterpartyDomesticWire = () => {\n const { isEditing, handleToggleEdit, handleSave, handleCancel } = useEditState({})\n const [transferType, setTransferType] = useState(\"DOMESTIC\")\n return (\n <PageLayout\n title=\"Counterparty Domestic Wire\"\n description=\"Manage domestic wire transfer configurations and beneficiary information\"\n actions={!isEditing ? [\n { label: \"Cancel\", variant: \"outline\", onClick: () => {} },\n { label: \"Save Domestic Wire Configuration\", variant: \"default\", onClick: () => {} }\n ] : undefined}\n >\n <div className=\"space-y-8\">\n {/* Basic Info - Always Visible */}\n <BasicInfoCard />\n\n <Separator className=\"my-8\" />\n\n {/* Domestic Wire Transfer Configuration */}\n <FormCard\n title=\"Domestic Wire Transfer Configuration\"\n description=\"Configure domestic wire transfer settings and beneficiary information\"\n headerActions={\n <div className=\"flex items-center gap-2\">\n {isEditing ? (\n <>\n <EnhancedSelect\n value={transferType}\n onValueChange={setTransferType}\n options={[\n { value: \"DOMESTIC\", label: \"DOMESTIC\" },\n { value: \"INTERNATIONAL\", label: \"INTERNATIONAL\" }\n ]}\n placeholder=\"Select transfer type\"\n />\n <Button variant=\"outline\" size=\"sm\" onClick={handleCancel}>\n Cancel\n </Button>\n <Button size=\"sm\" onClick={handleSave}>\n Save\n </Button>\n </>\n ) : (\n <>\n <span className=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-secondary text-secondary-foreground\">\n {transferType}\n </span>\n <Button variant=\"ghost\" size=\"icon\" onClick={handleToggleEdit} className=\"text-primary hover:text-primary/80 hover:bg-primary/10\">\n <Edit className=\"h-4 w-4\" />\n </Button>\n </>\n )}\n </div>\n }\n >\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <ReceiverCard isEditing={isEditing} hideActions={true} />\n <BeneficiaryCard isEditing={isEditing} hideActions={true} />\n </div>\n </FormCard>\n </div>\n </PageLayout>\n )\n}\n\nexport default CounterpartyDomesticWire","import { PageLayout } from \"@/components/ui/page-layout\"\nimport { Stack } from \"@/components/ui/stack\"\nimport { Button } from \"@/components/ui/button\"\nimport { BasicInfoSection } from \"@/components/form-sections/BasicInfoSection\"\nimport { WireTransferSection } from \"@/components/form-sections/WireTransferSection\"\nimport { ACHTransferSection } from \"@/components/form-sections/ACHTransferSection\"\nimport { useEditState } from \"@/hooks/useEditState\"\n\nconst CounterpartyManage = () => {\n // Global edit state management\n const { \n isEditing: isBasicEditing, \n handleToggleEdit: handleBasicToggleEdit\n } = useEditState({})\n\n const { \n isEditing: isWireEditing, \n handleToggleEdit: handleWireToggleEdit\n } = useEditState({})\n\n const { \n isEditing: isACHEditing, \n handleToggleEdit: handleACHToggleEdit\n } = useEditState({})\n\n const pageCards = [\n {\n key: \"basic-info\",\n component: BasicInfoSection,\n props: {\n isEditing: isBasicEditing,\n onToggleEdit: handleBasicToggleEdit\n }\n },\n {\n key: \"wire-transfer\", \n component: WireTransferSection,\n props: {\n isEditing: isWireEditing,\n onToggleEdit: handleWireToggleEdit\n }\n },\n {\n key: \"ach-transfer\",\n component: ACHTransferSection, \n props: {\n isEditing: isACHEditing,\n onToggleEdit: handleACHToggleEdit\n }\n }\n ]\n\n const pageActions = !isBasicEditing && !isWireEditing && !isACHEditing ? [\n {\n label: \"Cancel\",\n variant: \"outline\" as const,\n onClick: () => {}\n },\n {\n label: \"Save Configuration\", \n variant: \"default\" as const,\n onClick: () => {}\n }\n ] : []\n\n return (\n <PageLayout\n title=\"Counterparty Management\"\n description=\"Manage counterparty details and payment configurations\"\n mode=\"cards\"\n cards={pageCards}\n actions={pageActions}\n maxWidth=\"lg\"\n gridCols={1}\n />\n )\n}\n\nexport default CounterpartyManage","import { PageLayout } from \"@/components/ui/page-layout\"\n\nconst Dashboard = () => {\n return (\n <PageLayout \n title=\"Dashboard\" \n description=\"Overview of your system metrics and activity\"\n >\n <div className=\"text-center py-12 text-muted-foreground\">\n Dashboard content coming soon\n </div>\n </PageLayout>\n )\n}\n\nexport default Dashboard\n","import { useLocation } from \"react-router-dom\";\nimport { useEffect } from \"react\";\n\nconst NotFound = () => {\n const location = useLocation();\n\n useEffect(() => {\n console.error(\n \"404 Error: User attempted to access non-existent route:\",\n location.pathname\n );\n }, [location.pathname]);\n\n return (\n <div className=\"min-h-screen flex items-center justify-center bg-gray-100\">\n <div className=\"text-center\">\n <h1 className=\"text-4xl font-bold mb-4\">404</h1>\n <p className=\"text-xl text-gray-600 mb-4\">Oops! Page not found</p>\n <a href=\"/\" className=\"text-blue-500 hover:text-blue-700 underline\">\n Return to Home\n </a>\n </div>\n </div>\n );\n};\n\nexport default NotFound;\n","export interface StatementHeader {\n account: string\n productId: string\n programId: string\n startDate: string\n endDate: string\n startingBalance: string\n endingBalance: string\n}\n\nexport interface StatementTransaction {\n transactionType: string\n direction: \"CREDIT\" | \"DEBIT\"\n amount: number\n count: number\n}\n\nexport const mockStatementHeader: StatementHeader = {\n account: \"1234567890\",\n productId: \"PROD-001\",\n programId: \"PROG-001\",\n startDate: \"01/01/2024 00:00:00\",\n endDate: \"01/31/2024 23:59:59\",\n startingBalance: \"$125,450.00\",\n endingBalance: \"$158,320.50\"\n}\n\nexport const mockStatementTransactions: StatementTransaction[] = [\n { transactionType: \"ACH Credit\", direction: \"CREDIT\", amount: 45000.00, count: 12 },\n { transactionType: \"ACH Debit\", direction: \"DEBIT\", amount: 23500.00, count: 8 },\n { transactionType: \"Wire Transfer In\", direction: \"CREDIT\", amount: 15000.00, count: 3 },\n { transactionType: \"Wire Transfer Out\", direction: \"DEBIT\", amount: 8200.00, count: 2 },\n { transactionType: \"Card Purchase\", direction: \"DEBIT\", amount: 5430.50, count: 45 },\n { transactionType: \"Direct Deposit\", direction: \"CREDIT\", amount: 12500.00, count: 5 },\n { transactionType: \"ATM Withdrawal\", direction: \"DEBIT\", amount: 3200.00, count: 16 },\n { transactionType: \"Check Deposit\", direction: \"CREDIT\", amount: 8900.00, count: 4 },\n { transactionType: \"Bill Payment\", direction: \"DEBIT\", amount: 6780.00, count: 18 },\n { transactionType: \"Transfer In\", direction: \"CREDIT\", amount: 5200.00, count: 7 },\n { transactionType: \"Transfer Out\", direction: \"DEBIT\", amount: 4350.00, count: 6 },\n { transactionType: \"Fee\", direction: \"DEBIT\", amount: 125.00, count: 3 },\n { transactionType: \"Interest\", direction: \"CREDIT\", amount: 85.50, count: 1 },\n { transactionType: \"Refund\", direction: \"CREDIT\", amount: 450.00, count: 2 }\n]\n\nexport const mockPrograms = [\n { value: \"PROG-001\", label: \"Consumer Banking Program\" },\n { value: \"PROG-002\", label: \"Business Banking Program\" },\n { value: \"PROG-003\", label: \"Premium Rewards Program\" }\n]\n\nexport const mockProducts = [\n { value: \"PROD-001\", label: \"Checking Account\" },\n { value: \"PROD-002\", label: \"Savings Account\" },\n { value: \"PROD-003\", label: \"Money Market Account\" },\n { value: \"PROD-004\", label: \"Business Checking\" }\n]\n","import { useState } from \"react\"\nimport { StatementView } from \"@/components/statement/StatementView\"\nimport { \n mockPrograms, \n mockProducts, \n mockStatementHeader, \n mockStatementTransactions,\n StatementHeader,\n StatementTransaction \n} from \"@/lib/mock-data/statement-data\"\n\nexport default function Statement() {\n // State\n const [statementType, setStatementType] = useState<string>(\"\")\n const [selectedProgram, setSelectedProgram] = useState<string>(\"\")\n const [selectedProduct, setSelectedProduct] = useState<string>(\"\")\n const [accountNumber, setAccountNumber] = useState<string>(\"\")\n const [startDate, setStartDate] = useState<Date>()\n const [endDate, setEndDate] = useState<Date>()\n const [statementGenerated, setStatementGenerated] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n \n // Data state - will be fetched from API\n const [programs] = useState(mockPrograms) // TODO: Fetch from API\n const [products] = useState(mockProducts) // TODO: Fetch from API\n const [statementHeader, setStatementHeader] = useState<StatementHeader | null>(null)\n const [statementTransactions, setStatementTransactions] = useState<StatementTransaction[]>([])\n\n // Handlers\n const handleStatementTypeChange = (value: string) => {\n setStatementType(value)\n // Reset secondary selection when type changes\n setSelectedProgram(\"\")\n setSelectedProduct(\"\")\n setAccountNumber(\"\")\n }\n\n const handleGenerateStatement = async () => {\n if (!statementType || !startDate || !endDate) return\n \n // Validate secondary selection based on type\n if (statementType === \"program\" && !selectedProgram) return\n if (statementType === \"product\" && !selectedProduct) return\n if (statementType === \"account\" && !accountNumber) return\n\n setIsLoading(true)\n \n try {\n // TODO: API call to generate statement\n console.log(\"Generating statement with:\", {\n statementType,\n selectedProgram,\n selectedProduct,\n accountNumber,\n startDate,\n endDate\n })\n\n // Simulate API delay\n await new Promise(resolve => setTimeout(resolve, 1000))\n\n // Set mock data - replace with API response\n setStatementHeader(mockStatementHeader)\n setStatementTransactions(mockStatementTransactions)\n setStatementGenerated(true)\n } finally {\n setIsLoading(false)\n }\n }\n\n const isGenerateDisabled = () => {\n if (!statementType || !startDate || !endDate) return true\n if (statementType === \"program\" && !selectedProgram) return true\n if (statementType === \"product\" && !selectedProduct) return true\n if (statementType === \"account\" && !accountNumber) return true\n return false\n }\n\n const handleDownloadCSV = () => {\n // TODO: API call to download CSV\n console.log(\"Downloading CSV...\")\n }\n\n const handlePrintPDF = () => {\n // TODO: API call to print PDF\n console.log(\"Printing PDF...\")\n }\n\n const handleEdit = () => {\n setStatementGenerated(false)\n }\n\n return (\n <StatementView\n statementType={statementType}\n selectedProgram={selectedProgram}\n selectedProduct={selectedProduct}\n accountNumber={accountNumber}\n startDate={startDate}\n endDate={endDate}\n statementGenerated={statementGenerated}\n programs={programs}\n products={products}\n statementHeader={statementHeader}\n statementTransactions={statementTransactions}\n onStatementTypeChange={handleStatementTypeChange}\n onProgramChange={setSelectedProgram}\n onProductChange={setSelectedProduct}\n onAccountNumberChange={setAccountNumber}\n onStartDateChange={setStartDate}\n onEndDateChange={setEndDate}\n onGenerateStatement={handleGenerateStatement}\n onEdit={handleEdit}\n onDownloadCSV={handleDownloadCSV}\n onPrintPDF={handlePrintPDF}\n isGenerateDisabled={isGenerateDisabled()}\n isLoading={isLoading}\n />\n )\n}\n","export interface Transaction {\n id: string\n created: string\n accountNumber: string\n amount: number\n customer: string\n counterparty: string\n description: string\n transactionType: string\n status: \"PENDING\" | \"POSTED\" | \"FAILED\" | \"CANCELLED\"\n processingStatus: \"INITIATED\" | \"SUBMITTED\" | \"CUSTOMER_REVIEW\" | \"MANUAL_REVIEW\" | \"SENT\" | \"CONFIRMED\"\n updated: string\n isInbound: boolean\n wireDetails?: any\n achDetails?: any\n}\n\nexport const mockTransactions: Transaction[] = [\n {\n id: \"1\",\n created: \"2025-10-01 00:16\",\n accountNumber: \"126713605718\",\n amount: 34539.18,\n customer: \"Rise Works Inc\",\n counterparty: \"VEDANT JAYESHKUMAR PATI\",\n description: \"4NnuJKyD9a8LUmkm\",\n transactionType: \"Ach Originator Credit\",\n status: \"PENDING\",\n processingStatus: \"SENT\",\n updated: \"2025-10-01 00:16\",\n isInbound: true,\n achDetails: {\n type: \"ACH Credit\",\n originatorName: \"Rise Works Inc\",\n originatorAccountNumber: \"126713605718\",\n receiverName: \"VEDANT JAYESHKUMAR PATI\",\n receiverAccountNumber: \"9876543210\",\n receiverRoutingNumber: \"021000021\",\n amount: 7293.32,\n secCode: \"CCD\",\n companyEntryDescription: \"PAYROLL\",\n companyDiscretionaryData: \"4NnuJKyD9a8LUmkm\",\n individualIdNumber: \"1234567890\",\n individualName: \"VEDANT JAYESHKUMAR PATI\",\n traceNumber: \"021000021234567\",\n raw: {\n recordType: \"6\",\n transactionCode: \"22\",\n receivingDFIIdentification: \"02100002\",\n checkDigit: \"1\",\n DFIAccountNumber: \"9876543210\",\n amount: \"0000729332\",\n individualIdentificationNumber: \"1234567890\",\n individualName: \"VEDANT JAYESHKUMAR PA\",\n discretionaryData: \" \",\n addendaRecordIndicator: \"0\",\n traceNumber: \"021000021234567\",\n batchHeader: {\n recordType: \"5\",\n serviceClassCode: \"200\",\n companyName: \"RISE WORKS INC\",\n companyDiscretionaryData: \"4NnuJKyD9a8LU\",\n companyIdentification: \"1234567890\",\n standardEntryClassCode: \"CCD\",\n companyEntryDescription: \"PAYROLL\",\n companyDescriptiveDate: \"251001\",\n effectiveEntryDate: \"251001\",\n settlementDate: \" \",\n originatorStatusCode: \"1\",\n originatingDFIIdentification: \"02100002\",\n batchNumber: \"0000001\"\n }\n }\n }\n },\n {\n id: \"2\",\n created: \"2025-10-01 00:09\",\n accountNumber: \"899606565333\",\n amount: 0.50,\n customer: \"SSB Bank\",\n counterparty: \"Maung Lwin\",\n description: \"ACH Fee\",\n transactionType: \"Fee Ach Transaction\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-10-01 00:09\",\n isInbound: false\n },\n {\n id: \"3\",\n created: \"2025-09-30 23:45\",\n accountNumber: \"445821903456\",\n amount: 15000.00,\n customer: \"Tech Solutions LLC\",\n counterparty: \"Global Suppliers Inc\",\n description: \"Invoice Payment #INV-2024-089\",\n transactionType: \"Wire Domestic Credit\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-10-01 00:12\",\n isInbound: false,\n wireDetails: {\n type: \"Domestic Wire\",\n originatorName: \"Tech Solutions LLC\",\n originatorAccountNumber: \"445821903456\",\n originatorAddress: \"123 Tech Street, San Francisco, CA 94105\",\n beneficiaryName: \"Global Suppliers Inc\",\n beneficiaryAccountNumber: \"998877665544\",\n beneficiaryAddress: \"456 Supply Avenue, New York, NY 10001\",\n beneficiaryFIName: \"Chase Bank\",\n beneficiaryFIRoutingNumber: \"021000021\",\n beneficiaryFIAddress: \"270 Park Avenue, New York, NY 10017\",\n originatorFIName: \"Wells Fargo Bank\",\n originatorFIRoutingNumber: \"121000248\",\n originatorFIAddress: \"420 Montgomery Street, San Francisco, CA 94104\",\n intermediaryFIName: \"Bank of America\",\n intermediaryFIRoutingNumber: \"026009593\",\n intermediaryFIAddress: \"100 Federal Street, Boston, MA 02110\",\n raw: {\n messageType: \"MT103\",\n sender: \"WFBIUS6SXXX\",\n receiver: \"CHASUS33XXX\",\n transactionReference: \"INV-2024-089-TXN-001\",\n relatedReference: \"INV-2024-089\",\n bankOperationCode: \"CRED\",\n instructionCode: \"CHQB\",\n valueDate: \"2025-09-30\",\n currency: \"USD\",\n amount: \"15000.00\",\n orderingCustomer: {\n account: \"445821903456\",\n name: \"Tech Solutions LLC\",\n address: [\n \"123 Tech Street\",\n \"San Francisco, CA 94105\",\n \"United States\"\n ]\n },\n orderingInstitution: {\n bic: \"WFBIUS6SXXX\",\n name: \"Wells Fargo Bank N.A.\",\n address: [\n \"420 Montgomery Street\",\n \"San Francisco, CA 94104\"\n ]\n },\n intermediaryInstitution: {\n bic: \"BOFAUS3NXXX\",\n name: \"Bank of America N.A.\",\n clearingCode: \"026009593\",\n address: [\n \"100 Federal Street\",\n \"Boston, MA 02110\"\n ]\n },\n beneficiaryInstitution: {\n bic: \"CHASUS33XXX\",\n name: \"JPMorgan Chase Bank N.A.\",\n clearingCode: \"021000021\",\n address: [\n \"270 Park Avenue\",\n \"New York, NY 10017\"\n ]\n },\n beneficiaryCustomer: {\n account: \"998877665544\",\n name: \"Global Suppliers Inc\",\n address: [\n \"456 Supply Avenue\",\n \"New York, NY 10001\",\n \"United States\"\n ]\n },\n remittanceInformation: \"Invoice Payment for INV-2024-089 - Equipment Purchase\",\n regulatoryReporting: {\n code: \"BENEFRES\",\n country: \"US\",\n narrative: \"Payment for goods\"\n },\n senderToReceiverInformation: [\n \"Payment for invoice INV-2024-089\",\n \"Equipment and supplies purchase\",\n \"Net 30 terms - On time payment\"\n ],\n chargeDetails: \"OUR\"\n }\n }\n },\n {\n id: \"4\",\n created: \"2025-09-30 22:18\",\n accountNumber: \"778901234567\",\n amount: -2500.75,\n customer: \"Metro Business Group\",\n counterparty: \"Pacific Trading Co\",\n description: \"Vendor Payment\",\n transactionType: \"Ach Originator Debit\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-09-30 23:01\",\n isInbound: false\n },\n {\n id: \"5\",\n created: \"2025-09-30 21:05\",\n accountNumber: \"334455667788\",\n amount: 500.00,\n customer: \"Sunrise Enterprises\",\n counterparty: \"John Mitchell\",\n description: \"Contractor Payment\",\n transactionType: \"Ach Originator Credit\",\n status: \"PENDING\",\n processingStatus: \"CUSTOMER_REVIEW\",\n updated: \"2025-09-30 21:05\",\n isInbound: false\n },\n {\n id: \"6\",\n created: \"2025-09-30 19:30\",\n accountNumber: \"998877665544\",\n amount: -125000.00,\n customer: \"Real Estate Holdings\",\n counterparty: \"Property Management LLC\",\n description: \"Monthly Rent Payment\",\n transactionType: \"Wire Domestic Debit\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-09-30 20:15\",\n isInbound: false\n },\n {\n id: \"7\",\n created: \"2025-09-30 17:22\",\n accountNumber: \"556677889900\",\n amount: 3.00,\n customer: \"First National Bank\",\n counterparty: \"Sarah Johnson\",\n description: \"Wire Transfer Fee\",\n transactionType: \"Fee Wire Transaction\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-09-30 17:22\",\n isInbound: false\n },\n {\n id: \"8\",\n created: \"2025-09-30 15:40\",\n accountNumber: \"223344556677\",\n amount: 8750.50,\n customer: \"Innovation Labs Inc\",\n counterparty: \"Research Partners\",\n description: \"R&D Funding Transfer\",\n transactionType: \"Ach Originator Credit\",\n status: \"FAILED\",\n processingStatus: \"MANUAL_REVIEW\",\n updated: \"2025-09-30 16:10\",\n isInbound: false\n }\n]\n\nexport const mockTransactionTimeline = [\n {\n id: \"1\",\n action: \"Transaction Created\",\n user: \"System\",\n details: \"Transaction initiated via API\",\n status: \"Pending\",\n timestamp: \"2025-10-01 00:16:23\"\n },\n {\n id: \"2\",\n action: \"Validation Completed\",\n user: \"System\",\n details: \"All validation checks passed\",\n timestamp: \"2025-10-01 00:16:45\"\n },\n {\n id: \"3\",\n action: \"Assigned for Review\",\n user: \"approverdev\",\n details: \"Transaction assigned to compliance team\",\n status: \"In Progress\",\n timestamp: \"2025-10-01 00:17:12\"\n },\n {\n id: \"4\",\n action: \"Compliance Review\",\n user: \"Sarah Johnson\",\n details: \"AML and sanctions screening completed\",\n timestamp: \"2025-10-01 00:18:30\"\n },\n {\n id: \"5\",\n action: \"Approved\",\n user: \"Michael Chen\",\n details: \"Transaction approved for processing\",\n status: \"Closed\",\n timestamp: \"2025-10-01 00:19:45\"\n }\n]\n","import { useState } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { StatusBadge } from \"@/components/ui/status-badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { ChevronLeft, ChevronRight, Filter, Calendar as CalendarIcon } from \"lucide-react\"\nimport { mockTransactions, Transaction } from \"@/lib/mock-data/transaction-data\"\nimport { format } from \"date-fns\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, SheetFooter } from \"@/components/ui/sheet\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { Calendar } from \"@/components/ui/calendar\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\"\nimport { cn } from \"@/lib/utils\"\n\nconst TransactionHistory = () => {\n const navigate = useNavigate()\n const [currentPage, setCurrentPage] = useState(1)\n const [rowsPerPage, setRowsPerPage] = useState(100)\n const [filters, setFilters] = useState({\n accountNumber: \"\",\n product: \"\",\n customerId: \"\",\n counterpartyId: \"\",\n settlementFileName: \"\",\n originalFileName: \"\",\n requesterIpAddress: \"\",\n requesterUsername: \"\",\n wireFileHandle: \"\",\n paymentId: \"\",\n transactionType: \"\",\n transactionStatus: \"\",\n processingStatus: \"\",\n direction: \"\",\n minAmount: \"\",\n maxAmount: \"\",\n creationDateStart: undefined as Date | undefined,\n creationDateEnd: undefined as Date | undefined,\n postDateStart: undefined as Date | undefined,\n postDateEnd: undefined as Date | undefined\n })\n\n const handleFilterChange = (field: string, value: string | Date | undefined) => {\n setFilters(prev => ({ ...prev, [field]: value }))\n }\n\n const applyFilters = () => {\n // Apply filter logic here\n console.log(\"Applying filters:\", filters)\n }\n\n const resetFilters = () => {\n setFilters({\n accountNumber: \"\",\n product: \"\",\n customerId: \"\",\n counterpartyId: \"\",\n settlementFileName: \"\",\n originalFileName: \"\",\n requesterIpAddress: \"\",\n requesterUsername: \"\",\n wireFileHandle: \"\",\n paymentId: \"\",\n transactionType: \"\",\n transactionStatus: \"\",\n processingStatus: \"\",\n direction: \"\",\n minAmount: \"\",\n maxAmount: \"\",\n creationDateStart: undefined,\n creationDateEnd: undefined,\n postDateStart: undefined,\n postDateEnd: undefined\n })\n }\n\n // Pagination calculations\n const totalPages = Math.ceil(mockTransactions.length / rowsPerPage)\n const startIndex = (currentPage - 1) * rowsPerPage\n const endIndex = startIndex + rowsPerPage\n const paginatedTransactions = mockTransactions.slice(startIndex, endIndex)\n\n const handlePageChange = (newPage: number) => {\n if (newPage >= 1 && newPage <= totalPages) {\n setCurrentPage(newPage)\n }\n }\n\n const handleRowsPerPageChange = (value: number) => {\n setRowsPerPage(value)\n setCurrentPage(1)\n }\n\n const formatCurrency = (value: number) => {\n const formatted = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2\n }).format(value)\n return formatted\n }\n\n return (\n <div className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Fixed Header */}\n <div className=\"flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <div className=\"container mx-auto px-4 py-4 max-w-none\">\n <div className=\"flex items-center justify-between\">\n <h1 className=\"text-3xl font-bold text-foreground\">Transaction History</h1>\n <Sheet>\n <SheetTrigger asChild>\n <Button variant=\"outline\" className=\"gap-2\">\n <Filter className=\"h-4 w-4\" />\n Filters\n </Button>\n </SheetTrigger>\n <SheetContent side=\"right\" className=\"w-full sm:max-w-xl overflow-y-auto\">\n <SheetHeader>\n <SheetTitle>Transaction Filters</SheetTitle>\n </SheetHeader>\n \n <div className=\"space-y-6 py-6\">\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedInput\n label=\"Account Number\"\n value={filters.accountNumber}\n onChange={(e) => handleFilterChange(\"accountNumber\", e.target.value)}\n placeholder=\"Enter account number\"\n />\n\n <EnhancedSelect\n label=\"Product\"\n value={filters.product}\n onValueChange={(value) => handleFilterChange(\"product\", value)}\n placeholder=\"Select product\"\n options={[\n { value: \"wire\", label: \"Wire\" },\n { value: \"ach\", label: \"ACH\" },\n { value: \"check\", label: \"Check\" }\n ]}\n />\n </div>\n\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedInput\n label=\"Customer ID\"\n value={filters.customerId}\n onChange={(e) => handleFilterChange(\"customerId\", e.target.value)}\n placeholder=\"Enter customer ID\"\n />\n\n <EnhancedInput\n label=\"Counterparty ID\"\n value={filters.counterpartyId}\n onChange={(e) => handleFilterChange(\"counterpartyId\", e.target.value)}\n placeholder=\"Enter counterparty ID\"\n />\n </div>\n\n <EnhancedInput\n label=\"Settlement File Name\"\n value={filters.settlementFileName}\n onChange={(e) => handleFilterChange(\"settlementFileName\", e.target.value)}\n placeholder=\"Enter settlement file name\"\n />\n\n <EnhancedInput\n label=\"Original File Name\"\n value={filters.originalFileName}\n onChange={(e) => handleFilterChange(\"originalFileName\", e.target.value)}\n placeholder=\"Enter original file name\"\n />\n\n <EnhancedInput\n label=\"Requester IP Address\"\n value={filters.requesterIpAddress}\n onChange={(e) => handleFilterChange(\"requesterIpAddress\", e.target.value)}\n placeholder=\"Enter IP address\"\n />\n\n <EnhancedInput\n label=\"Requester Username\"\n value={filters.requesterUsername}\n onChange={(e) => handleFilterChange(\"requesterUsername\", e.target.value)}\n placeholder=\"Enter username\"\n />\n\n <EnhancedInput\n label=\"Wire File Handle\"\n value={filters.wireFileHandle}\n onChange={(e) => handleFilterChange(\"wireFileHandle\", e.target.value)}\n placeholder=\"Enter wire file handle\"\n />\n\n <EnhancedInput\n label=\"Payment ID\"\n value={filters.paymentId}\n onChange={(e) => handleFilterChange(\"paymentId\", e.target.value)}\n placeholder=\"Enter payment ID\"\n />\n\n <EnhancedSelect\n label=\"Transaction Type\"\n value={filters.transactionType}\n onValueChange={(value) => handleFilterChange(\"transactionType\", value)}\n placeholder=\"Select transaction type\"\n options={[\n { value: \"ach_credit\", label: \"ACH Credit\" },\n { value: \"ach_debit\", label: \"ACH Debit\" },\n { value: \"wire_domestic\", label: \"Wire Domestic\" },\n { value: \"wire_international\", label: \"Wire International\" }\n ]}\n />\n\n <EnhancedSelect\n label=\"Transaction Status\"\n value={filters.transactionStatus}\n onValueChange={(value) => handleFilterChange(\"transactionStatus\", value)}\n placeholder=\"Select transaction status\"\n options={[\n { value: \"PENDING\", label: \"Pending\" },\n { value: \"POSTED\", label: \"Posted\" },\n { value: \"FAILED\", label: \"Failed\" },\n { value: \"CANCELLED\", label: \"Cancelled\" }\n ]}\n />\n\n <EnhancedSelect\n label=\"Processing Status\"\n value={filters.processingStatus}\n onValueChange={(value) => handleFilterChange(\"processingStatus\", value)}\n placeholder=\"Select processing status\"\n options={[\n { value: \"processing\", label: \"Processing\" },\n { value: \"completed\", label: \"Completed\" },\n { value: \"error\", label: \"Error\" }\n ]}\n />\n\n <EnhancedSelect\n label=\"Direction\"\n value={filters.direction}\n onValueChange={(value) => handleFilterChange(\"direction\", value)}\n placeholder=\"Select direction\"\n options={[\n { value: \"credit\", label: \"Credit\" },\n { value: \"debit\", label: \"Debit\" }\n ]}\n />\n\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedInput\n label=\"Min Amount\"\n type=\"number\"\n value={filters.minAmount}\n onChange={(e) => handleFilterChange(\"minAmount\", e.target.value)}\n placeholder=\"0.00\"\n />\n\n <EnhancedInput\n label=\"Max Amount\"\n type=\"number\"\n value={filters.maxAmount}\n onChange={(e) => handleFilterChange(\"maxAmount\", e.target.value)}\n placeholder=\"0.00\"\n />\n </div>\n\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Creation Date Start</label>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !filters.creationDateStart && \"text-muted-foreground\"\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {filters.creationDateStart ? format(filters.creationDateStart, \"MM/dd/yyyy\") : <span>MM/DD/YYYY</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0 bg-background z-50\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={filters.creationDateStart}\n onSelect={(date) => handleFilterChange(\"creationDateStart\", date)}\n initialFocus\n className=\"pointer-events-auto\"\n />\n </PopoverContent>\n </Popover>\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Creation Date End</label>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !filters.creationDateEnd && \"text-muted-foreground\"\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {filters.creationDateEnd ? format(filters.creationDateEnd, \"MM/dd/yyyy\") : <span>MM/DD/YYYY</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0 bg-background z-50\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={filters.creationDateEnd}\n onSelect={(date) => handleFilterChange(\"creationDateEnd\", date)}\n initialFocus\n className=\"pointer-events-auto\"\n />\n </PopoverContent>\n </Popover>\n </div>\n </div>\n\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Post Date Start</label>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !filters.postDateStart && \"text-muted-foreground\"\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {filters.postDateStart ? format(filters.postDateStart, \"MM/dd/yyyy\") : <span>MM/DD/YYYY</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0 bg-background z-50\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={filters.postDateStart}\n onSelect={(date) => handleFilterChange(\"postDateStart\", date)}\n initialFocus\n className=\"pointer-events-auto\"\n />\n </PopoverContent>\n </Popover>\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Post Date End</label>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !filters.postDateEnd && \"text-muted-foreground\"\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {filters.postDateEnd ? format(filters.postDateEnd, \"MM/dd/yyyy\") : <span>MM/DD/YYYY</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0 bg-background z-50\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={filters.postDateEnd}\n onSelect={(date) => handleFilterChange(\"postDateEnd\", date)}\n initialFocus\n className=\"pointer-events-auto\"\n />\n </PopoverContent>\n </Popover>\n </div>\n </div>\n </div>\n\n <SheetFooter className=\"gap-2\">\n <Button variant=\"outline\" onClick={resetFilters}>\n Reset Filters\n </Button>\n <Button onClick={applyFilters}>\n Apply Filters\n </Button>\n </SheetFooter>\n </SheetContent>\n </Sheet>\n </div>\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-hidden\">\n <div className=\"container mx-auto px-4 h-full max-w-none flex flex-col\">\n <div className=\"flex-1 mt-4 rounded-lg border bg-card overflow-hidden flex flex-col\">\n <div className=\"flex-1 overflow-auto\">\n <table className=\"w-full table-fixed\">\n <colgroup>\n <col className=\"w-28\" />\n <col className=\"w-28\" />\n <col className=\"w-24\" />\n <col className=\"w-36\" />\n <col className=\"w-36\" />\n <col className=\"w-auto\" />\n <col className=\"w-36\" />\n <col className=\"w-24\" />\n <col className=\"w-28\" />\n </colgroup>\n <thead className=\"sticky top-0 bg-card z-10 shadow-sm\">\n <tr className=\"border-b\">\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Created</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Account Number</th>\n <th className=\"px-3 py-2 text-right text-xs font-medium bg-muted/50\">Amount</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Customer</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Counterparty</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Description</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Transaction Type</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Status</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Updated</th>\n </tr>\n </thead>\n <tbody>\n {paginatedTransactions.map((transaction) => (\n <tr \n key={transaction.id} \n onClick={() => navigate(`/transactions/${transaction.id}`)}\n className=\"border-b hover:bg-muted/50 transition-colors cursor-pointer\"\n >\n <td className=\"px-3 py-2 text-xs\">{transaction.created}</td>\n <td className=\"px-3 py-2 text-xs\">{transaction.accountNumber}</td>\n <td className=\"px-3 py-2 text-xs text-right\">\n <span className={transaction.amount < 0 ? \"text-destructive\" : \"\"}>\n {formatCurrency(transaction.amount)}\n </span>\n </td>\n <td className=\"px-3 py-2\">\n <Button variant=\"link\" className=\"h-auto p-0 font-normal text-xs\">\n {transaction.customer}\n </Button>\n </td>\n <td className=\"px-3 py-2\">\n <Button variant=\"link\" className=\"h-auto p-0 font-normal text-xs\">\n {transaction.counterparty}\n </Button>\n </td>\n <td className=\"px-3 py-2 text-xs truncate\">{transaction.description}</td>\n <td className=\"px-3 py-2\">\n <Badge variant=\"outline\" className=\"font-normal whitespace-nowrap text-xs\">\n {transaction.transactionType}\n </Badge>\n </td>\n <td className=\"px-3 py-2\">\n <StatusBadge status={transaction.status} />\n </td>\n <td className=\"px-3 py-2 text-xs\">{transaction.updated}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n \n {/* Pagination Footer */}\n <div className=\"flex-none border-t bg-background py-3 px-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">Rows per page:</span>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 gap-1\">\n {rowsPerPage}\n <ChevronRight className=\"h-4 w-4 rotate-90\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"bg-background z-50\">\n <DropdownMenuItem onClick={() => handleRowsPerPageChange(100)}>\n 100\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => handleRowsPerPageChange(200)}>\n 200\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => handleRowsPerPageChange(500)}>\n 500\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n\n <div className=\"flex items-center gap-4\">\n <span className=\"text-sm text-muted-foreground\">\n Page {currentPage} of {totalPages}\n </span>\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => handlePageChange(currentPage - 1)}\n disabled={currentPage === 1}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => handlePageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default TransactionHistory\n","import { useState } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { FormCard } from \"@/components/ui/form-card\"\nimport { Button } from \"@/components/ui/button\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from \"@/components/ui/dialog\"\nimport { useForm } from \"react-hook-form\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { z } from \"zod\"\nimport { ArrowLeftRight, Settings, Building2, Zap, Search, CheckCircle2, XCircle, AlertCircle, Edit } from \"lucide-react\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\nimport { Controller } from \"react-hook-form\"\nimport { toast } from \"sonner\"\nimport { cn } from \"@/lib/utils\"\n\nconst newTransactionSchema = z.object({\n transactionType: z.string().min(1, \"Transaction type is required\"),\n accountNumber: z.string().min(1, \"Account number is required\"),\n counterpartyName: z.string().min(1, \"Counterparty name is required\"),\n amount: z.string().min(1, \"Amount is required\"),\n currency: z.string().min(1, \"Currency is required\"),\n description: z.string().optional(),\n certifyInformation: z.boolean().refine(val => val === true, {\n message: \"You must certify the information is correct\"\n }),\n})\n\ntype NewTransactionForm = z.infer<typeof newTransactionSchema>\n\nconst TRANSACTION_TYPES = [\n { value: \"transfer\", label: \"Transfer\", icon: ArrowLeftRight },\n { value: \"adjustment\", label: \"Adjustment\", icon: Settings },\n { value: \"ach\", label: \"ACH\", icon: Building2 },\n { value: \"wire\", label: \"Wire\", icon: Zap },\n]\n\nconst CURRENCY_OPTIONS = [\n { value: \"USD\", label: \"USD - US Dollar\" },\n { value: \"EUR\", label: \"EUR - Euro\" },\n { value: \"GBP\", label: \"GBP - British Pound\" },\n { value: \"JPY\", label: \"JPY - Japanese Yen\" },\n { value: \"CAD\", label: \"CAD - Canadian Dollar\" },\n { value: \"AUD\", label: \"AUD - Australian Dollar\" },\n { value: \"CHF\", label: \"CHF - Swiss Franc\" },\n { value: \"CNY\", label: \"CNY - Chinese Yuan\" },\n]\n\n// Mock account data - would come from API in real app\nconst mockAccountData = {\n accountNumber: \"****1234\",\n accountName: \"Business Checking\",\n accountType: \"Checking\",\n balance: \"$125,450.00\",\n customerName: \"Acme Corporation\",\n customerId: \"CUST-001\",\n customerType: \"Business\",\n}\n\n// Mock counterparty data - would come from API in real app\nconst mockCounterpartyData = {\n counterpartyName: \"Global Tech Solutions Inc.\",\n counterpartyId: \"CP-5678\",\n counterpartyType: \"Business\",\n status: \"Active\",\n taxId: \"98-7654321\",\n primaryContact: \"Sarah Johnson\",\n contactEmail: \"sarah.johnson@globaltech.com\",\n contactPhone: \"+1 (555) 987-6543\",\n address: \"456 Innovation Drive, San Francisco, CA 94105\",\n}\n\nexport default function NewTransaction() {\n const navigate = useNavigate()\n const [accountLookedUp, setAccountLookedUp] = useState(false)\n const [accountData, setAccountData] = useState<typeof mockAccountData | null>(null)\n const [counterpartyLookedUp, setCounterpartyLookedUp] = useState(false)\n const [counterpartyData, setCounterpartyData] = useState<typeof mockCounterpartyData | null>(null)\n const [confirmationOpen, setConfirmationOpen] = useState(false)\n const [submissionStatus, setSubmissionStatus] = useState<\"success\" | \"error\" | null>(null)\n const [errorMessage, setErrorMessage] = useState(\"\")\n const [transactionId, setTransactionId] = useState(\"\")\n\n const form = useForm<NewTransactionForm>({\n resolver: zodResolver(newTransactionSchema),\n defaultValues: {\n transactionType: \"\",\n accountNumber: \"\",\n counterpartyName: \"\",\n amount: \"\",\n currency: \"USD\",\n description: \"\",\n certifyInformation: false,\n },\n })\n\n const transactionType = form.watch(\"transactionType\")\n const accountNumber = form.watch(\"accountNumber\")\n const counterpartyName = form.watch(\"counterpartyName\")\n const amount = form.watch(\"amount\")\n\n const handleAccountLookup = () => {\n const accNum = form.getValues(\"accountNumber\")\n if (!accNum) {\n toast.error(\"Please enter an account number\")\n return\n }\n // Simulate account lookup\n setAccountData(mockAccountData)\n setAccountLookedUp(true)\n toast.success(\"Account found\")\n }\n\n const handleCounterpartyLookup = () => {\n const cpName = form.getValues(\"counterpartyName\")\n if (!cpName) {\n toast.error(\"Please enter a counterparty name\")\n return\n }\n // Simulate counterparty lookup\n setCounterpartyData(mockCounterpartyData)\n setCounterpartyLookedUp(true)\n toast.success(\"Counterparty found\")\n }\n\n const handleEditAccount = () => {\n setAccountLookedUp(false)\n setAccountData(null)\n // Reset dependent sections\n form.setValue(\"transactionType\", \"\")\n setCounterpartyLookedUp(false)\n setCounterpartyData(null)\n form.setValue(\"counterpartyName\", \"\")\n form.setValue(\"amount\", \"\")\n form.setValue(\"description\", \"\")\n }\n\n const handleEditCounterparty = () => {\n setCounterpartyLookedUp(false)\n setCounterpartyData(null)\n // Reset dependent sections\n form.setValue(\"amount\", \"\")\n form.setValue(\"description\", \"\")\n }\n\n const handleSubmit = () => {\n const data = form.getValues()\n \n if (!data.transactionType || !data.accountNumber || !data.counterpartyName || !data.amount) {\n toast.error(\"Please complete all required fields\")\n return\n }\n\n if (!accountLookedUp || !counterpartyLookedUp) {\n toast.error(\"Please lookup both account and counterparty\")\n return\n }\n \n // Simulate transaction processing with random success/failure\n const amount = parseFloat(data.amount)\n const balance = 125450 // Current balance from mock data\n \n // Simulate different error scenarios\n const hasError = Math.random() > 0.7 // 30% chance of error for demo\n \n if (hasError) {\n const errorScenarios = [\n \"Insufficient funds. Current balance: $125,450.00, Required: $\" + amount.toFixed(2),\n \"Transaction limit exceeded. Daily limit: $50,000.00\",\n \"Counterparty account is temporarily unavailable. Please try again later.\",\n \"Invalid routing number for the selected transaction type.\"\n ]\n setSubmissionStatus(\"error\")\n setErrorMessage(errorScenarios[Math.floor(Math.random() * errorScenarios.length)])\n setConfirmationOpen(true)\n } else {\n // Success scenario\n const txId = \"TXN-\" + Math.random().toString(36).substr(2, 9).toUpperCase()\n setTransactionId(txId)\n setSubmissionStatus(\"success\")\n setConfirmationOpen(true)\n }\n }\n\n const handleConfirmationClose = () => {\n setConfirmationOpen(false)\n if (submissionStatus === \"success\") {\n navigate(\"/transactions/history\")\n }\n }\n\n const handleCancel = () => {\n navigate(\"/dashboard\")\n }\n\n const accountDataGrid = accountData ? [\n {\n title: \"Account Information\",\n items: [\n { label: \"Account Number\", value: accountData.accountNumber },\n { label: \"Account Name\", value: accountData.accountName },\n { label: \"Account Type\", value: accountData.accountType },\n { label: \"Balance\", value: accountData.balance },\n { label: \"Customer Name\", value: accountData.customerName },\n { label: \"Customer ID\", value: accountData.customerId },\n ]\n }\n ] : []\n\n const counterpartyDataGrid = counterpartyData ? [\n {\n title: \"Counterparty Information\",\n items: [\n { label: \"Counterparty Name\", value: counterpartyData.counterpartyName },\n { label: \"Counterparty ID\", value: counterpartyData.counterpartyId },\n { label: \"Type\", value: counterpartyData.counterpartyType },\n { label: \"Status\", value: counterpartyData.status },\n { label: \"Tax ID\", value: counterpartyData.taxId },\n { label: \"Primary Contact\", value: counterpartyData.primaryContact },\n { label: \"Contact Email\", value: counterpartyData.contactEmail },\n { label: \"Contact Phone\", value: counterpartyData.contactPhone },\n { label: \"Address\", value: counterpartyData.address },\n ]\n }\n ] : []\n\n const reviewData = [\n {\n title: \"Transaction Summary\",\n items: [\n { label: \"Transaction Type\", value: TRANSACTION_TYPES.find(t => t.value === transactionType)?.label || \"-\" },\n { label: \"Account Number\", value: accountNumber || \"-\" },\n { label: \"Counterparty\", value: counterpartyName || \"-\" },\n { label: \"Amount\", value: amount ? `$${amount}` : \"-\" },\n { label: \"Description\", value: form.watch(\"description\") || \"N/A\" },\n ]\n }\n ]\n\n return (\n <PageLayout\n title=\"New Transaction\"\n >\n <div className=\"max-w-4xl mx-auto space-y-6\">\n <FormProvider form={form}>\n <form onSubmit={(e) => e.preventDefault()}>\n {/* Account Lookup */}\n {!accountLookedUp ? (\n <FormCard \n title=\"Account Lookup\" \n variant=\"default\"\n >\n <div className=\"flex gap-3 items-start w-full\">\n <div className=\"flex-1\">\n <FormInput\n name=\"accountNumber\"\n placeholder=\"Enter account number\"\n />\n </div>\n <Button \n onClick={handleAccountLookup} \n disabled={!accountNumber}\n className=\"shrink-0 mt-0 w-48\"\n >\n <Search className=\"h-4 w-4 mr-2\" />\n Lookup Account\n </Button>\n </div>\n </FormCard>\n ) : (\n /* Account Information (Read-only) */\n <FormCard \n title=\"Account Information\" \n variant=\"subtle\"\n headerActions={\n <div className=\"flex items-center gap-2\">\n <CheckCircle2 className=\"h-5 w-5 text-success\" />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleEditAccount}\n >\n <Edit className=\"h-4 w-4 mr-1\" />\n Edit\n </Button>\n </div>\n }\n >\n <DataGrid data={accountDataGrid} columns={2} />\n </FormCard>\n )}\n\n {/* Transaction Type Selection */}\n <FormCard \n title=\"Transaction Type\" \n variant=\"default\"\n className={cn(!accountLookedUp && \"opacity-50 pointer-events-none\")}\n >\n <div className=\"grid grid-cols-2 lg:grid-cols-4 gap-3 lg:gap-4\">\n {TRANSACTION_TYPES.map((type) => {\n const Icon = type.icon\n const isSelected = transactionType === type.value\n return (\n <button\n key={type.value}\n type=\"button\"\n onClick={() => form.setValue(\"transactionType\", type.value)}\n disabled={!accountLookedUp}\n className={cn(\n \"flex flex-col items-center justify-center p-4 lg:p-3 rounded-lg border-2 transition-all\",\n \"hover:border-primary/50 hover:shadow-md\",\n isSelected\n ? \"border-primary bg-primary/5 shadow-sm\"\n : \"border-border bg-card\"\n )}\n >\n <Icon className={cn(\n \"h-6 w-6 lg:h-5 lg:w-5 mb-2\",\n isSelected ? \"text-primary\" : \"text-muted-foreground\"\n )} />\n <span className={cn(\n \"text-sm font-medium\",\n isSelected ? \"text-primary\" : \"text-foreground\"\n )}>\n {type.label}\n </span>\n </button>\n )\n })}\n </div>\n </FormCard>\n\n {/* Counterparty Lookup */}\n {!counterpartyLookedUp ? (\n <FormCard \n title=\"Counterparty Lookup\" \n variant=\"default\"\n className={cn(!transactionType && \"opacity-50 pointer-events-none\")}\n >\n <div className=\"flex gap-3 items-start w-full\">\n <div className=\"flex-1\">\n <FormInput\n name=\"counterpartyName\"\n placeholder=\"Enter counterparty name\"\n disabled={!transactionType}\n />\n </div>\n <Button \n onClick={handleCounterpartyLookup} \n disabled={!transactionType || !counterpartyName}\n className=\"shrink-0 mt-0 w-48\"\n >\n <Search className=\"h-4 w-4 mr-2\" />\n Lookup Counterparty\n </Button>\n </div>\n </FormCard>\n ) : (\n /* Counterparty Information (Read-only) */\n <FormCard \n title=\"Counterparty Information\" \n variant=\"subtle\"\n headerActions={\n <div className=\"flex items-center gap-2\">\n <CheckCircle2 className=\"h-5 w-5 text-success\" />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleEditCounterparty}\n >\n <Edit className=\"h-4 w-4 mr-1\" />\n Edit\n </Button>\n </div>\n }\n >\n <DataGrid data={counterpartyDataGrid} columns={2} />\n </FormCard>\n )}\n\n {/* Transaction Details */}\n <FormCard \n title=\"Transaction Details\" \n variant=\"default\"\n className={cn(!counterpartyLookedUp && \"opacity-50 pointer-events-none\")}\n >\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-1 sm:grid-cols-[1fr_auto] gap-4\">\n <FormInput\n name=\"amount\"\n label=\"Amount\"\n placeholder=\"0.00\"\n type=\"number\"\n disabled={!counterpartyLookedUp}\n />\n <FormSelect\n name=\"currency\"\n label=\"Currency\"\n options={CURRENCY_OPTIONS}\n disabled={!counterpartyLookedUp}\n className=\"w-48\"\n />\n </div>\n <FormInput\n name=\"description\"\n label=\"Description (Optional)\"\n placeholder=\"Enter transaction description\"\n disabled={!counterpartyLookedUp}\n />\n </div>\n </FormCard>\n\n {/* Review Summary */}\n <FormCard \n title=\"Review & Submit\" \n variant=\"default\"\n >\n <div className=\"space-y-6\">\n <DataGrid data={reviewData} columns={2} />\n \n {/* Certification Checkbox */}\n <div className=\"bg-muted/30 rounded-lg p-4 border border-border/50\">\n <Controller\n name=\"certifyInformation\"\n control={form.control}\n render={({ field }) => (\n <div className=\"space-y-2\">\n <div className=\"flex items-start gap-3\">\n <Checkbox\n id=\"certifyInformation\"\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n <label\n htmlFor=\"certifyInformation\"\n className=\"text-sm font-medium leading-relaxed cursor-pointer select-none\"\n >\n I certify that all information entered is correct and accurate to the best of my knowledge\n </label>\n </div>\n {form.formState.errors.certifyInformation && (\n <p className=\"text-xs text-destructive ml-7\">\n {form.formState.errors.certifyInformation.message}\n </p>\n )}\n </div>\n )}\n />\n </div>\n \n <div className=\"flex gap-3 justify-end pt-4 border-t border-border\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handleCancel}\n className=\"w-32\"\n >\n Cancel\n </Button>\n <Button\n type=\"button\"\n onClick={handleSubmit}\n className=\"w-48\"\n disabled={!transactionType || !accountNumber || !counterpartyName || !amount || !form.watch(\"certifyInformation\")}\n >\n <CheckCircle2 className=\"h-4 w-4 mr-2\" />\n Submit Transaction\n </Button>\n </div>\n </div>\n </FormCard>\n </form>\n </FormProvider>\n\n {/* Confirmation Dialog */}\n <Dialog open={confirmationOpen} onOpenChange={setConfirmationOpen}>\n <DialogContent className=\"sm:max-w-md\">\n <DialogHeader>\n <div className=\"flex items-center gap-3 mb-2\">\n {submissionStatus === \"success\" ? (\n <div className=\"h-12 w-12 rounded-full bg-success/10 flex items-center justify-center\">\n <CheckCircle2 className=\"h-6 w-6 text-success\" />\n </div>\n ) : (\n <div className=\"h-12 w-12 rounded-full bg-destructive/10 flex items-center justify-center\">\n <XCircle className=\"h-6 w-6 text-destructive\" />\n </div>\n )}\n <DialogTitle className=\"text-xl\">\n {submissionStatus === \"success\" ? \"Transaction Successful\" : \"Transaction Failed\"}\n </DialogTitle>\n </div>\n <DialogDescription className=\"text-left\">\n {submissionStatus === \"success\" ? (\n <div className=\"space-y-4 pt-2\">\n <p className=\"text-foreground\">Your transaction has been successfully submitted and is being processed.</p>\n <div className=\"bg-muted/50 rounded-lg p-4 space-y-2\">\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Transaction ID:</span>\n <span className=\"font-mono font-medium\">{transactionId}</span>\n </div>\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Amount:</span>\n <span className=\"font-medium\">${amount}</span>\n </div>\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Type:</span>\n <span className=\"font-medium\">{TRANSACTION_TYPES.find(t => t.value === transactionType)?.label}</span>\n </div>\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Counterparty:</span>\n <span className=\"font-medium\">{counterpartyName}</span>\n </div>\n </div>\n <div className=\"flex items-start gap-2 p-3 bg-blue-500/10 border border-blue-500/20 rounded-lg\">\n <AlertCircle className=\"h-5 w-5 text-blue-500 mt-0.5 flex-shrink-0\" />\n <p className=\"text-sm text-blue-700 dark:text-blue-300\">\n You will receive a confirmation email once the transaction is completed.\n </p>\n </div>\n </div>\n ) : (\n <div className=\"space-y-4 pt-2\">\n <div className=\"flex items-start gap-2 p-4 bg-destructive/10 border border-destructive/20 rounded-lg\">\n <XCircle className=\"h-5 w-5 text-destructive mt-0.5 flex-shrink-0\" />\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium text-destructive\">Error Processing Transaction</p>\n <p className=\"text-sm text-muted-foreground\">{errorMessage}</p>\n </div>\n </div>\n <p className=\"text-sm text-muted-foreground\">\n Please review the error message above and try again. If the problem persists, contact support.\n </p>\n </div>\n )}\n </DialogDescription>\n </DialogHeader>\n <DialogFooter className=\"sm:justify-end gap-2\">\n {submissionStatus === \"error\" && (\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => setConfirmationOpen(false)}\n >\n Try Again\n </Button>\n )}\n <Button\n type=\"button\"\n onClick={handleConfirmationClose}\n variant={submissionStatus === \"success\" ? \"default\" : \"outline\"}\n >\n {submissionStatus === \"success\" ? \"View Transactions\" : \"Close\"}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </div>\n </PageLayout>\n )\n}\n","import { useParams, useNavigate } from \"react-router-dom\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { FormCard } from \"@/components/ui/form-card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { mockTransactions } from \"@/lib/mock-data/transaction-data\"\nimport { mockTransactionTimeline } from \"@/lib/mock-data/transaction-data\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { AlertTimeline } from \"@/components/alerts/AlertTimeline\"\nimport { cn } from \"@/lib/utils\"\nimport { WireDetailsSection } from \"@/components/transaction/WireDetailsSection\"\nimport { ACHDetailsSection } from \"@/components/transaction/ACHDetailsSection\"\nimport { TransactionTypeBadge } from \"@/components/ui/transaction-type-badge\"\n\nconst TransactionDetail = () => {\n const { id } = useParams()\n const navigate = useNavigate()\n \n const transaction = mockTransactions.find(t => t.id === id)\n \n if (!transaction) {\n return (\n <div className=\"container mx-auto px-4 py-8\">\n <div className=\"text-center\">\n <h1 className=\"text-2xl font-bold mb-2\">Transaction Not Found</h1>\n <p className=\"text-muted-foreground mb-4\">The transaction #{id} could not be found.</p>\n <Button onClick={() => navigate(\"/transactions/history\")}>\n Back to Transaction History\n </Button>\n </div>\n </div>\n )\n }\n\n const getStatusColor = (status: string) => {\n switch (status) {\n case \"POSTED\":\n return \"text-success\"\n case \"PENDING\":\n return \"text-warning\"\n case \"FAILED\":\n return \"text-destructive\"\n case \"CANCELLED\":\n return \"text-muted-foreground\"\n default:\n return \"\"\n }\n }\n\n const getStatusVariant = (status: string): any => {\n switch (status) {\n case \"POSTED\":\n return \"success\"\n case \"PENDING\":\n return \"warning\"\n case \"FAILED\":\n return \"destructive\"\n case \"CANCELLED\":\n return \"outline\"\n default:\n return \"outline\"\n }\n }\n\n const getProcessingStatusVariant = (status: string): any => {\n switch (status) {\n case \"CONFIRMED\":\n return \"success\"\n case \"SENT\":\n return \"success\"\n case \"SUBMITTED\":\n return \"warning\"\n case \"CUSTOMER_REVIEW\":\n return \"warning\"\n case \"MANUAL_REVIEW\":\n return \"warning\"\n case \"INITIATED\":\n return \"outline\"\n default:\n return \"outline\"\n }\n }\n\n const formatCurrency = (value: number) => {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2\n }).format(value)\n }\n\n const isWireTransfer = transaction.transactionType.toLowerCase().includes('wire')\n const isACHTransfer = transaction.transactionType.toLowerCase().includes('ach')\n\n return (\n <PageLayout \n title={\n <div className=\"flex items-center gap-3\">\n <span className={cn(\n \"font-semibold\",\n transaction.amount < 0 ? \"text-destructive\" : \"text-success\"\n )}>\n {formatCurrency(transaction.amount)}\n </span>\n <TransactionTypeBadge \n transactionType={transaction.transactionType} \n isInbound={transaction.isInbound} \n />\n <Badge variant={getStatusVariant(transaction.status)}>{transaction.status}</Badge>\n <Badge variant={getProcessingStatusVariant(transaction.processingStatus)}>{transaction.processingStatus}</Badge>\n </div>\n }\n maxWidth=\"full\"\n actions={[\n {\n label: \"Return\",\n variant: \"outline\",\n onClick: () => console.log(\"Return transaction\")\n },\n {\n label: \"Cancel\",\n variant: \"default\",\n onClick: () => console.log(\"Cancel transaction\")\n }\n ]}\n >\n {/* 3-Column Layout: Left section with cards, Timeline on Right */}\n <div className=\"flex flex-col lg:flex-row items-start gap-6\">\n {/* Left Section: Transaction cards */}\n <div className=\"flex-1 space-y-6\">\n {/* Transaction Information */}\n <FormCard title=\"Details\">\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-x-8 gap-y-4\">\n <InfoField \n label=\"Account Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {transaction.accountNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField \n label=\"Customer\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {transaction.customer}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Description\" value={transaction.description} layout=\"horizontal\" />\n <InfoField \n label=\"Counterparty\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {transaction.counterparty}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Post Date\" value={transaction.created.split(' ')[0]} layout=\"horizontal\" />\n <InfoField label=\"OFAC ID\" value={<Button variant=\"link\" className=\"h-auto p-0 text-sm\">18323208</Button>} layout=\"horizontal\" />\n <InfoField label=\"Original Filename\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Loaded From File\" value=\"iso21130757012764355B7.xml.126534273Q299\" layout=\"horizontal\" />\n <InfoField label=\"Payment ID\" value={transaction.id} layout=\"horizontal\" />\n <InfoField label=\"Linked Payment ID\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Pending until Date\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Further Credit To\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Balance Available Date\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Requester Username\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Requester IP Address\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Settlement Filename\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Duplicate of Payment ID\" value=\"-\" layout=\"horizontal\" />\n <InfoField \n label=\"Product ID\" \n value={<Button variant=\"link\" className=\"h-auto p-0 text-sm\">130</Button>}\n layout=\"horizontal\"\n />\n <InfoField label=\"Returned In File\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Alerts\" value=\"-\" layout=\"horizontal\" />\n </div>\n </FormCard>\n\n {/* ACH or Wire Details */}\n {isACHTransfer && transaction.achDetails && (\n <ACHDetailsSection data={transaction.achDetails} />\n )}\n \n {isWireTransfer && transaction.wireDetails && (\n <WireDetailsSection data={transaction.wireDetails} />\n )}\n </div>\n\n {/* Right Section: Timeline Column */}\n <div className=\"lg:w-64\">\n <FormCard title=\"Transaction Timeline\">\n <AlertTimeline events={mockTransactionTimeline} />\n </FormCard>\n </div>\n </div>\n </PageLayout>\n )\n}\n\nexport default TransactionDetail\n","import * as React from \"react\"\nimport { Container } from \"@/components/ui/container\"\nimport { Stack } from \"@/components/ui/stack\"\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\"\nimport { UIKitShowcase } from \"@/components/ui-kit/showcase\"\nimport { PatternLibrary } from \"@/components/ui-kit/pattern-library\"\nimport { DashboardDemo } from \"@/components/ui-kit/dashboard-demo\"\nimport { Breadcrumb } from \"@/components/ui/breadcrumb\"\n\nexport default function UIKit() {\n const breadcrumbs = [\n { label: \"UI Kit\" }\n ]\n\n return (\n <div className=\"min-h-screen bg-gradient-subtle\">\n <Container size=\"xl\">\n <Stack spacing=\"lg\">\n <Breadcrumb items={breadcrumbs} />\n \n <div>\n <h1 className=\"text-3xl font-bold text-foreground\">UI Kit</h1>\n <p className=\"text-muted-foreground mt-2\">\n Complete collection of reusable components, layouts, and patterns\n </p>\n </div>\n\n <Tabs defaultValue=\"showcase\" className=\"w-full\">\n <TabsList className=\"grid w-full grid-cols-3\">\n <TabsTrigger value=\"showcase\">Component Showcase</TabsTrigger>\n <TabsTrigger value=\"patterns\">Pattern Library</TabsTrigger>\n <TabsTrigger value=\"demo\">Dashboard Demo</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"showcase\" className=\"mt-6\">\n <UIKitShowcase />\n </TabsContent>\n\n <TabsContent value=\"patterns\" className=\"mt-6\">\n <PatternLibrary />\n </TabsContent>\n\n <TabsContent value=\"demo\" className=\"mt-6\">\n <DashboardDemo />\n </TabsContent>\n </Tabs>\n </Stack>\n </Container>\n </div>\n )\n}"]}
1
+ {"version":3,"sources":["../src/lib/utils.ts","../src/components/ui/card.tsx","../src/components/ui/form-card.tsx","../src/components/ui/badge.tsx","../src/components/alerts/AlertTimeline.tsx","../src/components/ui/button.tsx","../src/components/ui/enhanced-textarea.tsx","../src/components/ui/enhanced-select.tsx","../src/hooks/use-toast.ts","../src/components/alerts/AlertNotes.tsx","../src/components/ui/enhanced-input.tsx","../src/components/alerts/AlertDocuments.tsx","../src/components/ui/info-field.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/table.tsx","../src/components/ui/dialog.tsx","../src/components/ui/json-viewer.tsx","../src/components/alerts/OFACAlertView.tsx","../src/components/alerts/AlertDetailRouter.tsx","../src/lib/constants.ts","../src/lib/utils/alert-utils.ts","../src/components/alerts/AlertHeaderControls.tsx","../src/components/alerts/ContextSection.tsx","../src/components/ui/form-provider.tsx","../src/components/ui/form-input.tsx","../src/components/ui/form-select.tsx","../src/hooks/useFormWithEditState.ts","../src/lib/schemas/alert-schemas.ts","../src/components/alerts/ResolveAlertDialog.tsx","../src/hooks/use-mobile.tsx","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/sidebar.tsx","../src/components/app-sidebar.tsx","../src/components/MainLayout.tsx","../src/hooks/useEditState.ts","../src/components/ui/editable-form-card.tsx","../src/lib/schemas/banking-schemas.ts","../src/lib/mock-data/banking-data.ts","../src/components/form-sections/ACHBankCard.tsx","../src/components/form-sections/ACHBasicInfoCard.tsx","../src/components/ui/responsive-grid.tsx","../src/lib/schemas/counterparty-schemas.ts","../src/lib/schemas/wire-schemas.ts","../src/lib/schemas/business-schemas.ts","../src/components/form-sections/BankAddressCard.tsx","../src/components/form-sections/ACHTransferSection.tsx","../src/components/form-sections/AddressForm.tsx","../src/components/form-sections/BankingDetailsCard.tsx","../src/components/ui/counterparty-type-badge.tsx","../src/components/ui/status-badge.tsx","../src/components/form-sections/BasicInfoCard.tsx","../src/lib/mock-data/counterparty-data.ts","../src/components/form-sections/CounterpartyProfileCard.tsx","../src/components/form-sections/CounterpartyRecordsCard.tsx","../src/components/form-sections/BasicInfoSection.tsx","../src/components/form-sections/BeneficiaryAddress.tsx","../src/components/ui/data-grid.tsx","../src/components/form-sections/BeneficiaryDomesticWire.tsx","../src/components/form-sections/BeneficiaryCard.tsx","../src/lib/mock-data/business-data.ts","../src/components/form-sections/BusinessProfileCard.tsx","../src/components/form-sections/BusinessStatusCard.tsx","../src/components/form-sections/ContactInfoCard.tsx","../src/components/ui/label.tsx","../src/components/form-sections/CounterpartyBasicInfo.tsx","../src/components/ui/form-section.tsx","../src/components/form-sections/IntermediaryFI.tsx","../src/components/form-sections/IntermediaryFIAddress.tsx","../src/lib/mock-data/wire-data.ts","../src/components/form-sections/IntermediaryCard.tsx","../src/components/form-sections/OriginatorFI.tsx","../src/components/form-sections/OriginatorFIAddress.tsx","../src/components/form-sections/OriginatorCard.tsx","../src/components/form-sections/ReceiverCard.tsx","../src/components/form-sections/PaymentInformationSection.tsx","../src/components/form-sections/WireTransferSection.tsx","../src/components/ui/container.tsx","../src/components/ui/stack.tsx","../src/components/ui/breadcrumb.tsx","../src/components/layouts/list-page.tsx","../src/lib/mock-data/statement-data.ts","../src/components/statement/StatementHeader.tsx","../src/components/ui/calendar.tsx","../src/components/ui/popover.tsx","../src/components/ui/date-picker.tsx","../src/components/ui/data-table.tsx","../src/components/statement/StatementView.tsx","../src/components/transaction/ACHDetailsSection.tsx","../src/components/transaction/WireDetailsSection.tsx","../src/components/ui/account-card.tsx","../src/components/ui/business-type-badge.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/page-layout.tsx","../src/components/ui/detail-page-layout.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/editable-info-field.tsx","../src/components/ui/entity-card.tsx","../src/components/ui/form-field.tsx","../src/components/ui/metric-card.tsx","../src/components/ui/sonner.tsx","../src/components/ui/tabs.tsx","../src/components/ui/toast.tsx","../src/components/ui/transaction-type-badge.tsx","../src/lib/mock-data.tsx","../src/components/ui-kit/dashboard-demo.tsx","../src/components/ui-kit/pattern-library.tsx","../src/components/ui-kit/showcase.tsx","../src/lib/mock-data/alert-data.ts","../src/hooks/useAlertDetail.ts","../src/pages/alerts/AlertDetail.tsx","../src/pages/alerts/Alerts.tsx","../src/lib/mock-data/businesses-list-data.ts","../src/pages/business/Businesses.tsx","../src/pages/business/BusinessDetail.tsx","../src/pages/business/Create.tsx","../src/pages/Cases.tsx","../src/pages/counterparty/Create.tsx","../src/pages/counterparty/DomesticWire.tsx","../src/pages/counterparty/Manage.tsx","../src/pages/Dashboard.tsx","../src/pages/NotFound.tsx","../src/pages/Statement.tsx","../src/lib/mock-data/transaction-data.ts","../src/pages/TransactionHistory.tsx","../src/pages/transactions/NewTransaction.tsx","../src/pages/transactions/TransactionDetail.tsx","../src/pages/UIKit.tsx"],"names":["React","React2","jsx","cva","getStatusColor","jsxs","React3","React4","React5","toast","props","React6","useState","React7","createPortal","X","Eye","Trash2","React8","React9","React10","Check","ChevronDown","ChevronRight","Fragment","RHFFormProvider","useFormContext","Controller","useEffect","React11","React12","SheetPrimitive","React13","React14","open","Slot","FileText","RefreshCw","Upload","useCallback","React16","Edit","z","React17","gridClasses","Building2","User","Shield","Icon","CheckCircle","XCircle","gapClasses","React18","columns","Circle","UserPlus","React19","React20","spacing","ChevronUp","Plus","React21","spacingClasses","React22","React23","NavLink","React24","React25","React26","AlertCircle","Download","CreditCard","React27","typeConfig","Building","Briefcase","Users","React28","React29","React30","React31","React32","TrendingUp","React33","Sonner","React34","React35","React36","badgeVariants","React37","Copy","React38","useMemo","useNavigate","getTypeBadgeVariant","Filter","useParams","Create_default","useLocation","ChevronLeft","ArrowLeftRight","Settings","Zap","useForm","zodResolver","amount","Search","CheckCircle2"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst cardVariants = cva(\n \"rounded-lg border bg-card text-card-foreground transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"shadow-sm\",\n elevated: \"shadow-md hover:shadow-lg\",\n outlined: \"border-2 shadow-none\",\n ghost: \"border-transparent shadow-none bg-transparent\",\n subtle: \"border-border/75 shadow-none\"\n },\n size: {\n sm: \"p-3\",\n md: \"p-4\", \n lg: \"p-6\",\n none: \"p-0\"\n },\n fullHeight: {\n true: \"h-full flex flex-col\",\n false: \"\"\n },\n interactive: {\n true: \"cursor-pointer hover:shadow-md hover:scale-[1.02]\",\n false: \"\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"none\",\n fullHeight: false,\n interactive: false\n }\n }\n)\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, size, fullHeight, interactive, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(cardVariants({ variant, size, fullHeight, interactive }), className)}\n {...props}\n />\n )\n)\nCard.displayName = \"Card\"\n\nconst cardHeaderVariants = cva(\n \"flex flex-col space-y-1.5\",\n {\n variants: {\n size: {\n sm: \"px-3 pt-3 pb-2\",\n md: \"px-4 pt-4 pb-3\",\n lg: \"px-6 pt-6 pb-4\"\n },\n align: {\n start: \"items-start\",\n center: \"items-center\", \n end: \"items-end\"\n },\n direction: {\n row: \"flex-row justify-between items-center space-y-0 space-x-4\",\n column: \"flex-col space-y-1.5\"\n }\n },\n defaultVariants: {\n size: \"lg\",\n align: \"start\",\n direction: \"column\"\n }\n }\n)\n\nexport interface CardHeaderProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardHeaderVariants> {}\n\nconst CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, size, align, direction, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(cardHeaderVariants({ size, align, direction }), className)}\n {...props}\n />\n )\n)\nCardHeader.displayName = \"CardHeader\"\n\nconst cardTitleVariants = cva(\n \"font-semibold leading-none tracking-tight\",\n {\n variants: {\n size: {\n sm: \"text-base\",\n md: \"text-lg\", \n lg: \"text-xl\"\n }\n },\n defaultVariants: {\n size: \"md\"\n }\n }\n)\n\nexport interface CardTitleProps\n extends React.HTMLAttributes<HTMLHeadingElement>,\n VariantProps<typeof cardTitleVariants> {}\n\nconst CardTitle = React.forwardRef<HTMLParagraphElement, CardTitleProps>(\n ({ className, size, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(cardTitleVariants({ size }), className)}\n {...props}\n />\n )\n)\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst cardContentVariants = cva(\n \"\",\n {\n variants: {\n size: {\n sm: \"px-3 pb-2\",\n md: \"px-4 pb-3\",\n lg: \"px-6 pb-4\"\n },\n fullHeight: {\n true: \"flex-1\",\n false: \"\"\n }\n },\n defaultVariants: {\n size: \"lg\",\n fullHeight: false\n }\n }\n)\n\nexport interface CardContentProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardContentVariants> {}\n\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, size, fullHeight, ...props }, ref) => (\n <div \n ref={ref} \n className={cn(cardContentVariants({ size, fullHeight }), className)} \n {...props} \n />\n )\n)\nCardContent.displayName = \"CardContent\"\n\nconst cardFooterVariants = cva(\n \"flex items-center pt-0\",\n {\n variants: {\n size: {\n sm: \"p-3 pt-0\",\n md: \"p-4 pt-0\",\n lg: \"p-6 pt-0\"\n },\n justify: {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\"\n }\n },\n defaultVariants: {\n size: \"lg\",\n justify: \"start\"\n }\n }\n)\n\nexport interface CardFooterProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardFooterVariants> {}\n\nconst CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(\n ({ className, size, justify, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(cardFooterVariants({ size, justify }), className)}\n {...props}\n />\n )\n)\nCardFooter.displayName = \"CardFooter\"\n\nexport { \n Card, \n CardHeader, \n CardFooter, \n CardTitle, \n CardDescription, \n CardContent,\n cardVariants\n}\n","import * as React from \"react\"\nimport { Card, CardContent, CardHeader, CardTitle, CardDescription, type CardProps } from \"@/components/ui/card\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface FormCardProps extends Omit<CardProps, 'children'> {\n title: string\n description?: string\n children: React.ReactNode\n headerActions?: React.ReactNode\n}\n\nexport const FormCard = React.forwardRef<HTMLDivElement, FormCardProps>(\n ({ title, description, children, headerActions, className, variant = \"default\", ...props }, ref) => (\n <Card \n ref={ref}\n variant={variant}\n fullHeight\n className={cn(\"\", className)}\n {...props}\n >\n <CardHeader \n direction={headerActions ? \"row\" : \"column\"}\n size=\"md\"\n >\n <div className=\"space-y-1\">\n <CardTitle size=\"md\">{title}</CardTitle>\n </div>\n {headerActions && (\n <div className=\"flex items-center gap-2\">\n {headerActions}\n </div>\n )}\n </CardHeader>\n <CardContent size=\"md\" fullHeight>\n {children}\n </CardContent>\n </Card>\n )\n)\nFormCard.displayName = \"FormCard\"","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n success:\n \"border-transparent bg-success text-success-foreground hover:bg-success/80\",\n warning:\n \"border-transparent bg-warning text-warning-foreground hover:bg-warning/80\",\n inbound:\n \"border-transparent bg-blue-500 text-white hover:bg-blue-600\",\n outbound:\n \"border-transparent bg-orange-500 text-white hover:bg-orange-600\",\n // Business type specific variants\n business:\n \"border-blue-200 bg-blue-50 text-blue-700 hover:bg-blue-100 dark:border-blue-800 dark:bg-blue-950 dark:text-blue-300\",\n individual:\n \"border-green-200 bg-green-50 text-green-700 hover:bg-green-100 dark:border-green-800 dark:bg-green-950 dark:text-green-300\",\n government:\n \"border-purple-200 bg-purple-50 text-purple-700 hover:bg-purple-100 dark:border-purple-800 dark:bg-purple-950 dark:text-purple-300\",\n nonprofit:\n \"border-orange-200 bg-orange-50 text-orange-700 hover:bg-orange-100 dark:border-orange-800 dark:bg-orange-950 dark:text-orange-300\",\n // Business entity type variants\n corporation:\n \"border-slate-200 bg-slate-50 text-slate-700 hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-900 dark:text-slate-300\",\n llc:\n \"border-teal-200 bg-teal-50 text-teal-700 hover:bg-teal-100 dark:border-teal-800 dark:bg-teal-950 dark:text-teal-300\",\n partnership:\n \"border-indigo-200 bg-indigo-50 text-indigo-700 hover:bg-indigo-100 dark:border-indigo-800 dark:bg-indigo-950 dark:text-indigo-300\",\n sole_proprietorship:\n \"border-amber-200 bg-amber-50 text-amber-700 hover:bg-amber-100 dark:border-amber-800 dark:bg-amber-950 dark:text-amber-300\",\n // Status variants\n active:\n \"border-green-200 bg-green-50 text-green-700 hover:bg-green-100 dark:border-green-800 dark:bg-green-950 dark:text-green-300\",\n inactive:\n \"border-red-200 bg-red-50 text-red-700 hover:bg-red-100 dark:border-red-800 dark:bg-red-950 dark:text-red-300\",\n pending:\n \"border-yellow-200 bg-yellow-50 text-yellow-700 hover:bg-yellow-100 dark:border-yellow-800 dark:bg-yellow-950 dark:text-yellow-300\",\n suspended:\n \"border-gray-200 bg-gray-50 text-gray-700 hover:bg-gray-100 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300\",\n // Alert type subtle variants\n \"alert-ofac\":\n \"border-red-200 bg-red-50 text-red-700 hover:bg-red-100 dark:border-red-800 dark:bg-red-950 dark:text-red-300 font-medium\",\n \"alert-dual\":\n \"border-emerald-200 bg-emerald-50 text-emerald-700 hover:bg-emerald-100 dark:border-emerald-800 dark:bg-emerald-950 dark:text-emerald-300 font-medium\",\n \"alert-monitoring\":\n \"border-amber-200 bg-amber-50 text-amber-700 hover:bg-amber-100 dark:border-amber-800 dark:bg-amber-950 dark:text-amber-300 font-medium\",\n \"alert-error\":\n \"border-rose-200 bg-rose-50 text-rose-700 hover:bg-rose-100 dark:border-rose-800 dark:bg-rose-950 dark:text-rose-300 font-medium\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n )\n}\n\nexport { Badge, badgeVariants }","import { TimelineEvent } from \"@/lib/mock-data/alert-data\";\nimport { CheckCircle, Circle, UserPlus, Edit, XCircle, StickyNote, FileUp, RefreshCw, Send, Eye, RotateCcw, PlayCircle } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\ninterface AlertTimelineProps {\n events: TimelineEvent[];\n}\n\nexport const AlertTimeline = ({ events }: AlertTimelineProps) => {\n const getIcon = (action: string) => {\n if (action.includes(\"Note added\")) return <StickyNote className=\"h-4 w-4\" />;\n if (action.includes(\"Document added\")) return <FileUp className=\"h-4 w-4\" />;\n if (action.includes(\"Alert Approved\")) return <CheckCircle className=\"h-4 w-4\" />;\n if (action.includes(\"Alert Declined\")) return <XCircle className=\"h-4 w-4\" />;\n if (action.includes(\"RFI Status change\")) return <RefreshCw className=\"h-4 w-4\" />;\n if (action.includes(\"Manual Review\")) return <Eye className=\"h-4 w-4\" />;\n if (action.includes(\"Returned\")) return <RotateCcw className=\"h-4 w-4\" />;\n if (action.includes(\"Cancelled\")) return <XCircle className=\"h-4 w-4\" />;\n if (action.includes(\"Sent\")) return <Send className=\"h-4 w-4\" />;\n if (action.includes(\"Submitted\")) return <FileUp className=\"h-4 w-4\" />;\n if (action.includes(\"Initiated\")) return <PlayCircle className=\"h-4 w-4\" />;\n if (action.includes(\"Created\")) return <Circle className=\"h-4 w-4\" />;\n if (action.includes(\"Assigned\")) return <UserPlus className=\"h-4 w-4\" />;\n if (action.includes(\"Updated\") || action.includes(\"Modified\")) return <Edit className=\"h-4 w-4\" />;\n if (action.includes(\"Closed\") || action.includes(\"Resolved\")) return <CheckCircle className=\"h-4 w-4\" />;\n if (action.includes(\"Rejected\")) return <XCircle className=\"h-4 w-4\" />;\n return <Circle className=\"h-4 w-4\" />;\n };\n\n const getStatusColor = (status?: string, action?: string) => {\n // Color by action type for specific events\n if (action?.includes(\"Note added\")) return \"text-blue-500\";\n if (action?.includes(\"Document added\")) return \"text-purple-500\";\n if (action?.includes(\"Alert Approved\")) return \"text-success\";\n if (action?.includes(\"Alert Declined\")) return \"text-destructive\";\n if (action?.includes(\"RFI Status change\")) return \"text-warning\";\n if (action?.includes(\"Manual Review\")) return \"text-warning\";\n if (action?.includes(\"Returned\")) return \"text-warning\";\n if (action?.includes(\"Cancelled\")) return \"text-destructive\";\n if (action?.includes(\"Sent\")) return \"text-success\";\n if (action?.includes(\"Submitted\")) return \"text-blue-500\";\n if (action?.includes(\"Initiated\")) return \"text-blue-500\";\n \n // Default color by status\n switch (status) {\n case \"Unassigned\":\n return \"text-destructive\";\n case \"Closed\":\n return \"text-success\";\n case \"In Progress\":\n return \"text-warning\";\n default:\n return \"text-muted-foreground\";\n }\n };\n\n if (events.length === 0) {\n return <div className=\"text-center py-8 text-muted-foreground\">No timeline events yet</div>;\n }\n\n return (\n <div className=\"space-y-3\">\n {events.map((event, index) => (\n <div key={event.id} className=\"relative pl-6 pb-3\">\n {/* Timeline line */}\n {index !== events.length - 1 && <div className=\"absolute left-[7px] top-5 bottom-0 w-[2px] bg-border\" />}\n\n {/* Icon */}\n <div className={cn(\"absolute left-0 top-0 flex-none\", getStatusColor(event.status, event.action))}>\n <div className=\"h-4 w-4\">{getIcon(event.action)}</div>\n </div>\n\n {/* Content */}\n <div className=\"space-y-0.5\">\n <p className=\"text-xs font-medium text-foreground\">{event.action}</p>\n <p className=\"text-xs text-muted-foreground\">by {event.user}</p>\n {event.details && <p className=\"text-xs text-muted-foreground\">{event.details}</p>}\n <p className=\"text-xs text-muted-foreground/70 pt-0.5\">{event.timestamp}</p>\n </div>\n </div>\n ))}\n </div>\n );\n};\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst textareaVariants = cva(\n \"flex min-h-[80px] w-full rounded-md bg-form-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground transition-form resize-y\",\n {\n variants: {\n variant: {\n default: \"border border-form-border focus-visible:border-form-border-focus focus-visible:outline-none focus-visible:shadow-form-focus\",\n error: \"border border-form-border-error focus-visible:border-form-border-error focus-visible:outline-none focus-visible:shadow-form-error\",\n success: \"border border-form-border-success focus-visible:border-form-border-success focus-visible:outline-none\",\n disabled: \"border border-form-border bg-muted cursor-not-allowed opacity-50 resize-none\",\n readonly: \"border border-form-border bg-muted/50 cursor-default resize-none\"\n }\n },\n defaultVariants: {\n variant: \"default\"\n }\n }\n)\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n VariantProps<typeof textareaVariants> {\n label?: string\n hint?: string\n error?: string\n success?: string\n}\n\nconst EnhancedTextarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, variant, label, hint, error, success, ...props }, ref) => {\n const textareaVariant = error ? \"error\" : success ? \"success\" : props.disabled ? \"disabled\" : props.readOnly ? \"readonly\" : variant\n\n return (\n <div className=\"space-y-2\">\n {label && (\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {label}\n {props.required && <span className=\"text-destructive ml-1\">*</span>}\n </label>\n )}\n <textarea\n className={cn(textareaVariants({ variant: textareaVariant, className }))}\n ref={ref}\n {...props}\n />\n {hint && !error && !success && (\n <p className=\"text-xs text-muted-foreground\">{hint}</p>\n )}\n {error && (\n <p className=\"text-xs text-destructive\">{error}</p>\n )}\n {success && (\n <p className=\"text-xs text-success\">{success}</p>\n )}\n </div>\n )\n }\n)\nEnhancedTextarea.displayName = \"EnhancedTextarea\"\n\nexport { EnhancedTextarea, textareaVariants }","import * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst selectVariants = cva(\n \"flex h-10 w-full items-center justify-between rounded-md bg-form-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none transition-form\",\n {\n variants: {\n variant: {\n default: \"border border-form-border focus:border-form-border-focus focus:shadow-form-focus\",\n error: \"border border-form-border-error focus:border-form-border-error focus:shadow-form-error\",\n success: \"border border-form-border-success focus:border-form-border-success\",\n disabled: \"border border-form-border bg-muted cursor-not-allowed opacity-50\",\n }\n },\n defaultVariants: {\n variant: \"default\"\n }\n }\n)\n\ninterface EnhancedSelectProps extends VariantProps<typeof selectVariants> {\n label?: string\n hint?: string\n error?: string\n success?: string\n placeholder?: string\n options: { value: string; label: string; disabled?: boolean }[]\n value?: string\n onValueChange?: (value: string) => void\n disabled?: boolean\n className?: string\n}\n\nconst EnhancedSelect = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n EnhancedSelectProps\n>(({ variant, label, hint, error, success, placeholder, options, disabled, className, ...props }, ref) => {\n const selectVariant = error ? \"error\" : success ? \"success\" : disabled ? \"disabled\" : variant\n\n return (\n <div className={cn(\"space-y-2\", className)}>\n {label && (\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {label}\n </label>\n )}\n <SelectPrimitive.Root {...props} disabled={disabled}>\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(selectVariants({ variant: selectVariant }))}\n >\n <SelectPrimitive.Value placeholder={placeholder} />\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content className=\"relative z-[9999] max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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\">\n <SelectPrimitive.ScrollUpButton className=\"flex cursor-default items-center justify-center py-1\">\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n <SelectPrimitive.Viewport className=\"p-1\">\n {options.map((option) => (\n <SelectPrimitive.Item\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n className=\"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{option.label}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n <SelectPrimitive.ScrollDownButton className=\"flex cursor-default items-center justify-center py-1\">\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n {hint && !error && !success && (\n <p className=\"text-xs text-muted-foreground\">{hint}</p>\n )}\n {error && (\n <p className=\"text-xs text-destructive\">{error}</p>\n )}\n {success && (\n <p className=\"text-xs text-success\">{success}</p>\n )}\n </div>\n )\n})\nEnhancedSelect.displayName = \"EnhancedSelect\"\n\nexport { EnhancedSelect }\n","import * as React from \"react\"\n\nimport type {\n ToastActionElement,\n ToastProps,\n} from \"@/components/ui/toast\"\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\ntype ToasterToast = ToastProps & {\n id: string\n title?: React.ReactNode\n description?: React.ReactNode\n action?: ToastActionElement\n}\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER\n return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"]\n toast: ToasterToast\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"]\n toast: Partial<ToasterToast>\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"]\n toastId?: ToasterToast[\"id\"]\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"]\n toastId?: ToasterToast[\"id\"]\n }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n }\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n }\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId)\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id)\n })\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n }\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n }\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n }\n }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action)\n listeners.forEach((listener) => {\n listener(memoryState)\n })\n}\n\ntype Toast = Omit<ToasterToast, \"id\">\n\nfunction toast({ ...props }: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n })\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id })\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss()\n },\n },\n })\n\n return {\n id: id,\n dismiss,\n update,\n }\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState)\n\n React.useEffect(() => {\n listeners.push(setState)\n return () => {\n const index = listeners.indexOf(setState)\n if (index > -1) {\n listeners.splice(index, 1)\n }\n }\n }, [state])\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n }\n}\n\nexport { useToast, toast }\n","import { useState } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { AlertNote } from \"@/lib/mock-data/alert-data\"\nimport { Button } from \"@/components/ui/button\"\nimport { EnhancedTextarea } from \"@/components/ui/enhanced-textarea\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { toast } from \"@/hooks/use-toast\"\nimport { MessageSquare, Plus, X, Trash2 } from \"lucide-react\"\n\nconst NOTE_TYPE_OPTIONS = [\n { value: \"RFI Note\", label: \"RFI Note\" },\n { value: \"Internal Note\", label: \"Internal Note\" }\n]\n\ninterface AlertNotesProps {\n alertId: string\n notes: AlertNote[]\n}\n\nexport const AlertNotes = ({ alertId, notes }: AlertNotesProps) => {\n const [showNoteDialog, setShowNoteDialog] = useState(false)\n const [newNote, setNewNote] = useState(\"\")\n const [noteType, setNoteType] = useState<\"RFI Note\" | \"Internal Note\">(\"RFI Note\")\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n const resetForm = () => {\n setNewNote(\"\")\n setNoteType(\"RFI Note\")\n }\n\n const handleCancelNote = () => {\n setShowNoteDialog(false)\n resetForm()\n }\n\n const handleAddNote = async () => {\n if (!newNote.trim()) {\n toast({\n title: \"Error\",\n description: \"Please enter a note before submitting\",\n variant: \"destructive\"\n })\n return\n }\n\n setIsSubmitting(true)\n \n // Simulate API call\n setTimeout(() => {\n toast({\n title: \"Note Added\",\n description: \"Your note has been added successfully\"\n })\n setShowNoteDialog(false)\n resetForm()\n setIsSubmitting(false)\n }, 500)\n }\n\n const handleDeleteNote = (noteId: string, noteContent: string) => {\n toast({\n title: \"Note Deleted\",\n description: `Note deleted successfully`\n })\n // TODO: API call to delete note\n console.log(\"Deleting note:\", noteId)\n }\n\n return (\n <div className=\"space-y-6\">\n {/* Add Note Dialog - Render using portal */}\n {showNoteDialog && createPortal(\n <div className=\"fixed inset-0 z-[100] flex items-center justify-center p-4\">\n <div \n className=\"fixed inset-0 bg-background/80 backdrop-blur-sm\"\n onClick={handleCancelNote}\n />\n <div className=\"relative bg-card border rounded-lg shadow-lg max-w-lg w-full p-6 z-[101]\">\n <div className=\"flex items-center justify-between mb-6\">\n <h2 className=\"text-2xl font-bold\">Add Note</h2>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={handleCancelNote}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"space-y-4\">\n <EnhancedSelect\n label=\"Note Type\"\n value={noteType}\n onValueChange={(value) => setNoteType(value as \"RFI Note\" | \"Internal Note\")}\n options={NOTE_TYPE_OPTIONS}\n />\n <EnhancedTextarea\n label=\"Note\"\n placeholder=\"Enter your note here...\"\n value={newNote}\n onChange={(e) => setNewNote(e.target.value)}\n rows={6}\n required\n />\n </div>\n\n <div className=\"flex gap-3 mt-6\">\n <Button\n variant=\"outline\"\n onClick={handleCancelNote}\n disabled={isSubmitting}\n className=\"flex-1\"\n >\n Cancel\n </Button>\n <Button\n onClick={handleAddNote}\n disabled={isSubmitting || !newNote.trim()}\n className=\"flex-1\"\n >\n {isSubmitting ? \"Adding...\" : \"Add Note\"}\n </Button>\n </div>\n </div>\n </div>,\n document.body\n )}\n\n {/* Notes History */}\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-sm font-medium text-foreground\">Note History</h3>\n <Button \n onClick={() => setShowNoteDialog(true)}\n variant=\"ghost\"\n size=\"sm\"\n className=\"gap-2 text-primary hover:text-primary\"\n >\n <Plus className=\"h-4 w-4\" />\n Add Note\n </Button>\n </div>\n {notes.length === 0 ? (\n <div className=\"text-center py-8 text-muted-foreground\">\n <MessageSquare className=\"h-8 w-8 mx-auto mb-2 opacity-50\" />\n <p>No notes yet</p>\n </div>\n ) : (\n <div className=\"space-y-3\">\n {notes.map((note) => (\n <div \n key={note.id} \n className=\"border rounded-lg p-4 bg-muted/30\"\n >\n <div className=\"flex items-start justify-between gap-4 mb-2\">\n <div className=\"flex items-center gap-2\">\n <p className=\"font-medium text-sm text-foreground\">{note.user}</p>\n <Badge variant={note.type === \"RFI Note\" ? \"default\" : \"outline\"}>\n {note.type === \"RFI Note\" ? \"RFI\" : \"Internal\"}\n </Badge>\n </div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs text-muted-foreground whitespace-nowrap\">\n {note.timestamp}\n </span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 text-muted-foreground hover:text-foreground\"\n onClick={() => handleDeleteNote(note.id, note.content)}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n <p className=\"text-sm text-foreground\">{note.content}</p>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst inputVariants = cva(\n \"flex w-full rounded-md bg-form-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground transition-form\",\n {\n variants: {\n variant: {\n default: \"border border-form-border focus-visible:border-form-border-focus focus-visible:outline-none focus-visible:shadow-form-focus\",\n error: \"border border-form-border-error focus-visible:border-form-border-error focus-visible:outline-none focus-visible:shadow-form-error\",\n success: \"border border-form-border-success focus-visible:border-form-border-success focus-visible:outline-none\",\n disabled: \"border border-form-border bg-muted cursor-not-allowed opacity-50\",\n readonly: \"border border-form-border bg-muted/50 cursor-default\"\n },\n size: {\n default: \"h-10\",\n sm: \"h-9\",\n lg: \"h-11\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n)\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof inputVariants> {\n label?: string\n hint?: string\n error?: string\n success?: string\n isLoading?: boolean\n}\n\nconst EnhancedInput = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, variant, size, label, hint, error, success, isLoading, ...props }, ref) => {\n const inputVariant = error ? \"error\" : success ? \"success\" : props.disabled ? \"disabled\" : props.readOnly ? \"readonly\" : variant\n\n return (\n <div className=\"space-y-2\">\n {label && (\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {label}\n {props.required && <span className=\"text-destructive ml-1\">*</span>}\n </label>\n )}\n <div className=\"relative\">\n <input\n className={cn(inputVariants({ variant: inputVariant, size, className }))}\n ref={ref}\n {...props}\n />\n {isLoading && (\n <div className=\"absolute right-3 top-1/2 transform -translate-y-1/2\">\n <div className=\"animate-spin rounded-full h-4 w-4 border-2 border-primary border-t-transparent\"></div>\n </div>\n )}\n </div>\n {hint && !error && !success && (\n <p className=\"text-xs text-muted-foreground\">{hint}</p>\n )}\n {error && (\n <p className=\"text-xs text-destructive\">{error}</p>\n )}\n {success && (\n <p className=\"text-xs text-success\">{success}</p>\n )}\n </div>\n )\n }\n)\nEnhancedInput.displayName = \"EnhancedInput\"\n\nexport { EnhancedInput, inputVariants }","import { useState } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { AlertDocument } from \"@/lib/mock-data/alert-data\"\nimport { Button } from \"@/components/ui/button\"\nimport { toast } from \"@/hooks/use-toast\"\nimport { FileText, Upload, Download, Eye, Trash2, X } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedTextarea } from \"@/components/ui/enhanced-textarea\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\n\ninterface AlertDocumentsProps {\n alertId: string\n documents: AlertDocument[]\n}\n\nexport const AlertDocuments = ({ alertId, documents }: AlertDocumentsProps) => {\n const [isUploading, setIsUploading] = useState(false)\n const [showUploadDialog, setShowUploadDialog] = useState(false)\n const [selectedFile, setSelectedFile] = useState<File | null>(null)\n const [documentName, setDocumentName] = useState(\"\")\n const [description, setDescription] = useState(\"\")\n const [documentType, setDocumentType] = useState(\"\")\n\n const handleFileSelect = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0]\n if (!file) return\n \n setSelectedFile(file)\n setDocumentName(file.name)\n }\n\n const handleUploadSubmit = () => {\n if (!selectedFile || !documentName || !documentType) {\n toast({\n title: \"Missing Information\",\n description: \"Please fill in all required fields\",\n variant: \"destructive\"\n })\n return\n }\n\n setIsUploading(true)\n \n // Simulate upload\n setTimeout(() => {\n const newDocument: AlertDocument = {\n id: String(Date.now()),\n name: documentName,\n type: documentType,\n description: description || undefined,\n size: `${(selectedFile.size / 1024 / 1024).toFixed(1)} MB`,\n uploadedBy: \"Current User\",\n uploadedAt: new Date().toISOString()\n }\n \n toast({\n title: \"Upload Successful\",\n description: `${documentName} uploaded successfully`\n })\n setIsUploading(false)\n setShowUploadDialog(false)\n resetForm()\n }, 1000)\n }\n\n const resetForm = () => {\n setSelectedFile(null)\n setDocumentName(\"\")\n setDescription(\"\")\n setDocumentType(\"\")\n const fileInput = document.getElementById(\"file-upload\") as HTMLInputElement\n if (fileInput) fileInput.value = \"\"\n }\n\n const handleCancelUpload = () => {\n setShowUploadDialog(false)\n resetForm()\n }\n\n const isImageType = (name: string) => {\n const imageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.webp', '.bmp']\n return imageExtensions.some(ext => name.toLowerCase().endsWith(ext))\n }\n\n const getFileIcon = (type: string) => {\n return <FileText className=\"h-5 w-5\" />\n }\n\n const getFileTypeColor = (type: string) => {\n switch (type.toUpperCase()) {\n case \"PDF\":\n return \"text-red-500\"\n case \"DOCX\":\n case \"DOC\":\n return \"text-blue-500\"\n case \"XLSX\":\n case \"XLS\":\n return \"text-green-500\"\n case \"JPG\":\n case \"JPEG\":\n case \"PNG\":\n return \"text-purple-500\"\n default:\n return \"text-muted-foreground\"\n }\n }\n\n const documentTypeOptions = [\n { value: \"ID_DOCUMENT_FRONT\", label: \"ID Document (Front)\" },\n { value: \"ID_DOCUMENT_BACK\", label: \"ID Document (Back)\" },\n { value: \"PASSPORT\", label: \"Passport\" },\n { value: \"PROOF_OF_ADDRESS\", label: \"Proof of Address\" },\n { value: \"BANK_STATEMENT\", label: \"Bank Statement\" },\n { value: \"BUSINESS_LICENSE\", label: \"Business License\" },\n { value: \"TAX_DOCUMENT\", label: \"Tax Document\" },\n { value: \"OTHER\", label: \"Other\" }\n ]\n\n return (\n <div className=\"space-y-6\">\n {/* Upload Dialog - Render using portal */}\n {showUploadDialog && createPortal(\n <div className=\"fixed inset-0 z-[100] flex items-center justify-center p-4\">\n <div \n className=\"fixed inset-0 bg-background/80 backdrop-blur-sm\"\n onClick={handleCancelUpload}\n />\n <div className=\"relative bg-card border rounded-lg shadow-lg max-w-lg w-full p-6 z-[101]\">\n <div className=\"flex items-center justify-between mb-6\">\n <h2 className=\"text-2xl font-bold\">Upload Document</h2>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={handleCancelUpload}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"space-y-4\">\n {/* File Upload Area Inside Dialog */}\n <div className=\"border-2 border-dashed rounded-lg p-6 text-center hover:border-primary/50 transition-colors\">\n <input\n type=\"file\"\n id=\"file-upload-dialog\"\n className=\"hidden\"\n onChange={handleFileSelect}\n disabled={isUploading}\n />\n <label\n htmlFor=\"file-upload-dialog\"\n className={cn(\n \"cursor-pointer flex flex-col items-center gap-2\",\n isUploading && \"opacity-50 cursor-not-allowed\"\n )}\n >\n <Upload className=\"h-8 w-8 text-muted-foreground\" />\n <div>\n <p className=\"text-sm font-medium text-foreground\">\n {selectedFile ? \"Change file\" : \"Click to upload or drag and drop\"}\n </p>\n <p className=\"text-xs text-muted-foreground mt-1\">\n PDF, DOC, DOCX, JPG, PNG up to 10MB\n </p>\n </div>\n </label>\n </div>\n\n {selectedFile && (\n <div className=\"p-3 bg-muted/50 rounded-lg\">\n <p className=\"text-sm text-muted-foreground\">Selected file:</p>\n <p className=\"text-sm font-medium\">{selectedFile.name}</p>\n <p className=\"text-xs text-muted-foreground\">\n {(selectedFile.size / 1024 / 1024).toFixed(2)} MB\n </p>\n </div>\n )}\n\n <EnhancedInput\n label=\"Document name\"\n value={documentName}\n onChange={(e) => setDocumentName(e.target.value)}\n placeholder=\"Enter document name\"\n />\n\n <EnhancedTextarea\n label=\"Description\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n placeholder=\"Enter document description (optional)\"\n rows={3}\n />\n\n <EnhancedSelect\n label=\"Document type\"\n value={documentType}\n onValueChange={setDocumentType}\n placeholder=\"Select document type\"\n options={documentTypeOptions}\n />\n </div>\n\n <div className=\"flex gap-3 mt-6\">\n <Button\n variant=\"outline\"\n onClick={handleCancelUpload}\n disabled={isUploading}\n className=\"flex-1\"\n >\n Cancel\n </Button>\n <Button\n onClick={handleUploadSubmit}\n disabled={isUploading}\n className=\"flex-1\"\n >\n {isUploading ? \"Uploading...\" : \"Upload\"}\n </Button>\n </div>\n </div>\n </div>,\n document.body\n )}\n\n {/* Documents List */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-sm font-medium text-foreground\">Uploaded Documents</h3>\n <Button \n onClick={() => setShowUploadDialog(true)}\n variant=\"ghost\"\n size=\"sm\"\n className=\"gap-2 text-primary hover:text-primary\"\n >\n <Upload className=\"h-4 w-4\" />\n Upload\n </Button>\n </div>\n {documents.length === 0 ? (\n <div className=\"text-center py-8 text-muted-foreground\">\n <FileText className=\"h-8 w-8 mx-auto mb-2 opacity-50\" />\n <p>No documents uploaded yet</p>\n </div>\n ) : (\n <div className=\"space-y-2\">\n {documents.map((doc) => (\n <div\n key={doc.id}\n className=\"border rounded-lg hover:bg-muted/30 transition-colors overflow-hidden\"\n >\n {/* Image Preview for image types */}\n {isImageType(doc.name) && doc.url && (\n <div className=\"w-full bg-muted/50\">\n <img \n src={doc.url} \n alt={doc.name}\n className=\"w-full h-48 object-cover\"\n />\n </div>\n )}\n \n <div className=\"flex items-center justify-between p-3\">\n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n {!isImageType(doc.name) && (\n <div className={cn(getFileTypeColor(doc.type))}>\n {getFileIcon(doc.type)}\n </div>\n )}\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"font-medium text-sm truncate\">{doc.name}</h4>\n <span className={cn(\"text-xs px-2 py-0.5 rounded-full bg-muted inline-block mt-1\", getFileTypeColor(doc.type))}>\n {doc.type}\n </span>\n {doc.description && (\n <p className=\"text-sm text-foreground mt-1\">{doc.description}</p>\n )}\n <p className=\"text-xs text-muted-foreground mt-1\">\n {doc.size} • Uploaded by {doc.uploadedBy} • {new Date(doc.uploadedAt).toLocaleDateString()}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => toast({ title: \"Preview\", description: `Viewing ${doc.name}` })}\n >\n <Eye className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => toast({ title: \"Download\", description: `Downloading ${doc.name}` })}\n >\n <Download className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 text-muted-foreground hover:text-foreground\"\n onClick={() => toast({ title: \"Delete\", description: `Deleted ${doc.name}` })}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n )\n}\n","interface InfoFieldProps {\n label?: string\n value: string | React.ReactNode\n layout?: 'vertical' | 'horizontal' | 'compact'\n className?: string\n}\n\nimport React from \"react\"\n\nexport const InfoField = ({ label, value, layout = 'vertical', className }: InfoFieldProps) => {\n if (layout === 'horizontal') {\n return (\n <div className={`flex items-start gap-3 ${className || ''}`}>\n {label && <p className=\"text-sm font-medium text-muted-foreground flex-shrink-0 max-w-[50%]\">{label}</p>}\n <div className=\"text-sm text-foreground flex-1 min-w-0 break-words\">{value}</div>\n </div>\n )\n }\n\n if (layout === 'compact') {\n return (\n <div className={`flex items-center gap-2 ${className || ''}`}>\n {label && <p className=\"text-xs font-medium text-muted-foreground\">{label}:</p>}\n <div className=\"text-xs text-foreground\">{value}</div>\n </div>\n )\n }\n\n // Default vertical layout\n return (\n <div className={className}>\n {label && <p className=\"text-sm font-medium text-muted-foreground\">{label}</p>}\n <div className={`text-sm text-foreground ${label ? 'mt-1' : ''}`}>{value}</div>\n </div>\n )\n}","import * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n))\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n))\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\n\nexport { ScrollArea, ScrollBar }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n))\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-white/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-4xl translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] rounded-lg max-h-[90vh] overflow-hidden\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","import { useState } from \"react\"\nimport { ChevronDown, ChevronRight, Copy, Check } from \"lucide-react\"\nimport { Button } from \"./button\"\nimport { cn } from \"@/lib/utils\"\n\ninterface JsonViewerProps {\n data: any\n className?: string\n compact?: boolean\n maxHeight?: string\n}\n\nexport const JsonViewer = ({ data, className, compact = false, maxHeight = \"60vh\" }: JsonViewerProps) => {\n const [copied, setCopied] = useState(false)\n\n const handleCopy = () => {\n navigator.clipboard.writeText(JSON.stringify(data, null, 2))\n setCopied(true)\n setTimeout(() => setCopied(false), 2000)\n }\n\n return (\n <div className={cn(\"relative\", className)}>\n <div className={cn(\"absolute z-10\", compact ? \"right-1 top-1\" : \"right-2 top-2\")}>\n <Button\n variant=\"outline\"\n size={compact ? \"sm\" : \"sm\"}\n onClick={handleCopy}\n className={cn(\"gap-2\", compact && \"h-7 text-xs px-2\")}\n >\n {copied ? (\n <>\n <Check className=\"h-3 w-3\" />\n {!compact && \"Copied\"}\n </>\n ) : (\n <>\n <Copy className=\"h-3 w-3\" />\n {!compact && \"Copy JSON\"}\n </>\n )}\n </Button>\n </div>\n <div \n className={cn(\n \"overflow-auto bg-muted/30 rounded-lg border font-mono\",\n compact ? \"max-h-[300px] p-2 text-xs\" : `max-h-[${maxHeight}] p-4 text-xs`\n )}\n style={{ maxHeight: compact ? \"300px\" : maxHeight }}\n >\n <JsonNode data={data} name=\"root\" depth={0} compact={compact} />\n </div>\n </div>\n )\n}\n\ninterface JsonNodeProps {\n data: any\n name: string\n depth: number\n compact?: boolean\n}\n\nconst JsonNode = ({ data, name, depth, compact = false }: JsonNodeProps) => {\n const [isExpanded, setIsExpanded] = useState(compact ? depth < 1 : depth < 2)\n\n const indent = compact ? depth * 12 : depth * 16\n\n if (data === null) {\n return (\n <div style={{ paddingLeft: indent }} className=\"text-muted-foreground\">\n <span className=\"text-primary\">{name}</span>: <span className=\"text-orange-500\">null</span>\n </div>\n )\n }\n\n if (typeof data !== \"object\") {\n const valueClass = \n typeof data === \"string\" ? \"text-green-600 dark:text-green-400\" :\n typeof data === \"number\" ? \"text-blue-600 dark:text-blue-400\" :\n typeof data === \"boolean\" ? \"text-orange-500\" :\n \"text-foreground\"\n\n return (\n <div style={{ paddingLeft: indent }}>\n <span className=\"text-primary\">{name}</span>:{\" \"}\n <span className={valueClass}>\n {typeof data === \"string\" ? `\"${data}\"` : String(data)}\n </span>\n </div>\n )\n }\n\n const isArray = Array.isArray(data)\n const entries = isArray ? data : Object.entries(data)\n const isEmpty = entries.length === 0\n\n return (\n <div style={{ paddingLeft: indent }}>\n <div\n className=\"flex items-center gap-1 cursor-pointer hover:bg-muted/50 rounded\"\n onClick={() => !isEmpty && setIsExpanded(!isExpanded)}\n >\n {!isEmpty && (\n isExpanded ? (\n <ChevronDown className=\"h-3 w-3 text-muted-foreground\" />\n ) : (\n <ChevronRight className=\"h-3 w-3 text-muted-foreground\" />\n )\n )}\n <span className=\"text-primary\">{name}</span>\n <span className=\"text-muted-foreground\">\n {isArray ? \"[\" : \"{\"}\n {!isExpanded && !isEmpty && \"...\"}\n {isEmpty && (isArray ? \"]\" : \"}\")}\n </span>\n </div>\n {isExpanded && !isEmpty && (\n <div>\n {isArray\n ? data.map((item: any, index: number) => (\n <JsonNode\n key={index}\n data={item}\n name={String(index)}\n depth={depth + 1}\n compact={compact}\n />\n ))\n : Object.entries(data).map(([key, value]) => (\n <JsonNode\n key={key}\n data={value}\n name={key}\n depth={depth + 1}\n compact={compact}\n />\n ))}\n <div style={{ paddingLeft: indent }} className=\"text-muted-foreground\">\n {isArray ? \"]\" : \"}\"}\n </div>\n </div>\n )}\n </div>\n )\n}\n","import { useState } from \"react\"\nimport { FormCard } from \"@/components/ui/form-card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { AlertTimeline } from \"@/components/alerts/AlertTimeline\"\nimport { AlertNotes } from \"@/components/alerts/AlertNotes\"\nimport { AlertDocuments } from \"@/components/alerts/AlertDocuments\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport type { Alert } from \"@/lib/mock-data/alert-data\"\nimport { Link } from \"react-router-dom\"\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { Button } from \"@/components/ui/button\"\nimport { FileJson } from \"lucide-react\"\nimport { JsonViewer } from \"@/components/ui/json-viewer\"\n\nexport interface OFACAlertViewProps {\n alert: Alert\n}\n\nexport const OFACAlertView = ({ alert }: OFACAlertViewProps) => {\n const [isJsonDialogOpen, setIsJsonDialogOpen] = useState(false)\n\n // Parse OFAC raw results and create table rows\n const parseOFACMatches = (data: any) => {\n if (!data.rawResults || !data.ofacCheckDetails) return []\n\n try {\n const rawResults = JSON.parse(data.rawResults)\n const tableRows: any[] = []\n\n // Helper to get user-friendly list names\n const getListName = (listType: string) => {\n const listNames: Record<string, string> = {\n 'SDNs': 'OFAC SDN List',\n 'altNames': 'OFAC Alternate Names',\n 'sectoralSanctions': 'OFAC Sectoral Sanctions',\n 'nonSDNMenuBasedSanctionsList': 'OFAC Non-SDN List',\n 'ukConsolidatedSanctionsList': 'UK Consolidated List'\n }\n return listNames[listType] || listType\n }\n\n // Helper to format check key\n const formatCheckKey = (key: string) => {\n return key\n .replace(/([A-Z])/g, ' $1')\n .replace(/^./, str => str.toUpperCase())\n .trim()\n }\n\n // Process each list type\n const listTypes = [\n { key: 'SDNs', nameField: 'sdnName' },\n { key: 'altNames', nameField: 'alternateName' },\n { key: 'sectoralSanctions', nameField: 'Name' },\n { key: 'nonSDNMenuBasedSanctionsList', nameField: 'Name' },\n { key: 'ukConsolidatedSanctionsList', nameField: 'Names' }\n ]\n\n listTypes.forEach(({ key, nameField }) => {\n const list = rawResults[key]\n if (list && Array.isArray(list)) {\n list.forEach((item: any) => {\n // For each check detail, create rows if there's a match\n data.ofacCheckDetails.forEach((check: any) => {\n // Only create row if the match is relevant to this check\n // For simplicity, we're showing all matches for all checks\n tableRows.push({\n type: formatCheckKey(check.checkKey),\n name: check.checkValue,\n matchedName: item.matchedName || item[nameField] || 'N/A',\n list: getListName(key),\n matchScore: item.match ? `${(item.match * 100).toFixed(2)}%` : 'N/A'\n })\n })\n })\n }\n })\n\n return tableRows\n } catch (error) {\n console.error('Error parsing OFAC results:', error)\n return []\n }\n }\n\n const renderOFACContext = () => {\n const data = alert.contextData\n if (!data) return null\n\n const tableRows = parseOFACMatches(data)\n\n // Determine entity name and link\n const entityName = data.counterpartyName || data.businessName || data.individualName || data.transactionPaymentId || 'N/A'\n const entityType = data.counterpartyName ? 'Counterparty' \n : data.businessName ? 'Business' \n : data.individualName ? 'Individual' \n : data.transactionPaymentId ? 'Transaction'\n : 'N/A'\n const entityId = data.counterpartyId || data.businessId || data.individualId || data.transactionPaymentId\n const entityLink = entityId \n ? data.counterpartyId ? `/counterparties/${entityId}` \n : data.businessId ? `/businesses/${entityId}` \n : data.individualId ? `/individuals/${entityId}`\n : data.transactionPaymentId ? `/transactions/${entityId}`\n : null\n : null\n\n return (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField \n label=\"Entity Name\" \n value={\n entityLink ? (\n <Link \n to={entityLink} \n className=\"text-primary hover:underline\"\n >\n {entityName}\n </Link>\n ) : entityName\n } \n layout=\"horizontal\" \n />\n <InfoField label=\"Entity Type\" value={entityType} layout=\"horizontal\" />\n </div>\n\n {tableRows.length > 0 && (\n <div className=\"mt-4\">\n <ScrollArea className=\"h-[300px] rounded-md border\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>Type</TableHead>\n <TableHead>Name</TableHead>\n <TableHead>Matched Name</TableHead>\n <TableHead className=\"flex items-center gap-1\">\n <span>List</span>\n <Dialog open={isJsonDialogOpen} onOpenChange={setIsJsonDialogOpen}>\n <DialogTrigger asChild>\n <Button \n variant=\"ghost\" \n size=\"icon\"\n className=\"h-6 w-6 text-primary hover:text-primary/80\"\n >\n <FileJson className=\"h-4 w-4\" />\n </Button>\n </DialogTrigger>\n <DialogContent className=\"max-w-4xl max-h-[80vh]\">\n <DialogHeader>\n <DialogTitle>OFAC Raw Results</DialogTitle>\n <DialogDescription>\n Complete JSON response from the OFAC screening check\n </DialogDescription>\n </DialogHeader>\n <JsonViewer \n data={data.rawResults ? JSON.parse(data.rawResults) : {}} \n maxHeight=\"60vh\"\n />\n </DialogContent>\n </Dialog>\n </TableHead>\n <TableHead>Match Score</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {tableRows.map((row, index) => (\n <TableRow key={index}>\n <TableCell>{row.type}</TableCell>\n <TableCell>{row.name}</TableCell>\n <TableCell>{row.matchedName}</TableCell>\n <TableCell>{row.list}</TableCell>\n <TableCell>{row.matchScore}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </ScrollArea>\n </div>\n )}\n </div>\n )\n }\n\n const renderTransactionContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Transaction ID\" value=\"TXN-12345\" />\n <InfoField label=\"Amount\" value=\"$30,000.00\" />\n <InfoField label=\"Transaction Type\" value=\"Wire Transfer\" />\n <InfoField label=\"Date\" value=\"2025-09-30\" />\n </div>\n )\n }\n\n const renderFileRecordContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"File Name\" value=\"wire_batch_093025.csv\" />\n <InfoField label=\"Record Count\" value=\"1,234\" />\n <InfoField label=\"Error Count\" value=\"3\" />\n <InfoField label=\"Status\" value={<Badge variant=\"alert-error\">Failed</Badge>} />\n </div>\n )\n }\n\n const renderProductContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Product ID\" value=\"PROD-2787\" />\n <InfoField label=\"Product Name\" value=\"Business Checking Account\" />\n <InfoField label=\"Status\" value=\"Pending Deactivation\" />\n <InfoField label=\"Reason\" value=\"Compliance review required\" />\n </div>\n )\n }\n\n const getContextTitle = () => {\n switch (alert.contextType) {\n case \"Ofac\":\n return \"OFAC Context\"\n case \"Transaction\":\n return \"Transaction Context\"\n case \"File Record\":\n return \"File Processing Context\"\n case \"Product\":\n return \"Product Context\"\n default:\n return \"Context Information\"\n }\n }\n\n const renderContext = () => {\n switch (alert.contextType) {\n case \"Ofac\":\n return renderOFACContext()\n case \"Transaction\":\n return renderTransactionContext()\n case \"File Record\":\n return renderFileRecordContext()\n case \"Product\":\n return renderProductContext()\n default:\n return <p className=\"text-sm text-muted-foreground\">No additional context available</p>\n }\n }\n\n return (\n <div className=\"flex flex-col lg:flex-row gap-6\">\n {/* Left Section: 2x2 Grid */}\n <div className=\"flex-1 grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <FormCard title=\"Alert Details\" className=\"lg:col-span-2\">\n <div className=\"space-y-3\">\n {/* Description */}\n <InfoField label=\"Description\" value={alert.description} layout=\"horizontal\" />\n\n {/* OFAC Context Data */}\n {renderContext()}\n </div>\n </FormCard>\n\n {/* Notes Section */}\n <FormCard title=\"Notes\">\n <AlertNotes alertId={alert.id} notes={alert.notes || []} />\n </FormCard>\n\n {/* Documents Section */}\n <FormCard title=\"Documents\">\n <AlertDocuments alertId={alert.id} documents={alert.documents || []} />\n </FormCard>\n </div>\n\n {/* Right Section: Timeline Column */}\n <div className=\"lg:w-64\">\n <FormCard title=\"Status Timeline\" className=\"h-full\">\n <AlertTimeline events={alert.timeline || []} />\n </FormCard>\n </div>\n\n </div>\n )\n}\n","import type { Alert } from \"@/lib/mock-data/alert-data\"\nimport { OFACAlertView } from \"./OFACAlertView\"\n\nexport interface AlertDetailRouterProps {\n alert: Alert\n}\n\nexport const AlertDetailRouter = ({ alert }: AlertDetailRouterProps) => {\n // Route to appropriate view based on alert type\n switch (alert.type) {\n case \"Ofac\":\n return <OFACAlertView alert={alert} />\n \n case \"Transaction Monitoring\":\n // TODO: Create TransactionMonitoringAlertView\n return <div>Transaction Monitoring view - Coming soon</div>\n \n case \"Prohibited Entity\":\n // TODO: Create ProhibitedEntityAlertView\n return <div>Prohibited Entity view - Coming soon</div>\n \n case \"314a\":\n // TODO: Create Alert314aView\n return <div>314a view - Coming soon</div>\n \n case \"Dual Approval\":\n // TODO: Create DualApprovalAlertView\n return <div>Dual Approval view - Coming soon</div>\n \n case \"Transaction Processing Error\":\n // TODO: Create TransactionProcessingErrorAlertView\n return <div>Transaction Processing Error view - Coming soon</div>\n \n case \"ACH Return\":\n // TODO: Create ACHReturnAlertView\n return <div>ACH Return view - Coming soon</div>\n \n default:\n return <div>Unknown alert type: {alert.type}</div>\n }\n}\n","// Shared constants for form options across the application\n\nexport const COUNTRY_OPTIONS = [\n { value: \"US\", label: \"United States\" },\n { value: \"CA\", label: \"Canada\" },\n { value: \"GB\", label: \"United Kingdom\" },\n { value: \"DE\", label: \"Germany\" },\n { value: \"FR\", label: \"France\" }\n]\n\nexport const FI_ID_TYPE_OPTIONS = [\n { value: \"bic\", label: \"BIC\" },\n { value: \"swift\", label: \"SWIFT\" },\n { value: \"aba\", label: \"ABA\" },\n { value: \"iban\", label: \"IBAN\" },\n { value: \"routing\", label: \"Routing Number\" }\n]\n\nexport const ADDRESS_TYPE_OPTIONS = {\n FI: [\n { value: \"headquarters\", label: \"Headquarters\" },\n { value: \"branch\", label: \"Branch Office\" },\n { value: \"correspondent\", label: \"Correspondent Bank\" }\n ]\n}\n\nexport const RFI_STATUS_OPTIONS = [\n { value: \"Completed\", label: \"Completed\" },\n { value: \"Provided\", label: \"Provided\" },\n { value: \"Pending\", label: \"Pending\" }\n]\n\nexport const ASSIGNEE_OPTIONS = [\n { value: \"John Smith\", label: \"John Smith\" },\n { value: \"Sarah Johnson\", label: \"Sarah Johnson\" },\n { value: \"Michael Chen\", label: \"Michael Chen\" },\n { value: \"approverdev\", label: \"approverdev\" },\n { value: \"Unassigned\", label: \"Unassigned\" }\n]","export const getTypeBadgeVariant = (type: string): any => {\n switch (type) {\n case \"Ofac\":\n return \"alert-ofac\"\n case \"Dual Approval\":\n return \"alert-dual\"\n case \"Transaction Monitoring\":\n return \"alert-monitoring\"\n case \"Transaction Processing Error\":\n return \"alert-error\"\n default:\n return \"outline\"\n }\n}\n\nexport const getStatusColor = (status: string) => {\n switch (status) {\n case \"Unassigned\":\n return \"text-destructive\"\n case \"Closed\":\n return \"text-success\"\n case \"In Progress\":\n return \"text-warning\"\n default:\n return \"\"\n }\n}\n","import { Badge } from \"@/components/ui/badge\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { RFI_STATUS_OPTIONS, ASSIGNEE_OPTIONS } from \"@/lib/constants\"\nimport { cn } from \"@/lib/utils\"\nimport { getStatusColor } from \"@/lib/utils/alert-utils\"\n\ninterface AlertHeaderControlsProps {\n status: string\n assignee: string\n rfiStatus: string\n onAssigneeChange: (value: string) => void\n onRfiStatusChange: (value: string) => void\n}\n\nexport const AlertHeaderControls = ({\n status,\n assignee,\n rfiStatus,\n onAssigneeChange,\n onRfiStatusChange\n}: AlertHeaderControlsProps) => {\n return (\n <div className=\"flex items-center gap-4\">\n {/* Status Display */}\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">Status:</span>\n <span className={cn(\"font-medium text-sm\", getStatusColor(status))}>{status}</span>\n </div>\n\n {/* Assignee Select */}\n <div className=\"flex items-center gap-2 min-w-[180px]\">\n <span className=\"text-sm text-muted-foreground\">Assignee:</span>\n <EnhancedSelect\n value={assignee}\n onValueChange={onAssigneeChange}\n options={ASSIGNEE_OPTIONS}\n placeholder=\"Unassigned\"\n />\n </div>\n\n {/* RFI Status Select */}\n <div className=\"flex items-center gap-2 min-w-[180px]\">\n <span className=\"text-sm text-muted-foreground\">RFI Status:</span>\n <EnhancedSelect\n value={rfiStatus}\n onValueChange={onRfiStatusChange}\n options={RFI_STATUS_OPTIONS}\n placeholder=\"Select status\"\n />\n </div>\n </div>\n )\n}\n","import { useState } from \"react\"\nimport { Alert } from \"@/lib/mock-data/alert-data\"\nimport { FormCard } from \"@/components/ui/form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from \"@/components/ui/dialog\"\nimport { JsonViewer } from \"@/components/ui/json-viewer\"\nimport { ChevronRight } from \"lucide-react\"\n\ninterface ContextSectionProps {\n alert: Alert\n}\n\nexport const ContextSection = ({ alert }: ContextSectionProps) => {\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n\n const renderOFACContext = () => {\n const data = alert.contextData\n if (!data) return null\n\n return (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Entity Name\" value={data.entityName} />\n <InfoField label=\"Entity Type\" value={data.entityType} />\n <InfoField label=\"Match Score\" value={<Badge variant=\"alert-ofac\">{data.matchScore}</Badge>} />\n <InfoField label=\"List Name\" value={data.listName} />\n </div>\n\n <div>\n <h4 className=\"text-sm font-medium mb-3\">Flagged Items</h4>\n <div className=\"overflow-x-auto border rounded-lg\">\n <table className=\"w-full\">\n <thead className=\"border-b bg-muted/50\">\n <tr>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">Field</th>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">Value</th>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">Match Score</th>\n </tr>\n </thead>\n <tbody>\n {data.flaggedItems?.map((item: any, index: number) => (\n <tr key={index} className=\"border-b hover:bg-muted/50\">\n <td className=\"px-4 py-3 text-sm font-medium\">{item.field}</td>\n <td className=\"px-4 py-3 text-sm\">{item.value}</td>\n <td className=\"px-4 py-3\">\n <Badge variant={parseInt(item.matchScore) > 90 ? \"alert-ofac\" : \"outline\"}>\n {item.matchScore}\n </Badge>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n\n {alert.contextData && (\n <div>\n <Button \n variant=\"ghost\" \n className=\"w-full justify-between h-auto py-3 px-4 border rounded-lg hover:bg-muted/50\"\n onClick={() => setIsDialogOpen(true)}\n >\n <span className=\"text-sm font-medium\">Detail Result</span>\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n )}\n </div>\n )\n }\n\n const renderTransactionContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Transaction ID\" value=\"TXN-12345\" />\n <InfoField label=\"Amount\" value=\"$30,000.00\" />\n <InfoField label=\"Transaction Type\" value=\"Wire Transfer\" />\n <InfoField label=\"Date\" value=\"2025-09-30\" />\n </div>\n )\n }\n\n const renderFileRecordContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"File Name\" value=\"wire_batch_093025.csv\" />\n <InfoField label=\"Record Count\" value=\"1,234\" />\n <InfoField label=\"Error Count\" value=\"3\" />\n <InfoField label=\"Status\" value={<Badge variant=\"alert-error\">Failed</Badge>} />\n </div>\n )\n }\n\n const renderProductContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Product ID\" value=\"PROD-2787\" />\n <InfoField label=\"Product Name\" value=\"Business Checking Account\" />\n <InfoField label=\"Status\" value=\"Pending Deactivation\" />\n <InfoField label=\"Reason\" value=\"Compliance review required\" />\n </div>\n )\n }\n\n const getContextTitle = () => {\n switch (alert.contextType) {\n case \"Ofac\":\n return \"OFAC Context\"\n case \"Transaction\":\n return \"Transaction Context\"\n case \"File Record\":\n return \"File Processing Context\"\n case \"Product\":\n return \"Product Context\"\n default:\n return \"Context Information\"\n }\n }\n\n const renderContext = () => {\n switch (alert.contextType) {\n case \"Ofac\":\n return renderOFACContext()\n case \"Transaction\":\n return renderTransactionContext()\n case \"File Record\":\n return renderFileRecordContext()\n case \"Product\":\n return renderProductContext()\n default:\n return <p className=\"text-sm text-muted-foreground\">No additional context available</p>\n }\n }\n\n\n return (\n <>\n <FormCard title={getContextTitle()}>\n {renderContext()}\n </FormCard>\n\n <Dialog open={isDialogOpen} onOpenChange={setIsDialogOpen}>\n <DialogContent className=\"max-w-4xl\">\n <DialogHeader>\n <DialogTitle>{getContextTitle()} - Detail Result</DialogTitle>\n </DialogHeader>\n <JsonViewer data={alert.contextData} />\n </DialogContent>\n </Dialog>\n </>\n )\n}\n","import * as React from \"react\"\nimport { FormProvider as RHFFormProvider, UseFormReturn, FieldValues } from \"react-hook-form\"\n\ninterface FormProviderProps<T extends FieldValues> {\n form: UseFormReturn<T>\n children: React.ReactNode\n}\n\nexport const FormProvider = <T extends FieldValues>({ \n form, \n children \n}: FormProviderProps<T>) => {\n return (\n <RHFFormProvider {...form}>\n {children}\n </RHFFormProvider>\n )\n}","import * as React from \"react\"\nimport { Controller, useFormContext, FieldPath, FieldValues } from \"react-hook-form\"\nimport { EnhancedInput, type InputProps } from \"@/components/ui/enhanced-input\"\n\ninterface FormInputProps<T extends FieldValues = FieldValues> extends Omit<InputProps, 'error' | 'name'> {\n name: FieldPath<T>\n}\n\nexport const FormInput = <T extends FieldValues = FieldValues>({ \n name, \n ...props \n}: FormInputProps<T>) => {\n const { control, formState } = useFormContext<T>()\n const error = formState.errors[name]?.message as string | undefined\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <EnhancedInput\n {...props}\n {...field}\n error={error}\n />\n )}\n />\n )\n}","import * as React from \"react\"\nimport { Controller, useFormContext, FieldPath, FieldValues } from \"react-hook-form\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\n\ninterface FormSelectProps<T extends FieldValues = FieldValues> {\n name: FieldPath<T>\n label?: string\n hint?: string\n placeholder?: string\n options: { value: string; label: string; disabled?: boolean }[]\n disabled?: boolean\n className?: string\n}\n\nexport const FormSelect = <T extends FieldValues = FieldValues>({ \n name, \n ...props \n}: FormSelectProps<T>) => {\n const { control, formState } = useFormContext<T>()\n const error = formState.errors[name]?.message as string | undefined\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <EnhancedSelect\n {...props}\n value={field.value}\n onValueChange={field.onChange}\n error={error}\n />\n )}\n />\n )\n}","import { useState, useCallback, useEffect } from \"react\"\nimport { useForm, UseFormProps, UseFormReturn, FieldValues, Path } from \"react-hook-form\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { z } from \"zod\"\n\ninterface UseFormWithEditStateProps<T extends FieldValues> extends UseFormProps<T> {\n schema?: z.ZodSchema<T>\n initialEditing?: boolean\n onToggleEdit?: () => void\n onSave?: (data: T) => void | Promise<void>\n onCancel?: () => void\n}\n\ninterface UseFormWithEditStateReturn<T extends FieldValues> extends UseFormReturn<T> {\n isEditing: boolean\n isLoading: boolean\n handleToggleEdit: () => void\n handleSave: () => Promise<void>\n handleCancel: () => void\n isFormValid: boolean\n isDirty: boolean\n setFieldError: (field: Path<T>, error: string) => void\n}\n\nexport const useFormWithEditState = <T extends FieldValues>({\n schema,\n initialEditing = false,\n onToggleEdit,\n onSave,\n onCancel,\n ...formProps\n}: UseFormWithEditStateProps<T>): UseFormWithEditStateReturn<T> => {\n const [localEditing, setLocalEditing] = useState(initialEditing)\n const [isLoading, setIsLoading] = useState(false)\n \n const form = useForm<T>({\n ...formProps,\n resolver: schema ? zodResolver(schema) : undefined,\n })\n\n const { formState, reset, setError } = form\n const { isValid, isDirty } = formState\n \n // Sync local state with prop changes\n useEffect(() => {\n setLocalEditing(initialEditing)\n }, [initialEditing])\n \n const isEditing = onToggleEdit !== undefined ? initialEditing : localEditing\n \n const handleToggleEdit = useCallback(() => {\n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(prev => !prev)\n }\n }, [onToggleEdit])\n \n const handleSave = useCallback(async () => {\n if (!isValid) return\n \n setIsLoading(true)\n \n try {\n const data = form.getValues()\n if (onSave) {\n await onSave(data)\n }\n \n // Exit edit mode after successful save\n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(false)\n }\n } catch (error) {\n console.error(\"Form save error:\", error)\n // Don't exit edit mode on error\n } finally {\n setIsLoading(false)\n }\n }, [form, isValid, onSave, onToggleEdit])\n \n const handleCancel = useCallback(() => {\n // Reset form to original values\n reset()\n \n if (onCancel) {\n onCancel()\n }\n \n // Exit edit mode\n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(false)\n }\n }, [reset, onCancel, onToggleEdit])\n\n const setFieldError = useCallback((field: Path<T>, error: string) => {\n setError(field, { type: \"manual\", message: error })\n }, [setError])\n \n return {\n ...form,\n isEditing,\n isLoading,\n handleToggleEdit,\n handleSave,\n handleCancel,\n isFormValid: isValid,\n isDirty,\n setFieldError,\n }\n}","import { z } from \"zod\"\n\nexport const resolveAlertSchema = z.object({\n action: z.enum([\"APPROVE\", \"DECLINE\", \"CLOSE\"], {\n required_error: \"Please select an action\",\n }),\n changeToAccount: z.string().optional(),\n note: z.string().min(1, \"Note is required\").max(1000, \"Note must be less than 1000 characters\"),\n returnCode: z.string().optional(),\n}).refine((data) => {\n // If action is DECLINE, returnCode should be provided\n if (data.action === \"DECLINE\" && !data.returnCode) {\n return false\n }\n return true\n}, {\n message: \"Return code is required when declining\",\n path: [\"returnCode\"],\n})\n\nexport type ResolveAlertFormData = z.infer<typeof resolveAlertSchema>\n\nexport const RETURN_CODES = [\n { value: \"R03_NO_ACCOUNT\", label: \"R03 - No Account/Unable to Locate Account\" },\n { value: \"R01_INSUFFICIENT_FUNDS\", label: \"R01 - Insufficient Funds\" },\n { value: \"R02_ACCOUNT_CLOSED\", label: \"R02 - Account Closed\" },\n { value: \"R04_INVALID_ACCOUNT\", label: \"R04 - Invalid Account Number\" },\n { value: \"R10_UNAUTHORIZED\", label: \"R10 - Customer Advises Unauthorized\" },\n { value: \"R07_AUTHORIZATION_REVOKED\", label: \"R07 - Authorization Revoked\" },\n { value: \"R08_PAYMENT_STOPPED\", label: \"R08 - Payment Stopped\" },\n { value: \"R09_UNCOLLECTED_FUNDS\", label: \"R09 - Uncollected Funds\" },\n] as const\n","import { useState } from \"react\"\nimport { Controller } from \"react-hook-form\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\nimport { Button } from \"@/components/ui/button\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { EnhancedTextarea } from \"@/components/ui/enhanced-textarea\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { resolveAlertSchema, type ResolveAlertFormData, RETURN_CODES } from \"@/lib/schemas/alert-schemas\"\nimport { toast } from \"@/hooks/use-toast\"\n\ninterface ResolveAlertDialogProps {\n alertId: string\n open: boolean\n onOpenChange: (open: boolean) => void\n onResolve: (data: ResolveAlertFormData) => Promise<void>\n}\n\nexport const ResolveAlertDialog = ({ \n alertId, \n open, \n onOpenChange,\n onResolve \n}: ResolveAlertDialogProps) => {\n const form = useFormWithEditState<ResolveAlertFormData>({\n schema: resolveAlertSchema,\n defaultValues: {\n action: \"APPROVE\",\n changeToAccount: \"\",\n note: \"\",\n returnCode: \"\",\n },\n })\n\n const { handleSubmit, watch, control, formState } = form\n const action = watch(\"action\")\n\n const onSubmit = async (data: ResolveAlertFormData) => {\n try {\n await onResolve(data)\n toast({\n title: \"Alert Resolved\",\n description: `Alert #${alertId} has been ${data.action.toLowerCase()}d successfully.`,\n })\n onOpenChange(false)\n form.reset()\n } catch (error) {\n toast({\n title: \"Error\",\n description: \"Failed to resolve alert. Please try again.\",\n variant: \"destructive\",\n })\n }\n }\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"sm:max-w-[600px]\">\n <DialogHeader>\n <DialogTitle>Resolve Alert #{alertId}</DialogTitle>\n <DialogDescription>\n Select an action and provide details to resolve this alert.\n </DialogDescription>\n </DialogHeader>\n\n <FormProvider form={form}>\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-4\">\n <FormSelect\n name=\"action\"\n label=\"Action\"\n placeholder=\"Select action\"\n options={[\n { value: \"APPROVE\", label: \"Approve\" },\n { value: \"DECLINE\", label: \"Decline\" },\n { value: \"CLOSE\", label: \"Close\" },\n ]}\n />\n\n <FormInput\n name=\"changeToAccount\"\n label=\"Change to Account (Optional)\"\n placeholder=\"Enter account number\"\n />\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-foreground\">\n Note <span className=\"text-destructive\">*</span>\n </label>\n <Controller\n name=\"note\"\n control={control}\n render={({ field }) => (\n <EnhancedTextarea\n {...field}\n placeholder=\"Enter resolution notes...\"\n rows={4}\n error={formState.errors.note?.message}\n />\n )}\n />\n </div>\n\n {action === \"DECLINE\" && (\n <FormSelect\n name=\"returnCode\"\n label=\"Return Code\"\n placeholder=\"Select return code\"\n options={RETURN_CODES.map(code => ({\n value: code.value,\n label: code.label,\n }))}\n />\n )}\n\n <DialogFooter>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => {\n onOpenChange(false)\n form.reset()\n }}\n >\n Cancel\n </Button>\n <Button \n type=\"submit\" \n disabled={!formState.isValid || formState.isSubmitting}\n >\n {formState.isSubmitting ? \"Submitting...\" : \"Resolve\"}\n </Button>\n </DialogFooter>\n </form>\n </FormProvider>\n </DialogContent>\n </Dialog>\n )\n}\n","import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }","\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-white/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-foreground\", className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}","import * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 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\",\n className\n )}\n {...props}\n />\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { VariantProps, cva } from \"class-variance-authority\"\nimport { PanelLeft } from \"lucide-react\"\n\nimport { useIsMobile } from \"@/hooks/use-mobile\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Separator } from \"@/components/ui/separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"@/components/ui/sheet\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar:state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"15rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContext = {\n state: \"expanded\" | \"collapsed\"\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContext | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n }\n>(\n (\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile\n ? setOpenMobile((open) => !open)\n : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContext>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n }\n)\nSidebarProvider.displayName = \"SidebarProvider\"\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n }\n>(\n (\n {\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n },\n ref\n ) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n className={cn(\n \"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n ref={ref}\n className=\"group peer hidden md:block text-sidebar-foreground\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n \"duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\"\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\"\n )}\n />\n <div\n className={cn(\n \"duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\"\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n }\n)\nSidebar.displayName = \"Sidebar\"\n\nconst SidebarTrigger = React.forwardRef<\n React.ElementRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeft />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n})\nSidebarTrigger.displayName = \"SidebarTrigger\"\n\nconst SidebarRail = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\">\n>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\",\n \"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarRail.displayName = \"SidebarRail\"\n\nconst SidebarInset = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n \"relative flex min-h-svh flex-1 flex-col bg-background\",\n \"peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInset.displayName = \"SidebarInset\"\n\nconst SidebarInput = React.forwardRef<\n React.ElementRef<\"input\">,\n React.ComponentProps<\"input\">\n>(({ className, ...props }, ref) => {\n return (\n <input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n \"flex h-8 w-full rounded-md bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInput.displayName = \"SidebarInput\"\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarHeader.displayName = \"SidebarHeader\"\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarFooter.displayName = \"SidebarFooter\"\n\nconst SidebarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n {...props}\n />\n )\n})\nSidebarSeparator.displayName = \"SidebarSeparator\"\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarContent.displayName = \"SidebarContent\"\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n )\n})\nSidebarGroup.displayName = \"SidebarGroup\"\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n \"duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\"\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupAction.displayName = \"SidebarGroupAction\"\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n )\n})\nSidebarGroupContent.displayName = \"SidebarGroupContent\"\n\nconst SidebarMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => {\n return (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n )\n})\nSidebarMenu.displayName = \"SidebarMenu\"\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => {\n return (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n )\n})\nSidebarMenuItem.displayName = \"SidebarMenuItem\"\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md pl-4 pr-2 py-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:!size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n }\n)\nSidebarMenuButton.displayName = \"SidebarMenuButton\"\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n showOnHover?: boolean\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n \"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuAction.displayName = \"SidebarMenuAction\"\n\nconst SidebarMenuBadge = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n \"absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground select-none pointer-events-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\"\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn(\"rounded-md h-8 flex gap-2 px-2 items-center\", className)}\n {...props}\n >\n {showIcon && (\n <div className=\"flex size-4 rounded-sm bg-sidebar-primary/10\" />\n )}\n <div\n className=\"h-4 flex-1 max-w-[--skeleton-width] rounded-sm bg-sidebar-primary/10\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n})\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\"\n\nconst SidebarMenuSub = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => {\n return (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuSub.displayName = \"SidebarMenuSub\"\n\nconst SidebarMenuSubItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ ...props }, ref) => {\n return <li ref={ref} {...props} />\n})\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\"\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<\"a\"> & {\n asChild?: boolean\n size?: \"sm\" | \"md\"\n isActive?: boolean\n }\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md pl-4 pr-2 py-1 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-foreground/50\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\"\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","import { \n LayoutDashboard, Bell, Briefcase, ArrowLeftRight, FileText, Users, Building2, \n CreditCard, Shield, RefreshCw, DollarSign, Zap, Settings, User, Key,\n Upload, AlertCircle, TrendingUp, Box, BarChart3, FileCheck, Receipt,\n Landmark, Search, Repeat, CheckCircle, ChevronRight\n} from \"lucide-react\"\nimport { NavLink, useLocation } from \"react-router-dom\"\nimport { useState } from \"react\"\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from \"@radix-ui/react-collapsible\"\nimport braidLogo from \"@/assets/braid-logo.png\"\n\nimport {\n Sidebar,\n SidebarContent,\n SidebarGroup,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuBadge,\n SidebarMenuSub,\n SidebarMenuSubItem,\n SidebarMenuSubButton,\n SidebarTrigger,\n useSidebar,\n} from \"@/components/ui/sidebar\"\n\nconst navigationItems = [\n {\n title: \"Dashboard\",\n url: \"/dashboard\",\n icon: LayoutDashboard,\n },\n {\n title: \"Alerts and Cases\",\n icon: Bell,\n items: [\n {\n title: \"Alerts\",\n url: \"/alerts\",\n icon: Bell,\n badge: \"99+\"\n },\n {\n title: \"Cases\",\n url: \"/cases\",\n icon: Briefcase,\n },\n ],\n },\n {\n title: \"Transactions\",\n icon: ArrowLeftRight,\n items: [\n {\n title: \"Transaction History\",\n url: \"/transactions/history\",\n icon: FileText,\n },\n {\n title: \"Transaction Review\",\n url: \"/transactions/review\",\n icon: FileCheck,\n },\n {\n title: \"New Transaction\",\n url: \"/transactions/new\",\n icon: Receipt,\n },\n ],\n },\n {\n title: \"Statement\",\n url: \"/statement\",\n icon: FileText,\n },\n {\n title: \"Individuals\",\n url: \"/individuals\",\n icon: Users,\n },\n {\n title: \"Businesses\",\n url: \"/business\",\n icon: Building2,\n },\n {\n title: \"Counterparty\",\n icon: Briefcase,\n items: [\n {\n title: \"Management\",\n url: \"/counterparty/manage\",\n icon: FileCheck,\n },\n {\n title: \"Create Counterparty\",\n url: \"/counterparty/create\",\n icon: Receipt,\n },\n {\n title: \"Domestic Wire\",\n url: \"/counterparty/domestic-wire\",\n icon: Zap,\n },\n ],\n },\n {\n title: \"Accounts\",\n url: \"/accounts\",\n icon: CreditCard,\n },\n {\n title: \"Compliance\",\n icon: Shield,\n items: [\n {\n title: \"OFAC\",\n url: \"/compliance/ofac\",\n icon: Shield,\n },\n {\n title: \"314a\",\n url: \"/compliance/314a\",\n icon: FileText,\n },\n {\n title: \"Velocity Limits\",\n url: \"/compliance/velocity\",\n icon: TrendingUp,\n },\n ],\n },\n {\n title: \"Recon\",\n icon: RefreshCw,\n items: [\n {\n title: \"File Upload\",\n url: \"/recon/upload\",\n icon: Upload,\n },\n {\n title: \"Exception Review\",\n url: \"/recon/exceptions\",\n icon: AlertCircle,\n },\n ],\n },\n {\n title: \"ACH\",\n icon: Repeat,\n items: [\n {\n title: \"Processing\",\n url: \"/ach/processing\",\n icon: FileText,\n },\n {\n title: \"Settlement\",\n url: \"/ach/settlement\",\n icon: Landmark,\n },\n {\n title: \"Return\",\n url: \"/ach/return\",\n icon: Search,\n },\n {\n title: \"NOC\",\n url: \"/ach/noc\",\n icon: RefreshCw,\n },\n ],\n },\n {\n title: \"Wire\",\n icon: Zap,\n items: [\n {\n title: \"Processing\",\n url: \"/wire/processing\",\n icon: FileText,\n },\n {\n title: \"Settlement\",\n url: \"/wire/settlement\",\n icon: Landmark,\n },\n ],\n },\n {\n title: \"Configurations\",\n icon: Settings,\n items: [\n {\n title: \"Developers\",\n url: \"/configurations/developers\",\n icon: Box,\n },\n {\n title: \"Programs\",\n url: \"/configurations/programs\",\n icon: LayoutDashboard,\n },\n {\n title: \"Products\",\n url: \"/configurations/products\",\n icon: FileText,\n },\n ],\n },\n {\n title: \"ClearSight\",\n url: \"/clearsight\",\n icon: BarChart3,\n },\n {\n title: \"Settings\",\n icon: Settings,\n items: [\n {\n title: \"User Management\",\n url: \"/settings/users\",\n icon: Users,\n },\n {\n title: \"API Key\",\n url: \"/settings/api-key\",\n icon: Key,\n },\n ],\n },\n]\n\nexport function AppSidebar() {\n const { state } = useSidebar()\n const location = useLocation()\n const currentPath = location.pathname\n \n // Track which menu items are open\n const [openItems, setOpenItems] = useState<string[]>([])\n\n const isActive = (path: string) => currentPath === path\n \n const toggleItem = (title: string) => {\n setOpenItems(prev => \n prev.includes(title) \n ? prev.filter(item => item !== title)\n : [...prev, title]\n )\n }\n\n return (\n <Sidebar collapsible=\"icon\">\n <SidebarHeader className=\"border-b border-sidebar-border\">\n <div className=\"flex items-center justify-between gap-2 px-4 py-3\">\n {state !== \"collapsed\" ? (\n <img src={braidLogo} alt=\"Braid\" className=\"h-8\" />\n ) : (\n <img src={braidLogo} alt=\"Braid\" className=\"h-6\" />\n )}\n <SidebarTrigger />\n </div>\n </SidebarHeader>\n\n <SidebarContent>\n <SidebarMenu>\n {navigationItems.map((item) => {\n // Check if it's a group with sub-items\n if (item.items) {\n const isOpen = openItems.includes(item.title)\n \n return (\n <Collapsible\n key={item.title}\n open={isOpen}\n onOpenChange={() => toggleItem(item.title)}\n >\n <SidebarMenuItem>\n <CollapsibleTrigger asChild>\n <SidebarMenuButton\n tooltip={state === \"collapsed\" ? item.title : undefined}\n >\n <item.icon className=\"w-4 h-4\" />\n <span>{item.title}</span>\n <ChevronRight \n className={`ml-auto h-4 w-4 transition-transform ${isOpen ? 'rotate-90' : ''}`}\n />\n </SidebarMenuButton>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <SidebarMenuSub>\n {item.items.map((subItem) => (\n <SidebarMenuSubItem key={subItem.title}>\n <SidebarMenuSubButton \n asChild\n isActive={isActive(subItem.url)}\n >\n <NavLink to={subItem.url}>\n <subItem.icon className=\"w-4 h-4\" />\n <span>{subItem.title}</span>\n {subItem.badge && (\n <SidebarMenuBadge className=\"ml-auto\">\n {subItem.badge}\n </SidebarMenuBadge>\n )}\n </NavLink>\n </SidebarMenuSubButton>\n </SidebarMenuSubItem>\n ))}\n </SidebarMenuSub>\n </CollapsibleContent>\n </SidebarMenuItem>\n </Collapsible>\n )\n }\n\n // Single item without sub-items\n return (\n <SidebarMenuItem key={item.title}>\n <SidebarMenuButton \n asChild\n isActive={isActive(item.url!)}\n tooltip={state === \"collapsed\" ? item.title : undefined}\n >\n <NavLink to={item.url!}>\n <item.icon className=\"w-4 h-4\" />\n <span>{item.title}</span>\n </NavLink>\n </SidebarMenuButton>\n </SidebarMenuItem>\n )\n })}\n </SidebarMenu>\n </SidebarContent>\n </Sidebar>\n )\n}","import { ReactNode } from \"react\"\n\ninterface MainLayoutProps {\n children: ReactNode\n}\n\nexport const MainLayout = ({ children }: MainLayoutProps) => {\n return (\n <div className=\"flex min-h-screen w-full\">\n <main className=\"flex-1 pl-4\">\n {children}\n </main>\n </div>\n )\n}","import { useState, useCallback, useEffect } from \"react\"\n\ninterface UseEditStateProps {\n initialEditing?: boolean\n onToggleEdit?: () => void\n onSave?: () => void | Promise<void>\n onCancel?: () => void\n}\n\nexport const useEditState = ({ initialEditing = false, onToggleEdit, onSave, onCancel }: UseEditStateProps) => {\n const [localEditing, setLocalEditing] = useState(initialEditing)\n const [isLoading, setIsLoading] = useState(false)\n \n // Sync local state with prop changes\n useEffect(() => {\n setLocalEditing(initialEditing)\n }, [initialEditing])\n \n const isEditing = onToggleEdit !== undefined ? initialEditing : localEditing\n \n const handleToggleEdit = useCallback(() => {\n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(prev => !prev)\n }\n }, [onToggleEdit])\n \n const handleSave = useCallback(async () => {\n setIsLoading(true)\n \n try {\n if (onSave) {\n await onSave()\n }\n \n // Exit edit mode after successful save\n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(false)\n }\n } catch (error) {\n console.error(\"Save error:\", error)\n // Don't exit edit mode on error\n } finally {\n setIsLoading(false)\n }\n }, [onSave, onToggleEdit])\n \n const handleCancel = useCallback(() => {\n if (onCancel) {\n onCancel()\n }\n \n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(false)\n }\n }, [onCancel, onToggleEdit])\n \n return {\n isEditing,\n isLoading,\n handleToggleEdit,\n handleSave,\n handleCancel\n }\n}","import * as React from \"react\"\nimport { FormCard, type FormCardProps } from \"@/components/ui/form-card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Edit } from \"lucide-react\"\nimport { useEditState } from \"@/hooks/useEditState\"\nimport { cn } from \"@/lib/utils\"\n\ninterface EditableFormCardProps extends Omit<FormCardProps, 'headerActions' | 'children'> {\n title: string\n description?: string\n children?: React.ReactNode\n editContent: React.ReactNode\n viewContent: React.ReactNode\n isEditing?: boolean\n onToggleEdit?: () => void\n hideActions?: boolean\n onSave?: () => void | Promise<void>\n onCancel?: () => void\n className?: string\n isFormValid?: boolean\n isDirty?: boolean\n isSubmitting?: boolean\n}\n\nexport const EditableFormCard = React.forwardRef<HTMLDivElement, EditableFormCardProps>(\n ({ \n title, \n description, \n editContent, \n viewContent, \n isEditing, \n onToggleEdit, \n hideActions = false,\n onSave,\n onCancel,\n className,\n variant = \"subtle\",\n isFormValid = true,\n isDirty = false,\n isSubmitting = false,\n ...props \n }, ref) => {\n const { isEditing: currentlyEditing, handleToggleEdit, handleCancel } = useEditState({\n initialEditing: isEditing ?? false,\n onToggleEdit\n })\n\n const handleSaveAction = async () => {\n if (onSave) {\n await onSave()\n }\n }\n\n const handleCancelAction = () => {\n if (onCancel) {\n onCancel()\n } else {\n handleCancel()\n }\n }\n\n return (\n <FormCard \n ref={ref}\n title={title}\n description={description}\n variant={variant}\n className={className}\n headerActions={\n !hideActions ? (\n <div className=\"flex items-center gap-2\">\n {currentlyEditing ? (\n <>\n <Button variant=\"outline\" size=\"sm\" onClick={handleCancelAction}>\n Cancel\n </Button>\n <Button \n size=\"sm\" \n onClick={handleSaveAction}\n disabled={!isFormValid || isSubmitting}\n >\n {isSubmitting ? \"Saving...\" : \"Save\"}\n </Button>\n </>\n ) : (\n <Button \n variant=\"ghost\" \n size=\"icon\" \n onClick={handleToggleEdit} \n className=\"text-primary hover:text-primary/80 hover:bg-primary/10\"\n >\n <Edit className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n ) : undefined\n }\n {...props}\n >\n {currentlyEditing ? editContent : viewContent}\n </FormCard>\n )\n }\n)\n\nEditableFormCard.displayName = \"EditableFormCard\"","import { z } from \"zod\"\n\nexport const achBasicInfoSchema = z.object({\n counterpartyName: z.string().min(1, \"Counterparty name is required\"),\n shortName: z.string().min(1, \"Short name is required\"),\n type: z.string().min(1, \"Type is required\"),\n description: z.string().optional(),\n})\n\nexport const achBankDetailsSchema = z.object({\n gatewayRoutingNumber: z.string().min(9, \"Gateway routing number must be at least 9 digits\").max(9, \"Gateway routing number must be 9 digits\"),\n rdfiNumberQualifier: z.string().min(1, \"RDFI number qualifier is required\"),\n})\n\nexport const achTransferSchema = z.object({\n basicInfo: achBasicInfoSchema,\n bankDetails: achBankDetailsSchema,\n})\n\nexport const bankingDetailsSchema = z.object({\n primaryBank: z.string().min(1, \"Primary bank is required\"),\n accountNumber: z.string().min(1, \"Account number is required\"),\n routingNumber: z.string().min(9, \"Routing number must be at least 9 digits\").max(9, \"Routing number must be 9 digits\"),\n accountType: z.string().min(1, \"Account type is required\"),\n})\n\nexport type ACHBasicInfo = z.infer<typeof achBasicInfoSchema>\nexport type ACHBankDetails = z.infer<typeof achBankDetailsSchema>\nexport type ACHTransfer = z.infer<typeof achTransferSchema>\nexport type BankingDetails = z.infer<typeof bankingDetailsSchema>","export interface ACHBasicInfo {\n bankName: string\n accountType: string\n routingNumber: string\n accountNumber: string\n countryCode: string\n status: string\n swiftCode?: string\n bankAddress?: string\n}\n\nexport interface ACHBankDetails {\n gatewayRoutingNumber: string\n rdfiNumberQualifier: string\n}\n\nexport interface BankAddress {\n street: string\n city: string\n state: string\n postalCode: string\n country: string\n}\n\nexport interface BankingDetails {\n primaryBank: string\n accountNumber: string\n routingNumber: string\n accountType: string\n}\n\nexport const defaultACHBasicInfo: ACHBasicInfo = {\n bankName: \"Bank of New York\",\n accountType: \"checking\",\n routingNumber: \"043087080\",\n accountNumber: \"1234567890\",\n countryCode: \"US\",\n status: \"active\",\n swiftCode: \"CHASUS33\",\n bankAddress: \"270 Park Avenue, New York, NY 10017\"\n}\n\nexport const defaultACHBankDetails: ACHBankDetails = {\n gatewayRoutingNumber: \"043087080\",\n rdfiNumberQualifier: \"01\"\n}\n\nexport const defaultBankAddress: BankAddress = {\n street: \"270 Park Avenue\",\n city: \"New York\", \n state: \"NY\",\n postalCode: \"10017\",\n country: \"US\"\n}\n\nexport const defaultBankingDetails: BankingDetails = {\n primaryBank: \"JPMorgan Chase\",\n accountNumber: \"****-****-****-1234\",\n routingNumber: \"021000021\",\n accountType: \"Business Checking\"\n}\n\n// Combined ACH Transfer data that matches the schema\nexport const defaultACHTransfer = {\n basicInfo: {\n counterpartyName: \"Acme Corporation\",\n shortName: \"ACME\",\n type: \"business\",\n description: \"ACH transfer for Acme Corporation\"\n },\n bankDetails: defaultACHBankDetails\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { achTransferSchema, type ACHTransfer } from \"@/lib/schemas/banking-schemas\"\nimport { defaultACHTransfer } from \"@/lib/mock-data/banking-data\"\n\ninterface ACHBankCardProps {\n data?: Partial<ACHTransfer>\n onDataChange?: (data: ACHTransfer) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const ACHBankCard = ({ data, onDataChange, isEditing, onToggleEdit, className, hideActions }: ACHBankCardProps) => {\n const form = useFormWithEditState<ACHTransfer>({\n schema: achTransferSchema,\n defaultValues: { ...defaultACHTransfer, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"bankDetails.gatewayRoutingNumber\"\n label=\"Gateway Routing Number\"\n placeholder=\"Enter gateway routing number\"\n pattern=\"[0-9]{9}\"\n maxLength={9}\n hint=\"9-digit gateway routing number\"\n required\n />\n \n <FormInput\n name=\"bankDetails.rdfiNumberQualifier\"\n label=\"RDFI Number Qualifier\"\n placeholder=\"Enter RDFI qualifier\"\n maxLength={2}\n hint=\"2-digit RDFI number qualifier\"\n required\n />\n </div>\n </div>\n </FormProvider>\n )\n\n const viewContent = (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <InfoField label=\"Gateway Routing Number\" value={form.getValues(\"bankDetails.gatewayRoutingNumber\")} layout=\"horizontal\" />\n <InfoField label=\"RDFI Number Qualifier\" value={form.getValues(\"bankDetails.rdfiNumberQualifier\")} layout=\"horizontal\" />\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"ACH Bank Details\"\n description=\"ACH-specific routing and qualification information\"\n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n isFormValid={form.isFormValid}\n isDirty={form.isDirty}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { achTransferSchema, type ACHTransfer } from \"@/lib/schemas/banking-schemas\"\nimport { defaultACHTransfer } from \"@/lib/mock-data/banking-data\"\n\ninterface ACHBasicInfoCardProps {\n data?: Partial<ACHTransfer>\n onDataChange?: (data: ACHTransfer) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const ACHBasicInfoCard = ({ \n data, \n onDataChange, \n isEditing, \n onToggleEdit, \n className, \n hideActions \n}: ACHBasicInfoCardProps) => {\n const form = useFormWithEditState<ACHTransfer>({\n schema: achTransferSchema,\n defaultValues: { ...defaultACHTransfer, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <FormInput\n name=\"basicInfo.counterpartyName\"\n label=\"Counterparty Name\"\n placeholder=\"Enter counterparty name\"\n required\n />\n \n <FormInput\n name=\"basicInfo.shortName\"\n label=\"Short Name\"\n placeholder=\"Enter short name\"\n required\n />\n </div>\n \n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <FormSelect\n name=\"basicInfo.type\"\n label=\"Type\"\n placeholder=\"Select type\"\n options={[\n { value: \"business\", label: \"Business\" },\n { value: \"individual\", label: \"Individual\" }\n ]}\n />\n \n <FormInput\n name=\"basicInfo.description\"\n label=\"Description\"\n placeholder=\"Enter description\"\n />\n </div>\n </div>\n </FormProvider>\n )\n\n const viewContent = (\n <div className=\"space-y-3\">\n <InfoField label=\"Counterparty Name\" value={form.getValues(\"basicInfo.counterpartyName\")} layout=\"horizontal\" />\n <InfoField label=\"Short Name\" value={form.getValues(\"basicInfo.shortName\")} layout=\"horizontal\" />\n <InfoField label=\"Type\" value={form.getValues(\"basicInfo.type\")} layout=\"horizontal\" />\n <InfoField label=\"Description\" value={form.getValues(\"basicInfo.description\") || \"N/A\"} layout=\"horizontal\" />\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Basic Information\" \n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n isFormValid={form.isFormValid}\n isDirty={form.isDirty}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface ResponsiveGridProps {\n children: React.ReactNode\n type?: \"cards\" | \"forms\" | \"data\" | \"custom\"\n gap?: \"sm\" | \"md\" | \"lg\" | \"xl\"\n editMode?: boolean\n className?: string\n}\n\nconst typeClasses = {\n cards: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3\",\n forms: \"grid-cols-1 lg:grid-cols-2\", \n data: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\",\n custom: \"\"\n}\n\nconst gapClasses = {\n sm: \"gap-3\",\n md: \"gap-4\",\n lg: \"gap-6\", \n xl: \"gap-8\"\n}\n\nexport const ResponsiveGrid = React.forwardRef<HTMLDivElement, ResponsiveGridProps>(\n ({ children, type = \"cards\", gap = \"md\", editMode = false, className }, ref) => {\n const gridClasses = editMode ? \"grid-cols-1\" : typeClasses[type]\n \n return (\n <div \n ref={ref}\n className={cn(\n \"grid\",\n gridClasses,\n gapClasses[gap],\n className\n )}\n >\n {children}\n </div>\n )\n }\n)\n\nResponsiveGrid.displayName = \"ResponsiveGrid\"","import { z } from \"zod\"\n\nexport const counterpartyBasicInfoSchema = z.object({\n name: z.string().min(1, \"Name is required\"),\n type: z.string().min(1, \"Type is required\"),\n status: z.string().min(1, \"Status is required\"),\n description: z.string().optional(),\n})\n\nexport const counterpartyProfileSchema = z.object({\n legalName: z.string().min(1, \"Legal name is required\"),\n dbaName: z.string().optional(),\n businessType: z.string().min(1, \"Business type is required\"),\n taxId: z.string().min(1, \"Tax ID is required\"),\n businessPhone: z.string().min(1, \"Business phone is required\"),\n businessEmail: z.string().email(\"Invalid email format\"),\n website: z.string().url(\"Invalid URL format\").optional().or(z.literal(\"\")),\n})\n\nexport const addressSchema = z.object({\n streetAddress: z.string().min(1, \"Street address is required\"),\n apartment: z.string().optional(),\n city: z.string().min(1, \"City is required\"),\n state: z.string().min(1, \"State is required\"),\n postalCode: z.string().min(1, \"Postal code is required\"),\n country: z.string().min(1, \"Country is required\"),\n addressType: z.string().optional(),\n})\n\nexport const counterpartyRecordsSchema = z.object({\n id: z.string(),\n createdBy: z.string(),\n createdAt: z.string(),\n updatedBy: z.string(),\n updatedAt: z.string(),\n lastOFACDate: z.string(),\n lastOFACStatus: z.string(),\n})\n\nexport type CounterpartyBasicInfo = z.infer<typeof counterpartyBasicInfoSchema>\nexport type CounterpartyProfile = z.infer<typeof counterpartyProfileSchema>\nexport type Address = z.infer<typeof addressSchema>\nexport type CounterpartyRecords = z.infer<typeof counterpartyRecordsSchema>","import { z } from \"zod\"\nimport { addressSchema } from \"./counterparty-schemas\"\n\nexport const wireBasicInfoSchema = z.object({\n counterpartyName: z.string().min(1, \"Counterparty name is required\"),\n shortName: z.string().min(1, \"Short name is required\"),\n type: z.string().min(1, \"Type is required\"),\n description: z.string().optional(),\n})\n\nexport const beneficiarySchema = z.object({\n name: z.string().min(1, \"Beneficiary name is required\"),\n accountNumber: z.string().min(1, \"Account number is required\"),\n address: addressSchema,\n})\n\nexport const originatorFISchema = z.object({\n accountNumber: z.string().min(1, \"Account number is required\"),\n name: z.string().min(1, \"FI name is required\"),\n idType: z.string().min(1, \"ID type is required\"),\n idNumber: z.string().min(1, \"ID number is required\"),\n address: addressSchema,\n})\n\nexport const intermediaryFISchema = z.object({\n accountNumber: z.string().optional(),\n name: z.string().optional(),\n idType: z.string().optional(),\n idNumber: z.string().optional(),\n address: addressSchema.optional(),\n})\n\nexport const wireTransferSchema = z.object({\n basicInfo: wireBasicInfoSchema,\n beneficiary: beneficiarySchema,\n originatorFI: originatorFISchema,\n intermediaryFI: intermediaryFISchema.optional(),\n})\n\nexport type WireBasicInfo = z.infer<typeof wireBasicInfoSchema>\nexport type Beneficiary = z.infer<typeof beneficiarySchema>\nexport type OriginatorFI = z.infer<typeof originatorFISchema>\nexport type IntermediaryFI = z.infer<typeof intermediaryFISchema>\nexport type WireTransfer = z.infer<typeof wireTransferSchema>","import { z } from \"zod\"\nimport { addressSchema } from \"./counterparty-schemas\"\n\nexport const businessProfileSchema = z.object({\n legalName: z.string().min(1, \"Legal name is required\"),\n dbaName: z.string().optional(),\n businessType: z.string().min(1, \"Business type is required\"),\n taxId: z.string().min(1, \"Tax ID is required\"),\n formationDate: z.string().optional(),\n idType: z.string().optional(),\n incorporationState: z.string().optional(),\n website: z.string().url(\"Invalid URL format\").optional().or(z.literal(\"\")),\n contactFirstName: z.string().optional(),\n contactLastName: z.string().optional(),\n contactEmail: z.string().optional(),\n contactPhone: z.string().optional(),\n address: addressSchema,\n})\n\nexport const businessStatusSchema = z.object({\n status: z.string().min(1, \"Status is required\"),\n cipStatus: z.string().min(1, \"CIP status is required\"),\n createdDate: z.string(),\n updatedDate: z.string(),\n lastOFACDate: z.string(),\n lastOFACStatus: z.string(),\n})\n\nexport const businessRecordsSchema = z.object({\n id: z.string(),\n createdBy: z.string(),\n createdAt: z.string(),\n updatedBy: z.string(),\n updatedAt: z.string(),\n lastOFACDate: z.string(),\n lastOFACStatus: z.string(),\n})\n\nexport type BusinessProfile = z.infer<typeof businessProfileSchema>\nexport type BusinessStatus = z.infer<typeof businessStatusSchema>\nexport type BusinessRecords = z.infer<typeof businessRecordsSchema>","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { addressSchema, type Address } from \"@/lib/schemas\"\nimport { defaultBankAddress } from \"@/lib/mock-data/banking-data\"\n\ninterface BankAddressCardProps {\n data?: Partial<Address>\n onDataChange?: (data: Address) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const BankAddressCard = ({ \n data, \n onDataChange, \n isEditing, \n onToggleEdit, \n className, \n hideActions \n}: BankAddressCardProps) => {\n const form = useFormWithEditState<Address>({\n schema: addressSchema,\n defaultValues: { ...defaultBankAddress, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"streetAddress\"\n label=\"Street Address\"\n placeholder=\"Enter street address\"\n required\n />\n \n <FormInput\n name=\"city\"\n label=\"City\"\n placeholder=\"Enter city\"\n required\n />\n \n <FormInput\n name=\"state\"\n label=\"State\"\n placeholder=\"Enter state\"\n required\n />\n \n <FormInput\n name=\"postalCode\"\n label=\"Postal Code\"\n placeholder=\"Enter postal code\"\n required\n />\n </div>\n </div>\n </FormProvider>\n )\n\n const formValues = form.watch()\n const viewContent = (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <InfoField label=\"Street Address\" value={formValues?.streetAddress} layout=\"horizontal\" />\n <InfoField label=\"City\" value={formValues?.city} layout=\"horizontal\" />\n <InfoField label=\"State\" value={formValues?.state} layout=\"horizontal\" />\n <InfoField label=\"Postal Code\" value={formValues?.postalCode} layout=\"horizontal\" />\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Bank Address\"\n description=\"Physical address of the banking institution\"\n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import { useState } from \"react\"\nimport { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { ACHBasicInfoCard } from \"./ACHBasicInfoCard\"\nimport { ACHBankCard } from \"./ACHBankCard\"\nimport { BankAddressCard } from \"./BankAddressCard\"\nimport { defaultACHTransfer } from \"@/lib/mock-data/banking-data\"\nimport { type ACHTransfer } from \"@/lib/schemas/banking-schemas\"\n\ninterface ACHTransferSectionProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const ACHTransferSection = ({ isEditing, onToggleEdit, className, hideActions }: ACHTransferSectionProps) => {\n const [achData, setAchData] = useState<ACHTransfer>(defaultACHTransfer)\n\n const handleDataChange = (newData: ACHTransfer) => {\n setAchData(newData)\n }\n\n const content = (\n <div className=\"space-y-6\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium text-muted-foreground\">Transfer Type:</span>\n <span className=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-secondary text-secondary-foreground\">\n ACH\n </span>\n </div>\n \n <ResponsiveGrid type=\"forms\" gap=\"md\" editMode={isEditing}>\n <ACHBasicInfoCard \n data={achData}\n onDataChange={handleDataChange}\n isEditing={isEditing} \n hideActions={true} \n />\n <ACHBankCard \n data={achData}\n onDataChange={handleDataChange}\n isEditing={isEditing} \n hideActions={true} \n />\n <BankAddressCard isEditing={isEditing} hideActions={true} />\n </ResponsiveGrid>\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"ACH Transfer Configuration\"\n description=\"Configure ACH transfer settings and bank details\"\n variant=\"subtle\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={content}\n viewContent={content}\n />\n )\n}","import { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { COUNTRY_OPTIONS, ADDRESS_TYPE_OPTIONS } from \"@/lib/constants\"\n\ninterface AddressFormProps {\n title: string\n description: string\n fieldPrefix?: string\n showAddressType?: boolean\n addressTypeOptions?: Array<{ value: string; label: string }>\n fieldOverrides?: {\n state?: Partial<React.ComponentProps<typeof EnhancedInput>>\n city?: Partial<React.ComponentProps<typeof EnhancedInput>>\n streetAddress?: Partial<React.ComponentProps<typeof EnhancedInput>>\n postalCode?: Partial<React.ComponentProps<typeof EnhancedInput>>\n apartment?: Partial<React.ComponentProps<typeof EnhancedInput>>\n }\n showApartment?: boolean\n}\n\nexport const AddressForm = ({ \n title, \n description, \n fieldPrefix = \"\",\n showAddressType = true,\n addressTypeOptions = ADDRESS_TYPE_OPTIONS.FI,\n fieldOverrides = {},\n showApartment = false\n}: AddressFormProps) => {\n const addressTypeLabel = fieldPrefix ? `${fieldPrefix} Address Type` : \"Address Type\"\n \n return (\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h2 className=\"text-lg font-semibold text-foreground\">{title}</h2>\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n </div>\n \n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 gap-6\">\n <EnhancedInput\n label=\"State\"\n placeholder=\"Enter state\"\n hint=\"State or province\"\n {...fieldOverrides.state}\n />\n \n <EnhancedInput\n label=\"City\"\n placeholder=\"Enter city\"\n required\n {...fieldOverrides.city}\n />\n \n <EnhancedInput\n label=\"Street Address\"\n placeholder=\"Enter street address\"\n hint={fieldPrefix ? `${fieldPrefix} street address` : \"Primary street address\"}\n {...fieldOverrides.streetAddress}\n />\n \n {showApartment && (\n <EnhancedInput\n label=\"Apt, Building etc\"\n placeholder=\"Additional address information\"\n hint=\"Additional address information\"\n {...fieldOverrides.apartment}\n />\n )}\n \n <EnhancedInput\n label=\"Postal Code\"\n placeholder=\"12345\"\n {...fieldOverrides.postalCode}\n />\n \n <EnhancedSelect\n label=\"Country Code\"\n placeholder=\"Select country\"\n options={COUNTRY_OPTIONS}\n />\n \n {showAddressType && (\n <EnhancedSelect\n label={addressTypeLabel}\n placeholder=\"Select type\"\n options={addressTypeOptions}\n />\n )}\n </div>\n </div>\n </div>\n )\n}","import { FormCard } from \"@/components/ui/form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { Button } from \"@/components/ui/button\"\nimport { Edit } from \"lucide-react\"\n\ninterface BankingDetailsCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n}\n\nexport const BankingDetailsCard = ({ isEditing, onToggleEdit, className }: BankingDetailsCardProps) => {\n return (\n <FormCard \n title=\"Banking Details\"\n className={className}\n headerActions={\n <div className=\"flex items-center gap-2\">\n {isEditing ? (\n <>\n <Button variant=\"outline\" size=\"sm\" onClick={onToggleEdit}>\n Cancel\n </Button>\n <Button size=\"sm\" onClick={onToggleEdit}>\n Save\n </Button>\n </>\n ) : (\n <Button variant=\"ghost\" size=\"icon\" onClick={onToggleEdit} className=\"text-primary hover:text-primary/80 hover:bg-primary/10\">\n <Edit className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n }\n >\n <div className=\"space-y-3\">\n <div className=\"grid grid-cols-1 gap-2\">\n <InfoField label=\"Primary Bank\" value=\"JPMorgan Chase\" layout=\"horizontal\" />\n <InfoField label=\"Account Number\" value=\"****-****-****-1234\" layout=\"horizontal\" />\n <InfoField label=\"Routing Number\" value=\"021000021\" layout=\"horizontal\" />\n <InfoField label=\"Account Type\" value=\"Business Checking\" layout=\"horizontal\" />\n </div>\n </div>\n </FormCard>\n )\n}","import { Badge } from \"@/components/ui/badge\"\nimport { Building2, User, Shield, Heart } from \"lucide-react\"\n\ninterface CounterpartyTypeBadgeProps {\n type: \"BUSINESS\" | \"INDIVIDUAL\" | \"GOVERNMENT\" | \"NONPROFIT\"\n className?: string\n}\n\nconst typeConfig = {\n BUSINESS: {\n variant: \"business\" as const,\n label: \"Business\",\n icon: Building2\n },\n INDIVIDUAL: {\n variant: \"individual\" as const,\n label: \"Individual\",\n icon: User\n },\n GOVERNMENT: {\n variant: \"government\" as const,\n label: \"Government\",\n icon: Shield\n },\n NONPROFIT: {\n variant: \"nonprofit\" as const,\n label: \"Non-Profit\",\n icon: Heart\n }\n}\n\nexport const CounterpartyTypeBadge = ({ type, className }: CounterpartyTypeBadgeProps) => {\n const config = typeConfig[type]\n \n // Fallback if config is not found\n if (!config) {\n return (\n <Badge variant=\"secondary\" className={className}>\n <Building2 className=\"w-3 h-3 mr-1\" />\n {type || \"Unknown\"}\n </Badge>\n )\n }\n \n const Icon = config.icon\n\n return (\n <Badge variant={config.variant} className={className}>\n <Icon className=\"w-3 h-3 mr-1\" />\n {config.label}\n </Badge>\n )\n}","import { Badge } from \"@/components/ui/badge\"\nimport { CheckCircle, XCircle, Clock, AlertTriangle } from \"lucide-react\"\n\ninterface StatusBadgeProps {\n status: \"ACTIVE\" | \"INACTIVE\" | \"PENDING\" | \"SUSPENDED\" | \"POSTED\" | \"FAILED\" | \"CANCELLED\"\n className?: string\n}\n\nconst statusConfig = {\n ACTIVE: {\n variant: \"active\" as const,\n label: \"Active\",\n icon: CheckCircle\n },\n INACTIVE: {\n variant: \"inactive\" as const,\n label: \"Inactive\",\n icon: XCircle\n },\n PENDING: {\n variant: \"pending\" as const,\n label: \"Pending\",\n icon: Clock\n },\n SUSPENDED: {\n variant: \"suspended\" as const,\n label: \"Suspended\",\n icon: AlertTriangle\n },\n POSTED: {\n variant: \"active\" as const,\n label: \"Posted\",\n icon: CheckCircle\n },\n FAILED: {\n variant: \"inactive\" as const,\n label: \"Failed\",\n icon: XCircle\n },\n CANCELLED: {\n variant: \"secondary\" as const,\n label: \"Cancelled\",\n icon: XCircle\n }\n}\n\nexport const StatusBadge = ({ status, className }: StatusBadgeProps) => {\n const config = statusConfig[status]\n \n // Fallback if config is not found\n if (!config) {\n return (\n <Badge variant=\"secondary\" className={className}>\n <AlertTriangle className=\"w-3 h-3 mr-1\" />\n {status || \"Unknown\"}\n </Badge>\n )\n }\n \n const Icon = config.icon\n\n return (\n <Badge variant={config.variant} className={className}>\n <Icon className=\"w-3 h-3 mr-1\" />\n {config.label}\n </Badge>\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { CounterpartyTypeBadge } from \"@/components/ui/counterparty-type-badge\"\nimport { StatusBadge } from \"@/components/ui/status-badge\"\nimport { useState } from \"react\"\n\ninterface BasicInfoCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const BasicInfoCard = ({ isEditing, onToggleEdit, className, hideActions }: BasicInfoCardProps) => {\n const [name, setName] = useState(\"John wire hot\")\n const [status, setStatus] = useState(\"ACTIVE\")\n\n const editContent = (\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <EnhancedInput\n label=\"Name\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder=\"Enter counterparty name\"\n />\n \n <EnhancedSelect\n label=\"Status\"\n value={status}\n onValueChange={setStatus}\n placeholder=\"Select status\"\n options={[\n { value: \"ACTIVE\", label: \"Active\" },\n { value: \"INACTIVE\", label: \"Inactive\" },\n { value: \"PENDING\", label: \"Pending\" },\n { value: \"SUSPENDED\", label: \"Suspended\" }\n ]}\n />\n </div>\n \n <div className=\"grid grid-cols-2 gap-4 pt-4 border-t border-border\">\n <InfoField label=\"ID\" value=\"5000541\" layout=\"horizontal\" />\n <InfoField label=\"Counterparty Type\" value={<CounterpartyTypeBadge type=\"BUSINESS\" />} layout=\"horizontal\" />\n <InfoField label=\"ID Number\" value=\"•••••••\" layout=\"horizontal\" />\n <InfoField label=\"ID Type\" value=\"SSN\" layout=\"horizontal\" />\n <InfoField label=\"Date of Birth\" value=\"1985-8-20\" layout=\"horizontal\" />\n <InfoField label=\"Created By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Created At\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Updated By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Updated At\" value=\"2025-07-14\" layout=\"horizontal\" />\n </div>\n \n <div className=\"pt-3 border-t border-border\">\n <h4 className=\"text-sm font-medium text-foreground mb-2\">OFAC Details</h4>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Last OFAC date\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Last OFAC status\" value=\"Verified\" layout=\"horizontal\" />\n </div>\n </div>\n </div>\n )\n\n const viewContent = (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"ID\" value=\"5000541\" layout=\"horizontal\" />\n <InfoField label=\"Name\" value={name} layout=\"horizontal\" />\n <InfoField label=\"Counterparty Type\" value={<CounterpartyTypeBadge type=\"BUSINESS\" />} layout=\"horizontal\" />\n <InfoField label=\"Status\" value={<StatusBadge status={status as \"ACTIVE\" | \"INACTIVE\" | \"PENDING\" | \"SUSPENDED\"} />} layout=\"horizontal\" />\n <InfoField label=\"ID Number\" value=\"•••••••\" layout=\"horizontal\" />\n <InfoField label=\"ID Type\" value=\"SSN\" layout=\"horizontal\" />\n <InfoField label=\"Date of Birth\" value=\"1985-8-20\" layout=\"horizontal\" />\n <InfoField label=\"Created By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Created At\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Updated By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Updated At\" value=\"2025-07-14\" layout=\"horizontal\" />\n </div>\n \n <div className=\"pt-3 border-t border-border\">\n <h4 className=\"text-sm font-medium text-foreground mb-2\">OFAC Details</h4>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Last OFAC date\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Last OFAC status\" value=\"Verified\" layout=\"horizontal\" />\n </div>\n </div>\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Basic Info\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","export interface CounterpartyBasicInfo {\n name: string\n status: string\n type: string\n businessType?: string\n description: string\n website?: string\n taxId?: string\n incorporationDate?: string\n legalStructure?: string\n}\n\nexport interface CounterpartyProfile {\n primaryContact: string\n contactEmail: string\n contactPhone: string\n secondaryContact?: string\n industry?: string\n region?: string\n}\n\nexport interface CounterpartyAddress {\n street: string\n city: string\n state: string\n postalCode: string\n country: string\n apartment?: string\n}\n\nexport const defaultCounterpartyBasicInfo: CounterpartyBasicInfo = {\n name: \"Acme Corporation\",\n status: \"active\",\n type: \"business\",\n businessType: \"corporation\",\n description: \"Leading technology solutions provider\",\n website: \"https://acme.com\",\n taxId: \"12-3456789\",\n incorporationDate: \"2020-01-15\",\n legalStructure: \"C-Corporation\"\n}\n\nexport const defaultCounterpartyProfile: CounterpartyProfile = {\n primaryContact: \"John Smith\",\n contactEmail: \"john.smith@acme.com\",\n contactPhone: \"+1 (555) 123-4567\",\n secondaryContact: \"Jane Doe\",\n industry: \"Technology\",\n region: \"North America\"\n}\n\nexport const defaultCounterpartyAddress: CounterpartyAddress = {\n street: \"123 Business Ave\",\n city: \"New York\",\n state: \"NY\",\n postalCode: \"10001\",\n country: \"US\",\n apartment: \"Suite 100\"\n}\n\n// Combined counterparty profile data that matches the schema\nexport const defaultCounterpartyProfileData = {\n legalName: \"Acme Corporation\",\n dbaName: \"ACME Tech\",\n businessType: \"corporation\",\n taxId: \"12-3456789\",\n businessPhone: \"+1 (555) 123-4567\",\n businessEmail: \"contact@acme.com\",\n website: \"https://acme.com\"\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { CounterpartyTypeBadge } from \"@/components/ui/counterparty-type-badge\"\nimport { StatusBadge } from \"@/components/ui/status-badge\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { counterpartyBasicInfoSchema, type CounterpartyBasicInfo } from \"@/lib/schemas\"\nimport { defaultCounterpartyBasicInfo } from \"@/lib/mock-data/counterparty-data\"\n\ninterface CounterpartyProfileCardProps {\n data?: Partial<CounterpartyBasicInfo>\n onDataChange?: (data: CounterpartyBasicInfo) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n hideActions?: boolean\n className?: string\n}\n\nexport const CounterpartyProfileCard = ({ \n data,\n onDataChange,\n isEditing = false,\n onToggleEdit,\n hideActions = false, \n className \n}: CounterpartyProfileCardProps) => {\n const form = useFormWithEditState<CounterpartyBasicInfo>({\n schema: counterpartyBasicInfoSchema,\n defaultValues: { ...defaultCounterpartyBasicInfo, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <div className=\"space-y-6\">\n <FormInput\n name=\"name\"\n label=\"Name\"\n placeholder=\"Enter counterparty name\"\n required\n />\n \n <FormSelect\n name=\"type\"\n label=\"Counterparty Type\"\n placeholder=\"Select counterparty type\"\n options={[\n { value: \"BUSINESS\", label: \"Business\" },\n { value: \"INDIVIDUAL\", label: \"Individual\" },\n { value: \"GOVERNMENT\", label: \"Government\" },\n { value: \"NONPROFIT\", label: \"Non-Profit\" }\n ]}\n />\n \n <FormSelect\n name=\"status\"\n label=\"Status\"\n placeholder=\"Select status\"\n options={[\n { value: \"ACTIVE\", label: \"Active\" },\n { value: \"INACTIVE\", label: \"Inactive\" },\n { value: \"PENDING\", label: \"Pending\" },\n { value: \"SUSPENDED\", label: \"Suspended\" }\n ]}\n />\n\n <FormInput\n name=\"description\"\n label=\"Description\"\n placeholder=\"Enter description\"\n />\n </div>\n </FormProvider>\n )\n\n const formValues = form.watch()\n const viewContent = (\n <div className=\"space-y-3\">\n <InfoField label=\"Name\" value={formValues?.name} layout=\"horizontal\" />\n <InfoField label=\"Counterparty Type\" value={<CounterpartyTypeBadge type={formValues?.type as \"BUSINESS\" | \"INDIVIDUAL\" | \"GOVERNMENT\" | \"NONPROFIT\"} />} layout=\"horizontal\" />\n <InfoField label=\"Status\" value={<StatusBadge status={formValues?.status as \"ACTIVE\" | \"INACTIVE\" | \"PENDING\" | \"SUSPENDED\"} />} layout=\"horizontal\" />\n <InfoField label=\"Description\" value={formValues?.description} layout=\"horizontal\" />\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Profile Information\"\n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { InfoField } from \"@/components/ui/info-field\"\n\ninterface CounterpartyRecordsCardProps {\n isEditing?: boolean\n hideActions?: boolean\n className?: string\n}\n\nexport const CounterpartyRecordsCard = ({ \n isEditing = false, \n hideActions = false, \n className \n}: CounterpartyRecordsCardProps) => {\n return (\n <Card variant=\"subtle\" className={className}>\n <CardHeader size=\"lg\">\n <CardTitle size=\"lg\">System Records</CardTitle>\n </CardHeader>\n <CardContent size=\"lg\">\n <div className=\"space-y-4\">\n <div className=\"space-y-3\">\n <InfoField label=\"ID\" value=\"5000541\" layout=\"horizontal\" />\n <InfoField label=\"Created By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Created At\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Updated By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Updated At\" value=\"2025-07-14\" layout=\"horizontal\" />\n </div>\n \n <div className=\"pt-3 border-t border-border\">\n <h4 className=\"text-sm font-medium text-foreground mb-2\">OFAC Details</h4>\n <div className=\"space-y-3\">\n <InfoField label=\"Last OFAC date\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Last OFAC status\" value=\"Verified\" layout=\"horizontal\" />\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { CounterpartyProfileCard } from \"./CounterpartyProfileCard\"\nimport { CounterpartyRecordsCard } from \"./CounterpartyRecordsCard\"\n\ninterface BasicInfoSectionProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const BasicInfoSection = ({ isEditing, onToggleEdit, className, hideActions }: BasicInfoSectionProps) => {\n const content = (\n <ResponsiveGrid type=\"forms\" gap=\"md\" editMode={isEditing}>\n <CounterpartyProfileCard isEditing={isEditing} hideActions={true} />\n <CounterpartyRecordsCard isEditing={isEditing} hideActions={true} />\n </ResponsiveGrid>\n )\n\n return (\n <EditableFormCard\n title=\"Basic Information\"\n description=\"Core counterparty details and records\"\n variant=\"subtle\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={content}\n viewContent={content}\n />\n )\n}","import { AddressForm } from \"./AddressForm\"\n\nexport const BeneficiaryAddress = () => {\n return (\n <AddressForm\n title=\"Beneficiary Address Details\"\n description=\"Address information for the beneficiary\"\n showAddressType={false}\n showApartment={true}\n fieldOverrides={{\n apartment: { \n placeholder: \"this is a very long address that will be truncated\",\n value: \"this is a very long address that will be truncated\"\n },\n postalCode: { error: \"Invalid postal code format\" }\n }}\n />\n )\n}","import * as React from \"react\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface DataGridItem {\n label?: string\n value: string\n layout?: \"vertical\" | \"horizontal\"\n}\n\nexport interface DataGridSection {\n title?: string\n items: DataGridItem[]\n className?: string\n}\n\ninterface DataGridProps {\n data: DataGridItem[] | DataGridSection[]\n columns?: 1 | 2 | 3 | 4\n gap?: \"sm\" | \"md\" | \"lg\"\n className?: string\n}\n\nconst gapClasses = {\n sm: \"gap-2\",\n md: \"gap-4\", \n lg: \"gap-6\"\n}\n\nconst columnClasses = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 md:grid-cols-2\",\n 3: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-4\"\n}\n\nexport const DataGrid = React.forwardRef<HTMLDivElement, DataGridProps>(\n ({ data, columns = 2, gap = \"md\", className }, ref) => {\n // Check if data is sections or simple items\n const isItemArray = data.length > 0 && 'label' in data[0]\n \n if (isItemArray) {\n // Simple items array\n const items = data as DataGridItem[]\n return (\n <div \n ref={ref}\n className={cn(\n \"grid\",\n columnClasses[columns],\n gapClasses[gap],\n className\n )}\n >\n {items.map((item, index) => (\n <InfoField\n key={index}\n label={item.label}\n value={item.value}\n layout={item.layout || \"horizontal\"}\n />\n ))}\n </div>\n )\n }\n\n // Sections array\n const sections = data as DataGridSection[]\n return (\n <div ref={ref} className={cn(\"space-y-4\", className)}>\n {sections.map((section, sectionIndex) => (\n <div key={sectionIndex} className={section.className}>\n {section.title && (\n <h4 className=\"text-sm font-medium text-foreground mb-2\">\n {section.title}\n </h4>\n )}\n <div className={cn(\n \"grid\",\n columnClasses[columns],\n gapClasses[gap]\n )}>\n {section.items.map((item, itemIndex) => (\n <InfoField\n key={itemIndex}\n label={item.label}\n value={item.value}\n layout={item.layout || \"horizontal\"}\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n )\n }\n)\n\nDataGrid.displayName = \"DataGrid\"","import { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { BeneficiaryAddress } from \"./BeneficiaryAddress\"\n\nexport const BeneficiaryDomesticWire = () => {\n return (\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h3 className=\"text-lg font-semibold text-foreground\">Beneficiary Information</h3>\n <p className=\"text-sm text-muted-foreground\">Account and address details for the beneficiary</p>\n </div>\n \n <div className=\"space-y-6\">\n <EnhancedInput\n label=\"Beneficiary Account Number\"\n placeholder=\"Enter beneficiary account number\"\n hint=\"Account number for the beneficiary\"\n />\n \n <BeneficiaryAddress />\n </div>\n </div>\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { BeneficiaryDomesticWire } from \"@/components/form-sections/BeneficiaryDomesticWire\"\n\ninterface BeneficiaryCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const BeneficiaryCard = ({ isEditing, onToggleEdit, className, hideActions }: BeneficiaryCardProps) => {\n const viewData = [\n {\n title: \"Account Information\",\n items: [\n { label: \"Account Number\", value: \"123456789012\" }\n ]\n },\n {\n title: \"Beneficiary Address\", \n items: [\n { value: \"123 Main Street, Apartment 4B, New York, NY 10001, United States\" }\n ],\n className: \"pt-3 border-t border-border\"\n }\n ]\n\n return (\n <EditableFormCard\n title=\"Beneficiary\"\n variant=\"subtle\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={<BeneficiaryDomesticWire />}\n viewContent={<DataGrid data={viewData} columns={1} />}\n />\n )\n}","export interface BusinessProfile {\n legalName: string\n dbaName?: string\n businessType: string\n taxId: string\n formationDate?: string\n idType?: string\n incorporationState?: string\n website?: string\n address: {\n streetAddress: string\n apartment?: string\n city: string\n state: string\n postalCode: string\n country: string\n addressType?: string\n }\n}\n\nexport interface BusinessStatus {\n operationalStatus: string\n complianceStatus: string\n lastReview: string\n nextReview: string\n riskLevel: string\n}\n\nexport interface ContactInfo {\n primaryContact: string\n email: string\n phone: string\n alternateContact?: string\n alternateEmail?: string\n alternatePhone?: string\n}\n\nexport const defaultBusinessProfile: BusinessProfile = {\n legalName: \"Acme Corporation\",\n dbaName: \"ACME Tech\",\n businessType: \"corporation\",\n taxId: \"12-3456789\",\n formationDate: \"2020-01-15\",\n idType: \"EIN\",\n incorporationState: \"Delaware\",\n website: \"https://acme.com\",\n address: {\n streetAddress: \"123 Business Avenue\",\n apartment: \"Suite 100\",\n city: \"New York\",\n state: \"NY\",\n postalCode: \"10001\",\n country: \"US\",\n addressType: \"business\"\n }\n}\n\nexport const defaultBusinessStatus: BusinessStatus = {\n operationalStatus: \"active\",\n complianceStatus: \"compliant\",\n lastReview: \"2024-01-15\",\n nextReview: \"2024-07-15\",\n riskLevel: \"low\"\n}\n\nexport const defaultContactInfo: ContactInfo = {\n primaryContact: \"John Smith\",\n email: \"john.smith@acme.com\",\n phone: \"+1 (555) 123-4567\",\n alternateContact: \"Jane Doe\",\n alternateEmail: \"jane.doe@acme.com\",\n alternatePhone: \"+1 (555) 987-6543\"\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { businessProfileSchema, type BusinessProfile } from \"@/lib/schemas\"\nimport { defaultBusinessProfile } from \"@/lib/mock-data/business-data\"\n\ninterface BusinessProfileCardProps {\n data?: Partial<BusinessProfile>\n onDataChange?: (data: BusinessProfile) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const BusinessProfileCard = ({ \n data, \n onDataChange, \n isEditing, \n onToggleEdit, \n className, \n hideActions \n}: BusinessProfileCardProps) => {\n const form = useFormWithEditState<BusinessProfile>({\n schema: businessProfileSchema,\n defaultValues: { ...defaultBusinessProfile, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"legalName\"\n label=\"Legal Name\"\n placeholder=\"Enter legal business name\"\n required\n />\n \n <FormInput\n name=\"dbaName\"\n label=\"DBA Name\"\n placeholder=\"Enter doing business as name\"\n />\n \n <FormSelect\n name=\"businessType\"\n label=\"Business Type\"\n placeholder=\"Select business type\"\n options={[\n { value: \"corporation\", label: \"Corporation\" },\n { value: \"llc\", label: \"LLC\" },\n { value: \"partnership\", label: \"Partnership\" },\n { value: \"sole_proprietorship\", label: \"Sole Proprietorship\" }\n ]}\n />\n \n <FormInput\n name=\"taxId\"\n label=\"Tax ID\"\n placeholder=\"Enter tax identification number\"\n required\n />\n\n <FormInput\n name=\"formationDate\"\n label=\"Formation Date\"\n type=\"date\"\n placeholder=\"Enter formation date\"\n />\n\n <FormSelect\n name=\"idType\"\n label=\"ID Type\"\n placeholder=\"Select ID type\"\n options={[\n { value: \"ein\", label: \"EIN\" },\n { value: \"ssn\", label: \"SSN\" },\n { value: \"itin\", label: \"ITIN\" }\n ]}\n />\n\n <FormInput\n name=\"incorporationState\"\n label=\"Incorporation State\"\n placeholder=\"Enter incorporation state\"\n />\n \n <FormInput\n name=\"website\"\n label=\"Website\"\n placeholder=\"Enter website URL\"\n />\n </div>\n\n <div className=\"grid grid-cols-1 gap-4\">\n <FormInput\n name=\"address.streetAddress\"\n label=\"Street Address\"\n placeholder=\"Enter street address\"\n />\n \n <FormInput\n name=\"address.apartment\"\n label=\"Apartment, suite, or floor\"\n placeholder=\"Enter apartment, suite, or floor\"\n />\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"address.city\"\n label=\"City\"\n placeholder=\"Enter city\"\n />\n \n <FormInput\n name=\"address.state\"\n label=\"State\"\n placeholder=\"Enter state\"\n />\n \n <FormInput\n name=\"address.postalCode\"\n label=\"Postal Code\"\n placeholder=\"Enter postal code\"\n />\n \n <FormInput\n name=\"address.country\"\n label=\"Country Code\"\n placeholder=\"Enter country code\"\n />\n </div>\n\n <h4 className=\"text-sm font-medium text-muted-foreground mt-6\">Contact Person</h4>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"contactFirstName\"\n label=\"First Name\"\n placeholder=\"Enter first name\"\n />\n \n <FormInput\n name=\"contactLastName\"\n label=\"Last Name\"\n placeholder=\"Enter last name\"\n />\n \n <FormInput\n name=\"contactEmail\"\n label=\"Email\"\n type=\"email\"\n placeholder=\"Enter email\"\n />\n \n <FormInput\n name=\"contactPhone\"\n label=\"Phone Number\"\n placeholder=\"Enter phone number\"\n />\n </div>\n </div>\n </FormProvider>\n )\n\n const formValues = form.watch()\n const viewContent = (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Legal Name\" value={formValues?.legalName} layout=\"horizontal\" />\n <InfoField label=\"DBA Name\" value={formValues?.dbaName} layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Business Type\" value={formValues?.businessType} layout=\"horizontal\" />\n <InfoField label=\"Tax ID\" value={formValues?.taxId} layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Formation Date\" value={formValues?.formationDate || \"2020-01-15\"} layout=\"horizontal\" />\n <InfoField label=\"ID Type\" value={formValues?.idType || \"EIN\"} layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Incorporation State\" value={formValues?.incorporationState || \"Delaware\"} layout=\"horizontal\" />\n <InfoField label=\"Website\" value={formValues?.website} layout=\"horizontal\" />\n </div>\n <InfoField \n label=\"Address\" \n value={formValues?.address ? `${formValues.address.streetAddress}${formValues.address.apartment ? ', ' + formValues.address.apartment : ''}, ${formValues.address.city}, ${formValues.address.state} ${formValues.address.postalCode}, ${formValues.address.country}` : \"123 Business Avenue, Suite 100, New York, NY 10001, US\"} \n layout=\"horizontal\" \n />\n\n <h4 className=\"text-sm font-medium text-muted-foreground mt-6\">Contact Person</h4>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"First Name\" value={formValues?.contactFirstName || \"John\"} layout=\"horizontal\" />\n <InfoField label=\"Last Name\" value={formValues?.contactLastName || \"Smith\"} layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Email\" value={formValues?.contactEmail || \"john.smith@acme.com\"} layout=\"horizontal\" />\n <InfoField label=\"Phone Number\" value={formValues?.contactPhone || \"+1 (555) 123-4567\"} layout=\"horizontal\" />\n </div>\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Business Profile\"\n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import { FormCard } from \"@/components/ui/form-card\"\nimport { CheckCircle, Circle, UserPlus, Edit } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface TimelineEvent {\n id: string\n action: string\n user: string\n details?: string\n status?: string\n timestamp: string\n}\n\ninterface BusinessStatusCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n}\n\nconst mockBusinessTimeline: TimelineEvent[] = [\n {\n id: \"1\",\n action: \"Business Created\",\n user: \"admin\",\n details: \"Initial business setup\",\n status: \"Active\",\n timestamp: \"2025-08-03 10:30:00\"\n },\n {\n id: \"2\",\n action: \"Profile Updated\",\n user: \"admin\",\n details: \"Updated business information\",\n timestamp: \"2025-09-05 14:22:00\"\n },\n {\n id: \"3\",\n action: \"OFAC Check Completed\",\n user: \"System\",\n details: \"Automated compliance check\",\n status: \"Verified\",\n timestamp: \"2025-09-05 14:30:00\"\n }\n]\n\nexport const BusinessStatusCard = ({ isEditing, onToggleEdit, className }: BusinessStatusCardProps) => {\n const getIcon = (action: string) => {\n if (action.includes(\"Created\")) return <Circle className=\"h-4 w-4\" />\n if (action.includes(\"Assigned\")) return <UserPlus className=\"h-4 w-4\" />\n if (action.includes(\"Updated\") || action.includes(\"Modified\") || action.includes(\"Check\")) return <Edit className=\"h-4 w-4\" />\n if (action.includes(\"Completed\") || action.includes(\"Verified\")) return <CheckCircle className=\"h-4 w-4\" />\n return <Circle className=\"h-4 w-4\" />\n }\n\n const getStatusColor = (status?: string) => {\n switch (status) {\n case \"Active\":\n case \"Verified\":\n return \"text-success\"\n case \"Pending\":\n return \"text-warning\"\n default:\n return \"text-muted-foreground\"\n }\n }\n\n return (\n <FormCard \n title=\"Timeline\"\n className={className}\n >\n <div className=\"space-y-3\">\n {mockBusinessTimeline.map((event, index) => (\n <div key={event.id} className=\"relative pl-6 pb-3\">\n {/* Timeline line */}\n {index !== mockBusinessTimeline.length - 1 && (\n <div className=\"absolute left-[7px] top-5 bottom-0 w-[2px] bg-border\" />\n )}\n \n {/* Icon */}\n <div className={cn(\n \"absolute left-0 top-0 flex-none\",\n getStatusColor(event.status)\n )}>\n <div className=\"h-4 w-4\">\n {getIcon(event.action)}\n </div>\n </div>\n \n {/* Content */}\n <div className=\"space-y-0.5\">\n <p className=\"text-xs font-medium text-foreground\">{event.action}</p>\n <p className=\"text-xs text-muted-foreground\">by {event.user}</p>\n {event.details && (\n <p className=\"text-xs text-muted-foreground\">{event.details}</p>\n )}\n {event.status && (\n <p className={cn(\"text-xs font-medium\", getStatusColor(event.status))}>\n Status: {event.status}\n </p>\n )}\n <p className=\"text-xs text-muted-foreground/70 pt-0.5\">\n {event.timestamp}\n </p>\n </div>\n </div>\n ))}\n </div>\n </FormCard>\n )\n}","import { FormCard } from \"@/components/ui/form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { Button } from \"@/components/ui/button\"\nimport { Edit } from \"lucide-react\"\n\ninterface ContactInfoCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n}\n\nexport const ContactInfoCard = ({ isEditing, onToggleEdit, className }: ContactInfoCardProps) => {\n return (\n <FormCard \n title=\"Contact Information\"\n className={className}\n headerActions={\n <div className=\"flex items-center gap-2\">\n {isEditing ? (\n <>\n <Button variant=\"outline\" size=\"sm\" onClick={onToggleEdit}>\n Cancel\n </Button>\n <Button size=\"sm\" onClick={onToggleEdit}>\n Save\n </Button>\n </>\n ) : (\n <Button variant=\"ghost\" size=\"icon\" onClick={onToggleEdit} className=\"text-primary hover:text-primary/80 hover:bg-primary/10\">\n <Edit className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n }\n >\n <div className=\"space-y-4\">\n <h4 className=\"text-sm font-medium text-muted-foreground\">Contact Person</h4>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"First Name\" value=\"\" layout=\"horizontal\" />\n <InfoField label=\"Last Name\" value=\"\" layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Email\" value=\"\" layout=\"horizontal\" />\n <InfoField label=\"Phone Number\" value=\"\" layout=\"horizontal\" />\n </div>\n \n <h4 className=\"text-sm font-medium text-muted-foreground mt-6\">Mailing Address</h4>\n {isEditing ? (\n <>\n <div className=\"grid grid-cols-1 gap-3\">\n <InfoField label=\"Street Address\" value=\"\" layout=\"horizontal\" />\n <InfoField label=\"Apartment, suite, or floor\" value=\"\" layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"City\" value=\"\" layout=\"horizontal\" />\n <InfoField label=\"State\" value=\"Alabama\" layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Postal Code\" value=\"\" layout=\"horizontal\" />\n <InfoField label=\"Country Code\" value=\"US\" layout=\"horizontal\" />\n </div>\n </>\n ) : (\n <InfoField \n label=\"Address\" \n value=\"123 Business Avenue, Suite 100, New York, NY 10001, US\" \n layout=\"horizontal\" \n />\n )}\n </div>\n </FormCard>\n )\n}","import * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","import { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { Label } from \"@/components/ui/label\"\nimport { useState } from \"react\"\n\ninterface CounterpartyBasicInfoProps {\n onDataChange?: (data: any) => void\n}\n\nexport const CounterpartyBasicInfo = ({ onDataChange }: CounterpartyBasicInfoProps) => {\n const [formData, setFormData] = useState({\n name: \"\",\n type: \"business\",\n email: \"\",\n phone: \"\",\n productId: \"167990\"\n })\n\n const handleInputChange = (field: string, value: string) => {\n const updatedData = { ...formData, [field]: value }\n setFormData(updatedData)\n onDataChange?.(updatedData)\n }\n\n const handleTypeChange = (type: string) => {\n handleInputChange(\"type\", type)\n }\n\n return (\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h2 className=\"text-lg font-semibold text-foreground\">Basic Information</h2>\n <p className=\"text-sm text-muted-foreground\">Enter the basic details for the counterparty</p>\n </div>\n \n <div className=\"space-y-6\">\n <EnhancedInput\n label=\"Counterparty Name\"\n value={formData.name}\n onChange={(e) => handleInputChange(\"name\", e.target.value)}\n placeholder=\"Enter counterparty name\"\n required\n />\n \n <div className=\"space-y-3\">\n <Label className=\"text-sm font-medium\">Counterparty Type</Label>\n <div className=\"flex gap-6\">\n <label className=\"flex items-center space-x-2 cursor-pointer\">\n <input\n type=\"radio\"\n name=\"counterpartyType\"\n value=\"business\"\n checked={formData.type === \"business\"}\n onChange={() => handleTypeChange(\"business\")}\n className=\"w-4 h-4 text-primary border-border focus:ring-primary focus:ring-2\"\n />\n <span className=\"text-sm text-foreground\">Business</span>\n </label>\n <label className=\"flex items-center space-x-2 cursor-pointer\">\n <input\n type=\"radio\"\n name=\"counterpartyType\"\n value=\"individual\"\n checked={formData.type === \"individual\"}\n onChange={() => handleTypeChange(\"individual\")}\n className=\"w-4 h-4 text-primary border-border focus:ring-primary focus:ring-2\"\n />\n <span className=\"text-sm text-foreground\">Individual</span>\n </label>\n </div>\n </div>\n \n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <EnhancedInput\n label=\"Email\"\n type=\"email\"\n value={formData.email}\n onChange={(e) => handleInputChange(\"email\", e.target.value)}\n placeholder=\"Enter email address\"\n required\n />\n \n <EnhancedInput\n label=\"Phone Number\"\n type=\"tel\"\n value={formData.phone}\n onChange={(e) => handleInputChange(\"phone\", e.target.value)}\n placeholder=\"Enter phone number\"\n required\n />\n </div>\n \n <EnhancedInput\n label=\"Product ID\"\n value={formData.productId}\n readOnly\n className=\"bg-muted\"\n />\n </div>\n </div>\n )\n}","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface FormSectionProps {\n title?: string\n description?: string\n children: React.ReactNode\n className?: string\n spacing?: \"sm\" | \"md\" | \"lg\"\n layout?: \"vertical\" | \"grid\"\n columns?: 1 | 2 | 3 | 4\n}\n\nconst spacingClasses = {\n sm: \"space-y-3\",\n md: \"space-y-4\",\n lg: \"space-y-6\"\n}\n\nconst gridClasses = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 md:grid-cols-2\", \n 3: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-4\"\n}\n\nexport const FormSection = React.forwardRef<HTMLDivElement, FormSectionProps>(\n ({ \n title, \n description, \n children, \n className, \n spacing = \"md\", \n layout = \"vertical\",\n columns = 2 \n }, ref) => {\n return (\n <div ref={ref} className={cn(\"space-y-4\", className)}>\n {(title || description) && (\n <div className=\"space-y-1\">\n {title && (\n <h3 className=\"text-lg font-semibold text-foreground\">\n {title}\n </h3>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n )}\n \n <div className={cn(\n layout === \"grid\" \n ? `grid gap-4 ${gridClasses[columns]}` \n : spacingClasses[spacing]\n )}>\n {children}\n </div>\n </div>\n )\n }\n)\n\nFormSection.displayName = \"FormSection\"","import { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { FI_ID_TYPE_OPTIONS } from \"@/lib/constants\"\n\nexport const IntermediaryFI = () => {\n return (\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h2 className=\"text-lg font-semibold text-foreground\">Intermediary FI Details</h2>\n <p className=\"text-sm text-muted-foreground\">Financial institution details for the intermediary</p>\n </div>\n \n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n <EnhancedInput\n label=\"Intermediary FI Account Number\"\n placeholder=\"Enter account number\"\n />\n \n <EnhancedInput\n label=\"Intermediary FI Name\"\n placeholder=\"Enter FI name\"\n hint=\"Full name of the intermediary financial institution\"\n />\n \n <EnhancedSelect\n label=\"Intermediary FI ID Type\"\n placeholder=\"Select ID type\"\n options={FI_ID_TYPE_OPTIONS}\n />\n \n <EnhancedInput\n label=\"Intermediary FI ID Number\"\n placeholder=\"Enter ID number\"\n hint=\"Financial institution identification number\"\n />\n </div>\n </div>\n </div>\n )\n}","import { AddressForm } from \"./AddressForm\"\n\nexport const IntermediaryFIAddress = () => {\n return (\n <AddressForm\n title=\"Intermediary FI Address\"\n description=\"Address of the intermediary financial institution\"\n fieldPrefix=\"Intermediary FI\"\n fieldOverrides={{\n streetAddress: { hint: \"Intermediary financial institution street address\" }\n }}\n />\n )\n}","export interface WireTransferInfo {\n transferType: string\n}\n\nexport interface ReceiverInfo {\n routingNumber: string\n bankShortName: string\n}\n\nexport interface BeneficiaryInfo {\n accountNumber: string\n address: {\n street: string\n city: string\n state: string\n postalCode: string\n country: string\n apartment?: string\n }\n}\n\nexport interface OriginatorFIInfo {\n accountNumber: string\n name: string\n idType: string\n idNumber: string\n address: {\n streetAddress: string\n apartment?: string\n city: string\n state: string\n postalCode: string\n country: string\n addressType?: string\n }\n}\n\nexport interface IntermediaryFIInfo {\n accountNumber?: string\n name: string\n idType: string\n idNumber: string\n address?: {\n streetAddress: string\n apartment?: string\n city: string\n state: string\n postalCode: string\n country: string\n addressType?: string\n }\n}\n\nexport const defaultWireTransferInfo: WireTransferInfo = {\n transferType: \"domestic\"\n}\n\nexport const defaultReceiverInfo: ReceiverInfo = {\n routingNumber: \"043087080\",\n bankShortName: \"Bank of New York\"\n}\n\nexport const defaultBeneficiaryInfo: BeneficiaryInfo = {\n accountNumber: \"123456789012\",\n address: {\n street: \"123 Main Street\",\n city: \"New York\",\n state: \"NY\", \n postalCode: \"10001\",\n country: \"US\",\n apartment: \"Apartment 4B\"\n }\n}\n\nexport const defaultOriginatorFIInfo: OriginatorFIInfo = {\n accountNumber: \"987654321098\",\n name: \"Originator Bank\",\n idType: \"swift\",\n idNumber: \"ORIGUS33XXX\",\n address: {\n streetAddress: \"270 Park Avenue\",\n city: \"New York\",\n state: \"NY\",\n postalCode: \"10017\",\n country: \"US\",\n addressType: \"business\"\n }\n}\n\nexport const defaultIntermediaryFIInfo: IntermediaryFIInfo = {\n accountNumber: \"555666777888\",\n name: \"Intermediary Bank\",\n idType: \"swift\", \n idNumber: \"INTEUS33XXX\",\n address: {\n streetAddress: \"Taunusanlage 12\",\n city: \"Frankfurt\",\n state: \"HE\",\n postalCode: \"60325\",\n country: \"DE\",\n addressType: \"business\"\n }\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormSection } from \"@/components/ui/form-section\"\nimport { IntermediaryFI } from \"@/components/form-sections/IntermediaryFI\"\nimport { IntermediaryFIAddress } from \"@/components/form-sections/IntermediaryFIAddress\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { intermediaryFISchema, type IntermediaryFI as IntermediaryFIType } from \"@/lib/schemas\"\nimport { defaultIntermediaryFIInfo } from \"@/lib/mock-data/wire-data\"\n\ninterface IntermediaryCardProps {\n data?: Partial<IntermediaryFIType>\n onDataChange?: (data: IntermediaryFIType) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const IntermediaryCard = ({ \n data, \n onDataChange, \n isEditing, \n onToggleEdit, \n className, \n hideActions \n}: IntermediaryCardProps) => {\n const form = useFormWithEditState<IntermediaryFIType>({\n schema: intermediaryFISchema,\n defaultValues: { ...defaultIntermediaryFIInfo, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <FormSection spacing=\"lg\">\n <IntermediaryFI />\n <IntermediaryFIAddress />\n </FormSection>\n </FormProvider>\n )\n\n const formValues = form.watch()\n const viewContent = (\n <div className=\"space-y-3\">\n <div>\n <h4 className=\"text-sm font-medium text-foreground mb-2\">Financial Institution</h4>\n <div className=\"space-y-1.5\">\n <InfoField label=\"Institution\" value={`${formValues?.name} (${formValues?.accountNumber})`} layout=\"horizontal\" />\n <InfoField label=\"Identifier\" value={`${formValues?.idType?.toUpperCase()} - ${formValues?.idNumber}`} layout=\"horizontal\" />\n </div>\n </div>\n \n <div className=\"pt-3 border-t border-border\">\n <h4 className=\"text-sm font-medium text-foreground mb-2\">FI Address</h4>\n <InfoField value={formValues?.address ? `${formValues.address.streetAddress}, ${formValues.address.city}, ${formValues.address.postalCode}, ${formValues.address.country}` : \"\"} />\n </div>\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Intermediary\" \n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { FI_ID_TYPE_OPTIONS } from \"@/lib/constants\"\n\nexport const OriginatorFI = () => {\n return (\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h2 className=\"text-lg font-semibold text-foreground\">Originator FI Details</h2>\n <p className=\"text-sm text-muted-foreground\">Financial institution details for the originator</p>\n </div>\n \n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n <EnhancedInput\n label=\"Originator FI Account Number\"\n placeholder=\"Enter account number\"\n required\n />\n \n <EnhancedInput\n label=\"Originator FI Name\"\n placeholder=\"Enter FI name\"\n hint=\"Full name of the originating financial institution\"\n />\n \n <EnhancedSelect\n label=\"Originator FI ID Type\"\n placeholder=\"Select ID type\"\n options={FI_ID_TYPE_OPTIONS}\n />\n \n <EnhancedInput\n label=\"Originator FI ID Number\"\n placeholder=\"Enter ID number\"\n hint=\"Financial institution identification number\"\n />\n </div>\n </div>\n </div>\n )\n}","import { AddressForm } from \"./AddressForm\"\n\nexport const OriginatorFIAddress = () => {\n return (\n <AddressForm\n title=\"Originator FI Address\"\n description=\"Address of the originating financial institution\"\n fieldPrefix=\"Originator FI\"\n fieldOverrides={{\n streetAddress: { hint: \"Originating financial institution street address\" }\n }}\n />\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { FormSection } from \"@/components/ui/form-section\"\nimport { OriginatorFI } from \"@/components/form-sections/OriginatorFI\"\nimport { OriginatorFIAddress } from \"@/components/form-sections/OriginatorFIAddress\"\n\ninterface OriginatorCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const OriginatorCard = ({ isEditing, onToggleEdit, className, hideActions }: OriginatorCardProps) => {\n const viewData = [\n {\n title: \"Financial Institution\",\n items: [\n { label: \"Institution\", value: \"JPMorgan Chase Bank (1234567890)\" },\n { label: \"Identifier\", value: \"ABA - 021000021\" }\n ]\n },\n {\n title: \"FI Address\",\n items: [\n { value: \"270 Park Avenue, New York, NY, 10017, United States\" }\n ],\n className: \"pt-3 border-t border-border\"\n }\n ]\n\n return (\n <EditableFormCard\n title=\"Originator\"\n variant=\"subtle\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={\n <FormSection spacing=\"lg\">\n <OriginatorFI />\n <OriginatorFIAddress />\n </FormSection>\n }\n viewContent={<DataGrid data={viewData} columns={1} />}\n />\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { FormSection } from \"@/components/ui/form-section\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { z } from \"zod\"\nimport { defaultReceiverInfo } from \"@/lib/mock-data/wire-data\"\n\nconst receiverSchema = z.object({\n routingNumber: z.string().min(9, \"Routing number must be 9 digits\").max(9, \"Routing number must be 9 digits\"),\n bankShortName: z.string().min(1, \"Bank short name is required\"),\n})\n\ntype ReceiverInfo = z.infer<typeof receiverSchema>\n\ninterface ReceiverCardProps {\n data?: Partial<ReceiverInfo>\n onDataChange?: (data: ReceiverInfo) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const ReceiverCard = ({ \n data, \n onDataChange, \n isEditing, \n onToggleEdit, \n className, \n hideActions \n}: ReceiverCardProps) => {\n const form = useFormWithEditState<ReceiverInfo>({\n schema: receiverSchema,\n defaultValues: { ...defaultReceiverInfo, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <FormSection>\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h2 className=\"text-lg font-semibold text-foreground\">Receiver Details</h2>\n <p className=\"text-sm text-muted-foreground\">Receiving bank information</p>\n </div>\n \n <div className=\"grid grid-cols-1 gap-6\">\n <FormInput\n name=\"routingNumber\"\n label=\"Receiver Routing Number\"\n placeholder=\"Enter routing number\"\n hint=\"9-digit routing number\"\n pattern=\"[0-9]{9}\"\n maxLength={9}\n required\n />\n \n <FormInput\n name=\"bankShortName\"\n label=\"Receiver Bank Short Name\"\n placeholder=\"Enter bank short name\"\n required\n />\n </div>\n </div>\n </FormSection>\n </FormProvider>\n )\n\n const formValues = form.watch()\n const viewData = [\n { label: \"Routing Number\", value: formValues?.routingNumber },\n { label: \"Bank Short Name\", value: formValues?.bankShortName }\n ]\n\n return (\n <EditableFormCard\n title=\"FedWire Receiver\"\n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={<DataGrid data={viewData} columns={2} />}\n />\n )\n}","import { useState } from \"react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Plus, Trash2, ChevronDown, ChevronUp } from \"lucide-react\"\nimport { ACHBasicInfoCard } from \"./ACHBasicInfoCard\"\nimport { ACHBankCard } from \"./ACHBankCard\"\nimport { BankAddressCard } from \"./BankAddressCard\"\nimport { ReceiverCard } from \"./ReceiverCard\"\nimport { BeneficiaryCard } from \"./BeneficiaryCard\"\nimport { OriginatorCard } from \"./OriginatorCard\"\nimport { IntermediaryCard } from \"./IntermediaryCard\"\nimport { defaultACHTransfer } from \"@/lib/mock-data/banking-data\"\nimport { type ACHTransfer } from \"@/lib/schemas/banking-schemas\"\n\ninterface PaymentMethod {\n id: string\n type: \"ach\" | \"wire\"\n name: string\n collapsed: boolean\n}\n\nexport const PaymentInformationSection = () => {\n const [paymentMethods, setPaymentMethods] = useState<PaymentMethod[]>([])\n const [showAddMenu, setShowAddMenu] = useState(false)\n const [achData, setAchData] = useState<ACHTransfer>(defaultACHTransfer)\n\n const addPaymentMethod = (type: \"ach\" | \"wire\") => {\n const newMethod: PaymentMethod = {\n id: `${type}-${Date.now()}`,\n type,\n name: type === \"ach\" ? \"ACH Payment\" : \"Wire Transfer\",\n collapsed: false\n }\n setPaymentMethods([...paymentMethods, newMethod])\n setShowAddMenu(false)\n }\n\n const removePaymentMethod = (id: string) => {\n setPaymentMethods(paymentMethods.filter(method => method.id !== id))\n }\n\n const toggleCollapse = (id: string) => {\n setPaymentMethods(paymentMethods.map(method => \n method.id === id ? { ...method, collapsed: !method.collapsed } : method\n ))\n }\n\n const handleACHDataChange = (newData: ACHTransfer) => {\n setAchData(newData)\n }\n\n const renderPaymentMethodContent = (method: PaymentMethod) => {\n if (method.type === \"ach\") {\n return (\n <div className=\"space-y-4\">\n <ACHBasicInfoCard \n data={achData}\n onDataChange={handleACHDataChange}\n isEditing={true} \n hideActions={true} \n />\n <ACHBankCard \n data={achData}\n onDataChange={handleACHDataChange}\n isEditing={true} \n hideActions={true} \n />\n <BankAddressCard isEditing={true} hideActions={true} />\n </div>\n )\n } else {\n return (\n <div className=\"space-y-4\">\n <ReceiverCard isEditing={true} hideActions={true} />\n <BeneficiaryCard isEditing={true} hideActions={true} />\n <OriginatorCard isEditing={true} hideActions={true} />\n <IntermediaryCard isEditing={true} hideActions={true} />\n </div>\n )\n }\n }\n\n return (\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h2 className=\"text-lg font-semibold text-foreground\">Payment Information</h2>\n <p className=\"text-sm text-muted-foreground\">Add payment methods for this counterparty</p>\n </div>\n\n {paymentMethods.map((method) => (\n <Card key={method.id} className=\"relative\">\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => toggleCollapse(method.id)}\n className=\"h-6 w-6\"\n >\n {method.collapsed ? (\n <ChevronDown className=\"h-4 w-4\" />\n ) : (\n <ChevronUp className=\"h-4 w-4\" />\n )}\n </Button>\n <CardTitle className=\"text-base\">{method.name}</CardTitle>\n <span className=\"text-xs bg-muted px-2 py-1 rounded-md uppercase font-medium\">\n {method.type}\n </span>\n </div>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => removePaymentMethod(method.id)}\n className=\"h-6 w-6 text-destructive hover:text-destructive/80 hover:bg-destructive/10\"\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </div>\n </CardHeader>\n {!method.collapsed && (\n <CardContent>\n {renderPaymentMethodContent(method)}\n </CardContent>\n )}\n </Card>\n ))}\n\n <div className=\"relative\">\n <Button\n variant=\"outline\"\n onClick={() => setShowAddMenu(!showAddMenu)}\n className=\"w-full border-dashed\"\n >\n <Plus className=\"h-4 w-4 mr-2\" />\n Add Payment Information\n </Button>\n \n {showAddMenu && (\n <div className=\"absolute top-full left-0 right-0 mt-2 bg-background border border-border rounded-md shadow-lg z-10\">\n <div className=\"p-2 space-y-1\">\n <Button\n variant=\"ghost\"\n onClick={() => addPaymentMethod(\"ach\")}\n className=\"w-full justify-start\"\n >\n Add ACH Payment\n </Button>\n <Button\n variant=\"ghost\"\n onClick={() => addPaymentMethod(\"wire\")}\n className=\"w-full justify-start\"\n >\n Add Wire Transfer\n </Button>\n </div>\n </div>\n )}\n </div>\n </div>\n )\n}","import { useState } from \"react\"\nimport { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { ReceiverCard } from \"./ReceiverCard\"\nimport { BeneficiaryCard } from \"./BeneficiaryCard\"\nimport { OriginatorCard } from \"./OriginatorCard\"\nimport { IntermediaryCard } from \"./IntermediaryCard\"\n\ninterface WireTransferSectionProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const WireTransferSection = ({ isEditing, onToggleEdit, className, hideActions }: WireTransferSectionProps) => {\n const [wireTransferType, setWireTransferType] = useState(\"INTERNATIONAL\")\n\n const editContent = (\n <div className=\"space-y-6\">\n <div className=\"flex items-center gap-4\">\n <EnhancedSelect\n label=\"Transfer Type\"\n value={wireTransferType}\n onValueChange={setWireTransferType}\n options={[\n { value: \"DOMESTIC\", label: \"Domestic\" },\n { value: \"INTERNATIONAL\", label: \"International\" }\n ]}\n placeholder=\"Select transfer type\"\n />\n </div>\n \n <ResponsiveGrid type=\"forms\" gap=\"md\" editMode={isEditing}>\n <ReceiverCard isEditing={isEditing} hideActions={true} />\n <BeneficiaryCard isEditing={isEditing} hideActions={true} />\n <OriginatorCard isEditing={isEditing} hideActions={true} />\n <IntermediaryCard isEditing={isEditing} hideActions={true} />\n </ResponsiveGrid>\n </div>\n )\n\n const viewContent = (\n <div className=\"space-y-6\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium text-muted-foreground\">Transfer Type:</span>\n <span className=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-secondary text-secondary-foreground\">\n {wireTransferType}\n </span>\n </div>\n \n <ResponsiveGrid type=\"forms\" gap=\"md\">\n <ReceiverCard isEditing={false} hideActions={true} />\n <BeneficiaryCard isEditing={false} hideActions={true} />\n <OriginatorCard isEditing={false} hideActions={true} />\n <IntermediaryCard isEditing={false} hideActions={true} />\n </ResponsiveGrid>\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Wire Transfer Configuration\"\n description=\"Configure wire transfer settings and participants\"\n variant=\"subtle\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface ContainerProps {\n children: React.ReactNode\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\"\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\"\n center?: boolean\n className?: string\n}\n\nconst sizeClasses = {\n sm: \"max-w-2xl\",\n md: \"max-w-4xl\", \n lg: \"max-w-6xl\",\n xl: \"max-w-7xl\",\n full: \"max-w-full\"\n}\n\nconst paddingClasses = {\n none: \"\",\n sm: \"px-4 py-4\",\n md: \"px-6 py-6\", \n lg: \"px-8 py-8\"\n}\n\nexport const Container = React.forwardRef<HTMLDivElement, ContainerProps>(\n ({ children, size = \"lg\", padding = \"md\", center = true, className }, ref) => {\n return (\n <div \n ref={ref}\n className={cn(\n sizeClasses[size],\n paddingClasses[padding],\n center && \"mx-auto\",\n className\n )}\n >\n {children}\n </div>\n )\n }\n)\n\nContainer.displayName = \"Container\"","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface StackProps {\n children: React.ReactNode\n direction?: \"vertical\" | \"horizontal\"\n spacing?: \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"\n align?: \"start\" | \"center\" | \"end\" | \"stretch\"\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\"\n className?: string\n}\n\nconst spacingClasses = {\n vertical: {\n none: \"\",\n xs: \"space-y-1\",\n sm: \"space-y-2\",\n md: \"space-y-4\",\n lg: \"space-y-6\",\n xl: \"space-y-8\"\n },\n horizontal: {\n none: \"\",\n xs: \"space-x-1\",\n sm: \"space-x-2\", \n md: \"space-x-4\",\n lg: \"space-x-6\",\n xl: \"space-x-8\"\n }\n}\n\nconst alignClasses = {\n vertical: {\n start: \"\",\n center: \"items-center\",\n end: \"items-end\", \n stretch: \"items-stretch\"\n },\n horizontal: {\n start: \"\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\"\n }\n}\n\nconst justifyClasses = {\n start: \"\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\"\n}\n\nexport const Stack = React.forwardRef<HTMLDivElement, StackProps>(\n ({ children, direction = \"vertical\", spacing = \"md\", align = \"start\", justify = \"start\", className }, ref) => {\n const isHorizontal = direction === \"horizontal\"\n \n return (\n <div \n ref={ref}\n className={cn(\n \"flex\",\n isHorizontal ? \"flex-row\" : \"flex-col\",\n spacingClasses[direction][spacing],\n alignClasses[direction][align],\n justifyClasses[justify],\n className\n )}\n >\n {children}\n </div>\n )\n }\n)\n\nStack.displayName = \"Stack\"","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { ChevronRight, Home } from \"lucide-react\"\nimport { NavLink } from \"react-router-dom\"\n\nexport interface BreadcrumbItem {\n label: string\n href?: string\n icon?: React.ReactNode\n}\n\ninterface BreadcrumbProps {\n items: BreadcrumbItem[]\n showHome?: boolean\n separator?: React.ReactNode\n className?: string\n}\n\nexport const Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(\n ({ items, showHome = true, separator, className }, ref) => {\n const defaultSeparator = <ChevronRight className=\"w-4 h-4 text-muted-foreground\" />\n const separatorElement = separator || defaultSeparator\n\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cn(\"flex items-center space-x-1 text-sm\", className)}\n >\n {showHome && (\n <>\n <NavLink\n to=\"/\"\n className=\"flex items-center text-muted-foreground hover:text-foreground transition-colors\"\n >\n <Home className=\"w-4 h-4\" />\n </NavLink>\n {items.length > 0 && (\n <span className=\"text-muted-foreground\">{separatorElement}</span>\n )}\n </>\n )}\n \n {items.map((item, index) => {\n const isLast = index === items.length - 1\n \n return (\n <React.Fragment key={index}>\n {item.href && !isLast ? (\n <NavLink\n to={item.href}\n className=\"flex items-center text-muted-foreground hover:text-foreground transition-colors\"\n >\n {item.icon && <span className=\"mr-1\">{item.icon}</span>}\n {item.label}\n </NavLink>\n ) : (\n <span className={cn(\n \"flex items-center\",\n isLast ? \"text-foreground font-medium\" : \"text-muted-foreground\"\n )}>\n {item.icon && <span className=\"mr-1\">{item.icon}</span>}\n {item.label}\n </span>\n )}\n \n {!isLast && (\n <span className=\"text-muted-foreground\">{separatorElement}</span>\n )}\n </React.Fragment>\n )\n })}\n </nav>\n )\n }\n)\n\nBreadcrumb.displayName = \"Breadcrumb\"","import * as React from \"react\"\nimport { Container } from \"@/components/ui/container\"\nimport { Stack } from \"@/components/ui/stack\"\nimport { Button } from \"@/components/ui/button\"\nimport { Breadcrumb, type BreadcrumbItem } from \"@/components/ui/breadcrumb\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { cn } from \"@/lib/utils\"\n\ninterface PageAction {\n label: string\n onClick: () => void\n variant?: \"default\" | \"outline\" | \"secondary\"\n icon?: React.ReactNode\n}\n\ninterface ListPageProps {\n title: string\n description?: string\n breadcrumbs?: BreadcrumbItem[]\n actions?: PageAction[]\n children: React.ReactNode\n maxWidth?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\"\n loading?: boolean\n emptyState?: React.ReactNode\n className?: string\n}\n\nexport const ListPage = React.forwardRef<HTMLDivElement, ListPageProps>(\n ({ \n title, \n description, \n breadcrumbs,\n actions,\n children, \n maxWidth = \"xl\",\n loading = false,\n emptyState,\n className \n }, ref) => {\n const hasData = React.Children.count(children) > 0\n\n return (\n <div ref={ref} className={cn(\"min-h-screen bg-gradient-subtle\", className)}>\n <Container size={maxWidth}>\n <Stack spacing=\"lg\">\n {/* Breadcrumbs */}\n {breadcrumbs && breadcrumbs.length > 0 && (\n <Breadcrumb items={breadcrumbs} />\n )}\n \n {/* Page Header */}\n <div className=\"flex items-start justify-between\">\n <Stack spacing=\"sm\">\n <h1 className=\"text-3xl font-bold text-foreground\">{title}</h1>\n {description && (\n <p className=\"text-muted-foreground max-w-2xl\">{description}</p>\n )}\n </Stack>\n \n {actions && actions.length > 0 && (\n <Stack direction=\"horizontal\" spacing=\"sm\">\n {actions.map((action, index) => (\n <Button\n key={index}\n variant={action.variant || \"default\"}\n onClick={action.onClick}\n >\n {action.icon}\n {action.label}\n </Button>\n ))}\n </Stack>\n )}\n </div>\n \n {/* Content */}\n {loading ? (\n <div className=\"flex items-center justify-center py-12\">\n <div className=\"animate-pulse text-muted-foreground\">Loading...</div>\n </div>\n ) : hasData ? (\n <ResponsiveGrid type=\"cards\" gap=\"lg\">\n {children}\n </ResponsiveGrid>\n ) : emptyState ? (\n <div className=\"flex items-center justify-center py-12\">\n {emptyState}\n </div>\n ) : (\n <div className=\"flex items-center justify-center py-12\">\n <div className=\"text-center\">\n <p className=\"text-muted-foreground\">No items found</p>\n </div>\n </div>\n )}\n </Stack>\n </Container>\n </div>\n )\n }\n)\n\nListPage.displayName = \"ListPage\"","export interface StatementHeader {\n account?: string;\n productId?: string;\n programId?: string;\n startDate?: string;\n endDate?: string;\n startingBalance?: string;\n endingBalance?: string;\n}\n\nexport interface StatementTransaction {\n transactionType: string;\n direction: \"CREDIT\" | \"DEBIT\";\n amount: number;\n count: number;\n}\n\n/**\n * Calculates the balance change from starting to ending balance\n * @param startingBalance - Formatted currency string (e.g., \"$125,450.00\")\n * @param endingBalance - Formatted currency string (e.g., \"$158,320.50\")\n * @returns Object with calculated change amount, formatted string, and sign indicator\n */\nexport const calculateBalanceChange = (\n startingBalance: string,\n endingBalance: string\n): { amount: number; formatted: string; isPositive: boolean } => {\n // Helper function to parse currency strings\n const parseCurrency = (str: string): number => {\n return parseFloat(str.replace(/[$,]/g, ''))\n }\n\n const start = parseCurrency(startingBalance)\n const end = parseCurrency(endingBalance)\n const change = end - start\n\n const isPositive = change >= 0\n const prefix = isPositive ? '+' : ''\n\n return {\n amount: change,\n formatted: `${prefix}$${Math.abs(change).toLocaleString('en-US', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2\n })}`,\n isPositive\n }\n}\n\nexport const mockStatementHeader: StatementHeader = {\n account: \"1234567890\",\n productId: \"PROD-001\",\n programId: \"PROG-001\",\n startDate: \"01/01/2024 00:00:00\",\n endDate: \"01/31/2024 23:59:59\",\n startingBalance: \"$125,450.00\",\n endingBalance: \"$158,320.50\",\n};\n\nexport const mockStatementTransactions: StatementTransaction[] = [\n { transactionType: \"ACH Credit\", direction: \"CREDIT\", amount: 45000.0, count: 12 },\n { transactionType: \"ACH Debit\", direction: \"DEBIT\", amount: 23500.0, count: 8 },\n { transactionType: \"Wire Transfer In\", direction: \"CREDIT\", amount: 15000.0, count: 3 },\n { transactionType: \"Wire Transfer Out\", direction: \"DEBIT\", amount: 8200.0, count: 2 },\n { transactionType: \"Card Purchase\", direction: \"DEBIT\", amount: 5430.5, count: 45 },\n { transactionType: \"Direct Deposit\", direction: \"CREDIT\", amount: 12500.0, count: 5 },\n { transactionType: \"ATM Withdrawal\", direction: \"DEBIT\", amount: 3200.0, count: 16 },\n { transactionType: \"Check Deposit\", direction: \"CREDIT\", amount: 8900.0, count: 4 },\n { transactionType: \"Bill Payment\", direction: \"DEBIT\", amount: 6780.0, count: 18 },\n { transactionType: \"Transfer In\", direction: \"CREDIT\", amount: 5200.0, count: 7 },\n { transactionType: \"Transfer Out\", direction: \"DEBIT\", amount: 4350.0, count: 6 },\n { transactionType: \"Fee\", direction: \"DEBIT\", amount: 125.0, count: 3 },\n { transactionType: \"Interest\", direction: \"CREDIT\", amount: 85.5, count: 1 },\n { transactionType: \"Refund\", direction: \"CREDIT\", amount: 450.0, count: 2 },\n];\n\nexport const mockPrograms = [\n { value: \"PROG-001\", label: \"Consumer Banking Program\" },\n { value: \"PROG-002\", label: \"Business Banking Program\" },\n { value: \"PROG-003\", label: \"Premium Rewards Program\" },\n { value: \"PROG-004\", label: \"Premium Rewards Program 1\" },\n { value: \"PROG-005\", label: \"Premium Rewards Program 2\" },\n { value: \"PROG-006\", label: \"Premium Rewards Program 3\" },\n { value: \"PROG-007\", label: \"Premium Rewards Program 4\" },\n { value: \"PROG-008\", label: \"Premium Rewards Program 5\" },\n { value: \"PROG-009\", label: \"Premium Rewards Program 6\" },\n { value: \"PROG-0010\", label: \"Consumer Banking Program\" },\n { value: \"PROG-0011\", label: \"Business Banking Program\" },\n { value: \"PROG-0013\", label: \"Premium Rewards Program\" },\n { value: \"PROG-0041\", label: \"Premium Rewards Program 1\" },\n { value: \"PROG-0051\", label: \"Premium Rewards Program 2\" },\n { value: \"PROG-0061\", label: \"Premium Rewards Program 3\" },\n { value: \"PROG-0071\", label: \"Premium Rewards Program 4\" },\n { value: \"PROG-0081\", label: \"Premium Rewards Program 5\" },\n { value: \"PROG-0091\", label: \"Premium Rewards Program 6\" },\n { value: \"PROG-0014\", label: \"Consumer Banking Program\" },\n { value: \"PROG-0024\", label: \"Business Banking Program\" },\n { value: \"PROG-0034\", label: \"Premium Rewards Program\" },\n { value: \"PROG-0044\", label: \"Premium Rewards Program 1\" },\n { value: \"PROG-0054\", label: \"Premium Rewards Program 2\" },\n { value: \"PROG-0064\", label: \"Premium Rewards Program 3\" },\n { value: \"PROG-0074\", label: \"Premium Rewards Program 4\" },\n { value: \"PROG-0084\", label: \"Premium Rewards Program 5\" },\n { value: \"PROG-0094\", label: \"Premium Rewards Program 6\" },\n { value: \"PROG-00104\", label: \"Consumer Banking Program\" },\n { value: \"PROG-00114\", label: \"Business Banking Program\" },\n { value: \"PROG-00134\", label: \"Premium Rewards Program\" },\n { value: \"PROG-00414\", label: \"Premium Rewards Program 1\" },\n { value: \"PROG-00514\", label: \"Premium Rewards Program 2\" },\n { value: \"PROG-00614\", label: \"Premium Rewards Program 3\" },\n { value: \"PROG-00714\", label: \"Premium Rewards Program 4\" },\n { value: \"PROG-00814\", label: \"Premium Rewards Program 5\" },\n { value: \"PROG-00914\", label: \"Premium Rewards Program 6\" },\n];\n\nexport const mockProducts = [\n { value: \"PROD-001\", label: \"Checking Account\" },\n { value: \"PROD-002\", label: \"Savings Account\" },\n { value: \"PROD-003\", label: \"Money Market Account\" },\n { value: \"PROD-004\", label: \"Business Checking\" },\n];\n","import { Edit } from \"lucide-react\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { StatementHeader as StatementHeaderType, calculateBalanceChange } from \"@/lib/mock-data/statement-data\"\n\ninterface StatementHeaderProps {\n data: StatementHeaderType\n onEdit: () => void\n}\n\nexport const StatementHeader = ({ data, onEdit }: StatementHeaderProps) => {\n // Helper to check if value is not empty\n const hasValue = (value: string | undefined): value is string => {\n return value !== undefined && value !== null && value.trim() !== ''\n }\n\n // Only calculate balance change if both values exist\n const balanceChange = (data.startingBalance && data.endingBalance)\n ? calculateBalanceChange(data.startingBalance, data.endingBalance)\n : null\n \n return (\n <Card>\n <CardHeader direction=\"row\">\n <CardTitle size=\"md\">Statement Summary</CardTitle>\n <Button variant=\"outline\" size=\"sm\" onClick={onEdit}>\n <Edit className=\"h-4 w-4 mr-2\" />\n Edit\n </Button>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n {hasValue(data.account) && (\n <InfoField \n label=\"Account\" \n value={data.account} \n layout=\"horizontal\"\n />\n )}\n {hasValue(data.productId) && (\n <InfoField \n label=\"Product ID\" \n value={data.productId} \n layout=\"horizontal\"\n />\n )}\n {hasValue(data.programId) && (\n <InfoField \n label=\"Program ID\" \n value={data.programId} \n layout=\"horizontal\"\n />\n )}\n {hasValue(data.startDate) && (\n <InfoField \n label=\"Start Date\" \n value={data.startDate} \n layout=\"horizontal\"\n />\n )}\n {hasValue(data.endDate) && (\n <InfoField \n label=\"End Date\" \n value={data.endDate} \n layout=\"horizontal\"\n />\n )}\n {hasValue(data.startingBalance) && (\n <InfoField \n label=\"Starting Balance\" \n value={data.startingBalance} \n layout=\"horizontal\"\n />\n )}\n {hasValue(data.endingBalance) && (\n <InfoField \n label=\"Ending Balance\" \n value={data.endingBalance} \n layout=\"horizontal\"\n />\n )}\n {balanceChange && (\n <InfoField \n label=\"Balance Change\" \n value={\n <span className={balanceChange.isPositive ? \"text-green-600 font-medium\" : \"text-red-600 font-medium\"}>\n {balanceChange.formatted}\n </span>\n }\n layout=\"horizontal\"\n />\n )}\n </div>\n </CardContent>\n </Card>\n )\n}\n","import * as React from \"react\"\nimport { DayPicker } from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/components/ui/button\"\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3 pointer-events-auto\", className)}\n classNames={{\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n month: \"space-y-4\",\n caption: \"flex justify-center pt-1 relative items-center\",\n caption_label: \"text-sm font-medium\",\n nav: \"space-x-1 flex items-center\",\n button_previous: \"absolute left-1 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\n button_next: \"absolute right-1 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\n month_grid: \"w-full border-collapse space-y-1\",\n weekdays: \"flex\",\n weekday: \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\n week: \"flex w-full mt-2\",\n day: \"h-9 w-9 text-center text-sm p-0 relative hover:bg-accent hover:text-accent-foreground rounded-md\",\n day_button: cn(\n buttonVariants({ variant: \"ghost\" }),\n \"h-9 w-9 p-0 font-normal\"\n ),\n selected: \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground\",\n today: \"bg-accent text-accent-foreground\",\n outside: \"text-muted-foreground opacity-50\",\n disabled: \"text-muted-foreground opacity-50\",\n hidden: \"invisible\",\n ...classNames,\n }}\n {...props}\n />\n )\n}\nCalendar.displayName = \"Calendar\"\n\nexport { Calendar }\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent }\n","import * as React from \"react\"\nimport { format } from \"date-fns\"\nimport { CalendarIcon } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Calendar } from \"@/components/ui/calendar\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\"\n\ninterface DatePickerProps {\n date?: Date\n onDateChange?: (date: Date | undefined) => void\n placeholder?: string\n disabled?: boolean\n className?: string\n buttonClassName?: string\n calendarClassName?: string\n align?: \"start\" | \"center\" | \"end\"\n disabledDates?: (date: Date) => boolean\n}\n\nexport function DatePicker({\n date,\n onDateChange,\n placeholder = \"Pick a date\",\n disabled = false,\n className,\n buttonClassName,\n calendarClassName,\n align = \"start\",\n disabledDates,\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false)\n\n const handleSelect = (selectedDate: Date | undefined) => {\n onDateChange?.(selectedDate)\n setOpen(false)\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"justify-start text-left font-normal\",\n !date && \"text-muted-foreground\",\n buttonClassName\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {date ? format(date, \"MM/dd/yyyy\") : placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className={cn(\"w-auto p-0\", className)} align={align}>\n <Calendar\n mode=\"single\"\n selected={date}\n onSelect={handleSelect}\n disabled={disabledDates}\n initialFocus\n className={cn(\"pointer-events-auto\", calendarClassName)}\n />\n </PopoverContent>\n </Popover>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { ChevronDown, ChevronUp, ChevronsUpDown } from \"lucide-react\"\n\nexport interface DataTableColumn<T = any> {\n key: string\n title: string\n sortable?: boolean\n render?: (value: any, row: T) => React.ReactNode\n width?: string\n align?: \"left\" | \"center\" | \"right\"\n}\n\nexport interface DataTableProps<T = any> {\n columns: DataTableColumn<T>[]\n data: T[]\n sortBy?: string\n sortDirection?: \"asc\" | \"desc\"\n onSort?: (key: string) => void\n onRowClick?: (row: T) => void\n loading?: boolean\n emptyMessage?: string\n className?: string\n}\n\nexport function DataTable<T extends Record<string, any>>({\n columns,\n data,\n sortBy,\n sortDirection,\n onSort,\n onRowClick,\n loading = false,\n emptyMessage = \"No data available\",\n className\n}: DataTableProps<T>) {\n const handleSort = (key: string) => {\n if (onSort) {\n onSort(key)\n }\n }\n\n const renderSortIcon = (column: DataTableColumn<T>) => {\n if (!column.sortable || !onSort) return null\n \n if (sortBy === column.key) {\n return sortDirection === \"asc\" ? \n <ChevronUp className=\"w-4 h-4 ml-1\" /> : \n <ChevronDown className=\"w-4 h-4 ml-1\" />\n }\n \n return <ChevronsUpDown className=\"w-4 h-4 ml-1 opacity-50\" />\n }\n\n const renderCell = (column: DataTableColumn<T>, row: T) => {\n const value = row[column.key]\n \n if (column.render) {\n return column.render(value, row)\n }\n \n // Auto-render common types\n if (typeof value === \"boolean\") {\n return <Badge variant={value ? \"success\" : \"secondary\"}>{value ? \"Yes\" : \"No\"}</Badge>\n }\n \n if (Array.isArray(value)) {\n return value.join(\", \")\n }\n \n return value?.toString() || \"-\"\n }\n\n if (loading) {\n return (\n <div className={cn(\"rounded-md border\", className)}>\n <div className=\"p-8 text-center\">\n <div className=\"animate-pulse text-muted-foreground\">Loading...</div>\n </div>\n </div>\n )\n }\n\n return (\n <div className={cn(\"rounded-md border\", className)}>\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b bg-muted/50\">\n {columns.map((column) => (\n <th\n key={column.key}\n className={cn(\n \"px-3 py-2 text-left align-middle text-sm font-medium bg-muted/50\",\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\",\n column.width && `w-[${column.width}]`\n )}\n >\n {column.sortable && onSort ? (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-auto p-0 text-sm font-medium hover:bg-transparent\"\n onClick={() => handleSort(column.key)}\n >\n <span className=\"flex items-center\">\n {column.title}\n {renderSortIcon(column)}\n </span>\n </Button>\n ) : (\n column.title\n )}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.length === 0 ? (\n <tr>\n <td colSpan={columns.length} className=\"h-24 text-center text-muted-foreground\">\n {emptyMessage}\n </td>\n </tr>\n ) : (\n data.map((row, index) => (\n <tr\n key={index}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50\",\n onRowClick && \"cursor-pointer\"\n )}\n onClick={() => onRowClick?.(row)}\n >\n {columns.map((column) => (\n <td\n key={column.key}\n className={cn(\n \"px-3 py-2 align-middle text-sm\",\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\"\n )}\n >\n {renderCell(column, row)}\n </td>\n ))}\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n </div>\n )\n}","import { Download, FileText, Loader2, RefreshCw, AlertCircle } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { DatePicker } from \"@/components/ui/date-picker\"\nimport { DataTable, DataTableColumn } from \"@/components/ui/data-table\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { StatementHeader as StatementHeaderComponent } from \"@/components/statement/StatementHeader\"\nimport { StatementTransaction, StatementHeader } from \"@/lib/mock-data/statement-data\"\n\nconst statementTypes = [\n { value: \"root\", label: \"Root\" },\n { value: \"program\", label: \"Program\" },\n { value: \"product\", label: \"Product\" },\n { value: \"account\", label: \"Account\" }\n]\n\nconst columns: DataTableColumn<StatementTransaction>[] = [\n {\n key: \"transactionType\",\n title: \"Transaction Type\",\n sortable: true,\n align: \"left\"\n },\n {\n key: \"direction\",\n title: \"Direction\",\n sortable: true,\n align: \"left\",\n render: (value: string) => (\n <Badge variant={value === \"CREDIT\" ? \"success\" : \"secondary\"}>\n {value}\n </Badge>\n )\n },\n {\n key: \"amount\",\n title: \"Amount\",\n sortable: true,\n align: \"right\",\n render: (value: number) => `$${value.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`\n },\n {\n key: \"count\",\n title: \"Count\",\n sortable: true,\n align: \"right\"\n }\n]\n\ninterface StatementViewProps {\n statementType: string\n selectedProgram: string\n selectedProduct: string\n accountNumber: string\n startDate: Date | undefined\n endDate: Date | undefined\n statementGenerated: boolean\n programs: Array<{ value: string; label: string }>\n products: Array<{ value: string; label: string }>\n statementHeader: StatementHeader | null\n statementTransactions: StatementTransaction[]\n programsLoading: boolean\n productsLoading: boolean\n programsError: string | null\n productsError: string | null\n onStatementTypeChange: (value: string) => void\n onProgramChange: (value: string) => void\n onProductChange: (value: string) => void\n onAccountNumberChange: (value: string) => void\n onStartDateChange: (date: Date | undefined) => void\n onEndDateChange: (date: Date | undefined) => void\n onGenerateStatement: () => void\n onEdit: () => void\n onDownloadCSV: () => void\n onPrintPDF: () => void\n onRetryFetch: () => void\n shouldShowRetry: boolean\n isGenerateDisabled: boolean\n isLoading: boolean\n}\n\nexport const StatementView = ({\n statementType,\n selectedProgram,\n selectedProduct,\n accountNumber,\n startDate,\n endDate,\n statementGenerated,\n programs,\n products,\n statementHeader,\n statementTransactions,\n programsLoading,\n productsLoading,\n programsError,\n productsError,\n onStatementTypeChange,\n onProgramChange,\n onProductChange,\n onAccountNumberChange,\n onStartDateChange,\n onEndDateChange,\n onGenerateStatement,\n onEdit,\n onDownloadCSV,\n onPrintPDF,\n onRetryFetch,\n shouldShowRetry,\n isGenerateDisabled,\n isLoading\n}: StatementViewProps) => {\n return (\n <div className=\"container mx-auto p-6 space-y-6\">\n {/* Page Header */}\n <div>\n <h1 className=\"text-3xl font-bold tracking-tight\">Statement</h1>\n <p className=\"text-muted-foreground mt-1\">\n Generate and view statement reports\n </p>\n </div>\n\n {/* Filter Section - Only show when not generated */}\n {!statementGenerated && (\n <Card>\n <CardHeader>\n <CardTitle size=\"md\">Statement Parameters</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4\">\n {/* Statement Type */}\n <EnhancedSelect\n label=\"Statement Type\"\n placeholder=\"Select type\"\n options={statementTypes}\n value={statementType}\n onValueChange={onStatementTypeChange}\n />\n\n {/* Error Alert for Programs */}\n {statementType === \"program\" && programsError && (\n <div className=\"col-span-full\">\n <div className=\"flex items-center gap-2 p-3 bg-destructive/10 border border-destructive/20 rounded-md text-sm text-destructive\">\n <AlertCircle className=\"h-4 w-4\" />\n <span>{programsError}</span>\n </div>\n </div>\n )}\n\n {/* Error Alert for Products */}\n {statementType === \"product\" && productsError && (\n <div className=\"col-span-full\">\n <div className=\"flex items-center gap-2 p-3 bg-destructive/10 border border-destructive/20 rounded-md text-sm text-destructive\">\n <AlertCircle className=\"h-4 w-4\" />\n <span>{productsError}</span>\n </div>\n </div>\n )}\n\n {/* Conditional Secondary Selector */}\n {statementType === \"program\" && (\n <EnhancedSelect\n label=\"Program Name\"\n placeholder={programsLoading ? \"Loading programs...\" : \"Select program\"}\n options={programs}\n value={selectedProgram}\n onValueChange={onProgramChange}\n disabled={programsLoading || !!programsError}\n />\n )}\n\n {statementType === \"product\" && (\n <EnhancedSelect\n label=\"Product Name\"\n placeholder={productsLoading ? \"Loading products...\" : \"Select product\"}\n options={products}\n value={selectedProduct}\n onValueChange={onProductChange}\n disabled={productsLoading || !!productsError}\n />\n )}\n\n {statementType === \"account\" && (\n <EnhancedInput\n label=\"Account Number\"\n placeholder=\"Enter account number\"\n value={accountNumber}\n onChange={(e) => onAccountNumberChange(e.target.value)}\n />\n )}\n\n {/* Start Date */}\n <div className=\"flex flex-col gap-2\">\n <label className=\"text-sm font-medium\">Start Date</label>\n <DatePicker\n date={startDate}\n onDateChange={onStartDateChange}\n placeholder=\"Select start date\"\n buttonClassName=\"w-full\"\n />\n </div>\n\n {/* End Date */}\n <div className=\"flex flex-col gap-2\">\n <label className=\"text-sm font-medium\">End Date</label>\n <DatePicker\n date={endDate}\n onDateChange={onEndDateChange}\n placeholder=\"Select end date\"\n buttonClassName=\"w-full\"\n />\n </div>\n </div>\n\n {/* Generate or Retry Button */}\n <div className=\"flex justify-end\">\n {shouldShowRetry ? (\n <Button \n onClick={onRetryFetch}\n variant=\"outline\"\n disabled={programsLoading || productsLoading}\n >\n {(programsLoading || productsLoading) && <Loader2 className=\"h-4 w-4 animate-spin\" />}\n {(programsLoading || productsLoading) ? \"Retrying...\" : (\n <>\n <RefreshCw className=\"h-4 w-4\" />\n Retry\n </>\n )}\n </Button>\n ) : (\n <Button \n onClick={onGenerateStatement}\n disabled={isGenerateDisabled || isLoading}\n >\n {isLoading && <Loader2 className=\"h-4 w-4 animate-spin\" />}\n {isLoading ? \"Generating...\" : \"Generate Statement\"}\n </Button>\n )}\n </div>\n </CardContent>\n </Card>\n )}\n\n {/* Statement Results */}\n {statementGenerated && statementHeader && (\n <>\n {/* Statement Header */}\n <StatementHeaderComponent data={statementHeader} onEdit={onEdit} />\n\n {/* Statement Table */}\n <Card>\n <CardHeader direction=\"row\">\n <CardTitle size=\"md\">Transaction Summary</CardTitle>\n \n {/* Action Buttons */}\n <div className=\"flex items-center gap-2\">\n <Button variant=\"outline\" onClick={onDownloadCSV}>\n <Download className=\"h-4 w-4 mr-2\" />\n Download CSV\n </Button>\n <Button variant=\"outline\" onClick={onPrintPDF}>\n <FileText className=\"h-4 w-4 mr-2\" />\n Print PDF\n </Button>\n </div>\n </CardHeader>\n <CardContent>\n <DataTable\n columns={columns}\n data={statementTransactions}\n emptyMessage=\"No transactions found\"\n />\n </CardContent>\n </Card>\n </>\n )}\n </div>\n )\n}\n","import { FormCard } from \"@/components/ui/form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { Button } from \"@/components/ui/button\"\nimport { JsonViewer } from \"@/components/ui/json-viewer\"\n\ninterface ACHDetails {\n type: string\n originatorName: string\n originatorAccountNumber: string\n receiverName: string\n receiverAccountNumber: string\n receiverRoutingNumber: string\n amount: number\n secCode: string\n companyEntryDescription: string\n companyDiscretionaryData?: string\n individualIdNumber?: string\n individualName?: string\n traceNumber: string\n raw?: any\n}\n\ninterface ACHDetailsSectionProps {\n data: ACHDetails\n}\n\nexport const ACHDetailsSection = ({ data }: ACHDetailsSectionProps) => {\n const formatCurrency = (value: number) => {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2\n }).format(value)\n }\n\n return (\n <FormCard title=\"ACH Transfer Details\">\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-x-8 gap-y-4\">\n <InfoField label=\"Type\" value={data.type} layout=\"horizontal\" />\n <InfoField label=\"Originator Name\" value={data.originatorName} layout=\"horizontal\" />\n <InfoField \n label=\"Originator Account Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {data.originatorAccountNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Receiver Name\" value={data.receiverName} layout=\"horizontal\" />\n <InfoField \n label=\"Receiver Account Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {data.receiverAccountNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField \n label=\"Receiver Routing Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {data.receiverRoutingNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Amount\" value={formatCurrency(data.amount)} layout=\"horizontal\" />\n <InfoField label=\"SEC Code\" value={data.secCode} layout=\"horizontal\" />\n <InfoField label=\"Company Entry Description\" value={data.companyEntryDescription} layout=\"horizontal\" />\n {data.companyDiscretionaryData && (\n <InfoField label=\"Company Discretionary Data\" value={data.companyDiscretionaryData} layout=\"horizontal\" />\n )}\n {data.individualIdNumber && (\n <InfoField label=\"Individual ID Number\" value={data.individualIdNumber} layout=\"horizontal\" />\n )}\n {data.individualName && (\n <InfoField label=\"Individual Name\" value={data.individualName} layout=\"horizontal\" />\n )}\n <InfoField label=\"Trace Number\" value={data.traceNumber} layout=\"horizontal\" />\n </div>\n\n {/* Raw JSON - Full Width */}\n {data.raw && (\n <div className=\"mt-6 pt-6 border-t border-border\">\n <InfoField \n label=\"Raw\" \n value={<JsonViewer data={data.raw} className=\"mt-2\" compact={true} />}\n />\n </div>\n )}\n </FormCard>\n )\n}\n","import { FormCard } from \"@/components/ui/form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { Button } from \"@/components/ui/button\"\nimport { JsonViewer } from \"@/components/ui/json-viewer\"\n\ninterface WireDetails {\n type: string\n originatorName: string\n originatorAccountNumber: string\n originatorAddress: string\n beneficiaryName: string\n beneficiaryAccountNumber: string\n beneficiaryAddress: string\n beneficiaryFIName: string\n beneficiaryFIRoutingNumber: string\n beneficiaryFIAddress: string\n originatorFIName: string\n originatorFIRoutingNumber: string\n originatorFIAddress: string\n intermediaryFIName?: string\n intermediaryFIRoutingNumber?: string\n intermediaryFIAddress?: string\n raw?: any\n}\n\ninterface WireDetailsSectionProps {\n data: WireDetails\n}\n\nexport const WireDetailsSection = ({ data }: WireDetailsSectionProps) => {\n return (\n <FormCard title=\"Wire Transfer Details\">\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-x-8 gap-y-4\">\n <InfoField label=\"Type\" value={data.type} layout=\"horizontal\" />\n <InfoField label=\"Originator Name\" value={data.originatorName} layout=\"horizontal\" />\n <InfoField \n label=\"Originator Account Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {data.originatorAccountNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Originator Address\" value={data.originatorAddress} layout=\"horizontal\" />\n <InfoField label=\"Beneficiary Name\" value={data.beneficiaryName} layout=\"horizontal\" />\n <InfoField \n label=\"Beneficiary Account Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {data.beneficiaryAccountNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Beneficiary Address\" value={data.beneficiaryAddress} layout=\"horizontal\" />\n <InfoField label=\"Beneficiary FI Name\" value={data.beneficiaryFIName} layout=\"horizontal\" />\n <InfoField \n label=\"Beneficiary FI Routing Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {data.beneficiaryFIRoutingNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Beneficiary FI Address\" value={data.beneficiaryFIAddress} layout=\"horizontal\" />\n <InfoField label=\"Originator FI Name\" value={data.originatorFIName} layout=\"horizontal\" />\n <InfoField \n label=\"Originator FI Routing Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {data.originatorFIRoutingNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Originator FI Address\" value={data.originatorFIAddress} layout=\"horizontal\" />\n \n {data.intermediaryFIName && (\n <>\n <InfoField label=\"Intermediary FI Name\" value={data.intermediaryFIName} layout=\"horizontal\" />\n {data.intermediaryFIRoutingNumber && (\n <InfoField \n label=\"Intermediary FI Routing Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {data.intermediaryFIRoutingNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n )}\n {data.intermediaryFIAddress && (\n <InfoField label=\"Intermediary FI Address\" value={data.intermediaryFIAddress} layout=\"horizontal\" />\n )}\n </>\n )}\n </div>\n\n {/* Raw JSON - Full Width */}\n {data.raw && (\n <div className=\"mt-6 pt-6 border-t border-border\">\n <InfoField \n label=\"Raw\" \n value={<JsonViewer data={data.raw} className=\"mt-2\" compact={true} />}\n />\n </div>\n )}\n </FormCard>\n )\n}\n","import * as React from \"react\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { cn } from \"@/lib/utils\"\nimport { Building, CreditCard, Globe } from \"lucide-react\"\n\ninterface AccountCardProps {\n account: {\n id: string\n name: string\n number: string\n type: \"checking\" | \"savings\" | \"credit\" | \"investment\"\n status: \"active\" | \"inactive\" | \"pending\" | \"suspended\"\n balance?: string\n currency?: string\n institution?: string\n routingNumber?: string\n country?: string\n }\n showBalance?: boolean\n className?: string\n}\n\nconst typeIcons = {\n checking: CreditCard,\n savings: Building,\n credit: CreditCard,\n investment: Globe\n}\n\nconst typeLabels = {\n checking: \"Checking\",\n savings: \"Savings\", \n credit: \"Credit\",\n investment: \"Investment\"\n}\n\nexport const AccountCard = React.forwardRef<HTMLDivElement, AccountCardProps>(\n ({ account, showBalance = true, className }, ref) => {\n const TypeIcon = typeIcons[account.type]\n \n const accountData = [\n { label: \"Account Number\", value: account.number },\n { label: \"Type\", value: typeLabels[account.type] },\n ...(account.routingNumber ? [{ label: \"Routing Number\", value: account.routingNumber }] : []),\n ...(account.institution ? [{ label: \"Institution\", value: account.institution }] : []),\n ...(account.country ? [{ label: \"Country\", value: account.country }] : [])\n ]\n\n return (\n <Card ref={ref} className={cn(\"\", className)}>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-3\">\n <div className=\"flex items-center justify-center w-10 h-10 rounded-lg bg-primary/10\">\n <TypeIcon className=\"w-5 h-5 text-primary\" />\n </div>\n <div>\n <CardTitle className=\"text-lg\">{account.name}</CardTitle>\n <div className=\"flex items-center space-x-2 mt-1\">\n <Badge variant={account.status as any}>{account.status}</Badge>\n <span className=\"text-sm text-muted-foreground\">\n {typeLabels[account.type]}\n </span>\n </div>\n </div>\n </div>\n \n {showBalance && account.balance && (\n <div className=\"text-right\">\n <div className=\"text-2xl font-bold text-foreground\">\n {account.balance}\n </div>\n {account.currency && (\n <div className=\"text-sm text-muted-foreground\">\n {account.currency}\n </div>\n )}\n </div>\n )}\n </div>\n </CardHeader>\n \n <CardContent>\n <DataGrid data={accountData} columns={2} gap=\"sm\" />\n </CardContent>\n </Card>\n )\n }\n)\n\nAccountCard.displayName = \"AccountCard\"","import { Badge } from \"@/components/ui/badge\"\nimport { Building, Briefcase, Users, User } from \"lucide-react\"\n\ninterface BusinessTypeBadgeProps {\n type: \"corporation\" | \"llc\" | \"partnership\" | \"sole_proprietorship\"\n className?: string\n}\n\nconst typeConfig = {\n corporation: {\n variant: \"corporation\" as const,\n label: \"Corporation\",\n icon: Building\n },\n llc: {\n variant: \"llc\" as const,\n label: \"LLC\",\n icon: Briefcase\n },\n partnership: {\n variant: \"partnership\" as const,\n label: \"Partnership\",\n icon: Users\n },\n sole_proprietorship: {\n variant: \"sole_proprietorship\" as const,\n label: \"Sole Proprietorship\",\n icon: User\n }\n}\n\nexport const BusinessTypeBadge = ({ type, className }: BusinessTypeBadgeProps) => {\n const config = typeConfig[type]\n const Icon = config.icon\n\n return (\n <Badge variant={config.variant} className={className}>\n <Icon className=\"w-3 h-3 mr-1\" />\n {config.label}\n </Badge>\n )\n}","import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface PageAction {\n label: string\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\"\n onClick: () => void\n icon?: React.ComponentType<{ className?: string }>\n}\n\nexport interface PageCard {\n component: React.ComponentType<any>\n key: string\n expandOnEdit?: boolean\n props?: Record<string, any>\n}\n\ninterface PageLayoutProps {\n title: string | React.ReactNode\n description?: string\n children?: React.ReactNode\n actions?: PageAction[]\n cards?: PageCard[]\n mode?: \"simple\" | \"detail\" | \"cards\"\n maxWidth?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\"\n gridCols?: 1 | 2 | 3 | 4\n responsive?: boolean\n className?: string\n headerContent?: React.ReactNode\n}\n\nconst maxWidthClasses = {\n sm: \"max-w-2xl\",\n md: \"max-w-4xl\", \n lg: \"max-w-6xl\",\n xl: \"max-w-7xl\",\n \"2xl\": \"max-w-screen-2xl\",\n full: \"max-w-none\"\n}\n\nconst getGridClasses = (gridCols: number, responsive: boolean) => {\n const colsMap = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\", \n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\"\n }\n \n if (!responsive) {\n return colsMap[gridCols as keyof typeof colsMap] || \"grid-cols-1\"\n }\n \n // Responsive grid classes\n switch (gridCols) {\n case 1:\n return \"grid-cols-1\"\n case 2:\n return \"grid-cols-1 lg:grid-cols-2\"\n case 3:\n return \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3\"\n case 4:\n return \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\"\n default:\n return \"grid-cols-1 lg:grid-cols-2\"\n }\n}\n\nexport const PageLayout = React.forwardRef<HTMLDivElement, PageLayoutProps>(\n ({ \n title, \n description, \n children, \n actions = [], \n cards = [],\n mode = \"simple\",\n maxWidth = \"xl\",\n gridCols = 2,\n responsive = true,\n className,\n headerContent\n }, ref) => {\n const [editingCards, setEditingCards] = React.useState<Set<string>>(new Set())\n\n const toggleEdit = (cardKey: string) => {\n setEditingCards(prev => {\n const next = new Set(prev)\n if (next.has(cardKey)) {\n next.delete(cardKey)\n } else {\n next.add(cardKey)\n }\n return next\n })\n }\n\n return (\n <div ref={ref} className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Sticky Header */}\n <div className={cn(\n \"sticky top-0 z-10 bg-gradient-subtle border-b border-border/40\",\n \"container mx-auto px-4 pt-8 pb-4\",\n maxWidthClasses[maxWidth]\n )}>\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1\">\n <h1 className=\"text-3xl font-bold text-foreground mb-2\">\n {title}\n </h1>\n {description && (\n <p className=\"text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n \n {headerContent && (\n <div className=\"flex items-center\">\n {headerContent}\n </div>\n )}\n \n {actions.length > 0 && (\n <div className=\"flex items-center gap-2\">\n {actions.map((action, index) => {\n const Icon = action.icon\n return (\n <button\n key={index}\n onClick={action.onClick}\n className={cn(\n \"inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors\",\n {\n \"bg-primary text-primary-foreground hover:bg-primary/90\": action.variant === \"default\" || !action.variant,\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\": action.variant === \"secondary\",\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\": action.variant === \"destructive\",\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\": action.variant === \"outline\",\n \"hover:bg-accent hover:text-accent-foreground\": action.variant === \"ghost\"\n }\n )}\n >\n {Icon && <Icon className=\"h-4 w-4\" />}\n {action.label}\n </button>\n )\n })}\n </div>\n )}\n </div>\n </div>\n \n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-y-auto\">\n <div className={cn(\n \"container mx-auto px-4 py-6\",\n maxWidthClasses[maxWidth],\n className\n )}>\n {mode === \"cards\" && cards.length > 0 ? (\n <div className={cn(\"grid gap-6\", getGridClasses(gridCols, responsive))}>\n {cards.map((card) => {\n const isEditing = editingCards.has(card.key)\n const shouldExpand = card.expandOnEdit && isEditing\n \n return (\n <div \n key={card.key}\n className={cn(\n \"transition-all duration-300\",\n shouldExpand && (gridCols > 1 ? \"col-span-full\" : \"\")\n )}\n >\n <card.component\n {...card.props}\n isEditing={isEditing}\n onToggleEdit={() => toggleEdit(card.key)}\n />\n </div>\n )\n })}\n </div>\n ) : (\n children\n )}\n </div>\n </div>\n </div>\n )\n }\n)\n\nPageLayout.displayName = \"PageLayout\"","import { ReactNode, useState } from \"react\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { Button } from \"@/components/ui/button\"\n\ninterface DetailPageCard {\n key: string\n component: (props: { isEditing: boolean; onToggleEdit: () => void; className?: string }) => ReactNode\n expandOnEdit?: boolean\n}\n\ninterface DetailPageAction {\n label: string\n variant?: \"default\" | \"outline\" | \"destructive\" | \"secondary\" | \"ghost\"\n onClick?: () => void\n className?: string\n}\n\ninterface DetailPageLayoutProps {\n title: string\n description: string\n cards: DetailPageCard[]\n actions?: DetailPageAction[]\n initialEditingState?: Record<string, boolean>\n}\n\nexport const DetailPageLayout = ({ \n title, \n description, \n cards, \n actions,\n initialEditingState = {}\n}: DetailPageLayoutProps) => {\n const [editingCards, setEditingCards] = useState<Record<string, boolean>>(\n initialEditingState\n )\n\n const toggleEdit = (cardKey: string) => {\n setEditingCards(prev => ({\n ...prev,\n [cardKey]: !prev[cardKey]\n }))\n }\n\n const isAnyCardEditing = Object.values(editingCards).some(Boolean)\n\n const isSingleCard = cards.length === 1\n const gridClasses = isSingleCard \n ? \"space-y-4 mb-6 lg:space-y-6\" \n : \"grid gap-4 mb-6 grid-cols-1 lg:grid-cols-2 lg:gap-6\"\n\n return (\n <PageLayout \n title={title} \n description={description}\n actions={actions?.map(action => ({\n label: action.label,\n variant: action.variant || \"default\",\n onClick: action.onClick || (() => {})\n }))}\n >\n {/* Cards - Full width for single card, max 2 per row for multiple */}\n <div className={gridClasses}>\n {cards.map((card) => {\n const isEditing = editingCards[card.key] || false\n const shouldExpand = !isSingleCard && card.expandOnEdit !== false && isEditing\n \n return (\n <div \n key={card.key}\n className={shouldExpand ? \"col-span-full\" : \"\"}\n >\n {card.component({ \n isEditing, \n onToggleEdit: () => toggleEdit(card.key),\n className: shouldExpand ? \"col-span-full\" : \"\"\n })}\n </div>\n )\n })}\n </div>\n </PageLayout>\n )\n}","import * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { cn } from \"@/lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n}","import { useState } from \"react\"\nimport { InfoField } from \"./info-field\"\nimport { EnhancedSelect } from \"./enhanced-select\"\nimport { Badge } from \"./badge\"\nimport { cn } from \"@/lib/utils\"\n\ninterface EditableInfoFieldProps {\n label: string\n value: string | null | undefined\n options: { value: string; label: string }[]\n onChange: (value: string) => void\n placeholder?: string\n renderValue?: (value: string) => React.ReactNode\n className?: string\n}\n\nexport const EditableInfoField = ({\n label,\n value,\n options,\n onChange,\n placeholder = \"Select...\",\n renderValue,\n className\n}: EditableInfoFieldProps) => {\n const [isEditing, setIsEditing] = useState(false)\n\n const handleChange = (newValue: string) => {\n onChange(newValue)\n setIsEditing(false)\n }\n\n if (isEditing) {\n return (\n <div className={className}>\n <EnhancedSelect\n label={label}\n value={value || \"\"}\n onValueChange={handleChange}\n options={options}\n placeholder={placeholder}\n />\n </div>\n )\n }\n\n const displayValue = value \n ? (renderValue ? renderValue(value) : value)\n : placeholder\n\n return (\n <div \n className={cn(\"cursor-pointer transition-colors hover:bg-muted/50 rounded-md -mx-2 px-2 -my-1 py-1\", className)}\n onClick={() => setIsEditing(true)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n setIsEditing(true)\n }\n }}\n >\n <InfoField label={label} value={displayValue} />\n </div>\n )\n}\n","import * as React from \"react\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { cn } from \"@/lib/utils\"\nimport { MoreVertical, Edit, Trash2, Eye } from \"lucide-react\"\nimport { \n DropdownMenu, \n DropdownMenuContent, \n DropdownMenuItem, \n DropdownMenuSeparator, \n DropdownMenuTrigger \n} from \"@/components/ui/dropdown-menu\"\n\ninterface EntityAction {\n label: string\n icon: React.ReactNode\n onClick: () => void\n variant?: \"default\" | \"destructive\"\n}\n\ninterface EntityCardProps {\n entity: {\n id: string\n name: string\n type: string\n status: string\n description?: string\n metadata?: Record<string, any>\n }\n actions?: EntityAction[]\n showDefaultActions?: boolean\n onView?: (id: string) => void\n onEdit?: (id: string) => void\n onDelete?: (id: string) => void\n className?: string\n children?: React.ReactNode\n}\n\nexport const EntityCard = React.forwardRef<HTMLDivElement, EntityCardProps>(\n ({ \n entity, \n actions, \n showDefaultActions = true,\n onView,\n onEdit, \n onDelete,\n className, \n children \n }, ref) => {\n const defaultActions: EntityAction[] = [\n ...(onView ? [{\n label: \"View Details\",\n icon: <Eye className=\"w-4 h-4\" />,\n onClick: () => onView(entity.id)\n }] : []),\n ...(onEdit ? [{\n label: \"Edit\",\n icon: <Edit className=\"w-4 h-4\" />,\n onClick: () => onEdit(entity.id)\n }] : []),\n ...(onDelete ? [{\n label: \"Delete\",\n icon: <Trash2 className=\"w-4 h-4\" />,\n onClick: () => onDelete(entity.id),\n variant: \"destructive\" as const\n }] : [])\n ]\n\n const allActions = showDefaultActions ? [...defaultActions, ...(actions || [])] : (actions || [])\n \n const entityData = entity.metadata ? Object.entries(entity.metadata)\n .filter(([_, value]) => value !== null && value !== undefined)\n .map(([key, value]) => ({\n label: key.charAt(0).toUpperCase() + key.slice(1).replace(/([A-Z])/g, ' $1'),\n value: typeof value === 'object' ? JSON.stringify(value) : String(value)\n })) : []\n\n return (\n <Card ref={ref} className={cn(\"relative\", className)}>\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1 min-w-0\">\n <CardTitle className=\"text-lg truncate\">{entity.name}</CardTitle>\n <div className=\"flex items-center space-x-2 mt-2\">\n <Badge variant={entity.status as any}>{entity.status}</Badge>\n <Badge variant=\"outline\">{entity.type}</Badge>\n </div>\n {entity.description && (\n <p className=\"text-sm text-muted-foreground mt-2 line-clamp-2\">\n {entity.description}\n </p>\n )}\n </div>\n \n {allActions.length > 0 && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\">\n <MoreVertical className=\"w-4 h-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {allActions.map((action, index) => (\n <React.Fragment key={index}>\n <DropdownMenuItem\n onClick={action.onClick}\n className={cn(\n action.variant === \"destructive\" && \"text-destructive focus:text-destructive\"\n )}\n >\n {action.icon}\n {action.label}\n </DropdownMenuItem>\n {index < allActions.length - 1 && action.variant === \"destructive\" && (\n <DropdownMenuSeparator />\n )}\n </React.Fragment>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n </CardHeader>\n \n {(entityData.length > 0 || children) && (\n <CardContent>\n {entityData.length > 0 && (\n <DataGrid data={entityData} columns={2} gap=\"sm\" />\n )}\n {children}\n </CardContent>\n )}\n </Card>\n )\n }\n)\n\nEntityCard.displayName = \"EntityCard\"","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface FormFieldProps {\n label?: string\n description?: string\n error?: string\n required?: boolean\n children: React.ReactNode\n className?: string\n layout?: \"vertical\" | \"horizontal\"\n}\n\nexport const FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(\n ({ label, description, error, required, children, className, layout = \"vertical\" }, ref) => {\n const isHorizontal = layout === \"horizontal\"\n \n return (\n <div \n ref={ref}\n className={cn(\n \"space-y-2\",\n isHorizontal && \"grid grid-cols-1 md:grid-cols-3 gap-4 items-start space-y-0\",\n className\n )}\n >\n {label && (\n <div className={cn(\"space-y-1\", isHorizontal && \"pt-2\")}>\n <label className=\"text-sm font-medium text-foreground\">\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </label>\n {description && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n </div>\n )}\n \n <div className={cn(isHorizontal && \"md:col-span-2\")}>\n {children}\n {error && (\n <p className=\"text-xs text-destructive mt-1\">{error}</p>\n )}\n </div>\n </div>\n )\n }\n)\n\nFormField.displayName = \"FormField\"","import * as React from \"react\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { cn } from \"@/lib/utils\"\nimport { TrendingUp, TrendingDown, Minus } from \"lucide-react\"\n\ninterface MetricCardProps {\n title: string\n value: string | number\n description?: string\n trend?: {\n value: number\n label: string\n direction: \"up\" | \"down\" | \"neutral\"\n }\n icon?: React.ReactNode\n variant?: \"default\" | \"success\" | \"warning\" | \"destructive\"\n className?: string\n}\n\nconst variantStyles = {\n default: \"\",\n success: \"border-success/20 bg-success/5\",\n warning: \"border-warning/20 bg-warning/5\", \n destructive: \"border-destructive/20 bg-destructive/5\"\n}\n\nconst trendIcons = {\n up: TrendingUp,\n down: TrendingDown,\n neutral: Minus\n}\n\nconst trendColors = {\n up: \"success\",\n down: \"destructive\",\n neutral: \"secondary\"\n} as const\n\nexport const MetricCard = React.forwardRef<HTMLDivElement, MetricCardProps>(\n ({ title, value, description, trend, icon, variant = \"default\", className }, ref) => {\n const TrendIcon = trend ? trendIcons[trend.direction] : null\n \n return (\n <Card \n ref={ref}\n className={cn(variantStyles[variant], className)}\n >\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium text-muted-foreground\">\n {title}\n </CardTitle>\n {icon && (\n <div className=\"text-muted-foreground\">\n {icon}\n </div>\n )}\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold text-foreground\">{value}</div>\n {(description || trend) && (\n <div className=\"flex items-center justify-between mt-2\">\n {description && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n {trend && TrendIcon && (\n <Badge variant={trendColors[trend.direction]} className=\"text-xs\">\n <TrendIcon className=\"w-3 h-3 mr-1\" />\n {trend.value > 0 ? \"+\" : \"\"}{trend.value}% {trend.label}\n </Badge>\n )}\n </div>\n )}\n </CardContent>\n </Card>\n )\n }\n)\n\nMetricCard.displayName = \"MetricCard\"","import { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, toast } from \"sonner\"\n\ntype ToasterProps = React.ComponentProps<typeof Sonner>\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n \"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\",\n description: \"group-[.toast]:text-muted-foreground\",\n actionButton:\n \"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\",\n cancelButton:\n \"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\",\n },\n }}\n {...props}\n />\n )\n}\n\nexport { Toaster, toast }\n","import * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\nimport { cn } from \"@/lib/utils\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n className\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }","import * as React from \"react\"\nimport * as ToastPrimitives from \"@radix-ui/react-toast\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n className\n )}\n {...props}\n />\n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"border bg-background text-foreground\",\n destructive:\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n )\n})\nToast.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n className\n )}\n {...props}\n />\n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n \"absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"h-4 w-4\" />\n </ToastPrimitives.Close>\n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn(\"text-sm font-semibold\", className)}\n {...props}\n />\n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"text-sm opacity-90\", className)}\n {...props}\n />\n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n}\n","import { Badge } from \"@/components/ui/badge\"\nimport { ArrowDownRight, ArrowUpRight } from \"lucide-react\"\n\ninterface TransactionTypeBadgeProps {\n transactionType: string\n isInbound: boolean\n className?: string\n}\n\nexport const TransactionTypeBadge = ({ \n transactionType, \n isInbound,\n className \n}: TransactionTypeBadgeProps) => {\n const Icon = isInbound ? ArrowDownRight : ArrowUpRight\n const variant = \"outline\"\n \n return (\n <Badge variant={variant} className={className}>\n {isInbound && <Icon className=\"w-3 h-3 mr-1\" />}\n {transactionType}\n {!isInbound && <Icon className=\"w-3 h-3 ml-1\" />}\n </Badge>\n )\n}\n","import { Building, Users, User, CreditCard } from \"lucide-react\"\n\nexport const mockCounterparties = [\n {\n id: \"1\",\n name: \"Acme Corporation\",\n type: \"business\",\n businessType: \"corporation\",\n status: \"active\",\n description: \"Leading technology solutions provider\",\n metadata: {\n email: \"contact@acme.com\",\n phone: \"+1 (555) 123-4567\",\n country: \"United States\",\n lastActivity: \"2024-01-15\"\n }\n },\n {\n id: \"2\", \n name: \"Global Tech LLC\",\n type: \"business\",\n businessType: \"llc\",\n status: \"pending\",\n description: \"Software development and consulting services\",\n metadata: {\n email: \"info@globaltech.com\",\n phone: \"+1 (555) 987-6543\",\n country: \"Canada\",\n lastActivity: \"2024-01-10\"\n }\n },\n {\n id: \"3\",\n name: \"John Smith\",\n type: \"individual\", \n businessType: null,\n status: \"active\",\n description: \"Individual contractor and consultant\",\n metadata: {\n email: \"john.smith@email.com\",\n phone: \"+1 (555) 456-7890\",\n country: \"United States\",\n lastActivity: \"2024-01-20\"\n }\n },\n {\n id: \"4\",\n name: \"Innovation Partners\",\n type: \"business\",\n businessType: \"partnership\", \n status: \"inactive\",\n description: \"Strategic business consulting firm\",\n metadata: {\n email: \"hello@innovation.com\",\n phone: \"+1 (555) 321-0987\",\n country: \"United Kingdom\",\n lastActivity: \"2024-01-05\"\n }\n }\n]\n\nexport const mockAccounts = [\n {\n id: \"1\",\n name: \"Primary Checking\",\n number: \"****1234\",\n type: \"checking\" as const,\n status: \"active\" as const,\n balance: \"$24,567.89\",\n currency: \"USD\",\n institution: \"JPMorgan Chase\",\n routingNumber: \"021000021\",\n country: \"United States\"\n },\n {\n id: \"2\", \n name: \"Business Savings\",\n number: \"****5678\",\n type: \"savings\" as const,\n status: \"active\" as const,\n balance: \"$150,000.00\",\n currency: \"USD\",\n institution: \"Bank of America\", \n routingNumber: \"026009593\",\n country: \"United States\"\n },\n {\n id: \"3\",\n name: \"Investment Account\",\n number: \"****9012\",\n type: \"investment\" as const,\n status: \"pending\" as const,\n balance: \"$75,432.10\",\n currency: \"USD\",\n institution: \"Fidelity Investments\",\n routingNumber: \"011000235\",\n country: \"United States\"\n }\n]\n\nexport const mockMetrics = [\n {\n title: \"Total Counterparties\",\n value: \"1,234\",\n description: \"Active business relationships\",\n trend: {\n value: 12,\n label: \"from last month\",\n direction: \"up\" as const\n },\n icon: <Building className=\"w-4 h-4\" />,\n variant: \"default\" as const\n },\n {\n title: \"Wire Transfers\",\n value: \"$2.4M\",\n description: \"This month\",\n trend: {\n value: 8,\n label: \"from last month\", \n direction: \"up\" as const\n },\n icon: <CreditCard className=\"w-4 h-4\" />,\n variant: \"success\" as const\n },\n {\n title: \"ACH Transfers\",\n value: \"567\",\n description: \"Processed this week\",\n trend: {\n value: -3,\n label: \"from last week\",\n direction: \"down\" as const\n },\n icon: <Users className=\"w-4 h-4\" />,\n variant: \"warning\" as const\n },\n {\n title: \"Pending Reviews\",\n value: \"23\",\n description: \"Require attention\",\n trend: {\n value: 0,\n label: \"no change\",\n direction: \"neutral\" as const\n },\n icon: <User className=\"w-4 h-4\" />,\n variant: \"destructive\" as const\n }\n]\n\nexport const mockTableData = [\n {\n id: \"1\",\n name: \"Acme Corporation\",\n type: \"Business\",\n status: \"Active\",\n amount: \"$125,000\",\n date: \"2024-01-15\",\n verified: true\n },\n {\n id: \"2\",\n name: \"Global Tech LLC\", \n type: \"Business\",\n status: \"Pending\",\n amount: \"$75,500\",\n date: \"2024-01-12\",\n verified: false\n },\n {\n id: \"3\",\n name: \"John Smith\",\n type: \"Individual\",\n status: \"Active\", \n amount: \"$45,200\",\n date: \"2024-01-10\",\n verified: true\n }\n]","import * as React from \"react\"\nimport { ListPage } from \"@/components/layouts/list-page\"\nimport { MetricCard } from \"@/components/ui/metric-card\"\nimport { DataTable, type DataTableColumn } from \"@/components/ui/data-table\"\nimport { EntityCard } from \"@/components/ui/entity-card\"\nimport { AccountCard } from \"@/components/ui/account-card\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { mockMetrics, mockTableData, mockCounterparties, mockAccounts } from \"@/lib/mock-data\"\nimport { Plus, Download, TrendingUp } from \"lucide-react\"\n\nconst recentTransactions = [\n {\n id: \"1\",\n recipient: \"Acme Corporation\",\n amount: \"$25,000\",\n type: \"Wire Transfer\",\n status: \"completed\",\n date: \"2024-01-20\"\n },\n {\n id: \"2\", \n recipient: \"Global Tech LLC\",\n amount: \"$12,500\",\n type: \"ACH Transfer\",\n status: \"pending\",\n date: \"2024-01-20\"\n },\n {\n id: \"3\",\n recipient: \"John Smith\",\n amount: \"$3,200\",\n type: \"Wire Transfer\", \n status: \"completed\",\n date: \"2024-01-19\"\n }\n]\n\nconst transactionColumns: DataTableColumn[] = [\n { key: \"recipient\", title: \"Recipient\", sortable: true },\n { key: \"amount\", title: \"Amount\", sortable: true, align: \"right\" },\n { key: \"type\", title: \"Type\", sortable: true },\n { \n key: \"status\", \n title: \"Status\", \n sortable: true,\n render: (value) => <Badge variant={value === \"completed\" ? \"success\" : \"warning\"}>{value}</Badge>\n },\n { key: \"date\", title: \"Date\", sortable: true }\n]\n\nexport function DashboardDemo() {\n const [sortBy, setSortBy] = React.useState<string>()\n const [sortDirection, setSortDirection] = React.useState<\"asc\" | \"desc\">(\"asc\")\n\n const handleSort = (key: string) => {\n if (sortBy === key) {\n setSortDirection(sortDirection === \"asc\" ? \"desc\" : \"asc\")\n } else {\n setSortBy(key)\n setSortDirection(\"asc\")\n }\n }\n\n const breadcrumbs = [\n { label: \"UI Kit\", href: \"/ui-kit\" },\n { label: \"Dashboard Demo\" }\n ]\n\n const actions = [\n {\n label: \"Export Report\",\n onClick: () => console.log(\"Export\"),\n variant: \"outline\" as const,\n icon: <Download className=\"w-4 h-4\" />\n },\n {\n label: \"New Transfer\",\n onClick: () => console.log(\"New Transfer\"),\n icon: <Plus className=\"w-4 h-4\" />\n }\n ]\n\n return (\n <ListPage\n title=\"Financial Dashboard\"\n description=\"Comprehensive overview of accounts, transfers, and business metrics\"\n breadcrumbs={breadcrumbs}\n actions={actions}\n maxWidth=\"xl\"\n >\n {/* Metrics Overview */}\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockMetrics.map((metric, index) => (\n <MetricCard key={index} {...metric} />\n ))}\n </ResponsiveGrid>\n\n {/* Account Cards */}\n <Card>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <CardTitle>Account Overview</CardTitle>\n <Badge variant=\"secondary\" className=\"flex items-center gap-1\">\n <TrendingUp className=\"w-3 h-3\" />\n 3 Active Accounts\n </Badge>\n </div>\n </CardHeader>\n <CardContent>\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockAccounts.map((account) => (\n <AccountCard key={account.id} account={account} />\n ))}\n </ResponsiveGrid>\n </CardContent>\n </Card>\n\n {/* Recent Transactions */}\n <Card>\n <CardHeader>\n <CardTitle>Recent Transactions</CardTitle>\n </CardHeader>\n <CardContent>\n <DataTable\n columns={transactionColumns}\n data={recentTransactions}\n sortBy={sortBy}\n sortDirection={sortDirection}\n onSort={handleSort}\n />\n </CardContent>\n </Card>\n\n {/* Recent Counterparties */}\n <Card>\n <CardHeader>\n <CardTitle>Recent Counterparties</CardTitle>\n </CardHeader>\n <CardContent>\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockCounterparties.slice(0, 4).map((entity) => (\n <EntityCard \n key={entity.id}\n entity={entity}\n onView={(id) => console.log(\"View\", id)}\n onEdit={(id) => console.log(\"Edit\", id)}\n />\n ))}\n </ResponsiveGrid>\n </CardContent>\n </Card>\n </ListPage>\n )\n}","import * as React from \"react\"\nimport { Container } from \"@/components/ui/container\"\nimport { Stack } from \"@/components/ui/stack\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { Copy, Check } from \"lucide-react\"\n\nconst colorPalette = {\n primary: {\n name: \"Primary\",\n colors: [\n { name: \"primary\", value: \"hsl(204 100% 54%)\", class: \"bg-primary\" },\n { name: \"primary-foreground\", value: \"hsl(0 0% 100%)\", class: \"bg-primary-foreground\" },\n { name: \"primary-glow\", value: \"hsl(204 100% 64%)\", class: \"bg-primary-glow\" }\n ]\n },\n neutral: {\n name: \"Neutral\",\n colors: [\n { name: \"background\", value: \"hsl(240 10% 98%)\", class: \"bg-background\" },\n { name: \"foreground\", value: \"hsl(240 10% 8%)\", class: \"bg-foreground\" },\n { name: \"muted\", value: \"hsl(240 5% 96%)\", class: \"bg-muted\" },\n { name: \"muted-foreground\", value: \"hsl(240 4% 46%)\", class: \"bg-muted-foreground\" }\n ]\n },\n semantic: {\n name: \"Semantic\",\n colors: [\n { name: \"success\", value: \"hsl(142 76% 36%)\", class: \"bg-success\" },\n { name: \"warning\", value: \"hsl(38 92% 50%)\", class: \"bg-warning\" },\n { name: \"destructive\", value: \"hsl(0 84% 60%)\", class: \"bg-destructive\" }\n ]\n }\n}\n\nconst typography = [\n { name: \"Heading 1\", class: \"text-3xl font-bold\", example: \"The quick brown fox\" },\n { name: \"Heading 2\", class: \"text-2xl font-semibold\", example: \"The quick brown fox\" },\n { name: \"Heading 3\", class: \"text-xl font-medium\", example: \"The quick brown fox\" },\n { name: \"Body Large\", class: \"text-lg\", example: \"The quick brown fox jumps over the lazy dog\" },\n { name: \"Body\", class: \"text-base\", example: \"The quick brown fox jumps over the lazy dog\" },\n { name: \"Body Small\", class: \"text-sm\", example: \"The quick brown fox jumps over the lazy dog\" },\n { name: \"Caption\", class: \"text-xs text-muted-foreground\", example: \"The quick brown fox jumps over the lazy dog\" }\n]\n\nconst spacing = [\n { name: \"None\", class: \"space-y-0\", value: \"0\" },\n { name: \"XS\", class: \"space-y-1\", value: \"0.25rem\" },\n { name: \"SM\", class: \"space-y-2\", value: \"0.5rem\" },\n { name: \"MD\", class: \"space-y-4\", value: \"1rem\" },\n { name: \"LG\", class: \"space-y-6\", value: \"1.5rem\" },\n { name: \"XL\", class: \"space-y-8\", value: \"2rem\" }\n]\n\nconst badgeVariants = [\n \"default\", \"secondary\", \"destructive\", \"outline\", \"success\", \"warning\",\n \"business\", \"individual\", \"active\", \"inactive\", \"pending\", \"suspended\"\n]\n\nfunction ColorSwatch({ color }: { color: { name: string; value: string; class: string } }) {\n const [copied, setCopied] = React.useState(false)\n \n const copyToClipboard = () => {\n navigator.clipboard.writeText(color.value)\n setCopied(true)\n setTimeout(() => setCopied(false), 2000)\n }\n \n return (\n <div className=\"group cursor-pointer\" onClick={copyToClipboard}>\n <div className={`h-16 w-full rounded-lg ${color.class} mb-2 group-hover:scale-105 transition-transform`} />\n <div className=\"text-xs\">\n <div className=\"font-medium text-foreground\">{color.name}</div>\n <div className=\"text-muted-foreground flex items-center gap-1\">\n {color.value}\n {copied ? <Check className=\"w-3 h-3 text-success\" /> : <Copy className=\"w-3 h-3 opacity-0 group-hover:opacity-100\" />}\n </div>\n </div>\n </div>\n )\n}\n\nexport function PatternLibrary() {\n return (\n <Container size=\"xl\">\n <Stack spacing=\"lg\">\n <div>\n <h1 className=\"text-3xl font-bold text-foreground\">Pattern Library</h1>\n <p className=\"text-muted-foreground mt-2\">\n Design system tokens, components, and usage guidelines\n </p>\n </div>\n\n <Tabs defaultValue=\"colors\" className=\"w-full\">\n <TabsList className=\"grid w-full grid-cols-4\">\n <TabsTrigger value=\"colors\">Colors</TabsTrigger>\n <TabsTrigger value=\"typography\">Typography</TabsTrigger>\n <TabsTrigger value=\"spacing\">Spacing</TabsTrigger>\n <TabsTrigger value=\"components\">Components</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"colors\" className=\"mt-6\">\n <Stack spacing=\"lg\">\n {Object.entries(colorPalette).map(([key, palette]) => (\n <Card key={key}>\n <CardHeader>\n <CardTitle>{palette.name}</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4\">\n {palette.colors.map((color) => (\n <ColorSwatch key={color.name} color={color} />\n ))}\n </div>\n </CardContent>\n </Card>\n ))}\n </Stack>\n </TabsContent>\n\n <TabsContent value=\"typography\" className=\"mt-6\">\n <Card>\n <CardHeader>\n <CardTitle>Typography Scale</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack spacing=\"lg\">\n {typography.map((type) => (\n <div key={type.name} className=\"grid grid-cols-1 md:grid-cols-4 gap-4 items-center\">\n <div className=\"text-sm font-medium text-muted-foreground\">\n {type.name}\n </div>\n <div className=\"md:col-span-2\">\n <div className={type.class}>{type.example}</div>\n </div>\n <div className=\"text-xs text-muted-foreground font-mono\">\n {type.class}\n </div>\n </div>\n ))}\n </Stack>\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"spacing\" className=\"mt-6\">\n <Card>\n <CardHeader>\n <CardTitle>Spacing System</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack spacing=\"lg\">\n {spacing.map((space) => (\n <div key={space.name} className=\"grid grid-cols-1 md:grid-cols-4 gap-4 items-center\">\n <div className=\"text-sm font-medium text-muted-foreground\">\n {space.name}\n </div>\n <div className=\"md:col-span-2\">\n <div className={space.class}>\n <div className=\"bg-primary/20 p-2 rounded\">Item 1</div>\n <div className=\"bg-primary/20 p-2 rounded\">Item 2</div>\n </div>\n </div>\n <div className=\"text-xs text-muted-foreground font-mono\">\n {space.value} ({space.class})\n </div>\n </div>\n ))}\n </Stack>\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"components\" className=\"mt-6\">\n <Stack spacing=\"lg\">\n {/* Badges */}\n <Card>\n <CardHeader>\n <CardTitle>Badge Variants</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"flex flex-wrap gap-2\">\n {badgeVariants.map((variant) => (\n <Badge key={variant} variant={variant as any}>\n {variant}\n </Badge>\n ))}\n </div>\n </CardContent>\n </Card>\n\n {/* Buttons */}\n <Card>\n <CardHeader>\n <CardTitle>Button Variants</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack direction=\"horizontal\" spacing=\"sm\" className=\"flex-wrap\">\n <Button variant=\"default\">Default</Button>\n <Button variant=\"secondary\">Secondary</Button>\n <Button variant=\"outline\">Outline</Button>\n <Button variant=\"ghost\">Ghost</Button>\n <Button variant=\"link\">Link</Button>\n <Button variant=\"destructive\">Destructive</Button>\n </Stack>\n </CardContent>\n </Card>\n\n {/* Grid Examples */}\n <Card>\n <CardHeader>\n <CardTitle>Grid Layouts</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack spacing=\"md\">\n <div>\n <h4 className=\"text-sm font-medium mb-2\">Cards Grid</h4>\n <ResponsiveGrid type=\"cards\" gap=\"sm\">\n {[1, 2, 3, 4, 5, 6].map((i) => (\n <div key={i} className=\"bg-muted rounded p-4 text-center text-sm\">\n Card {i}\n </div>\n ))}\n </ResponsiveGrid>\n </div>\n <div>\n <h4 className=\"text-sm font-medium mb-2\">Forms Grid</h4>\n <ResponsiveGrid type=\"forms\" gap=\"md\">\n {[1, 2, 3, 4].map((i) => (\n <div key={i} className=\"bg-muted rounded p-4 text-center text-sm\">\n Form Section {i}\n </div>\n ))}\n </ResponsiveGrid>\n </div>\n </Stack>\n </CardContent>\n </Card>\n </Stack>\n </TabsContent>\n </Tabs>\n </Stack>\n </Container>\n )\n}","import * as React from \"react\"\nimport { Container } from \"@/components/ui/container\"\nimport { Stack } from \"@/components/ui/stack\"\nimport { MetricCard } from \"@/components/ui/metric-card\"\nimport { DataTable, type DataTableColumn } from \"@/components/ui/data-table\"\nimport { AccountCard } from \"@/components/ui/account-card\"\nimport { EntityCard } from \"@/components/ui/entity-card\"\nimport { FormField } from \"@/components/ui/form-field\"\nimport { Breadcrumb } from \"@/components/ui/breadcrumb\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { mockCounterparties, mockAccounts, mockMetrics, mockTableData } from \"@/lib/mock-data\"\nimport { Building, Users, Plus, Download } from \"lucide-react\"\n\nconst tableColumns: DataTableColumn[] = [\n { key: \"name\", title: \"Name\", sortable: true },\n { key: \"type\", title: \"Type\", sortable: true },\n { key: \"status\", title: \"Status\", sortable: true },\n { key: \"amount\", title: \"Amount\", sortable: true, align: \"right\" },\n { key: \"date\", title: \"Date\", sortable: true },\n { key: \"verified\", title: \"Verified\", sortable: true }\n]\n\nexport function UIKitShowcase() {\n const [sortBy, setSortBy] = React.useState<string>()\n const [sortDirection, setSortDirection] = React.useState<\"asc\" | \"desc\">(\"asc\")\n\n const handleSort = (key: string) => {\n if (sortBy === key) {\n setSortDirection(sortDirection === \"asc\" ? \"desc\" : \"asc\")\n } else {\n setSortBy(key)\n setSortDirection(\"asc\")\n }\n }\n\n const breadcrumbs = [\n { label: \"UI Kit\", href: \"/ui-kit\" },\n { label: \"Showcase\" }\n ]\n\n return (\n <div className=\"min-h-screen bg-gradient-subtle\">\n <Container size=\"xl\">\n <Stack spacing=\"lg\">\n {/* Breadcrumbs */}\n <Breadcrumb items={breadcrumbs} />\n \n {/* Page Header */}\n <div className=\"flex items-start justify-between\">\n <Stack spacing=\"sm\">\n <h1 className=\"text-3xl font-bold text-foreground\">UI Kit Showcase</h1>\n <p className=\"text-muted-foreground max-w-2xl\">\n Complete collection of reusable components, layouts, and patterns for building financial applications.\n </p>\n </Stack>\n \n <Stack direction=\"horizontal\" spacing=\"sm\">\n <Button variant=\"outline\">\n <Download className=\"w-4 h-4\" />\n Export Kit\n </Button>\n <Button>\n <Plus className=\"w-4 h-4\" />\n Create Component\n </Button>\n </Stack>\n </div>\n\n {/* Metrics Section */}\n <Card>\n <CardHeader>\n <CardTitle>Metric Cards</CardTitle>\n </CardHeader>\n <CardContent>\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockMetrics.map((metric, index) => (\n <MetricCard key={index} {...metric} />\n ))}\n </ResponsiveGrid>\n </CardContent>\n </Card>\n\n {/* Form Components */}\n <Card>\n <CardHeader>\n <CardTitle>Form Components</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack spacing=\"md\">\n <FormField\n label=\"Enhanced Input\"\n description=\"Input field with validation and enhanced styling\"\n required\n >\n <EnhancedInput \n placeholder=\"Enter your name\"\n error=\"This field is required\"\n />\n </FormField>\n \n <FormField\n label=\"Enhanced Select\"\n description=\"Select dropdown with search and validation\"\n layout=\"horizontal\"\n >\n <EnhancedSelect\n placeholder=\"Choose an option\"\n options={[\n { value: \"option1\", label: \"Option 1\" },\n { value: \"option2\", label: \"Option 2\" },\n { value: \"option3\", label: \"Option 3\" }\n ]}\n />\n </FormField>\n </Stack>\n </CardContent>\n </Card>\n\n {/* Account Cards */}\n <Card>\n <CardHeader>\n <CardTitle>Account Cards</CardTitle>\n </CardHeader>\n <CardContent>\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockAccounts.map((account) => (\n <AccountCard key={account.id} account={account} />\n ))}\n </ResponsiveGrid>\n </CardContent>\n </Card>\n\n {/* Entity Cards */}\n <Card>\n <CardHeader>\n <CardTitle>Entity Cards</CardTitle>\n </CardHeader>\n <CardContent>\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockCounterparties.map((entity) => (\n <EntityCard \n key={entity.id}\n entity={entity}\n onView={(id) => console.log(\"View\", id)}\n onEdit={(id) => console.log(\"Edit\", id)}\n onDelete={(id) => console.log(\"Delete\", id)}\n />\n ))}\n </ResponsiveGrid>\n </CardContent>\n </Card>\n\n {/* Data Table */}\n <Card>\n <CardHeader>\n <CardTitle>Data Table</CardTitle>\n </CardHeader>\n <CardContent>\n <DataTable\n columns={tableColumns}\n data={mockTableData}\n sortBy={sortBy}\n sortDirection={sortDirection}\n onSort={handleSort}\n />\n </CardContent>\n </Card>\n\n {/* Layout Examples */}\n <Card>\n <CardHeader>\n <CardTitle>Layout Components</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack spacing=\"md\">\n <div>\n <h4 className=\"text-sm font-medium text-foreground mb-2\">Container Sizes</h4>\n <Stack spacing=\"sm\">\n <div className=\"bg-primary/10 rounded p-2 text-center text-xs\">\n Small Container (max-w-2xl)\n </div>\n <div className=\"bg-primary/10 rounded p-2 text-center text-xs max-w-4xl\">\n Medium Container (max-w-4xl)\n </div>\n <div className=\"bg-primary/10 rounded p-2 text-center text-xs max-w-6xl\">\n Large Container (max-w-6xl)\n </div>\n </Stack>\n </div>\n \n <div>\n <h4 className=\"text-sm font-medium text-foreground mb-2\">Responsive Grids</h4>\n <ResponsiveGrid type=\"forms\" gap=\"sm\">\n <div className=\"bg-secondary rounded p-4 text-center text-sm\">Form Grid 1</div>\n <div className=\"bg-secondary rounded p-4 text-center text-sm\">Form Grid 2</div>\n <div className=\"bg-secondary rounded p-4 text-center text-sm\">Form Grid 3</div>\n <div className=\"bg-secondary rounded p-4 text-center text-sm\">Form Grid 4</div>\n </ResponsiveGrid>\n </div>\n </Stack>\n </CardContent>\n </Card>\n </Stack>\n </Container>\n </div>\n )\n}","export interface TimelineEvent {\n id: string\n timestamp: string\n user: string\n action: string\n details?: string\n status?: string\n}\n\nexport interface AlertNote {\n id: string\n timestamp: string\n user: string\n content: string\n type: \"RFI Note\" | \"Internal Note\"\n}\n\nexport interface AlertDocument {\n id: string\n name: string\n type: string\n description?: string\n size: string\n uploadedBy: string\n uploadedAt: string\n url?: string\n}\n\nexport interface Alert {\n id: string\n createdAt: string\n type: string\n status: \"Unassigned\" | \"Closed\" | \"In Progress\"\n contextType: string\n rfiStatus?: \"Completed\" | \"Provided\" | \"Pending\"\n description: string\n contextId?: string\n assignee?: string\n timeline?: TimelineEvent[]\n notes?: AlertNote[]\n documents?: AlertDocument[]\n contextData?: any\n}\n\nexport const mockAlerts: Alert[] = [\n {\n id: \"4402\",\n createdAt: \"2025-09-30 03:00:21\",\n type: \"Ofac\",\n status: \"Unassigned\",\n contextType: \"Ofac\",\n description: \"WIRE TRANSFER: Multiple OFAC matches detected for beneficiary bank\",\n timeline: [\n { id: \"1\", timestamp: \"2025-09-30 03:00:21\", user: \"System\", action: \"Alert Created\", status: \"Unassigned\" },\n { id: \"2\", timestamp: \"2025-09-30 09:15:32\", user: \"John Smith\", action: \"Alert Assigned\", details: \"Assigned to compliance team\", status: \"In Progress\" },\n { id: \"3\", timestamp: \"2025-09-30 10:22:15\", user: \"John Smith\", action: \"Note added\", details: \"Added RFI note requesting documentation\" },\n { id: \"4\", timestamp: \"2025-09-30 10:25:00\", user: \"John Smith\", action: \"Document added\", details: \"Uploaded passport_scan.pdf\" },\n { id: \"5\", timestamp: \"2025-09-30 11:50:00\", user: \"Sarah Johnson\", action: \"Document added\", details: \"Uploaded proof_of_address.jpg\" },\n { id: \"6\", timestamp: \"2025-10-01 08:30:00\", user: \"System\", action: \"RFI Status change\", details: \"Status changed from Pending to Provided\" },\n { id: \"7\", timestamp: \"2025-10-01 14:20:00\", user: \"Michael Chen\", action: \"Alert Approved\", details: \"Approved after review - false positive confirmed\" }\n ],\n notes: [\n { id: \"1\", timestamp: \"2025-09-30 10:22:15\", user: \"John Smith\", content: \"Reviewing OFAC match. Need to verify identity documents.\", type: \"RFI Note\" },\n { id: \"2\", timestamp: \"2025-09-30 11:45:30\", user: \"Sarah Johnson\", content: \"Requested additional documentation from customer. Passport and proof of address needed.\", type: \"RFI Note\" },\n { id: \"3\", timestamp: \"2025-09-30 14:20:45\", user: \"John Smith\", content: \"Customer responded with requested documents. Passport appears valid, reviewing address verification now.\", type: \"Internal Note\" },\n { id: \"4\", timestamp: \"2025-10-01 09:10:00\", user: \"Michael Chen\", content: \"Cross-referenced with internal records. Customer has been with us for 5 years with no prior issues. Match appears to be false positive due to common name.\", type: \"Internal Note\" }\n ],\n documents: [\n { \n id: \"1\", \n name: \"passport_scan.pdf\", \n type: \"ID Verification\", \n description: \"Customer passport for identity verification\", \n size: \"2.4 MB\", \n uploadedBy: \"John Smith\", \n uploadedAt: \"2025-09-30 10:25:00\",\n url: \"/placeholder.svg\"\n },\n { \n id: \"2\", \n name: \"proof_of_address.jpg\", \n type: \"Proof of Address\", \n description: \"Utility bill showing current residential address\", \n size: \"1.8 MB\", \n uploadedBy: \"Sarah Johnson\", \n uploadedAt: \"2025-09-30 11:50:00\",\n url: \"/placeholder.svg\"\n }\n ],\n contextData: {\n ofacId: 5043462,\n counterpartyName: null,\n counterpartyId: null,\n businessName: null,\n businessId: null,\n individualName: null,\n individualId: null,\n uboId: null,\n transactionPaymentId: \"5c73200c-3ade-4ba5-b6e6-39ad4b519fab\",\n tenantId: \"JakeUAT\",\n alertId: 4425,\n note: null,\n status: \"REVIEW\",\n createdAt: 1760162113.000000000,\n updatedAt: 1760162113.004160000,\n updatedBy: null,\n ofacCheckDetails: [\n {\n id: 24870,\n checkKey: \"originatorName\",\n checkValue: \"Kim jung un\"\n },\n {\n id: 24871,\n checkKey: \"originatorBankName\",\n checkValue: \"TD bank\"\n },\n {\n id: 24872,\n checkKey: \"beneficiaryName\",\n checkValue: \"Jake from Braid LLC\"\n },\n {\n id: 24873,\n checkKey: \"beneficiaryBankName\",\n checkValue: \"RUssian bank\"\n }\n ],\n rawResults: \"{\\\"SDNs\\\":[{\\\"entityID\\\":\\\"51656\\\",\\\"sdnName\\\":\\\"RUSSIAN UNIVERSAL BANK\\\",\\\"sdnType\\\":\\\"\\\",\\\"program\\\":[\\\"RUSSIA-EO14024\\\"],\\\"title\\\":\\\"\\\",\\\"callSign\\\":\\\"\\\",\\\"vesselType\\\":\\\"\\\",\\\"tonnage\\\":\\\"\\\",\\\"grossRegisteredTonnage\\\":\\\"\\\",\\\"vesselFlag\\\":\\\"\\\",\\\"vesselOwner\\\":\\\"\\\",\\\"remarks\\\":\\\"SWIFT/BIC RUNIRUMM; Website www.rubank.ru; Secondary sanctions risk: See Section 11 of Executive Order 14024.; Target Type Financial Institution; Tax ID No. 7718120593 (Russia); Legal Entity Number 253400YYHA5GJQB46R62; Registration Number 1027739671288 (Russia).\\\",\\\"match\\\":0.9325,\\\"matchedName\\\":\\\"russian universal bank\\\"},{\\\"entityID\\\":\\\"17755\\\",\\\"sdnName\\\":\\\"RUSSIAN NATIONAL COMMERCIAL BANK\\\",\\\"sdnType\\\":\\\"\\\",\\\"program\\\":[\\\"UKRAINE-EO13685\\\"],\\\"title\\\":\\\"\\\",\\\"callSign\\\":\\\"\\\",\\\"vesselType\\\":\\\"\\\",\\\"tonnage\\\":\\\"\\\",\\\"grossRegisteredTonnage\\\":\\\"\\\",\\\"vesselFlag\\\":\\\"\\\",\\\"vesselOwner\\\":\\\"\\\",\\\"remarks\\\":\\\"SWIFT/BIC RNCORUMM; Website http://www.rncb.ru; Email Address rncb@rncb.ru; BIK (RU) 044525607; Secondary sanctions risk: Ukraine-/Russia-Related Sanctions Regulations, 31 CFR 589.201 and/or 589.209; Registration ID 1027700381290 (Russia); Tax ID No. 7701105460 (Russia); Government Gazette Number 09610705 (Russia); a.k.a. 'RNCB'.\\\",\\\"match\\\":0.906896551724138,\\\"matchedName\\\":\\\"russian national commercial bank\\\"}],\\\"altNames\\\":[{\\\"entityID\\\":\\\"51760\\\",\\\"alternateID\\\":\\\"81078\\\",\\\"alternateType\\\":\\\"aka\\\",\\\"alternateName\\\":\\\"RUSSITA BANK\\\",\\\"alternateRemarks\\\":\\\"\\\",\\\"match\\\":0.9636363636363636,\\\"matchedName\\\":\\\"russita bank\\\"},{\\\"entityID\\\":\\\"18268\\\",\\\"alternateID\\\":\\\"28201\\\",\\\"alternateType\\\":\\\"aka\\\",\\\"alternateName\\\":\\\"RUSSIAN EXPORT-IMPORT BANK\\\",\\\"alternateRemarks\\\":\\\"\\\",\\\"match\\\":0.9217391304347826,\\\"matchedName\\\":\\\"russian export import bank\\\"},{\\\"entityID\\\":\\\"16681\\\",\\\"alternateID\\\":\\\"25333\\\",\\\"alternateType\\\":\\\"fka\\\",\\\"alternateName\\\":\\\"AKTSIONERNY BANK RUSSIAN FEDERATION\\\",\\\"alternateRemarks\\\":\\\"\\\",\\\"match\\\":0.9015625,\\\"matchedName\\\":\\\"aktsionerny bank russian federation\\\"}],\\\"sectoralSanctions\\\":[{\\\"Addresses\\\":[\\\"3, Gagarinsky Pereulok, Moscow, 119034, RU\\\",\\\"3 Gagarinsky per., Moscow, 119034, RU\\\"],\\\"AlternateNames\\\":[\\\"Russian Agricultural Bank\\\",\\\"Russian Agricultural Bank Open Joint Stock Company\\\",\\\"Rosselkhozbank\\\",\\\"Russian Agricultural Bank OJSC\\\",\\\"RusAg\\\"],\\\"EntityID\\\":\\\"17014\\\",\\\"IDsOnRecord\\\":[\\\"Registration Number, 1027700342890, RU\\\",\\\"Government Gazette Number, 52750822, RU\\\",\\\"Website, http://www.rshb.ru\\\",\\\"SWIFT/BIC, RUAGRUMM\\\",\\\"Executive Order 13662 Directive Determination -, Subject to Directive 1\\\",\\\"Executive Order 14024 Directive Information -, For more information on directives, please visit the following link: https://home.treasury.gov/policy-issues/financial-sanctions/sanctions-programs-and-country-information/russian-harmful-foreign-activities-sanctions#directives\\\",\\\"Executive Order 14024 Directive Information, Subject to Directive 3 - All transactions in, provision of financing for, and other dealings in new debt of longer than 14 days maturity or new equity where such new debt or new equity is issued on or after the 'Effective Date (EO 14024 Directive)' associated with this name are prohibited.\\\",\\\"Listing Date (EO 14024 Directive 3):, 2022-02-24\\\",\\\"Effective Date (EO 14024 Directive 3):, 2022-03-26\\\",\\\"Secondary sanctions risk:, Ukraine-/Russia-Related Sanctions Regulations, 31 CFR 589.201 and/or 589.209\\\"],\\\"Name\\\":\\\"Joint Stock Company Russian Agricultural Bank\\\",\\\"Programs\\\":[\\\"UKRAINE-EO13662\\\",\\\"RUSSIA-EO14024\\\"],\\\"Remarks\\\":[\\\"For more information on directives, please visit the following link: http://www.treasury.gov/resource-center/sanctions/Programs/Pages/ukraine.aspx#directives.\\\"],\\\"SourceInfoURL\\\":\\\"https://ofac.treasury.gov/other-ofac-sanctions-lists\\\",\\\"SourceListURL\\\":\\\"https://sanctionslist.ofac.treas.gov/Home/ConsolidatedList\\\",\\\"Type\\\":\\\"Entity\\\",\\\"match\\\":0.9217391304347826,\\\"matchedName\\\":\\\"russian agricultural bank\\\"},{\\\"Addresses\\\":[\\\"12 Krasnopresnenskaya Embankments, Moscow, 123610, RU\\\"],\\\"AlternateNames\\\":[\\\"ROSEKSIMBANK, ZAO\\\",\\\"RUSSIAN EXPORT-IMPORT BANK\\\",\\\"GOSUDARSTVENNY SPETSIALIZIROVANNY ROSSISKI EKSPORTNO-IMPORTNY BANK (ZAKRYTOE AKTSIONERNOE OBSHCHESTVO)\\\",\\\"STATE SPECIALIZED RUSSIAN EXPORT-IMPORT BANK JOINT-STOCK COMPANY\\\",\\\"Eximbank of Russia ZAO\\\",\\\"Eximbank of Russia\\\",\\\"AO Roseksimbank\\\"],\\\"EntityID\\\":\\\"18268\\\",\\\"IDsOnRecord\\\":[\\\"Registration Number, 1027739109133, RU\\\",\\\"Tax ID No., 7704001959, RU\\\",\\\"Legal Entity Number, 253400HA6URWT39X2982\\\",\\\"SWIFT/BIC, EXIRRUMM\\\",\\\"Website, eximbank.ru\\\",\\\"Executive Order 13662 Directive Determination -, Subject to Directive 1\\\",\\\"Organization Established Date, 1994-05-24\\\",\\\"Target Type, Financial Institution\\\",\\\"Secondary sanctions risk:, Ukraine-/Russia-Related Sanctions Regulations, 31 CFR 589.201 and/or 589.209\\\",\\\"Secondary sanctions risk:, See Section 11 of Executive Order 14024.\\\"],\\\"Name\\\":\\\"EXIMBANK OF RUSSIA JSC\\\",\\\"Programs\\\":[\\\"UKRAINE-EO13662\\\",\\\"RUSSIA-EO14024\\\"],\\\"Remarks\\\":[\\\"All offices worldwide\\\",\\\"for more information on directives, please visit the following link: http://www.treasury.gov/resource-center/sanctions/Programs/Pages/ukraine.aspx#directives.\\\"],\\\"SourceInfoURL\\\":\\\"https://ofac.treasury.gov/other-ofac-sanctions-lists\\\",\\\"SourceListURL\\\":\\\"https://sanctionslist.ofac.treas.gov/Home/ConsolidatedList\\\",\\\"Type\\\":\\\"Entity\\\",\\\"match\\\":0.9217391304347826,\\\"matchedName\\\":\\\"russian export import bank\\\"},{\\\"Addresses\\\":[\\\"65/1 Suschevsky Val, Moscow, 129594, RU\\\",\\\"65 Sushchevskiy val, Moscow, 129594, RU\\\"],\\\"AlternateNames\\\":[\\\"RUSSIAN REGIONAL DEVELOPMENT BANK\\\",\\\"VBRR\\\"],\\\"EntityID\\\":\\\"18298\\\",\\\"IDsOnRecord\\\":[\\\"Registration ID, 3287, RU\\\",\\\"Website, www.vbrr.ru\\\",\\\"Executive Order 13662 Directive Determination -, Subject to Directive 2\\\",\\\"Executive Order 13662 Directive Determination -, Subject to Directive 4\\\",\\\"Secondary sanctions risk:, Ukraine-/Russia-Related Sanctions Regulations, 31 CFR 589.201 and/or 589.209\\\"],\\\"Name\\\":\\\"OJSC RUSSIAN REGIONAL DEVELOPMENT BANK\\\",\\\"Programs\\\":[\\\"UKRAINE-EO13662\\\"],\\\"Remarks\\\":[\\\"For more information on directives, please visit the following link: http://www.treasury.gov/resource-center/sanctions/Programs/Pages/ukraine.aspx#directives.\\\"],\\\"SourceInfoURL\\\":\\\"https://ofac.treasury.gov/other-ofac-sanctions-lists\\\",\\\"SourceListURL\\\":\\\"https://sanctionslist.ofac.treas.gov/Home/ConsolidatedList\\\",\\\"Type\\\":\\\"Entity\\\",\\\"match\\\":0.905,\\\"matchedName\\\":\\\"russian regional development bank\\\"}],\\\"nonSDNMenuBasedSanctionsList\\\":[{\\\"Addresses\\\":[\\\"Neglinnaya St 12, Moscow, 107016, RU\\\",\\\"Moscow, RU\\\"],\\\"AlternateNames\\\":[\\\"Bank Rossi, Federal State Budgetary Institution\\\",\\\"Bank of Russia\\\",\\\"Bank of Russia, Central Bank\\\",\\\"Tsentralny Bank Rossiskoi Federatsii\\\",\\\"Central Bank of Russia\\\"],\\\"EntityID\\\":\\\"31695\\\",\\\"EntityNumber\\\":\\\"31695\\\",\\\"IDs\\\":[\\\"Registration Number, 1037700013020, RU\\\",\\\"Government Gazette Number, 00032253, RU\\\",\\\"Tax ID No., 7702235133, RU\\\",\\\"SWIFT/BIC, CBRFRUMM\\\",\\\"Website, www.cbr.ru\\\",\\\"Organization Established Date, 1990-07-13\\\",\\\"Organization Type:, Central banking\\\",\\\"Executive Order 14024 Directive Information -, For more information on directives, please visit the following link: https://home.treasury.gov/policy-issues/financial-sanctions/sanctions-programs-and-country-information/russian-harmful-foreign-activities-sanctions#directives\\\",\\\"Executive Order 14024 Directive Information, Subject to Directive 1a - As of the effective date, participation in the secondary market for ruble or non-ruble denominated bonds issued on or after the effective date by the Central Bank of the Russian Federation, the National Wealth Fund of the Russian Federation, or the Ministry of Finance of the Russian Federation is prohibited.\\\",\\\"Target Type, Government Entity\\\",\\\"Listing Date (EO 14024 Directive 1a):, 2022-02-22\\\",\\\"Effective Date (EO 14024 Directive 1a):, 2022-03-01\\\",\\\"Executive Order 14024 Directive Information, Subject to Directive 4 - any transaction involving the Central Bank of the Russian Federation, the National Wealth Fund of the Russian Federation, or the Ministry of Finance of the Russian Federation, including any transfer of assets to such entities or any foreign exchange transaction for or on behalf of such entities is prohibited.\\\"],\\\"Name\\\":\\\"Central Bank of the Russian Federation\\\",\\\"Programs\\\":[\\\"RUSSIA-EO14024\\\"],\\\"SourceInfoURL\\\":\\\"https://ofac.treasury.gov/other-ofac-sanctions-lists\\\",\\\"Type\\\":\\\"Entity\\\",\\\"match\\\":0.9326268221574344,\\\"matchedName\\\":\\\"bank of russia\\\"},{\\\"Addresses\\\":[\\\"3, Gagarinsky Pereulok, Moscow, 119034, RU\\\",\\\"3 Gagarinsky per., Moscow, 119034, RU\\\"],\\\"AlternateNames\\\":[\\\"Russian Agricultural Bank\\\",\\\"Russian Agricultural Bank Open Joint Stock Company\\\",\\\"Rosselkhozbank\\\",\\\"Russian Agricultural Bank OJSC\\\",\\\"RusAg\\\"],\\\"EntityID\\\":\\\"17014\\\",\\\"EntityNumber\\\":\\\"17014\\\",\\\"IDs\\\":[\\\"Registration Number, 1027700342890, RU\\\",\\\"Government Gazette Number, 52750822, RU\\\",\\\"Website, http://www.rshb.ru\\\",\\\"SWIFT/BIC, RUAGRUMM\\\",\\\"Executive Order 13662 Directive Determination -, Subject to Directive 1\\\",\\\"Executive Order 14024 Directive Information -, For more information on directives, please visit the following link: https://home.treasury.gov/policy-issues/financial-sanctions/sanctions-programs-and-country-information/russian-harmful-foreign-activities-sanctions#directives\\\",\\\"Executive Order 14024 Directive Information, Subject to Directive 3 - All transactions in, provision of financing for, and other dealings in new debt of longer than 14 days maturity or new equity where such new debt or new equity is issued on or after the 'Effective Date (EO 14024 Directive)' associated with this name are prohibited.\\\",\\\"Listing Date (EO 14024 Directive 3):, 2022-02-24\\\",\\\"Effective Date (EO 14024 Directive 3):, 2022-03-26\\\",\\\"Secondary sanctions risk:, Ukraine-/Russia-Related Sanctions Regulations, 31 CFR 589.201 and/or 589.209\\\"],\\\"Name\\\":\\\"Joint Stock Company Russian Agricultural Bank\\\",\\\"Programs\\\":[\\\"UKRAINE-EO13662\\\",\\\"RUSSIA-EO14024\\\"],\\\"Remarks\\\":[\\\"For more information on directives, please visit the following link: http://www.treasury.gov/resource-center/sanctions/Programs/Pages/ukraine.aspx#directives.\\\"],\\\"SourceInfoURL\\\":\\\"https://ofac.treasury.gov/other-ofac-sanctions-lists\\\",\\\"Type\\\":\\\"Entity\\\",\\\"match\\\":0.9217391304347826,\\\"matchedName\\\":\\\"russian agricultural bank\\\"}],\\\"ukConsolidatedSanctionsList\\\":[{\\\"Addresses\\\":[\\\"Rastrelli Square, 2A, Saint-Petersburg\\\"],\\\"GroupID\\\":14177,\\\"GroupType\\\":\\\"Entity\\\",\\\"LastUpdates\\\":[\\\"15/12/2023\\\"],\\\"ListedDates\\\":[\\\"22/02/2022\\\"],\\\"Names\\\":[\\\"BANK OF RUSSIA\\\",\\\"BANK ROSSIYA\\\",\\\"RUSSIA BANK\\\"],\\\"OtherInfos\\\":[\\\"(UK Sanctions List Ref):RUS0232. Financial sanctions imposed in addition to an asset freeze: Correspondent banking relationships etc. Trust services. Date trust services sanctions imposed: 21/03/2023. The prohibition on correspondent banking relationships etc. measure was imposed on 15/12/2023. (UK Statement of Reasons):Bank \\\\\\\"Rossiya\\\\\\\" is a Russian bank privately owned by elite Russian billionaires with direct links to Putin. Bank \\\\\\\"Rossiya\\\\\\\" also has important stakes in the National Media Group, which controls television stations which actively support the Russian Government's policies of destabilisation in Ukraine. Since the annexation of Crimea, Bank \\\\\\\"Rossiya\\\\\\\" has opened branches across Crimea and Sevastopol, and provided travel cards for the public to travel across the peninsula thereby supporting the integration of Crimea and Sevastopol into the Russian Federation through the financial system. Bank \\\\\\\"Rossiya\\\\\\\" has also contributed to the provision of insurance and investment throughout Crimea and Sevastopol and services to support military capability and major transport links. Bank \\\\\\\"Rossiya\\\\\\\" therefore is or has been involved in providing financial services, or making available funds, economic resources, goods or technology and engaging in, providing support for, or promoting any policy or action that could contribute to destabilising Ukraine or undermining or threatening the territorial integrity, sovereignty or independence of Ukraine. (Website):https://abr.ru/ (Type of entity):Public Joint Stock Company (PJSC) (Business Reg No):License number: 328 INN: 7831000122 OGRN: 1027800000084\\\"],\\\"PostalCodes\\\":[\\\"191124\\\"],\\\"SanctionListDates\\\":[\\\"22/02/2022\\\"],\\\"match\\\":0.9565403304178814,\\\"matchedName\\\":\\\"russia bank\\\"},{\\\"Addresses\\\":[\\\"0 Bld. 2 Presnenskaya Emb. (Moscow City, IQ-quarter Complex), Moscow\\\",\\\"3, Gagarinsky Pereulok, Moscow\\\"],\\\"Countries\\\":[\\\"Russia\\\"],\\\"GroupID\\\":15016,\\\"GroupType\\\":\\\"Entity\\\",\\\"LastUpdates\\\":[\\\"15/12/2023\\\"],\\\"ListedDates\\\":[\\\"24/03/2022\\\"],\\\"Names\\\":[\\\"JSC ROSSELKHOZBANK\\\",\\\"RUSAG\\\",\\\"RUSSIAN AGRICULTURAL BANK\\\"],\\\"OtherInfos\\\":[\\\"(UK Sanctions List Ref):RUS1073. Financial sanctions imposed in addition to an asset freeze: Dealing with transferable securities or money-market instruments. Loans and credit arrangements. Correspondent banking relationships etc. Trust services. Date trust services sanctions imposed: 21/03/2023. The prohibition on correspondent banking relationships etc. measure was imposed on 15/12/2023. (UK Statement of Reasons):RUSSIAN AGRICULTURAL BANK is a Russian bank. RUSSIAN AGRICULTURAL BANK is or has been involved in obtaining a benefit from or supporting the Government of Russia by carrying on business in the financial services sector - a sector of strategic significance to the Government of Russia. (Phone number):(1) 7 (495) 777-11-00 (2) 7 (495) 787-7-787 (3) 8 (800) 100-0-100 (Website):(1) http://www.rshb.ru/en/ (2) https://www.rshb.ru/ (Email address):office@rshb.ru\\\"],\\\"PostalCodes\\\":[\\\"123112\\\",\\\"119034\\\"],\\\"SanctionListDates\\\":[\\\"24/03/2022\\\"],\\\"match\\\":0.9217391304347826,\\\"matchedName\\\":\\\"russian agricultural bank\\\"},{\\\"Addresses\\\":[\\\"27 Kalanchevskaya str., Moscow\\\"],\\\"Countries\\\":[\\\"Russia\\\"],\\\"GroupID\\\":15017,\\\"GroupType\\\":\\\"Entity\\\",\\\"LastUpdates\\\":[\\\"15/12/2023\\\"],\\\"ListedDates\\\":[\\\"24/03/2022\\\"],\\\"Names\\\":[\\\"ALFA-BANK JSC\\\",\\\"ALFA-BANK RUSSIA\\\"],\\\"OtherInfos\\\":[\\\"(UK Sanctions List Ref):RUS1074. Financial sanctions imposed in addition to an asset freeze: Correspondent banking relationships etc. Trust services. Date trust services sanctions imposed: 21/03/2023. The prohibition on correspondent banking relationships etc. measure was imposed on 15/12/2023. (UK Statement of Reasons):Alfa-Bank JSC is a Russian bank. There are reasonable grounds to suspect that Alfa-Bank JSC is or has been involved in obtaining a benefit from or supporting the Government of Russia by carrying on business in the financial services sector - a sector of strategic significance to the Government of Russia. (Phone number):7 495 755-58-58. 7 495 78-888-78 (Website):https://alfabank.ru/ (Type of entity):Bank, Financial Services Company, JSC\\\"],\\\"PostalCodes\\\":[\\\"107078\\\"],\\\"SanctionListDates\\\":[\\\"24/03/2022\\\"],\\\"match\\\":0.9155457448285437,\\\"matchedName\\\":\\\"alfa bank russia\\\"},{\\\"Addresses\\\":[\\\"Naberezhnaja street, 34, Simferopol, The Autonomous Republic of Crimea and the city of Sevastopol\\\"],\\\"Countries\\\":[\\\"Ukraine\\\"],\\\"GroupID\\\":13078,\\\"GroupType\\\":\\\"Entity\\\",\\\"LastUpdates\\\":[\\\"21/03/2023\\\"],\\\"ListedDates\\\":[\\\"31/07/2014\\\"],\\\"Names\\\":[\\\"RUSSIAN NATIONAL COMMERCIAL BANK\\\"],\\\"OtherInfos\\\":[\\\"(UK Sanctions List Ref):RUS0193. Financial sanctions imposed in addition to an asset freeze: Trust services. Date trust services sanctions imposed: 21/03/2023. (UK Statement of Reasons):After the illegal annexation of Crimea, Russian National Commercial Bank (RNCB) became fully owned by the so-called 'Republic of Crimea'. In January 2016 became a property of Federal Agency for State Property Management also known as Rosimushchestvo. It has become the dominant player in the market, while it had no presence in Crimea before the annexation. By buying or taking over from branches of retreating banks operating in Crimea, RNBC supported materially and financially the actions of the Russian government to integrate Crimea into the Russian Federation, thus undermining Ukraine's territorial integrity. (Website):http://www.rncb.ru\\\"],\\\"PostalCodes\\\":[\\\"295000\\\"],\\\"SanctionListDates\\\":[\\\"31/12/2020\\\"],\\\"match\\\":0.906896551724138,\\\"matchedName\\\":\\\"russian national commercial bank\\\"},{\\\"Addresses\\\":[\\\"65 Sushchevskiy val, Moscow\\\"],\\\"Countries\\\":[\\\"Russia\\\"],\\\"GroupID\\\":15918,\\\"GroupType\\\":\\\"Entity\\\",\\\"LastUpdates\\\":[\\\"15/12/2023\\\"],\\\"ListedDates\\\":[\\\"19/05/2023\\\"],\\\"Names\\\":[\\\"RUSSIAN REGIONAL DEVELOPMENT BANK\\\"],\\\"OtherInfos\\\":[\\\"(UK Sanctions List Ref):RUS1860. Financial sanctions imposed in addition to an asset freeze: Correspondent banking relationships etc. Trust services. Date trust services sanctions imposed: 18/05/2023. The prohibition on correspondent banking relationships etc. measure was imposed on 15/12/2023. (UK Statement of Reasons):RUSSIAN REGIONAL DEVELOPMENT BANK is an involved person under the Russia (EU Exit) (Sanctions) Regulations 2019 because it is or has been involved in obtaining a benefit from or supporting the Government of Russia by carrying on business in a sector of strategic significance to the Government of Russia, namely the Russian financial services sector.\\\"],\\\"PostalCodes\\\":[\\\"129594\\\"],\\\"SanctionListDates\\\":[\\\"18/05/2023\\\"],\\\"match\\\":0.905,\\\"matchedName\\\":\\\"russian regional development bank\\\"}],\\\"refreshedAt\\\":\\\"2025-10-11T00:54:13.808076626Z\\\"}\"\n }\n },\n {\n id: \"4401\",\n createdAt: \"2025-09-29 15:00:45\",\n type: \"Ofac\",\n status: \"Closed\",\n contextType: \"Ofac\",\n description: \"INDIVIDUAL: ali hassan is flagged for OFAC\"\n },\n {\n id: \"4400\",\n createdAt: \"2025-09-27 03:02:34\",\n type: \"Ofac\",\n status: \"Unassigned\",\n contextType: \"Ofac\",\n description: \"BUSINESS: Randy is flagged for OFAC\"\n },\n {\n id: \"4399\",\n createdAt: \"2025-09-27 03:02:31\",\n type: \"Ofac\",\n status: \"Unassigned\",\n contextType: \"Ofac\",\n description: \"BUSINESS: test is flagged for OFAC\"\n },\n {\n id: \"4398\",\n createdAt: \"2025-09-24 10:01:58\",\n type: \"Transaction Processing Error\",\n status: \"Unassigned\",\n contextType: \"File Record\",\n description: \"Inbound WIRE for $100,000.00 can not be processed. Exception: incorrect account...\"\n },\n {\n id: \"4397\",\n createdAt: \"2025-09-22 20:33:59\",\n type: \"Dual Approval\",\n status: \"Unassigned\",\n contextType: \"Transaction\",\n description: \"Debit adjustment for $20.00 for account number 84804949\"\n },\n {\n id: \"4396\",\n createdAt: \"2025-09-22 20:33:12\",\n type: \"Transaction Monitoring\",\n status: \"Unassigned\",\n contextType: \"Transaction\",\n description: \"Transaction WIRE_INTERNATIONAL_DEBIT of $3,000.00 is flagged for velocity li...\"\n },\n {\n id: \"4395\",\n createdAt: \"2025-09-13 03:02:29\",\n type: \"Ofac\",\n status: \"Closed\",\n contextType: \"Ofac\",\n rfiStatus: \"Completed\",\n description: \"BUSINESS: test is flagged for OFAC\"\n },\n {\n id: \"4394\",\n createdAt: \"2025-09-11 07:46:28\",\n type: \"Dual Approval\",\n status: \"Closed\",\n contextType: \"Product\",\n description: \"Product 2787 is set for deactivation\"\n },\n {\n id: \"4393\",\n createdAt: \"2025-09-11 07:46:17\",\n type: \"Dual Approval\",\n status: \"Unassigned\",\n contextType: \"Product\",\n description: \"Product 2787 is set for deactivation\"\n },\n {\n id: \"4392\",\n createdAt: \"2025-09-10 14:44:46\",\n type: \"Transaction Monitoring\",\n status: \"Closed\",\n contextType: \"Transaction\",\n rfiStatus: \"Provided\",\n description: \"Transaction WIRE_DOMESTIC_CREDIT of $30,000.00 is flagged for velocity limit ...\"\n }\n]\n","import { useState, useMemo } from \"react\"\nimport { mockAlerts, type Alert } from \"../lib/mock-data/alert-data\"\nimport { type ResolveAlertFormData } from \"../lib/schemas/alert-schemas\"\n\nexport interface UseAlertDetailReturn {\n alert: Alert | undefined\n isLoading: boolean\n rfiStatus: string\n assignee: string\n handleRfiStatusChange: (status: string) => void\n handleAssigneeChange: (assignee: string) => void\n handleResolveAlert: (data: ResolveAlertFormData) => Promise<void>\n}\n\nexport const useAlertDetail = (id: string | undefined): UseAlertDetailReturn => {\n const alert = useMemo(() => mockAlerts.find(a => a.id === id), [id])\n \n const [rfiStatus, setRfiStatus] = useState(alert?.rfiStatus || \"\")\n const [assignee, setAssignee] = useState(alert?.assignee || \"Unassigned\")\n\n const handleRfiStatusChange = (newStatus: string) => {\n setRfiStatus(newStatus)\n console.log(\"RFI Status updated to:\", newStatus)\n // TODO: API call to update alert\n }\n\n const handleAssigneeChange = (newAssignee: string) => {\n setAssignee(newAssignee)\n console.log(\"Assignee updated to:\", newAssignee)\n // TODO: API call to update alert\n }\n\n const handleResolveAlert = async (data: ResolveAlertFormData) => {\n // TODO: Replace with actual API call\n console.log(\"Resolving alert with data:\", data)\n \n // Simulate API call\n await new Promise(resolve => setTimeout(resolve, 1000))\n \n // In a real implementation, this would update the backend\n // and refetch the alert data\n console.log(\"Alert resolved successfully\")\n }\n\n return {\n alert,\n isLoading: false, // Set to true when implementing real data fetching\n rfiStatus,\n assignee,\n handleRfiStatusChange,\n handleAssigneeChange,\n handleResolveAlert\n }\n}\n","import { useState } from \"react\"\nimport { useParams, useNavigate } from \"react-router-dom\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { useAlertDetail } from \"@/hooks/useAlertDetail\"\nimport { AlertDetailRouter } from \"@/components/alerts/AlertDetailRouter\"\nimport { AlertHeaderControls } from \"@/components/alerts/AlertHeaderControls\"\nimport { ResolveAlertDialog } from \"@/components/alerts/ResolveAlertDialog\"\nimport { getTypeBadgeVariant } from \"@/lib/utils/alert-utils\"\n\nconst AlertDetail = () => {\n const { id } = useParams()\n const navigate = useNavigate()\n const [resolveDialogOpen, setResolveDialogOpen] = useState(false)\n \n const {\n alert,\n rfiStatus,\n assignee,\n handleRfiStatusChange,\n handleAssigneeChange,\n handleResolveAlert\n } = useAlertDetail(id)\n \n if (!alert) {\n return (\n <div className=\"container mx-auto px-4 py-8\">\n <div className=\"text-center\">\n <h1 className=\"text-2xl font-bold mb-2\">Alert Not Found</h1>\n <p className=\"text-muted-foreground mb-4\">The alert #{id} could not be found.</p>\n <Button onClick={() => navigate(\"/alerts\")}>\n Back to Alerts\n </Button>\n </div>\n </div>\n )\n }\n\n return (\n <PageLayout \n title={\n <div className=\"flex items-center gap-3\">\n <span>Alert #{alert.id}</span>\n <Badge variant={getTypeBadgeVariant(alert.type)}>{alert.type}</Badge>\n </div>\n }\n maxWidth=\"full\"\n headerContent={\n <AlertHeaderControls\n status={alert.status}\n assignee={assignee}\n rfiStatus={rfiStatus}\n onAssigneeChange={handleAssigneeChange}\n onRfiStatusChange={handleRfiStatusChange}\n />\n }\n actions={[\n {\n label: \"Resolve Alert\",\n variant: \"default\",\n onClick: () => setResolveDialogOpen(true)\n }\n ]}\n >\n <AlertDetailRouter alert={alert} />\n \n <ResolveAlertDialog\n alertId={alert.id}\n open={resolveDialogOpen}\n onOpenChange={setResolveDialogOpen}\n onResolve={handleResolveAlert}\n />\n </PageLayout>\n )\n}\n\nexport default AlertDetail\n","import { useState } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { Button } from \"@/components/ui/button\"\nimport { Filter, ChevronLeft, ChevronRight } from \"lucide-react\"\nimport { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, SheetFooter } from \"@/components/ui/sheet\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { mockAlerts, Alert } from \"@/lib/mock-data/alert-data\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { cn } from \"@/lib/utils\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\n\nconst Alerts = () => {\n const navigate = useNavigate()\n const [filters, setFilters] = useState({\n alertId: \"\",\n contextId: \"\",\n contextType: \"\",\n alertType: \"\",\n alertStatus: \"\",\n assignee: \"\",\n rfiStatus: \"\",\n startDate: \"\",\n endDate: \"\"\n })\n\n const [filteredAlerts, setFilteredAlerts] = useState<Alert[]>(mockAlerts)\n const [currentPage, setCurrentPage] = useState(1)\n const [rowsPerPage, setRowsPerPage] = useState(100)\n\n const handleFilterChange = (field: string, value: string) => {\n setFilters(prev => ({ ...prev, [field]: value }))\n }\n\n const applyFilters = () => {\n let filtered = mockAlerts\n\n if (filters.alertId) {\n filtered = filtered.filter(alert => alert.id.includes(filters.alertId))\n }\n if (filters.alertStatus) {\n filtered = filtered.filter(alert => alert.status === filters.alertStatus)\n }\n if (filters.alertType) {\n filtered = filtered.filter(alert => alert.type === filters.alertType)\n }\n if (filters.contextType) {\n filtered = filtered.filter(alert => alert.contextType === filters.contextType)\n }\n if (filters.rfiStatus) {\n filtered = filtered.filter(alert => alert.rfiStatus === filters.rfiStatus)\n }\n\n setFilteredAlerts(filtered)\n setCurrentPage(1) // Reset to first page when applying filters\n }\n\n const resetFilters = () => {\n setFilters({\n alertId: \"\",\n contextId: \"\",\n contextType: \"\",\n alertType: \"\",\n alertStatus: \"\",\n assignee: \"\",\n rfiStatus: \"\",\n startDate: \"\",\n endDate: \"\"\n })\n setFilteredAlerts(mockAlerts)\n setCurrentPage(1) // Reset to first page when resetting filters\n }\n\n const getTypeBadgeVariant = (type: string): any => {\n switch (type) {\n case \"Ofac\":\n return \"alert-ofac\"\n case \"Dual Approval\":\n return \"alert-dual\"\n case \"Transaction Monitoring\":\n return \"alert-monitoring\"\n case \"Transaction Processing Error\":\n return \"alert-error\"\n default:\n return \"outline\"\n }\n }\n\n const getStatusColor = (status: string) => {\n switch (status) {\n case \"Unassigned\":\n return \"text-destructive\"\n case \"Closed\":\n return \"text-success\"\n case \"In Progress\":\n return \"text-warning\"\n default:\n return \"\"\n }\n }\n\n // Pagination calculations\n const totalPages = Math.ceil(filteredAlerts.length / rowsPerPage)\n const startIndex = (currentPage - 1) * rowsPerPage\n const endIndex = startIndex + rowsPerPage\n const paginatedAlerts = filteredAlerts.slice(startIndex, endIndex)\n\n const handlePageChange = (newPage: number) => {\n if (newPage >= 1 && newPage <= totalPages) {\n setCurrentPage(newPage)\n }\n }\n\n const handleRowsPerPageChange = (value: number) => {\n setRowsPerPage(value)\n setCurrentPage(1) // Reset to first page when changing rows per page\n }\n\n return (\n <div className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Fixed Header */}\n <div className=\"flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <div className=\"container mx-auto px-4 py-4 max-w-none\">\n <div className=\"flex items-center justify-between\">\n <h1 className=\"text-3xl font-bold text-foreground\">Alerts</h1>\n <Sheet>\n <SheetTrigger asChild>\n <Button variant=\"outline\" className=\"gap-2\">\n <Filter className=\"h-4 w-4\" />\n Filters\n </Button>\n </SheetTrigger>\n <SheetContent side=\"right\" className=\"w-full sm:max-w-xl overflow-y-auto\">\n <SheetHeader>\n <SheetTitle>Alert Filters</SheetTitle>\n </SheetHeader>\n \n <div className=\"space-y-6 py-6\">\n <EnhancedInput\n label=\"Alert ID\"\n value={filters.alertId}\n onChange={(e) => handleFilterChange(\"alertId\", e.target.value)}\n placeholder=\"Enter alert ID\"\n />\n\n <EnhancedInput\n label=\"Context ID\"\n value={filters.contextId}\n onChange={(e) => handleFilterChange(\"contextId\", e.target.value)}\n placeholder=\"Enter context ID\"\n />\n\n <EnhancedSelect\n label=\"Context Type\"\n value={filters.contextType}\n onValueChange={(value) => handleFilterChange(\"contextType\", value)}\n placeholder=\"Select context type\"\n options={[\n { value: \"Ofac\", label: \"Ofac\" },\n { value: \"Transaction\", label: \"Transaction\" },\n { value: \"Product\", label: \"Product\" },\n { value: \"File Record\", label: \"File Record\" }\n ]}\n />\n\n <EnhancedSelect\n label=\"Alert Type\"\n value={filters.alertType}\n onValueChange={(value) => handleFilterChange(\"alertType\", value)}\n placeholder=\"Select alert type\"\n options={[\n { value: \"Ofac\", label: \"Ofac\" },\n { value: \"Dual Approval\", label: \"Dual Approval\" },\n { value: \"Transaction Monitoring\", label: \"Transaction Monitoring\" },\n { value: \"Transaction Processing Error\", label: \"Transaction Processing Error\" }\n ]}\n />\n\n <EnhancedSelect\n label=\"Alert Status\"\n value={filters.alertStatus}\n onValueChange={(value) => handleFilterChange(\"alertStatus\", value)}\n placeholder=\"Select status\"\n options={[\n { value: \"Unassigned\", label: \"Unassigned\" },\n { value: \"Closed\", label: \"Closed\" },\n { value: \"In Progress\", label: \"In Progress\" }\n ]}\n />\n\n <EnhancedInput\n label=\"Assignee\"\n value={filters.assignee}\n onChange={(e) => handleFilterChange(\"assignee\", e.target.value)}\n placeholder=\"Enter assignee name\"\n />\n\n <EnhancedSelect\n label=\"RFI Status\"\n value={filters.rfiStatus}\n onValueChange={(value) => handleFilterChange(\"rfiStatus\", value)}\n placeholder=\"Select RFI status\"\n options={[\n { value: \"Completed\", label: \"Completed\" },\n { value: \"Provided\", label: \"Provided\" },\n { value: \"Pending\", label: \"Pending\" }\n ]}\n />\n\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedInput\n label=\"Start Date\"\n type=\"date\"\n value={filters.startDate}\n onChange={(e) => handleFilterChange(\"startDate\", e.target.value)}\n />\n\n <EnhancedInput\n label=\"End Date\"\n type=\"date\"\n value={filters.endDate}\n onChange={(e) => handleFilterChange(\"endDate\", e.target.value)}\n />\n </div>\n </div>\n\n <SheetFooter className=\"gap-2\">\n <Button variant=\"outline\" onClick={resetFilters}>\n Reset Filters\n </Button>\n <Button onClick={applyFilters}>\n Apply Filters\n </Button>\n </SheetFooter>\n </SheetContent>\n </Sheet>\n </div>\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-hidden\">\n <div className=\"container mx-auto px-4 h-full max-w-none flex flex-col\">\n <div className=\"flex-1 mt-4 rounded-lg border bg-card overflow-hidden flex flex-col\">\n <div className=\"flex-1 overflow-auto\">\n <table className=\"w-full table-fixed\">\n <colgroup>\n <col className=\"w-28\" />\n <col className=\"w-36\" />\n <col className=\"w-52\" />\n <col className=\"w-32\" />\n <col className=\"w-36\" />\n <col className=\"w-32\" />\n <col className=\"w-auto\" />\n </colgroup>\n <thead className=\"sticky top-0 bg-card z-10 shadow-sm\">\n <tr className=\"border-b\">\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Alert ID</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Created At</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Type</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Status</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Context Type</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">RFI Status</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Description</th>\n </tr>\n </thead>\n <tbody>\n {paginatedAlerts.map((alert) => (\n <tr \n key={alert.id} \n className=\"border-b hover:bg-muted/50 transition-colors cursor-pointer\"\n onClick={() => navigate(`/alerts/${alert.id}`)}\n >\n <td className=\"px-3 py-2 text-xs\">{alert.id}</td>\n <td className=\"px-3 py-2 text-xs\">{alert.createdAt}</td>\n <td className=\"px-3 py-2\">\n <Badge variant={getTypeBadgeVariant(alert.type)} className=\"whitespace-nowrap\">\n {alert.type}\n </Badge>\n </td>\n <td className=\"px-3 py-2\">\n <span className={cn(\"text-xs font-medium\", getStatusColor(alert.status))}>\n {alert.status}\n </span>\n </td>\n <td className=\"px-3 py-2\">\n <Badge variant=\"outline\" className=\"whitespace-nowrap\">\n {alert.contextType}\n </Badge>\n </td>\n <td className=\"px-3 py-2\">\n {alert.rfiStatus && (\n <Badge variant=\"success\" className=\"whitespace-nowrap\">\n {alert.rfiStatus}\n </Badge>\n )}\n </td>\n <td className=\"px-3 py-2 text-xs truncate\">\n {alert.description}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n \n {/* Pagination Footer */}\n <div className=\"flex-none border-t bg-background py-3 px-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">Rows per page:</span>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 gap-1\">\n {rowsPerPage}\n <ChevronRight className=\"h-4 w-4 rotate-90\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"bg-background z-50\">\n <DropdownMenuItem onClick={() => handleRowsPerPageChange(100)}>\n 100\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => handleRowsPerPageChange(200)}>\n 200\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => handleRowsPerPageChange(500)}>\n 500\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n\n <div className=\"flex items-center gap-4\">\n <span className=\"text-sm text-muted-foreground\">\n Page {currentPage} of {totalPages}\n </span>\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => handlePageChange(currentPage - 1)}\n disabled={currentPage === 1}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => handlePageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default Alerts\n","export interface BusinessListItem {\n id: string\n businessName: string\n productName: string\n cipStatus: \"verified\" | \"not_start\" | \"pending\"\n status: \"active\" | \"inactive\" | \"suspended\"\n created: string\n modified: string\n}\n\nexport const mockBusinessesList: BusinessListItem[] = [\n {\n id: \"8112488\",\n businessName: \"RAPIDZ PAY INC\",\n productName: \"Fiat Republic Canada Inc. FBO Rapidz Pay\",\n cipStatus: \"verified\",\n status: \"active\",\n created: \"2025-10-05\",\n modified: \"2025-10-05\"\n },\n {\n id: \"8111609\",\n businessName: \"Fern Hyper Growth Llc\",\n productName: \"Atomic Brokerage FBO Atomic Brokerage Clients\",\n cipStatus: \"verified\",\n status: \"active\",\n created: \"2025-10-04\",\n modified: \"2025-10-04\"\n },\n {\n id: \"8111026\",\n businessName: \"ACEROSGALVANISADOS & PREPINTADOS\",\n productName: \"SendFriend Inc FBO Conduit Pay Agent\",\n cipStatus: \"not_start\",\n status: \"active\",\n created: \"2025-10-03\",\n modified: \"2025-10-03\"\n },\n {\n id: \"8110892\",\n businessName: \"Tech Solutions Corp\",\n productName: \"Digital Finance Inc FBO Tech Solutions\",\n cipStatus: \"pending\",\n status: \"active\",\n created: \"2025-10-02\",\n modified: \"2025-10-02\"\n },\n {\n id: \"8110654\",\n businessName: \"Global Trade Partners LLC\",\n productName: \"Swift Transfer FBO Global Trade\",\n cipStatus: \"verified\",\n status: \"active\",\n created: \"2025-10-01\",\n modified: \"2025-10-01\"\n }\n]\n","import { useState } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { Card, CardContent } from \"@/components/ui/card\"\nimport { DataTable, DataTableColumn } from \"@/components/ui/data-table\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Filter } from \"lucide-react\"\nimport { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, SheetFooter } from \"@/components/ui/sheet\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { DatePicker } from \"@/components/ui/date-picker\"\nimport { mockBusinessesList, BusinessListItem } from \"@/lib/mock-data/businesses-list-data\"\n\nconst Businesses = () => {\n const navigate = useNavigate()\n const [businesses, setBusinesses] = useState<BusinessListItem[]>(mockBusinessesList)\n const [filteredBusinesses, setFilteredBusinesses] = useState<BusinessListItem[]>(mockBusinessesList)\n const [sortBy, setSortBy] = useState<string>(\"created\")\n const [sortDirection, setSortDirection] = useState<\"asc\" | \"desc\">(\"desc\")\n const [filters, setFilters] = useState({\n name: \"\",\n productName: \"\",\n status: \"\",\n createdDateStart: undefined as Date | undefined,\n createdDateEnd: undefined as Date | undefined\n })\n\n const handleFilterChange = (field: string, value: string | Date | undefined) => {\n setFilters(prev => ({ ...prev, [field]: value }))\n }\n\n const applyFilters = () => {\n let filtered = businesses\n\n if (filters.name) {\n filtered = filtered.filter(business => \n business.businessName.toLowerCase().includes(filters.name.toLowerCase())\n )\n }\n if (filters.productName) {\n filtered = filtered.filter(business => \n business.productName.toLowerCase().includes(filters.productName.toLowerCase())\n )\n }\n if (filters.status) {\n filtered = filtered.filter(business => business.status === filters.status)\n }\n if (filters.createdDateStart) {\n filtered = filtered.filter(business => \n new Date(business.created) >= filters.createdDateStart!\n )\n }\n if (filters.createdDateEnd) {\n filtered = filtered.filter(business => \n new Date(business.created) <= filters.createdDateEnd!\n )\n }\n\n setFilteredBusinesses(filtered)\n }\n\n const resetFilters = () => {\n setFilters({\n name: \"\",\n productName: \"\",\n status: \"\",\n createdDateStart: undefined,\n createdDateEnd: undefined\n })\n setFilteredBusinesses(businesses)\n }\n\n const handleSort = (key: string) => {\n if (sortBy === key) {\n setSortDirection(sortDirection === \"asc\" ? \"desc\" : \"asc\")\n } else {\n setSortBy(key)\n setSortDirection(\"asc\")\n }\n }\n\n const handleRowClick = (business: BusinessListItem) => {\n navigate(`/business/${business.id}`)\n }\n\n const columns: DataTableColumn<BusinessListItem>[] = [\n {\n key: \"id\",\n title: \"Business ID\",\n sortable: true,\n },\n {\n key: \"businessName\",\n title: \"Business Name\",\n sortable: true,\n },\n {\n key: \"productName\",\n title: \"Product Name\",\n sortable: true,\n render: (value) => (\n <span className=\"text-primary hover:underline cursor-pointer\">\n {value as string}\n </span>\n ),\n },\n {\n key: \"cipStatus\",\n title: \"CIP status\",\n sortable: true,\n render: (value) => {\n const status = value as string\n const variant = \n status === \"verified\" ? \"success\" : \n status === \"pending\" ? \"warning\" : \n \"default\"\n const label = \n status === \"verified\" ? \"Verified\" : \n status === \"pending\" ? \"Pending\" : \n \"Not Start\"\n \n return <Badge variant={variant}>{label}</Badge>\n },\n },\n {\n key: \"status\",\n title: \"Status\",\n sortable: true,\n render: (value) => {\n const status = value as string\n const variant = status === \"active\" ? \"success\" : \"default\"\n const label = status.charAt(0).toUpperCase() + status.slice(1)\n \n return <Badge variant={variant}>{label}</Badge>\n },\n },\n {\n key: \"created\",\n title: \"Created\",\n sortable: true,\n },\n {\n key: \"modified\",\n title: \"Modified\",\n sortable: true,\n },\n ]\n\n const sortedBusinesses = [...filteredBusinesses].sort((a, b) => {\n const aValue = a[sortBy as keyof BusinessListItem]\n const bValue = b[sortBy as keyof BusinessListItem]\n \n if (aValue < bValue) return sortDirection === \"asc\" ? -1 : 1\n if (aValue > bValue) return sortDirection === \"asc\" ? 1 : -1\n return 0\n })\n\n return (\n <div className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Fixed Header */}\n <div className=\"flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <div className=\"container mx-auto px-4 py-4 max-w-none\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-3xl font-bold text-foreground\">Businesses</h1>\n <p className=\"text-muted-foreground mt-1\">\n Manage business entities and their configurations\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <Sheet>\n <SheetTrigger asChild>\n <Button variant=\"outline\" className=\"gap-2\">\n <Filter className=\"h-4 w-4\" />\n Filters\n </Button>\n </SheetTrigger>\n <SheetContent side=\"right\" className=\"w-full sm:max-w-xl overflow-y-auto\">\n <SheetHeader>\n <SheetTitle>Business Filters</SheetTitle>\n </SheetHeader>\n \n <div className=\"space-y-6 py-6\">\n <EnhancedInput\n label=\"Name\"\n value={filters.name}\n onChange={(e) => handleFilterChange(\"name\", e.target.value)}\n placeholder=\"Enter business name\"\n />\n\n <EnhancedInput\n label=\"Product Name\"\n value={filters.productName}\n onChange={(e) => handleFilterChange(\"productName\", e.target.value)}\n placeholder=\"Enter product name\"\n />\n\n <EnhancedSelect\n label=\"Status\"\n value={filters.status}\n onValueChange={(value) => handleFilterChange(\"status\", value)}\n placeholder=\"Select status\"\n options={[\n { value: \"active\", label: \"Active\" },\n { value: \"inactive\", label: \"Inactive\" },\n { value: \"suspended\", label: \"Suspended\" }\n ]}\n />\n\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Created Date Start</label>\n <DatePicker\n date={filters.createdDateStart}\n onDateChange={(date) => handleFilterChange(\"createdDateStart\", date)}\n placeholder=\"MM/DD/YYYY\"\n buttonClassName=\"w-full\"\n className=\"bg-background z-50\"\n />\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Created Date End</label>\n <DatePicker\n date={filters.createdDateEnd}\n onDateChange={(date) => handleFilterChange(\"createdDateEnd\", date)}\n placeholder=\"MM/DD/YYYY\"\n buttonClassName=\"w-full\"\n className=\"bg-background z-50\"\n />\n </div>\n </div>\n </div>\n\n <SheetFooter className=\"gap-2\">\n <Button variant=\"outline\" onClick={resetFilters}>\n Reset Filters\n </Button>\n <Button onClick={applyFilters}>\n Apply Filters\n </Button>\n </SheetFooter>\n </SheetContent>\n </Sheet>\n <Button onClick={() => navigate(\"/business/create\")}>\n Create Business\n </Button>\n </div>\n </div>\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-hidden\">\n <div className=\"container mx-auto px-4 h-full max-w-none flex flex-col\">\n <div className=\"flex-1 mt-4 overflow-auto\">\n <DataTable\n columns={columns}\n data={sortedBusinesses}\n sortBy={sortBy}\n sortDirection={sortDirection}\n onSort={handleSort}\n onRowClick={handleRowClick}\n />\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default Businesses\n","import { useState } from \"react\"\nimport { useParams } from \"react-router-dom\"\nimport { Button } from \"@/components/ui/button\"\nimport { BusinessProfileCard } from \"@/components/form-sections/BusinessProfileCard\"\nimport { BusinessStatusCard } from \"@/components/form-sections/BusinessStatusCard\"\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from \"@/components/ui/tabs\"\nimport { AccountCard } from \"@/components/ui/account-card\"\nimport { CounterpartyTypeBadge } from \"@/components/ui/counterparty-type-badge\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { DataTable, DataTableColumn } from \"@/components/ui/data-table\"\nimport { StatusBadge } from \"@/components/ui/status-badge\"\nimport { EditableInfoField } from \"@/components/ui/editable-info-field\"\nimport { Plus } from \"lucide-react\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { mockBusinessesList } from \"@/lib/mock-data/businesses-list-data\"\n\n// Mock data for accounts\nconst businessAccounts = [\n {\n id: \"acc-001\",\n name: \"Primary Operating Account\",\n number: \"****7890\",\n type: \"checking\" as const,\n status: \"active\" as const,\n balance: \"$125,450.00\",\n currency: \"USD\",\n institution: \"Chase Bank\",\n routingNumber: \"021000021\",\n country: \"US\"\n },\n {\n id: \"acc-002\",\n name: \"Business Savings\",\n number: \"****4567\",\n type: \"savings\" as const,\n status: \"active\" as const,\n balance: \"$45,230.00\",\n currency: \"USD\",\n institution: \"Chase Bank\",\n routingNumber: \"021000021\",\n country: \"US\"\n },\n {\n id: \"acc-003\",\n name: \"Payroll Account\",\n number: \"****1234\",\n type: \"checking\" as const,\n status: \"active\" as const,\n balance: \"$78,900.00\",\n currency: \"USD\",\n institution: \"Wells Fargo\",\n routingNumber: \"121000248\",\n country: \"US\"\n }\n]\n\n// Mock data for counterparties\nconst businessCounterparties = [\n {\n id: \"cp-001\",\n name: \"Tech Solutions Inc\",\n type: \"BUSINESS\" as const,\n status: \"active\",\n description: \"Technology vendor and service provider\",\n lastTransaction: \"2024-01-15\"\n },\n {\n id: \"cp-002\",\n name: \"Global Logistics LLC\",\n type: \"BUSINESS\" as const,\n status: \"active\",\n description: \"Shipping and logistics partner\",\n lastTransaction: \"2024-01-10\"\n },\n {\n id: \"cp-003\",\n name: \"Marketing Pros Agency\",\n type: \"BUSINESS\" as const,\n status: \"active\",\n description: \"Marketing and advertising services\",\n lastTransaction: \"2024-01-08\"\n },\n {\n id: \"cp-004\",\n name: \"John Smith Consulting\",\n type: \"INDIVIDUAL\" as const,\n status: \"active\",\n description: \"Independent business consultant\",\n lastTransaction: \"2023-12-20\"\n }\n]\n\nconst Business = () => {\n const { id } = useParams()\n \n // Get business data from mock data\n const business = mockBusinessesList.find(b => b.id === id)\n \n // Status management state\n const [currentStatus, setCurrentStatus] = useState(business?.status || \"active\")\n \n // Define columns for the accounts table\n const accountColumns: DataTableColumn[] = [\n {\n key: \"number\",\n title: \"Account Number\",\n sortable: true,\n },\n {\n key: \"name\",\n title: \"Account Name\",\n sortable: true,\n },\n {\n key: \"balance\",\n title: \"Available Balance\",\n sortable: true,\n align: \"right\" as const,\n },\n {\n key: \"status\",\n title: \"Status\",\n render: (value) => <StatusBadge status={value} />,\n },\n ]\n\n if (!business) {\n return (\n <div className=\"container mx-auto px-4 py-8\">\n <div className=\"text-center\">\n <h1 className=\"text-2xl font-bold mb-2\">Business Not Found</h1>\n <p className=\"text-muted-foreground mb-4\">The business could not be found.</p>\n </div>\n </div>\n )\n }\n\n return (\n <PageLayout\n title={\n <div className=\"flex items-center gap-3\">\n <span>{business.businessName}</span>\n <EditableInfoField\n label=\"\"\n value={currentStatus}\n options={[\n { value: \"active\", label: \"Active\" },\n { value: \"inactive\", label: \"Inactive\" },\n { value: \"suspended\", label: \"Suspended\" }\n ]}\n onChange={(newStatus) => setCurrentStatus(newStatus as any)}\n renderValue={(value) => <StatusBadge status={value.toUpperCase() as any} />}\n className=\"inline-block\"\n />\n </div>\n }\n maxWidth=\"full\"\n >\n <Tabs defaultValue=\"profile\" className=\"space-y-6\">\n <TabsList className=\"inline-flex gap-8 h-auto bg-transparent border-b border-border w-full p-0 rounded-none justify-start\">\n <TabsTrigger \n value=\"profile\" \n className=\"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:bg-transparent data-[state=active]:shadow-none pb-3\"\n >\n Profile\n </TabsTrigger>\n <TabsTrigger \n value=\"kyc\" \n className=\"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:bg-transparent data-[state=active]:shadow-none pb-3\"\n >\n KYC\n </TabsTrigger>\n <TabsTrigger \n value=\"counterparty\" \n className=\"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:bg-transparent data-[state=active]:shadow-none pb-3\"\n >\n Counterparty\n </TabsTrigger>\n </TabsList>\n\n {/* Profile Tab */}\n <TabsContent value=\"profile\" className=\"space-y-0\">\n <div className=\"flex flex-col lg:flex-row items-start gap-6\">\n {/* Left Section: Main cards */}\n <div className=\"flex-1 space-y-6\">\n <BusinessProfileCard isEditing={false} onToggleEdit={() => {}} />\n \n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-4\">\n <CardTitle>Accounts</CardTitle>\n <Button size=\"sm\">\n + New Account\n </Button>\n </CardHeader>\n <CardContent>\n <DataTable\n columns={accountColumns} \n data={businessAccounts}\n emptyMessage=\"No accounts found\"\n />\n </CardContent>\n </Card>\n </div>\n\n {/* Right Section: Timeline */}\n <div className=\"lg:w-64\">\n <BusinessStatusCard isEditing={false} onToggleEdit={() => {}} />\n </div>\n </div>\n </TabsContent>\n\n {/* KYC Tab */}\n <TabsContent value=\"kyc\" className=\"space-y-0\">\n <div className=\"p-8 text-center text-muted-foreground\">\n KYC content coming soon\n </div>\n </TabsContent>\n\n {/* Counterparty Tab */}\n <TabsContent value=\"counterparty\" className=\"space-y-0\">\n <div className=\"grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-6\">\n {businessCounterparties.map((counterparty) => (\n <Card key={counterparty.id}>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"text-lg\">{counterparty.name}</CardTitle>\n <CounterpartyTypeBadge type={counterparty.type} />\n </div>\n <div className=\"flex items-center gap-2 mt-2\">\n <Badge variant={counterparty.status === \"active\" ? \"default\" : \"secondary\"}>\n {counterparty.status}\n </Badge>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <p className=\"text-sm text-muted-foreground\">{counterparty.description}</p>\n <div className=\"flex justify-between items-center text-sm\">\n <span className=\"text-muted-foreground\">Last Transaction</span>\n <span className=\"font-medium\">{counterparty.lastTransaction}</span>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n </TabsContent>\n </Tabs>\n </PageLayout>\n )\n}\n\nexport default Business","import { useState } from \"react\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { EnhancedTextarea } from \"@/components/ui/enhanced-textarea\"\nimport { Card } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { BusinessTypeBadge } from \"@/components/ui/business-type-badge\"\n\nconst CreateBusiness = () => {\n const [businessType, setBusinessType] = useState(\"\")\n return (\n <PageLayout \n title=\"Create Business\" \n description=\"Create a new business entity with all required information\"\n actions={[\n { label: \"Cancel\", variant: \"outline\", onClick: () => {} },\n { label: \"Create Business\", variant: \"default\", onClick: () => {} }\n ]}\n >\n {/* Business Creation Form */}\n <div className=\"space-y-6\">\n <Card className=\"p-6\">\n <div className=\"border-b border-border pb-4 mb-6\">\n <h2 className=\"text-lg font-semibold text-foreground\">Business Information</h2>\n <p className=\"text-sm text-muted-foreground\">Basic business details and identification</p>\n </div>\n \n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n <EnhancedInput\n label=\"Business Name\"\n placeholder=\"Enter business name\"\n required\n />\n \n <EnhancedInput\n label=\"Legal Name\"\n placeholder=\"Enter legal business name\"\n hint=\"Official registered business name\"\n />\n \n <div className=\"space-y-2\">\n <EnhancedSelect\n label=\"Business Type\"\n placeholder=\"Select business type\"\n value={businessType}\n onValueChange={setBusinessType}\n options={[\n { value: \"corporation\", label: \"Corporation\" },\n { value: \"llc\", label: \"LLC\" },\n { value: \"partnership\", label: \"Partnership\" },\n { value: \"sole_proprietorship\", label: \"Sole Proprietorship\" }\n ]}\n />\n {businessType && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs text-muted-foreground\">Preview:</span>\n <BusinessTypeBadge type={businessType as \"corporation\" | \"llc\" | \"partnership\" | \"sole_proprietorship\"} />\n </div>\n )}\n </div>\n \n <EnhancedInput\n label=\"Tax ID (EIN)\"\n placeholder=\"12-3456789\"\n hint=\"Employer Identification Number\"\n required\n />\n \n <EnhancedInput\n label=\"Registration Number\"\n placeholder=\"Enter registration number\"\n hint=\"State business registration number\"\n />\n \n <EnhancedSelect\n label=\"Industry\"\n placeholder=\"Select industry\"\n options={[\n { value: \"technology\", label: \"Technology\" },\n { value: \"finance\", label: \"Finance\" },\n { value: \"healthcare\", label: \"Healthcare\" },\n { value: \"manufacturing\", label: \"Manufacturing\" },\n { value: \"retail\", label: \"Retail\" },\n { value: \"other\", label: \"Other\" }\n ]}\n />\n </div>\n </Card>\n\n <Card className=\"p-6\">\n <div className=\"border-b border-border pb-4 mb-6\">\n <h2 className=\"text-lg font-semibold text-foreground\">Contact Information</h2>\n <p className=\"text-sm text-muted-foreground\">Business address and contact details</p>\n </div>\n \n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n <EnhancedInput\n label=\"Street Address\"\n placeholder=\"Enter street address\"\n required\n />\n \n <EnhancedInput\n label=\"City\"\n placeholder=\"Enter city\"\n required\n />\n \n <EnhancedInput\n label=\"State\"\n placeholder=\"Enter state\"\n required\n />\n \n <EnhancedInput\n label=\"Postal Code\"\n placeholder=\"12345\"\n required\n />\n \n <EnhancedSelect\n label=\"Country\"\n placeholder=\"Select country\"\n options={[\n { value: \"US\", label: \"United States\" },\n { value: \"CA\", label: \"Canada\" },\n { value: \"GB\", label: \"United Kingdom\" },\n { value: \"DE\", label: \"Germany\" }\n ]}\n />\n \n <EnhancedInput\n label=\"Phone Number\"\n placeholder=\"+1 (555) 123-4567\"\n required\n />\n \n <EnhancedInput\n label=\"Email Address\"\n placeholder=\"contact@business.com\"\n type=\"email\"\n required\n />\n \n <EnhancedInput\n label=\"Website\"\n placeholder=\"https://www.business.com\"\n type=\"url\"\n />\n </div>\n </Card>\n\n <Card className=\"p-6\">\n <div className=\"border-b border-border pb-4 mb-6\">\n <h2 className=\"text-lg font-semibold text-foreground\">Additional Information</h2>\n <p className=\"text-sm text-muted-foreground\">Optional business description and notes</p>\n </div>\n \n <div className=\"space-y-6\">\n <EnhancedTextarea\n label=\"Business Description\"\n placeholder=\"Describe your business activities and services\"\n hint=\"Brief description of what your business does\"\n />\n </div>\n </Card>\n </div>\n </PageLayout>\n )\n}\n\nexport default CreateBusiness","import { PageLayout } from \"@/components/ui/page-layout\"\n\nconst Cases = () => {\n return (\n <PageLayout \n title=\"Cases\" \n description=\"Manage and track investigation cases\"\n >\n <div className=\"text-center py-12 text-muted-foreground\">\n Cases content coming soon\n </div>\n </PageLayout>\n )\n}\n\nexport default Cases\n","import { useState } from \"react\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { CounterpartyBasicInfo } from \"@/components/form-sections/CounterpartyBasicInfo\"\nimport { PaymentInformationSection } from \"@/components/form-sections/PaymentInformationSection\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nconst CreateCounterparty = () => {\n const [counterpartyData, setCounterpartyData] = useState(null)\n\n const handleBasicInfoChange = (data: any) => {\n setCounterpartyData(data)\n }\n\n const handleSubmit = () => {\n // Handle form submission\n console.log(\"Creating counterparty with data:\", counterpartyData)\n }\n\n return (\n <PageLayout \n title=\"Create Counterparty\" \n description=\"Create a new counterparty with all required information\"\n actions={[\n { label: \"Cancel\", variant: \"outline\", onClick: () => {} },\n { label: \"Create Counterparty\", variant: \"default\", onClick: handleSubmit }\n ]}\n >\n <div className=\"space-y-6\">\n {/* Basic Information Card */}\n <Card>\n <CardContent className=\"p-6\">\n <CounterpartyBasicInfo onDataChange={handleBasicInfoChange} />\n </CardContent>\n </Card>\n\n {/* Payment Information Section */}\n <Card>\n <CardContent className=\"p-6\">\n <PaymentInformationSection />\n </CardContent>\n </Card>\n </div>\n </PageLayout>\n )\n}\n\nexport default CreateCounterparty","import { PageLayout } from \"@/components/ui/page-layout\"\nimport { BasicInfoCard } from \"@/components/form-sections/BasicInfoCard\"\nimport { ReceiverCard } from \"@/components/form-sections/ReceiverCard\"\nimport { BeneficiaryCard } from \"@/components/form-sections/BeneficiaryCard\"\nimport { FormCard } from \"@/components/ui/form-card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Separator } from \"@/components/ui/separator\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { Edit } from \"lucide-react\"\nimport { useEditState } from \"@/hooks/useEditState\"\nimport { useState } from \"react\"\n\nconst CounterpartyDomesticWire = () => {\n const { isEditing, handleToggleEdit, handleSave, handleCancel } = useEditState({})\n const [transferType, setTransferType] = useState(\"DOMESTIC\")\n return (\n <PageLayout\n title=\"Counterparty Domestic Wire\"\n description=\"Manage domestic wire transfer configurations and beneficiary information\"\n actions={!isEditing ? [\n { label: \"Cancel\", variant: \"outline\", onClick: () => {} },\n { label: \"Save Domestic Wire Configuration\", variant: \"default\", onClick: () => {} }\n ] : undefined}\n >\n <div className=\"space-y-8\">\n {/* Basic Info - Always Visible */}\n <BasicInfoCard />\n\n <Separator className=\"my-8\" />\n\n {/* Domestic Wire Transfer Configuration */}\n <FormCard\n title=\"Domestic Wire Transfer Configuration\"\n description=\"Configure domestic wire transfer settings and beneficiary information\"\n headerActions={\n <div className=\"flex items-center gap-2\">\n {isEditing ? (\n <>\n <EnhancedSelect\n value={transferType}\n onValueChange={setTransferType}\n options={[\n { value: \"DOMESTIC\", label: \"DOMESTIC\" },\n { value: \"INTERNATIONAL\", label: \"INTERNATIONAL\" }\n ]}\n placeholder=\"Select transfer type\"\n />\n <Button variant=\"outline\" size=\"sm\" onClick={handleCancel}>\n Cancel\n </Button>\n <Button size=\"sm\" onClick={handleSave}>\n Save\n </Button>\n </>\n ) : (\n <>\n <span className=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-secondary text-secondary-foreground\">\n {transferType}\n </span>\n <Button variant=\"ghost\" size=\"icon\" onClick={handleToggleEdit} className=\"text-primary hover:text-primary/80 hover:bg-primary/10\">\n <Edit className=\"h-4 w-4\" />\n </Button>\n </>\n )}\n </div>\n }\n >\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <ReceiverCard isEditing={isEditing} hideActions={true} />\n <BeneficiaryCard isEditing={isEditing} hideActions={true} />\n </div>\n </FormCard>\n </div>\n </PageLayout>\n )\n}\n\nexport default CounterpartyDomesticWire","import { PageLayout } from \"@/components/ui/page-layout\"\nimport { Stack } from \"@/components/ui/stack\"\nimport { Button } from \"@/components/ui/button\"\nimport { BasicInfoSection } from \"@/components/form-sections/BasicInfoSection\"\nimport { WireTransferSection } from \"@/components/form-sections/WireTransferSection\"\nimport { ACHTransferSection } from \"@/components/form-sections/ACHTransferSection\"\nimport { useEditState } from \"@/hooks/useEditState\"\n\nconst CounterpartyManage = () => {\n // Global edit state management\n const { \n isEditing: isBasicEditing, \n handleToggleEdit: handleBasicToggleEdit\n } = useEditState({})\n\n const { \n isEditing: isWireEditing, \n handleToggleEdit: handleWireToggleEdit\n } = useEditState({})\n\n const { \n isEditing: isACHEditing, \n handleToggleEdit: handleACHToggleEdit\n } = useEditState({})\n\n const pageCards = [\n {\n key: \"basic-info\",\n component: BasicInfoSection,\n props: {\n isEditing: isBasicEditing,\n onToggleEdit: handleBasicToggleEdit\n }\n },\n {\n key: \"wire-transfer\", \n component: WireTransferSection,\n props: {\n isEditing: isWireEditing,\n onToggleEdit: handleWireToggleEdit\n }\n },\n {\n key: \"ach-transfer\",\n component: ACHTransferSection, \n props: {\n isEditing: isACHEditing,\n onToggleEdit: handleACHToggleEdit\n }\n }\n ]\n\n const pageActions = !isBasicEditing && !isWireEditing && !isACHEditing ? [\n {\n label: \"Cancel\",\n variant: \"outline\" as const,\n onClick: () => {}\n },\n {\n label: \"Save Configuration\", \n variant: \"default\" as const,\n onClick: () => {}\n }\n ] : []\n\n return (\n <PageLayout\n title=\"Counterparty Management\"\n description=\"Manage counterparty details and payment configurations\"\n mode=\"cards\"\n cards={pageCards}\n actions={pageActions}\n maxWidth=\"lg\"\n gridCols={1}\n />\n )\n}\n\nexport default CounterpartyManage","import { PageLayout } from \"@/components/ui/page-layout\"\n\nconst Dashboard = () => {\n return (\n <PageLayout \n title=\"Dashboard\" \n description=\"Overview of your system metrics and activity\"\n >\n <div className=\"text-center py-12 text-muted-foreground\">\n Dashboard content coming soon\n </div>\n </PageLayout>\n )\n}\n\nexport default Dashboard\n","import { useLocation } from \"react-router-dom\";\nimport { useEffect } from \"react\";\n\nconst NotFound = () => {\n const location = useLocation();\n\n useEffect(() => {\n console.error(\n \"404 Error: User attempted to access non-existent route:\",\n location.pathname\n );\n }, [location.pathname]);\n\n return (\n <div className=\"min-h-screen flex items-center justify-center bg-gray-100\">\n <div className=\"text-center\">\n <h1 className=\"text-4xl font-bold mb-4\">404</h1>\n <p className=\"text-xl text-gray-600 mb-4\">Oops! Page not found</p>\n <a href=\"/\" className=\"text-blue-500 hover:text-blue-700 underline\">\n Return to Home\n </a>\n </div>\n </div>\n );\n};\n\nexport default NotFound;\n","import { useState, useEffect } from \"react\"\nimport { StatementView } from \"@/components/statement/StatementView\"\nimport { \n mockPrograms, \n mockProducts, \n mockStatementHeader, \n mockStatementTransactions,\n StatementHeader,\n StatementTransaction \n} from \"@/lib/mock-data/statement-data\"\nimport { toast } from \"@/hooks/use-toast\"\n\nexport default function Statement() {\n // State\n const [statementType, setStatementType] = useState<string>(\"root\")\n const [selectedProgram, setSelectedProgram] = useState<string>(\"\")\n const [selectedProduct, setSelectedProduct] = useState<string>(\"\")\n const [accountNumber, setAccountNumber] = useState<string>(\"\")\n const [startDate, setStartDate] = useState<Date>(() => {\n const now = new Date()\n return new Date(now.getFullYear(), now.getMonth(), 1)\n })\n const [endDate, setEndDate] = useState<Date>(new Date())\n const [statementGenerated, setStatementGenerated] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n \n // Data state - fetched from API\n const [programs, setPrograms] = useState<Array<{ value: string; label: string }>>([])\n const [products, setProducts] = useState<Array<{ value: string; label: string }>>([])\n const [programsLoading, setProgramsLoading] = useState(false)\n const [productsLoading, setProductsLoading] = useState(false)\n const [programsError, setProgramsError] = useState<string | null>(null)\n const [productsError, setProductsError] = useState<string | null>(null)\n const [statementHeader, setStatementHeader] = useState<StatementHeader | null>(null)\n const [statementTransactions, setStatementTransactions] = useState<StatementTransaction[]>([])\n\n // Fetch programs from API\n const fetchPrograms = async () => {\n setProgramsLoading(true)\n setProgramsError(null)\n try {\n // TODO: Replace with actual API endpoint\n // const response = await fetch('/api/programs')\n // const data = await response.json()\n \n // Simulate API call with mock data\n await new Promise(resolve => setTimeout(resolve, 1000))\n setPrograms(mockPrograms)\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : \"Failed to load programs\"\n setProgramsError(errorMessage)\n setPrograms([])\n \n toast({\n title: \"Error loading programs\",\n description: errorMessage,\n variant: \"destructive\"\n })\n } finally {\n setProgramsLoading(false)\n }\n }\n\n // Fetch products from API\n const fetchProducts = async () => {\n setProductsLoading(true)\n setProductsError(null)\n try {\n // TODO: Replace with actual API endpoint\n // const response = await fetch('/api/products')\n // const data = await response.json()\n \n // Simulate API call with mock data\n await new Promise(resolve => setTimeout(resolve, 1000))\n setProducts(mockProducts)\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : \"Failed to load products\"\n setProductsError(errorMessage)\n setProducts([])\n \n toast({\n title: \"Error loading products\",\n description: errorMessage,\n variant: \"destructive\"\n })\n } finally {\n setProductsLoading(false)\n }\n }\n\n // Fetch data on mount\n useEffect(() => {\n fetchPrograms()\n fetchProducts()\n }, [])\n\n // Handlers\n const handleStatementTypeChange = (value: string) => {\n setStatementType(value)\n // Reset secondary selection when type changes\n setSelectedProgram(\"\")\n setSelectedProduct(\"\")\n setAccountNumber(\"\")\n }\n\n const handleGenerateStatement = async () => {\n if (!statementType || !startDate || !endDate) return\n \n // Validate secondary selection based on type\n if (statementType === \"program\" && !selectedProgram) return\n if (statementType === \"product\" && !selectedProduct) return\n if (statementType === \"account\" && !accountNumber) return\n\n setIsLoading(true)\n \n try {\n // TODO: API call to generate statement\n console.log(\"Generating statement with:\", {\n statementType,\n selectedProgram,\n selectedProduct,\n accountNumber,\n startDate,\n endDate\n })\n\n // Simulate API delay\n await new Promise(resolve => setTimeout(resolve, 1000))\n\n // Set mock data - replace with API response\n setStatementHeader(mockStatementHeader)\n setStatementTransactions(mockStatementTransactions)\n setStatementGenerated(true)\n } finally {\n setIsLoading(false)\n }\n }\n\n const isGenerateDisabled = () => {\n if (!statementType || !startDate || !endDate) return true\n \n // Check for errors or loading in selected type\n if (statementType === \"program\" && (programsError || programsLoading)) return true\n if (statementType === \"product\" && (productsError || productsLoading)) return true\n \n // Check for missing selections\n if (statementType === \"program\" && !selectedProgram) return true\n if (statementType === \"product\" && !selectedProduct) return true\n if (statementType === \"account\" && !accountNumber) return true\n \n return false\n }\n\n const handleRetryFetch = () => {\n if (statementType === \"program\" && programsError) {\n fetchPrograms()\n } else if (statementType === \"product\" && productsError) {\n fetchProducts()\n }\n }\n\n const shouldShowRetry = () => {\n if (statementType === \"program\" && programsError) return true\n if (statementType === \"product\" && productsError) return true\n return false\n }\n\n const handleDownloadCSV = () => {\n // TODO: API call to download CSV\n console.log(\"Downloading CSV...\")\n }\n\n const handlePrintPDF = () => {\n // TODO: API call to print PDF\n console.log(\"Printing PDF...\")\n }\n\n const handleEdit = () => {\n setStatementGenerated(false)\n }\n\n return (\n <StatementView\n statementType={statementType}\n selectedProgram={selectedProgram}\n selectedProduct={selectedProduct}\n accountNumber={accountNumber}\n startDate={startDate}\n endDate={endDate}\n statementGenerated={statementGenerated}\n programs={programs}\n products={products}\n statementHeader={statementHeader}\n statementTransactions={statementTransactions}\n programsLoading={programsLoading}\n productsLoading={productsLoading}\n programsError={programsError}\n productsError={productsError}\n onStatementTypeChange={handleStatementTypeChange}\n onProgramChange={setSelectedProgram}\n onProductChange={setSelectedProduct}\n onAccountNumberChange={setAccountNumber}\n onStartDateChange={setStartDate}\n onEndDateChange={setEndDate}\n onGenerateStatement={handleGenerateStatement}\n onEdit={handleEdit}\n onDownloadCSV={handleDownloadCSV}\n onPrintPDF={handlePrintPDF}\n onRetryFetch={handleRetryFetch}\n shouldShowRetry={shouldShowRetry()}\n isGenerateDisabled={isGenerateDisabled()}\n isLoading={isLoading}\n />\n )\n}\n","export interface Transaction {\n id: string\n created: string\n accountNumber: string\n amount: number\n customer: string\n counterparty: string\n description: string\n transactionType: string\n status: \"PENDING\" | \"POSTED\" | \"FAILED\" | \"CANCELLED\"\n processingStatus: \"INITIATED\" | \"SUBMITTED\" | \"CUSTOMER_REVIEW\" | \"MANUAL_REVIEW\" | \"SENT\" | \"CONFIRMED\"\n updated: string\n isInbound: boolean\n wireDetails?: any\n achDetails?: any\n}\n\nexport const mockTransactions: Transaction[] = [\n {\n id: \"1\",\n created: \"2025-10-01 00:16\",\n accountNumber: \"126713605718\",\n amount: 34539.18,\n customer: \"Rise Works Inc\",\n counterparty: \"VEDANT JAYESHKUMAR PATI\",\n description: \"4NnuJKyD9a8LUmkm\",\n transactionType: \"Ach Originator Credit\",\n status: \"PENDING\",\n processingStatus: \"SENT\",\n updated: \"2025-10-01 00:16\",\n isInbound: true,\n achDetails: {\n type: \"ACH Credit\",\n originatorName: \"Rise Works Inc\",\n originatorAccountNumber: \"126713605718\",\n receiverName: \"VEDANT JAYESHKUMAR PATI\",\n receiverAccountNumber: \"9876543210\",\n receiverRoutingNumber: \"021000021\",\n amount: 7293.32,\n secCode: \"CCD\",\n companyEntryDescription: \"PAYROLL\",\n companyDiscretionaryData: \"4NnuJKyD9a8LUmkm\",\n individualIdNumber: \"1234567890\",\n individualName: \"VEDANT JAYESHKUMAR PATI\",\n traceNumber: \"021000021234567\",\n raw: {\n recordType: \"6\",\n transactionCode: \"22\",\n receivingDFIIdentification: \"02100002\",\n checkDigit: \"1\",\n DFIAccountNumber: \"9876543210\",\n amount: \"0000729332\",\n individualIdentificationNumber: \"1234567890\",\n individualName: \"VEDANT JAYESHKUMAR PA\",\n discretionaryData: \" \",\n addendaRecordIndicator: \"0\",\n traceNumber: \"021000021234567\",\n batchHeader: {\n recordType: \"5\",\n serviceClassCode: \"200\",\n companyName: \"RISE WORKS INC\",\n companyDiscretionaryData: \"4NnuJKyD9a8LU\",\n companyIdentification: \"1234567890\",\n standardEntryClassCode: \"CCD\",\n companyEntryDescription: \"PAYROLL\",\n companyDescriptiveDate: \"251001\",\n effectiveEntryDate: \"251001\",\n settlementDate: \" \",\n originatorStatusCode: \"1\",\n originatingDFIIdentification: \"02100002\",\n batchNumber: \"0000001\"\n }\n }\n }\n },\n {\n id: \"2\",\n created: \"2025-10-01 00:09\",\n accountNumber: \"899606565333\",\n amount: 0.50,\n customer: \"SSB Bank\",\n counterparty: \"Maung Lwin\",\n description: \"ACH Fee\",\n transactionType: \"Fee Ach Transaction\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-10-01 00:09\",\n isInbound: false\n },\n {\n id: \"3\",\n created: \"2025-09-30 23:45\",\n accountNumber: \"445821903456\",\n amount: 15000.00,\n customer: \"Tech Solutions LLC\",\n counterparty: \"Global Suppliers Inc\",\n description: \"Invoice Payment #INV-2024-089\",\n transactionType: \"Wire Domestic Credit\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-10-01 00:12\",\n isInbound: false,\n wireDetails: {\n type: \"Domestic Wire\",\n originatorName: \"Tech Solutions LLC\",\n originatorAccountNumber: \"445821903456\",\n originatorAddress: \"123 Tech Street, San Francisco, CA 94105\",\n beneficiaryName: \"Global Suppliers Inc\",\n beneficiaryAccountNumber: \"998877665544\",\n beneficiaryAddress: \"456 Supply Avenue, New York, NY 10001\",\n beneficiaryFIName: \"Chase Bank\",\n beneficiaryFIRoutingNumber: \"021000021\",\n beneficiaryFIAddress: \"270 Park Avenue, New York, NY 10017\",\n originatorFIName: \"Wells Fargo Bank\",\n originatorFIRoutingNumber: \"121000248\",\n originatorFIAddress: \"420 Montgomery Street, San Francisco, CA 94104\",\n intermediaryFIName: \"Bank of America\",\n intermediaryFIRoutingNumber: \"026009593\",\n intermediaryFIAddress: \"100 Federal Street, Boston, MA 02110\",\n raw: {\n messageType: \"MT103\",\n sender: \"WFBIUS6SXXX\",\n receiver: \"CHASUS33XXX\",\n transactionReference: \"INV-2024-089-TXN-001\",\n relatedReference: \"INV-2024-089\",\n bankOperationCode: \"CRED\",\n instructionCode: \"CHQB\",\n valueDate: \"2025-09-30\",\n currency: \"USD\",\n amount: \"15000.00\",\n orderingCustomer: {\n account: \"445821903456\",\n name: \"Tech Solutions LLC\",\n address: [\n \"123 Tech Street\",\n \"San Francisco, CA 94105\",\n \"United States\"\n ]\n },\n orderingInstitution: {\n bic: \"WFBIUS6SXXX\",\n name: \"Wells Fargo Bank N.A.\",\n address: [\n \"420 Montgomery Street\",\n \"San Francisco, CA 94104\"\n ]\n },\n intermediaryInstitution: {\n bic: \"BOFAUS3NXXX\",\n name: \"Bank of America N.A.\",\n clearingCode: \"026009593\",\n address: [\n \"100 Federal Street\",\n \"Boston, MA 02110\"\n ]\n },\n beneficiaryInstitution: {\n bic: \"CHASUS33XXX\",\n name: \"JPMorgan Chase Bank N.A.\",\n clearingCode: \"021000021\",\n address: [\n \"270 Park Avenue\",\n \"New York, NY 10017\"\n ]\n },\n beneficiaryCustomer: {\n account: \"998877665544\",\n name: \"Global Suppliers Inc\",\n address: [\n \"456 Supply Avenue\",\n \"New York, NY 10001\",\n \"United States\"\n ]\n },\n remittanceInformation: \"Invoice Payment for INV-2024-089 - Equipment Purchase\",\n regulatoryReporting: {\n code: \"BENEFRES\",\n country: \"US\",\n narrative: \"Payment for goods\"\n },\n senderToReceiverInformation: [\n \"Payment for invoice INV-2024-089\",\n \"Equipment and supplies purchase\",\n \"Net 30 terms - On time payment\"\n ],\n chargeDetails: \"OUR\"\n }\n }\n },\n {\n id: \"4\",\n created: \"2025-09-30 22:18\",\n accountNumber: \"778901234567\",\n amount: -2500.75,\n customer: \"Metro Business Group\",\n counterparty: \"Pacific Trading Co\",\n description: \"Vendor Payment\",\n transactionType: \"Ach Originator Debit\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-09-30 23:01\",\n isInbound: false\n },\n {\n id: \"5\",\n created: \"2025-09-30 21:05\",\n accountNumber: \"334455667788\",\n amount: 500.00,\n customer: \"Sunrise Enterprises\",\n counterparty: \"John Mitchell\",\n description: \"Contractor Payment\",\n transactionType: \"Ach Originator Credit\",\n status: \"PENDING\",\n processingStatus: \"CUSTOMER_REVIEW\",\n updated: \"2025-09-30 21:05\",\n isInbound: false\n },\n {\n id: \"6\",\n created: \"2025-09-30 19:30\",\n accountNumber: \"998877665544\",\n amount: -125000.00,\n customer: \"Real Estate Holdings\",\n counterparty: \"Property Management LLC\",\n description: \"Monthly Rent Payment\",\n transactionType: \"Wire Domestic Debit\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-09-30 20:15\",\n isInbound: false\n },\n {\n id: \"7\",\n created: \"2025-09-30 17:22\",\n accountNumber: \"556677889900\",\n amount: 3.00,\n customer: \"First National Bank\",\n counterparty: \"Sarah Johnson\",\n description: \"Wire Transfer Fee\",\n transactionType: \"Fee Wire Transaction\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-09-30 17:22\",\n isInbound: false\n },\n {\n id: \"8\",\n created: \"2025-09-30 15:40\",\n accountNumber: \"223344556677\",\n amount: 8750.50,\n customer: \"Innovation Labs Inc\",\n counterparty: \"Research Partners\",\n description: \"R&D Funding Transfer\",\n transactionType: \"Ach Originator Credit\",\n status: \"FAILED\",\n processingStatus: \"MANUAL_REVIEW\",\n updated: \"2025-09-30 16:10\",\n isInbound: false\n }\n]\n\nexport const mockTransactionTimeline = [\n {\n id: \"1\",\n action: \"Transaction Created\",\n user: \"System\",\n details: \"Transaction initiated via API\",\n status: \"Pending\",\n timestamp: \"2025-10-01 00:16:23\"\n },\n {\n id: \"2\",\n action: \"Validation Completed\",\n user: \"System\",\n details: \"All validation checks passed\",\n timestamp: \"2025-10-01 00:16:45\"\n },\n {\n id: \"3\",\n action: \"Assigned for Review\",\n user: \"approverdev\",\n details: \"Transaction assigned to compliance team\",\n status: \"In Progress\",\n timestamp: \"2025-10-01 00:17:12\"\n },\n {\n id: \"4\",\n action: \"Compliance Review\",\n user: \"Sarah Johnson\",\n details: \"AML and sanctions screening completed\",\n timestamp: \"2025-10-01 00:18:30\"\n },\n {\n id: \"5\",\n action: \"Approved\",\n user: \"Michael Chen\",\n details: \"Transaction approved for processing\",\n status: \"Closed\",\n timestamp: \"2025-10-01 00:19:45\"\n }\n]\n","import { useState } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { StatusBadge } from \"@/components/ui/status-badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { ChevronLeft, ChevronRight, Filter } from \"lucide-react\"\nimport { mockTransactions, Transaction } from \"@/lib/mock-data/transaction-data\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, SheetFooter } from \"@/components/ui/sheet\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { DatePicker } from \"@/components/ui/date-picker\"\n\nconst TransactionHistory = () => {\n const navigate = useNavigate()\n const [currentPage, setCurrentPage] = useState(1)\n const [rowsPerPage, setRowsPerPage] = useState(100)\n const [filters, setFilters] = useState({\n accountNumber: \"\",\n product: \"\",\n customerId: \"\",\n counterpartyId: \"\",\n settlementFileName: \"\",\n originalFileName: \"\",\n requesterIpAddress: \"\",\n requesterUsername: \"\",\n wireFileHandle: \"\",\n paymentId: \"\",\n transactionType: \"\",\n transactionStatus: \"\",\n processingStatus: \"\",\n direction: \"\",\n minAmount: \"\",\n maxAmount: \"\",\n creationDateStart: undefined as Date | undefined,\n creationDateEnd: undefined as Date | undefined,\n postDateStart: undefined as Date | undefined,\n postDateEnd: undefined as Date | undefined\n })\n\n const handleFilterChange = (field: string, value: string | Date | undefined) => {\n setFilters(prev => ({ ...prev, [field]: value }))\n }\n\n const applyFilters = () => {\n // Apply filter logic here\n console.log(\"Applying filters:\", filters)\n }\n\n const resetFilters = () => {\n setFilters({\n accountNumber: \"\",\n product: \"\",\n customerId: \"\",\n counterpartyId: \"\",\n settlementFileName: \"\",\n originalFileName: \"\",\n requesterIpAddress: \"\",\n requesterUsername: \"\",\n wireFileHandle: \"\",\n paymentId: \"\",\n transactionType: \"\",\n transactionStatus: \"\",\n processingStatus: \"\",\n direction: \"\",\n minAmount: \"\",\n maxAmount: \"\",\n creationDateStart: undefined,\n creationDateEnd: undefined,\n postDateStart: undefined,\n postDateEnd: undefined\n })\n }\n\n // Pagination calculations\n const totalPages = Math.ceil(mockTransactions.length / rowsPerPage)\n const startIndex = (currentPage - 1) * rowsPerPage\n const endIndex = startIndex + rowsPerPage\n const paginatedTransactions = mockTransactions.slice(startIndex, endIndex)\n\n const handlePageChange = (newPage: number) => {\n if (newPage >= 1 && newPage <= totalPages) {\n setCurrentPage(newPage)\n }\n }\n\n const handleRowsPerPageChange = (value: number) => {\n setRowsPerPage(value)\n setCurrentPage(1)\n }\n\n const formatCurrency = (value: number) => {\n const formatted = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2\n }).format(value)\n return formatted\n }\n\n return (\n <div className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Fixed Header */}\n <div className=\"flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <div className=\"container mx-auto px-4 py-4 max-w-none\">\n <div className=\"flex items-center justify-between\">\n <h1 className=\"text-3xl font-bold text-foreground\">Transaction History</h1>\n <Sheet>\n <SheetTrigger asChild>\n <Button variant=\"outline\" className=\"gap-2\">\n <Filter className=\"h-4 w-4\" />\n Filters\n </Button>\n </SheetTrigger>\n <SheetContent side=\"right\" className=\"w-full sm:max-w-xl overflow-y-auto\">\n <SheetHeader>\n <SheetTitle>Transaction Filters</SheetTitle>\n </SheetHeader>\n \n <div className=\"space-y-6 py-6\">\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedInput\n label=\"Account Number\"\n value={filters.accountNumber}\n onChange={(e) => handleFilterChange(\"accountNumber\", e.target.value)}\n placeholder=\"Enter account number\"\n />\n\n <EnhancedSelect\n label=\"Product\"\n value={filters.product}\n onValueChange={(value) => handleFilterChange(\"product\", value)}\n placeholder=\"Select product\"\n options={[\n { value: \"wire\", label: \"Wire\" },\n { value: \"ach\", label: \"ACH\" },\n { value: \"check\", label: \"Check\" }\n ]}\n />\n </div>\n\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedInput\n label=\"Customer ID\"\n value={filters.customerId}\n onChange={(e) => handleFilterChange(\"customerId\", e.target.value)}\n placeholder=\"Enter customer ID\"\n />\n\n <EnhancedInput\n label=\"Counterparty ID\"\n value={filters.counterpartyId}\n onChange={(e) => handleFilterChange(\"counterpartyId\", e.target.value)}\n placeholder=\"Enter counterparty ID\"\n />\n </div>\n\n <EnhancedInput\n label=\"Settlement File Name\"\n value={filters.settlementFileName}\n onChange={(e) => handleFilterChange(\"settlementFileName\", e.target.value)}\n placeholder=\"Enter settlement file name\"\n />\n\n <EnhancedInput\n label=\"Original File Name\"\n value={filters.originalFileName}\n onChange={(e) => handleFilterChange(\"originalFileName\", e.target.value)}\n placeholder=\"Enter original file name\"\n />\n\n <EnhancedInput\n label=\"Requester IP Address\"\n value={filters.requesterIpAddress}\n onChange={(e) => handleFilterChange(\"requesterIpAddress\", e.target.value)}\n placeholder=\"Enter IP address\"\n />\n\n <EnhancedInput\n label=\"Requester Username\"\n value={filters.requesterUsername}\n onChange={(e) => handleFilterChange(\"requesterUsername\", e.target.value)}\n placeholder=\"Enter username\"\n />\n\n <EnhancedInput\n label=\"Wire File Handle\"\n value={filters.wireFileHandle}\n onChange={(e) => handleFilterChange(\"wireFileHandle\", e.target.value)}\n placeholder=\"Enter wire file handle\"\n />\n\n <EnhancedInput\n label=\"Payment ID\"\n value={filters.paymentId}\n onChange={(e) => handleFilterChange(\"paymentId\", e.target.value)}\n placeholder=\"Enter payment ID\"\n />\n\n <EnhancedSelect\n label=\"Transaction Type\"\n value={filters.transactionType}\n onValueChange={(value) => handleFilterChange(\"transactionType\", value)}\n placeholder=\"Select transaction type\"\n options={[\n { value: \"ach_credit\", label: \"ACH Credit\" },\n { value: \"ach_debit\", label: \"ACH Debit\" },\n { value: \"wire_domestic\", label: \"Wire Domestic\" },\n { value: \"wire_international\", label: \"Wire International\" }\n ]}\n />\n\n <EnhancedSelect\n label=\"Transaction Status\"\n value={filters.transactionStatus}\n onValueChange={(value) => handleFilterChange(\"transactionStatus\", value)}\n placeholder=\"Select transaction status\"\n options={[\n { value: \"PENDING\", label: \"Pending\" },\n { value: \"POSTED\", label: \"Posted\" },\n { value: \"FAILED\", label: \"Failed\" },\n { value: \"CANCELLED\", label: \"Cancelled\" }\n ]}\n />\n\n <EnhancedSelect\n label=\"Processing Status\"\n value={filters.processingStatus}\n onValueChange={(value) => handleFilterChange(\"processingStatus\", value)}\n placeholder=\"Select processing status\"\n options={[\n { value: \"processing\", label: \"Processing\" },\n { value: \"completed\", label: \"Completed\" },\n { value: \"error\", label: \"Error\" }\n ]}\n />\n\n <EnhancedSelect\n label=\"Direction\"\n value={filters.direction}\n onValueChange={(value) => handleFilterChange(\"direction\", value)}\n placeholder=\"Select direction\"\n options={[\n { value: \"credit\", label: \"Credit\" },\n { value: \"debit\", label: \"Debit\" }\n ]}\n />\n\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedInput\n label=\"Min Amount\"\n type=\"number\"\n value={filters.minAmount}\n onChange={(e) => handleFilterChange(\"minAmount\", e.target.value)}\n placeholder=\"0.00\"\n />\n\n <EnhancedInput\n label=\"Max Amount\"\n type=\"number\"\n value={filters.maxAmount}\n onChange={(e) => handleFilterChange(\"maxAmount\", e.target.value)}\n placeholder=\"0.00\"\n />\n </div>\n\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Creation Date Start</label>\n <DatePicker\n date={filters.creationDateStart}\n onDateChange={(date) => handleFilterChange(\"creationDateStart\", date)}\n placeholder=\"MM/DD/YYYY\"\n buttonClassName=\"w-full\"\n className=\"bg-background z-50\"\n />\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Creation Date End</label>\n <DatePicker\n date={filters.creationDateEnd}\n onDateChange={(date) => handleFilterChange(\"creationDateEnd\", date)}\n placeholder=\"MM/DD/YYYY\"\n buttonClassName=\"w-full\"\n className=\"bg-background z-50\"\n />\n </div>\n </div>\n\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Post Date Start</label>\n <DatePicker\n date={filters.postDateStart}\n onDateChange={(date) => handleFilterChange(\"postDateStart\", date)}\n placeholder=\"MM/DD/YYYY\"\n buttonClassName=\"w-full\"\n className=\"bg-background z-50\"\n />\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Post Date End</label>\n <DatePicker\n date={filters.postDateEnd}\n onDateChange={(date) => handleFilterChange(\"postDateEnd\", date)}\n placeholder=\"MM/DD/YYYY\"\n buttonClassName=\"w-full\"\n className=\"bg-background z-50\"\n />\n </div>\n </div>\n </div>\n\n <SheetFooter className=\"gap-2\">\n <Button variant=\"outline\" onClick={resetFilters}>\n Reset Filters\n </Button>\n <Button onClick={applyFilters}>\n Apply Filters\n </Button>\n </SheetFooter>\n </SheetContent>\n </Sheet>\n </div>\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-hidden\">\n <div className=\"container mx-auto px-4 h-full max-w-none flex flex-col\">\n <div className=\"flex-1 mt-4 rounded-lg border bg-card overflow-hidden flex flex-col\">\n <div className=\"flex-1 overflow-auto\">\n <table className=\"w-full table-fixed\">\n <colgroup>\n <col className=\"w-28\" />\n <col className=\"w-28\" />\n <col className=\"w-24\" />\n <col className=\"w-36\" />\n <col className=\"w-36\" />\n <col className=\"w-auto\" />\n <col className=\"w-36\" />\n <col className=\"w-24\" />\n <col className=\"w-28\" />\n </colgroup>\n <thead className=\"sticky top-0 bg-card z-10 shadow-sm\">\n <tr className=\"border-b\">\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Created</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Account Number</th>\n <th className=\"px-3 py-2 text-right text-xs font-medium bg-muted/50\">Amount</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Customer</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Counterparty</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Description</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Transaction Type</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Status</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Updated</th>\n </tr>\n </thead>\n <tbody>\n {paginatedTransactions.map((transaction) => (\n <tr \n key={transaction.id} \n onClick={() => navigate(`/transactions/${transaction.id}`)}\n className=\"border-b hover:bg-muted/50 transition-colors cursor-pointer\"\n >\n <td className=\"px-3 py-2 text-xs\">{transaction.created}</td>\n <td className=\"px-3 py-2 text-xs\">{transaction.accountNumber}</td>\n <td className=\"px-3 py-2 text-xs text-right\">\n <span className={transaction.amount < 0 ? \"text-destructive\" : \"\"}>\n {formatCurrency(transaction.amount)}\n </span>\n </td>\n <td className=\"px-3 py-2\">\n <Button variant=\"link\" className=\"h-auto p-0 font-normal text-xs\">\n {transaction.customer}\n </Button>\n </td>\n <td className=\"px-3 py-2\">\n <Button variant=\"link\" className=\"h-auto p-0 font-normal text-xs\">\n {transaction.counterparty}\n </Button>\n </td>\n <td className=\"px-3 py-2 text-xs truncate\">{transaction.description}</td>\n <td className=\"px-3 py-2\">\n <Badge variant=\"outline\" className=\"font-normal whitespace-nowrap text-xs\">\n {transaction.transactionType}\n </Badge>\n </td>\n <td className=\"px-3 py-2\">\n <StatusBadge status={transaction.status} />\n </td>\n <td className=\"px-3 py-2 text-xs\">{transaction.updated}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n \n {/* Pagination Footer */}\n <div className=\"flex-none border-t bg-background py-3 px-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">Rows per page:</span>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 gap-1\">\n {rowsPerPage}\n <ChevronRight className=\"h-4 w-4 rotate-90\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"bg-background z-50\">\n <DropdownMenuItem onClick={() => handleRowsPerPageChange(100)}>\n 100\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => handleRowsPerPageChange(200)}>\n 200\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => handleRowsPerPageChange(500)}>\n 500\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n\n <div className=\"flex items-center gap-4\">\n <span className=\"text-sm text-muted-foreground\">\n Page {currentPage} of {totalPages}\n </span>\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => handlePageChange(currentPage - 1)}\n disabled={currentPage === 1}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => handlePageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default TransactionHistory\n","import { useState } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { FormCard } from \"@/components/ui/form-card\"\nimport { Button } from \"@/components/ui/button\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from \"@/components/ui/dialog\"\nimport { useForm } from \"react-hook-form\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { z } from \"zod\"\nimport { ArrowLeftRight, Settings, Building2, Zap, Search, CheckCircle2, XCircle, AlertCircle, Edit } from \"lucide-react\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\nimport { Controller } from \"react-hook-form\"\nimport { toast } from \"sonner\"\nimport { cn } from \"@/lib/utils\"\n\nconst newTransactionSchema = z.object({\n transactionType: z.string().min(1, \"Transaction type is required\"),\n accountNumber: z.string().min(1, \"Account number is required\"),\n counterpartyName: z.string().min(1, \"Counterparty name is required\"),\n amount: z.string().min(1, \"Amount is required\"),\n currency: z.string().min(1, \"Currency is required\"),\n description: z.string().optional(),\n certifyInformation: z.boolean().refine(val => val === true, {\n message: \"You must certify the information is correct\"\n }),\n})\n\ntype NewTransactionForm = z.infer<typeof newTransactionSchema>\n\nconst TRANSACTION_TYPES = [\n { value: \"transfer\", label: \"Transfer\", icon: ArrowLeftRight },\n { value: \"adjustment\", label: \"Adjustment\", icon: Settings },\n { value: \"ach\", label: \"ACH\", icon: Building2 },\n { value: \"wire\", label: \"Wire\", icon: Zap },\n]\n\nconst CURRENCY_OPTIONS = [\n { value: \"USD\", label: \"USD - US Dollar\" },\n { value: \"EUR\", label: \"EUR - Euro\" },\n { value: \"GBP\", label: \"GBP - British Pound\" },\n { value: \"JPY\", label: \"JPY - Japanese Yen\" },\n { value: \"CAD\", label: \"CAD - Canadian Dollar\" },\n { value: \"AUD\", label: \"AUD - Australian Dollar\" },\n { value: \"CHF\", label: \"CHF - Swiss Franc\" },\n { value: \"CNY\", label: \"CNY - Chinese Yuan\" },\n]\n\n// Mock account data - would come from API in real app\nconst mockAccountData = {\n accountNumber: \"****1234\",\n accountName: \"Business Checking\",\n accountType: \"Checking\",\n balance: \"$125,450.00\",\n customerName: \"Acme Corporation\",\n customerId: \"CUST-001\",\n customerType: \"Business\",\n}\n\n// Mock counterparty data - would come from API in real app\nconst mockCounterpartyData = {\n counterpartyName: \"Global Tech Solutions Inc.\",\n counterpartyId: \"CP-5678\",\n counterpartyType: \"Business\",\n status: \"Active\",\n taxId: \"98-7654321\",\n primaryContact: \"Sarah Johnson\",\n contactEmail: \"sarah.johnson@globaltech.com\",\n contactPhone: \"+1 (555) 987-6543\",\n address: \"456 Innovation Drive, San Francisco, CA 94105\",\n}\n\nexport default function NewTransaction() {\n const navigate = useNavigate()\n const [accountLookedUp, setAccountLookedUp] = useState(false)\n const [accountData, setAccountData] = useState<typeof mockAccountData | null>(null)\n const [counterpartyLookedUp, setCounterpartyLookedUp] = useState(false)\n const [counterpartyData, setCounterpartyData] = useState<typeof mockCounterpartyData | null>(null)\n const [confirmationOpen, setConfirmationOpen] = useState(false)\n const [submissionStatus, setSubmissionStatus] = useState<\"success\" | \"error\" | null>(null)\n const [errorMessage, setErrorMessage] = useState(\"\")\n const [transactionId, setTransactionId] = useState(\"\")\n\n const form = useForm<NewTransactionForm>({\n resolver: zodResolver(newTransactionSchema),\n defaultValues: {\n transactionType: \"\",\n accountNumber: \"\",\n counterpartyName: \"\",\n amount: \"\",\n currency: \"USD\",\n description: \"\",\n certifyInformation: false,\n },\n })\n\n const transactionType = form.watch(\"transactionType\")\n const accountNumber = form.watch(\"accountNumber\")\n const counterpartyName = form.watch(\"counterpartyName\")\n const amount = form.watch(\"amount\")\n\n const handleAccountLookup = () => {\n const accNum = form.getValues(\"accountNumber\")\n if (!accNum) {\n toast.error(\"Please enter an account number\")\n return\n }\n // Simulate account lookup\n setAccountData(mockAccountData)\n setAccountLookedUp(true)\n toast.success(\"Account found\")\n }\n\n const handleCounterpartyLookup = () => {\n const cpName = form.getValues(\"counterpartyName\")\n if (!cpName) {\n toast.error(\"Please enter a counterparty name\")\n return\n }\n // Simulate counterparty lookup\n setCounterpartyData(mockCounterpartyData)\n setCounterpartyLookedUp(true)\n toast.success(\"Counterparty found\")\n }\n\n const handleEditAccount = () => {\n setAccountLookedUp(false)\n setAccountData(null)\n // Reset dependent sections\n form.setValue(\"transactionType\", \"\")\n setCounterpartyLookedUp(false)\n setCounterpartyData(null)\n form.setValue(\"counterpartyName\", \"\")\n form.setValue(\"amount\", \"\")\n form.setValue(\"description\", \"\")\n }\n\n const handleEditCounterparty = () => {\n setCounterpartyLookedUp(false)\n setCounterpartyData(null)\n // Reset dependent sections\n form.setValue(\"amount\", \"\")\n form.setValue(\"description\", \"\")\n }\n\n const handleSubmit = () => {\n const data = form.getValues()\n \n if (!data.transactionType || !data.accountNumber || !data.counterpartyName || !data.amount) {\n toast.error(\"Please complete all required fields\")\n return\n }\n\n if (!accountLookedUp || !counterpartyLookedUp) {\n toast.error(\"Please lookup both account and counterparty\")\n return\n }\n \n // Simulate transaction processing with random success/failure\n const amount = parseFloat(data.amount)\n const balance = 125450 // Current balance from mock data\n \n // Simulate different error scenarios\n const hasError = Math.random() > 0.7 // 30% chance of error for demo\n \n if (hasError) {\n const errorScenarios = [\n \"Insufficient funds. Current balance: $125,450.00, Required: $\" + amount.toFixed(2),\n \"Transaction limit exceeded. Daily limit: $50,000.00\",\n \"Counterparty account is temporarily unavailable. Please try again later.\",\n \"Invalid routing number for the selected transaction type.\"\n ]\n setSubmissionStatus(\"error\")\n setErrorMessage(errorScenarios[Math.floor(Math.random() * errorScenarios.length)])\n setConfirmationOpen(true)\n } else {\n // Success scenario\n const txId = \"TXN-\" + Math.random().toString(36).substr(2, 9).toUpperCase()\n setTransactionId(txId)\n setSubmissionStatus(\"success\")\n setConfirmationOpen(true)\n }\n }\n\n const handleConfirmationClose = () => {\n setConfirmationOpen(false)\n if (submissionStatus === \"success\") {\n navigate(\"/transactions/history\")\n }\n }\n\n const handleCancel = () => {\n navigate(\"/dashboard\")\n }\n\n const accountDataGrid = accountData ? [\n {\n title: \"Account Information\",\n items: [\n { label: \"Account Number\", value: accountData.accountNumber },\n { label: \"Account Name\", value: accountData.accountName },\n { label: \"Account Type\", value: accountData.accountType },\n { label: \"Balance\", value: accountData.balance },\n { label: \"Customer Name\", value: accountData.customerName },\n { label: \"Customer ID\", value: accountData.customerId },\n ]\n }\n ] : []\n\n const counterpartyDataGrid = counterpartyData ? [\n {\n title: \"Counterparty Information\",\n items: [\n { label: \"Counterparty Name\", value: counterpartyData.counterpartyName },\n { label: \"Counterparty ID\", value: counterpartyData.counterpartyId },\n { label: \"Type\", value: counterpartyData.counterpartyType },\n { label: \"Status\", value: counterpartyData.status },\n { label: \"Tax ID\", value: counterpartyData.taxId },\n { label: \"Primary Contact\", value: counterpartyData.primaryContact },\n { label: \"Contact Email\", value: counterpartyData.contactEmail },\n { label: \"Contact Phone\", value: counterpartyData.contactPhone },\n { label: \"Address\", value: counterpartyData.address },\n ]\n }\n ] : []\n\n const reviewData = [\n {\n title: \"Transaction Summary\",\n items: [\n { label: \"Transaction Type\", value: TRANSACTION_TYPES.find(t => t.value === transactionType)?.label || \"-\" },\n { label: \"Account Number\", value: accountNumber || \"-\" },\n { label: \"Counterparty\", value: counterpartyName || \"-\" },\n { label: \"Amount\", value: amount ? `$${amount}` : \"-\" },\n { label: \"Description\", value: form.watch(\"description\") || \"N/A\" },\n ]\n }\n ]\n\n return (\n <PageLayout\n title=\"New Transaction\"\n >\n <div className=\"max-w-4xl mx-auto space-y-6\">\n <FormProvider form={form}>\n <form onSubmit={(e) => e.preventDefault()}>\n {/* Account Lookup */}\n {!accountLookedUp ? (\n <FormCard \n title=\"Account Lookup\" \n variant=\"default\"\n >\n <div className=\"flex gap-3 items-start w-full\">\n <div className=\"flex-1\">\n <FormInput\n name=\"accountNumber\"\n placeholder=\"Enter account number\"\n />\n </div>\n <Button \n onClick={handleAccountLookup} \n disabled={!accountNumber}\n className=\"shrink-0 mt-0 w-48\"\n >\n <Search className=\"h-4 w-4 mr-2\" />\n Lookup Account\n </Button>\n </div>\n </FormCard>\n ) : (\n /* Account Information (Read-only) */\n <FormCard \n title=\"Account Information\" \n variant=\"subtle\"\n headerActions={\n <div className=\"flex items-center gap-2\">\n <CheckCircle2 className=\"h-5 w-5 text-success\" />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleEditAccount}\n >\n <Edit className=\"h-4 w-4 mr-1\" />\n Edit\n </Button>\n </div>\n }\n >\n <DataGrid data={accountDataGrid} columns={2} />\n </FormCard>\n )}\n\n {/* Transaction Type Selection */}\n <FormCard \n title=\"Transaction Type\" \n variant=\"default\"\n className={cn(!accountLookedUp && \"opacity-50 pointer-events-none\")}\n >\n <div className=\"grid grid-cols-2 lg:grid-cols-4 gap-3 lg:gap-4\">\n {TRANSACTION_TYPES.map((type) => {\n const Icon = type.icon\n const isSelected = transactionType === type.value\n return (\n <button\n key={type.value}\n type=\"button\"\n onClick={() => form.setValue(\"transactionType\", type.value)}\n disabled={!accountLookedUp}\n className={cn(\n \"flex flex-col items-center justify-center p-4 lg:p-3 rounded-lg border-2 transition-all\",\n \"hover:border-primary/50 hover:shadow-md\",\n isSelected\n ? \"border-primary bg-primary/5 shadow-sm\"\n : \"border-border bg-card\"\n )}\n >\n <Icon className={cn(\n \"h-6 w-6 lg:h-5 lg:w-5 mb-2\",\n isSelected ? \"text-primary\" : \"text-muted-foreground\"\n )} />\n <span className={cn(\n \"text-sm font-medium\",\n isSelected ? \"text-primary\" : \"text-foreground\"\n )}>\n {type.label}\n </span>\n </button>\n )\n })}\n </div>\n </FormCard>\n\n {/* Counterparty Lookup */}\n {!counterpartyLookedUp ? (\n <FormCard \n title=\"Counterparty Lookup\" \n variant=\"default\"\n className={cn(!transactionType && \"opacity-50 pointer-events-none\")}\n >\n <div className=\"flex gap-3 items-start w-full\">\n <div className=\"flex-1\">\n <FormInput\n name=\"counterpartyName\"\n placeholder=\"Enter counterparty name\"\n disabled={!transactionType}\n />\n </div>\n <Button \n onClick={handleCounterpartyLookup} \n disabled={!transactionType || !counterpartyName}\n className=\"shrink-0 mt-0 w-48\"\n >\n <Search className=\"h-4 w-4 mr-2\" />\n Lookup Counterparty\n </Button>\n </div>\n </FormCard>\n ) : (\n /* Counterparty Information (Read-only) */\n <FormCard \n title=\"Counterparty Information\" \n variant=\"subtle\"\n headerActions={\n <div className=\"flex items-center gap-2\">\n <CheckCircle2 className=\"h-5 w-5 text-success\" />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleEditCounterparty}\n >\n <Edit className=\"h-4 w-4 mr-1\" />\n Edit\n </Button>\n </div>\n }\n >\n <DataGrid data={counterpartyDataGrid} columns={2} />\n </FormCard>\n )}\n\n {/* Transaction Details */}\n <FormCard \n title=\"Transaction Details\" \n variant=\"default\"\n className={cn(!counterpartyLookedUp && \"opacity-50 pointer-events-none\")}\n >\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-1 sm:grid-cols-[1fr_auto] gap-4\">\n <FormInput\n name=\"amount\"\n label=\"Amount\"\n placeholder=\"0.00\"\n type=\"number\"\n disabled={!counterpartyLookedUp}\n />\n <FormSelect\n name=\"currency\"\n label=\"Currency\"\n options={CURRENCY_OPTIONS}\n disabled={!counterpartyLookedUp}\n className=\"w-48\"\n />\n </div>\n <FormInput\n name=\"description\"\n label=\"Description (Optional)\"\n placeholder=\"Enter transaction description\"\n disabled={!counterpartyLookedUp}\n />\n </div>\n </FormCard>\n\n {/* Review Summary */}\n <FormCard \n title=\"Review & Submit\" \n variant=\"default\"\n >\n <div className=\"space-y-6\">\n <DataGrid data={reviewData} columns={2} />\n \n {/* Certification Checkbox */}\n <div className=\"bg-muted/30 rounded-lg p-4 border border-border/50\">\n <Controller\n name=\"certifyInformation\"\n control={form.control}\n render={({ field }) => (\n <div className=\"space-y-2\">\n <div className=\"flex items-start gap-3\">\n <Checkbox\n id=\"certifyInformation\"\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n <label\n htmlFor=\"certifyInformation\"\n className=\"text-sm font-medium leading-relaxed cursor-pointer select-none\"\n >\n I certify that all information entered is correct and accurate to the best of my knowledge\n </label>\n </div>\n {form.formState.errors.certifyInformation && (\n <p className=\"text-xs text-destructive ml-7\">\n {form.formState.errors.certifyInformation.message}\n </p>\n )}\n </div>\n )}\n />\n </div>\n \n <div className=\"flex gap-3 justify-end pt-4 border-t border-border\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handleCancel}\n className=\"w-32\"\n >\n Cancel\n </Button>\n <Button\n type=\"button\"\n onClick={handleSubmit}\n className=\"w-48\"\n disabled={!transactionType || !accountNumber || !counterpartyName || !amount || !form.watch(\"certifyInformation\")}\n >\n <CheckCircle2 className=\"h-4 w-4 mr-2\" />\n Submit Transaction\n </Button>\n </div>\n </div>\n </FormCard>\n </form>\n </FormProvider>\n\n {/* Confirmation Dialog */}\n <Dialog open={confirmationOpen} onOpenChange={setConfirmationOpen}>\n <DialogContent className=\"sm:max-w-md\">\n <DialogHeader>\n <div className=\"flex items-center gap-3 mb-2\">\n {submissionStatus === \"success\" ? (\n <div className=\"h-12 w-12 rounded-full bg-success/10 flex items-center justify-center\">\n <CheckCircle2 className=\"h-6 w-6 text-success\" />\n </div>\n ) : (\n <div className=\"h-12 w-12 rounded-full bg-destructive/10 flex items-center justify-center\">\n <XCircle className=\"h-6 w-6 text-destructive\" />\n </div>\n )}\n <DialogTitle className=\"text-xl\">\n {submissionStatus === \"success\" ? \"Transaction Successful\" : \"Transaction Failed\"}\n </DialogTitle>\n </div>\n <DialogDescription className=\"text-left\">\n {submissionStatus === \"success\" ? (\n <div className=\"space-y-4 pt-2\">\n <p className=\"text-foreground\">Your transaction has been successfully submitted and is being processed.</p>\n <div className=\"bg-muted/50 rounded-lg p-4 space-y-2\">\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Transaction ID:</span>\n <span className=\"font-mono font-medium\">{transactionId}</span>\n </div>\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Amount:</span>\n <span className=\"font-medium\">${amount}</span>\n </div>\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Type:</span>\n <span className=\"font-medium\">{TRANSACTION_TYPES.find(t => t.value === transactionType)?.label}</span>\n </div>\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Counterparty:</span>\n <span className=\"font-medium\">{counterpartyName}</span>\n </div>\n </div>\n <div className=\"flex items-start gap-2 p-3 bg-blue-500/10 border border-blue-500/20 rounded-lg\">\n <AlertCircle className=\"h-5 w-5 text-blue-500 mt-0.5 flex-shrink-0\" />\n <p className=\"text-sm text-blue-700 dark:text-blue-300\">\n You will receive a confirmation email once the transaction is completed.\n </p>\n </div>\n </div>\n ) : (\n <div className=\"space-y-4 pt-2\">\n <div className=\"flex items-start gap-2 p-4 bg-destructive/10 border border-destructive/20 rounded-lg\">\n <XCircle className=\"h-5 w-5 text-destructive mt-0.5 flex-shrink-0\" />\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium text-destructive\">Error Processing Transaction</p>\n <p className=\"text-sm text-muted-foreground\">{errorMessage}</p>\n </div>\n </div>\n <p className=\"text-sm text-muted-foreground\">\n Please review the error message above and try again. If the problem persists, contact support.\n </p>\n </div>\n )}\n </DialogDescription>\n </DialogHeader>\n <DialogFooter className=\"sm:justify-end gap-2\">\n {submissionStatus === \"error\" && (\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => setConfirmationOpen(false)}\n >\n Try Again\n </Button>\n )}\n <Button\n type=\"button\"\n onClick={handleConfirmationClose}\n variant={submissionStatus === \"success\" ? \"default\" : \"outline\"}\n >\n {submissionStatus === \"success\" ? \"View Transactions\" : \"Close\"}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </div>\n </PageLayout>\n )\n}\n","import { useParams, useNavigate } from \"react-router-dom\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { FormCard } from \"@/components/ui/form-card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { mockTransactions } from \"@/lib/mock-data/transaction-data\"\nimport { mockTransactionTimeline } from \"@/lib/mock-data/transaction-data\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { AlertTimeline } from \"@/components/alerts/AlertTimeline\"\nimport { cn } from \"@/lib/utils\"\nimport { WireDetailsSection } from \"@/components/transaction/WireDetailsSection\"\nimport { ACHDetailsSection } from \"@/components/transaction/ACHDetailsSection\"\nimport { TransactionTypeBadge } from \"@/components/ui/transaction-type-badge\"\n\nconst TransactionDetail = () => {\n const { id } = useParams()\n const navigate = useNavigate()\n \n const transaction = mockTransactions.find(t => t.id === id)\n \n if (!transaction) {\n return (\n <div className=\"container mx-auto px-4 py-8\">\n <div className=\"text-center\">\n <h1 className=\"text-2xl font-bold mb-2\">Transaction Not Found</h1>\n <p className=\"text-muted-foreground mb-4\">The transaction #{id} could not be found.</p>\n <Button onClick={() => navigate(\"/transactions/history\")}>\n Back to Transaction History\n </Button>\n </div>\n </div>\n )\n }\n\n const getStatusColor = (status: string) => {\n switch (status) {\n case \"POSTED\":\n return \"text-success\"\n case \"PENDING\":\n return \"text-warning\"\n case \"FAILED\":\n return \"text-destructive\"\n case \"CANCELLED\":\n return \"text-muted-foreground\"\n default:\n return \"\"\n }\n }\n\n const getStatusVariant = (status: string): any => {\n switch (status) {\n case \"POSTED\":\n return \"success\"\n case \"PENDING\":\n return \"warning\"\n case \"FAILED\":\n return \"destructive\"\n case \"CANCELLED\":\n return \"outline\"\n default:\n return \"outline\"\n }\n }\n\n const getProcessingStatusVariant = (status: string): any => {\n switch (status) {\n case \"CONFIRMED\":\n return \"success\"\n case \"SENT\":\n return \"success\"\n case \"SUBMITTED\":\n return \"warning\"\n case \"CUSTOMER_REVIEW\":\n return \"warning\"\n case \"MANUAL_REVIEW\":\n return \"warning\"\n case \"INITIATED\":\n return \"outline\"\n default:\n return \"outline\"\n }\n }\n\n const formatCurrency = (value: number) => {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2\n }).format(value)\n }\n\n const isWireTransfer = transaction.transactionType.toLowerCase().includes('wire')\n const isACHTransfer = transaction.transactionType.toLowerCase().includes('ach')\n\n return (\n <PageLayout \n title={\n <div className=\"flex items-center gap-3\">\n <span className={cn(\n \"font-semibold\",\n transaction.amount < 0 ? \"text-destructive\" : \"text-success\"\n )}>\n {formatCurrency(transaction.amount)}\n </span>\n <TransactionTypeBadge \n transactionType={transaction.transactionType} \n isInbound={transaction.isInbound} \n />\n <Badge variant={getStatusVariant(transaction.status)}>{transaction.status}</Badge>\n <Badge variant={getProcessingStatusVariant(transaction.processingStatus)}>{transaction.processingStatus}</Badge>\n </div>\n }\n maxWidth=\"full\"\n actions={[\n {\n label: \"Return\",\n variant: \"outline\",\n onClick: () => console.log(\"Return transaction\")\n },\n {\n label: \"Cancel\",\n variant: \"default\",\n onClick: () => console.log(\"Cancel transaction\")\n }\n ]}\n >\n {/* 3-Column Layout: Left section with cards, Timeline on Right */}\n <div className=\"flex flex-col lg:flex-row items-start gap-6\">\n {/* Left Section: Transaction cards */}\n <div className=\"flex-1 space-y-6\">\n {/* Transaction Information */}\n <FormCard title=\"Details\">\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-x-8 gap-y-4\">\n <InfoField \n label=\"Account Number\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {transaction.accountNumber}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField \n label=\"Customer\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {transaction.customer}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Description\" value={transaction.description} layout=\"horizontal\" />\n <InfoField \n label=\"Counterparty\" \n value={\n <Button variant=\"link\" className=\"h-auto p-0 text-sm\">\n {transaction.counterparty}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Post Date\" value={transaction.created.split(' ')[0]} layout=\"horizontal\" />\n <InfoField label=\"OFAC ID\" value={<Button variant=\"link\" className=\"h-auto p-0 text-sm\">18323208</Button>} layout=\"horizontal\" />\n <InfoField label=\"Original Filename\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Loaded From File\" value=\"iso21130757012764355B7.xml.126534273Q299\" layout=\"horizontal\" />\n <InfoField label=\"Payment ID\" value={transaction.id} layout=\"horizontal\" />\n <InfoField label=\"Linked Payment ID\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Pending until Date\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Further Credit To\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Balance Available Date\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Requester Username\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Requester IP Address\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Settlement Filename\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Duplicate of Payment ID\" value=\"-\" layout=\"horizontal\" />\n <InfoField \n label=\"Product ID\" \n value={<Button variant=\"link\" className=\"h-auto p-0 text-sm\">130</Button>}\n layout=\"horizontal\"\n />\n <InfoField label=\"Returned In File\" value=\"-\" layout=\"horizontal\" />\n <InfoField label=\"Alerts\" value=\"-\" layout=\"horizontal\" />\n </div>\n </FormCard>\n\n {/* ACH or Wire Details */}\n {isACHTransfer && transaction.achDetails && (\n <ACHDetailsSection data={transaction.achDetails} />\n )}\n \n {isWireTransfer && transaction.wireDetails && (\n <WireDetailsSection data={transaction.wireDetails} />\n )}\n </div>\n\n {/* Right Section: Timeline Column */}\n <div className=\"lg:w-64\">\n <FormCard title=\"Transaction Timeline\">\n <AlertTimeline events={mockTransactionTimeline} />\n </FormCard>\n </div>\n </div>\n </PageLayout>\n )\n}\n\nexport default TransactionDetail\n","import * as React from \"react\"\nimport { Container } from \"@/components/ui/container\"\nimport { Stack } from \"@/components/ui/stack\"\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\"\nimport { UIKitShowcase } from \"@/components/ui-kit/showcase\"\nimport { PatternLibrary } from \"@/components/ui-kit/pattern-library\"\nimport { DashboardDemo } from \"@/components/ui-kit/dashboard-demo\"\nimport { Breadcrumb } from \"@/components/ui/breadcrumb\"\n\nexport default function UIKit() {\n const breadcrumbs = [\n { label: \"UI Kit\" }\n ]\n\n return (\n <div className=\"min-h-screen bg-gradient-subtle\">\n <Container size=\"xl\">\n <Stack spacing=\"lg\">\n <Breadcrumb items={breadcrumbs} />\n \n <div>\n <h1 className=\"text-3xl font-bold text-foreground\">UI Kit</h1>\n <p className=\"text-muted-foreground mt-2\">\n Complete collection of reusable components, layouts, and patterns\n </p>\n </div>\n\n <Tabs defaultValue=\"showcase\" className=\"w-full\">\n <TabsList className=\"grid w-full grid-cols-3\">\n <TabsTrigger value=\"showcase\">Component Showcase</TabsTrigger>\n <TabsTrigger value=\"patterns\">Pattern Library</TabsTrigger>\n <TabsTrigger value=\"demo\">Dashboard Demo</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"showcase\" className=\"mt-6\">\n <UIKitShowcase />\n </TabsContent>\n\n <TabsContent value=\"patterns\" className=\"mt-6\">\n <PatternLibrary />\n </TabsContent>\n\n <TabsContent value=\"demo\" className=\"mt-6\">\n <DashboardDemo />\n </TabsContent>\n </Tabs>\n </Stack>\n </Container>\n </div>\n )\n}"]}