braid-ui 1.0.10 → 1.0.13

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
@@ -259,14 +259,14 @@ var FormCard = React15__namespace.forwardRef(
259
259
  CardHeader,
260
260
  {
261
261
  direction: headerActions ? "row" : "column",
262
- size: "md",
262
+ size: "sm",
263
263
  children: [
264
264
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1", children: /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { size: "md", children: title }) }),
265
265
  headerActions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: headerActions })
266
266
  ]
267
267
  }
268
268
  ),
269
- /* @__PURE__ */ jsxRuntime.jsx(CardContent, { size: "md", fullHeight: true, children })
269
+ /* @__PURE__ */ jsxRuntime.jsx(CardContent, { size: "sm", fullHeight: true, children })
270
270
  ]
271
271
  }
272
272
  )
@@ -2885,25 +2885,9 @@ var navigationItems = [
2885
2885
  icon: lucideReact.Building2
2886
2886
  },
2887
2887
  {
2888
- title: "Counterparty",
2889
- icon: lucideReact.Briefcase,
2890
- items: [
2891
- {
2892
- title: "Management",
2893
- url: "/counterparty/manage",
2894
- icon: lucideReact.FileCheck
2895
- },
2896
- {
2897
- title: "Create Counterparty",
2898
- url: "/counterparty/create",
2899
- icon: lucideReact.Receipt
2900
- },
2901
- {
2902
- title: "Domestic Wire",
2903
- url: "/counterparty/domestic-wire",
2904
- icon: lucideReact.Zap
2905
- }
2906
- ]
2888
+ title: "Counterparties",
2889
+ url: "/counterparty",
2890
+ icon: lucideReact.Briefcase
2907
2891
  },
2908
2892
  {
2909
2893
  title: "Accounts",
@@ -3044,7 +3028,7 @@ function AppSidebar() {
3044
3028
  );
3045
3029
  };
3046
3030
  return /* @__PURE__ */ jsxRuntime.jsxs(Sidebar, { collapsible: "icon", children: [
3047
- /* @__PURE__ */ jsxRuntime.jsx(SidebarHeader, { className: "border-b border-sidebar-border", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2 px-4 py-3", children: [
3031
+ /* @__PURE__ */ jsxRuntime.jsx(SidebarHeader, { className: "border-b border-sidebar-border", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2 px-4 py-6", children: [
3048
3032
  state !== "collapsed" ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: braid_logo_default, alt: "Braid", className: "h-8" }) : /* @__PURE__ */ jsxRuntime.jsx("img", { src: braid_logo_default, alt: "Braid", className: "h-6" }),
3049
3033
  /* @__PURE__ */ jsxRuntime.jsx(SidebarTrigger, {})
3050
3034
  ] }) }),
@@ -3106,7 +3090,7 @@ function AppSidebar() {
3106
3090
  ] });
3107
3091
  }
3108
3092
  var MainLayout = ({ children }) => {
3109
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-h-screen w-full", children: /* @__PURE__ */ jsxRuntime.jsx("main", { className: "flex-1 pl-4", children }) });
3093
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-h-screen w-full", children: /* @__PURE__ */ jsxRuntime.jsx("main", { className: "flex-1", children }) });
3110
3094
  };
3111
3095
  var useEditState = ({ initialEditing = false, onToggleEdit, onSave, onCancel }) => {
3112
3096
  const [localEditing, setLocalEditing] = React15.useState(initialEditing);
@@ -3472,6 +3456,13 @@ zod.z.object({
3472
3456
  lastOFACDate: zod.z.string(),
3473
3457
  lastOFACStatus: zod.z.string()
3474
3458
  });
3459
+ zod.z.object({
3460
+ status: zod.z.enum(["ACTIVE", "INACTIVE", "PENDING", "SUSPENDED"]),
3461
+ cipStatus: zod.z.enum(["verified", "pending", "not_started"]),
3462
+ createdAt: zod.z.string(),
3463
+ updatedAt: zod.z.string(),
3464
+ lastOFACCheck: zod.z.string().optional()
3465
+ });
3475
3466
  var wireBasicInfoSchema = zod.z.object({
3476
3467
  counterpartyName: zod.z.string().min(1, "Counterparty name is required"),
3477
3468
  shortName: zod.z.string().min(1, "Short name is required"),
@@ -3512,6 +3503,14 @@ var businessProfileSchema = zod.z.object({
3512
3503
  idType: zod.z.string().optional(),
3513
3504
  incorporationState: zod.z.string().optional(),
3514
3505
  website: zod.z.string().url("Invalid URL format").optional().or(zod.z.literal("")),
3506
+ email: zod.z.string().email("Invalid email format").optional().or(zod.z.literal("")),
3507
+ mobilePhone: zod.z.string().optional(),
3508
+ mcc: zod.z.string().regex(/^\d{4}$/, "MCC must be 4 digits").optional().or(zod.z.literal("")),
3509
+ naics: zod.z.string().regex(/^\d{6}$/, "NAICS must be 6 digits").optional().or(zod.z.literal("")),
3510
+ achCompanyId: zod.z.string().regex(/^\d{10}$/, "ACH Company ID must be 10 digits").optional().or(zod.z.literal("")),
3511
+ achCompanyName: zod.z.string().optional(),
3512
+ externalId: zod.z.string().uuid("Invalid UUID format").optional().or(zod.z.literal("")),
3513
+ productId: zod.z.coerce.number().optional(),
3515
3514
  contactFirstName: zod.z.string().optional(),
3516
3515
  contactLastName: zod.z.string().optional(),
3517
3516
  contactEmail: zod.z.string().optional(),
@@ -3669,74 +3668,68 @@ var AddressForm = ({
3669
3668
  showApartment = false
3670
3669
  }) => {
3671
3670
  const addressTypeLabel = fieldPrefix ? `${fieldPrefix} Address Type` : "Address Type";
3672
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
3673
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border pb-4", children: [
3674
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-foreground", children: title }),
3675
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: description })
3676
- ] }),
3677
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-6", children: [
3678
- /* @__PURE__ */ jsxRuntime.jsx(
3679
- EnhancedInput,
3680
- {
3681
- label: "State",
3682
- placeholder: "Enter state",
3683
- hint: "State or province",
3684
- ...fieldOverrides.state
3685
- }
3686
- ),
3687
- /* @__PURE__ */ jsxRuntime.jsx(
3688
- EnhancedInput,
3689
- {
3690
- label: "City",
3691
- placeholder: "Enter city",
3692
- required: true,
3693
- ...fieldOverrides.city
3694
- }
3695
- ),
3696
- /* @__PURE__ */ jsxRuntime.jsx(
3697
- EnhancedInput,
3698
- {
3699
- label: "Street Address",
3700
- placeholder: "Enter street address",
3701
- hint: fieldPrefix ? `${fieldPrefix} street address` : "Primary street address",
3702
- ...fieldOverrides.streetAddress
3703
- }
3704
- ),
3705
- showApartment && /* @__PURE__ */ jsxRuntime.jsx(
3706
- EnhancedInput,
3707
- {
3708
- label: "Apt, Building etc",
3709
- placeholder: "Additional address information",
3710
- hint: "Additional address information",
3711
- ...fieldOverrides.apartment
3712
- }
3713
- ),
3714
- /* @__PURE__ */ jsxRuntime.jsx(
3715
- EnhancedInput,
3716
- {
3717
- label: "Postal Code",
3718
- placeholder: "12345",
3719
- ...fieldOverrides.postalCode
3720
- }
3721
- ),
3722
- /* @__PURE__ */ jsxRuntime.jsx(
3723
- EnhancedSelect,
3724
- {
3725
- label: "Country Code",
3726
- placeholder: "Select country",
3727
- options: COUNTRY_OPTIONS
3728
- }
3729
- ),
3730
- showAddressType && /* @__PURE__ */ jsxRuntime.jsx(
3731
- EnhancedSelect,
3732
- {
3733
- label: addressTypeLabel,
3734
- placeholder: "Select type",
3735
- options: addressTypeOptions
3736
- }
3737
- )
3738
- ] }) })
3739
- ] });
3671
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
3672
+ /* @__PURE__ */ jsxRuntime.jsx(
3673
+ EnhancedInput,
3674
+ {
3675
+ label: "Street Address",
3676
+ placeholder: "Enter street address",
3677
+ hint: fieldPrefix ? `${fieldPrefix} street address` : "Primary street address",
3678
+ ...fieldOverrides.streetAddress
3679
+ }
3680
+ ),
3681
+ showApartment && /* @__PURE__ */ jsxRuntime.jsx(
3682
+ EnhancedInput,
3683
+ {
3684
+ label: "Apt, Building etc",
3685
+ placeholder: "Additional address information",
3686
+ hint: "Additional address information",
3687
+ ...fieldOverrides.apartment
3688
+ }
3689
+ ),
3690
+ /* @__PURE__ */ jsxRuntime.jsx(
3691
+ EnhancedInput,
3692
+ {
3693
+ label: "City",
3694
+ placeholder: "Enter city",
3695
+ required: true,
3696
+ ...fieldOverrides.city
3697
+ }
3698
+ ),
3699
+ /* @__PURE__ */ jsxRuntime.jsx(
3700
+ EnhancedInput,
3701
+ {
3702
+ label: "State",
3703
+ placeholder: "Enter state",
3704
+ hint: "State or province",
3705
+ ...fieldOverrides.state
3706
+ }
3707
+ ),
3708
+ /* @__PURE__ */ jsxRuntime.jsx(
3709
+ EnhancedInput,
3710
+ {
3711
+ label: "Postal Code",
3712
+ placeholder: "12345",
3713
+ ...fieldOverrides.postalCode
3714
+ }
3715
+ ),
3716
+ /* @__PURE__ */ jsxRuntime.jsx(
3717
+ EnhancedSelect,
3718
+ {
3719
+ label: "Country Code",
3720
+ placeholder: "Select country",
3721
+ options: COUNTRY_OPTIONS
3722
+ }
3723
+ ),
3724
+ showAddressType && /* @__PURE__ */ jsxRuntime.jsx(
3725
+ EnhancedSelect,
3726
+ {
3727
+ label: addressTypeLabel,
3728
+ placeholder: "Select type",
3729
+ options: addressTypeOptions
3730
+ }
3731
+ )
3732
+ ] }) });
3740
3733
  };
3741
3734
  var BankingDetailsCard = ({ isEditing, onToggleEdit, className }) => {
3742
3735
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -4207,6 +4200,14 @@ var defaultBusinessProfile = {
4207
4200
  idType: "EIN",
4208
4201
  incorporationState: "Delaware",
4209
4202
  website: "https://acme.com",
4203
+ email: "contact@acme.com",
4204
+ mobilePhone: "+1 (555) 234-5678",
4205
+ mcc: "1234",
4206
+ naics: "123456",
4207
+ achCompanyId: "1234567890",
4208
+ achCompanyName: "Acme Corporation",
4209
+ externalId: "c48c9834-ccdd-42df-bd56-1022df37341b",
4210
+ productId: 1,
4210
4211
  address: {
4211
4212
  streetAddress: "123 Business Avenue",
4212
4213
  apartment: "Suite 100",
@@ -4219,12 +4220,14 @@ var defaultBusinessProfile = {
4219
4220
  };
4220
4221
  var BusinessProfileCard = ({
4221
4222
  data,
4223
+ identityVerification,
4222
4224
  onDataChange,
4223
4225
  isEditing,
4224
4226
  onToggleEdit,
4225
4227
  className,
4226
4228
  hideActions
4227
4229
  }) => {
4230
+ const [showResultDialog, setShowResultDialog] = React15.useState(false);
4228
4231
  const form = useFormWithEditState({
4229
4232
  schema: businessProfileSchema,
4230
4233
  defaultValues: { ...defaultBusinessProfile, ...data },
@@ -4232,7 +4235,7 @@ var BusinessProfileCard = ({
4232
4235
  onToggleEdit,
4233
4236
  onSave: onDataChange
4234
4237
  });
4235
- const editContent = /* @__PURE__ */ jsxRuntime.jsx(FormProvider, { form, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
4238
+ const editContent = /* @__PURE__ */ jsxRuntime.jsx(FormProvider, { form, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4236
4239
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
4237
4240
  /* @__PURE__ */ jsxRuntime.jsx(
4238
4241
  FormInput,
@@ -4313,6 +4316,25 @@ var BusinessProfileCard = ({
4313
4316
  }
4314
4317
  )
4315
4318
  ] }),
4319
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
4320
+ /* @__PURE__ */ jsxRuntime.jsx(
4321
+ FormInput,
4322
+ {
4323
+ name: "email",
4324
+ label: "Business Email",
4325
+ type: "email",
4326
+ placeholder: "Enter business email"
4327
+ }
4328
+ ),
4329
+ /* @__PURE__ */ jsxRuntime.jsx(
4330
+ FormInput,
4331
+ {
4332
+ name: "mobilePhone",
4333
+ label: "Business Phone",
4334
+ placeholder: "Enter business phone"
4335
+ }
4336
+ )
4337
+ ] }),
4316
4338
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-4", children: [
4317
4339
  /* @__PURE__ */ jsxRuntime.jsx(
4318
4340
  FormInput,
@@ -4365,6 +4387,65 @@ var BusinessProfileCard = ({
4365
4387
  }
4366
4388
  )
4367
4389
  ] }),
4390
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
4391
+ /* @__PURE__ */ jsxRuntime.jsx(
4392
+ FormInput,
4393
+ {
4394
+ name: "mcc",
4395
+ label: "MCC",
4396
+ placeholder: "4-digit code",
4397
+ hint: "Merchant Category Code"
4398
+ }
4399
+ ),
4400
+ /* @__PURE__ */ jsxRuntime.jsx(
4401
+ FormInput,
4402
+ {
4403
+ name: "naics",
4404
+ label: "NAICS",
4405
+ placeholder: "6-digit code",
4406
+ hint: "North American Industry Classification System"
4407
+ }
4408
+ )
4409
+ ] }),
4410
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
4411
+ /* @__PURE__ */ jsxRuntime.jsx(
4412
+ FormInput,
4413
+ {
4414
+ name: "achCompanyId",
4415
+ label: "ACH Company ID",
4416
+ placeholder: "10-digit company ID"
4417
+ }
4418
+ ),
4419
+ /* @__PURE__ */ jsxRuntime.jsx(
4420
+ FormInput,
4421
+ {
4422
+ name: "achCompanyName",
4423
+ label: "ACH Company Name",
4424
+ placeholder: "Enter ACH company name"
4425
+ }
4426
+ )
4427
+ ] }),
4428
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
4429
+ /* @__PURE__ */ jsxRuntime.jsx(
4430
+ FormInput,
4431
+ {
4432
+ name: "externalId",
4433
+ label: "External ID",
4434
+ placeholder: "UUID",
4435
+ disabled: true
4436
+ }
4437
+ ),
4438
+ /* @__PURE__ */ jsxRuntime.jsx(
4439
+ FormInput,
4440
+ {
4441
+ name: "productId",
4442
+ label: "Product ID",
4443
+ type: "number",
4444
+ placeholder: "Product ID",
4445
+ disabled: true
4446
+ }
4447
+ )
4448
+ ] }),
4368
4449
  /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-medium text-muted-foreground mt-6", children: "Contact Person" }),
4369
4450
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
4370
4451
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -4403,40 +4484,94 @@ var BusinessProfileCard = ({
4403
4484
  ] })
4404
4485
  ] }) });
4405
4486
  const formValues = form.watch();
4406
- const viewContent = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4407
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
4408
- /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Legal Name", value: formValues?.legalName, layout: "horizontal" }),
4409
- /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "DBA Name", value: formValues?.dbaName, layout: "horizontal" })
4410
- ] }),
4411
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
4412
- /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Business Type", value: formValues?.businessType, layout: "horizontal" }),
4413
- /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Tax ID", value: formValues?.taxId, layout: "horizontal" })
4414
- ] }),
4415
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
4416
- /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Formation Date", value: formValues?.formationDate || "2020-01-15", layout: "horizontal" }),
4417
- /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "ID Type", value: formValues?.idType || "EIN", layout: "horizontal" })
4418
- ] }),
4419
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
4420
- /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Incorporation State", value: formValues?.incorporationState || "Delaware", layout: "horizontal" }),
4421
- /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Website", value: formValues?.website, layout: "horizontal" })
4422
- ] }),
4423
- /* @__PURE__ */ jsxRuntime.jsx(
4424
- InfoField,
4425
- {
4426
- label: "Address",
4427
- 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",
4428
- layout: "horizontal"
4429
- }
4430
- ),
4431
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-medium text-muted-foreground mt-6", children: "Contact Person" }),
4432
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
4433
- /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "First Name", value: formValues?.contactFirstName || "John", layout: "horizontal" }),
4434
- /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Last Name", value: formValues?.contactLastName || "Smith", layout: "horizontal" })
4487
+ const kycBy = identityVerification?.isDeveloperInitiated ? "Fintech" : "Bank";
4488
+ const viewContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4489
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
4490
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
4491
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Legal Name", value: formValues?.legalName || "-", layout: "horizontal" }),
4492
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "DBA Name", value: formValues?.dbaName || "-", layout: "horizontal" })
4493
+ ] }),
4494
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
4495
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Business Type", value: formValues?.businessType || "-", layout: "horizontal" }),
4496
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Tax ID", value: formValues?.taxId || "-", layout: "horizontal" })
4497
+ ] }),
4498
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
4499
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Formation Date", value: formValues?.formationDate || "-", layout: "horizontal" }),
4500
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "ID Type", value: formValues?.idType || "-", layout: "horizontal" })
4501
+ ] }),
4502
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
4503
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Incorporation State", value: formValues?.incorporationState || "-", layout: "horizontal" }),
4504
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Website", value: formValues?.website || "-", layout: "horizontal" })
4505
+ ] }),
4506
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
4507
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Business Email", value: formValues?.email || "-", layout: "horizontal" }),
4508
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Business Phone", value: formValues?.mobilePhone || "-", layout: "horizontal" })
4509
+ ] }),
4510
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
4511
+ /* @__PURE__ */ jsxRuntime.jsx(
4512
+ InfoField,
4513
+ {
4514
+ label: "KYC by",
4515
+ value: identityVerification ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: identityVerification.isDeveloperInitiated ? "business" : "government", children: kycBy }) : "-",
4516
+ layout: "horizontal"
4517
+ }
4518
+ ),
4519
+ /* @__PURE__ */ jsxRuntime.jsx(
4520
+ InfoField,
4521
+ {
4522
+ label: "Provider",
4523
+ value: identityVerification ? /* @__PURE__ */ jsxRuntime.jsx(
4524
+ "button",
4525
+ {
4526
+ onClick: () => setShowResultDialog(true),
4527
+ className: "text-primary hover:underline font-medium",
4528
+ children: identityVerification.provider
4529
+ }
4530
+ ) : "-",
4531
+ layout: "horizontal"
4532
+ }
4533
+ )
4534
+ ] }),
4535
+ /* @__PURE__ */ jsxRuntime.jsx(
4536
+ InfoField,
4537
+ {
4538
+ label: "Address",
4539
+ value: formValues?.address ? `${formValues.address.streetAddress}${formValues.address.apartment ? ", " + formValues.address.apartment : ""}, ${formValues.address.city}, ${formValues.address.state} ${formValues.address.postalCode}, ${formValues.address.country}` : "-",
4540
+ layout: "horizontal"
4541
+ }
4542
+ ),
4543
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
4544
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "MCC", value: formValues?.mcc || "-", layout: "horizontal" }),
4545
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "NAICS", value: formValues?.naics || "-", layout: "horizontal" })
4546
+ ] }),
4547
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
4548
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "ACH Company ID", value: formValues?.achCompanyId || "-", layout: "horizontal" }),
4549
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "ACH Company Name", value: formValues?.achCompanyName || "-", layout: "horizontal" })
4550
+ ] }),
4551
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
4552
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "External ID", value: formValues?.externalId || "-", layout: "horizontal" }),
4553
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Product ID", value: formValues?.productId?.toString() || "-", layout: "horizontal" })
4554
+ ] }),
4555
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-medium text-muted-foreground mt-6", children: "Contact Person" }),
4556
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
4557
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "First Name", value: formValues?.contactFirstName || "-", layout: "horizontal" }),
4558
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Last Name", value: formValues?.contactLastName || "-", layout: "horizontal" })
4559
+ ] }),
4560
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
4561
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Email", value: formValues?.contactEmail || "-", layout: "horizontal" }),
4562
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Phone Number", value: formValues?.contactPhone || "-", layout: "horizontal" })
4563
+ ] })
4435
4564
  ] }),
4436
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
4437
- /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Email", value: formValues?.contactEmail || "john.smith@acme.com", layout: "horizontal" }),
4438
- /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Phone Number", value: formValues?.contactPhone || "+1 (555) 123-4567", layout: "horizontal" })
4439
- ] })
4565
+ /* @__PURE__ */ jsxRuntime.jsx(Dialog, { open: showResultDialog, onOpenChange: setShowResultDialog, children: /* @__PURE__ */ jsxRuntime.jsxs(DialogContent, { className: "max-w-3xl max-h-[80vh] overflow-y-auto", children: [
4566
+ /* @__PURE__ */ jsxRuntime.jsxs(DialogHeader, { children: [
4567
+ /* @__PURE__ */ jsxRuntime.jsxs(DialogTitle, { children: [
4568
+ "Provider Result - ",
4569
+ identityVerification?.provider || "-"
4570
+ ] }),
4571
+ /* @__PURE__ */ jsxRuntime.jsx(DialogDescription, { children: "KYC verification result from the provider" })
4572
+ ] }),
4573
+ /* @__PURE__ */ jsxRuntime.jsx(JsonViewer, { data: identityVerification?.result || {} })
4574
+ ] }) })
4440
4575
  ] });
4441
4576
  return /* @__PURE__ */ jsxRuntime.jsx(
4442
4577
  EditableFormCard,
@@ -4590,7 +4725,10 @@ var CounterpartyBasicInfo = ({ onDataChange }) => {
4590
4725
  type: "business",
4591
4726
  email: "",
4592
4727
  phone: "",
4593
- productId: "167990"
4728
+ dateOfBirth: "",
4729
+ idNumber: "",
4730
+ idType: "product_id",
4731
+ idValue: ""
4594
4732
  });
