braid-ui 1.0.38 → 1.0.39

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.cjs CHANGED
@@ -22,11 +22,11 @@ var TooltipPrimitive = require('@radix-ui/react-tooltip');
22
22
  var dateFns = require('date-fns');
23
23
  var reactDayPicker = require('react-day-picker');
24
24
  var PopoverPrimitive = require('@radix-ui/react-popover');
25
+ var sonner = require('sonner');
25
26
  var LabelPrimitive = require('@radix-ui/react-label');
26
27
  var CheckboxPrimitive = require('@radix-ui/react-checkbox');
27
28
  var DropdownMenuPrimitive = require('@radix-ui/react-dropdown-menu');
28
29
  var nextThemes = require('next-themes');
29
- var sonner = require('sonner');
30
30
  var TabsPrimitive = require('@radix-ui/react-tabs');
31
31
  var ToastPrimitives = require('@radix-ui/react-toast');
32
32
 
@@ -556,8 +556,8 @@ var reducer = (state, action) => {
556
556
  if (toastId) {
557
557
  addToRemoveQueue(toastId);
558
558
  } else {
559
- state.toasts.forEach((toast4) => {
560
- addToRemoveQueue(toast4.id);
559
+ state.toasts.forEach((toast5) => {
560
+ addToRemoveQueue(toast5.id);
561
561
  });
562
562
  }
563
563
  return {
@@ -3588,24 +3588,26 @@ var BusinessProfileCard = ({
3588
3588
  }
3589
3589
  )
3590
3590
  ] }),
3591
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: /* @__PURE__ */ jsxRuntime.jsx(
3592
- FormInput,
3593
- {
3594
- name: "achCompanyId",
3595
- label: "ACH Company ID",
3596
- placeholder: "10-digit company ID"
3597
- }
3598
- ) }),
3599
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: /* @__PURE__ */ jsxRuntime.jsx(
3600
- FormInput,
3601
- {
3602
- name: "productId",
3603
- label: "Product ID",
3604
- type: "number",
3605
- placeholder: "Product ID",
3606
- disabled: true
3607
- }
3608
- ) }),
3591
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
3592
+ /* @__PURE__ */ jsxRuntime.jsx(
3593
+ FormInput,
3594
+ {
3595
+ name: "achCompanyId",
3596
+ label: "ACH Company ID",
3597
+ placeholder: "10-digit company ID"
3598
+ }
3599
+ ),
3600
+ /* @__PURE__ */ jsxRuntime.jsx(
3601
+ FormInput,
3602
+ {
3603
+ name: "productId",
3604
+ label: "Product ID",
3605
+ type: "number",
3606
+ placeholder: "Product ID",
3607
+ disabled: true
3608
+ }
3609
+ )
3610
+ ] }),
3609
3611
  /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-medium text-muted-foreground mt-6", children: "Contact Person" }),
3610
3612
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
3611
3613
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3664,6 +3666,34 @@ var BusinessProfileCard = ({
3664
3666
  /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Website", value: formValues?.website || "-", layout: "horizontal" })
3665
3667
  ] }),
3666
3668
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-4", children: /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Business Phone", value: formValues?.mobilePhone || "-", layout: "horizontal" }) }),
3669
+ /* @__PURE__ */ jsxRuntime.jsx(
3670
+ InfoField,
3671
+ {
3672
+ label: "Address",
3673
+ value: formValues?.address ? (() => {
3674
+ const parts = [];
3675
+ if (formValues.address.line1) parts.push(formValues.address.line1);
3676
+ if (formValues.address.line2) parts.push(formValues.address.line2);
3677
+ const cityStateZip = [
3678
+ formValues.address.city,
3679
+ formValues.address.state,
3680
+ formValues.address.postalCode
3681
+ ].filter(Boolean).join(" ");
3682
+ if (cityStateZip) parts.push(cityStateZip);
3683
+ if (formValues.address.countryCode) parts.push(formValues.address.countryCode);
3684
+ return parts.length > 0 ? parts.join(", ") : "-";
3685
+ })() : "-",
3686
+ layout: "horizontal"
3687
+ }
3688
+ ),
3689
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
3690
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "MCC", value: formValues?.mcc || "-", layout: "horizontal" }),
3691
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "NAICS", value: formValues?.naics || "-", layout: "horizontal" })
3692
+ ] }),
3693
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
3694
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "ACH Company ID", value: formValues?.achCompanyId || "-", layout: "horizontal" }),
3695
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Product ID", value: formValues?.productId?.toString() || "-", layout: "horizontal" })
3696
+ ] }),
3667
3697
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
3668
3698
  /* @__PURE__ */ jsxRuntime.jsx(
3669
3699
  InfoField,
@@ -3689,32 +3719,6 @@ var BusinessProfileCard = ({
3689
3719
  }
3690
3720
  )
3691
3721
  ] }),
3692
- /* @__PURE__ */ jsxRuntime.jsx(
3693
- InfoField,
3694
- {
3695
- label: "Address",
3696
- value: formValues?.address ? (() => {
3697
- const parts = [];
3698
- if (formValues.address.line1) parts.push(formValues.address.line1);
3699
- if (formValues.address.line2) parts.push(formValues.address.line2);
3700
- const cityStateZip = [
3701
- formValues.address.city,
3702
- formValues.address.state,
3703
- formValues.address.postalCode
3704
- ].filter(Boolean).join(" ");
3705
- if (cityStateZip) parts.push(cityStateZip);
3706
- if (formValues.address.countryCode) parts.push(formValues.address.countryCode);
3707
- return parts.length > 0 ? parts.join(", ") : "-";
3708
- })() : "-",
3709
- layout: "horizontal"
3710
- }
3711
- ),
3712
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
3713
- /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "MCC", value: formValues?.mcc || "-", layout: "horizontal" }),
3714
- /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "NAICS", value: formValues?.naics || "-", layout: "horizontal" })
3715
- ] }),
3716
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-4", children: /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "ACH Company ID", value: formValues?.achCompanyId || "-", layout: "horizontal" }) }),
3717
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-4", children: /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Product ID", value: formValues?.productId?.toString() || "-", layout: "horizontal" }) }),
3718
3722
  /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-medium text-muted-foreground mt-6", children: "Contact Person" }),
3719
3723
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
3720
3724
  /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "First Name", value: formValues?.contactPersonFirstName || "-", layout: "horizontal" }),
@@ -4288,93 +4292,575 @@ var PageLayout = React15__namespace.forwardRef(
4288
4292
  }
4289
4293
  );
4290
4294
  PageLayout.displayName = "PageLayout";
4291
- var UBOCard = ({ ubos, onUBOClick }) => {
4292
- const columns3 = [
4293
- {
4294
- key: "name",
4295
- title: "Name",
4296
- sortable: true,
4297
- width: "40%",
4298
- render: (value, row) => /* @__PURE__ */ jsxRuntime.jsx(
4299
- "button",
4300
- {
4301
- onClick: () => onUBOClick(row.customerId),
4302
- className: "text-primary hover:underline font-medium text-left",
4303
- children: value
4304
- }
4305
- )
4306
- },
4307
- {
4308
- key: "title",
4309
- title: "Title",
4310
- sortable: true,
4311
- width: "40%"
4312
- },
4313
- {
4314
- key: "ownershipPercentage",
4315
- title: "Ownership %",
4316
- sortable: true,
4317
- width: "20%",
4318
- align: "right",
4319
- render: (value) => `${value}%`
4320
- }
4321
- ];
4322
- return /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
4323
- /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-4", children: [
4324
- /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Ultimate Beneficial Owners (UBO)" }),
4325
- /* @__PURE__ */ jsxRuntime.jsxs(Button, { size: "sm", variant: "ghost", children: [
4326
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-1" }),
4327
- "Add UBO"
4328
- ] })
4329
- ] }),
4330
- /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: ubos.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 py-4 text-sm text-muted-foreground", children: [
4331
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Users, { className: "h-5 w-5 opacity-50" }),
4332
- /* @__PURE__ */ jsxRuntime.jsx("p", { children: "No UBOs recorded" })
4333
- ] }) : /* @__PURE__ */ jsxRuntime.jsx(
4334
- DataTable,
4295
+ var FormField = React15__namespace.forwardRef(
4296
+ ({ label, description, error, required, children, className, layout = "vertical" }, ref) => {
4297
+ const isHorizontal = layout === "horizontal";
4298
+ return /* @__PURE__ */ jsxRuntime.jsxs(
4299
+ "div",
4335
4300
  {
4336
- columns: columns3,
4337
- data: ubos
4301
+ ref,
4302
+ className: cn(
4303
+ "space-y-2",
4304
+ isHorizontal && "grid grid-cols-1 md:grid-cols-3 gap-4 items-start space-y-0",
4305
+ className
4306
+ ),
4307
+ children: [
4308
+ label && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-1", isHorizontal && "pt-2"), children: [
4309
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "text-sm font-medium text-foreground", children: [
4310
+ label,
4311
+ required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-destructive ml-1", children: "*" })
4312
+ ] }),
4313
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: description })
4314
+ ] }),
4315
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(isHorizontal && "md:col-span-2"), children: [
4316
+ children,
4317
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-destructive mt-1", children: error })
4318
+ ] })
4319
+ ]
4338
4320
  }
4339
- ) })
4340
- ] });
4321
+ );
4322
+ }
4323
+ );
4324
+ FormField.displayName = "FormField";
4325
+ var spacingClasses = {
4326
+ sm: "space-y-3",
4327
+ md: "space-y-4",
4328
+ lg: "space-y-6"
4341
4329
  };
