braid-ui 1.0.46 → 1.0.47
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 +472 -471
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.js +472 -472
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -6307,6 +6307,447 @@ var CounterpartyDetailView = ({
|
|
|
6307
6307
|
}
|
|
6308
6308
|
);
|
|
6309
6309
|
};
|
|
6310
|
+
var SimpleACHForm = () => {
|
|
6311
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
|
|
6312
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6313
|
+
EnhancedInput,
|
|
6314
|
+
{
|
|
6315
|
+
label: "Routing Number",
|
|
6316
|
+
placeholder: "Enter 9-digit routing number",
|
|
6317
|
+
pattern: "[0-9]{9}",
|
|
6318
|
+
maxLength: 9,
|
|
6319
|
+
hint: "9-digit routing number",
|
|
6320
|
+
required: true
|
|
6321
|
+
}
|
|
6322
|
+
),
|
|
6323
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6324
|
+
EnhancedInput,
|
|
6325
|
+
{
|
|
6326
|
+
label: "Account Number",
|
|
6327
|
+
placeholder: "Enter account number",
|
|
6328
|
+
required: true
|
|
6329
|
+
}
|
|
6330
|
+
),
|
|
6331
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6332
|
+
EnhancedSelect,
|
|
6333
|
+
{
|
|
6334
|
+
label: "Account Type",
|
|
6335
|
+
placeholder: "Select account type",
|
|
6336
|
+
options: [
|
|
6337
|
+
{ value: "checking", label: "Checking" },
|
|
6338
|
+
{ value: "savings", label: "Savings" }
|
|
6339
|
+
]
|
|
6340
|
+
}
|
|
6341
|
+
)
|
|
6342
|
+
] });
|
|
6343
|
+
};
|
|
6344
|
+
var SimpleWireForm = () => {
|
|
6345
|
+
const [wireType, setWireType] = React15.useState("domestic");
|
|
6346
|
+
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: [
|
|
6347
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6348
|
+
EnhancedSelect,
|
|
6349
|
+
{
|
|
6350
|
+
label: "Wire Type",
|
|
6351
|
+
placeholder: "Select wire type",
|
|
6352
|
+
value: wireType,
|
|
6353
|
+
onValueChange: setWireType,
|
|
6354
|
+
options: [
|
|
6355
|
+
{ value: "domestic", label: "Domestic" },
|
|
6356
|
+
{ value: "international", label: "International" }
|
|
6357
|
+
]
|
|
6358
|
+
}
|
|
6359
|
+
),
|
|
6360
|
+
wireType === "domestic" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6361
|
+
EnhancedInput,
|
|
6362
|
+
{
|
|
6363
|
+
label: "Routing Number",
|
|
6364
|
+
placeholder: "Enter 9-digit routing number",
|
|
6365
|
+
pattern: "[0-9]{9}",
|
|
6366
|
+
maxLength: 9,
|
|
6367
|
+
hint: "9-digit routing number",
|
|
6368
|
+
required: true
|
|
6369
|
+
}
|
|
6370
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
6371
|
+
EnhancedInput,
|
|
6372
|
+
{
|
|
6373
|
+
label: "BIC Number",
|
|
6374
|
+
placeholder: "Enter BIC/SWIFT code",
|
|
6375
|
+
hint: "Bank Identifier Code",
|
|
6376
|
+
required: true
|
|
6377
|
+
}
|
|
6378
|
+
),
|
|
6379
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6380
|
+
EnhancedInput,
|
|
6381
|
+
{
|
|
6382
|
+
label: "Account Number",
|
|
6383
|
+
placeholder: "Enter account number",
|
|
6384
|
+
required: true
|
|
6385
|
+
}
|
|
6386
|
+
)
|
|
6387
|
+
] }) });
|
|
6388
|
+
};
|
|
6389
|
+
var PaymentInformationSection = ({ onPaymentMethodsChange } = {}) => {
|
|
6390
|
+
const [paymentMethods, setPaymentMethods] = React15.useState([]);
|
|
6391
|
+
const [showAddMenu, setShowAddMenu] = React15.useState(false);
|
|
6392
|
+
const addPaymentMethod = (type) => {
|
|
6393
|
+
const newMethod = {
|
|
6394
|
+
id: `${type}-${Date.now()}`,
|
|
6395
|
+
type,
|
|
6396
|
+
name: type === "ach" ? "ACH Payment" : "Wire Transfer",
|
|
6397
|
+
collapsed: false
|
|
6398
|
+
};
|
|
6399
|
+
const updatedMethods = [...paymentMethods, newMethod];
|
|
6400
|
+
setPaymentMethods(updatedMethods);
|
|
6401
|
+
onPaymentMethodsChange?.(updatedMethods);
|
|
6402
|
+
setShowAddMenu(false);
|
|
6403
|
+
};
|
|
6404
|
+
const removePaymentMethod = (id) => {
|
|
6405
|
+
const updatedMethods = paymentMethods.filter((method) => method.id !== id);
|
|
6406
|
+
setPaymentMethods(updatedMethods);
|
|
6407
|
+
onPaymentMethodsChange?.(updatedMethods);
|
|
6408
|
+
};
|
|
6409
|
+
const toggleCollapse = (id) => {
|
|
6410
|
+
setPaymentMethods(paymentMethods.map(
|
|
6411
|
+
(method) => method.id === id ? { ...method, collapsed: !method.collapsed } : method
|
|
6412
|
+
));
|
|
6413
|
+
};
|
|
6414
|
+
const renderPaymentMethodContent = (method) => {
|
|
6415
|
+
if (method.type === "ach") {
|
|
6416
|
+
return /* @__PURE__ */ jsxRuntime.jsx(SimpleACHForm, {});
|
|
6417
|
+
} else {
|
|
6418
|
+
return /* @__PURE__ */ jsxRuntime.jsx(SimpleWireForm, {});
|
|
6419
|
+
}
|
|
6420
|
+
};
|
|
6421
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
6422
|
+
paymentMethods.map((method) => /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "relative", children: [
|
|
6423
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardHeader, { className: "pb-3", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
6424
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
6425
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6426
|
+
Button,
|
|
6427
|
+
{
|
|
6428
|
+
variant: "ghost",
|
|
6429
|
+
size: "icon",
|
|
6430
|
+
onClick: () => toggleCollapse(method.id),
|
|
6431
|
+
className: "h-6 w-6",
|
|
6432
|
+
children: method.collapsed ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { className: "h-4 w-4" })
|
|
6433
|
+
}
|
|
6434
|
+
),
|
|
6435
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardTitle, { className: "text-base", children: method.name }),
|
|
6436
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs bg-muted px-2 py-1 rounded-md uppercase font-medium", children: method.type })
|
|
6437
|
+
] }),
|
|
6438
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6439
|
+
Button,
|
|
6440
|
+
{
|
|
6441
|
+
variant: "ghost",
|
|
6442
|
+
size: "icon",
|
|
6443
|
+
onClick: () => removePaymentMethod(method.id),
|
|
6444
|
+
className: "h-6 w-6 text-destructive hover:text-destructive/80 hover:bg-destructive/10",
|
|
6445
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Trash2, { className: "h-4 w-4" })
|
|
6446
|
+
}
|
|
6447
|
+
)
|
|
6448
|
+
] }) }),
|
|
6449
|
+
!method.collapsed && /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: renderPaymentMethodContent(method) })
|
|
6450
|
+
] }, method.id)),
|
|
6451
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
6452
|
+
paymentMethods.length === 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground mb-2", children: "At least one payment method is required *" }),
|
|
6453
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
6454
|
+
Button,
|
|
6455
|
+
{
|
|
6456
|
+
variant: "outline",
|
|
6457
|
+
onClick: () => setShowAddMenu(!showAddMenu),
|
|
6458
|
+
className: "w-full border-dashed",
|
|
6459
|
+
children: [
|
|
6460
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-2" }),
|
|
6461
|
+
"Add Payment Information"
|
|
6462
|
+
]
|
|
6463
|
+
}
|
|
6464
|
+
),
|
|
6465
|
+
showAddMenu && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-full left-0 right-0 mt-2 bg-background border border-border rounded-md shadow-lg z-10", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-2 space-y-1", children: [
|
|
6466
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6467
|
+
Button,
|
|
6468
|
+
{
|
|
6469
|
+
variant: "ghost",
|
|
6470
|
+
onClick: () => addPaymentMethod("ach"),
|
|
6471
|
+
className: "w-full justify-start",
|
|
6472
|
+
children: "Add ACH Payment"
|
|
6473
|
+
}
|
|
6474
|
+
),
|
|
6475
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6476
|
+
Button,
|
|
6477
|
+
{
|
|
6478
|
+
variant: "ghost",
|
|
6479
|
+
onClick: () => addPaymentMethod("wire"),
|
|
6480
|
+
className: "w-full justify-start",
|
|
6481
|
+
children: "Add Wire Transfer"
|
|
6482
|
+
}
|
|
6483
|
+
)
|
|
6484
|
+
] }) })
|
|
6485
|
+
] })
|
|
6486
|
+
] });
|
|
6487
|
+
};
|
|
6488
|
+
var AddressForm = ({
|
|
6489
|
+
title,
|
|
6490
|
+
description,
|
|
6491
|
+
fieldPrefix = "",
|
|
6492
|
+
showAddressType = true,
|
|
6493
|
+
addressTypeOptions = ADDRESS_TYPE_OPTIONS.FI,
|
|
6494
|
+
fieldOverrides = {},
|
|
6495
|
+
showApartment = false
|
|
6496
|
+
}) => {
|
|
6497
|
+
const addressTypeLabel = fieldPrefix ? `${fieldPrefix} Address Type` : "Address Type";
|
|
6498
|
+
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: [
|
|
6499
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6500
|
+
EnhancedInput,
|
|
6501
|
+
{
|
|
6502
|
+
label: "Street Address",
|
|
6503
|
+
placeholder: "Enter street address",
|
|
6504
|
+
hint: fieldPrefix ? `${fieldPrefix} street address` : "Primary street address",
|
|
6505
|
+
...fieldOverrides.streetAddress
|
|
6506
|
+
}
|
|
6507
|
+
),
|
|
6508
|
+
showApartment && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6509
|
+
EnhancedInput,
|
|
6510
|
+
{
|
|
6511
|
+
label: "Apt, Building etc",
|
|
6512
|
+
placeholder: "Additional address information",
|
|
6513
|
+
hint: "Additional address information",
|
|
6514
|
+
...fieldOverrides.apartment
|
|
6515
|
+
}
|
|
6516
|
+
),
|
|
6517
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6518
|
+
EnhancedInput,
|
|
6519
|
+
{
|
|
6520
|
+
label: "City",
|
|
6521
|
+
placeholder: "Enter city",
|
|
6522
|
+
required: true,
|
|
6523
|
+
...fieldOverrides.city
|
|
6524
|
+
}
|
|
6525
|
+
),
|
|
6526
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6527
|
+
EnhancedInput,
|
|
6528
|
+
{
|
|
6529
|
+
label: "State",
|
|
6530
|
+
placeholder: "Enter state",
|
|
6531
|
+
hint: "State or province",
|
|
6532
|
+
...fieldOverrides.state
|
|
6533
|
+
}
|
|
6534
|
+
),
|
|
6535
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6536
|
+
EnhancedInput,
|
|
6537
|
+
{
|
|
6538
|
+
label: "Postal Code",
|
|
6539
|
+
placeholder: "12345",
|
|
6540
|
+
...fieldOverrides.postalCode
|
|
6541
|
+
}
|
|
6542
|
+
),
|
|
6543
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6544
|
+
EnhancedSelect,
|
|
6545
|
+
{
|
|
6546
|
+
label: "Country Code",
|
|
6547
|
+
placeholder: "Select country",
|
|
6548
|
+
options: COUNTRY_OPTIONS
|
|
6549
|
+
}
|
|
6550
|
+
),
|
|
6551
|
+
showAddressType && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6552
|
+
EnhancedSelect,
|
|
6553
|
+
{
|
|
6554
|
+
label: addressTypeLabel,
|
|
6555
|
+
placeholder: "Select type",
|
|
6556
|
+
options: addressTypeOptions
|
|
6557
|
+
}
|
|
6558
|
+
)
|
|
6559
|
+
] }) });
|
|
6560
|
+
};
|
|
6561
|
+
var labelVariants = classVarianceAuthority.cva(
|
|
6562
|
+
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
6563
|
+
);
|
|
6564
|
+
var Label = React15__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6565
|
+
LabelPrimitive__namespace.Root,
|
|
6566
|
+
{
|
|
6567
|
+
ref,
|
|
6568
|
+
className: cn(labelVariants(), className),
|
|
6569
|
+
...props
|
|
6570
|
+
}
|
|
6571
|
+
));
|
|
6572
|
+
Label.displayName = LabelPrimitive__namespace.Root.displayName;
|
|
6573
|
+
var CounterpartyBasicInfo = ({ value = {
|
|
6574
|
+
name: "",
|
|
6575
|
+
type: "business",
|
|
6576
|
+
email: "",
|
|
6577
|
+
phone: "",
|
|
6578
|
+
dateOfBirth: "",
|
|
6579
|
+
idNumber: "",
|
|
6580
|
+
idType: "product_id",
|
|
6581
|
+
idValue: ""
|
|
6582
|
+
}, onDataChange }) => {
|
|
6583
|
+
const handleInputChange = (field, newValue) => {
|
|
6584
|
+
const updatedData = { ...value, [field]: newValue };
|
|
6585
|
+
onDataChange?.(updatedData);
|
|
6586
|
+
};
|
|
6587
|
+
const handleTypeChange = (type) => {
|
|
6588
|
+
handleInputChange("type", type);
|
|
6589
|
+
};
|
|
6590
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
6591
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
|
|
6592
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6593
|
+
EnhancedInput,
|
|
6594
|
+
{
|
|
6595
|
+
label: "Counterparty Name",
|
|
6596
|
+
value: value.name,
|
|
6597
|
+
onChange: (e) => handleInputChange("name", e.target.value),
|
|
6598
|
+
placeholder: "Enter counterparty name",
|
|
6599
|
+
required: true
|
|
6600
|
+
}
|
|
6601
|
+
),
|
|
6602
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
6603
|
+
/* @__PURE__ */ jsxRuntime.jsx(Label, { className: "text-sm font-medium", children: "Counterparty Type" }),
|
|
6604
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-6 h-10 items-center", children: [
|
|
6605
|
+
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center space-x-2 cursor-pointer", children: [
|
|
6606
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6607
|
+
"input",
|
|
6608
|
+
{
|
|
6609
|
+
type: "radio",
|
|
6610
|
+
name: "counterpartyType",
|
|
6611
|
+
value: "business",
|
|
6612
|
+
checked: value.type === "business",
|
|
6613
|
+
onChange: () => handleTypeChange("business"),
|
|
6614
|
+
className: "w-4 h-4 text-primary border-border focus:ring-primary focus:ring-2"
|
|
6615
|
+
}
|
|
6616
|
+
),
|
|
6617
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-foreground", children: "Business" })
|
|
6618
|
+
] }),
|
|
6619
|
+
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center space-x-2 cursor-pointer", children: [
|
|
6620
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6621
|
+
"input",
|
|
6622
|
+
{
|
|
6623
|
+
type: "radio",
|
|
6624
|
+
name: "counterpartyType",
|
|
6625
|
+
value: "individual",
|
|
6626
|
+
checked: value.type === "individual",
|
|
6627
|
+
onChange: () => handleTypeChange("individual"),
|
|
6628
|
+
className: "w-4 h-4 text-primary border-border focus:ring-primary focus:ring-2"
|
|
6629
|
+
}
|
|
6630
|
+
),
|
|
6631
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-foreground", children: "Individual" })
|
|
6632
|
+
] })
|
|
6633
|
+
] })
|
|
6634
|
+
] }),
|
|
6635
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6636
|
+
EnhancedSelect,
|
|
6637
|
+
{
|
|
6638
|
+
label: "Associated with",
|
|
6639
|
+
value: value.idType,
|
|
6640
|
+
onValueChange: (val) => handleInputChange("idType", val),
|
|
6641
|
+
options: [
|
|
6642
|
+
{ value: "product_id", label: "Product ID" },
|
|
6643
|
+
{ value: "business_id", label: "Business ID" },
|
|
6644
|
+
{ value: "individual_id", label: "Individual ID" },
|
|
6645
|
+
{ value: "account_number", label: "Account Number" }
|
|
6646
|
+
]
|
|
6647
|
+
}
|
|
6648
|
+
),
|
|
6649
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6650
|
+
EnhancedInput,
|
|
6651
|
+
{
|
|
6652
|
+
label: value.idType === "product_id" ? "Product ID" : value.idType === "business_id" ? "Business ID" : value.idType === "individual_id" ? "Individual ID" : "Account Number",
|
|
6653
|
+
value: value.idValue,
|
|
6654
|
+
onChange: (e) => handleInputChange("idValue", e.target.value),
|
|
6655
|
+
placeholder: `Enter ${value.idType === "product_id" ? "product ID" : value.idType === "business_id" ? "business ID" : value.idType === "individual_id" ? "individual ID" : "account number"}`,
|
|
6656
|
+
required: true
|
|
6657
|
+
}
|
|
6658
|
+
)
|
|
6659
|
+
] }),
|
|
6660
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
|
|
6661
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6662
|
+
EnhancedInput,
|
|
6663
|
+
{
|
|
6664
|
+
label: "Email",
|
|
6665
|
+
type: "email",
|
|
6666
|
+
value: value.email,
|
|
6667
|
+
onChange: (e) => handleInputChange("email", e.target.value),
|
|
6668
|
+
placeholder: "Enter email address"
|
|
6669
|
+
}
|
|
6670
|
+
),
|
|
6671
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6672
|
+
EnhancedInput,
|
|
6673
|
+
{
|
|
6674
|
+
label: "Phone Number",
|
|
6675
|
+
type: "tel",
|
|
6676
|
+
value: value.phone,
|
|
6677
|
+
onChange: (e) => handleInputChange("phone", e.target.value),
|
|
6678
|
+
placeholder: "Enter phone number"
|
|
6679
|
+
}
|
|
6680
|
+
),
|
|
6681
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6682
|
+
EnhancedInput,
|
|
6683
|
+
{
|
|
6684
|
+
label: "Date of Birth",
|
|
6685
|
+
type: "date",
|
|
6686
|
+
value: value.dateOfBirth,
|
|
6687
|
+
onChange: (e) => handleInputChange("dateOfBirth", e.target.value),
|
|
6688
|
+
placeholder: "Select date of birth"
|
|
6689
|
+
}
|
|
6690
|
+
),
|
|
6691
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6692
|
+
EnhancedInput,
|
|
6693
|
+
{
|
|
6694
|
+
label: "ID Number",
|
|
6695
|
+
value: value.idNumber,
|
|
6696
|
+
onChange: (e) => handleInputChange("idNumber", e.target.value),
|
|
6697
|
+
placeholder: "Enter ID number"
|
|
6698
|
+
}
|
|
6699
|
+
)
|
|
6700
|
+
] })
|
|
6701
|
+
] });
|
|
6702
|
+
};
|
|
6703
|
+
var CreateCounterpartyView = ({
|
|
6704
|
+
counterpartyData,
|
|
6705
|
+
paymentMethods,
|
|
6706
|
+
onPaymentMethodsChange,
|
|
6707
|
+
onBasicInfoChange,
|
|
6708
|
+
onCancel,
|
|
6709
|
+
onSubmit
|
|
6710
|
+
}) => {
|
|
6711
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6712
|
+
PageLayout,
|
|
6713
|
+
{
|
|
6714
|
+
title: "Create Counterparty",
|
|
6715
|
+
description: "Create a new counterparty with all required information",
|
|
6716
|
+
actions: [
|
|
6717
|
+
{ label: "Cancel", variant: "outline", onClick: onCancel },
|
|
6718
|
+
{ label: "Create Counterparty", variant: "default", onClick: onSubmit }
|
|
6719
|
+
],
|
|
6720
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
6721
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
|
|
6722
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Basic Information" }) }),
|
|
6723
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: /* @__PURE__ */ jsxRuntime.jsx(CounterpartyBasicInfo, { value: counterpartyData, onDataChange: onBasicInfoChange }) })
|
|
6724
|
+
] }),
|
|
6725
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
|
|
6726
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs(CardTitle, { children: [
|
|
6727
|
+
"Address",
|
|
6728
|
+
paymentMethods.some((m) => m.type === "wire") && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-destructive ml-1", children: "*" })
|
|
6729
|
+
] }) }),
|
|
6730
|
+
/* @__PURE__ */ jsxRuntime.jsxs(CardContent, { children: [
|
|
6731
|
+
paymentMethods.length === 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground mb-4", children: "Optional for ACH payments, required for wire transfers" }),
|
|
6732
|
+
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" }),
|
|
6733
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6734
|
+
AddressForm,
|
|
6735
|
+
{
|
|
6736
|
+
title: "",
|
|
6737
|
+
description: "",
|
|
6738
|
+
showApartment: true
|
|
6739
|
+
}
|
|
6740
|
+
)
|
|
6741
|
+
] })
|
|
6742
|
+
] }),
|
|
6743
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
|
|
6744
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Payment Configuration" }) }),
|
|
6745
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: /* @__PURE__ */ jsxRuntime.jsx(PaymentInformationSection, { onPaymentMethodsChange }) })
|
|
6746
|
+
] })
|
|
6747
|
+
] })
|
|
6748
|
+
}
|
|
6749
|
+
);
|
|
6750
|
+
};
|
|
6310
6751
|
|
|
6311
6752
|
// src/lib/mock-data/banking-data.ts
|
|
6312
6753
|
var defaultACHBankDetails = {
|
|
@@ -6592,79 +7033,6 @@ var ACHTransferSection = ({ isEditing, onToggleEdit, className, hideActions }) =
|
|
|
6592
7033
|
}
|
|
6593
7034
|
);
|
|
6594
7035
|
};
|
|
6595
|
-
var AddressForm = ({
|
|
6596
|
-
title,
|
|
6597
|
-
description,
|
|
6598
|
-
fieldPrefix = "",
|
|
6599
|
-
showAddressType = true,
|
|
6600
|
-
addressTypeOptions = ADDRESS_TYPE_OPTIONS.FI,
|
|
6601
|
-
fieldOverrides = {},
|
|
6602
|
-
showApartment = false
|
|
6603
|
-
}) => {
|
|
6604
|
-
const addressTypeLabel = fieldPrefix ? `${fieldPrefix} Address Type` : "Address Type";
|
|
6605
|
-
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: [
|
|
6606
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6607
|
-
EnhancedInput,
|
|
6608
|
-
{
|
|
6609
|
-
label: "Street Address",
|
|
6610
|
-
placeholder: "Enter street address",
|
|
6611
|
-
hint: fieldPrefix ? `${fieldPrefix} street address` : "Primary street address",
|
|
6612
|
-
...fieldOverrides.streetAddress
|
|
6613
|
-
}
|
|
6614
|
-
),
|
|
6615
|
-
showApartment && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6616
|
-
EnhancedInput,
|
|
6617
|
-
{
|
|
6618
|
-
label: "Apt, Building etc",
|
|
6619
|
-
placeholder: "Additional address information",
|
|
6620
|
-
hint: "Additional address information",
|
|
6621
|
-
...fieldOverrides.apartment
|
|
6622
|
-
}
|
|
6623
|
-
),
|
|
6624
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6625
|
-
EnhancedInput,
|
|
6626
|
-
{
|
|
6627
|
-
label: "City",
|
|
6628
|
-
placeholder: "Enter city",
|
|
6629
|
-
required: true,
|
|
6630
|
-
...fieldOverrides.city
|
|
6631
|
-
}
|
|
6632
|
-
),
|
|
6633
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6634
|
-
EnhancedInput,
|
|
6635
|
-
{
|
|
6636
|
-
label: "State",
|
|
6637
|
-
placeholder: "Enter state",
|
|
6638
|
-
hint: "State or province",
|
|
6639
|
-
...fieldOverrides.state
|
|
6640
|
-
}
|
|
6641
|
-
),
|
|
6642
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6643
|
-
EnhancedInput,
|
|
6644
|
-
{
|
|
6645
|
-
label: "Postal Code",
|
|
6646
|
-
placeholder: "12345",
|
|
6647
|
-
...fieldOverrides.postalCode
|
|
6648
|
-
}
|
|
6649
|
-
),
|
|
6650
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6651
|
-
EnhancedSelect,
|
|
6652
|
-
{
|
|
6653
|
-
label: "Country Code",
|
|
6654
|
-
placeholder: "Select country",
|
|
6655
|
-
options: COUNTRY_OPTIONS
|
|
6656
|
-
}
|
|
6657
|
-
),
|
|
6658
|
-
showAddressType && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6659
|
-
EnhancedSelect,
|
|
6660
|
-
{
|
|
6661
|
-
label: addressTypeLabel,
|
|
6662
|
-
placeholder: "Select type",
|
|
6663
|
-
options: addressTypeOptions
|
|
6664
|
-
}
|
|
6665
|
-
)
|
|
6666
|
-
] }) });
|
|
6667
|
-
};
|
|
6668
7036
|
var BankingDetailsCard = ({ isEditing, onToggleEdit, className }) => {
|
|
6669
7037
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6670
7038
|
FormCard,
|
|
@@ -6953,178 +7321,36 @@ var ContactInfoCard = ({ isEditing, onToggleEdit, className }) => {
|
|
|
6953
7321
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
6954
7322
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "First Name", value: "", layout: "horizontal" }),
|
|
6955
7323
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Last Name", value: "", layout: "horizontal" })
|
|
6956
|
-
] }),
|
|
6957
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
6958
|
-
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Email", value: "", layout: "horizontal" }),
|
|
6959
|
-
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Phone Number", value: "", layout: "horizontal" })
|
|
6960
|
-
] }),
|
|
6961
|
-
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-medium text-muted-foreground mt-6", children: "Mailing Address" }),
|
|
6962
|
-
isEditing ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
6963
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3", children: [
|
|
6964
|
-
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Street Address", value: "", layout: "horizontal" }),
|
|
6965
|
-
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Apartment, suite, or floor", value: "", layout: "horizontal" })
|
|
6966
|
-
] }),
|
|
6967
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
6968
|
-
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "City", value: "", layout: "horizontal" }),
|
|
6969
|
-
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "State", value: "Alabama", layout: "horizontal" })
|
|
6970
|
-
] }),
|
|
6971
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
6972
|
-
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Postal Code", value: "", layout: "horizontal" }),
|
|
6973
|
-
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Country Code", value: "US", layout: "horizontal" })
|
|
6974
|
-
] })
|
|
6975
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
6976
|
-
InfoField,
|
|
6977
|
-
{
|
|
6978
|
-
label: "Address",
|
|
6979
|
-
value: "123 Business Avenue, Suite 100, New York, NY 10001, US",
|
|
6980
|
-
layout: "horizontal"
|
|
6981
|
-
}
|
|
6982
|
-
)
|
|
6983
|
-
] })
|
|
6984
|
-
}
|
|
6985
|
-
);
|
|
6986
|
-
};
|
|
6987
|
-
var labelVariants = classVarianceAuthority.cva(
|
|
6988
|
-
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
6989
|
-
);
|
|
6990
|
-
var Label = React15__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6991
|
-
LabelPrimitive__namespace.Root,
|
|
6992
|
-
{
|
|
6993
|
-
ref,
|
|
6994
|
-
className: cn(labelVariants(), className),
|
|
6995
|
-
...props
|
|
6996
|
-
}
|
|
6997
|
-
));
|
|
6998
|
-
Label.displayName = LabelPrimitive__namespace.Root.displayName;
|
|
6999
|
-
var CounterpartyBasicInfo = ({ value = {
|
|
7000
|
-
name: "",
|
|
7001
|
-
type: "business",
|
|
7002
|
-
email: "",
|
|
7003
|
-
phone: "",
|
|
7004
|
-
dateOfBirth: "",
|
|
7005
|
-
idNumber: "",
|
|
7006
|
-
idType: "product_id",
|
|
7007
|
-
idValue: ""
|
|
7008
|
-
}, onDataChange }) => {
|
|
7009
|
-
const handleInputChange = (field, newValue) => {
|
|
7010
|
-
const updatedData = { ...value, [field]: newValue };
|
|
7011
|
-
onDataChange?.(updatedData);
|
|
7012
|
-
};
|
|
7013
|
-
const handleTypeChange = (type) => {
|
|
7014
|
-
handleInputChange("type", type);
|
|
7015
|
-
};
|
|
7016
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
7017
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
|
|
7018
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7019
|
-
EnhancedInput,
|
|
7020
|
-
{
|
|
7021
|
-
label: "Counterparty Name",
|
|
7022
|
-
value: value.name,
|
|
7023
|
-
onChange: (e) => handleInputChange("name", e.target.value),
|
|
7024
|
-
placeholder: "Enter counterparty name",
|
|
7025
|
-
required: true
|
|
7026
|
-
}
|
|
7027
|
-
),
|
|
7028
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
7029
|
-
/* @__PURE__ */ jsxRuntime.jsx(Label, { className: "text-sm font-medium", children: "Counterparty Type" }),
|
|
7030
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-6 h-10 items-center", children: [
|
|
7031
|
-
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center space-x-2 cursor-pointer", children: [
|
|
7032
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7033
|
-
"input",
|
|
7034
|
-
{
|
|
7035
|
-
type: "radio",
|
|
7036
|
-
name: "counterpartyType",
|
|
7037
|
-
value: "business",
|
|
7038
|
-
checked: value.type === "business",
|
|
7039
|
-
onChange: () => handleTypeChange("business"),
|
|
7040
|
-
className: "w-4 h-4 text-primary border-border focus:ring-primary focus:ring-2"
|
|
7041
|
-
}
|
|
7042
|
-
),
|
|
7043
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-foreground", children: "Business" })
|
|
7044
|
-
] }),
|
|
7045
|
-
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center space-x-2 cursor-pointer", children: [
|
|
7046
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7047
|
-
"input",
|
|
7048
|
-
{
|
|
7049
|
-
type: "radio",
|
|
7050
|
-
name: "counterpartyType",
|
|
7051
|
-
value: "individual",
|
|
7052
|
-
checked: value.type === "individual",
|
|
7053
|
-
onChange: () => handleTypeChange("individual"),
|
|
7054
|
-
className: "w-4 h-4 text-primary border-border focus:ring-primary focus:ring-2"
|
|
7055
|
-
}
|
|
7056
|
-
),
|
|
7057
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-foreground", children: "Individual" })
|
|
7058
|
-
] })
|
|
7059
|
-
] })
|
|
7060
|
-
] }),
|
|
7061
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7062
|
-
EnhancedSelect,
|
|
7063
|
-
{
|
|
7064
|
-
label: "Associated with",
|
|
7065
|
-
value: value.idType,
|
|
7066
|
-
onValueChange: (val) => handleInputChange("idType", val),
|
|
7067
|
-
options: [
|
|
7068
|
-
{ value: "product_id", label: "Product ID" },
|
|
7069
|
-
{ value: "business_id", label: "Business ID" },
|
|
7070
|
-
{ value: "individual_id", label: "Individual ID" },
|
|
7071
|
-
{ value: "account_number", label: "Account Number" }
|
|
7072
|
-
]
|
|
7073
|
-
}
|
|
7074
|
-
),
|
|
7075
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7076
|
-
EnhancedInput,
|
|
7077
|
-
{
|
|
7078
|
-
label: value.idType === "product_id" ? "Product ID" : value.idType === "business_id" ? "Business ID" : value.idType === "individual_id" ? "Individual ID" : "Account Number",
|
|
7079
|
-
value: value.idValue,
|
|
7080
|
-
onChange: (e) => handleInputChange("idValue", e.target.value),
|
|
7081
|
-
placeholder: `Enter ${value.idType === "product_id" ? "product ID" : value.idType === "business_id" ? "business ID" : value.idType === "individual_id" ? "individual ID" : "account number"}`,
|
|
7082
|
-
required: true
|
|
7083
|
-
}
|
|
7084
|
-
)
|
|
7085
|
-
] }),
|
|
7086
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
|
|
7087
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7088
|
-
EnhancedInput,
|
|
7089
|
-
{
|
|
7090
|
-
label: "Email",
|
|
7091
|
-
type: "email",
|
|
7092
|
-
value: value.email,
|
|
7093
|
-
onChange: (e) => handleInputChange("email", e.target.value),
|
|
7094
|
-
placeholder: "Enter email address"
|
|
7095
|
-
}
|
|
7096
|
-
),
|
|
7097
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7098
|
-
EnhancedInput,
|
|
7099
|
-
{
|
|
7100
|
-
label: "Phone Number",
|
|
7101
|
-
type: "tel",
|
|
7102
|
-
value: value.phone,
|
|
7103
|
-
onChange: (e) => handleInputChange("phone", e.target.value),
|
|
7104
|
-
placeholder: "Enter phone number"
|
|
7105
|
-
}
|
|
7106
|
-
),
|
|
7107
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7108
|
-
EnhancedInput,
|
|
7109
|
-
{
|
|
7110
|
-
label: "Date of Birth",
|
|
7111
|
-
type: "date",
|
|
7112
|
-
value: value.dateOfBirth,
|
|
7113
|
-
onChange: (e) => handleInputChange("dateOfBirth", e.target.value),
|
|
7114
|
-
placeholder: "Select date of birth"
|
|
7115
|
-
}
|
|
7116
|
-
),
|
|
7117
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7118
|
-
EnhancedInput,
|
|
7119
|
-
{
|
|
7120
|
-
label: "ID Number",
|
|
7121
|
-
value: value.idNumber,
|
|
7122
|
-
onChange: (e) => handleInputChange("idNumber", e.target.value),
|
|
7123
|
-
placeholder: "Enter ID number"
|
|
7124
|
-
}
|
|
7125
|
-
)
|
|
7126
|
-
] })
|
|
7127
|
-
] });
|
|
7324
|
+
] }),
|
|
7325
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
7326
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Email", value: "", layout: "horizontal" }),
|
|
7327
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Phone Number", value: "", layout: "horizontal" })
|
|
7328
|
+
] }),
|
|
7329
|
+
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-medium text-muted-foreground mt-6", children: "Mailing Address" }),
|
|
7330
|
+
isEditing ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7331
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3", children: [
|
|
7332
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Street Address", value: "", layout: "horizontal" }),
|
|
7333
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Apartment, suite, or floor", value: "", layout: "horizontal" })
|
|
7334
|
+
] }),
|
|
7335
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
7336
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "City", value: "", layout: "horizontal" }),
|
|
7337
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "State", value: "Alabama", layout: "horizontal" })
|
|
7338
|
+
] }),
|
|
7339
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
7340
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Postal Code", value: "", layout: "horizontal" }),
|
|
7341
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Country Code", value: "US", layout: "horizontal" })
|
|
7342
|
+
] })
|
|
7343
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
7344
|
+
InfoField,
|
|
7345
|
+
{
|
|
7346
|
+
label: "Address",
|
|
7347
|
+
value: "123 Business Avenue, Suite 100, New York, NY 10001, US",
|
|
7348
|
+
layout: "horizontal"
|
|
7349
|
+
}
|
|
7350
|
+
)
|
|
7351
|
+
] })
|
|
7352
|
+
}
|
|
7353
|
+
);
|
|
7128
7354
|
};
|
|
7129
7355
|
var IntermediaryFI = () => {
|
|
7130
7356
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
@@ -7338,184 +7564,6 @@ var OriginatorCard = ({ isEditing, onToggleEdit, className, hideActions }) => {
|
|
|
7338
7564
|
}
|
|
7339
7565
|
);
|
|
7340
7566
|
};
|
|
7341
|
-
var SimpleACHForm = () => {
|
|
7342
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
|
|
7343
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7344
|
-
EnhancedInput,
|
|
7345
|
-
{
|
|
7346
|
-
label: "Routing Number",
|
|
7347
|
-
placeholder: "Enter 9-digit routing number",
|
|
7348
|
-
pattern: "[0-9]{9}",
|
|
7349
|
-
maxLength: 9,
|
|
7350
|
-
hint: "9-digit routing number",
|
|
7351
|
-
required: true
|
|
7352
|
-
}
|
|
7353
|
-
),
|
|
7354
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7355
|
-
EnhancedInput,
|
|
7356
|
-
{
|
|
7357
|
-
label: "Account Number",
|
|
7358
|
-
placeholder: "Enter account number",
|
|
7359
|
-
required: true
|
|
7360
|
-
}
|
|
7361
|
-
),
|
|
7362
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7363
|
-
EnhancedSelect,
|
|
7364
|
-
{
|
|
7365
|
-
label: "Account Type",
|
|
7366
|
-
placeholder: "Select account type",
|
|
7367
|
-
options: [
|
|
7368
|
-
{ value: "checking", label: "Checking" },
|
|
7369
|
-
{ value: "savings", label: "Savings" }
|
|
7370
|
-
]
|
|
7371
|
-
}
|
|
7372
|
-
)
|
|
7373
|
-
] });
|
|
7374
|
-
};
|
|
7375
|
-
var SimpleWireForm = () => {
|
|
7376
|
-
const [wireType, setWireType] = React15.useState("domestic");
|
|
7377
|
-
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: [
|
|
7378
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7379
|
-
EnhancedSelect,
|
|
7380
|
-
{
|
|
7381
|
-
label: "Wire Type",
|
|
7382
|
-
placeholder: "Select wire type",
|
|
7383
|
-
value: wireType,
|
|
7384
|
-
onValueChange: setWireType,
|
|
7385
|
-
options: [
|
|
7386
|
-
{ value: "domestic", label: "Domestic" },
|
|
7387
|
-
{ value: "international", label: "International" }
|
|
7388
|
-
]
|
|
7389
|
-
}
|
|
7390
|
-
),
|
|
7391
|
-
wireType === "domestic" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7392
|
-
EnhancedInput,
|
|
7393
|
-
{
|
|
7394
|
-
label: "Routing Number",
|
|
7395
|
-
placeholder: "Enter 9-digit routing number",
|
|
7396
|
-
pattern: "[0-9]{9}",
|
|
7397
|
-
maxLength: 9,
|
|
7398
|
-
hint: "9-digit routing number",
|
|
7399
|
-
required: true
|
|
7400
|
-
}
|
|
7401
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
7402
|
-
EnhancedInput,
|
|
7403
|
-
{
|
|
7404
|
-
label: "BIC Number",
|
|
7405
|
-
placeholder: "Enter BIC/SWIFT code",
|
|
7406
|
-
hint: "Bank Identifier Code",
|
|
7407
|
-
required: true
|
|
7408
|
-
}
|
|
7409
|
-
),
|
|
7410
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7411
|
-
EnhancedInput,
|
|
7412
|
-
{
|
|
7413
|
-
label: "Account Number",
|
|
7414
|
-
placeholder: "Enter account number",
|
|
7415
|
-
required: true
|
|
7416
|
-
}
|
|
7417
|
-
)
|
|
7418
|
-
] }) });
|
|
7419
|
-
};
|
|
7420
|
-
var PaymentInformationSection = ({ onPaymentMethodsChange } = {}) => {
|
|
7421
|
-
const [paymentMethods, setPaymentMethods] = React15.useState([]);
|
|
7422
|
-
const [showAddMenu, setShowAddMenu] = React15.useState(false);
|
|
7423
|
-
const addPaymentMethod = (type) => {
|
|
7424
|
-
const newMethod = {
|
|
7425
|
-
id: `${type}-${Date.now()}`,
|
|
7426
|
-
type,
|
|
7427
|
-
name: type === "ach" ? "ACH Payment" : "Wire Transfer",
|
|
7428
|
-
collapsed: false
|
|
7429
|
-
};
|
|
7430
|
-
const updatedMethods = [...paymentMethods, newMethod];
|
|
7431
|
-
setPaymentMethods(updatedMethods);
|
|
7432
|
-
onPaymentMethodsChange?.(updatedMethods);
|
|
7433
|
-
setShowAddMenu(false);
|
|
7434
|
-
};
|
|
7435
|
-
const removePaymentMethod = (id) => {
|
|
7436
|
-
const updatedMethods = paymentMethods.filter((method) => method.id !== id);
|
|
7437
|
-
setPaymentMethods(updatedMethods);
|
|
7438
|
-
onPaymentMethodsChange?.(updatedMethods);
|
|
7439
|
-
};
|
|
7440
|
-
const toggleCollapse = (id) => {
|
|
7441
|
-
setPaymentMethods(paymentMethods.map(
|
|
7442
|
-
(method) => method.id === id ? { ...method, collapsed: !method.collapsed } : method
|
|
7443
|
-
));
|
|
7444
|
-
};
|
|
7445
|
-
const renderPaymentMethodContent = (method) => {
|
|
7446
|
-
if (method.type === "ach") {
|
|
7447
|
-
return /* @__PURE__ */ jsxRuntime.jsx(SimpleACHForm, {});
|
|
7448
|
-
} else {
|
|
7449
|
-
return /* @__PURE__ */ jsxRuntime.jsx(SimpleWireForm, {});
|
|
7450
|
-
}
|
|
7451
|
-
};
|
|
7452
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
7453
|
-
paymentMethods.map((method) => /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "relative", children: [
|
|
7454
|
-
/* @__PURE__ */ jsxRuntime.jsx(CardHeader, { className: "pb-3", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
7455
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
7456
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7457
|
-
Button,
|
|
7458
|
-
{
|
|
7459
|
-
variant: "ghost",
|
|
7460
|
-
size: "icon",
|
|
7461
|
-
onClick: () => toggleCollapse(method.id),
|
|
7462
|
-
className: "h-6 w-6",
|
|
7463
|
-
children: method.collapsed ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { className: "h-4 w-4" })
|
|
7464
|
-
}
|
|
7465
|
-
),
|
|
7466
|
-
/* @__PURE__ */ jsxRuntime.jsx(CardTitle, { className: "text-base", children: method.name }),
|
|
7467
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs bg-muted px-2 py-1 rounded-md uppercase font-medium", children: method.type })
|
|
7468
|
-
] }),
|
|
7469
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7470
|
-
Button,
|
|
7471
|
-
{
|
|
7472
|
-
variant: "ghost",
|
|
7473
|
-
size: "icon",
|
|
7474
|
-
onClick: () => removePaymentMethod(method.id),
|
|
7475
|
-
className: "h-6 w-6 text-destructive hover:text-destructive/80 hover:bg-destructive/10",
|
|
7476
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Trash2, { className: "h-4 w-4" })
|
|
7477
|
-
}
|
|
7478
|
-
)
|
|
7479
|
-
] }) }),
|
|
7480
|
-
!method.collapsed && /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: renderPaymentMethodContent(method) })
|
|
7481
|
-
] }, method.id)),
|
|
7482
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
7483
|
-
paymentMethods.length === 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground mb-2", children: "At least one payment method is required *" }),
|
|
7484
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7485
|
-
Button,
|
|
7486
|
-
{
|
|
7487
|
-
variant: "outline",
|
|
7488
|
-
onClick: () => setShowAddMenu(!showAddMenu),
|
|
7489
|
-
className: "w-full border-dashed",
|
|
7490
|
-
children: [
|
|
7491
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-2" }),
|
|
7492
|
-
"Add Payment Information"
|
|
7493
|
-
]
|
|
7494
|
-
}
|
|
7495
|
-
),
|
|
7496
|
-
showAddMenu && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-full left-0 right-0 mt-2 bg-background border border-border rounded-md shadow-lg z-10", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-2 space-y-1", children: [
|
|
7497
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7498
|
-
Button,
|
|
7499
|
-
{
|
|
7500
|
-
variant: "ghost",
|
|
7501
|
-
onClick: () => addPaymentMethod("ach"),
|
|
7502
|
-
className: "w-full justify-start",
|
|
7503
|
-
children: "Add ACH Payment"
|
|
7504
|
-
}
|
|
7505
|
-
),
|
|
7506
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7507
|
-
Button,
|
|
7508
|
-
{
|
|
7509
|
-
variant: "ghost",
|
|
7510
|
-
onClick: () => addPaymentMethod("wire"),
|
|
7511
|
-
className: "w-full justify-start",
|
|
7512
|
-
children: "Add Wire Transfer"
|
|
7513
|
-
}
|
|
7514
|
-
)
|
|
7515
|
-
] }) })
|
|
7516
|
-
] })
|
|
7517
|
-
] });
|
|
7518
|
-
};
|
|
7519
7567
|
var receiverSchema = zod.z.object({
|
|
7520
7568
|
routingNumber: zod.z.string().min(9, "Routing number must be 9 digits").max(9, "Routing number must be 9 digits"),
|
|
7521
7569
|
bankShortName: zod.z.string().min(1, "Bank short name is required")
|
|
@@ -11704,54 +11752,6 @@ var CounterpartyDetail = () => {
|
|
|
11704
11752
|
);
|
|
11705
11753
|
};
|
|
11706
11754
|
var CounterpartyDetail_default = CounterpartyDetail;
|
|
11707
|
-
var CreateCounterpartyView = ({
|
|
11708
|
-
counterpartyData,
|
|
11709
|
-
paymentMethods,
|
|
11710
|
-
onPaymentMethodsChange,
|
|
11711
|
-
onBasicInfoChange,
|
|
11712
|
-
onCancel,
|
|
11713
|
-
onSubmit
|
|
11714
|
-
}) => {
|
|
11715
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11716
|
-
PageLayout,
|
|
11717
|
-
{
|
|
11718
|
-
title: "Create Counterparty",
|
|
11719
|
-
description: "Create a new counterparty with all required information",
|
|
11720
|
-
actions: [
|
|
11721
|
-
{ label: "Cancel", variant: "outline", onClick: onCancel },
|
|
11722
|
-
{ label: "Create Counterparty", variant: "default", onClick: onSubmit }
|
|
11723
|
-
],
|
|
11724
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
11725
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
|
|
11726
|
-
/* @__PURE__ */ jsxRuntime.jsx(CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Basic Information" }) }),
|
|
11727
|
-
/* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: /* @__PURE__ */ jsxRuntime.jsx(CounterpartyBasicInfo, { value: counterpartyData, onDataChange: onBasicInfoChange }) })
|
|
11728
|
-
] }),
|
|
11729
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
|
|
11730
|
-
/* @__PURE__ */ jsxRuntime.jsx(CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs(CardTitle, { children: [
|
|
11731
|
-
"Address",
|
|
11732
|
-
paymentMethods.some((m) => m.type === "wire") && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-destructive ml-1", children: "*" })
|
|
11733
|
-
] }) }),
|
|
11734
|
-
/* @__PURE__ */ jsxRuntime.jsxs(CardContent, { children: [
|
|
11735
|
-
paymentMethods.length === 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground mb-4", children: "Optional for ACH payments, required for wire transfers" }),
|
|
11736
|
-
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" }),
|
|
11737
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11738
|
-
AddressForm,
|
|
11739
|
-
{
|
|
11740
|
-
title: "",
|
|
11741
|
-
description: "",
|
|
11742
|
-
showApartment: true
|
|
11743
|
-
}
|
|
11744
|
-
)
|
|
11745
|
-
] })
|
|
11746
|
-
] }),
|
|
11747
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
|
|
11748
|
-
/* @__PURE__ */ jsxRuntime.jsx(CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: "Payment Configuration" }) }),
|
|
11749
|
-
/* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: /* @__PURE__ */ jsxRuntime.jsx(PaymentInformationSection, { onPaymentMethodsChange }) })
|
|
11750
|
-
] })
|
|
11751
|
-
] })
|
|
11752
|
-
}
|
|
11753
|
-
);
|
|
11754
|
-
};
|
|
11755
11755
|
var CreateCounterparty = () => {
|
|
11756
11756
|
const navigate = reactRouterDom.useNavigate();
|
|
11757
11757
|
const [counterpartyData, setCounterpartyData] = React15.useState({
|
|
@@ -16437,6 +16437,7 @@ exports.CounterpartyTypeBadge = CounterpartyTypeBadge;
|
|
|
16437
16437
|
exports.CreateBusiness = Create_default;
|
|
16438
16438
|
exports.CreateBusinessView = CreateBusinessView;
|
|
16439
16439
|
exports.CreateCounterparty = Create_default2;
|
|
16440
|
+
exports.CreateCounterpartyView = CreateCounterpartyView;
|
|
16440
16441
|
exports.CreateIndividual = Create_default3;
|
|
16441
16442
|
exports.CreateVelocityLimit = CreateVelocityLimit;
|
|
16442
16443
|
exports.Dashboard = Dashboard_default;
|