4595
4733
  const handleInputChange = (field, value) => {
4596
4734
  const updatedData = { ...formData, [field]: value };
@@ -4601,11 +4739,7 @@ var CounterpartyBasicInfo = ({ onDataChange }) => {
4601
4739
  handleInputChange("type", type);
4602
4740
  };
4603
4741
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
4604
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border pb-4", children: [
4605
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-foreground", children: "Basic Information" }),
4606
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Enter the basic details for the counterparty" })
4607
- ] }),
4608
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
4742
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
4609
4743
  /* @__PURE__ */ jsxRuntime.jsx(
4610
4744
  EnhancedInput,
4611
4745
  {
@@ -4616,9 +4750,9 @@ var CounterpartyBasicInfo = ({ onDataChange }) => {
4616
4750
  required: true
4617
4751
  }
4618
4752
  ),
4619
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
4753
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
4620
4754
  /* @__PURE__ */ jsxRuntime.jsx(Label, { className: "text-sm font-medium", children: "Counterparty Type" }),
4621
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-6", children: [
4755
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-6 h-10 items-center", children: [
4622
4756
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center space-x-2 cursor-pointer", children: [
4623
4757
  /* @__PURE__ */ jsxRuntime.jsx(
4624
4758
  "input",
@@ -4649,57 +4783,89 @@ var CounterpartyBasicInfo = ({ onDataChange }) => {
4649
4783
  ] })
4650
4784
  ] })
4651
4785
  ] }),
4652
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
4653
- /* @__PURE__ */ jsxRuntime.jsx(
4654
- EnhancedInput,
4655
- {
4656
- label: "Email",
4657
- type: "email",
4658
- value: formData.email,
4659
- onChange: (e) => handleInputChange("email", e.target.value),
4660
- placeholder: "Enter email address",
4661
- required: true
4662
- }
4663
- ),
4664
- /* @__PURE__ */ jsxRuntime.jsx(
4665
- EnhancedInput,
4666
- {
4667
- label: "Phone Number",
4668
- type: "tel",
4669
- value: formData.phone,
4670
- onChange: (e) => handleInputChange("phone", e.target.value),
4671
- placeholder: "Enter phone number",
4672
- required: true
4673
- }
4674
- )
4675
- ] }),
4786
+ /* @__PURE__ */ jsxRuntime.jsx(
4787
+ EnhancedSelect,
4788
+ {
4789
+ label: "Associated with",
4790
+ value: formData.idType,
4791
+ onValueChange: (value) => handleInputChange("idType", value),
4792
+ options: [
4793
+ { value: "product_id", label: "Product ID" },
4794
+ { value: "business_id", label: "Business ID" },
4795
+ { value: "individual_id", label: "Individual ID" },
4796
+ { value: "account_number", label: "Account Number" }
4797
+ ]
4798
+ }
4799
+ ),
4676
4800
  /* @__PURE__ */ jsxRuntime.jsx(
4677
4801
  EnhancedInput,
4678
4802
  {
4679
- label: "Product ID",
4680
- value: formData.productId,
4681
- readOnly: true,
4682
- className: "bg-muted"
4803
+ label: formData.idType === "product_id" ? "Product ID" : formData.idType === "business_id" ? "Business ID" : formData.idType === "individual_id" ? "Individual ID" : "Account Number",
4804
+ value: formData.idValue,
4805
+ onChange: (e) => handleInputChange("idValue", e.target.value),
4806
+ placeholder: `Enter ${formData.idType === "product_id" ? "product ID" : formData.idType === "business_id" ? "business ID" : formData.idType === "individual_id" ? "individual ID" : "account number"}`,
4807
+ required: true
4683
4808
  }
4684
4809
  )
4685
- ] })
4686
- ] });
4687
- };
4688
- var spacingClasses = {
4689
- sm: "space-y-3",
4690
- md: "space-y-4",
4691
- lg: "space-y-6"
4692
- };
4693
- var gridClasses = {
4694
- 1: "grid-cols-1",
4695
- 2: "grid-cols-1 md:grid-cols-2",
4696
- 3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3",
4697
- 4: "grid-cols-1 md:grid-cols-2 lg:grid-cols-4"
4698
- };
4699
- var FormSection = React15__namespace.forwardRef(
4700
- ({
4701
- title,
4702
- description,
4810
+ ] }),
4811
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
4812
+ /* @__PURE__ */ jsxRuntime.jsx(
4813
+ EnhancedInput,
4814
+ {
4815
+ label: "Email",
4816
+ type: "email",
4817
+ value: formData.email,
4818
+ onChange: (e) => handleInputChange("email", e.target.value),
4819
+ placeholder: "Enter email address"
4820
+ }
4821
+ ),
4822
+ /* @__PURE__ */ jsxRuntime.jsx(
4823
+ EnhancedInput,
4824
+ {
4825
+ label: "Phone Number",
4826
+ type: "tel",
4827
+ value: formData.phone,
4828
+ onChange: (e) => handleInputChange("phone", e.target.value),
4829
+ placeholder: "Enter phone number"
4830
+ }
4831
+ ),
4832
+ /* @__PURE__ */ jsxRuntime.jsx(
4833
+ EnhancedInput,
4834
+ {
4835
+ label: "Date of Birth",
4836
+ type: "date",
4837
+ value: formData.dateOfBirth,
4838
+ onChange: (e) => handleInputChange("dateOfBirth", e.target.value),
4839
+ placeholder: "Select date of birth"
4840
+ }
4841
+ ),
4842
+ /* @__PURE__ */ jsxRuntime.jsx(
4843
+ EnhancedInput,
4844
+ {
4845
+ label: "ID Number",
4846
+ value: formData.idNumber,
4847
+ onChange: (e) => handleInputChange("idNumber", e.target.value),
4848
+ placeholder: "Enter ID number"
4849
+ }
4850
+ )
4851
+ ] })
4852
+ ] });
4853
+ };
4854
+ var spacingClasses = {
4855
+ sm: "space-y-3",
4856
+ md: "space-y-4",
4857
+ lg: "space-y-6"
4858
+ };
4859
+ var gridClasses = {
4860
+ 1: "grid-cols-1",
4861
+ 2: "grid-cols-1 md:grid-cols-2",
4862
+ 3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3",
4863
+ 4: "grid-cols-1 md:grid-cols-2 lg:grid-cols-4"
4864
+ };
4865
+ var FormSection = React15__namespace.forwardRef(
4866
+ ({
4867
+ title,
4868
+ description,
4703
4869
  children,
4704
4870
  className,
4705
4871
  spacing: spacing2 = "md",
@@ -4930,79 +5096,88 @@ var OriginatorCard = ({ isEditing, onToggleEdit, className, hideActions }) => {
4930
5096
  }
4931
5097
  );
4932
5098
  };
4933
- var receiverSchema = zod.z.object({
4934
- routingNumber: zod.z.string().min(9, "Routing number must be 9 digits").max(9, "Routing number must be 9 digits"),
4935
- bankShortName: zod.z.string().min(1, "Bank short name is required")
4936
- });
4937
- var ReceiverCard = ({
4938
- data,
4939
- onDataChange,
4940
- isEditing,
4941
- onToggleEdit,
4942
- className,
4943
- hideActions
4944
- }) => {
4945
- const form = useFormWithEditState({
4946
- schema: receiverSchema,
4947
- defaultValues: { ...defaultReceiverInfo, ...data },
4948
- initialEditing: isEditing,
4949
- onToggleEdit,
4950
- onSave: onDataChange
4951
- });
4952
- const editContent = /* @__PURE__ */ jsxRuntime.jsx(FormProvider, { form, children: /* @__PURE__ */ jsxRuntime.jsx(FormSection, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
4953
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border pb-4", children: [
4954
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-foreground", children: "Receiver Details" }),
4955
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Receiving bank information" })
4956
- ] }),
4957
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-6", children: [
4958
- /* @__PURE__ */ jsxRuntime.jsx(
4959
- FormInput,
4960
- {
4961
- name: "routingNumber",
4962
- label: "Receiver Routing Number",
4963
- placeholder: "Enter routing number",
4964
- hint: "9-digit routing number",
4965
- pattern: "[0-9]{9}",
4966
- maxLength: 9,
4967
- required: true
4968
- }
4969
- ),
4970
- /* @__PURE__ */ jsxRuntime.jsx(
4971
- FormInput,
4972
- {
4973
- name: "bankShortName",
4974
- label: "Receiver Bank Short Name",
4975
- placeholder: "Enter bank short name",
4976
- required: true
4977
- }
4978
- )
4979
- ] })
4980
- ] }) }) });
4981
- const formValues = form.watch();
4982
- const viewData = [
4983
- { label: "Routing Number", value: formValues?.routingNumber },
4984
- { label: "Bank Short Name", value: formValues?.bankShortName }
4985
- ];
4986
- return /* @__PURE__ */ jsxRuntime.jsx(
4987
- EditableFormCard,
4988
- {
4989
- title: "FedWire Receiver",
4990
- variant: "subtle",
4991
- className,
4992
- isEditing: form.isEditing,
4993
- onToggleEdit: form.handleToggleEdit,
4994
- onSave: form.handleSave,
4995
- onCancel: form.handleCancel,
4996
- hideActions,
4997
- editContent,
4998
- viewContent: /* @__PURE__ */ jsxRuntime.jsx(DataGrid, { data: viewData, columns: 2 })
4999
- }
5000
- );
5099
+ var SimpleACHForm = () => {
5100
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
5101
+ /* @__PURE__ */ jsxRuntime.jsx(
5102
+ EnhancedInput,
5103
+ {
5104
+ label: "Routing Number",
5105
+ placeholder: "Enter 9-digit routing number",
5106
+ pattern: "[0-9]{9}",
5107
+ maxLength: 9,
5108
+ hint: "9-digit routing number",
5109
+ required: true
5110
+ }
5111
+ ),
5112
+ /* @__PURE__ */ jsxRuntime.jsx(
5113
+ EnhancedInput,
5114
+ {
5115
+ label: "Account Number",
5116
+ placeholder: "Enter account number",
5117
+ required: true
5118
+ }
5119
+ ),
5120
+ /* @__PURE__ */ jsxRuntime.jsx(
5121
+ EnhancedSelect,
5122
+ {
5123
+ label: "Account Type",
5124
+ placeholder: "Select account type",
5125
+ options: [
5126
+ { value: "checking", label: "Checking" },
5127
+ { value: "savings", label: "Savings" }
5128
+ ]
5129
+ }
5130
+ )
5131
+ ] });
5132
+ };
5133
+ var SimpleWireForm = () => {
5134
+ const [wireType, setWireType] = React15.useState("domestic");
5135
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
5136
+ /* @__PURE__ */ jsxRuntime.jsx(
5137
+ EnhancedSelect,
5138
+ {
5139
+ label: "Wire Type",
5140
+ placeholder: "Select wire type",
5141
+ value: wireType,
5142
+ onValueChange: setWireType,
5143
+ options: [
5144
+ { value: "domestic", label: "Domestic" },
5145
+ { value: "international", label: "International" }
5146
+ ]
5147
+ }
5148
+ ),
5149
+ wireType === "domestic" ? /* @__PURE__ */ jsxRuntime.jsx(
5150
+ EnhancedInput,
5151
+ {
5152
+ label: "Routing Number",
5153
+ placeholder: "Enter 9-digit routing number",
5154
+ pattern: "[0-9]{9}",
5155
+ maxLength: 9,
5156
+ hint: "9-digit routing number",
5157
+ required: true
5158
+ }
5159
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
5160
+ EnhancedInput,
5161
+ {
5162
+ label: "BIC Number",
5163
+ placeholder: "Enter BIC/SWIFT code",
5164
+ hint: "Bank Identifier Code",
5165
+ required: true
5166
+ }
5167
+ ),
5168
+ /* @__PURE__ */ jsxRuntime.jsx(
5169
+ EnhancedInput,
5170
+ {
5171
+ label: "Account Number",
5172
+ placeholder: "Enter account number",
5173
+ required: true
5174
+ }
5175
+ )
5176
+ ] }) });
5001
5177
  };
5002
- var PaymentInformationSection = () => {
5178
+ var PaymentInformationSection = ({ onPaymentMethodsChange } = {}) => {
5003
5179
  const [paymentMethods, setPaymentMethods] = React15.useState([]);
5004
5180
  const [showAddMenu, setShowAddMenu] = React15.useState(false);
5005
- const [achData, setAchData] = React15.useState(defaultACHTransfer);
5006
5181
  const addPaymentMethod = (type) => {
5007
5182
  const newMethod = {
5008
5183
  id: `${type}-${Date.now()}`,
@@ -5010,57 +5185,29 @@ var PaymentInformationSection = () => {
5010
5185
  name: type === "ach" ? "ACH Payment" : "Wire Transfer",
5011
5186
  collapsed: false
5012
5187
  };
5013
- setPaymentMethods([...paymentMethods, newMethod]);
5188
+ const updatedMethods = [...paymentMethods, newMethod];
5189
+ setPaymentMethods(updatedMethods);
5190
+ onPaymentMethodsChange?.(updatedMethods);
5014
5191
  setShowAddMenu(false);
5015
5192
  };
5016
5193
  const removePaymentMethod = (id) => {
5017
- setPaymentMethods(paymentMethods.filter((method) => method.id !== id));
5194
+ const updatedMethods = paymentMethods.filter((method) => method.id !== id);
5195
+ setPaymentMethods(updatedMethods);
5196
+ onPaymentMethodsChange?.(updatedMethods);
5018
5197
  };
5019
5198
  const toggleCollapse = (id) => {
5020
5199
  setPaymentMethods(paymentMethods.map(
5021
5200
  (method) => method.id === id ? { ...method, collapsed: !method.collapsed } : method
5022
5201
  ));
5023
5202
  };
5024
- const handleACHDataChange = (newData) => {
5025
- setAchData(newData);
5026
- };
5027
5203
  const renderPaymentMethodContent = (method) => {
5028
5204
  if (method.type === "ach") {
5029
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5030
- /* @__PURE__ */ jsxRuntime.jsx(
5031
- ACHBasicInfoCard,
5032
- {
5033
- data: achData,
5034
- onDataChange: handleACHDataChange,
5035
- isEditing: true,
5036
- hideActions: true
5037
- }
5038
- ),
5039
- /* @__PURE__ */ jsxRuntime.jsx(
5040
- ACHBankCard,
5041
- {
5042
- data: achData,
5043
- onDataChange: handleACHDataChange,
5044
- isEditing: true,
5045
- hideActions: true
5046
- }
5047
- ),
5048
- /* @__PURE__ */ jsxRuntime.jsx(BankAddressCard, { isEditing: true, hideActions: true })
5049
- ] });
5205
+ return /* @__PURE__ */ jsxRuntime.jsx(SimpleACHForm, {});
5050
5206
  } else {
5051
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5052
- /* @__PURE__ */ jsxRuntime.jsx(ReceiverCard, { isEditing: true, hideActions: true }),
5053
- /* @__PURE__ */ jsxRuntime.jsx(BeneficiaryCard, { isEditing: true, hideActions: true }),
5054
- /* @__PURE__ */ jsxRuntime.jsx(OriginatorCard, { isEditing: true, hideActions: true }),
5055
- /* @__PURE__ */ jsxRuntime.jsx(IntermediaryCard, { isEditing: true, hideActions: true })
5056
- ] });
5207
+ return /* @__PURE__ */ jsxRuntime.jsx(SimpleWireForm, {});
5057
5208
  }
5058
5209
  };
5059
5210
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
5060
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border pb-4", children: [
5061
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-foreground", children: "Payment Information" }),
5062
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Add payment methods for this counterparty" })
5063
- ] }),
5064
5211
  paymentMethods.map((method) => /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "relative", children: [
5065
5212
  /* @__PURE__ */ jsxRuntime.jsx(CardHeader, { className: "pb-3", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
5066
5213
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
@@ -5091,6 +5238,7 @@ var PaymentInformationSection = () => {
5091
5238
  !method.collapsed && /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: renderPaymentMethodContent(method) })
5092
5239
  ] }, method.id)),
5093
5240
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
5241
+ paymentMethods.length === 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground mb-2", children: "At least one payment method is required *" }),
5094
5242
  /* @__PURE__ */ jsxRuntime.jsxs(
5095
5243
  Button,
5096
5244
  {
@@ -5126,6 +5274,75 @@ var PaymentInformationSection = () => {
5126
5274
  ] })
5127
5275
  ] });
5128
5276
  };
5277
+ var receiverSchema = zod.z.object({
5278
+ routingNumber: zod.z.string().min(9, "Routing number must be 9 digits").max(9, "Routing number must be 9 digits"),
5279
+ bankShortName: zod.z.string().min(1, "Bank short name is required")
5280
+ });
5281
+ var ReceiverCard = ({
5282
+ data,
5283
+ onDataChange,
5284
+ isEditing,
5285
+ onToggleEdit,
5286
+ className,
5287
+ hideActions
5288
+ }) => {
5289
+ const form = useFormWithEditState({
5290
+ schema: receiverSchema,
5291
+ defaultValues: { ...defaultReceiverInfo, ...data },
5292
+ initialEditing: isEditing,
5293
+ onToggleEdit,
5294
+ onSave: onDataChange
5295
+ });
5296
+ const editContent = /* @__PURE__ */ jsxRuntime.jsx(FormProvider, { form, children: /* @__PURE__ */ jsxRuntime.jsx(FormSection, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
5297
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border pb-4", children: [
5298
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-foreground", children: "Receiver Details" }),
5299
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Receiving bank information" })
5300
+ ] }),
5301
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-6", children: [
5302
+ /* @__PURE__ */ jsxRuntime.jsx(
5303
+ FormInput,
5304
+ {
5305
+ name: "routingNumber",
5306
+ label: "Receiver Routing Number",
5307
+ placeholder: "Enter routing number",
5308
+ hint: "9-digit routing number",
5309
+ pattern: "[0-9]{9}",
5310
+ maxLength: 9,
5311
+ required: true
5312
+ }
5313
+ ),
5314
+ /* @__PURE__ */ jsxRuntime.jsx(
5315
+ FormInput,
5316
+ {
5317
+ name: "bankShortName",
5318
+ label: "Receiver Bank Short Name",
5319
+ placeholder: "Enter bank short name",
5320
+ required: true
5321
+ }
5322
+ )
5323
+ ] })
5324
+ ] }) }) });
5325
+ const formValues = form.watch();
5326
+ const viewData = [
5327
+ { label: "Routing Number", value: formValues?.routingNumber },
5328
+ { label: "Bank Short Name", value: formValues?.bankShortName }
5329
+ ];
5330
+ return /* @__PURE__ */ jsxRuntime.jsx(
5331
+ EditableFormCard,
5332
+ {
5333
+ title: "FedWire Receiver",
5334
+ variant: "subtle",
5335
+ className,
5336
+ isEditing: form.isEditing,
5337
+ onToggleEdit: form.handleToggleEdit,
5338
+ onSave: form.handleSave,
5339
+ onCancel: form.handleCancel,
5340
+ hideActions,
5341
+ editContent,
5342
+ viewContent: /* @__PURE__ */ jsxRuntime.jsx(DataGrid, { data: viewData, columns: 2 })
5343
+ }
5344
+ );
5345
+ };
5129
5346
  var WireTransferSection = ({ isEditing, onToggleEdit, className, hideActions }) => {
5130
5347
  const [wireTransferType, setWireTransferType] = React15.useState("INTERNATIONAL");
5131
5348
  const editContent = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
@@ -5447,7 +5664,9 @@ var mockProducts = [
5447
5664
  ];
5448
5665
  var StatementHeader = ({ data, onEdit }) => {
5449
5666
  const hasValue = (value) => {
5450
- return value !== void 0 && value !== null && value.trim() !== "";
5667
+ if (value === void 0 || value === null) return false;
5668
+ if (typeof value === "string" && value.trim() === "") return false;
5669
+ return true;
5451
5670
  };
5452
5671
  const balanceChange = data.startingBalance && data.endingBalance ? calculateBalanceChange(data.startingBalance, data.endingBalance) : null;
5453
5672
  return /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
@@ -5591,14 +5810,16 @@ function DatePicker({
5591
5810
  buttonClassName,
5592
5811
  calendarClassName,
5593
5812
  align = "start",
5594
- disabledDates
5813
+ disabledDates,
5814
+ label,
5815
+ wrapperClassName
5595
5816
  }) {
5596
5817
  const [open, setOpen] = React15__namespace.useState(false);
5597
5818
  const handleSelect = (selectedDate) => {
5598
5819
  onDateChange?.(selectedDate);
5599
5820
  setOpen(false);
5600
5821
  };
5601
- return /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open, onOpenChange: setOpen, children: [
5822
+ const picker = /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open, onOpenChange: setOpen, children: [
5602
5823
  /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
5603
5824
  Button,
5604
5825
  {
@@ -5627,6 +5848,13 @@ function DatePicker({
5627
5848
  }
5628
5849
  ) })
5629
5850
  ] });
5851
+ if (label) {
5852
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-2", wrapperClassName), children: [
5853
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", children: label }),
5854
+ picker
5855
+ ] });
5856
+ }
5857
+ return picker;
5630
5858
  }