4342
- var BusinessDocuments = ({ businessId, documents, onDocumentUpload }) => {
4343
- const [isUploading, setIsUploading] = React15.useState(false);
4344
- const [showUploadDialog, setShowUploadDialog] = React15.useState(false);
4345
- const [selectedFile, setSelectedFile] = React15.useState(null);
4346
- const [documentName, setDocumentName] = React15.useState("");
4347
- const [description, setDescription] = React15.useState("");
4348
- const [documentType, setDocumentType] = React15.useState("");
4349
- const handleFileSelect = (e) => {
4350
- const file = e.target.files?.[0];
4351
- if (!file) return;
4352
- setSelectedFile(file);
4353
- setDocumentName(file.name);
4354
- };
4355
- const handleUploadSubmit = async () => {
4356
- if (!selectedFile || !documentName || !documentType) {
4357
- toast({
4358
- title: "Missing Information",
4359
- description: "Please fill in all required fields",
4360
- variant: "destructive"
4361
- });
4362
- return;
4330
+ var gridClasses = {
4331
+ 1: "grid-cols-1",
4332
+ 2: "grid-cols-1 md:grid-cols-2",
4333
+ 3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3",
4334
+ 4: "grid-cols-1 md:grid-cols-2 lg:grid-cols-4"
4335
+ };
4336
+ var FormSection = React15__namespace.forwardRef(
4337
+ ({
4338
+ title,
4339
+ description,
4340
+ children,
4341
+ className,
4342
+ spacing: spacing2 = "md",
4343
+ layout = "vertical",
4344
+ columns: columns3 = 2
4345
+ }, ref) => {
4346
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: cn("space-y-4", className), children: [
4347
+ (title || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
4348
+ title && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-semibold text-foreground", children: title }),
4349
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: description })
4350
+ ] }),
4351
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(
4352
+ layout === "grid" ? `grid gap-4 ${gridClasses[columns3]}` : spacingClasses[spacing2]
4353
+ ), children })
4354
+ ] });
4355
+ }
4356
+ );
4357
+ FormSection.displayName = "FormSection";
4358
+ function Calendar({
4359
+ className,
4360
+ classNames,
4361
+ showOutsideDays = true,
4362
+ ...props
4363
+ }) {
4364
+ return /* @__PURE__ */ jsxRuntime.jsx(
4365
+ reactDayPicker.DayPicker,
4366
+ {
4367
+ showOutsideDays,
4368
+ className: cn("p-3 pointer-events-auto", className),
4369
+ classNames: {
4370
+ months: "flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",
4371
+ month: "space-y-4",
4372
+ caption: "flex justify-center pt-1 relative items-center",
4373
+ caption_label: "text-sm font-medium",
4374
+ nav: "space-x-1 flex items-center",
4375
+ button_previous: "absolute left-1 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100",
4376
+ button_next: "absolute right-1 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100",
4377
+ month_grid: "w-full border-collapse space-y-1",
4378
+ weekdays: "flex",
4379
+ weekday: "text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]",
4380
+ week: "flex w-full mt-2",
4381
+ day: "h-9 w-9 text-center text-sm p-0 relative hover:bg-accent hover:text-accent-foreground rounded-md",
4382
+ day_button: cn(
4383
+ buttonVariants({ variant: "ghost" }),
4384
+ "h-9 w-9 p-0 font-normal"
4385
+ ),
4386
+ selected: "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground",
4387
+ today: "bg-accent text-accent-foreground",
4388
+ outside: "text-muted-foreground opacity-50",
4389
+ disabled: "text-muted-foreground opacity-50",
4390
+ hidden: "invisible",
4391
+ ...classNames
4392
+ },
4393
+ ...props
4363
4394
  }
4364
- setIsUploading(true);
4365
- try {
4366
- await onDocumentUpload(selectedFile, {
4367
- name: documentName,
4368
- description,
4369
- type: documentType
4370
- });
4371
- toast({
4372
- title: "Upload Successful",
4373
- description: `${documentName} uploaded successfully`
4374
- });
4375
- setShowUploadDialog(false);
4376
- resetForm();
4377
- } catch (error) {
4395
+ );
4396
+ }
4397
+ Calendar.displayName = "Calendar";
4398
+ var Popover = PopoverPrimitive__namespace.Root;
4399
+ var PopoverTrigger = PopoverPrimitive__namespace.Trigger;
4400
+ var PopoverContent = React15__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
4401
+ PopoverPrimitive__namespace.Content,
4402
+ {
4403
+ ref,
4404
+ align,
4405
+ sideOffset,
4406
+ className: cn(
4407
+ "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",
4408
+ className
4409
+ ),
4410
+ ...props
4411
+ }
4412
+ ) }));
4413
+ PopoverContent.displayName = PopoverPrimitive__namespace.Content.displayName;
4414
+ function DatePicker({
4415
+ date,
4416
+ onDateChange,
4417
+ placeholder = "Pick a date",
4418
+ disabled = false,
4419
+ className,
4420
+ buttonClassName,
4421
+ calendarClassName,
4422
+ align = "start",
4423
+ disabledDates,
4424
+ label,
4425
+ wrapperClassName
4426
+ }) {
4427
+ const [open, setOpen] = React15__namespace.useState(false);
4428
+ const handleSelect = (selectedDate) => {
4429
+ onDateChange?.(selectedDate);
4430
+ setOpen(false);
4431
+ };
4432
+ const picker = /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open, onOpenChange: setOpen, children: [
4433
+ /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
4434
+ Button,
4435
+ {
4436
+ variant: "outline",
4437
+ disabled,
4438
+ className: cn(
4439
+ "justify-start text-left font-normal",
4440
+ !date && "text-muted-foreground",
4441
+ buttonClassName
4442
+ ),
4443
+ children: [
4444
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CalendarIcon, { className: "mr-2 h-4 w-4" }),
4445
+ date ? dateFns.format(date, "MM/dd/yyyy") : placeholder
4446
+ ]
4447
+ }
4448
+ ) }),
4449
+ /* @__PURE__ */ jsxRuntime.jsx(PopoverContent, { className: cn("w-auto p-0", className), align, children: /* @__PURE__ */ jsxRuntime.jsx(
4450
+ Calendar,
4451
+ {
4452
+ mode: "single",
4453
+ selected: date,
4454
+ onSelect: handleSelect,
4455
+ disabled: disabledDates,
4456
+ initialFocus: true,
4457
+ className: cn("pointer-events-auto", calendarClassName)
4458
+ }
4459
+ ) })
4460
+ ] });
4461
+ if (label) {
4462
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-2", wrapperClassName), children: [
4463
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", children: label }),
4464
+ picker
4465
+ ] });
4466
+ }
4467
+ return picker;
4468
+ }
4469
+ var uboSchema = zod.z.object({
4470
+ legalFirstName: zod.z.string().min(1, "Legal first name is required"),
4471
+ legalLastName: zod.z.string().min(1, "Legal last name is required"),
4472
+ email: zod.z.string().email("Invalid email address"),
4473
+ title: zod.z.string().min(1, "Title is required"),
4474
+ ownershipPercentage: zod.z.number().min(0).max(100, "Must be between 0 and 100"),
4475
+ idNumber: zod.z.string().min(1, "ID number is required"),
4476
+ ssn: zod.z.string().min(1, "SSN is required"),
4477
+ dateOfBirth: zod.z.date({
4478
+ message: "Date of birth is required"
4479
+ }),
4480
+ street: zod.z.string().min(1, "Street is required"),
4481
+ apartment: zod.z.string().optional(),
4482
+ city: zod.z.string().min(1, "City is required"),
4483
+ state: zod.z.string().min(1, "State is required"),
4484
+ country: zod.z.string().min(1, "Country is required")
4485
+ });
4486
+ var titleOptions = [
4487
+ { value: "CEO", label: "CEO" },
4488
+ { value: "CFO", label: "CFO" },
4489
+ { value: "CTO", label: "CTO" },
4490
+ { value: "COO", label: "COO" },
4491
+ { value: "President", label: "President" },
4492
+ { value: "Vice President", label: "Vice President" },
4493
+ { value: "Director", label: "Director" },
4494
+ { value: "Manager", label: "Manager" },
4495
+ { value: "Board Member", label: "Board Member" },
4496
+ { value: "Partner", label: "Partner" },
4497
+ { value: "Other", label: "Other" }
4498
+ ];
4499
+ var AddUBODialog = ({ open, onOpenChange, onSubmit }) => {
4500
+ const [isSubmitting, setIsSubmitting] = React15.useState(false);
4501
+ const form = reactHookForm.useForm({
4502
+ resolver: zod$1.zodResolver(uboSchema),
4503
+ defaultValues: {
4504
+ legalFirstName: "",
4505
+ legalLastName: "",
4506
+ email: "",
4507
+ title: "",
4508
+ ownershipPercentage: 0,
4509
+ idNumber: "",
4510
+ ssn: "",
4511
+ street: "",
4512
+ apartment: "",
4513
+ city: "",
4514
+ state: "",
4515
+ country: "US"
4516
+ }
4517
+ });
4518
+ const handleSubmit = async (data) => {
4519
+ setIsSubmitting(true);
4520
+ try {
4521
+ await onSubmit(data);
4522
+ form.reset();
4523
+ onOpenChange(false);
4524
+ } catch (error) {
4525
+ console.error("Error adding UBO:", error);
4526
+ } finally {
4527
+ setIsSubmitting(false);
4528
+ }
4529
+ };
4530
+ const handleCancel = () => {
4531
+ form.reset();
4532
+ onOpenChange(false);
4533
+ };
4534
+ return /* @__PURE__ */ jsxRuntime.jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(DialogContent, { className: "max-w-3xl max-h-[90vh] overflow-y-auto", children: [
4535
+ /* @__PURE__ */ jsxRuntime.jsx(DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { children: "Add Ultimate Beneficial Owner" }) }),
4536
+ /* @__PURE__ */ jsxRuntime.jsx(reactHookForm.FormProvider, { ...form, children: /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: form.handleSubmit(handleSubmit), className: "space-y-6", children: [
4537
+ /* @__PURE__ */ jsxRuntime.jsxs(FormSection, { layout: "grid", columns: 2, spacing: "md", children: [
4538
+ /* @__PURE__ */ jsxRuntime.jsx(
4539
+ FormInput,
4540
+ {
4541
+ name: "legalFirstName",
4542
+ label: "Legal first name",
4543
+ placeholder: "Enter first name"
4544
+ }
4545
+ ),
4546
+ /* @__PURE__ */ jsxRuntime.jsx(
4547
+ FormInput,
4548
+ {
4549
+ name: "legalLastName",
4550
+ label: "Legal last name",
4551
+ placeholder: "Enter last name"
4552
+ }
4553
+ )
4554
+ ] }),
4555
+ /* @__PURE__ */ jsxRuntime.jsx(FormSection, { layout: "vertical", spacing: "md", children: /* @__PURE__ */ jsxRuntime.jsx(
4556
+ FormInput,
4557
+ {
4558
+ name: "email",
4559
+ label: "Email",
4560
+ type: "email",
4561
+ placeholder: "Enter email address"
4562
+ }
4563
+ ) }),
4564
+ /* @__PURE__ */ jsxRuntime.jsxs(FormSection, { layout: "grid", columns: 2, spacing: "md", children: [
4565
+ /* @__PURE__ */ jsxRuntime.jsx(
4566
+ FormSelect,
4567
+ {
4568
+ name: "title",
4569
+ label: "Title",
4570
+ placeholder: "Select title",
4571
+ options: titleOptions
4572
+ }
4573
+ ),
4574
+ /* @__PURE__ */ jsxRuntime.jsx(
4575
+ FormInput,
4576
+ {
4577
+ name: "ownershipPercentage",
4578
+ label: "Ownership %",
4579
+ type: "number",
4580
+ placeholder: "Enter ownership percentage"
4581
+ }
4582
+ )
4583
+ ] }),
4584
+ /* @__PURE__ */ jsxRuntime.jsxs(FormSection, { layout: "grid", columns: 2, spacing: "md", children: [
4585
+ /* @__PURE__ */ jsxRuntime.jsx(
4586
+ FormInput,
4587
+ {
4588
+ name: "idNumber",
4589
+ label: "ID Number",
4590
+ placeholder: "Enter ID number"
4591
+ }
4592
+ ),
4593
+ /* @__PURE__ */ jsxRuntime.jsx(
4594
+ FormInput,
4595
+ {
4596
+ name: "ssn",
4597
+ label: "SSN",
4598
+ placeholder: "Enter SSN"
4599
+ }
4600
+ )
4601
+ ] }),
4602
+ /* @__PURE__ */ jsxRuntime.jsx(FormSection, { layout: "vertical", spacing: "md", children: /* @__PURE__ */ jsxRuntime.jsx(FormField, { label: "Date of birth", children: /* @__PURE__ */ jsxRuntime.jsx(
4603
+ reactHookForm.Controller,
4604
+ {
4605
+ name: "dateOfBirth",
4606
+ control: form.control,
4607
+ render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsx(
4608
+ DatePicker,
4609
+ {
4610
+ date: field.value,
4611
+ onDateChange: field.onChange,
4612
+ placeholder: "MM/DD/YYYY"
4613
+ }
4614
+ )
4615
+ }
4616
+ ) }) }),
4617
+ /* @__PURE__ */ jsxRuntime.jsxs(FormSection, { title: "Address Details", layout: "vertical", spacing: "md", children: [
4618
+ /* @__PURE__ */ jsxRuntime.jsx(
4619
+ FormInput,
4620
+ {
4621
+ name: "street",
4622
+ label: "Street",
4623
+ placeholder: "Enter street address"
4624
+ }
4625
+ ),
4626
+ /* @__PURE__ */ jsxRuntime.jsx(
4627
+ FormInput,
4628
+ {
4629
+ name: "apartment",
4630
+ label: "Apartment, suite, or floor",
4631
+ placeholder: "Enter apartment, suite, or floor (optional)"
4632
+ }
4633
+ ),
4634
+ /* @__PURE__ */ jsxRuntime.jsxs(FormSection, { layout: "grid", columns: 2, spacing: "md", children: [
4635
+ /* @__PURE__ */ jsxRuntime.jsx(
4636
+ FormInput,
4637
+ {
4638
+ name: "city",
4639
+ label: "City",
4640
+ placeholder: "Enter city"
4641
+ }
4642
+ ),
4643
+ /* @__PURE__ */ jsxRuntime.jsx(
4644
+ FormInput,
4645
+ {
4646
+ name: "state",
4647
+ label: "State",
4648
+ placeholder: "Enter state"
4649
+ }
4650
+ )
4651
+ ] }),
4652
+ /* @__PURE__ */ jsxRuntime.jsx(
4653
+ FormInput,
4654
+ {
4655
+ name: "country",
4656
+ label: "Country",
4657
+ placeholder: "Enter country"
4658
+ }
4659
+ )
4660
+ ] }),
4661
+ /* @__PURE__ */ jsxRuntime.jsxs(DialogFooter, { children: [
4662
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { type: "button", variant: "outline", onClick: handleCancel, children: "Cancel" }),
4663
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { type: "submit", disabled: isSubmitting, children: isSubmitting ? "Adding..." : "Add UBO" })
4664
+ ] })
4665
+ ] }) })
4666
+ ] }) });
4667
+ };
4668
+ var UBOCard = ({ ubos, onUBOClick }) => {
4669
+ const [isDialogOpen, setIsDialogOpen] = React15.useState(false);
4670
+ const handleAddUBO = (data) => {
4671
+ console.log("New UBO data:", data);
4672
+ sonner.toast.success("UBO added successfully");
4673
+ };
4674
+ const columns3 = [
4675
+ {
4676
+ key: "name",
4677
+ title: "Name",
4678
+ sortable: true,
4679
+ width: "40%",
4680
+ render: (value, row) => /* @__PURE__ */ jsxRuntime.jsx(
4681
+ "button",
4682
+ {
4683
+ onClick: () => onUBOClick(row.customerId),
4684
+ className: "text-primary hover:underline font-medium text-left",
4685
+ children: value
4686
+ }
4687
+ )
4688
+ },
4689
+ {
4690
+ key: "title",
4691
+ title: "Title",
4692
+ sortable: true,
4693
+ width: "40%"
4694
+ },
4695
+ {
4696
+ key: "ownershipPercentage",
4697
+ title: "Ownership %",
4698
+ sortable: true,
4699
+ width: "20%",
4700
+ align: "right",
4701
+ render: (value) => `${value}%`
4702
+ }
4703
+ ];
4704
+ return /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
4705
+ /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-4", children: [
4706
+ /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Ultimate Beneficial Owners (UBO)" }),
4707
+ /* @__PURE__ */ jsxRuntime.jsxs(Button, { size: "sm", variant: "ghost", onClick: () => setIsDialogOpen(true), children: [
4708
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-1" }),
4709
+ "Add UBO"
4710
+ ] })
4711
+ ] }),
4712
+ /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: ubos.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 py-4 text-sm text-muted-foreground", children: [
4713
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Users, { className: "h-5 w-5 opacity-50" }),
4714
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: "No UBOs recorded" })
4715
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(
4716
+ DataTable,
4717
+ {
4718
+ columns: columns3,
4719
+ data: ubos
4720
+ }
4721
+ ) }),
4722
+ /* @__PURE__ */ jsxRuntime.jsx(
4723
+ AddUBODialog,
4724
+ {
4725
+ open: isDialogOpen,
4726
+ onOpenChange: setIsDialogOpen,
4727
+ onSubmit: handleAddUBO
4728
+ }
4729
+ )
4730
+ ] });
4731
+ };
4732
+ var accountSchema = zod.z.object({
4733
+ accountName: zod.z.string().min(1, "Account name is required"),
4734
+ accountType: zod.z.string().min(1, "Account type is required"),
4735
+ fundingFromAccount: zod.z.string().optional(),
4736
+ sweepToAccount: zod.z.string().optional()
4737
+ });
4738
+ var AddAccountDialog = ({
4739
+ open,
4740
+ onOpenChange,
4741
+ onSubmit,
4742
+ existingAccounts = []
4743
+ }) => {
4744
+ const [isLoading, setIsLoading] = React15.useState(false);
4745
+ const form = reactHookForm.useForm({
4746
+ resolver: zod$1.zodResolver(accountSchema),
4747
+ defaultValues: {
4748
+ accountName: "",
4749
+ accountType: void 0,
4750
+ fundingFromAccount: "",
4751
+ sweepToAccount: ""
4752
+ }
4753
+ });
4754
+ const handleSubmit = async (data) => {
4755
+ setIsLoading(true);
4756
+ try {
4757
+ await onSubmit?.(data);
4758
+ form.reset();
4759
+ onOpenChange(false);
4760
+ } catch (error) {
4761
+ console.error("Error creating account:", error);
4762
+ } finally {
4763
+ setIsLoading(false);
4764
+ }
4765
+ };
4766
+ existingAccounts.map((acc) => ({
4767
+ value: acc.id,
4768
+ label: `${acc.number}${acc.type ? ` (${acc.type})` : ""}`
4769
+ }));
4770
+ return /* @__PURE__ */ jsxRuntime.jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(DialogContent, { className: "sm:max-w-[600px] max-h-[90vh] overflow-y-auto", children: [
4771
+ /* @__PURE__ */ jsxRuntime.jsx(DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { children: "Add Account" }) }),
4772
+ /* @__PURE__ */ jsxRuntime.jsx(FormProvider, { form, children: /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: form.handleSubmit(handleSubmit), className: "space-y-4", children: [
4773
+ /* @__PURE__ */ jsxRuntime.jsxs(FormSection, { spacing: "md", children: [
4774
+ /* @__PURE__ */ jsxRuntime.jsx(
4775
+ FormInput,
4776
+ {
4777
+ name: "accountName",
4778
+ label: "Account Name",
4779
+ placeholder: "Enter account name",
4780
+ required: true
4781
+ }
4782
+ ),
4783
+ /* @__PURE__ */ jsxRuntime.jsx(
4784
+ FormSelect,
4785
+ {
4786
+ name: "accountType",
4787
+ label: "Account Type",
4788
+ placeholder: "Select account type",
4789
+ options: [
4790
+ { value: "CHECKING", label: "Checking" },
4791
+ { value: "SAVINGS", label: "Savings" }
4792
+ ]
4793
+ }
4794
+ ),
4795
+ /* @__PURE__ */ jsxRuntime.jsx(
4796
+ FormInput,
4797
+ {
4798
+ name: "fundingFromAccount",
4799
+ label: "Funding from Account",
4800
+ placeholder: "Enter funding account"
4801
+ }
4802
+ ),
4803
+ /* @__PURE__ */ jsxRuntime.jsx(
4804
+ FormInput,
4805
+ {
4806
+ name: "sweepToAccount",
4807
+ label: "Sweep to Account",
4808
+ placeholder: "Enter sweep account"
4809
+ }
4810
+ )
4811
+ ] }),
4812
+ /* @__PURE__ */ jsxRuntime.jsxs(DialogFooter, { children: [
4813
+ /* @__PURE__ */ jsxRuntime.jsx(
4814
+ Button,
4815
+ {
4816
+ type: "button",
4817
+ variant: "outline",
4818
+ onClick: () => onOpenChange(false),
4819
+ disabled: isLoading,
4820
+ children: "Cancel"
4821
+ }
4822
+ ),
4823
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { type: "submit", disabled: isLoading, children: isLoading ? "Creating..." : "Create Account" })
4824
+ ] })
4825
+ ] }) })
4826
+ ] }) });
4827
+ };
4828
+ var BusinessDocuments = ({ businessId, documents, onDocumentUpload }) => {
4829
+ const [isUploading, setIsUploading] = React15.useState(false);
4830
+ const [showUploadDialog, setShowUploadDialog] = React15.useState(false);
4831
+ const [selectedFile, setSelectedFile] = React15.useState(null);
4832
+ const [documentName, setDocumentName] = React15.useState("");
4833
+ const [description, setDescription] = React15.useState("");
4834
+ const [documentType, setDocumentType] = React15.useState("");
4835
+ const handleFileSelect = (e) => {
4836
+ const file = e.target.files?.[0];
4837
+ if (!file) return;
4838
+ setSelectedFile(file);
4839
+ setDocumentName(file.name);
4840
+ };
4841
+ const handleUploadSubmit = async () => {
4842
+ if (!selectedFile || !documentName || !documentType) {
4843
+ toast({
4844
+ title: "Missing Information",
4845
+ description: "Please fill in all required fields",
4846
+ variant: "destructive"
4847
+ });
4848
+ return;
4849
+ }
4850
+ setIsUploading(true);
4851
+ try {
4852
+ await onDocumentUpload(selectedFile, {
4853
+ name: documentName,
4854
+ description,
4855
+ type: documentType
4856
+ });
4857
+ toast({
4858
+ title: "Upload Successful",
4859
+ description: `${documentName} uploaded successfully`
4860
+ });
4861
+ setShowUploadDialog(false);
4862
+ resetForm();
4863
+ } catch (error) {
4378
4864
  toast({
4379
4865
  title: "Upload Failed",
4380
4866
  description: "Failed to upload document. Please try again.",
@@ -4676,7 +5162,11 @@ var BusinessDetailView = ({
4676
5162
  onUBOClick,
4677
5163
  onDocumentUpload
4678
5164
  }) => {
4679
- return /* @__PURE__ */ jsxRuntime.jsx(
5165
+ const [showAddAccountDialog, setShowAddAccountDialog] = React15.useState(false);
5166
+ const handleAddAccount = (data) => {
5167
+ console.log("New account data:", data);
5168
+ };
5169
+ return /* @__PURE__ */ jsxRuntime.jsxs(
4680
5170
  PageLayout,
4681
5171
  {
4682
5172
  title: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
@@ -4715,164 +5205,64 @@ var BusinessDetailView = ({
4715
5205
  }
4716
5206
  ],
4717
5207
  maxWidth: "full",
4718
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col lg:flex-row items-start gap-4", children: [
4719
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-4", children: [
4720
- /* @__PURE__ */ jsxRuntime.jsx(
4721
- BusinessProfileCard,
4722
- {
4723
- data: businessProfile,
4724
- identityVerification,
4725
- isEditing: isEditingProfile,
4726
- onToggleEdit: onToggleProfileEdit,
4727
- onDataChange: onProfileDataChange
4728
- }
4729
- ),
4730
- /* @__PURE__ */ jsxRuntime.jsx(UBOCard, { ubos: businessUBOs, onUBOClick }),
4731
- /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
4732
- /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-4", children: [
4733
- /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "External Accounts" }),
4734
- /* @__PURE__ */ jsxRuntime.jsxs(Button, { size: "sm", variant: "ghost", onClick: onAddAccount, children: [
4735
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-1" }),
4736
- "Account"
4737
- ] })
4738
- ] }),
4739
- /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: businessAccounts.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 py-4 text-sm text-muted-foreground", children: [
4740
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Wallet, { className: "h-5 w-5 opacity-50" }),
4741
- /* @__PURE__ */ jsxRuntime.jsx("p", { children: "No external accounts found" })
4742
- ] }) : /* @__PURE__ */ jsxRuntime.jsx(
4743
- DataTable,
4744
- {
4745
- columns: accountColumns,
4746
- data: businessAccounts
4747
- }
4748
- ) })
4749
- ] }),
4750
- /* @__PURE__ */ jsxRuntime.jsx(
4751
- BusinessDocuments,
4752
- {
4753
- businessId: business.id,
4754
- documents: businessDocuments,
4755
- onDocumentUpload
4756
- }
4757
- )
4758
- ] }),
4759
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:w-64", children: /* @__PURE__ */ jsxRuntime.jsx(BusinessStatusCard, { isEditing: false, onToggleEdit: () => {
4760
- } }) })
4761
- ] })
4762
- }
4763
- );
4764
- };
4765
- function Calendar({
4766
- className,
4767
- classNames,
4768
- showOutsideDays = true,
4769
- ...props
4770
- }) {
4771
- return /* @__PURE__ */ jsxRuntime.jsx(
4772
- reactDayPicker.DayPicker,
4773
- {
4774
- showOutsideDays,
4775
- className: cn("p-3 pointer-events-auto", className),
4776
- classNames: {
4777
- months: "flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",
4778
- month: "space-y-4",
4779
- caption: "flex justify-center pt-1 relative items-center",
4780
- caption_label: "text-sm font-medium",
4781
- nav: "space-x-1 flex items-center",
4782
- button_previous: "absolute left-1 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100",
4783
- button_next: "absolute right-1 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100",
4784
- month_grid: "w-full border-collapse space-y-1",
4785
- weekdays: "flex",
4786
- weekday: "text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]",
4787
- week: "flex w-full mt-2",
4788
- day: "h-9 w-9 text-center text-sm p-0 relative hover:bg-accent hover:text-accent-foreground rounded-md",
4789
- day_button: cn(
4790
- buttonVariants({ variant: "ghost" }),
4791
- "h-9 w-9 p-0 font-normal"
4792
- ),
4793
- selected: "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground",
4794
- today: "bg-accent text-accent-foreground",
4795
- outside: "text-muted-foreground opacity-50",
4796
- disabled: "text-muted-foreground opacity-50",
4797
- hidden: "invisible",
4798
- ...classNames
4799
- },
4800
- ...props
5208
+ children: [
5209
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col lg:flex-row items-start gap-4", children: [
5210
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-4", children: [
5211
+ /* @__PURE__ */ jsxRuntime.jsx(
5212
+ BusinessProfileCard,
5213
+ {
5214
+ data: businessProfile,
5215
+ identityVerification,
5216
+ isEditing: isEditingProfile,
5217
+ onToggleEdit: onToggleProfileEdit,
5218
+ onDataChange: onProfileDataChange
5219
+ }
5220
+ ),
5221
+ /* @__PURE__ */ jsxRuntime.jsx(UBOCard, { ubos: businessUBOs, onUBOClick }),
5222
+ /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
5223
+ /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-4", children: [
5224
+ /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "External Accounts" }),
5225
+ /* @__PURE__ */ jsxRuntime.jsxs(Button, { size: "sm", variant: "ghost", onClick: () => setShowAddAccountDialog(true), children: [
5226
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-1" }),
5227
+ "Account"
5228
+ ] })
5229
+ ] }),
5230
+ /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: businessAccounts.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 py-4 text-sm text-muted-foreground", children: [
5231
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Wallet, { className: "h-5 w-5 opacity-50" }),
5232
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: "No external accounts found" })
5233
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(
5234
+ DataTable,
5235
+ {
5236
+ columns: accountColumns,
5237
+ data: businessAccounts
5238
+ }
5239
+ ) })
5240
+ ] }),
5241
+ /* @__PURE__ */ jsxRuntime.jsx(
5242
+ BusinessDocuments,
5243
+ {
5244
+ businessId: business.id,
5245
+ documents: businessDocuments,
5246
+ onDocumentUpload
5247
+ }
5248
+ )
5249
+ ] }),
5250
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:w-64", children: /* @__PURE__ */ jsxRuntime.jsx(BusinessStatusCard, { isEditing: false, onToggleEdit: () => {
5251
+ } }) })
5252
+ ] }),
5253
+ /* @__PURE__ */ jsxRuntime.jsx(
5254
+ AddAccountDialog,
5255
+ {
5256
+ open: showAddAccountDialog,
5257
+ onOpenChange: setShowAddAccountDialog,
5258
+ onSubmit: handleAddAccount,
5259
+ existingAccounts: businessAccounts
5260
+ }
5261
+ )
5262
+ ]
4801
5263
  }