5631
5859
  function DataTable({
5632
5860
  columns: columns2,
@@ -5671,11 +5899,11 @@ function DataTable({
5671
5899
  /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsx("tr", { className: "border-b bg-muted/50", children: columns2.map((column) => /* @__PURE__ */ jsxRuntime.jsx(
5672
5900
  "th",
5673
5901
  {
5902
+ style: column.width ? { width: column.width } : void 0,
5674
5903
  className: cn(
5675
5904
  "px-3 py-2 text-left align-middle text-sm font-medium bg-muted/50",
5676
5905
  column.align === "center" && "text-center",
5677
- column.align === "right" && "text-right",
5678
- column.width && `w-[${column.width}]`
5906
+ column.align === "right" && "text-right"
5679
5907
  ),
5680
5908
  children: column.sortable && onSort ? /* @__PURE__ */ jsxRuntime.jsx(
5681
5909
  Button,
@@ -5704,6 +5932,7 @@ function DataTable({
5704
5932
  children: columns2.map((column) => /* @__PURE__ */ jsxRuntime.jsx(
5705
5933
  "td",
5706
5934
  {
5935
+ style: column.width ? { width: column.width } : void 0,
5707
5936
  className: cn(
5708
5937
  "px-3 py-2 align-middle text-sm",
5709
5938
  column.align === "center" && "text-center",
@@ -5877,33 +6106,29 @@ var StatementView = ({
5877
6106
  onChange: (e) => onAccountNumberChange(e.target.value)
5878
6107
  }
5879
6108
  ),
5880
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
5881
- /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: "Start Date" }),
5882
- /* @__PURE__ */ jsxRuntime.jsx(
5883
- DatePicker,
5884
- {
5885
- date: startDate,
5886
- onDateChange: onStartDateChange,
5887
- placeholder: "Select start date",
5888
- buttonClassName: "w-full"
5889
- }
5890
- )
5891
- ] }),
5892
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
5893
- /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: "End Date" }),
5894
- /* @__PURE__ */ jsxRuntime.jsx(
5895
- DatePicker,
5896
- {
5897
- date: endDate,
5898
- onDateChange: onEndDateChange,
5899
- placeholder: "Select end date",
5900
- buttonClassName: "w-full"
5901
- }
5902
- )
5903
- ] })
5904
- ] }),
5905
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsxs(
5906
- Button,
6109
+ /* @__PURE__ */ jsxRuntime.jsx(
6110
+ DatePicker,
6111
+ {
6112
+ label: "Start Date",
6113
+ date: startDate,
6114
+ onDateChange: onStartDateChange,
6115
+ placeholder: "Select start date",
6116
+ buttonClassName: "w-full"
6117
+ }
6118
+ ),
6119
+ /* @__PURE__ */ jsxRuntime.jsx(
6120
+ DatePicker,
6121
+ {
6122
+ label: "End Date",
6123
+ date: endDate,
6124
+ onDateChange: onEndDateChange,
6125
+ placeholder: "Select end date",
6126
+ buttonClassName: "w-full"
6127
+ }
6128
+ )
6129
+ ] }),
6130
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsxs(
6131
+ Button,
5907
6132
  {
5908
6133
  onClick: onGenerateStatement,
5909
6134
  disabled: isGenerateDisabled || isLoading,
@@ -6214,12 +6439,11 @@ var PageLayout = React15__namespace.forwardRef(
6214
6439
  });
6215
6440
  };
6216
6441
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: "flex flex-col h-screen bg-gradient-subtle", children: [
6217
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(
6218
- "sticky top-0 z-10 bg-gradient-subtle border-b border-border/40",
6219
- "container mx-auto px-4 pt-8 pb-4",
6442
+ /* @__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: cn(
6443
+ "container mx-auto px-4 py-6",
6220
6444
  maxWidthClasses[maxWidth]
6221
6445
  ), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-4", children: [
6222
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
6446
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-h-[2.5rem]", children: [
6223
6447
  /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-3xl font-bold text-foreground mb-2", children: title }),
6224
6448
  description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: description })
6225
6449
  ] }),
@@ -6248,7 +6472,7 @@ var PageLayout = React15__namespace.forwardRef(
6248
6472
  index
6249
6473
  );
6250
6474
  }) })
6251
- ] }) }),
6475
+ ] }) }) }),
6252
6476
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(
6253
6477
  "container mx-auto px-4 py-6",
6254
6478
  maxWidthClasses[maxWidth],
@@ -7892,6 +8116,11 @@ var mockBusinessesList = [
7892
8116
  productName: "Fiat Republic Canada Inc. FBO Rapidz Pay",
7893
8117
  cipStatus: "verified",
7894
8118
  status: "active",
8119
+ type: "Business",
8120
+ subType: "Customer",
8121
+ isDeveloperInitiated: true,
8122
+ provider: "Plaid",
8123
+ result: 'vendor:ADVISOR_KYC_VENDOR status:successful data:"id:\\"81ae3fca-bdef-493f-9b13-137d259a97f9\\" corporate_id:\\"9d8665b3-7525-40e7-aa75-e46d4f77f0f1\\" created_timestamp:{seconds:1761333876 nanos:574963000} modified_timestamp:{seconds:1761333889 nanos:83986000} status:processing edition:1 method:reliance"',
7895
8124
  created: "2025-10-05",
7896
8125
  modified: "2025-10-05"
7897
8126
  },
@@ -7901,6 +8130,11 @@ var mockBusinessesList = [
7901
8130
  productName: "Atomic Brokerage FBO Atomic Brokerage Clients",
7902
8131
  cipStatus: "verified",
7903
8132
  status: "active",
8133
+ type: "Business",
8134
+ subType: "UBO",
8135
+ isDeveloperInitiated: false,
8136
+ provider: "Alloy",
8137
+ result: 'vendor:COMPLIANCE_VENDOR status:approved data:"verification_id:\\"vrf-123\\" corporate_id:\\"corp-456\\" timestamp:{seconds:1761333900 nanos:123456000} status:verified"',
7904
8138
  created: "2025-10-04",
7905
8139
  modified: "2025-10-04"
7906
8140
  },
@@ -7910,6 +8144,11 @@ var mockBusinessesList = [
7910
8144
  productName: "SendFriend Inc FBO Conduit Pay Agent",
7911
8145
  cipStatus: "not_start",
7912
8146
  status: "active",
8147
+ type: "Individual",
8148
+ subType: "Customer",
8149
+ isDeveloperInitiated: true,
8150
+ provider: "Plaid",
8151
+ result: 'vendor:IDENTITY_VENDOR status:pending data:"request_id:\\"req-789\\" entity_id:\\"ent-012\\" created:{seconds:1761333800 nanos:987654000}"',
7913
8152
  created: "2025-10-03",
7914
8153
  modified: "2025-10-03"
7915
8154
  },
@@ -7919,6 +8158,11 @@ var mockBusinessesList = [
7919
8158
  productName: "Digital Finance Inc FBO Tech Solutions",
7920
8159
  cipStatus: "pending",
7921
8160
  status: "active",
8161
+ type: "Business",
8162
+ subType: "Customer",
8163
+ isDeveloperInitiated: false,
8164
+ provider: "Alloy",
8165
+ result: 'vendor:KYC_VENDOR status:in_progress data:"kyc_id:\\"kyc-345\\" business_id:\\"biz-678\\" initiated:{seconds:1761333700 nanos:111222000}"',
7922
8166
  created: "2025-10-02",
7923
8167
  modified: "2025-10-02"
7924
8168
  },
@@ -7928,6 +8172,11 @@ var mockBusinessesList = [
7928
8172
  productName: "Swift Transfer FBO Global Trade",
7929
8173
  cipStatus: "verified",
7930
8174
  status: "active",
8175
+ type: "Individual",
8176
+ subType: "UBO",
8177
+ isDeveloperInitiated: true,
8178
+ provider: "Plaid",
8179
+ result: 'vendor:VERIFICATION_VENDOR status:completed data:"account_verified:true holder_verified:true timestamp:{seconds:1761333600 nanos:333444000}"',
7931
8180
  created: "2025-10-01",
7932
8181
  modified: "2025-10-01"
7933
8182
  }
@@ -8054,11 +8303,8 @@ var Businesses = () => {
8054
8303
  return 0;
8055
8304
  });
8056
8305
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-screen bg-gradient-subtle", children: [
8057
- /* @__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-4 max-w-none", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
8058
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
8059
- /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-3xl font-bold text-foreground", children: "Businesses" }),
8060
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground mt-1", children: "Manage business entities and their configurations" })
8061
- ] }),
8306
+ /* @__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: [
8307
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-3xl font-bold text-foreground mb-2", children: "Businesses" }) }),
8062
8308
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
8063
8309
  /* @__PURE__ */ jsxRuntime.jsxs(Sheet, { children: [
8064
8310
  /* @__PURE__ */ jsxRuntime.jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "outline", className: "gap-2", children: [
@@ -8152,559 +8398,2706 @@ var Businesses = () => {
8152
8398
  ] });
8153
8399
  };
8154
8400
  var Businesses_default = Businesses;
8155
- var businessAccounts = [
8156
- {
8157
- id: "acc-001",
8158
- name: "Primary Operating Account",
8159
- number: "****7890",
8160
- type: "checking",
8161
- status: "active",
8162
- balance: "$125,450.00",
8163
- currency: "USD",
8164
- institution: "Chase Bank",
8165
- routingNumber: "021000021",
8166
- country: "US"
8401
+ var statusConfig2 = {
8402
+ verified: {
8403
+ variant: "active",
8404
+ label: "Verified",
8405
+ icon: lucideReact.CheckCircle
8167
8406
  },
8168
- {
8169
- id: "acc-002",
8170
- name: "Business Savings",
8171
- number: "****4567",
8172
- type: "savings",
8173
- status: "active",
8174
- balance: "$45,230.00",
8175
- currency: "USD",
8176
- institution: "Chase Bank",
8177
- routingNumber: "021000021",
8178
- country: "US"
8407
+ not_start: {
8408
+ variant: "secondary",
8409
+ label: "Not Start",
8410
+ icon: lucideReact.Circle
8179
8411
  },
8180
- {
8181
- id: "acc-003",
8182
- name: "Payroll Account",
8183
- number: "****1234",
8184
- type: "checking",
8185
- status: "active",
8186
- balance: "$78,900.00",
8187
- currency: "USD",
8188
- institution: "Wells Fargo",
8189
- routingNumber: "121000248",
8190
- country: "US"
8412
+ pending: {
8413
+ variant: "pending",
8414
+ label: "Pending",
8415
+ icon: lucideReact.Clock
8191
8416
  }
8192
- ];
8193
- var businessCounterparties = [
8194
- {
8195
- id: "cp-001",
8196
- name: "Tech Solutions Inc",
8197
- type: "BUSINESS",
8198
- status: "active",
8199
- description: "Technology vendor and service provider",
8200
- lastTransaction: "2024-01-15"
8417
+ };
8418
+ var CIPStatusBadge = ({ status, className }) => {
8419
+ const config = statusConfig2[status];
8420
+ if (!config) {
8421
+ return /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "secondary", className, children: [
8422
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Circle, { className: "w-3 h-3 mr-1" }),
8423
+ status || "Unknown"
8424
+ ] });
8425
+ }
8426
+ const Icon2 = config.icon;
8427
+ return /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: config.variant, className, children: [
8428
+ /* @__PURE__ */ jsxRuntime.jsx(Icon2, { className: "w-3 h-3 mr-1" }),
8429
+ config.label
8430
+ ] });
8431
+ };
8432
+ var typeConfig3 = {
8433
+ Individual: {
8434
+ variant: "individual",
8435
+ label: "Individual",
8436
+ icon: lucideReact.User
8201
8437
  },
8202
- {
8203
- id: "cp-002",
8204
- name: "Global Logistics LLC",
8205
- type: "BUSINESS",
8206
- status: "active",
8207
- description: "Shipping and logistics partner",
8208
- lastTransaction: "2024-01-10"
8438
+ Business: {
8439
+ variant: "business",
8440
+ label: "Business",
8441
+ icon: lucideReact.Building2
8442
+ }
8443
+ };
8444
+ var EntityTypeBadge = ({ type, className }) => {
8445
+ const config = typeConfig3[type];
8446
+ if (!config) {
8447
+ return /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "secondary", className, children: [
8448
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Building2, { className: "w-3 h-3 mr-1" }),
8449
+ type || "Unknown"
8450
+ ] });
8451
+ }
8452
+ const Icon2 = config.icon;
8453
+ return /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: config.variant, className, children: [
8454
+ /* @__PURE__ */ jsxRuntime.jsx(Icon2, { className: "w-3 h-3 mr-1" }),
8455
+ config.label
8456
+ ] });
8457
+ };
8458
+ var subTypeConfig = {
8459
+ UBO: {
8460
+ variant: "government",
8461
+ label: "UBO",
8462
+ icon: lucideReact.UserCheck
8209
8463
  },
8210
- {
8211
- id: "cp-003",
8212
- name: "Marketing Pros Agency",
8213
- type: "BUSINESS",
8214
- status: "active",
8215
- description: "Marketing and advertising services",
8216
- lastTransaction: "2024-01-08"
8464
+ Customer: {
8465
+ variant: "business",
8466
+ label: "Customer",
8467
+ icon: lucideReact.Users
8468
+ }
8469
+ };
8470
+ var SubTypeBadge = ({ subType, className }) => {
8471
+ const config = subTypeConfig[subType];
8472
+ if (!config) {
8473
+ return /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "secondary", className, children: [
8474
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Users, { className: "w-3 h-3 mr-1" }),
8475
+ subType || "Unknown"
8476
+ ] });
8477
+ }
8478
+ const Icon2 = config.icon;
8479
+ return /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: config.variant, className, children: [
8480
+ /* @__PURE__ */ jsxRuntime.jsx(Icon2, { className: "w-3 h-3 mr-1" }),
8481
+ config.label
8482
+ ] });
8483
+ };
8484
+
8485
+ // src/lib/mock-data/identity-verification-data.ts
8486
+ var mockIdentityVerifications = {
8487
+ "8112488": {
8488
+ customerId: "8112488",
8489
+ isDeveloperInitiated: true,
8490
+ provider: "Plaid",
8491
+ result: 'vendor:ADVISOR_KYC_VENDOR status:successful data:"id:\\"81ae3fca-bdef-493f-9b13-137d259a97f9\\" corporate_id:\\"9d8665b3-7525-40e7-aa75-e46d4f77f0f1\\" created_timestamp:{seconds:1761333876 nanos:574963000} modified_timestamp:{seconds:1761333889 nanos:83986000} status:processing edition:1 method:reliance"'
8217
8492
  },
8218
- {
8219
- id: "cp-004",
8220
- name: "John Smith Consulting",
8221
- type: "INDIVIDUAL",
8222
- status: "active",
8223
- description: "Independent business consultant",
8224
- lastTransaction: "2023-12-20"
8493
+ "8111609": {
8494
+ customerId: "8111609",
8495
+ isDeveloperInitiated: false,
8496
+ provider: "Alloy",
8497
+ result: 'vendor:COMPLIANCE_VENDOR status:approved data:"verification_id:\\"vrf-123\\" corporate_id:\\"corp-456\\" timestamp:{seconds:1761333900 nanos:123456000} status:verified"'
8498
+ },
8499
+ "8111026": {
8500
+ customerId: "8111026",
8501
+ isDeveloperInitiated: true,
8502
+ provider: "Plaid",
8503
+ result: 'vendor:IDENTITY_VENDOR status:pending data:"request_id:\\"req-789\\" entity_id:\\"ent-012\\" created:{seconds:1761333800 nanos:987654000}"'
8504
+ },
8505
+ "8110892": {
8506
+ customerId: "8110892",
8507
+ isDeveloperInitiated: false,
8508
+ provider: "Alloy",
8509
+ result: 'vendor:KYC_VENDOR status:in_progress data:"kyc_id:\\"kyc-345\\" business_id:\\"biz-678\\" initiated:{seconds:1761333700 nanos:111222000}"'
8510
+ },
8511
+ "8110654": {
8512
+ customerId: "8110654",
8513
+ isDeveloperInitiated: true,
8514
+ provider: "Plaid",
8515
+ result: 'vendor:VERIFICATION_VENDOR status:completed data:"account_verified:true holder_verified:true timestamp:{seconds:1761333600 nanos:333444000}"'
8225
8516
  }
8226
- ];
8227
- var Business = () => {
8228
- const { id } = reactRouterDom.useParams();
8229
- const business = mockBusinessesList.find((b) => b.id === id);
8230
- const [currentStatus, setCurrentStatus] = React15.useState(business?.status || "active");
8231
- const accountColumns = [
8517
+ };
8518
+
8519
+ // src/lib/mock-data/ubo-data.ts
8520
+ var mockBusinessUBOs = {
8521
+ "8112488": [
8232
8522
  {
8233
- key: "number",
8234
- title: "Account Number",
8235
- sortable: true
8523
+ id: "ubo-001",
8524
+ name: "John Smith",
8525
+ title: "CEO & Founder",
8526
+ ownershipPercentage: 45,
8527
+ customerId: "cust-001"
8528
+ },
8529
+ {
8530
+ id: "ubo-002",
8531
+ name: "Sarah Johnson",
8532
+ title: "CFO & Co-Founder",
8533
+ ownershipPercentage: 35,
8534
+ customerId: "cust-002"
8535
+ },
8536
+ {
8537
+ id: "ubo-003",
8538
+ name: "Michael Chen",
8539
+ title: "CTO",
8540
+ ownershipPercentage: 20,
8541
+ customerId: "cust-003"
8542
+ }
8543
+ ],
8544
+ "8112489": [
8545
+ {
8546
+ id: "ubo-004",
8547
+ name: "Emily Davis",
8548
+ title: "Managing Director",
8549
+ ownershipPercentage: 60,
8550
+ customerId: "cust-004"
8236
8551
  },
8552
+ {
8553
+ id: "ubo-005",
8554
+ name: "Robert Wilson",
8555
+ title: "Board Member",
8556
+ ownershipPercentage: 40,
8557
+ customerId: "cust-005"
8558
+ }
8559
+ ]
8560
+ };
8561
+
8562
+ // src/lib/mock-data/document-data.ts
8563
+ var mockBusinessDocuments = {
8564
+ "8112488": [
8565
+ {
8566
+ id: "doc-001",
8567
+ name: "Certificate of Incorporation.pdf",
8568
+ type: "BUSINESS_LICENSE",
8569
+ description: "Official certificate of incorporation from Delaware",
8570
+ size: "2.3 MB",
8571
+ uploadedBy: "John Smith",
8572
+ uploadedAt: "2024-01-10T10:30:00Z"
8573
+ },
8574
+ {
8575
+ id: "doc-002",
8576
+ name: "Tax_ID_Verification.pdf",
8577
+ type: "TAX_DOCUMENT",
8578
+ description: "IRS EIN verification letter",
8579
+ size: "1.1 MB",
8580
+ uploadedBy: "Sarah Johnson",
8581
+ uploadedAt: "2024-01-12T14:20:00Z"
8582
+ },
8583
+ {
8584
+ id: "doc-003",
8585
+ name: "Business_Address_Proof.pdf",
8586
+ type: "PROOF_OF_ADDRESS",
8587
+ description: "Utility bill for business address",
8588
+ size: "0.8 MB",
8589
+ uploadedBy: "John Smith",
8590
+ uploadedAt: "2024-01-15T09:15:00Z"
8591
+ },
8592
+ {
8593
+ id: "doc-004",
8594
+ name: "Operating_Agreement.pdf",
8595
+ type: "OTHER",
8596
+ description: "Company operating agreement and bylaws",
8597
+ size: "3.5 MB",
8598
+ uploadedBy: "Legal Team",
8599
+ uploadedAt: "2024-01-08T16:45:00Z"
8600
+ }
8601
+ ],
8602
+ "8112489": [
8603
+ {
8604
+ id: "doc-005",
8605
+ name: "Business_License_2024.pdf",
8606
+ type: "BUSINESS_LICENSE",
8607
+ size: "1.5 MB",
8608
+ uploadedBy: "Emily Davis",
8609
+ uploadedAt: "2024-01-05T11:00:00Z"
8610
+ }
8611
+ ]
8612
+ };
8613
+
8614
+ // src/lib/mock-data/business-account-data.ts
8615
+ var mockBusinessAccounts = {
8616
+ "8112488": [
8617
+ {
8618
+ id: "acc-001",
8619
+ name: "Primary Operating Account",
8620
+ number: "****7890",
8621
+ type: "checking",
8622
+ status: "active",
8623
+ balance: "$125,450.00",
8624
+ currency: "USD",
8625
+ institution: "Chase Bank",
8626
+ routingNumber: "021000021",
8627
+ country: "US"
8628
+ },
8629
+ {
8630
+ id: "acc-002",
8631
+ name: "Business Savings",
8632
+ number: "****4567",
8633
+ type: "savings",
8634
+ status: "active",
8635
+ balance: "$45,230.00",
8636
+ currency: "USD",
8637
+ institution: "Chase Bank",
8638
+ routingNumber: "021000021",
8639
+ country: "US"
8640
+ },
8641
+ {
8642
+ id: "acc-003",
8643
+ name: "Payroll Account",
8644
+ number: "****1234",
8645
+ type: "checking",
8646
+ status: "active",
8647
+ balance: "$78,900.00",
8648
+ currency: "USD",
8649
+ institution: "Wells Fargo",
8650
+ routingNumber: "121000248",
8651
+ country: "US"
8652
+ }
8653
+ ]
8654
+ };
8655
+ var UBOCard = ({ ubos }) => {
8656
+ const columns2 = [
8237
8657
  {
8238
8658
  key: "name",
8239
- title: "Account Name",
8240
- sortable: true
8659
+ title: "Name",
8660
+ sortable: true,
8661
+ width: "40%",
8662
+ render: (value, row) => /* @__PURE__ */ jsxRuntime.jsx(
8663
+ reactRouterDom.Link,
8664
+ {
8665
+ to: `/customer/${row.customerId}`,
8666
+ className: "text-primary hover:underline font-medium",
8667
+ children: value
8668
+ }
8669
+ )
8241
8670
  },
8242
8671
  {
8243
- key: "balance",
8244
- title: "Available Balance",
8672
+ key: "title",
8673
+ title: "Title",
8245
8674
  sortable: true,
8246
- align: "right"
8675
+ width: "40%"
8247
8676
  },
8248
8677
  {
8249
- key: "status",
8250
- title: "Status",
8251
- render: (value) => /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status: value })
8678
+ key: "ownershipPercentage",
8679
+ title: "Ownership %",
8680
+ sortable: true,
8681
+ width: "20%",
8682
+ align: "right",
8683
+ render: (value) => `${value}%`
8252
8684
  }
8253
8685
  ];
8254
- if (!business) {
8255
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container mx-auto px-4 py-8", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
8256
- /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-2xl font-bold mb-2", children: "Business Not Found" }),
8257
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground mb-4", children: "The business could not be found." })
8258
- ] }) });
8259
- }
8260
- return /* @__PURE__ */ jsxRuntime.jsx(
8261
- PageLayout,
8262
- {
8263
- title: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
8264
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: business.businessName }),
8265
- /* @__PURE__ */ jsxRuntime.jsx(
8266
- EditableInfoField,
8267
- {
8268
- label: "",
8269
- value: currentStatus,
8270
- options: [
8271
- { value: "active", label: "Active" },
8272
- { value: "inactive", label: "Inactive" },
8273
- { value: "suspended", label: "Suspended" }
8274
- ],
8275
- onChange: (newStatus) => setCurrentStatus(newStatus),
8276
- renderValue: (value) => /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status: value.toUpperCase() }),
8277
- className: "inline-block"
8278
- }
8279
- )
8280
- ] }),
8281
- maxWidth: "full",
8282
- children: /* @__PURE__ */ jsxRuntime.jsxs(Tabs, { defaultValue: "profile", className: "space-y-6", children: [
8283
- /* @__PURE__ */ jsxRuntime.jsxs(TabsList, { className: "inline-flex gap-8 h-auto bg-transparent border-b border-border w-full p-0 rounded-none justify-start", children: [
8284
- /* @__PURE__ */ jsxRuntime.jsx(
8285
- TabsTrigger,
8286
- {
8287
- value: "profile",
8288
- 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",
8289
- children: "Profile"
8290
- }
8291
- ),
8292
- /* @__PURE__ */ jsxRuntime.jsx(
8293
- TabsTrigger,
8294
- {
8295
- value: "kyc",
8296
- 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",
8297
- children: "KYC"
8298
- }
8299
- ),
8300
- /* @__PURE__ */ jsxRuntime.jsx(
8301
- TabsTrigger,
8302
- {
8303
- value: "counterparty",
8304
- 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",
8305
- children: "Counterparty"
8306
- }
8307
- )
8308
- ] }),
8309
- /* @__PURE__ */ jsxRuntime.jsx(TabsContent, { value: "profile", className: "space-y-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col lg:flex-row items-start gap-6", children: [
8310
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-6", children: [
8311
- /* @__PURE__ */ jsxRuntime.jsx(BusinessProfileCard, { isEditing: false, onToggleEdit: () => {
8312
- } }),
8313
- /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
8314
- /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-4", children: [
8315
- /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Accounts" }),
8316
- /* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", children: "+ New Account" })
8317
- ] }),
8318
- /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: /* @__PURE__ */ jsxRuntime.jsx(
8319
- DataTable,
8320
- {
8321
- columns: accountColumns,
8322
- data: businessAccounts,
8323
- emptyMessage: "No accounts found"
8324
- }
8325
- ) })
8326
- ] })
8327
- ] }),
8328
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:w-64", children: /* @__PURE__ */ jsxRuntime.jsx(BusinessStatusCard, { isEditing: false, onToggleEdit: () => {
8329
- } }) })
8330
- ] }) }),
8331
- /* @__PURE__ */ jsxRuntime.jsx(TabsContent, { value: "kyc", className: "space-y-0", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-8 text-center text-muted-foreground", children: "KYC content coming soon" }) }),
8332
- /* @__PURE__ */ jsxRuntime.jsx(TabsContent, { value: "counterparty", className: "space-y-0", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-6", children: businessCounterparties.map((counterparty) => /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
8333
- /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { children: [
8334
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
8335
- /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { className: "text-lg", children: counterparty.name }),
8336
- /* @__PURE__ */ jsxRuntime.jsx(CounterpartyTypeBadge, { type: counterparty.type })
8337
- ] }),
8338
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2 mt-2", children: /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: counterparty.status === "active" ? "default" : "secondary", children: counterparty.status }) })
8339
- ] }),
8340
- /* @__PURE__ */ jsxRuntime.jsxs(CardContent, { className: "space-y-3", children: [
8341
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: counterparty.description }),
8342
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between items-center text-sm", children: [
8343
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Last Transaction" }),
8344
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: counterparty.lastTransaction })
8345
- ] })
8346
- ] })
8347
- ] }, counterparty.id)) }) })
8686
+ return /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
8687
+ /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-4", children: [
8688
+ /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Ultimate Beneficial Owners (UBO)" }),
8689
+ /* @__PURE__ */ jsxRuntime.jsxs(Button, { size: "sm", variant: "ghost", children: [
8690
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-1" }),
8691
+ "Add UBO"
8348
8692
  ] })
8349
- }
8350
- );
8693
+ ] }),
8694
+ /* @__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: [
8695
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Users, { className: "h-5 w-5 opacity-50" }),
8696
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: "No UBOs recorded" })
8697
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(
8698
+ DataTable,
8699
+ {
8700
+ columns: columns2,
8701
+ data: ubos
8702
+ }
8703
+ ) })
8704
+ ] });
8351
8705
  };
8352
- var BusinessDetail_default = Business;
8353
- var CreateBusiness = () => {
8354
- const [businessType, setBusinessType] = React15.useState("");
8355
- return /* @__PURE__ */ jsxRuntime.jsx(
8356
- PageLayout,
8357
- {
8358
- title: "Create Business",
8359
- description: "Create a new business entity with all required information",
8360
- actions: [
8361
- { label: "Cancel", variant: "outline", onClick: () => {
8362
- } },
8363
- { label: "Create Business", variant: "default", onClick: () => {
8364
- } }
8365
- ],
8366
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
8367
- /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-6", children: [
8368
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border pb-4 mb-6", children: [
8369
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-foreground", children: "Business Information" }),
8370
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Basic business details and identification" })
8371
- ] }),
8372
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6", children: [
8373
- /* @__PURE__ */ jsxRuntime.jsx(
8374
- EnhancedInput,
8375
- {
8376
- label: "Business Name",
8377
- placeholder: "Enter business name",
8378
- required: true
8379
- }
8380
- ),
8381
- /* @__PURE__ */ jsxRuntime.jsx(
8382
- EnhancedInput,
8383
- {
8384
- label: "Legal Name",
8385
- placeholder: "Enter legal business name",
8386
- hint: "Official registered business name"
8387
- }
8388
- ),
8389
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
8390
- /* @__PURE__ */ jsxRuntime.jsx(
8391
- EnhancedSelect,
8706
+ var BusinessDocuments = ({ businessId, documents }) => {
8707
+ const [isUploading, setIsUploading] = React15.useState(false);
8708
+ const [showUploadDialog, setShowUploadDialog] = React15.useState(false);
8709
+ const [selectedFile, setSelectedFile] = React15.useState(null);
8710
+ const [documentName, setDocumentName] = React15.useState("");
8711
+ const [description, setDescription] = React15.useState("");
8712
+ const [documentType, setDocumentType] = React15.useState("");
8713
+ const handleFileSelect = (e) => {
8714
+ const file = e.target.files?.[0];
8715
+ if (!file) return;
8716
+ setSelectedFile(file);
8717
+ setDocumentName(file.name);
8718
+ };
8719
+ const handleUploadSubmit = () => {
8720
+ if (!selectedFile || !documentName || !documentType) {
8721
+ toast({
8722
+ title: "Missing Information",
8723
+ description: "Please fill in all required fields",
8724
+ variant: "destructive"
8725
+ });
8726
+ return;
8727
+ }
8728
+ setIsUploading(true);
8729
+ setTimeout(() => {
8730
+ toast({
8731
+ title: "Upload Successful",
8732
+ description: `${documentName} uploaded successfully`
8733
+ });
8734
+ setIsUploading(false);
8735
+ setShowUploadDialog(false);
8736
+ resetForm();
8737
+ }, 1e3);
8738
+ };
8739
+ const resetForm = () => {
8740
+ setSelectedFile(null);
8741
+ setDocumentName("");
8742
+ setDescription("");
8743
+ setDocumentType("");
8744
+ const fileInput = document.getElementById("file-upload");
8745
+ if (fileInput) fileInput.value = "";
8746
+ };
8747
+ const handleCancelUpload = () => {
8748
+ setShowUploadDialog(false);
8749
+ resetForm();
8750
+ };
8751
+ const isImageType = (name) => {
8752
+ const imageExtensions = [".jpg", ".jpeg", ".png", ".gif", ".webp", ".bmp"];
8753
+ return imageExtensions.some((ext) => name.toLowerCase().endsWith(ext));
8754
+ };
8755
+ const getFileIcon = (type) => {
8756
+ return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "h-5 w-5" });
8757
+ };
8758
+ const getFileTypeColor = (type) => {
8759
+ switch (type.toUpperCase()) {
8760
+ case "PDF":
8761
+ return "text-red-500";
8762
+ case "DOCX":
8763
+ case "DOC":
8764
+ return "text-blue-500";
8765
+ case "XLSX":
8766
+ case "XLS":
8767
+ return "text-green-500";
8768
+ case "JPG":
8769
+ case "JPEG":
8770
+ case "PNG":
8771
+ return "text-purple-500";
8772
+ default:
8773
+ return "text-muted-foreground";
8774
+ }
8775
+ };
8776
+ const documentTypeOptions = [
8777
+ { value: "BUSINESS_LICENSE", label: "Business License" },
8778
+ { value: "TAX_DOCUMENT", label: "Tax Document" },
8779
+ { value: "PROOF_OF_ADDRESS", label: "Proof of Address" },
8780
+ { value: "BANK_STATEMENT", label: "Bank Statement" },
8781
+ { value: "INCORPORATION_DOCS", label: "Incorporation Documents" },
8782
+ { value: "OPERATING_AGREEMENT", label: "Operating Agreement" },
8783
+ { value: "OTHER", label: "Other" }
8784
+ ];
8785
+ return /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
8786
+ /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-4", children: [
8787
+ /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Documents" }),
8788
+ /* @__PURE__ */ jsxRuntime.jsxs(
8789
+ Button,
8790
+ {
8791
+ onClick: () => setShowUploadDialog(true),
8792
+ size: "sm",
8793
+ variant: "ghost",
8794
+ className: "gap-2",
8795
+ children: [
8796
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Upload, { className: "h-4 w-4" }),
8797
+ "Upload"
8798
+ ]
8799
+ }
8800
+ )
8801
+ ] }),
8802
+ /* @__PURE__ */ jsxRuntime.jsxs(CardContent, { children: [
8803
+ showUploadDialog && reactDom.createPortal(
8804
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fixed inset-0 z-[100] flex items-center justify-center p-4", children: [
8805
+ /* @__PURE__ */ jsxRuntime.jsx(
8806
+ "div",
8807
+ {
8808
+ className: "fixed inset-0 bg-background/80 backdrop-blur-sm",
8809
+ onClick: handleCancelUpload
8810
+ }
8811
+ ),
8812
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative bg-card border rounded-lg shadow-lg max-w-lg w-full p-6 z-[101]", children: [
8813
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-6", children: [
8814
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-2xl font-bold", children: "Upload Document" }),
8815
+ /* @__PURE__ */ jsxRuntime.jsx(
8816
+ Button,
8392
8817
  {
8393
- label: "Business Type",
8394
- placeholder: "Select business type",
8395
- value: businessType,
8396
- onValueChange: setBusinessType,
8397
- options: [
8398
- { value: "corporation", label: "Corporation" },
8399
- { value: "llc", label: "LLC" },
8400
- { value: "partnership", label: "Partnership" },
8401
- { value: "sole_proprietorship", label: "Sole Proprietorship" }
8402
- ]
8818
+ variant: "ghost",
8819
+ size: "sm",
8820
+ className: "h-8 w-8 p-0",
8821
+ onClick: handleCancelUpload,
8822
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" })
8823
+ }
8824
+ )
8825
+ ] }),
8826
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
8827
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-2 border-dashed rounded-lg p-6 text-center hover:border-primary/50 transition-colors", children: [
8828
+ /* @__PURE__ */ jsxRuntime.jsx(
8829
+ "input",
8830
+ {
8831
+ type: "file",
8832
+ id: "file-upload-dialog",
8833
+ className: "hidden",
8834
+ onChange: handleFileSelect,
8835
+ disabled: isUploading
8836
+ }
8837
+ ),
8838
+ /* @__PURE__ */ jsxRuntime.jsxs(
8839
+ "label",
8840
+ {
8841
+ htmlFor: "file-upload-dialog",
8842
+ className: cn(
8843
+ "cursor-pointer flex flex-col items-center gap-2",
8844
+ isUploading && "opacity-50 cursor-not-allowed"
8845
+ ),
8846
+ children: [
8847
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Upload, { className: "h-8 w-8 text-muted-foreground" }),
8848
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
8849
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium text-foreground", children: selectedFile ? "Change file" : "Click to upload or drag and drop" }),
8850
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground mt-1", children: "PDF, DOC, DOCX, JPG, PNG up to 10MB" })
8851
+ ] })
8852
+ ]
8853
+ }
8854
+ )
8855
+ ] }),
8856
+ selectedFile && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-3 bg-muted/50 rounded-lg", children: [
8857
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Selected file:" }),
8858
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium", children: selectedFile.name }),
8859
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground", children: [
8860
+ (selectedFile.size / 1024 / 1024).toFixed(2),
8861
+ " MB"
8862
+ ] })
8863
+ ] }),
8864
+ /* @__PURE__ */ jsxRuntime.jsx(
8865
+ EnhancedInput,
8866
+ {
8867
+ label: "Document name",
8868
+ value: documentName,
8869
+ onChange: (e) => setDocumentName(e.target.value),
8870
+ placeholder: "Enter document name"
8403
8871
  }
8404
8872
  ),
8405
- businessType && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
8406
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", children: "Preview:" }),
8407
- /* @__PURE__ */ jsxRuntime.jsx(BusinessTypeBadge, { type: businessType })
8408
- ] })
8873
+ /* @__PURE__ */ jsxRuntime.jsx(
8874
+ EnhancedTextarea,
8875
+ {
8876
+ label: "Description",
8877
+ value: description,
8878
+ onChange: (e) => setDescription(e.target.value),
8879
+ placeholder: "Enter document description (optional)",
8880
+ rows: 3
8881
+ }
8882
+ ),
8883
+ /* @__PURE__ */ jsxRuntime.jsx(
8884
+ EnhancedSelect,
8885
+ {
8886
+ label: "Document type",
8887
+ value: documentType,
8888
+ onValueChange: setDocumentType,
8889
+ placeholder: "Select document type",
8890
+ options: documentTypeOptions
8891
+ }
8892
+ )
8409
8893
  ] }),
8410
- /* @__PURE__ */ jsxRuntime.jsx(
8411
- EnhancedInput,
8412
- {
8413
- label: "Tax ID (EIN)",
8414
- placeholder: "12-3456789",
8415
- hint: "Employer Identification Number",
8416
- required: true
8417
- }
8418
- ),
8419
- /* @__PURE__ */ jsxRuntime.jsx(
8420
- EnhancedInput,
8421
- {
8422
- label: "Registration Number",
8423
- placeholder: "Enter registration number",
8424
- hint: "State business registration number"
8425
- }
8426
- ),
8427
- /* @__PURE__ */ jsxRuntime.jsx(
8428
- EnhancedSelect,
8429
- {
8430
- label: "Industry",
8431
- placeholder: "Select industry",
8432
- options: [
8433
- { value: "technology", label: "Technology" },
8434
- { value: "finance", label: "Finance" },
8435
- { value: "healthcare", label: "Healthcare" },
8436
- { value: "manufacturing", label: "Manufacturing" },
8437
- { value: "retail", label: "Retail" },
8438
- { value: "other", label: "Other" }
8439
- ]
8440
- }
8441
- )
8894
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3 mt-6", children: [
8895
+ /* @__PURE__ */ jsxRuntime.jsx(
8896
+ Button,
8897
+ {
8898
+ variant: "outline",
8899
+ onClick: handleCancelUpload,
8900
+ disabled: isUploading,
8901
+ className: "flex-1",
8902
+ children: "Cancel"
8903
+ }
8904
+ ),
8905
+ /* @__PURE__ */ jsxRuntime.jsx(
8906
+ Button,
8907
+ {
8908
+ onClick: handleUploadSubmit,
8909
+ disabled: isUploading,
8910
+ className: "flex-1",
8911
+ children: isUploading ? "Uploading..." : "Upload"
8912
+ }
8913
+ )
8914
+ ] })
8442
8915
  ] })
8443
8916
  ] }),