4802
5264
  );
4803
- }
4804
- Calendar.displayName = "Calendar";
4805
- var Popover = PopoverPrimitive__namespace.Root;
4806
- var PopoverTrigger = PopoverPrimitive__namespace.Trigger;
4807
- var PopoverContent = React15__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
4808
- PopoverPrimitive__namespace.Content,
4809
- {
4810
- ref,
4811
- align,
4812
- sideOffset,
4813
- className: cn(
4814
- "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",
4815
- className
4816
- ),
4817
- ...props
4818
- }
4819
- ) }));
4820
- PopoverContent.displayName = PopoverPrimitive__namespace.Content.displayName;
4821
- function DatePicker({
4822
- date,
4823
- onDateChange,
4824
- placeholder = "Pick a date",
4825
- disabled = false,
4826
- className,
4827
- buttonClassName,
4828
- calendarClassName,
4829
- align = "start",
4830
- disabledDates,
4831
- label,
4832
- wrapperClassName
4833
- }) {
4834
- const [open, setOpen] = React15__namespace.useState(false);
4835
- const handleSelect = (selectedDate) => {
4836
- onDateChange?.(selectedDate);
4837
- setOpen(false);
4838
- };
4839
- const picker = /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open, onOpenChange: setOpen, children: [
4840
- /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
4841
- Button,
4842
- {
4843
- variant: "outline",
4844
- disabled,
4845
- className: cn(
4846
- "justify-start text-left font-normal",
4847
- !date && "text-muted-foreground",
4848
- buttonClassName
4849
- ),
4850
- children: [
4851
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CalendarIcon, { className: "mr-2 h-4 w-4" }),
4852
- date ? dateFns.format(date, "MM/dd/yyyy") : placeholder
4853
- ]
4854
- }
4855
- ) }),
4856
- /* @__PURE__ */ jsxRuntime.jsx(PopoverContent, { className: cn("w-auto p-0", className), align, children: /* @__PURE__ */ jsxRuntime.jsx(
4857
- Calendar,
4858
- {
4859
- mode: "single",
4860
- selected: date,
4861
- onSelect: handleSelect,
4862
- disabled: disabledDates,
4863
- initialFocus: true,
4864
- className: cn("pointer-events-auto", calendarClassName)
4865
- }
4866
- ) })
4867
- ] });
4868
- if (label) {
4869
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-2", wrapperClassName), children: [
4870
- /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", children: label }),
4871
- picker
4872
- ] });
4873
- }
4874
- return picker;
4875
- }
5265
+ };
4876
5266
  var BusinessFiltersSheet = ({
4877
5267
  filters,
4878
5268
  onFilterChange,
@@ -6489,39 +6879,6 @@ var CounterpartyBasicInfo = ({ onDataChange }) => {
6489
6879
  ] })