8444
- /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-6", children: [
8445
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border pb-4 mb-6", children: [
8446
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-foreground", children: "Contact Information" }),
8447
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Business address and contact details" })
8448
- ] }),
8449
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6", children: [
8450
- /* @__PURE__ */ jsxRuntime.jsx(
8451
- EnhancedInput,
8452
- {
8453
- label: "Street Address",
8454
- placeholder: "Enter street address",
8455
- required: true
8456
- }
8457
- ),
8458
- /* @__PURE__ */ jsxRuntime.jsx(
8459
- EnhancedInput,
8460
- {
8461
- label: "City",
8462
- placeholder: "Enter city",
8463
- required: true
8464
- }
8465
- ),
8466
- /* @__PURE__ */ jsxRuntime.jsx(
8467
- EnhancedInput,
8468
- {
8469
- label: "State",
8470
- placeholder: "Enter state",
8471
- required: true
8472
- }
8473
- ),
8474
- /* @__PURE__ */ jsxRuntime.jsx(
8475
- EnhancedInput,
8476
- {
8477
- label: "Postal Code",
8478
- placeholder: "12345",
8479
- required: true
8480
- }
8481
- ),
8482
- /* @__PURE__ */ jsxRuntime.jsx(
8483
- EnhancedSelect,
8484
- {
8485
- label: "Country",
8486
- placeholder: "Select country",
8487
- options: [
8488
- { value: "US", label: "United States" },
8489
- { value: "CA", label: "Canada" },
8490
- { value: "GB", label: "United Kingdom" },
8491
- { value: "DE", label: "Germany" }
8492
- ]
8493
- }
8494
- ),
8495
- /* @__PURE__ */ jsxRuntime.jsx(
8496
- EnhancedInput,
8497
- {
8498
- label: "Phone Number",
8499
- placeholder: "+1 (555) 123-4567",
8500
- required: true
8501
- }
8502
- ),
8503
- /* @__PURE__ */ jsxRuntime.jsx(
8504
- EnhancedInput,
8505
- {
8506
- label: "Email Address",
8507
- placeholder: "contact@business.com",
8508
- type: "email",
8509
- required: true
8510
- }
8511
- ),
8512
- /* @__PURE__ */ jsxRuntime.jsx(
8513
- EnhancedInput,
8917
+ document.body
8918
+ ),
8919
+ documents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 py-4 text-sm text-muted-foreground", children: [
8920
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "h-5 w-5 opacity-50" }),
8921
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: "No documents uploaded yet" })
8922
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2", children: documents.map((doc) => /* @__PURE__ */ jsxRuntime.jsxs(
8923
+ "div",
8924
+ {
8925
+ className: "border rounded-lg hover:bg-muted/30 transition-colors overflow-hidden",
8926
+ children: [
8927
+ isImageType(doc.name) && doc.url && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full bg-muted/50", children: /* @__PURE__ */ jsxRuntime.jsx(
8928
+ "img",
8514
8929
  {
8515
- label: "Website",
8516
- placeholder: "https://www.business.com",
8517
- type: "url"
8930
+ src: doc.url,
8931
+ alt: doc.name,
8932
+ className: "w-full h-48 object-cover"
8518
8933
  }
8519
- )
8520
- ] })
8521
- ] }),
8522
- /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-6", children: [
8523
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border pb-4 mb-6", children: [
8524
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-foreground", children: "Additional Information" }),
8525
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Optional business description and notes" })
8526
- ] }),
8527
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-6", children: /* @__PURE__ */ jsxRuntime.jsx(
8528
- EnhancedTextarea,
8529
- {
8530
- label: "Business Description",
8531
- placeholder: "Describe your business activities and services",
8532
- hint: "Brief description of what your business does"
8533
- }
8534
- ) })
8934
+ ) }),
8935
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between p-3", children: [
8936
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 flex-1 min-w-0", children: [
8937
+ !isImageType(doc.name) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(getFileTypeColor(doc.type)), children: getFileIcon(doc.type) }),
8938
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
8939
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-medium text-sm truncate", children: doc.name }),
8940
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-xs px-2 py-0.5 rounded-full bg-muted inline-block mt-1", getFileTypeColor(doc.type)), children: doc.type }),
8941
+ doc.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground mt-1", children: doc.description }),
8942
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground mt-1", children: [
8943
+ doc.size,
8944
+ " \u2022 Uploaded by ",
8945
+ doc.uploadedBy,
8946
+ " \u2022 ",
8947
+ new Date(doc.uploadedAt).toLocaleDateString()
8948
+ ] })
8949
+ ] })
8950
+ ] }),
8951
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
8952
+ /* @__PURE__ */ jsxRuntime.jsx(
8953
+ Button,
8954
+ {
8955
+ variant: "ghost",
8956
+ size: "sm",
8957
+ className: "h-8 w-8 p-0",
8958
+ onClick: () => toast({ title: "Preview", description: `Viewing ${doc.name}` }),
8959
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Eye, { className: "h-4 w-4" })
8960
+ }
8961
+ ),
8962
+ /* @__PURE__ */ jsxRuntime.jsx(
8963
+ Button,
8964
+ {
8965
+ variant: "ghost",
8966
+ size: "sm",
8967
+ className: "h-8 w-8 p-0",
8968
+ onClick: () => toast({ title: "Download", description: `Downloading ${doc.name}` }),
8969
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { className: "h-4 w-4" })
8970
+ }
8971
+ ),
8972
+ /* @__PURE__ */ jsxRuntime.jsx(
8973
+ Button,
8974
+ {
8975
+ variant: "ghost",
8976
+ size: "sm",
8977
+ className: "h-8 w-8 p-0 text-muted-foreground hover:text-foreground",
8978
+ onClick: () => toast({ title: "Delete", description: `Deleted ${doc.name}` }),
8979
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Trash2, { className: "h-4 w-4" })
8980
+ }
8981
+ )
8982
+ ] })
8983
+ ] })
8984
+ ]
8985
+ },
8986
+ doc.id
8987
+ )) })
8988
+ ] })
8989
+ ] });
8990
+ };
8991
+ var Business = () => {
8992
+ const { id } = reactRouterDom.useParams();
8993
+ const navigate = reactRouterDom.useNavigate();
8994
+ const business = mockBusinessesList.find((b) => b.id === id);
8995
+ const identityVerification = id ? mockIdentityVerifications[id] : void 0;
8996
+ const businessUBOs = id ? mockBusinessUBOs[id] || [] : [];
8997
+ const businessDocuments = id ? mockBusinessDocuments[id] || [] : [];
8998
+ const businessAccounts = id ? mockBusinessAccounts[id] || [] : [];
8999
+ const [currentStatus, setCurrentStatus] = React15.useState(business?.status || "active");
9000
+ const [isEditingProfile, setIsEditingProfile] = React15.useState(false);
9001
+ const accountColumns = [
9002
+ {
9003
+ key: "number",
9004
+ title: "Account Number",
9005
+ sortable: true,
9006
+ width: "40%"
9007
+ },
9008
+ {
9009
+ key: "routingNumber",
9010
+ title: "Routing Number",
9011
+ sortable: true,
9012
+ width: "40%"
9013
+ },
9014
+ {
9015
+ key: "type",
9016
+ title: "Account Type",
9017
+ sortable: true,
9018
+ width: "20%",
9019
+ align: "right",
9020
+ render: (value) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "capitalize", children: value })
9021
+ }
9022
+ ];
9023
+ if (!business) {
9024
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container mx-auto px-4 py-8", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
9025
+ /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-2xl font-bold mb-2", children: "Business Not Found" }),
9026
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground mb-4", children: "The business could not be found." })
9027
+ ] }) });
9028
+ }
9029
+ return /* @__PURE__ */ jsxRuntime.jsx(
9030
+ PageLayout,
9031
+ {
9032
+ title: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
9033
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: business.businessName }),
9034
+ /* @__PURE__ */ jsxRuntime.jsx(
9035
+ EditableInfoField,
9036
+ {
9037
+ label: "",
9038
+ value: currentStatus,
9039
+ options: [
9040
+ { value: "active", label: "Active" },
9041
+ { value: "inactive", label: "Inactive" },
9042
+ { value: "suspended", label: "Suspended" }
9043
+ ],
9044
+ onChange: (newStatus) => setCurrentStatus(newStatus),
9045
+ renderValue: (value) => /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status: value.toUpperCase() }),
9046
+ className: "inline-block"
9047
+ }
9048
+ ),
9049
+ /* @__PURE__ */ jsxRuntime.jsx(CIPStatusBadge, { status: business.cipStatus }),
9050
+ /* @__PURE__ */ jsxRuntime.jsx(EntityTypeBadge, { type: business.type }),
9051
+ /* @__PURE__ */ jsxRuntime.jsx(SubTypeBadge, { subType: business.subType })
9052
+ ] }),
9053
+ actions: [
9054
+ {
9055
+ label: "Account",
9056
+ variant: "outline",
9057
+ onClick: () => navigate(`/business/${id}/accounts`),
9058
+ icon: lucideReact.Wallet
9059
+ },
9060
+ {
9061
+ label: "Counterparty",
9062
+ variant: "outline",
9063
+ onClick: () => navigate(`/business/${id}/counterparties`),
9064
+ icon: lucideReact.Users
9065
+ }
9066
+ ],
9067
+ maxWidth: "full",
9068
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col lg:flex-row items-start gap-4", children: [
9069
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-4", children: [
9070
+ /* @__PURE__ */ jsxRuntime.jsx(
9071
+ BusinessProfileCard,
9072
+ {
9073
+ identityVerification,
9074
+ isEditing: isEditingProfile,
9075
+ onToggleEdit: () => setIsEditingProfile(!isEditingProfile)
9076
+ }
9077
+ ),
9078
+ /* @__PURE__ */ jsxRuntime.jsx(UBOCard, { ubos: businessUBOs }),
9079
+ /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
9080
+ /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-4", children: [
9081
+ /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "External Accounts" }),
9082
+ /* @__PURE__ */ jsxRuntime.jsxs(Button, { size: "sm", variant: "ghost", children: [
9083
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-1" }),
9084
+ "Account"
9085
+ ] })
9086
+ ] }),
9087
+ /* @__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: [
9088
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Wallet, { className: "h-5 w-5 opacity-50" }),
9089
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: "No external accounts found" })
9090
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(
9091
+ DataTable,
9092
+ {
9093
+ columns: accountColumns,
9094
+ data: businessAccounts
9095
+ }
9096
+ ) })
9097
+ ] }),
9098
+ /* @__PURE__ */ jsxRuntime.jsx(BusinessDocuments, { businessId: id || "", documents: businessDocuments })
9099
+ ] }),
9100
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:w-64", children: /* @__PURE__ */ jsxRuntime.jsx(BusinessStatusCard, { isEditing: false, onToggleEdit: () => {
9101
+ } }) })
9102
+ ] })
9103
+ }
9104
+ );
9105
+ };
9106
+ var BusinessDetail_default = Business;
9107
+ var CreateBusiness = () => {
9108
+ const navigate = reactRouterDom.useNavigate();
9109
+ const [businessType, setBusinessType] = React15.useState("");
9110
+ const form = reactHookForm.useForm({
9111
+ resolver: zod$1.zodResolver(businessProfileSchema),
9112
+ defaultValues: {
9113
+ legalName: "",
9114
+ dbaName: "",
9115
+ businessType: "",
9116
+ taxId: "",
9117
+ formationDate: "",
9118
+ idType: "EIN",
9119
+ incorporationState: "",
9120
+ website: "",
9121
+ email: "",
9122
+ mobilePhone: "",
9123
+ mcc: "",
9124
+ naics: "",
9125
+ achCompanyId: "",
9126
+ achCompanyName: "",
9127
+ externalId: "",
9128
+ contactFirstName: "",
9129
+ contactLastName: "",
9130
+ contactEmail: "",
9131
+ contactPhone: "",
9132
+ address: {
9133
+ streetAddress: "",
9134
+ apartment: "",
9135
+ city: "",
9136
+ state: "",
9137
+ postalCode: "",
9138
+ country: "US",
9139
+ addressType: "business"
9140
+ }
9141
+ }
9142
+ });
9143
+ const onSubmit = (data) => {
9144
+ console.log("Business data:", data);
9145
+ navigate("/business");
9146
+ };
9147
+ return /* @__PURE__ */ jsxRuntime.jsx(
9148
+ PageLayout,
9149
+ {
9150
+ title: "Create Business",
9151
+ actions: [
9152
+ { label: "Cancel", variant: "outline", onClick: () => navigate("/business") },
9153
+ { label: "Create Business", variant: "default", onClick: form.handleSubmit(onSubmit) }
9154
+ ],
9155
+ children: /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: form.handleSubmit(onSubmit), className: "space-y-6", children: [
9156
+ /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-6", children: [
9157
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-b border-border pb-4 mb-6", children: /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-foreground", children: "Business Information" }) }),
9158
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6", children: [
9159
+ /* @__PURE__ */ jsxRuntime.jsx(
9160
+ EnhancedInput,
9161
+ {
9162
+ label: "Legal Name",
9163
+ placeholder: "Enter legal business name",
9164
+ required: true,
9165
+ ...form.register("legalName")
9166
+ }
9167
+ ),
9168
+ /* @__PURE__ */ jsxRuntime.jsx(
9169
+ EnhancedInput,
9170
+ {
9171
+ label: "DBA Name",
9172
+ placeholder: "Enter DBA name",
9173
+ hint: "Doing Business As name",
9174
+ ...form.register("dbaName")
9175
+ }
9176
+ ),
9177
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
9178
+ /* @__PURE__ */ jsxRuntime.jsx(
9179
+ EnhancedSelect,
9180
+ {
9181
+ label: "Business Type",
9182
+ placeholder: "Select business type",
9183
+ value: businessType,
9184
+ onValueChange: (value) => {
9185
+ setBusinessType(value);
9186
+ form.setValue("businessType", value);
9187
+ },
9188
+ options: [
9189
+ { value: "corporation", label: "Corporation" },
9190
+ { value: "llc", label: "LLC" },
9191
+ { value: "partnership", label: "Partnership" },
9192
+ { value: "sole_proprietorship", label: "Sole Proprietorship" }
9193
+ ]
9194
+ }
9195
+ ),
9196
+ businessType && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
9197
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", children: "Preview:" }),
9198
+ /* @__PURE__ */ jsxRuntime.jsx(BusinessTypeBadge, { type: businessType })
9199
+ ] })
9200
+ ] }),
9201
+ /* @__PURE__ */ jsxRuntime.jsx(
9202
+ EnhancedInput,
9203
+ {
9204
+ label: "Tax ID (EIN)",
9205
+ placeholder: "12-3456789",
9206
+ hint: "Employer Identification Number",
9207
+ required: true,
9208
+ ...form.register("taxId")
9209
+ }
9210
+ ),
9211
+ /* @__PURE__ */ jsxRuntime.jsx(
9212
+ EnhancedInput,
9213
+ {
9214
+ label: "Formation Date",
9215
+ placeholder: "YYYY-MM-DD",
9216
+ type: "date",
9217
+ ...form.register("formationDate")
9218
+ }
9219
+ ),
9220
+ /* @__PURE__ */ jsxRuntime.jsx(
9221
+ EnhancedInput,
9222
+ {
9223
+ label: "Incorporation State",
9224
+ placeholder: "Enter state",
9225
+ ...form.register("incorporationState")
9226
+ }
9227
+ ),
9228
+ /* @__PURE__ */ jsxRuntime.jsx(
9229
+ EnhancedInput,
9230
+ {
9231
+ label: "Website",
9232
+ placeholder: "https://www.business.com",
9233
+ type: "url",
9234
+ ...form.register("website")
9235
+ }
9236
+ ),
9237
+ /* @__PURE__ */ jsxRuntime.jsx(
9238
+ EnhancedInput,
9239
+ {
9240
+ label: "Email Address",
9241
+ placeholder: "contact@business.com",
9242
+ type: "email",
9243
+ ...form.register("email")
9244
+ }
9245
+ ),
9246
+ /* @__PURE__ */ jsxRuntime.jsx(
9247
+ EnhancedInput,
9248
+ {
9249
+ label: "Mobile Phone",
9250
+ placeholder: "+1 (555) 123-4567",
9251
+ ...form.register("mobilePhone")
9252
+ }
9253
+ ),
9254
+ /* @__PURE__ */ jsxRuntime.jsx(
9255
+ EnhancedInput,
9256
+ {
9257
+ label: "MCC",
9258
+ placeholder: "1234",
9259
+ hint: "4-digit Merchant Category Code",
9260
+ ...form.register("mcc")
9261
+ }
9262
+ ),
9263
+ /* @__PURE__ */ jsxRuntime.jsx(
9264
+ EnhancedInput,
9265
+ {
9266
+ label: "NAICS",
9267
+ placeholder: "123456",
9268
+ hint: "6-digit industry classification",
9269
+ ...form.register("naics")
9270
+ }
9271
+ ),
9272
+ /* @__PURE__ */ jsxRuntime.jsx(
9273
+ EnhancedInput,
9274
+ {
9275
+ label: "ACH Company ID",
9276
+ placeholder: "1234567890",
9277
+ hint: "10-digit ACH identifier",
9278
+ ...form.register("achCompanyId")
9279
+ }
9280
+ ),
9281
+ /* @__PURE__ */ jsxRuntime.jsx(
9282
+ EnhancedInput,
9283
+ {
9284
+ label: "ACH Company Name",
9285
+ placeholder: "Enter ACH company name",
9286
+ ...form.register("achCompanyName")
9287
+ }
9288
+ ),
9289
+ /* @__PURE__ */ jsxRuntime.jsx(
9290
+ EnhancedInput,
9291
+ {
9292
+ label: "External ID",
9293
+ placeholder: "UUID format",
9294
+ hint: "External system identifier",
9295
+ ...form.register("externalId")
9296
+ }
9297
+ )
9298
+ ] })
9299
+ ] }),
9300
+ /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-6", children: [
9301
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-b border-border pb-4 mb-6", children: /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-foreground", children: "Business Address" }) }),
9302
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6", children: [
9303
+ /* @__PURE__ */ jsxRuntime.jsx(
9304
+ EnhancedInput,
9305
+ {
9306
+ label: "Street Address",
9307
+ placeholder: "Enter street address",
9308
+ required: true,
9309
+ ...form.register("address.streetAddress")
9310
+ }
9311
+ ),
9312
+ /* @__PURE__ */ jsxRuntime.jsx(
9313
+ EnhancedInput,
9314
+ {
9315
+ label: "Apartment/Suite",
9316
+ placeholder: "Enter apartment or suite number",
9317
+ ...form.register("address.apartment")
9318
+ }
9319
+ ),
9320
+ /* @__PURE__ */ jsxRuntime.jsx(
9321
+ EnhancedInput,
9322
+ {
9323
+ label: "City",
9324
+ placeholder: "Enter city",
9325
+ required: true,
9326
+ ...form.register("address.city")
9327
+ }
9328
+ ),
9329
+ /* @__PURE__ */ jsxRuntime.jsx(
9330
+ EnhancedInput,
9331
+ {
9332
+ label: "State",
9333
+ placeholder: "Enter state",
9334
+ required: true,
9335
+ ...form.register("address.state")
9336
+ }
9337
+ ),
9338
+ /* @__PURE__ */ jsxRuntime.jsx(
9339
+ EnhancedInput,
9340
+ {
9341
+ label: "Postal Code",
9342
+ placeholder: "12345",
9343
+ required: true,
9344
+ ...form.register("address.postalCode")
9345
+ }
9346
+ ),
9347
+ /* @__PURE__ */ jsxRuntime.jsx(
9348
+ EnhancedSelect,
9349
+ {
9350
+ label: "Country",
9351
+ placeholder: "Select country",
9352
+ value: form.watch("address.country"),
9353
+ onValueChange: (value) => form.setValue("address.country", value),
9354
+ options: [
9355
+ { value: "US", label: "United States" },
9356
+ { value: "CA", label: "Canada" },
9357
+ { value: "GB", label: "United Kingdom" },
9358
+ { value: "DE", label: "Germany" }
9359
+ ]
9360
+ }
9361
+ )
9362
+ ] })
9363
+ ] }),
9364
+ /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-6", children: [
9365
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-b border-border pb-4 mb-6", children: /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-foreground", children: "Contact Information" }) }),
9366
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6", children: [
9367
+ /* @__PURE__ */ jsxRuntime.jsx(
9368
+ EnhancedInput,
9369
+ {
9370
+ label: "Contact First Name",
9371
+ placeholder: "Enter first name",
9372
+ ...form.register("contactFirstName")
9373
+ }
9374
+ ),
9375
+ /* @__PURE__ */ jsxRuntime.jsx(
9376
+ EnhancedInput,
9377
+ {
9378
+ label: "Contact Last Name",
9379
+ placeholder: "Enter last name",
9380
+ ...form.register("contactLastName")
9381
+ }
9382
+ ),
9383
+ /* @__PURE__ */ jsxRuntime.jsx(
9384
+ EnhancedInput,
9385
+ {
9386
+ label: "Contact Email",
9387
+ placeholder: "contact@business.com",
9388
+ type: "email",
9389
+ ...form.register("contactEmail")
9390
+ }
9391
+ ),
9392
+ /* @__PURE__ */ jsxRuntime.jsx(
9393
+ EnhancedInput,
9394
+ {
9395
+ label: "Contact Phone",
9396
+ placeholder: "+1 (555) 123-4567",
9397
+ ...form.register("contactPhone")
9398
+ }
9399
+ )
9400
+ ] })
9401
+ ] })
9402
+ ] })
9403
+ }
9404
+ );
9405
+ };
9406
+ var Create_default = CreateBusiness;
9407
+ var Cases = () => {
9408
+ return /* @__PURE__ */ jsxRuntime.jsx(
9409
+ PageLayout,
9410
+ {
9411
+ title: "Cases",
9412
+ description: "Manage and track investigation cases",
9413
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-12 text-muted-foreground", children: "Cases content coming soon" })
9414
+ }
9415
+ );
9416
+ };
9417
+ var Cases_default = Cases;
9418
+
9419
+ // src/lib/mock-data/counterparties-list-data.ts
9420
+ var mockCounterpartiesList = [
9421
+ {
9422
+ id: "cp-001",
9423
+ name: "Acme Corporation",
9424
+ type: "BUSINESS",
9425
+ status: "ACTIVE",
9426
+ productName: "Business Banking Pro",
9427
+ created: "2024-01-15",
9428
+ modified: "2024-01-20"
9429
+ },
9430
+ {
9431
+ id: "cp-002",
9432
+ name: "John Smith",
9433
+ type: "INDIVIDUAL",
9434
+ status: "ACTIVE",
9435
+ productName: "Personal Banking",
9436
+ created: "2024-01-10",
9437
+ modified: "2024-01-18"
9438
+ },
9439
+ {
9440
+ id: "cp-003",
9441
+ name: "Global Tech Solutions",
9442
+ type: "BUSINESS",
9443
+ status: "ACTIVE",
9444
+ productName: "Enterprise Banking",
9445
+ created: "2024-01-08",
9446
+ modified: "2024-01-22"
9447
+ },
9448
+ {
9449
+ id: "cp-004",
9450
+ name: "City Government",
9451
+ type: "GOVERNMENT",
9452
+ status: "ACTIVE",
9453
+ productName: "Government Banking",
9454
+ created: "2024-01-05",
9455
+ modified: "2024-01-15"
9456
+ },
9457
+ {
9458
+ id: "cp-005",
9459
+ name: "Hope Foundation",
9460
+ type: "NONPROFIT",
9461
+ status: "ACTIVE",
9462
+ productName: "Non-Profit Banking",
9463
+ created: "2024-01-03",
9464
+ modified: "2024-01-12"
9465
+ },
9466
+ {
9467
+ id: "cp-006",
9468
+ name: "Sarah Johnson",
9469
+ type: "INDIVIDUAL",
9470
+ status: "PENDING",
9471
+ productName: "Personal Banking",
9472
+ created: "2024-01-25",
9473
+ modified: "2024-01-25"
9474
+ },
9475
+ {
9476
+ id: "cp-007",
9477
+ name: "Tech Innovations LLC",
9478
+ type: "BUSINESS",
9479
+ status: "INACTIVE",
9480
+ productName: "Business Banking",
9481
+ created: "2023-12-20",
9482
+ modified: "2024-01-10"
9483
+ },
9484
+ {
9485
+ id: "cp-008",
9486
+ name: "State Department",
9487
+ type: "GOVERNMENT",
9488
+ status: "ACTIVE",
9489
+ productName: "Government Banking Pro",
9490
+ created: "2023-12-15",
9491
+ modified: "2024-01-08"
9492
+ },
9493
+ {
9494
+ id: "cp-009",
9495
+ name: "Michael Chen",
9496
+ type: "INDIVIDUAL",
9497
+ status: "ACTIVE",
9498
+ productName: "Premium Banking",
9499
+ created: "2023-12-10",
9500
+ modified: "2024-01-05"
9501
+ },
9502
+ {
9503
+ id: "cp-010",
9504
+ name: "Green Earth Initiative",
9505
+ type: "NONPROFIT",
9506
+ status: "ACTIVE",
9507
+ productName: "Non-Profit Banking Plus",
9508
+ created: "2023-12-01",
9509
+ modified: "2023-12-28"
9510
+ }
9511
+ ];
9512
+ var Counterparties = () => {
9513
+ const navigate = reactRouterDom.useNavigate();
9514
+ const [counterparties, setCounterparties] = React15.useState(mockCounterpartiesList);
9515
+ const [filteredCounterparties, setFilteredCounterparties] = React15.useState(mockCounterpartiesList);
9516
+ const [sortBy, setSortBy] = React15.useState("created");
9517
+ const [sortDirection, setSortDirection] = React15.useState("desc");
9518
+ const [filters, setFilters] = React15.useState({
9519
+ name: "",
9520
+ type: "",
9521
+ status: "",
9522
+ createdDateStart: void 0,
9523
+ createdDateEnd: void 0
9524
+ });
9525
+ const handleFilterChange = (field, value) => {
9526
+ setFilters((prev) => ({ ...prev, [field]: value }));
9527
+ };
9528
+ const applyFilters = () => {
9529
+ let filtered = counterparties;
9530
+ if (filters.name) {
9531
+ filtered = filtered.filter(
9532
+ (counterparty) => counterparty.name.toLowerCase().includes(filters.name.toLowerCase())
9533
+ );
9534
+ }
9535
+ if (filters.type) {
9536
+ filtered = filtered.filter((counterparty) => counterparty.type === filters.type);
9537
+ }
9538
+ if (filters.status) {
9539
+ filtered = filtered.filter((counterparty) => counterparty.status === filters.status);
9540
+ }
9541
+ if (filters.createdDateStart) {
9542
+ filtered = filtered.filter(
9543
+ (counterparty) => new Date(counterparty.created) >= filters.createdDateStart
9544
+ );
9545
+ }
9546
+ if (filters.createdDateEnd) {
9547
+ filtered = filtered.filter(
9548
+ (counterparty) => new Date(counterparty.created) <= filters.createdDateEnd
9549
+ );
9550
+ }
9551
+ setFilteredCounterparties(filtered);
9552
+ };
9553
+ const resetFilters = () => {
9554
+ setFilters({
9555
+ name: "",
9556
+ type: "",
9557
+ status: "",
9558
+ createdDateStart: void 0,
9559
+ createdDateEnd: void 0
9560
+ });
9561
+ setFilteredCounterparties(counterparties);
9562
+ };
9563
+ const handleSort = (key) => {
9564
+ if (sortBy === key) {
9565
+ setSortDirection(sortDirection === "asc" ? "desc" : "asc");
9566
+ } else {
9567
+ setSortBy(key);
9568
+ setSortDirection("asc");
9569
+ }
9570
+ };
9571
+ const handleRowClick = (counterparty) => {
9572
+ navigate(`/counterparty/${counterparty.id}`);
9573
+ };
9574
+ const columns2 = [
9575
+ {
9576
+ key: "id",
9577
+ title: "Counterparty ID",
9578
+ sortable: true
9579
+ },
9580
+ {
9581
+ key: "name",
9582
+ title: "Name",
9583
+ sortable: true
9584
+ },
9585
+ {
9586
+ key: "type",
9587
+ title: "Type",
9588
+ sortable: true,
9589
+ render: (value) => /* @__PURE__ */ jsxRuntime.jsx(CounterpartyTypeBadge, { type: value })
9590
+ },
9591
+ {
9592
+ key: "status",
9593
+ title: "Status",
9594
+ sortable: true,
9595
+ render: (value) => /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status: value })
9596
+ },
9597
+ {
9598
+ key: "productName",
9599
+ title: "Product Name",
9600
+ sortable: true,
9601
+ render: (value) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary hover:underline cursor-pointer", children: value })
9602
+ },
9603
+ {
9604
+ key: "created",
9605
+ title: "Created",
9606
+ sortable: true
9607
+ },
9608
+ {
9609
+ key: "modified",
9610
+ title: "Modified",
9611
+ sortable: true
9612
+ }
9613
+ ];
9614
+ const sortedCounterparties = [...filteredCounterparties].sort((a, b) => {
9615
+ const aValue = a[sortBy];
9616
+ const bValue = b[sortBy];
9617
+ if (aValue < bValue) return sortDirection === "asc" ? -1 : 1;
9618
+ if (aValue > bValue) return sortDirection === "asc" ? 1 : -1;
9619
+ return 0;
9620
+ });
9621
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-screen bg-gradient-subtle", children: [
9622
+ /* @__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: [
9623
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-3xl font-bold text-foreground mb-2", children: "Counterparties" }) }),
9624
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
9625
+ /* @__PURE__ */ jsxRuntime.jsxs(Sheet, { children: [
9626
+ /* @__PURE__ */ jsxRuntime.jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "outline", className: "gap-2", children: [
9627
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Filter, { className: "h-4 w-4" }),
9628
+ "Filters"
9629
+ ] }) }),
9630
+ /* @__PURE__ */ jsxRuntime.jsxs(SheetContent, { side: "right", className: "w-full sm:max-w-xl overflow-y-auto", children: [
9631
+ /* @__PURE__ */ jsxRuntime.jsx(SheetHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { children: "Counterparty Filters" }) }),
9632
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6 py-6", children: [
9633
+ /* @__PURE__ */ jsxRuntime.jsx(
9634
+ EnhancedInput,
9635
+ {
9636
+ label: "Name",
9637
+ value: filters.name,
9638
+ onChange: (e) => handleFilterChange("name", e.target.value),
9639
+ placeholder: "Enter counterparty name"
9640
+ }
9641
+ ),
9642
+ /* @__PURE__ */ jsxRuntime.jsx(
9643
+ EnhancedSelect,
9644
+ {
9645
+ label: "Type",
9646
+ value: filters.type,
9647
+ onValueChange: (value) => handleFilterChange("type", value),
9648
+ placeholder: "Select type",
9649
+ options: [
9650
+ { value: "BUSINESS", label: "Business" },
9651
+ { value: "INDIVIDUAL", label: "Individual" },
9652
+ { value: "GOVERNMENT", label: "Government" },
9653
+ { value: "NONPROFIT", label: "Non-Profit" }
9654
+ ]
9655
+ }
9656
+ ),
9657
+ /* @__PURE__ */ jsxRuntime.jsx(
9658
+ EnhancedSelect,
9659
+ {
9660
+ label: "Status",
9661
+ value: filters.status,
9662
+ onValueChange: (value) => handleFilterChange("status", value),
9663
+ placeholder: "Select status",
9664
+ options: [
9665
+ { value: "ACTIVE", label: "Active" },
9666
+ { value: "INACTIVE", label: "Inactive" },
9667
+ { value: "PENDING", label: "Pending" },
9668
+ { value: "SUSPENDED", label: "Suspended" }
9669
+ ]
9670
+ }
9671
+ ),
9672
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
9673
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
9674
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: "Created Date Start" }),
9675
+ /* @__PURE__ */ jsxRuntime.jsx(
9676
+ DatePicker,
9677
+ {
9678
+ date: filters.createdDateStart,
9679
+ onDateChange: (date) => handleFilterChange("createdDateStart", date),
9680
+ placeholder: "MM/DD/YYYY",
9681
+ buttonClassName: "w-full",
9682
+ className: "bg-background z-50"
9683
+ }
9684
+ )
9685
+ ] }),
9686
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
9687
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: "Created Date End" }),
9688
+ /* @__PURE__ */ jsxRuntime.jsx(
9689
+ DatePicker,
9690
+ {
9691
+ date: filters.createdDateEnd,
9692
+ onDateChange: (date) => handleFilterChange("createdDateEnd", date),
9693
+ placeholder: "MM/DD/YYYY",
9694
+ buttonClassName: "w-full",
9695
+ className: "bg-background z-50"
9696
+ }
9697
+ )
9698
+ ] })
9699
+ ] })
9700
+ ] }),
9701
+ /* @__PURE__ */ jsxRuntime.jsxs(SheetFooter, { className: "gap-2", children: [
9702
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "outline", onClick: resetFilters, children: "Reset Filters" }),
9703
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: applyFilters, children: "Apply Filters" })
9704
+ ] })
9705
+ ] })
9706
+ ] }),
9707
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: () => navigate("/counterparty/create"), children: "Create Counterparty" })
9708
+ ] })
9709
+ ] }) }) }),
9710
+ /* @__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(
9711
+ DataTable,
9712
+ {
9713
+ columns: columns2,
9714
+ data: sortedCounterparties,
9715
+ sortBy,
9716
+ sortDirection,
9717
+ onSort: handleSort,
9718
+ onRowClick: handleRowClick
9719
+ }
9720
+ ) }) }) })
9721
+ ] });
9722
+ };
9723
+ var Counterparties_default = Counterparties;
9724
+ var mockCounterpartyTimeline = [
9725
+ {
9726
+ id: "1",
9727
+ action: "Counterparty Created",
9728
+ user: "admin",
9729
+ details: "Initial counterparty setup",
9730
+ status: "Active",
9731
+ timestamp: "2024-01-15 10:30:00"
9732
+ },
9733
+ {
9734
+ id: "2",
9735
+ action: "Profile Updated",
9736
+ user: "admin",
9737
+ details: "Updated counterparty information",
9738
+ timestamp: "2024-01-20 14:22:00"
9739
+ },
9740
+ {
9741
+ id: "3",
9742
+ action: "OFAC Check Completed",
9743
+ user: "System",
9744
+ details: "Automated compliance check",
9745
+ status: "Verified",
9746
+ timestamp: "2024-01-20 14:30:00"
9747
+ }
9748
+ ];
9749
+ var CounterpartyStatusCard = ({ isEditing, onToggleEdit, className }) => {
9750
+ const getIcon = (action) => {
9751
+ if (action.includes("Created")) return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Circle, { className: "h-4 w-4" });
9752
+ if (action.includes("Assigned")) return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UserPlus, { className: "h-4 w-4" });
9753
+ if (action.includes("Updated") || action.includes("Modified") || action.includes("Check")) return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Edit, { className: "h-4 w-4" });
9754
+ if (action.includes("Completed") || action.includes("Verified")) return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle, { className: "h-4 w-4" });
9755
+ return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Circle, { className: "h-4 w-4" });
9756
+ };
9757
+ const getStatusColor2 = (status) => {
9758
+ switch (status) {
9759
+ case "Active":
9760
+ case "Verified":
9761
+ return "text-success";
9762
+ case "Pending":
9763
+ return "text-warning";
9764
+ default:
9765
+ return "text-muted-foreground";
9766
+ }
9767
+ };
9768
+ return /* @__PURE__ */ jsxRuntime.jsx(
9769
+ FormCard,
9770
+ {
9771
+ title: "Timeline",
9772
+ className,
9773
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: mockCounterpartyTimeline.map((event, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative pl-6 pb-3", children: [
9774
+ index !== mockCounterpartyTimeline.length - 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute left-[7px] top-5 bottom-0 w-[2px] bg-border" }),
9775
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(
9776
+ "absolute left-0 top-0 flex-none",
9777
+ getStatusColor2(event.status)
9778
+ ), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-4", children: getIcon(event.action) }) }),
9779
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-0.5", children: [
9780
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-medium text-foreground", children: event.action }),
9781
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground", children: [
9782
+ "by ",
9783
+ event.user
9784
+ ] }),
9785
+ event.details && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: event.details }),
9786
+ event.status && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("text-xs font-medium", getStatusColor2(event.status)), children: [
9787
+ "Status: ",
9788
+ event.status
9789
+ ] }),
9790
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground/70 pt-0.5", children: event.timestamp })
9791
+ ] })
9792
+ ] }, event.id)) })
9793
+ }
9794
+ );
9795
+ };
9796
+ var mockPaymentMethods = [
9797
+ {
9798
+ id: "pm-001",
9799
+ type: "Wire Transfer",
9800
+ accountNumber: "****1234",
9801
+ status: "active",
9802
+ default: true
9803
+ },
9804
+ {
9805
+ id: "pm-002",
9806
+ type: "ACH",
9807
+ accountNumber: "****5678",
9808
+ status: "active",
9809
+ default: false
9810
+ }
9811
+ ];
9812
+ var CounterpartyDetail = () => {
9813
+ const { id } = reactRouterDom.useParams();
9814
+ const navigate = reactRouterDom.useNavigate();
9815
+ const counterparty = mockCounterpartiesList.find((c) => c.id === id);
9816
+ const counterpartyDocuments = id ? mockBusinessDocuments[id] || [] : [];
9817
+ const [currentStatus, setCurrentStatus] = React15.useState(counterparty?.status || "ACTIVE");
9818
+ const [isEditingProfile, setIsEditingProfile] = React15.useState(false);
9819
+ const paymentMethodColumns = [
9820
+ {
9821
+ key: "type",
9822
+ title: "Payment Method",
9823
+ sortable: true,
9824
+ width: "30%"
9825
+ },
9826
+ {
9827
+ key: "accountNumber",
9828
+ title: "Account Number",
9829
+ sortable: true,
9830
+ width: "30%"
9831
+ },
9832
+ {
9833
+ key: "status",
9834
+ title: "Status",
9835
+ sortable: true,
9836
+ width: "20%",
9837
+ render: (value) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "capitalize", children: value })
9838
+ },
9839
+ {
9840
+ key: "default",
9841
+ title: "Default",
9842
+ sortable: true,
9843
+ width: "20%",
9844
+ align: "right",
9845
+ render: (value) => value ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-success", children: "Yes" }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "No" })
9846
+ }
9847
+ ];
9848
+ const documentColumns = [
9849
+ {
9850
+ key: "name",
9851
+ title: "Document Name",
9852
+ sortable: true,
9853
+ width: "40%"
9854
+ },
9855
+ {
9856
+ key: "type",
9857
+ title: "Type",
9858
+ sortable: true,
9859
+ width: "20%"
9860
+ },
9861
+ {
9862
+ key: "uploadedDate",
9863
+ title: "Uploaded",
9864
+ sortable: true,
9865
+ width: "20%"
9866
+ },
9867
+ {
9868
+ key: "status",
9869
+ title: "Status",
9870
+ sortable: true,
9871
+ width: "20%",
9872
+ align: "right",
9873
+ render: (value) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "capitalize", children: value })
9874
+ }
9875
+ ];
9876
+ if (!counterparty) {
9877
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container mx-auto px-4 py-8", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
9878
+ /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-2xl font-bold mb-2", children: "Counterparty Not Found" }),
9879
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground mb-4", children: "The counterparty could not be found." })
9880
+ ] }) });
9881
+ }
9882
+ return /* @__PURE__ */ jsxRuntime.jsx(
9883
+ PageLayout,
9884
+ {
9885
+ title: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
9886
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: counterparty.name }),
9887
+ /* @__PURE__ */ jsxRuntime.jsx(
9888
+ EditableInfoField,
9889
+ {
9890
+ label: "",
9891
+ value: currentStatus,
9892
+ options: [
9893
+ { value: "ACTIVE", label: "Active" },
9894
+ { value: "INACTIVE", label: "Inactive" },
9895
+ { value: "PENDING", label: "Pending" },
9896
+ { value: "SUSPENDED", label: "Suspended" }
9897
+ ],
9898
+ onChange: (newStatus) => setCurrentStatus(newStatus),
9899
+ renderValue: (value) => /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status: value }),
9900
+ className: "inline-block"
9901
+ }
9902
+ ),
9903
+ /* @__PURE__ */ jsxRuntime.jsx(CIPStatusBadge, { status: "verified" }),
9904
+ /* @__PURE__ */ jsxRuntime.jsx(CounterpartyTypeBadge, { type: counterparty.type })
9905
+ ] }),
9906
+ actions: [
9907
+ {
9908
+ label: "View Account",
9909
+ variant: "outline",
9910
+ onClick: () => navigate(`/counterparty/${id}/account`),
9911
+ icon: lucideReact.Wallet
9912
+ },
9913
+ {
9914
+ label: "View Transactions",
9915
+ variant: "outline",
9916
+ onClick: () => navigate(`/counterparty/${id}/transactions`),
9917
+ icon: lucideReact.FileText
9918
+ }
9919
+ ],
9920
+ maxWidth: "full",
9921
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col lg:flex-row items-start gap-4", children: [
9922
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-4", children: [
9923
+ /* @__PURE__ */ jsxRuntime.jsx(
9924
+ CounterpartyProfileCard,
9925
+ {
9926
+ isEditing: isEditingProfile,
9927
+ onToggleEdit: () => setIsEditingProfile(!isEditingProfile)
9928
+ }
9929
+ ),
9930
+ /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
9931
+ /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-4", children: [
9932
+ /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Payment Methods" }),
9933
+ /* @__PURE__ */ jsxRuntime.jsxs(Button, { size: "sm", variant: "ghost", children: [
9934
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-1" }),
9935
+ "Method"
9936
+ ] })
9937
+ ] }),
9938
+ /* @__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: [
9939
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Wallet, { className: "h-5 w-5 opacity-50" }),
9940
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: "No payment methods configured" })
9941
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(
9942
+ DataTable,
9943
+ {
9944
+ columns: paymentMethodColumns,
9945
+ data: mockPaymentMethods
9946
+ }
9947
+ ) })
9948
+ ] }),
9949
+ /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
9950
+ /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-4", children: [
9951
+ /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Documents" }),
9952
+ /* @__PURE__ */ jsxRuntime.jsxs(Button, { size: "sm", variant: "ghost", children: [
9953
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-1" }),
9954
+ "Document"
9955
+ ] })
9956
+ ] }),
9957
+ /* @__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: [
9958
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "h-5 w-5 opacity-50" }),
9959
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: "No documents found" })
9960
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(
9961
+ DataTable,
9962
+ {
9963
+ columns: documentColumns,
9964
+ data: counterpartyDocuments
9965
+ }
9966
+ ) })
9967
+ ] })
9968
+ ] }),
9969
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:w-64", children: /* @__PURE__ */ jsxRuntime.jsx(CounterpartyStatusCard, { isEditing: false, onToggleEdit: () => {
9970
+ } }) })
9971
+ ] })
9972
+ }
9973
+ );
9974
+ };
9975
+ var CounterpartyDetail_default = CounterpartyDetail;
9976
+ var CreateCounterparty = () => {
9977
+ const navigate = reactRouterDom.useNavigate();
9978
+ const [counterpartyData, setCounterpartyData] = React15.useState(null);
9979
+ const [paymentMethods, setPaymentMethods] = React15.useState([]);
9980
+ const handlePaymentMethodsChange = (methods) => {
9981
+ setPaymentMethods(methods);
9982
+ };
9983
+ const handleBasicInfoChange = (data) => {
9984
+ setCounterpartyData(data);
9985
+ };
9986
+ const counterpartyType = counterpartyData?.type || "";
9987
+ const handleCancel = () => {
9988
+ navigate("/counterparty");
9989
+ };
9990
+ const handleSubmit = () => {
9991
+ if (!counterpartyType) {
9992
+ toast({
9993
+ title: "Error",
9994
+ description: "Please select a counterparty type",
9995
+ variant: "destructive"
9996
+ });
9997
+ return;
9998
+ }
9999
+ if (paymentMethods.length === 0) {
10000
+ toast({
10001
+ title: "Error",
10002
+ description: "At least one payment method is required",
10003
+ variant: "destructive"
10004
+ });
10005
+ return;
10006
+ }
10007
+ if (paymentMethods.some((m) => m.type === "wire")) {
10008
+ console.log("Address validation required for wire transfers");
10009
+ }
10010
+ console.log("Creating counterparty with data:", {
10011
+ type: counterpartyType,
10012
+ basicInfo: counterpartyData
10013
+ });
10014
+ toast({
10015
+ title: "Success",
10016
+ description: "Counterparty created successfully"
10017
+ });
10018
+ setTimeout(() => {
10019
+ navigate("/counterparty");
10020
+ }, 1e3);
10021
+ };
10022
+ return /* @__PURE__ */ jsxRuntime.jsx(
10023
+ PageLayout,
10024
+ {
10025
+ title: "Create Counterparty",
10026
+ description: "Create a new counterparty with all required information",
10027
+ actions: [
10028
+ { label: "Cancel", variant: "outline", onClick: handleCancel },
10029
+ { label: "Create Counterparty", variant: "default", onClick: handleSubmit }
10030
+ ],
10031
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
10032
+ /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
10033
+ /* @__PURE__ */ jsxRuntime.jsx(CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Basic Information" }) }),
10034
+ /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: /* @__PURE__ */ jsxRuntime.jsx(CounterpartyBasicInfo, { onDataChange: handleBasicInfoChange }) })
10035
+ ] }),
10036
+ /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
10037
+ /* @__PURE__ */ jsxRuntime.jsx(CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs(CardTitle, { children: [
10038
+ "Address",
10039
+ paymentMethods.some((m) => m.type === "wire") && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-destructive ml-1", children: "*" })
10040
+ ] }) }),
10041
+ /* @__PURE__ */ jsxRuntime.jsxs(CardContent, { children: [
10042
+ paymentMethods.length === 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground mb-4", children: "Optional for ACH payments, required for wire transfers" }),
10043
+ paymentMethods.some((m) => m.type === "wire") && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground mb-4", children: "Required because you have wire payment methods" }),
10044
+ /* @__PURE__ */ jsxRuntime.jsx(
10045
+ AddressForm,
10046
+ {
10047
+ title: "",
10048
+ description: "",
10049
+ showApartment: true
10050
+ }
10051
+ )
10052
+ ] })
10053
+ ] }),
10054
+ /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
10055
+ /* @__PURE__ */ jsxRuntime.jsx(CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Payment Configuration" }) }),
10056
+ /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: /* @__PURE__ */ jsxRuntime.jsx(PaymentInformationSection, { onPaymentMethodsChange: handlePaymentMethodsChange }) })
8535
10057
  ] })
8536
10058
  ] })
8537
10059
  }
8538
- );
8539
- };
8540
- var Create_default = CreateBusiness;
8541
- var Cases = () => {
10060
+ );
10061
+ };
10062
+ var Create_default2 = CreateCounterparty;
10063
+ var Dashboard = () => {
10064
+ return /* @__PURE__ */ jsxRuntime.jsx(
10065
+ PageLayout,
10066
+ {
10067
+ title: "Dashboard",
10068
+ description: "Overview of your system metrics and activity",
10069
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-12 text-muted-foreground", children: "Dashboard content coming soon" })
10070
+ }
10071
+ );
10072
+ };
10073
+ var Dashboard_default = Dashboard;
10074
+
10075
+ // src/lib/mock-data/individuals-list-data.ts
10076
+ var mockIndividualsListData = [
10077
+ {
10078
+ id: "IND-2024-001",
10079
+ firstName: "John",
10080
+ lastName: "Smith",
10081
+ fullName: "John Smith",
10082
+ productName: "Personal Checking",
10083
+ cipStatus: "verified",
10084
+ status: "active",
10085
+ createdAt: "2024-01-15T10:30:00Z",
10086
+ modifiedAt: "2024-01-20T14:45:00Z"
10087
+ },
10088
+ {
10089
+ id: "IND-2024-002",
10090
+ firstName: "Sarah",
10091
+ lastName: "Johnson",
10092
+ fullName: "Sarah Johnson",
10093
+ productName: "Premium Savings",
10094
+ cipStatus: "verified",
10095
+ status: "active",
10096
+ createdAt: "2024-01-18T09:15:00Z",
10097
+ modifiedAt: "2024-01-22T11:30:00Z"
10098
+ },
10099
+ {
10100
+ id: "IND-2024-003",
10101
+ firstName: "Michael",
10102
+ lastName: "Chen",
10103
+ fullName: "Michael Chen",
10104
+ productName: "Personal Checking",
10105
+ cipStatus: "pending",
10106
+ status: "pending",
10107
+ createdAt: "2024-01-20T13:45:00Z",
10108
+ modifiedAt: "2024-01-20T13:45:00Z"
10109
+ },
10110
+ {
10111
+ id: "IND-2024-004",
10112
+ firstName: "Emily",
10113
+ lastName: "Rodriguez",
10114
+ fullName: "Emily Rodriguez",
10115
+ productName: "Student Checking",
10116
+ cipStatus: "verified",
10117
+ status: "active",
10118
+ createdAt: "2024-01-22T16:20:00Z",
10119
+ modifiedAt: "2024-01-25T10:15:00Z"
10120
+ },
10121
+ {
10122
+ id: "IND-2024-005",
10123
+ firstName: "David",
10124
+ lastName: "Williams",
10125
+ fullName: "David Williams",
10126
+ productName: "Business Checking",
10127
+ cipStatus: "rejected",
10128
+ status: "rejected",
10129
+ createdAt: "2024-01-25T08:30:00Z",
10130
+ modifiedAt: "2024-01-26T14:00:00Z"
10131
+ }
10132
+ ];
10133
+ var Individuals = () => {
10134
+ const navigate = reactRouterDom.useNavigate();
10135
+ const [individuals, setIndividuals] = React15.useState(mockIndividualsListData);
10136
+ const [filteredIndividuals, setFilteredIndividuals] = React15.useState(mockIndividualsListData);
10137
+ const [sortBy, setSortBy] = React15.useState("created");
10138
+ const [sortDirection, setSortDirection] = React15.useState("desc");
10139
+ const [filters, setFilters] = React15.useState({
10140
+ name: "",
10141
+ productName: "",
10142
+ status: "",
10143
+ createdDateStart: void 0,
10144
+ createdDateEnd: void 0
10145
+ });
10146
+ const handleFilterChange = (field, value) => {
10147
+ setFilters((prev) => ({ ...prev, [field]: value }));
10148
+ };
10149
+ const applyFilters = () => {
10150
+ let filtered = individuals;
10151
+ if (filters.name) {
10152
+ filtered = filtered.filter(
10153
+ (individual) => individual.fullName.toLowerCase().includes(filters.name.toLowerCase())
10154
+ );
10155
+ }
10156
+ if (filters.productName) {
10157
+ filtered = filtered.filter(
10158
+ (individual) => individual.productName.toLowerCase().includes(filters.productName.toLowerCase())
10159
+ );
10160
+ }
10161
+ if (filters.status) {
10162
+ filtered = filtered.filter((individual) => individual.status === filters.status);
10163
+ }
10164
+ if (filters.createdDateStart) {
10165
+ filtered = filtered.filter(
10166
+ (individual) => new Date(individual.createdAt) >= filters.createdDateStart
10167
+ );
10168
+ }
10169
+ if (filters.createdDateEnd) {
10170
+ filtered = filtered.filter(
10171
+ (individual) => new Date(individual.createdAt) <= filters.createdDateEnd
10172
+ );
10173
+ }
10174
+ setFilteredIndividuals(filtered);
10175
+ };
10176
+ const resetFilters = () => {
10177
+ setFilters({
10178
+ name: "",
10179
+ productName: "",
10180
+ status: "",
10181
+ createdDateStart: void 0,
10182
+ createdDateEnd: void 0
10183
+ });
10184
+ setFilteredIndividuals(individuals);
10185
+ };
10186
+ const handleSort = (key) => {
10187
+ if (sortBy === key) {
10188
+ setSortDirection(sortDirection === "asc" ? "desc" : "asc");
10189
+ } else {
10190
+ setSortBy(key);
10191
+ setSortDirection("asc");
10192
+ }
10193
+ };
10194
+ const handleRowClick = (row) => {
10195
+ navigate(`/individual/${row.id}`);
10196
+ };
10197
+ const columns2 = [
10198
+ {
10199
+ key: "id",
10200
+ title: "Individual ID",
10201
+ sortable: true
10202
+ },
10203
+ {
10204
+ key: "fullName",
10205
+ title: "Name",
10206
+ sortable: true
10207
+ },
10208
+ {
10209
+ key: "productName",
10210
+ title: "Product Name",
10211
+ sortable: true
10212
+ },
10213
+ {
10214
+ key: "cipStatus",
10215
+ title: "CIP Status",
10216
+ sortable: true,
10217
+ render: (value) => /* @__PURE__ */ jsxRuntime.jsx(CIPStatusBadge, { status: value })
10218
+ },
10219
+ {
10220
+ key: "status",
10221
+ title: "Status",
10222
+ sortable: true,
10223
+ render: (value) => /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status: value })
10224
+ },
10225
+ {
10226
+ key: "createdAt",
10227
+ title: "Created",
10228
+ sortable: true,
10229
+ render: (value) => new Date(value).toLocaleDateString()
10230
+ },
10231
+ {
10232
+ key: "modifiedAt",
10233
+ title: "Modified",
10234
+ sortable: true,
10235
+ render: (value) => new Date(value).toLocaleDateString()
10236
+ }
10237
+ ];
10238
+ const sortedIndividuals = [...filteredIndividuals].sort((a, b) => {
10239
+ const aValue = a[sortBy];
10240
+ const bValue = b[sortBy];
10241
+ if (aValue < bValue) return sortDirection === "asc" ? -1 : 1;
10242
+ if (aValue > bValue) return sortDirection === "asc" ? 1 : -1;
10243
+ return 0;
10244
+ });
10245
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-screen bg-gradient-subtle", children: [
10246
+ /* @__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: [
10247
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-3xl font-bold text-foreground mb-2", children: "Individuals" }) }),
10248
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
10249
+ /* @__PURE__ */ jsxRuntime.jsxs(Sheet, { children: [
10250
+ /* @__PURE__ */ jsxRuntime.jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "outline", className: "gap-2", children: [
10251
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Filter, { className: "h-4 w-4" }),
10252
+ "Filters"
10253
+ ] }) }),
10254
+ /* @__PURE__ */ jsxRuntime.jsxs(SheetContent, { side: "right", className: "w-full sm:max-w-xl overflow-y-auto", children: [
10255
+ /* @__PURE__ */ jsxRuntime.jsx(SheetHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { children: "Individual Filters" }) }),
10256
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6 py-6", children: [
10257
+ /* @__PURE__ */ jsxRuntime.jsx(
10258
+ EnhancedInput,
10259
+ {
10260
+ label: "Name",
10261
+ value: filters.name,
10262
+ onChange: (e) => handleFilterChange("name", e.target.value),
10263
+ placeholder: "Enter individual name"
10264
+ }
10265
+ ),
10266
+ /* @__PURE__ */ jsxRuntime.jsx(
10267
+ EnhancedInput,
10268
+ {
10269
+ label: "Product Name",
10270
+ value: filters.productName,
10271
+ onChange: (e) => handleFilterChange("productName", e.target.value),
10272
+ placeholder: "Enter product name"
10273
+ }
10274
+ ),
10275
+ /* @__PURE__ */ jsxRuntime.jsx(
10276
+ EnhancedSelect,
10277
+ {
10278
+ label: "Status",
10279
+ value: filters.status,
10280
+ onValueChange: (value) => handleFilterChange("status", value),
10281
+ placeholder: "Select status",
10282
+ options: [
10283
+ { value: "active", label: "Active" },
10284
+ { value: "pending", label: "Pending" },
10285
+ { value: "rejected", label: "Rejected" },
10286
+ { value: "suspended", label: "Suspended" }
10287
+ ]
10288
+ }
10289
+ ),
10290
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
10291
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
10292
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: "Created Date Start" }),
10293
+ /* @__PURE__ */ jsxRuntime.jsx(
10294
+ DatePicker,
10295
+ {
10296
+ date: filters.createdDateStart,
10297
+ onDateChange: (date) => handleFilterChange("createdDateStart", date),
10298
+ placeholder: "MM/DD/YYYY",
10299
+ buttonClassName: "w-full",
10300
+ className: "bg-background z-50"
10301
+ }
10302
+ )
10303
+ ] }),
10304
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
10305
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: "Created Date End" }),
10306
+ /* @__PURE__ */ jsxRuntime.jsx(
10307
+ DatePicker,
10308
+ {
10309
+ date: filters.createdDateEnd,
10310
+ onDateChange: (date) => handleFilterChange("createdDateEnd", date),
10311
+ placeholder: "MM/DD/YYYY",
10312
+ buttonClassName: "w-full",
10313
+ className: "bg-background z-50"
10314
+ }
10315
+ )
10316
+ ] })
10317
+ ] })
10318
+ ] }),
10319
+ /* @__PURE__ */ jsxRuntime.jsxs(SheetFooter, { className: "gap-2", children: [
10320
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "outline", onClick: resetFilters, children: "Reset Filters" }),
10321
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: applyFilters, children: "Apply Filters" })
10322
+ ] })
10323
+ ] })
10324
+ ] }),
10325
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: () => navigate("/individual/create"), children: "Create Individual" })
10326
+ ] })
10327
+ ] }) }) }),
10328
+ /* @__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(
10329
+ DataTable,
10330
+ {
10331
+ columns: columns2,
10332
+ data: sortedIndividuals,
10333
+ sortBy,
10334
+ sortDirection,
10335
+ onSort: handleSort,
10336
+ onRowClick: handleRowClick
10337
+ }
10338
+ ) }) }) })
10339
+ ] });
10340
+ };
10341
+ var Individuals_default = Individuals;
10342
+ var individualProfileSchema = zod.z.object({
10343
+ // Personal Information
10344
+ firstName: zod.z.string().min(1, "First name is required"),
10345
+ lastName: zod.z.string().min(1, "Last name is required"),
10346
+ dateOfBirth: zod.z.string().optional(),
10347
+ // Identification
10348
+ idType: zod.z.enum(["SSN", "ITIN", "Passport", "Driver License"]).optional(),
10349
+ ssn: zod.z.string().optional(),
10350
+ // Contact Information
10351
+ email: zod.z.string().email("Invalid email address").optional(),
10352
+ mobilePhone: zod.z.string().optional(),
10353
+ // Address
10354
+ streetAddress: zod.z.string().optional(),
10355
+ apartment: zod.z.string().optional(),
10356
+ city: zod.z.string().optional(),
10357
+ state: zod.z.string().optional(),
10358
+ postalCode: zod.z.string().optional(),
10359
+ country: zod.z.string().optional(),
10360
+ // Integration Fields
10361
+ externalId: zod.z.string().optional(),
10362
+ productId: zod.z.string().optional()
10363
+ });
10364
+
10365
+ // src/lib/mock-data/individual-data.ts
10366
+ var mockIndividualData = {
10367
+ id: "IND-2024-001",
10368
+ firstName: "John",
10369
+ lastName: "Smith",
10370
+ dateOfBirth: "1985-06-15",
10371
+ idType: "SSN",
10372
+ ssn: "***-**-4567",
10373
+ email: "john.smith@email.com",
10374
+ mobilePhone: "+1 (555) 123-4567",
10375
+ // Address
10376
+ streetAddress: "123 Main Street",
10377
+ apartment: "Apt 4B",
10378
+ city: "San Francisco",
10379
+ state: "CA",
10380
+ postalCode: "94102",
10381
+ country: "United States",
10382
+ // Integration
10383
+ externalId: "EXT-IND-001",
10384
+ productId: "PROD-CHECKING-001",
10385
+ productName: "Personal Checking",
10386
+ // Status Information
10387
+ status: "active",
10388
+ cipStatus: "verified",
10389
+ entityType: "individual",
10390
+ subType: "retail",
10391
+ // Dates
10392
+ createdAt: "2024-01-15T10:30:00Z",
10393
+ modifiedAt: "2024-01-20T14:45:00Z",
10394
+ // OFAC
10395
+ ofacStatus: "clear",
10396
+ lastOfacCheck: "2024-01-20T14:45:00Z"
10397
+ };
10398
+ var IndividualProfileCard = ({ isEditing, onToggleEdit, className }) => {
10399
+ const form = useFormWithEditState({
10400
+ schema: individualProfileSchema,
10401
+ defaultValues: {
10402
+ firstName: mockIndividualData.firstName,
10403
+ lastName: mockIndividualData.lastName,
10404
+ dateOfBirth: mockIndividualData.dateOfBirth,
10405
+ idType: mockIndividualData.idType,
10406
+ ssn: mockIndividualData.ssn,
10407
+ email: mockIndividualData.email,
10408
+ mobilePhone: mockIndividualData.mobilePhone,
10409
+ streetAddress: mockIndividualData.streetAddress,
10410
+ apartment: mockIndividualData.apartment,
10411
+ city: mockIndividualData.city,
10412
+ state: mockIndividualData.state,
10413
+ postalCode: mockIndividualData.postalCode,
10414
+ country: mockIndividualData.country,
10415
+ externalId: mockIndividualData.externalId,
10416
+ productId: mockIndividualData.productId
10417
+ },
10418
+ initialEditing: isEditing,
10419
+ onToggleEdit,
10420
+ onSave: async (data) => {
10421
+ console.log("Saving individual profile:", data);
10422
+ }
10423
+ });
10424
+ const editContent = /* @__PURE__ */ jsxRuntime.jsx(FormProvider, { form, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
10425
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
10426
+ /* @__PURE__ */ jsxRuntime.jsx(
10427
+ FormInput,
10428
+ {
10429
+ name: "firstName",
10430
+ label: "First Name",
10431
+ placeholder: "Enter first name",
10432
+ required: true
10433
+ }
10434
+ ),
10435
+ /* @__PURE__ */ jsxRuntime.jsx(
10436
+ FormInput,
10437
+ {
10438
+ name: "lastName",
10439
+ label: "Last Name",
10440
+ placeholder: "Enter last name",
10441
+ required: true
10442
+ }
10443
+ ),
10444
+ /* @__PURE__ */ jsxRuntime.jsx(
10445
+ FormInput,
10446
+ {
10447
+ name: "dateOfBirth",
10448
+ label: "Date of Birth",
10449
+ type: "date",
10450
+ placeholder: "Enter date of birth"
10451
+ }
10452
+ ),
10453
+ /* @__PURE__ */ jsxRuntime.jsx(
10454
+ FormSelect,
10455
+ {
10456
+ name: "idType",
10457
+ label: "ID Type",
10458
+ placeholder: "Select ID type",
10459
+ options: [
10460
+ { value: "SSN", label: "SSN" },
10461
+ { value: "ITIN", label: "ITIN" },
10462
+ { value: "Passport", label: "Passport" },
10463
+ { value: "Driver License", label: "Driver License" }
10464
+ ]
10465
+ }
10466
+ ),
10467
+ /* @__PURE__ */ jsxRuntime.jsx(
10468
+ FormInput,
10469
+ {
10470
+ name: "ssn",
10471
+ label: "SSN/ITIN",
10472
+ placeholder: "Enter SSN or ITIN",
10473
+ hint: "Last 4 digits will be masked"
10474
+ }
10475
+ ),
10476
+ /* @__PURE__ */ jsxRuntime.jsx(
10477
+ FormInput,
10478
+ {
10479
+ name: "email",
10480
+ label: "Email",
10481
+ type: "email",
10482
+ placeholder: "Enter email address"
10483
+ }
10484
+ ),
10485
+ /* @__PURE__ */ jsxRuntime.jsx(
10486
+ FormInput,
10487
+ {
10488
+ name: "mobilePhone",
10489
+ label: "Mobile Phone",
10490
+ placeholder: "Enter mobile phone"
10491
+ }
10492
+ )
10493
+ ] }),
10494
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-medium text-muted-foreground mt-6", children: "Address" }),
10495
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-4", children: [
10496
+ /* @__PURE__ */ jsxRuntime.jsx(
10497
+ FormInput,
10498
+ {
10499
+ name: "streetAddress",
10500
+ label: "Street Address",
10501
+ placeholder: "Enter street address"
10502
+ }
10503
+ ),
10504
+ /* @__PURE__ */ jsxRuntime.jsx(
10505
+ FormInput,
10506
+ {
10507
+ name: "apartment",
10508
+ label: "Apartment/Unit",
10509
+ placeholder: "Enter apartment or unit number"
10510
+ }
10511
+ )
10512
+ ] }),
10513
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
10514
+ /* @__PURE__ */ jsxRuntime.jsx(
10515
+ FormInput,
10516
+ {
10517
+ name: "city",
10518
+ label: "City",
10519
+ placeholder: "Enter city"
10520
+ }
10521
+ ),
10522
+ /* @__PURE__ */ jsxRuntime.jsx(
10523
+ FormInput,
10524
+ {
10525
+ name: "state",
10526
+ label: "State",
10527
+ placeholder: "Enter state"
10528
+ }
10529
+ ),
10530
+ /* @__PURE__ */ jsxRuntime.jsx(
10531
+ FormInput,
10532
+ {
10533
+ name: "postalCode",
10534
+ label: "Postal Code",
10535
+ placeholder: "Enter postal code"
10536
+ }
10537
+ ),
10538
+ /* @__PURE__ */ jsxRuntime.jsx(
10539
+ FormInput,
10540
+ {
10541
+ name: "country",
10542
+ label: "Country",
10543
+ placeholder: "Enter country"
10544
+ }
10545
+ )
10546
+ ] }),
10547
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-medium text-muted-foreground mt-6", children: "Integration" }),
10548
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
10549
+ /* @__PURE__ */ jsxRuntime.jsx(
10550
+ FormInput,
10551
+ {
10552
+ name: "externalId",
10553
+ label: "External ID",
10554
+ placeholder: "UUID",
10555
+ hint: "ID from external system",
10556
+ disabled: true
10557
+ }
10558
+ ),
10559
+ /* @__PURE__ */ jsxRuntime.jsx(
10560
+ FormInput,
10561
+ {
10562
+ name: "productId",
10563
+ label: "Product ID",
10564
+ placeholder: "Product ID",
10565
+ disabled: true
10566
+ }
10567
+ )
10568
+ ] })
10569
+ ] }) });
10570
+ const formValues = form.watch();
10571
+ const viewContent = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
10572
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
10573
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "First Name", value: formValues?.firstName || "-", layout: "horizontal" }),
10574
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Last Name", value: formValues?.lastName || "-", layout: "horizontal" })
10575
+ ] }),
10576
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
10577
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Date of Birth", value: formValues?.dateOfBirth || "-", layout: "horizontal" }),
10578
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "ID Type", value: formValues?.idType || "-", layout: "horizontal" })
10579
+ ] }),
10580
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
10581
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "SSN/ITIN", value: formValues?.ssn || "-", layout: "horizontal" }),
10582
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Email", value: formValues?.email || "-", layout: "horizontal" })
10583
+ ] }),
10584
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-4", children: /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Mobile Phone", value: formValues?.mobilePhone || "-", layout: "horizontal" }) }),
10585
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-medium text-muted-foreground mt-6", children: "Address" }),
10586
+ /* @__PURE__ */ jsxRuntime.jsx(
10587
+ InfoField,
10588
+ {
10589
+ label: "Address",
10590
+ value: formValues?.streetAddress ? `${formValues.streetAddress}${formValues.apartment ? ", " + formValues.apartment : ""}, ${formValues.city}, ${formValues.state} ${formValues.postalCode}, ${formValues.country}` : "-",
10591
+ layout: "horizontal"
10592
+ }
10593
+ ),
10594
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-medium text-muted-foreground mt-6", children: "Integration" }),
10595
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
10596
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "External ID", value: formValues?.externalId || "-", layout: "horizontal" }),
10597
+ /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Product ID", value: formValues?.productId || "-", layout: "horizontal" })
10598
+ ] })
10599
+ ] });
10600
+ return /* @__PURE__ */ jsxRuntime.jsx(
10601
+ EditableFormCard,
10602
+ {
10603
+ title: "Individual Profile",
10604
+ variant: "subtle",
10605
+ className,
10606
+ isEditing: form.isEditing,
10607
+ onToggleEdit: form.handleToggleEdit,
10608
+ onSave: form.handleSave,
10609
+ onCancel: form.handleCancel,
10610
+ editContent,
10611
+ viewContent
10612
+ }
10613
+ );
10614
+ };
10615
+ var mockIndividualTimeline = [
10616
+ {
10617
+ id: "1",
10618
+ action: "Individual Created",
10619
+ user: "admin",
10620
+ details: "Initial individual setup",
10621
+ status: "Active",
10622
+ timestamp: "2024-01-15 10:30:00"
10623
+ },
10624
+ {
10625
+ id: "2",
10626
+ action: "Identity Documents Uploaded",
10627
+ user: "John Smith",
10628
+ details: "Driver License, Proof of Address",
10629
+ timestamp: "2024-01-18 11:20:00"
10630
+ },
10631
+ {
10632
+ id: "3",
10633
+ action: "CIP Verification Completed",
10634
+ user: "Compliance Team",
10635
+ details: "Identity verification check",
10636
+ status: "Verified",
10637
+ timestamp: "2024-01-20 14:30:00"
10638
+ },
10639
+ {
10640
+ id: "4",
10641
+ action: "OFAC Check Completed",
10642
+ user: "System",
10643
+ details: "Automated compliance check",
10644
+ status: "Verified",
10645
+ timestamp: "2024-01-20 14:45:00"
10646
+ }
10647
+ ];
10648
+ var IndividualStatusCard = ({ isEditing, onToggleEdit, className }) => {
10649
+ const getIcon = (action) => {
10650
+ if (action.includes("Created")) return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Circle, { className: "h-4 w-4" });
10651
+ if (action.includes("Assigned")) return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UserPlus, { className: "h-4 w-4" });
10652
+ if (action.includes("Updated") || action.includes("Modified") || action.includes("Check") || action.includes("Uploaded")) return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Edit, { className: "h-4 w-4" });
10653
+ if (action.includes("Completed") || action.includes("Verified")) return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle, { className: "h-4 w-4" });
10654
+ return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Circle, { className: "h-4 w-4" });
10655
+ };
10656
+ const getStatusColor2 = (status) => {
10657
+ switch (status) {
10658
+ case "Active":
10659
+ case "Verified":
10660
+ return "text-success";
10661
+ case "Pending":
10662
+ return "text-warning";
10663
+ default:
10664
+ return "text-muted-foreground";
10665
+ }
10666
+ };
8542
10667
  return /* @__PURE__ */ jsxRuntime.jsx(
8543
- PageLayout,
10668
+ FormCard,
8544
10669
  {
8545
- title: "Cases",
8546
- description: "Manage and track investigation cases",
8547
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-12 text-muted-foreground", children: "Cases content coming soon" })
10670
+ title: "Timeline",
10671
+ className,
10672
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: mockIndividualTimeline.map((event, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative pl-6 pb-3", children: [
10673
+ index !== mockIndividualTimeline.length - 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute left-[7px] top-5 bottom-0 w-[2px] bg-border" }),
10674
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(
10675
+ "absolute left-0 top-0 flex-none",
10676
+ getStatusColor2(event.status)
10677
+ ), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-4", children: getIcon(event.action) }) }),
10678
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-0.5", children: [
10679
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-medium text-foreground", children: event.action }),
10680
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground", children: [
10681
+ "by ",
10682
+ event.user
10683
+ ] }),
10684
+ event.details && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: event.details }),
10685
+ event.status && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("text-xs font-medium", getStatusColor2(event.status)), children: [
10686
+ "Status: ",
10687
+ event.status
10688
+ ] }),
10689
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground/70 pt-0.5", children: event.timestamp })
10690
+ ] })
10691
+ ] }, event.id)) })
8548
10692
  }