6490
6880
  ] });
6491
6881
  };
6492
- var spacingClasses = {
6493
- sm: "space-y-3",
6494
- md: "space-y-4",
6495
- lg: "space-y-6"
6496
- };
6497
- var gridClasses = {
6498
- 1: "grid-cols-1",
6499
- 2: "grid-cols-1 md:grid-cols-2",
6500
- 3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3",
6501
- 4: "grid-cols-1 md:grid-cols-2 lg:grid-cols-4"
6502
- };
6503
- var FormSection = React15__namespace.forwardRef(
6504
- ({
6505
- title,
6506
- description,
6507
- children,
6508
- className,
6509
- spacing: spacing2 = "md",
6510
- layout = "vertical",
6511
- columns: columns3 = 2
6512
- }, ref) => {
6513
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: cn("space-y-4", className), children: [
6514
- (title || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
6515
- title && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-semibold text-foreground", children: title }),
6516
- description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: description })
6517
- ] }),
6518
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(
6519
- layout === "grid" ? `grid gap-4 ${gridClasses[columns3]}` : spacingClasses[spacing2]
6520
- ), children })
6521
- ] });
6522
- }
6523
- );
6524
- FormSection.displayName = "FormSection";
6525
6882
  var IntermediaryFI = () => {
6526
6883
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
6527
6884
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border pb-4", children: [
@@ -7988,36 +8345,6 @@ var EntityCard = React15__namespace.forwardRef(
7988
8345
  }
7989
8346
  );