8549
10693
  );
8550
10694
  };
8551
- var Cases_default = Cases;
8552
- var CreateCounterparty = () => {
8553
- const [counterpartyData, setCounterpartyData] = React15.useState(null);
8554
- const handleBasicInfoChange = (data) => {
8555
- setCounterpartyData(data);
10695
+ var IndividualDetail = () => {
10696
+ const { id } = reactRouterDom.useParams();
10697
+ const [editingCards, setEditingCards] = React15.useState({});
10698
+ const [status, setStatus] = React15.useState(mockIndividualData.status);
10699
+ const toggleEdit = (cardKey) => {
10700
+ setEditingCards((prev) => ({
10701
+ ...prev,
10702
+ [cardKey]: !prev[cardKey]
10703
+ }));
8556
10704
  };
8557
- const handleSubmit = () => {
8558
- console.log("Creating counterparty with data:", counterpartyData);
10705
+ const handleStatusChange = (newValue) => {
10706
+ setStatus(newValue);
10707
+ console.log("Status changed to:", newValue);
8559
10708
  };
10709
+ const mockExternalAccounts = [
10710
+ {
10711
+ id: "1",
10712
+ bankName: "Chase Bank",
10713
+ accountType: "Checking",
10714
+ accountNumber: "1234",
10715
+ status: "ACTIVE"
10716
+ },
10717
+ {
10718
+ id: "2",
10719
+ bankName: "Bank of America",
10720
+ accountType: "Savings",
10721
+ accountNumber: "5678",
10722
+ status: "ACTIVE"
10723
+ }
10724
+ ];
10725
+ const mockDocs = [
10726
+ {
10727
+ id: "1",
10728
+ name: "Driver License",
10729
+ type: "Identity Document",
10730
+ uploadedAt: "2024-01-15"
10731
+ },
10732
+ {
10733
+ id: "2",
10734
+ name: "Proof of Address",
10735
+ type: "Address Verification",
10736
+ uploadedAt: "2024-01-15"
10737
+ },
10738
+ {
10739
+ id: "3",
10740
+ name: "SSN Card",
10741
+ type: "Tax Document",
10742
+ uploadedAt: "2024-01-15"
10743
+ }
10744
+ ];
8560
10745
  return /* @__PURE__ */ jsxRuntime.jsx(
8561
10746
  PageLayout,
8562
10747
  {
8563
- title: "Create Counterparty",
8564
- description: "Create a new counterparty with all required information",
10748
+ title: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
10749
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
10750
+ mockIndividualData.firstName,
10751
+ " ",
10752
+ mockIndividualData.lastName
10753
+ ] }),
10754
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
10755
+ /* @__PURE__ */ jsxRuntime.jsx(
10756
+ EditableInfoField,
10757
+ {
10758
+ label: "Status",
10759
+ value: status,
10760
+ onChange: handleStatusChange,
10761
+ options: [
10762
+ { value: "active", label: "Active" },
10763
+ { value: "pending", label: "Pending" },
10764
+ { value: "rejected", label: "Rejected" },
10765
+ { value: "suspended", label: "Suspended" }
10766
+ ],
10767
+ renderValue: (value) => /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status: value })
10768
+ }
10769
+ ),
10770
+ /* @__PURE__ */ jsxRuntime.jsx(CIPStatusBadge, { status: mockIndividualData.cipStatus }),
10771
+ /* @__PURE__ */ jsxRuntime.jsx(EntityTypeBadge, { type: "Individual" })
10772
+ ] })
10773
+ ] }),
10774
+ description: `Individual ID: ${id || mockIndividualData.id}`,
8565
10775
  actions: [
8566
- { label: "Cancel", variant: "outline", onClick: () => {
8567
- } },
8568
- { label: "Create Counterparty", variant: "default", onClick: handleSubmit }
10776
+ {
10777
+ label: "View Account",
10778
+ variant: "outline",
10779
+ onClick: () => console.log("View Account")
10780
+ },
10781
+ {
10782
+ label: "Add as Counterparty",
10783
+ variant: "default",
10784
+ onClick: () => console.log("Add as Counterparty")
10785
+ }
8569
10786
  ],
8570
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
8571
- /* @__PURE__ */ jsxRuntime.jsx(Card, { children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "p-6", children: /* @__PURE__ */ jsxRuntime.jsx(CounterpartyBasicInfo, { onDataChange: handleBasicInfoChange }) }) }),
8572
- /* @__PURE__ */ jsxRuntime.jsx(Card, { children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "p-6", children: /* @__PURE__ */ jsxRuntime.jsx(PaymentInformationSection, {}) }) })
10787
+ maxWidth: "full",
10788
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col lg:flex-row items-start gap-4", children: [
10789
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-4", children: [
10790
+ /* @__PURE__ */ jsxRuntime.jsx(
10791
+ IndividualProfileCard,
10792
+ {
10793
+ isEditing: editingCards["profile"] || false,
10794
+ onToggleEdit: () => toggleEdit("profile")
10795
+ }
10796
+ ),
10797
+ /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
10798
+ /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-4", children: [
10799
+ /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "External Accounts" }),
10800
+ /* @__PURE__ */ jsxRuntime.jsxs(Button, { size: "sm", variant: "ghost", children: [
10801
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-1" }),
10802
+ "Account"
10803
+ ] })
10804
+ ] }),
10805
+ /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: mockExternalAccounts.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 py-4 text-sm text-muted-foreground", children: [
10806
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Wallet, { className: "h-5 w-5 opacity-50" }),
10807
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: "No external accounts found" })
10808
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(
10809
+ DataTable,
10810
+ {
10811
+ columns: [
10812
+ {
10813
+ key: "bankName",
10814
+ title: "Bank Name",
10815
+ sortable: true,
10816
+ width: "40%"
10817
+ },
10818
+ {
10819
+ key: "accountType",
10820
+ title: "Account Type",
10821
+ sortable: true,
10822
+ width: "30%"
10823
+ },
10824
+ {
10825
+ key: "accountNumber",
10826
+ title: "Account Number",
10827
+ sortable: true,
10828
+ width: "20%",
10829
+ render: (value) => `\u2022\u2022\u2022\u2022 ${value}`
10830
+ },
10831
+ {
10832
+ key: "status",
10833
+ title: "Status",
10834
+ sortable: true,
10835
+ width: "10%",
10836
+ align: "right",
10837
+ render: (value) => /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status: value })
10838
+ }
10839
+ ],
10840
+ data: mockExternalAccounts
10841
+ }
10842
+ ) })
10843
+ ] }),
10844
+ /* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
10845
+ /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-4", children: [
10846
+ /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Documents" }),
10847
+ /* @__PURE__ */ jsxRuntime.jsxs(Button, { size: "sm", variant: "ghost", children: [
10848
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Upload, { className: "h-4 w-4 mr-1" }),
10849
+ "Upload"
10850
+ ] })
10851
+ ] }),
10852
+ /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: mockDocs.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 py-4 text-sm text-muted-foreground", children: [
10853
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "h-5 w-5 opacity-50" }),
10854
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: "No documents found" })
10855
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2", children: mockDocs.map((doc) => /* @__PURE__ */ jsxRuntime.jsxs(
10856
+ "div",
10857
+ {
10858
+ className: "flex items-center justify-between p-3 border rounded-lg hover:bg-accent/50 transition-colors",
10859
+ children: [
10860
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
10861
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "h-5 w-5 text-muted-foreground" }),
10862
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
10863
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-sm", children: doc.name }),
10864
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: doc.type })
10865
+ ] })
10866
+ ] }),
10867
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
10868
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", children: new Date(doc.uploadedAt).toLocaleDateString() }),
10869
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "icon", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Eye, { className: "h-4 w-4" }) }),
10870
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "icon", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { className: "h-4 w-4" }) })
10871
+ ] })
10872
+ ]
10873
+ },
10874
+ doc.id
10875
+ )) }) })
10876
+ ] })
10877
+ ] }),
10878
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:w-64", children: /* @__PURE__ */ jsxRuntime.jsx(IndividualStatusCard, { isEditing: false, onToggleEdit: () => {
10879
+ } }) })
8573
10880
  ] })
8574
10881
  }
8575
10882
  );
8576
10883
  };
8577
- var Create_default2 = CreateCounterparty;
8578
- var CounterpartyDomesticWire = () => {
8579
- const { isEditing, handleToggleEdit, handleSave, handleCancel } = useEditState({});
8580
- const [transferType, setTransferType] = React15.useState("DOMESTIC");
10884
+ var IndividualDetail_default = IndividualDetail;
10885
+ var CreateIndividual = () => {
10886
+ const navigate = reactRouterDom.useNavigate();
10887
+ const form = useFormWithEditState({
10888
+ schema: individualProfileSchema,
10889
+ defaultValues: {
10890
+ firstName: "",
10891
+ lastName: "",
10892
+ dateOfBirth: "",
10893
+ idType: "SSN",
10894
+ ssn: "",
10895
+ email: "",
10896
+ mobilePhone: "",
10897
+ streetAddress: "",
10898
+ apartment: "",
10899
+ city: "",
10900
+ state: "",
10901
+ postalCode: "",
10902
+ country: "United States",
10903
+ externalId: "",
10904
+ productId: ""
10905
+ },
10906
+ initialEditing: true,
10907
+ onSave: async (data) => {
10908
+ console.log("Creating individual:", data);
10909
+ navigate("/individual");
10910
+ }
10911
+ });
8581
10912
  return /* @__PURE__ */ jsxRuntime.jsx(
8582
10913
  PageLayout,
8583
10914
  {
8584
- title: "Counterparty Domestic Wire",
8585
- description: "Manage domestic wire transfer configurations and beneficiary information",
8586
- actions: !isEditing ? [
8587
- { label: "Cancel", variant: "outline", onClick: () => {
8588
- } },
8589
- { label: "Save Domestic Wire Configuration", variant: "default", onClick: () => {
8590
- } }
8591
- ] : void 0,
8592
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-8", children: [
8593
- /* @__PURE__ */ jsxRuntime.jsx(BasicInfoCard, {}),
8594
- /* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "my-8" }),
10915
+ title: "Create Individual",
10916
+ description: "Add a new individual account",
10917
+ actions: [
10918
+ {
10919
+ label: "Back",
10920
+ variant: "outline",
10921
+ onClick: () => navigate("/individual")
10922
+ }
10923
+ ],
10924
+ children: /* @__PURE__ */ jsxRuntime.jsx(FormProvider, { form, children: /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: form.handleSubmit(form.handleSave), className: "space-y-6", children: [
8595
10925
  /* @__PURE__ */ jsxRuntime.jsx(
8596
10926
  FormCard,
8597
10927
  {
8598
- title: "Domestic Wire Transfer Configuration",
8599
- description: "Configure domestic wire transfer settings and beneficiary information",
8600
- headerActions: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: isEditing ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
10928
+ title: "Personal Information",
10929
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
8601
10930
  /* @__PURE__ */ jsxRuntime.jsx(
8602
- EnhancedSelect,
10931
+ FormInput,
8603
10932
  {
8604
- value: transferType,
8605
- onValueChange: setTransferType,
10933
+ name: "firstName",
10934
+ label: "First Name",
10935
+ placeholder: "Enter first name",
10936
+ required: true
10937
+ }
10938
+ ),
10939
+ /* @__PURE__ */ jsxRuntime.jsx(
10940
+ FormInput,
10941
+ {
10942
+ name: "lastName",
10943
+ label: "Last Name",
10944
+ placeholder: "Enter last name",
10945
+ required: true
10946
+ }
10947
+ ),
10948
+ /* @__PURE__ */ jsxRuntime.jsx(
10949
+ FormInput,
10950
+ {
10951
+ name: "dateOfBirth",
10952
+ label: "Date of Birth",
10953
+ type: "date",
10954
+ placeholder: "Select date of birth"
10955
+ }
10956
+ ),
10957
+ /* @__PURE__ */ jsxRuntime.jsx(
10958
+ FormSelect,
10959
+ {
10960
+ name: "idType",
10961
+ label: "ID Type",
10962
+ placeholder: "Select ID type",
8606
10963
  options: [
8607
- { value: "DOMESTIC", label: "DOMESTIC" },
8608
- { value: "INTERNATIONAL", label: "INTERNATIONAL" }
8609
- ],
8610
- placeholder: "Select transfer type"
10964
+ { value: "SSN", label: "SSN" },
10965
+ { value: "ITIN", label: "ITIN" },
10966
+ { value: "Passport", label: "Passport" },
10967
+ { value: "Driver License", label: "Driver License" }
10968
+ ]
8611
10969
  }
8612
10970
  ),
8613
- /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "outline", size: "sm", onClick: handleCancel, children: "Cancel" }),
8614
- /* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", onClick: handleSave, children: "Save" })
8615
- ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
8616
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-secondary text-secondary-foreground", children: transferType }),
8617
- /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "icon", onClick: handleToggleEdit, className: "text-primary hover:text-primary/80 hover:bg-primary/10", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Edit, { className: "h-4 w-4" }) })
8618
- ] }) }),
8619
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-6", children: [
8620
- /* @__PURE__ */ jsxRuntime.jsx(ReceiverCard, { isEditing, hideActions: true }),
8621
- /* @__PURE__ */ jsxRuntime.jsx(BeneficiaryCard, { isEditing, hideActions: true })
10971
+ /* @__PURE__ */ jsxRuntime.jsx(
10972
+ FormInput,
10973
+ {
10974
+ name: "ssn",
10975
+ label: "SSN/ITIN",
10976
+ placeholder: "Enter SSN or ITIN",
10977
+ hint: "Enter full SSN or ITIN"
10978
+ }
10979
+ ),
10980
+ /* @__PURE__ */ jsxRuntime.jsx(
10981
+ FormInput,
10982
+ {
10983
+ name: "email",
10984
+ label: "Email",
10985
+ type: "email",
10986
+ placeholder: "Enter email address"
10987
+ }
10988
+ ),
10989
+ /* @__PURE__ */ jsxRuntime.jsx(
10990
+ FormInput,
10991
+ {
10992
+ name: "mobilePhone",
10993
+ label: "Mobile Phone",
10994
+ placeholder: "Enter mobile phone"
10995
+ }
10996
+ ),
10997
+ /* @__PURE__ */ jsxRuntime.jsx(
10998
+ FormInput,
10999
+ {
11000
+ name: "externalId",
11001
+ label: "External ID",
11002
+ placeholder: "Optional ID from external system",
11003
+ hint: "Optional ID from external system"
11004
+ }
11005
+ ),
11006
+ /* @__PURE__ */ jsxRuntime.jsx(
11007
+ FormInput,
11008
+ {
11009
+ name: "productId",
11010
+ label: "Product ID",
11011
+ placeholder: "Enter product ID"
11012
+ }
11013
+ )
8622
11014
  ] })
8623
11015
  }
8624
- )
8625
- ] })
8626
- }
8627
- );
8628
- };
8629
- var DomesticWire_default = CounterpartyDomesticWire;
8630
- var CounterpartyManage = () => {
8631
- const {
8632
- isEditing: isBasicEditing,
8633
- handleToggleEdit: handleBasicToggleEdit
8634
- } = useEditState({});
8635
- const {
8636
- isEditing: isWireEditing,
8637
- handleToggleEdit: handleWireToggleEdit
8638
- } = useEditState({});
8639
- const {
8640
- isEditing: isACHEditing,
8641
- handleToggleEdit: handleACHToggleEdit
8642
- } = useEditState({});
8643
- const pageCards = [
8644
- {
8645
- key: "basic-info",
8646
- component: BasicInfoSection,
8647
- props: {
8648
- isEditing: isBasicEditing,
8649
- onToggleEdit: handleBasicToggleEdit
8650
- }
8651
- },
8652
- {
8653
- key: "wire-transfer",
8654
- component: WireTransferSection,
8655
- props: {
8656
- isEditing: isWireEditing,
8657
- onToggleEdit: handleWireToggleEdit
8658
- }
8659
- },
8660
- {
8661
- key: "ach-transfer",
8662
- component: ACHTransferSection,
8663
- props: {
8664
- isEditing: isACHEditing,
8665
- onToggleEdit: handleACHToggleEdit
8666
- }
8667
- }
8668
- ];
8669
- const pageActions = !isBasicEditing && !isWireEditing && !isACHEditing ? [
8670
- {
8671
- label: "Cancel",
8672
- variant: "outline",
8673
- onClick: () => {
8674
- }
8675
- },
8676
- {
8677
- label: "Save Configuration",
8678
- variant: "default",
8679
- onClick: () => {
8680
- }
8681
- }
8682
- ] : [];
8683
- return /* @__PURE__ */ jsxRuntime.jsx(
8684
- PageLayout,
8685
- {
8686
- title: "Counterparty Management",
8687
- description: "Manage counterparty details and payment configurations",
8688
- mode: "cards",
8689
- cards: pageCards,
8690
- actions: pageActions,
8691
- maxWidth: "lg",
8692
- gridCols: 1
8693
- }
8694
- );
8695
- };
8696
- var Manage_default = CounterpartyManage;
8697
- var Dashboard = () => {
8698
- return /* @__PURE__ */ jsxRuntime.jsx(
8699
- PageLayout,
8700
- {
8701
- title: "Dashboard",
8702
- description: "Overview of your system metrics and activity",
8703
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-12 text-muted-foreground", children: "Dashboard content coming soon" })
11016
+ ),
11017
+ /* @__PURE__ */ jsxRuntime.jsxs(
11018
+ FormCard,
11019
+ {
11020
+ title: "Address Information",
11021
+ children: [
11022
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-4", children: [
11023
+ /* @__PURE__ */ jsxRuntime.jsx(
11024
+ FormInput,
11025
+ {
11026
+ name: "streetAddress",
11027
+ label: "Street Address",
11028
+ placeholder: "Enter street address"
11029
+ }
11030
+ ),
11031
+ /* @__PURE__ */ jsxRuntime.jsx(
11032
+ FormInput,
11033
+ {
11034
+ name: "apartment",
11035
+ label: "Apartment/Unit",
11036
+ placeholder: "Enter apartment or unit number"
11037
+ }
11038
+ )
11039
+ ] }),
11040
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6 mt-4", children: [
11041
+ /* @__PURE__ */ jsxRuntime.jsx(
11042
+ FormInput,
11043
+ {
11044
+ name: "city",
11045
+ label: "City",
11046
+ placeholder: "Enter city"
11047
+ }
11048
+ ),
11049
+ /* @__PURE__ */ jsxRuntime.jsx(
11050
+ FormInput,
11051
+ {
11052
+ name: "state",
11053
+ label: "State",
11054
+ placeholder: "Enter state"
11055
+ }
11056
+ ),
11057
+ /* @__PURE__ */ jsxRuntime.jsx(
11058
+ FormInput,
11059
+ {
11060
+ name: "postalCode",
11061
+ label: "Postal Code",
11062
+ placeholder: "Enter postal code"
11063
+ }
11064
+ ),
11065
+ /* @__PURE__ */ jsxRuntime.jsx(
11066
+ FormInput,
11067
+ {
11068
+ name: "country",
11069
+ label: "Country",
11070
+ placeholder: "Enter country"
11071
+ }
11072
+ )
11073
+ ] })
11074
+ ]
11075
+ }
11076
+ ),
11077
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-3 pt-4 border-t", children: [
11078
+ /* @__PURE__ */ jsxRuntime.jsx(
11079
+ Button,
11080
+ {
11081
+ type: "button",
11082
+ variant: "outline",
11083
+ onClick: () => navigate("/individual"),
11084
+ children: "Cancel"
11085
+ }
11086
+ ),
11087
+ /* @__PURE__ */ jsxRuntime.jsx(
11088
+ Button,
11089
+ {
11090
+ type: "submit",
11091
+ disabled: !form.isFormValid || form.isLoading,
11092
+ children: form.isLoading ? "Creating..." : "Create Individual"
11093
+ }
11094
+ )
11095
+ ] })
11096
+ ] }) })
8704
11097
  }
8705
11098
  );
8706
11099
  };
8707
- var Dashboard_default = Dashboard;
11100
+ var Create_default3 = CreateIndividual;
8708
11101
  var NotFound = () => {
8709
11102
  const location = reactRouterDom.useLocation();
8710
11103
  React15.useEffect(() => {
@@ -10320,14 +12713,15 @@ exports.Checkbox = Checkbox;
10320
12713
  exports.ContactInfoCard = ContactInfoCard;
10321
12714
  exports.Container = Container;
10322
12715
  exports.ContextSection = ContextSection;
12716
+ exports.Counterparties = Counterparties_default;
10323
12717
  exports.CounterpartyBasicInfo = CounterpartyBasicInfo;
10324
- exports.CounterpartyDomesticWire = DomesticWire_default;
10325
- exports.CounterpartyManage = Manage_default;
12718
+ exports.CounterpartyDetail = CounterpartyDetail_default;
10326
12719
  exports.CounterpartyProfileCard = CounterpartyProfileCard;
10327
12720
  exports.CounterpartyRecordsCard = CounterpartyRecordsCard;
10328
12721
  exports.CounterpartyTypeBadge = CounterpartyTypeBadge;
10329
12722
  exports.CreateBusiness = Create_default;
10330
12723
  exports.CreateCounterparty = Create_default2;
12724
+ exports.CreateIndividual = Create_default3;
10331
12725
  exports.Dashboard = Dashboard_default;
10332
12726
  exports.DashboardDemo = DashboardDemo;
10333
12727
  exports.DataGrid = DataGrid;
@@ -10361,6 +12755,8 @@ exports.FormInput = FormInput;
10361
12755
  exports.FormProvider = FormProvider;
10362
12756
  exports.FormSection = FormSection;
10363
12757
  exports.FormSelect = FormSelect;
12758
+ exports.IndividualDetail = IndividualDetail_default;
12759
+ exports.Individuals = Individuals_default;
10364
12760
  exports.InfoField = InfoField;
10365
12761
  exports.IntermediaryCard = IntermediaryCard;
10366
12762
  exports.IntermediaryFI = IntermediaryFI;