7990
8347
  EntityCard.displayName = "EntityCard";
7991
- var FormField = React15__namespace.forwardRef(
7992
- ({ label, description, error, required, children, className, layout = "vertical" }, ref) => {
7993
- const isHorizontal = layout === "horizontal";
7994
- return /* @__PURE__ */ jsxRuntime.jsxs(
7995
- "div",
7996
- {
7997
- ref,
7998
- className: cn(
7999
- "space-y-2",
8000
- isHorizontal && "grid grid-cols-1 md:grid-cols-3 gap-4 items-start space-y-0",
8001
- className
8002
- ),
8003
- children: [
8004
- label && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-1", isHorizontal && "pt-2"), children: [
8005
- /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "text-sm font-medium text-foreground", children: [
8006
- label,
8007
- required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-destructive ml-1", children: "*" })
8008
- ] }),
8009
- description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: description })
8010
- ] }),
8011
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(isHorizontal && "md:col-span-2"), children: [
8012
- children,
8013
- error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-destructive mt-1", children: error })
8014
- ] })
8015
- ]
8016
- }
8017
- );
8018
- }
8019
- );
8020
- FormField.displayName = "FormField";
8021
8348
  var variantStyles = {
8022
8349
  default: "",
8023
8350
  success: "border-success/20 bg-success/5",
@@ -9396,39 +9723,6 @@ var AccountStatusCard = ({ isEditing, onToggleEdit, className }) => {
9396
9723
  }
9397
9724
  );
9398
9725
  };
9399
- var AccountBalanceCard = React15__namespace.default.forwardRef(
9400
- ({ balance, availableBalance, accountNumber, accountType, className }, ref) => {
9401
- return /* @__PURE__ */ jsxRuntime.jsx(
9402
- Card,
9403
- {
9404
- ref,
9405
- className: cn(
9406
- "border-primary/20 bg-gradient-to-br from-primary/5 via-primary/3 to-background",
9407
- className
9408
- ),
9409
- children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4", children: [
9410
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
9411
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Wallet, { className: "h-4 w-4 text-primary" }),
9412
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: accountNumber }),
9413
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "\u2022" }),
9414
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground capitalize", children: accountType })
9415
- ] }),
9416
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-end gap-8", children: [
9417
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
9418
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-medium text-muted-foreground mb-1", children: "Account Balance" }),
9419
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-3xl font-bold text-foreground tracking-tight", children: balance })
9420
- ] }),
9421
- availableBalance && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
9422
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-medium text-muted-foreground mb-1", children: "Available Balance" }),
9423
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-3xl font-bold text-foreground tracking-tight", children: availableBalance })
9424
- ] })
9425
- ] })
9426
- ] }) })
9427
- }
9428
- );
9429
- }
9430
- );
9431
- AccountBalanceCard.displayName = "AccountBalanceCard";
9432
9726
  var accountInfoSchema = zod.z.object({
9433
9727
  accountName: zod.z.string().trim().min(1, "Account name is required").max(100, "Account name must be less than 100 characters"),
9434
9728
  canAcceptSweep: zod.z.enum(["Yes", "No"]),
@@ -9458,7 +9752,7 @@ var AccountDetail = () => {
9458
9752
  }
9459
9753
  const formValues = form.watch();
9460
9754
  const customerPath = account.customerType === "business" ? `/business/${account.customerId}` : `/individual/${account.customerId}`;
9461
- return /* @__PURE__ */ jsxRuntime.jsxs(
9755
+ return /* @__PURE__ */ jsxRuntime.jsx(
9462
9756
  PageLayout,
9463
9757
  {
9464
9758
  title: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
@@ -9501,29 +9795,37 @@ var AccountDetail = () => {
9501
9795
  }
9502
9796
  ],
9503
9797
  maxWidth: "full",
9504
- children: [
9505
- /* @__PURE__ */ jsxRuntime.jsx(
9506
- AccountBalanceCard,
9507
- {
9508
- balance: account.balance,
9509
- availableBalance: account.balance,
9510
- accountNumber: account.number,
9511
- accountType: account.type,
9512
- className: "mb-4"
9513
- }
9514
- ),
9515
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col lg:flex-row items-start gap-4", children: [
9516
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-4", children: [
9517
- /* @__PURE__ */ jsxRuntime.jsx(
9518
- EditableFormCard,
9519
- {
9520
- title: "Account Information",
9521
- variant: "subtle",
9522
- isEditing: form.isEditing,
9523
- onToggleEdit: form.handleToggleEdit,
9524
- onSave: form.handleSave,
9525
- onCancel: form.handleCancel,
9526
- viewContent: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
9798
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col lg:flex-row items-start gap-4", children: [
9799
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-4", children: [
9800
+ /* @__PURE__ */ jsxRuntime.jsx(
9801
+ EditableFormCard,
9802
+ {
9803
+ title: "Account Information",
9804
+ variant: "subtle",
9805
+ isEditing: form.isEditing,
9806
+ onToggleEdit: form.handleToggleEdit,
9807
+ onSave: form.handleSave,
9808
+ onCancel: form.handleCancel,
9809
+ viewContent: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
9810
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6 p-6 rounded-lg bg-gradient-to-br from-primary/10 via-primary/5 to-background border border-primary/20", children: [
9811
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-4", children: [
9812
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Wallet, { className: "h-4 w-4 text-primary" }),
9813
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: account.number }),
9814
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "\u2022" }),
9815
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground capitalize", children: account.type })
9816
+ ] }),
9817
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-end gap-8", children: [
9818
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
9819
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-medium text-muted-foreground mb-1", children: "Account Balance" }),
9820
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-3xl font-bold text-foreground tracking-tight", children: account.balance })
9821
+ ] }),
9822
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
9823
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-medium text-muted-foreground mb-1", children: "Available Balance" }),
9824
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-3xl font-bold text-foreground tracking-tight", children: account.balance })
9825
+ ] })
9826
+ ] })
9827
+ ] }),
9828
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
9527
9829
  /* @__PURE__ */ jsxRuntime.jsx(
9528
9830
  InfoField,
9529
9831
  {
@@ -9587,8 +9889,28 @@ var AccountDetail = () => {
9587
9889
  value: formValues.sweepAccountNumber || "-"
9588
9890
  }
9589
9891
  )
9892
+ ] })
9893
+ ] }),
9894
+ editContent: /* @__PURE__ */ jsxRuntime.jsx(FormProvider, { form, children: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
9895
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6 p-6 rounded-lg bg-gradient-to-br from-primary/10 via-primary/5 to-background border border-primary/20", children: [
9896
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-4", children: [
9897
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Wallet, { className: "h-4 w-4 text-primary" }),
9898
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: account.number }),
9899
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "\u2022" }),
9900
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground capitalize", children: account.type })
9901
+ ] }),
9902
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-end gap-8", children: [
9903
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
9904
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-medium text-muted-foreground mb-1", children: "Account Balance" }),
9905
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-3xl font-bold text-foreground tracking-tight", children: account.balance })
9906
+ ] }),
9907
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
9908
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-medium text-muted-foreground mb-1", children: "Available Balance" }),
9909
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-3xl font-bold text-foreground tracking-tight", children: account.balance })
9910
+ ] })
9911
+ ] })
9590
9912
  ] }),
9591
- editContent: /* @__PURE__ */ jsxRuntime.jsx(FormProvider, { form, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
9913
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
9592
9914
  /* @__PURE__ */ jsxRuntime.jsx(
9593
9915
  InfoField,
9594
9916
  {
@@ -9660,18 +9982,18 @@ var AccountDetail = () => {
9660
9982
  placeholder: "Enter sweep account number"
9661
9983
  }
9662
9984
  )
9663
- ] }) })
9664
- }
9665
- ),
9666
- /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
9667
- /* @__PURE__ */ jsxRuntime.jsx(CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Fees" }) }),
9668
- /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Fees information coming soon" }) }) })
9669
- ] })
9670
- ] }),
9671
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:w-64", children: /* @__PURE__ */ jsxRuntime.jsx(AccountStatusCard, { isEditing: false, onToggleEdit: () => {
9672
- } }) })
9673
- ] })
9674
- ]
9985
+ ] })
9986
+ ] }) })
9987
+ }
9988
+ ),
9989
+ /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
9990
+ /* @__PURE__ */ jsxRuntime.jsx(CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Fees" }) }),
9991
+ /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Fees information coming soon" }) }) })
9992
+ ] })
9993
+ ] }),
9994
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:w-64", children: /* @__PURE__ */ jsxRuntime.jsx(AccountStatusCard, { isEditing: false, onToggleEdit: () => {
9995
+ } }) })
9996
+ ] })
9675
9997
  }
9676
9998
  );
9677
9999
  };
@@ -11116,8 +11438,83 @@ var PaymentMethodCard = ({
11116
11438
  intermediaryBankId && /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Intermediary Bank ID", value: intermediaryBankId })
11117
11439
  ] })
11118
11440
  ] })
11119
- ] })
11120
- ] });
11441
+ ] })
11442
+ ] });
11443
+ };
11444
+ var CounterpartyDetailView = ({
11445
+ counterpartyName,
11446
+ counterpartyType,
11447
+ currentStatus,
11448
+ isEditingProfile,
11449
+ mockPaymentMethods: mockPaymentMethods2,
11450
+ documentsTable,
11451
+ onStatusChange,
11452
+ onToggleProfileEdit,
11453
+ onAddPaymentMethod,
11454
+ onAddDocument
11455
+ }) => {
11456
+ return /* @__PURE__ */ jsxRuntime.jsx(
11457
+ PageLayout,
11458
+ {
11459
+ title: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
11460
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: counterpartyName }),
11461
+ /* @__PURE__ */ jsxRuntime.jsx(
11462
+ EditableInfoField,
11463
+ {
11464
+ label: "",
11465
+ value: currentStatus,
11466
+ options: [
11467
+ { value: "ACTIVE", label: "Active" },
11468
+ { value: "INACTIVE", label: "Inactive" },
11469
+ { value: "PENDING", label: "Pending" },
11470
+ { value: "SUSPENDED", label: "Suspended" }
11471
+ ],
11472
+ onChange: onStatusChange,
11473
+ renderValue: (value) => /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status: value }),
11474
+ className: "inline-block"
11475
+ }
11476
+ ),
11477
+ /* @__PURE__ */ jsxRuntime.jsx(CounterpartyTypeBadge, { type: counterpartyType })
11478
+ ] }),
11479
+ maxWidth: "full",
11480
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col lg:flex-row items-start gap-4", children: [
11481
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-4", children: [
11482
+ /* @__PURE__ */ jsxRuntime.jsx(
11483
+ CounterpartyProfileCard,
11484
+ {
11485
+ isEditing: isEditingProfile,
11486
+ onToggleEdit: onToggleProfileEdit
11487
+ }
11488
+ ),
11489
+ /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
11490
+ /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-4", children: [
11491
+ /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Payment Methods" }),
11492
+ /* @__PURE__ */ jsxRuntime.jsxs(Button, { size: "sm", variant: "ghost", onClick: onAddPaymentMethod, children: [
11493
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-1" }),
11494
+ "Method"
11495
+ ] })
11496
+ ] }),
11497
+ /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: mockPaymentMethods2.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 py-4 text-sm text-muted-foreground", children: [
11498
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Wallet, { className: "h-5 w-5 opacity-50" }),
11499
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: "No payment methods configured" })
11500
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(ResponsiveGrid, { type: "forms", gap: "md", children: mockPaymentMethods2.map((method, index) => /* @__PURE__ */ jsxRuntime.jsx(PaymentMethodCard, { ...method }, index)) }) })
11501
+ ] }),
11502
+ /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
11503
+ /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-4", children: [
11504
+ /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Documents" }),
11505
+ /* @__PURE__ */ jsxRuntime.jsxs(Button, { size: "sm", variant: "ghost", onClick: onAddDocument, children: [
11506
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-1" }),
11507
+ "Document"
11508
+ ] })
11509
+ ] }),
11510
+ /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: documentsTable })
11511
+ ] })
11512
+ ] }),
11513
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:w-64", children: /* @__PURE__ */ jsxRuntime.jsx(CounterpartyStatusCard, { isEditing: false, onToggleEdit: () => {
11514
+ } }) })
11515
+ ] })
11516
+ }
11517
+ );
11121
11518
  };
11122
11519
  var mockPaymentMethods = [
11123
11520
  {
@@ -11177,6 +11574,33 @@ var CounterpartyDetail = () => {
11177
11574
  render: (value) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "capitalize", children: value })
11178
11575
  }
11179
11576
  ];
11577
+ const handleStatusChange = (newStatus) => {
11578
+ setCurrentStatus(newStatus);
11579
+ };
11580
+ const handleToggleProfileEdit = () => {
11581
+ setIsEditingProfile(!isEditingProfile);
11582
+ };
11583
+ const handleAddPaymentMethod = () => {
11584
+ console.log("Add payment method");
11585
+ };
11586
+ const handleAddDocument = () => {
11587
+ console.log("Add document");
11588
+ };
11589
+ const documentsTable = React15.useMemo(() => {
11590
+ if (counterpartyDocuments.length === 0) {
11591
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 py-4 text-sm text-muted-foreground", children: [
11592
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "h-5 w-5 opacity-50" }),
11593
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: "No documents found" })
11594
+ ] });
11595
+ }
11596
+ return /* @__PURE__ */ jsxRuntime.jsx(
11597
+ DataTable,
11598
+ {
11599
+ columns: documentColumns,
11600
+ data: counterpartyDocuments
11601
+ }
11602
+ );
11603
+ }, [counterpartyDocuments, documentColumns]);
11180
11604
  if (!counterparty) {
11181
11605
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container mx-auto px-4 py-8", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
11182
11606
  /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-2xl font-bold mb-2", children: "Counterparty Not Found" }),
@@ -11184,74 +11608,18 @@ var CounterpartyDetail = () => {
11184
11608
  ] }) });
11185
11609
  }
11186
11610
  return /* @__PURE__ */ jsxRuntime.jsx(
11187
- PageLayout,
11611
+ CounterpartyDetailView,
11188
11612
  {
11189
- title: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
11190
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: counterparty.name }),
11191
- /* @__PURE__ */ jsxRuntime.jsx(
11192
- EditableInfoField,
11193
- {
11194
- label: "",
11195
- value: currentStatus,
11196
- options: [
11197
- { value: "ACTIVE", label: "Active" },
11198
- { value: "INACTIVE", label: "Inactive" },
11199
- { value: "PENDING", label: "Pending" },
11200
- { value: "SUSPENDED", label: "Suspended" }
11201
- ],
11202
- onChange: (newStatus) => setCurrentStatus(newStatus),
11203
- renderValue: (value) => /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status: value }),
11204
- className: "inline-block"
11205
- }
11206
- ),
11207
- /* @__PURE__ */ jsxRuntime.jsx(CounterpartyTypeBadge, { type: counterparty.type })
11208
- ] }),
11209
- maxWidth: "full",
11210
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col lg:flex-row items-start gap-4", children: [
11211
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-4", children: [
11212
- /* @__PURE__ */ jsxRuntime.jsx(
11213
- CounterpartyProfileCard,
11214
- {
11215
- isEditing: isEditingProfile,
11216
- onToggleEdit: () => setIsEditingProfile(!isEditingProfile)
11217
- }
11218
- ),
11219
- /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
11220
- /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-4", children: [
11221
- /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Payment Methods" }),
11222
- /* @__PURE__ */ jsxRuntime.jsxs(Button, { size: "sm", variant: "ghost", children: [
11223
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-1" }),
11224
- "Method"
11225
- ] })
11226
- ] }),
11227
- /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: mockPaymentMethods.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 py-4 text-sm text-muted-foreground", children: [
11228
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Wallet, { className: "h-5 w-5 opacity-50" }),
11229
- /* @__PURE__ */ jsxRuntime.jsx("p", { children: "No payment methods configured" })
11230
- ] }) : /* @__PURE__ */ jsxRuntime.jsx(ResponsiveGrid, { type: "forms", gap: "md", children: mockPaymentMethods.map((method, index) => /* @__PURE__ */ jsxRuntime.jsx(PaymentMethodCard, { ...method }, index)) }) })
11231
- ] }),
11232
- /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
11233
- /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-4", children: [
11234
- /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Documents" }),
11235
- /* @__PURE__ */ jsxRuntime.jsxs(Button, { size: "sm", variant: "ghost", children: [
11236
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-1" }),
11237
- "Document"
11238
- ] })
11239
- ] }),
11240
- /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: counterpartyDocuments.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 py-4 text-sm text-muted-foreground", children: [
11241
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "h-5 w-5 opacity-50" }),
11242
- /* @__PURE__ */ jsxRuntime.jsx("p", { children: "No documents found" })
11243
- ] }) : /* @__PURE__ */ jsxRuntime.jsx(
11244
- DataTable,
11245
- {
11246
- columns: documentColumns,
11247
- data: counterpartyDocuments
11248
- }
11249
- ) })
11250
- ] })
11251
- ] }),
11252
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:w-64", children: /* @__PURE__ */ jsxRuntime.jsx(CounterpartyStatusCard, { isEditing: false, onToggleEdit: () => {
11253
- } }) })
11254
- ] })
11613
+ counterpartyName: counterparty.name,
11614
+ counterpartyType: counterparty.type,
11615
+ currentStatus,
11616
+ isEditingProfile,
11617
+ mockPaymentMethods,
11618
+ documentsTable,
11619
+ onStatusChange: handleStatusChange,
11620
+ onToggleProfileEdit: handleToggleProfileEdit,
11621
+ onAddPaymentMethod: handleAddPaymentMethod,
11622
+ onAddDocument: handleAddDocument
11255
11623
  }
11256
11624
  );
11257
11625
  };
@@ -13889,7 +14257,7 @@ var TransactionDetail = () => {
13889
14257
  /* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: () => navigate("/transactions/history"), children: "Back to Transaction History" })
13890
14258
  ] }) });
13891
14259
  }
13892
- const getStatusVariant = (status) => {
14260
+ const getStatusVariant2 = (status) => {
13893
14261
  switch (status) {
13894
14262
  case "POSTED":
13895
14263
  return "success";
@@ -13945,7 +14313,7 @@ var TransactionDetail = () => {
13945
14313
  isInbound: transaction.isInbound
13946
14314
  }
13947
14315
  ),
13948
- /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: getStatusVariant(transaction.status), children: transaction.status }),
14316
+ /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: getStatusVariant2(transaction.status), children: transaction.status }),
13949
14317
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: getProcessingStatusVariant(transaction.processingStatus), children: transaction.processingStatus })
13950
14318
  ] }),
13951
14319
  maxWidth: "full",
@@ -14044,6 +14412,341 @@ function UIKit() {
14044
14412
  ] })
14045
14413
  ] }) }) });
14046
14414
  }
14415
+ function OFACFiltersSheet({
14416
+ filters,
14417
+ onFilterChange,
14418
+ onResetFilters
14419
+ }) {
14420
+ const hasActiveFilters = filters.status !== "" || filters.entityType !== "" || filters.startDate !== void 0 || filters.endDate !== void 0;
14421
+ return /* @__PURE__ */ jsxRuntime.jsxs(Sheet, { children: [
14422
+ /* @__PURE__ */ jsxRuntime.jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "outline", children: [
14423
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Filter, { className: "mr-2 h-4 w-4" }),
14424
+ "Filters",
14425
+ hasActiveFilters && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 flex h-5 w-5 items-center justify-center rounded-full bg-primary text-xs text-primary-foreground", children: [filters.status, filters.entityType, filters.startDate, filters.endDate].filter(Boolean).length })
14426
+ ] }) }),
14427
+ /* @__PURE__ */ jsxRuntime.jsxs(SheetContent, { className: "w-full sm:max-w-md overflow-y-auto", children: [
14428
+ /* @__PURE__ */ jsxRuntime.jsxs(SheetHeader, { children: [
14429
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
14430
+ /* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { children: "Filter OFAC Checks" }),
14431
+ hasActiveFilters && /* @__PURE__ */ jsxRuntime.jsxs(
14432
+ Button,
14433
+ {
14434
+ variant: "ghost",
14435
+ size: "sm",
14436
+ onClick: onResetFilters,
14437
+ className: "h-8 px-2",
14438
+ children: [
14439
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "mr-1 h-4 w-4" }),
14440
+ "Clear all"
14441
+ ]
14442
+ }
14443
+ )
14444
+ ] }),
14445
+ /* @__PURE__ */ jsxRuntime.jsx(SheetDescription, { children: "Filter OFAC screening results by status, entity type, and date range" })
14446
+ ] }),
14447
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6 mt-6", children: [
14448
+ /* @__PURE__ */ jsxRuntime.jsx(
14449
+ EnhancedSelect,
14450
+ {
14451
+ label: "Status",
14452
+ placeholder: "All statuses",
14453
+ options: [
14454
+ { value: "all", label: "All statuses" },
14455
+ { value: "NO MATCH", label: "No Match" },
14456
+ { value: "REVIEW", label: "Review" },
14457
+ { value: "CLEARED", label: "Cleared" },
14458
+ { value: "CONFIRMED", label: "Confirmed" }
14459
+ ],
14460
+ value: filters.status || "all",
14461
+ onValueChange: (value) => onFilterChange("status", value === "all" ? "" : value)
14462
+ }
14463
+ ),
14464
+ /* @__PURE__ */ jsxRuntime.jsx(
14465
+ EnhancedSelect,
14466
+ {
14467
+ label: "Entity Type",
14468
+ placeholder: "All entity types",
14469
+ options: [
14470
+ { value: "all", label: "All entity types" },
14471
+ { value: "Business", label: "Business" },
14472
+ { value: "Individual", label: "Individual" },
14473
+ { value: "Counterparty", label: "Counterparty" }
14474
+ ],
14475
+ value: filters.entityType || "all",
14476
+ onValueChange: (value) => onFilterChange("entityType", value === "all" ? "" : value)
14477
+ }
14478
+ ),
14479
+ /* @__PURE__ */ jsxRuntime.jsx(
14480
+ DatePicker,
14481
+ {
14482
+ date: filters.startDate,
14483
+ onDateChange: (date) => onFilterChange("startDate", date),
14484
+ label: "Start Date",
14485
+ placeholder: "MM/DD/YYYY"
14486
+ }
14487
+ ),
14488
+ /* @__PURE__ */ jsxRuntime.jsx(
14489
+ DatePicker,
14490
+ {
14491
+ date: filters.endDate,
14492
+ onDateChange: (date) => onFilterChange("endDate", date),
14493
+ label: "End Date",
14494
+ placeholder: "MM/DD/YYYY",
14495
+ disabledDates: (date) => filters.startDate ? date < filters.startDate : false
14496
+ }
14497
+ )
14498
+ ] })
14499
+ ] })
14500
+ ] });
14501
+ }
14502
+
14503
+ // src/lib/mock-data/ofac-data.ts
14504
+ var mockOFACChecks = [
14505
+ {
14506
+ id: "ofac-001",
14507
+ created: "2024-01-15T10:30:00Z",
14508
+ entityId: "8112488",
14509
+ entityName: "Acme Corporation",
14510
+ entityType: "Business",
14511
+ alertId: "ALT-001",
14512
+ status: "CLEARED"
14513
+ },
14514
+ {
14515
+ id: "ofac-002",
14516
+ created: "2024-01-14T14:22:00Z",
14517
+ entityId: "8111609",
14518
+ entityName: "Global Tech Industries",
14519
+ entityType: "Business",
14520
+ alertId: "ALT-002",
14521
+ status: "REVIEW"
14522
+ },
14523
+ {
14524
+ id: "ofac-003",
14525
+ created: "2024-01-14T09:15:00Z",
14526
+ entityId: "IND-001",
14527
+ entityName: "John Smith",
14528
+ entityType: "Individual",
14529
+ alertId: null,
14530
+ status: "NO MATCH"
14531
+ },
14532
+ {
14533
+ id: "ofac-004",
14534
+ created: "2024-01-13T16:45:00Z",
14535
+ entityId: "8111026",
14536
+ entityName: "Innovation Partners LLC",
14537
+ entityType: "Business",
14538
+ alertId: "ALT-003",
14539
+ status: "CONFIRMED"
14540
+ },
14541
+ {
14542
+ id: "ofac-005",
14543
+ created: "2024-01-13T11:20:00Z",
14544
+ entityId: "IND-002",
14545
+ entityName: "Jane Doe",
14546
+ entityType: "Individual",
14547
+ alertId: null,
14548
+ status: "NO MATCH"
14549
+ },
14550
+ {
14551
+ id: "ofac-006",
14552
+ created: "2024-01-12T13:30:00Z",
14553
+ entityId: "CP-001",
14554
+ entityName: "International Suppliers Inc",
14555
+ entityType: "Counterparty",
14556
+ alertId: "ALT-004",
14557
+ status: "REVIEW"
14558
+ },
14559
+ {
14560
+ id: "ofac-007",
14561
+ created: "2024-01-12T08:00:00Z",
14562
+ entityId: "8110892",
14563
+ entityName: "NextGen Solutions",
14564
+ entityType: "Business",
14565
+ alertId: null,
14566
+ status: "NO MATCH"
14567
+ },
14568
+ {
14569
+ id: "ofac-008",
14570
+ created: "2024-01-11T15:10:00Z",
14571
+ entityId: "IND-003",
14572
+ entityName: "Robert Johnson",
14573
+ entityType: "Individual",
14574
+ alertId: "ALT-005",
14575
+ status: "CLEARED"
14576
+ },
14577
+ {
14578
+ id: "ofac-009",
14579
+ created: "2024-01-11T10:45:00Z",
14580
+ entityId: "CP-002",
14581
+ entityName: "Overseas Trading Company",
14582
+ entityType: "Counterparty",
14583
+ alertId: "ALT-006",
14584
+ status: "REVIEW"
14585
+ },
14586
+ {
14587
+ id: "ofac-010",
14588
+ created: "2024-01-10T14:25:00Z",
14589
+ entityId: "8110654",
14590
+ entityName: "Digital Ventures Group",
14591
+ entityType: "Business",
14592
+ alertId: null,
14593
+ status: "NO MATCH"
14594
+ }
14595
+ ];
14596
+ var getStatusVariant = (status) => {
14597
+ switch (status) {
14598
+ case "NO MATCH":
14599
+ return "success";
14600
+ case "REVIEW":
14601
+ return "warning";
14602
+ case "CLEARED":
14603
+ return "active";
14604
+ case "CONFIRMED":
14605
+ return "destructive";
14606
+ default:
14607
+ return "secondary";
14608
+ }
14609
+ };
14610
+ var getEntityUrl = (entityType, entityId) => {
14611
+ switch (entityType) {
14612
+ case "Business":
14613
+ return `/business/${entityId}`;
14614
+ case "Individual":
14615
+ return `/individual/${entityId}`;
14616
+ case "Counterparty":
14617
+ return `/counterparty/${entityId}`;
14618
+ default:
14619
+ return "#";
14620
+ }
14621
+ };
14622
+ function OFAC() {
14623
+ const navigate = reactRouterDom.useNavigate();
14624
+ const [sortField, setSortField] = React15.useState("created");
14625
+ const [sortDirection, setSortDirection] = React15.useState("desc");
14626
+ const [filters, setFilters] = React15.useState({
14627
+ status: "",
14628
+ entityType: "",
14629
+ startDate: void 0,
14630
+ endDate: void 0
14631
+ });
14632
+ const handleFilterChange = (field, value) => {
14633
+ setFilters((prev) => ({ ...prev, [field]: value }));
14634
+ };
14635
+ const handleResetFilters = () => {
14636
+ setFilters({
14637
+ status: "",
14638
+ entityType: "",
14639
+ startDate: void 0,
14640
+ endDate: void 0
14641
+ });
14642
+ };
14643
+ const handleSort = (field) => {
14644
+ if (sortField === field) {
14645
+ setSortDirection(sortDirection === "asc" ? "desc" : "asc");
14646
+ } else {
14647
+ setSortField(field);
14648
+ setSortDirection("desc");
14649
+ }
14650
+ };
14651
+ const filteredChecks = React15.useMemo(() => {
14652
+ return mockOFACChecks.filter((check) => {
14653
+ if (filters.status && check.status !== filters.status) {
14654
+ return false;
14655
+ }
14656
+ if (filters.entityType && check.entityType !== filters.entityType) {
14657
+ return false;
14658
+ }
14659
+ if (filters.startDate || filters.endDate) {
14660
+ const checkDate = dateFns.parseISO(check.created);
14661
+ if (filters.startDate && dateFns.isBefore(checkDate, dateFns.startOfDay(filters.startDate))) {
14662
+ return false;
14663
+ }
14664
+ if (filters.endDate && dateFns.isAfter(checkDate, dateFns.endOfDay(filters.endDate))) {
14665
+ return false;
14666
+ }
14667
+ }
14668
+ return true;
14669
+ });
14670
+ }, [filters]);
14671
+ const sortedChecks = [...filteredChecks].sort((a, b) => {
14672
+ const aValue = a[sortField];
14673
+ const bValue = b[sortField];
14674
+ if (aValue == null) return 1;
14675
+ if (bValue == null) return -1;
14676
+ if (sortDirection === "asc") {
14677
+ return aValue > bValue ? 1 : -1;
14678
+ } else {
14679
+ return aValue < bValue ? 1 : -1;
14680
+ }
14681
+ });
14682
+ const columns3 = [
14683
+ {
14684
+ key: "created",
14685
+ title: "Created",
14686
+ sortable: true,
14687
+ render: (value) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: dateFns.format(dateFns.parseISO(value), "MMM d, yyyy h:mm a") })
14688
+ },
14689
+ {
14690
+ key: "entityName",
14691
+ title: "Entity",
14692
+ render: (value, row) => /* @__PURE__ */ jsxRuntime.jsx(
14693
+ "button",
14694
+ {
14695
+ onClick: () => navigate(getEntityUrl(row.entityType, row.entityId)),
14696
+ className: "text-sm text-primary hover:underline font-medium",
14697
+ children: value
14698
+ }
14699
+ )
14700
+ },
14701
+ {
14702
+ key: "entityType",
14703
+ title: "Entity Type",
14704
+ sortable: true,
14705
+ render: (value) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: value })
14706
+ },
14707
+ {
14708
+ key: "alertId",
14709
+ title: "Alert ID",
14710
+ render: (value) => value ? /* @__PURE__ */ jsxRuntime.jsx(
14711
+ "button",
14712
+ {
14713
+ onClick: () => navigate(`/alerts/${value}`),
14714
+ className: "text-sm text-primary hover:underline font-medium",
14715
+ children: value
14716
+ }
14717
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: "\u2014" })
14718
+ },
14719
+ {
14720
+ key: "status",
14721
+ title: "Status",
14722
+ sortable: true,
14723
+ render: (value) => /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: getStatusVariant(value), children: value })
14724
+ }
14725
+ ];
14726
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-screen bg-gradient-subtle", children: [
14727
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container mx-auto px-4 py-6 max-w-none", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
14728
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-3xl font-bold text-foreground", children: "OFAC Checks" }) }),
14729
+ /* @__PURE__ */ jsxRuntime.jsx(
14730
+ OFACFiltersSheet,
14731
+ {
14732
+ filters,
14733
+ onFilterChange: handleFilterChange,
14734
+ onResetFilters: handleResetFilters
14735
+ }
14736
+ )
14737
+ ] }) }) }),
14738
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container mx-auto px-4 h-full max-w-none flex flex-col", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 mt-4 overflow-auto", children: /* @__PURE__ */ jsxRuntime.jsx(
14739
+ DataTable,
14740
+ {
14741
+ columns: columns3,
14742
+ data: sortedChecks,
14743
+ sortBy: sortField,
14744
+ sortDirection,
14745
+ onSort: handleSort
14746
+ }
14747
+ ) }) }) })
14748
+ ] });
14749
+ }
14047
14750
 
14048
14751
  exports.ACHBankCard = ACHBankCard;
14049
14752
  exports.ACHBasicInfoCard = ACHBasicInfoCard;
@@ -14148,6 +14851,7 @@ exports.MainLayout = MainLayout;
14148
14851
  exports.MetricCard = MetricCard;
14149
14852
  exports.NewTransaction = NewTransaction;
14150
14853
  exports.NotFound = NotFound_default;
14854
+ exports.OFAC = OFAC;
14151
14855
  exports.OFACAlertView = OFACAlertView;
14152
14856
  exports.OriginatorCard = OriginatorCard;
14153
14857
  exports.OriginatorFI = OriginatorFI;