braid-ui 1.0.49 → 1.0.50
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/css/braid-ui.css +10 -2
- package/dist/css/braid-ui.min.css +1 -1
- package/dist/index.cjs +435 -112
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +104 -11
- package/dist/index.d.ts +104 -11
- package/dist/index.js +435 -113
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -12,7 +12,7 @@ import { NavLink, useLocation, useNavigate, useSearchParams, useParams, Link } f
|
|
|
12
12
|
import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
|
|
13
13
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
14
14
|
import { FormProvider as FormProvider$1, useFormContext, Controller, useForm } from 'react-hook-form';
|
|
15
|
-
import { get } from 'lodash';
|
|
15
|
+
import { get, debounce } from 'lodash';
|
|
16
16
|
import { zodResolver } from '@hookform/resolvers/zod';
|
|
17
17
|
import { z } from 'zod';
|
|
18
18
|
import { Collapsible, CollapsibleTrigger, CollapsibleContent } from '@radix-ui/react-collapsible';
|
|
@@ -8369,15 +8369,14 @@ var TRANSACTION_TYPES = [
|
|
|
8369
8369
|
{ value: "ach", label: "ACH", icon: Building2 },
|
|
8370
8370
|
{ value: "wire", label: "Wire", icon: Zap }
|
|
8371
8371
|
];
|
|
8372
|
-
var
|
|
8373
|
-
{ value: "
|
|
8374
|
-
{ value: "
|
|
8375
|
-
|
|
8376
|
-
|
|
8377
|
-
{ value: "
|
|
8378
|
-
{ value: "
|
|
8379
|
-
{ value: "
|
|
8380
|
-
{ value: "CNY", label: "CNY - Chinese Yuan" }
|
|
8372
|
+
var ADJUSTMENT_DIRECTION_OPTIONS = [
|
|
8373
|
+
{ value: "debit", label: "Debit" },
|
|
8374
|
+
{ value: "credit", label: "Credit" }
|
|
8375
|
+
];
|
|
8376
|
+
var ADJUSTMENT_TYPE_OPTIONS = [
|
|
8377
|
+
{ value: "collection", label: "Collection" },
|
|
8378
|
+
{ value: "transaction_reversal", label: "Transaction Reversal" },
|
|
8379
|
+
{ value: "transaction_adjustment", label: "Transaction Adjustment" }
|
|
8381
8380
|
];
|
|
8382
8381
|
var NewTransactionView = ({
|
|
8383
8382
|
form,
|
|
@@ -8389,19 +8388,39 @@ var NewTransactionView = ({
|
|
|
8389
8388
|
submissionStatus,
|
|
8390
8389
|
errorMessage,
|
|
8391
8390
|
transactionId,
|
|
8391
|
+
isAccountLoading,
|
|
8392
|
+
isCounterpartyLoading,
|
|
8393
|
+
isSubmitting,
|
|
8394
|
+
counterpartySearchResults,
|
|
8395
|
+
isCounterpartySearching,
|
|
8396
|
+
showCounterpartyDropdown,
|
|
8392
8397
|
onAccountLookup,
|
|
8393
|
-
onCounterpartyLookup,
|
|
8394
8398
|
onEditAccount,
|
|
8395
8399
|
onEditCounterparty,
|
|
8400
|
+
onTransactionTypeChange,
|
|
8396
8401
|
onSubmit,
|
|
8397
8402
|
onCancel,
|
|
8398
8403
|
onConfirmationClose,
|
|
8399
|
-
onConfirmationOpenChange
|
|
8404
|
+
onConfirmationOpenChange,
|
|
8405
|
+
onCounterpartySearchChange,
|
|
8406
|
+
onCounterpartySelect,
|
|
8407
|
+
onCounterpartyDropdownClose,
|
|
8408
|
+
receiverAccountLookedUp,
|
|
8409
|
+
receiverAccountData,
|
|
8410
|
+
isReceiverAccountLoading,
|
|
8411
|
+
onReceiverAccountLookup,
|
|
8412
|
+
onEditReceiverAccount
|
|
8400
8413
|
}) => {
|
|
8401
8414
|
const transactionType = form.watch("transactionType");
|
|
8402
8415
|
const accountNumber = form.watch("accountNumber");
|
|
8403
8416
|
const counterpartyName = form.watch("counterpartyName");
|
|
8404
8417
|
const amount = form.watch("amount");
|
|
8418
|
+
const receiverAccountNumber = form.watch("receiverAccountNumber");
|
|
8419
|
+
const adjustmentDirection = form.watch("adjustmentDirection");
|
|
8420
|
+
const adjustmentType = form.watch("adjustmentType");
|
|
8421
|
+
const requiresCounterparty = ["ach", "wire"].includes(transactionType);
|
|
8422
|
+
const isTransfer = transactionType === "transfer";
|
|
8423
|
+
const isAdjustment = transactionType === "adjustment";
|
|
8405
8424
|
const accountDataGrid = accountData ? [
|
|
8406
8425
|
{
|
|
8407
8426
|
title: "Account Information",
|
|
@@ -8421,27 +8440,41 @@ var NewTransactionView = ({
|
|
|
8421
8440
|
items: [
|
|
8422
8441
|
{ label: "Counterparty Name", value: counterpartyData.counterpartyName },
|
|
8423
8442
|
{ label: "Counterparty ID", value: counterpartyData.counterpartyId },
|
|
8424
|
-
{ label: "Type", value: counterpartyData.
|
|
8425
|
-
{ label: "Status", value: counterpartyData.status },
|
|
8426
|
-
{ label: "Tax ID", value: counterpartyData.taxId },
|
|
8427
|
-
{ label: "Primary Contact", value: counterpartyData.primaryContact },
|
|
8443
|
+
{ label: "Instrument Type", value: counterpartyData.paymentInstrumentType?.toUpperCase() || "-" },
|
|
8428
8444
|
{ label: "Contact Email", value: counterpartyData.contactEmail },
|
|
8429
|
-
{ label: "Contact Phone", value: counterpartyData.contactPhone }
|
|
8430
|
-
{ label: "Address", value: counterpartyData.address }
|
|
8445
|
+
{ label: "Contact Phone", value: counterpartyData.contactPhone }
|
|
8431
8446
|
]
|
|
8432
8447
|
}
|
|
8433
8448
|
] : [];
|
|
8434
|
-
const
|
|
8449
|
+
const receiverAccountDataGrid = receiverAccountData ? [
|
|
8435
8450
|
{
|
|
8436
|
-
title: "
|
|
8451
|
+
title: "Receiver Account Information",
|
|
8437
8452
|
items: [
|
|
8438
|
-
{ label: "
|
|
8439
|
-
{ label: "Account
|
|
8440
|
-
{ label: "
|
|
8441
|
-
{ label: "
|
|
8442
|
-
{ label: "
|
|
8453
|
+
{ label: "Account Number", value: receiverAccountData.accountNumber },
|
|
8454
|
+
{ label: "Account Name", value: receiverAccountData.accountName },
|
|
8455
|
+
{ label: "Account Type", value: receiverAccountData.accountType },
|
|
8456
|
+
{ label: "Customer Name", value: receiverAccountData.customerName },
|
|
8457
|
+
{ label: "Customer ID", value: receiverAccountData.customerId }
|
|
8443
8458
|
]
|
|
8444
8459
|
}
|
|
8460
|
+
] : [];
|
|
8461
|
+
const reviewItems = [
|
|
8462
|
+
{ label: "Transaction Type", value: TRANSACTION_TYPES.find((t) => t.value === transactionType)?.label || "-" },
|
|
8463
|
+
{ label: "Account Number", value: accountNumber || "-" },
|
|
8464
|
+
...isAdjustment ? [
|
|
8465
|
+
{ label: "Direction", value: adjustmentDirection === "debit" ? "Debit" : adjustmentDirection === "credit" ? "Credit" : "-" },
|
|
8466
|
+
{ label: "Adjustment Type", value: ADJUSTMENT_TYPE_OPTIONS.find((t) => t.value === adjustmentType)?.label || "-" }
|
|
8467
|
+
] : [],
|
|
8468
|
+
...isTransfer ? [{ label: "Receiver Account", value: receiverAccountNumber || "-" }] : [],
|
|
8469
|
+
...requiresCounterparty ? [{ label: "Counterparty", value: counterpartyName || "-" }] : [],
|
|
8470
|
+
{ label: "Amount", value: amount ? `$${amount}` : "-" },
|
|
8471
|
+
{ label: "Description", value: form.watch("description") || "N/A" }
|
|
8472
|
+
];
|
|
8473
|
+
const reviewData = [
|
|
8474
|
+
{
|
|
8475
|
+
title: "Transaction Summary",
|
|
8476
|
+
items: reviewItems
|
|
8477
|
+
}
|
|
8445
8478
|
];
|
|
8446
8479
|
return /* @__PURE__ */ jsx(PageLayout, { title: "New Transaction", children: /* @__PURE__ */ jsxs("div", { className: "max-w-4xl mx-auto space-y-6", children: [
|
|
8447
8480
|
/* @__PURE__ */ jsx(FormProvider, { form, children: /* @__PURE__ */ jsxs("form", { onSubmit: (e) => e.preventDefault(), children: [
|
|
@@ -8453,16 +8486,19 @@ var NewTransactionView = ({
|
|
|
8453
8486
|
placeholder: "Enter account number"
|
|
8454
8487
|
}
|
|
8455
8488
|
) }),
|
|
8456
|
-
/* @__PURE__ */
|
|
8489
|
+
/* @__PURE__ */ jsx(
|
|
8457
8490
|
Button,
|
|
8458
8491
|
{
|
|
8459
8492
|
onClick: onAccountLookup,
|
|
8460
|
-
disabled: !accountNumber,
|
|
8493
|
+
disabled: !accountNumber || isAccountLoading,
|
|
8461
8494
|
className: "shrink-0 mt-0 w-48",
|
|
8462
|
-
children: [
|
|
8495
|
+
children: isAccountLoading ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8496
|
+
/* @__PURE__ */ jsx(Loader2, { className: "h-4 w-4 mr-2 animate-spin" }),
|
|
8497
|
+
"Looking up..."
|
|
8498
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8463
8499
|
/* @__PURE__ */ jsx(Search, { className: "h-4 w-4 mr-2" }),
|
|
8464
8500
|
"Lookup Account"
|
|
8465
|
-
]
|
|
8501
|
+
] })
|
|
8466
8502
|
}
|
|
8467
8503
|
)
|
|
8468
8504
|
] }) }) : /* @__PURE__ */ jsx(
|
|
@@ -8493,7 +8529,7 @@ var NewTransactionView = ({
|
|
|
8493
8529
|
"button",
|
|
8494
8530
|
{
|
|
8495
8531
|
type: "button",
|
|
8496
|
-
onClick: () =>
|
|
8532
|
+
onClick: () => onTransactionTypeChange(type.value),
|
|
8497
8533
|
disabled: !accountLookedUp,
|
|
8498
8534
|
className: cn(
|
|
8499
8535
|
"flex flex-col items-center justify-center p-4 lg:p-3 rounded-lg border-2 transition-all",
|
|
@@ -8516,31 +8552,99 @@ var NewTransactionView = ({
|
|
|
8516
8552
|
}) })
|
|
8517
8553
|
}
|
|
8518
8554
|
),
|
|
8519
|
-
!counterpartyLookedUp ? /* @__PURE__ */
|
|
8555
|
+
requiresCounterparty && (!counterpartyLookedUp ? /* @__PURE__ */ jsxs(
|
|
8520
8556
|
FormCard,
|
|
8521
8557
|
{
|
|
8522
|
-
title: "Counterparty
|
|
8558
|
+
title: "Counterparty Search",
|
|
8559
|
+
variant: "default",
|
|
8560
|
+
className: cn(!transactionType && "opacity-50 pointer-events-none"),
|
|
8561
|
+
children: [
|
|
8562
|
+
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
8563
|
+
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
8564
|
+
/* @__PURE__ */ jsx(
|
|
8565
|
+
"input",
|
|
8566
|
+
{
|
|
8567
|
+
type: "text",
|
|
8568
|
+
placeholder: "Start typing to search counterparties...",
|
|
8569
|
+
value: counterpartyName,
|
|
8570
|
+
onChange: (e) => onCounterpartySearchChange(e.target.value),
|
|
8571
|
+
disabled: !transactionType,
|
|
8572
|
+
className: cn(
|
|
8573
|
+
"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
|
|
8574
|
+
"ring-offset-background placeholder:text-muted-foreground",
|
|
8575
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
8576
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
8577
|
+
isCounterpartySearching && "pr-10"
|
|
8578
|
+
)
|
|
8579
|
+
}
|
|
8580
|
+
),
|
|
8581
|
+
isCounterpartySearching && /* @__PURE__ */ jsx("div", { className: "absolute right-3 top-1/2 -translate-y-1/2", children: /* @__PURE__ */ jsx(Loader2, { className: "h-4 w-4 animate-spin text-muted-foreground" }) })
|
|
8582
|
+
] }),
|
|
8583
|
+
showCounterpartyDropdown && counterpartySearchResults.length > 0 && /* @__PURE__ */ jsx("div", { className: "absolute z-50 w-full mt-1 bg-popover border border-border rounded-md shadow-lg max-h-60 overflow-auto", children: counterpartySearchResults.map((result) => /* @__PURE__ */ jsxs(
|
|
8584
|
+
"button",
|
|
8585
|
+
{
|
|
8586
|
+
type: "button",
|
|
8587
|
+
onClick: () => onCounterpartySelect(result),
|
|
8588
|
+
className: "w-full px-3 py-2 text-left hover:bg-accent transition-colors",
|
|
8589
|
+
children: [
|
|
8590
|
+
/* @__PURE__ */ jsx("div", { className: "font-medium text-sm", children: result.name }),
|
|
8591
|
+
/* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground", children: result.id })
|
|
8592
|
+
]
|
|
8593
|
+
},
|
|
8594
|
+
result.id
|
|
8595
|
+
)) }),
|
|
8596
|
+
showCounterpartyDropdown && counterpartySearchResults.length === 0 && !isCounterpartySearching && counterpartyName.length >= 2 && /* @__PURE__ */ jsx("div", { className: "absolute z-50 w-full mt-1 bg-popover border border-border rounded-md shadow-lg p-3", children: /* @__PURE__ */ jsxs("p", { className: "text-sm text-muted-foreground", children: [
|
|
8597
|
+
'No counterparties found matching "',
|
|
8598
|
+
counterpartyName,
|
|
8599
|
+
'"'
|
|
8600
|
+
] }) })
|
|
8601
|
+
] }),
|
|
8602
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground mt-2", children: "Type at least 2 characters to search" })
|
|
8603
|
+
]
|
|
8604
|
+
}
|
|
8605
|
+
) : /* @__PURE__ */ jsx(
|
|
8606
|
+
FormCard,
|
|
8607
|
+
{
|
|
8608
|
+
title: "Counterparty Information",
|
|
8609
|
+
variant: "subtle",
|
|
8610
|
+
headerActions: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
8611
|
+
/* @__PURE__ */ jsx(CheckCircle2, { className: "h-5 w-5 text-success" }),
|
|
8612
|
+
/* @__PURE__ */ jsxs(Button, { variant: "ghost", size: "sm", onClick: onEditCounterparty, children: [
|
|
8613
|
+
/* @__PURE__ */ jsx(Edit, { className: "h-4 w-4 mr-1" }),
|
|
8614
|
+
"Edit"
|
|
8615
|
+
] })
|
|
8616
|
+
] }),
|
|
8617
|
+
children: /* @__PURE__ */ jsx(DataGrid, { data: counterpartyDataGrid, columns: 2 })
|
|
8618
|
+
}
|
|
8619
|
+
)),
|
|
8620
|
+
isTransfer && (!receiverAccountLookedUp ? /* @__PURE__ */ jsx(
|
|
8621
|
+
FormCard,
|
|
8622
|
+
{
|
|
8623
|
+
title: "Receiver Account",
|
|
8523
8624
|
variant: "default",
|
|
8524
8625
|
className: cn(!transactionType && "opacity-50 pointer-events-none"),
|
|
8525
8626
|
children: /* @__PURE__ */ jsxs("div", { className: "flex gap-3 items-start w-full", children: [
|
|
8526
8627
|
/* @__PURE__ */ jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsx(
|
|
8527
8628
|
FormInput,
|
|
8528
8629
|
{
|
|
8529
|
-
name: "
|
|
8530
|
-
placeholder: "Enter
|
|
8630
|
+
name: "receiverAccountNumber",
|
|
8631
|
+
placeholder: "Enter receiver account number",
|
|
8531
8632
|
disabled: !transactionType
|
|
8532
8633
|
}
|
|
8533
8634
|
) }),
|
|
8534
|
-
/* @__PURE__ */
|
|
8635
|
+
/* @__PURE__ */ jsx(
|
|
8535
8636
|
Button,
|
|
8536
8637
|
{
|
|
8537
|
-
onClick:
|
|
8538
|
-
disabled: !
|
|
8638
|
+
onClick: onReceiverAccountLookup,
|
|
8639
|
+
disabled: !receiverAccountNumber || isReceiverAccountLoading,
|
|
8539
8640
|
className: "shrink-0 mt-0 w-48",
|
|
8540
|
-
children: [
|
|
8641
|
+
children: isReceiverAccountLoading ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8642
|
+
/* @__PURE__ */ jsx(Loader2, { className: "h-4 w-4 mr-2 animate-spin" }),
|
|
8643
|
+
"Looking up..."
|
|
8644
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8541
8645
|
/* @__PURE__ */ jsx(Search, { className: "h-4 w-4 mr-2" }),
|
|
8542
|
-
"Lookup
|
|
8543
|
-
]
|
|
8646
|
+
"Lookup Receiver"
|
|
8647
|
+
] })
|
|
8544
8648
|
}
|
|
8545
8649
|
)
|
|
8546
8650
|
] })
|
|
@@ -8548,54 +8652,66 @@ var NewTransactionView = ({
|
|
|
8548
8652
|
) : /* @__PURE__ */ jsx(
|
|
8549
8653
|
FormCard,
|
|
8550
8654
|
{
|
|
8551
|
-
title: "
|
|
8655
|
+
title: "Receiver Account Information",
|
|
8552
8656
|
variant: "subtle",
|
|
8553
8657
|
headerActions: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
8554
8658
|
/* @__PURE__ */ jsx(CheckCircle2, { className: "h-5 w-5 text-success" }),
|
|
8555
|
-
/* @__PURE__ */ jsxs(Button, { variant: "ghost", size: "sm", onClick:
|
|
8659
|
+
/* @__PURE__ */ jsxs(Button, { variant: "ghost", size: "sm", onClick: onEditReceiverAccount, children: [
|
|
8556
8660
|
/* @__PURE__ */ jsx(Edit, { className: "h-4 w-4 mr-1" }),
|
|
8557
8661
|
"Edit"
|
|
8558
8662
|
] })
|
|
8559
8663
|
] }),
|
|
8560
|
-
children: /* @__PURE__ */ jsx(DataGrid, { data:
|
|
8664
|
+
children: /* @__PURE__ */ jsx(DataGrid, { data: receiverAccountDataGrid, columns: 2 })
|
|
8561
8665
|
}
|
|
8562
|
-
),
|
|
8666
|
+
)),
|
|
8563
8667
|
/* @__PURE__ */ jsx(
|
|
8564
8668
|
FormCard,
|
|
8565
8669
|
{
|
|
8566
8670
|
title: "Transaction Details",
|
|
8567
8671
|
variant: "default",
|
|
8568
|
-
className: cn(
|
|
8672
|
+
className: cn(
|
|
8673
|
+
requiresCounterparty ? !counterpartyLookedUp && "opacity-50 pointer-events-none" : isTransfer ? !receiverAccountLookedUp && "opacity-50 pointer-events-none" : !transactionType && "opacity-50 pointer-events-none"
|
|
8674
|
+
),
|
|
8569
8675
|
children: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
8570
|
-
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-
|
|
8676
|
+
isAdjustment && /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4", children: [
|
|
8571
8677
|
/* @__PURE__ */ jsx(
|
|
8572
|
-
|
|
8678
|
+
FormSelect,
|
|
8573
8679
|
{
|
|
8574
|
-
name: "
|
|
8575
|
-
label: "
|
|
8576
|
-
placeholder: "
|
|
8577
|
-
|
|
8578
|
-
disabled: !
|
|
8680
|
+
name: "adjustmentDirection",
|
|
8681
|
+
label: "Direction",
|
|
8682
|
+
placeholder: "Select direction",
|
|
8683
|
+
options: ADJUSTMENT_DIRECTION_OPTIONS,
|
|
8684
|
+
disabled: !transactionType
|
|
8579
8685
|
}
|
|
8580
8686
|
),
|
|
8581
8687
|
/* @__PURE__ */ jsx(
|
|
8582
8688
|
FormSelect,
|
|
8583
8689
|
{
|
|
8584
|
-
name: "
|
|
8585
|
-
label: "
|
|
8586
|
-
|
|
8587
|
-
|
|
8588
|
-
|
|
8690
|
+
name: "adjustmentType",
|
|
8691
|
+
label: "Adjustment Type",
|
|
8692
|
+
placeholder: "Select type",
|
|
8693
|
+
options: ADJUSTMENT_TYPE_OPTIONS,
|
|
8694
|
+
disabled: !transactionType
|
|
8589
8695
|
}
|
|
8590
8696
|
)
|
|
8591
8697
|
] }),
|
|
8698
|
+
/* @__PURE__ */ jsx(
|
|
8699
|
+
FormInput,
|
|
8700
|
+
{
|
|
8701
|
+
name: "amount",
|
|
8702
|
+
label: "Amount",
|
|
8703
|
+
placeholder: "0.00",
|
|
8704
|
+
type: "number",
|
|
8705
|
+
disabled: requiresCounterparty ? !counterpartyLookedUp : isTransfer ? !receiverAccountLookedUp : !transactionType
|
|
8706
|
+
}
|
|
8707
|
+
),
|
|
8592
8708
|
/* @__PURE__ */ jsx(
|
|
8593
8709
|
FormInput,
|
|
8594
8710
|
{
|
|
8595
8711
|
name: "description",
|
|
8596
8712
|
label: "Description (Optional)",
|
|
8597
8713
|
placeholder: "Enter transaction description",
|
|
8598
|
-
disabled: !counterpartyLookedUp
|
|
8714
|
+
disabled: requiresCounterparty ? !counterpartyLookedUp : isTransfer ? !receiverAccountLookedUp : !transactionType
|
|
8599
8715
|
}
|
|
8600
8716
|
)
|
|
8601
8717
|
] })
|
|
@@ -8633,17 +8749,20 @@ var NewTransactionView = ({
|
|
|
8633
8749
|
) }),
|
|
8634
8750
|
/* @__PURE__ */ jsxs("div", { className: "flex gap-3 justify-end pt-4 border-t border-border", children: [
|
|
8635
8751
|
/* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", onClick: onCancel, className: "w-32", children: "Cancel" }),
|
|
8636
|
-
/* @__PURE__ */
|
|
8752
|
+
/* @__PURE__ */ jsx(
|
|
8637
8753
|
Button,
|
|
8638
8754
|
{
|
|
8639
8755
|
type: "button",
|
|
8640
8756
|
onClick: onSubmit,
|
|
8641
8757
|
className: "w-48",
|
|
8642
|
-
disabled: !transactionType || !accountNumber || !counterpartyName || !amount || !form.watch("certifyInformation"),
|
|
8643
|
-
children: [
|
|
8758
|
+
disabled: !transactionType || !accountNumber || requiresCounterparty && !counterpartyName || isTransfer && !receiverAccountLookedUp || isAdjustment && (!adjustmentDirection || !adjustmentType) || !amount || !form.watch("certifyInformation") || isSubmitting,
|
|
8759
|
+
children: isSubmitting ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8760
|
+
/* @__PURE__ */ jsx(Loader2, { className: "h-4 w-4 mr-2 animate-spin" }),
|
|
8761
|
+
"Submitting..."
|
|
8762
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8644
8763
|
/* @__PURE__ */ jsx(CheckCircle2, { className: "h-4 w-4 mr-2" }),
|
|
8645
8764
|
"Submit Transaction"
|
|
8646
|
-
]
|
|
8765
|
+
] })
|
|
8647
8766
|
}
|
|
8648
8767
|
)
|
|
8649
8768
|
] })
|
|
@@ -8673,7 +8792,7 @@ var NewTransactionView = ({
|
|
|
8673
8792
|
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "Type:" }),
|
|
8674
8793
|
/* @__PURE__ */ jsx("span", { className: "font-medium", children: TRANSACTION_TYPES.find((t) => t.value === transactionType)?.label })
|
|
8675
8794
|
] }),
|
|
8676
|
-
/* @__PURE__ */ jsxs("div", { className: "flex justify-between text-sm", children: [
|
|
8795
|
+
requiresCounterparty && counterpartyName && /* @__PURE__ */ jsxs("div", { className: "flex justify-between text-sm", children: [
|
|
8677
8796
|
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "Counterparty:" }),
|
|
8678
8797
|
/* @__PURE__ */ jsx("span", { className: "font-medium", children: counterpartyName })
|
|
8679
8798
|
] })
|
|
@@ -14155,13 +14274,42 @@ var TransactionHistory_default = TransactionHistory;
|
|
|
14155
14274
|
var newTransactionSchema = z.object({
|
|
14156
14275
|
transactionType: z.string().min(1, "Transaction type is required"),
|
|
14157
14276
|
accountNumber: z.string().min(1, "Account number is required"),
|
|
14158
|
-
counterpartyName: z.string().
|
|
14277
|
+
counterpartyName: z.string().optional(),
|
|
14159
14278
|
amount: z.string().min(1, "Amount is required"),
|
|
14160
|
-
currency: z.string().min(1, "Currency is required"),
|
|
14161
14279
|
description: z.string().optional(),
|
|
14162
14280
|
certifyInformation: z.boolean().refine((val) => val === true, {
|
|
14163
14281
|
message: "You must certify the information is correct"
|
|
14164
|
-
})
|
|
14282
|
+
}),
|
|
14283
|
+
// Adjustment-specific fields
|
|
14284
|
+
adjustmentDirection: z.string().optional(),
|
|
14285
|
+
adjustmentType: z.string().optional(),
|
|
14286
|
+
// Transfer-specific fields
|
|
14287
|
+
receiverAccountNumber: z.string().optional()
|
|
14288
|
+
}).refine((data) => {
|
|
14289
|
+
const requiresCounterparty = ["ach", "wire"].includes(data.transactionType);
|
|
14290
|
+
if (requiresCounterparty && !data.counterpartyName) {
|
|
14291
|
+
return false;
|
|
14292
|
+
}
|
|
14293
|
+
return true;
|
|
14294
|
+
}, {
|
|
14295
|
+
message: "Counterparty is required for ACH and Wire transactions",
|
|
14296
|
+
path: ["counterpartyName"]
|
|
14297
|
+
}).refine((data) => {
|
|
14298
|
+
if (data.transactionType === "adjustment") {
|
|
14299
|
+
if (!data.adjustmentDirection || !data.adjustmentType) return false;
|
|
14300
|
+
}
|
|
14301
|
+
return true;
|
|
14302
|
+
}, {
|
|
14303
|
+
message: "Direction and Type are required for Adjustment transactions",
|
|
14304
|
+
path: ["adjustmentDirection"]
|
|
14305
|
+
}).refine((data) => {
|
|
14306
|
+
if (data.transactionType === "transfer") {
|
|
14307
|
+
if (!data.receiverAccountNumber) return false;
|
|
14308
|
+
}
|
|
14309
|
+
return true;
|
|
14310
|
+
}, {
|
|
14311
|
+
message: "Receiver account number is required for Transfer transactions",
|
|
14312
|
+
path: ["receiverAccountNumber"]
|
|
14165
14313
|
});
|
|
14166
14314
|
var mockAccountData = {
|
|
14167
14315
|
accountNumber: "****1234",
|
|
@@ -14172,27 +14320,25 @@ var mockAccountData = {
|
|
|
14172
14320
|
customerId: "CUST-001",
|
|
14173
14321
|
customerType: "Business"
|
|
14174
14322
|
};
|
|
14175
|
-
var mockCounterpartyData = {
|
|
14176
|
-
counterpartyName: "Global Tech Solutions Inc.",
|
|
14177
|
-
counterpartyId: "CP-5678",
|
|
14178
|
-
counterpartyType: "Business",
|
|
14179
|
-
status: "Active",
|
|
14180
|
-
taxId: "98-7654321",
|
|
14181
|
-
primaryContact: "Sarah Johnson",
|
|
14182
|
-
contactEmail: "sarah.johnson@globaltech.com",
|
|
14183
|
-
contactPhone: "+1 (555) 987-6543",
|
|
14184
|
-
address: "456 Innovation Drive, San Francisco, CA 94105"
|
|
14185
|
-
};
|
|
14186
14323
|
function NewTransaction() {
|
|
14187
14324
|
const navigate = useNavigate();
|
|
14188
14325
|
const [accountLookedUp, setAccountLookedUp] = useState(false);
|
|
14189
14326
|
const [accountData, setAccountData] = useState(null);
|
|
14190
14327
|
const [counterpartyLookedUp, setCounterpartyLookedUp] = useState(false);
|
|
14191
14328
|
const [counterpartyData, setCounterpartyData] = useState(null);
|
|
14329
|
+
const [counterpartySearchResults, setCounterpartySearchResults] = useState([]);
|
|
14330
|
+
const [isCounterpartySearching, setIsCounterpartySearching] = useState(false);
|
|
14331
|
+
const [showCounterpartyDropdown, setShowCounterpartyDropdown] = useState(false);
|
|
14192
14332
|
const [confirmationOpen, setConfirmationOpen] = useState(false);
|
|
14193
14333
|
const [submissionStatus, setSubmissionStatus] = useState(null);
|
|
14194
14334
|
const [errorMessage, setErrorMessage] = useState("");
|
|
14195
14335
|
const [transactionId, setTransactionId] = useState("");
|
|
14336
|
+
const [isAccountLoading, setIsAccountLoading] = useState(false);
|
|
14337
|
+
const [isCounterpartyLoading, setIsCounterpartyLoading] = useState(false);
|
|
14338
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
14339
|
+
const [receiverAccountLookedUp, setReceiverAccountLookedUp] = useState(false);
|
|
14340
|
+
const [receiverAccountData, setReceiverAccountData] = useState(null);
|
|
14341
|
+
const [isReceiverAccountLoading, setIsReceiverAccountLoading] = useState(false);
|
|
14196
14342
|
const form = useForm({
|
|
14197
14343
|
resolver: zodResolver(newTransactionSchema),
|
|
14198
14344
|
defaultValues: {
|
|
@@ -14200,30 +14346,131 @@ function NewTransaction() {
|
|
|
14200
14346
|
accountNumber: "",
|
|
14201
14347
|
counterpartyName: "",
|
|
14202
14348
|
amount: "",
|
|
14203
|
-
currency: "USD",
|
|
14204
14349
|
description: "",
|
|
14205
|
-
certifyInformation: false
|
|
14350
|
+
certifyInformation: false,
|
|
14351
|
+
adjustmentDirection: "",
|
|
14352
|
+
adjustmentType: "",
|
|
14353
|
+
receiverAccountNumber: ""
|
|
14206
14354
|
}
|
|
14207
14355
|
});
|
|
14208
|
-
const handleAccountLookup = () => {
|
|
14356
|
+
const handleAccountLookup = async () => {
|
|
14209
14357
|
const accNum = form.getValues("accountNumber");
|
|
14210
14358
|
if (!accNum) {
|
|
14211
14359
|
toast$1.error("Please enter an account number");
|
|
14212
14360
|
return;
|
|
14213
14361
|
}
|
|
14214
|
-
|
|
14215
|
-
|
|
14216
|
-
|
|
14362
|
+
setIsAccountLoading(true);
|
|
14363
|
+
try {
|
|
14364
|
+
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
14365
|
+
setAccountData(mockAccountData);
|
|
14366
|
+
setAccountLookedUp(true);
|
|
14367
|
+
toast$1.success("Account found");
|
|
14368
|
+
} catch (error) {
|
|
14369
|
+
toast$1.error("Failed to lookup account");
|
|
14370
|
+
} finally {
|
|
14371
|
+
setIsAccountLoading(false);
|
|
14372
|
+
}
|
|
14217
14373
|
};
|
|
14218
|
-
const
|
|
14219
|
-
|
|
14220
|
-
|
|
14221
|
-
|
|
14222
|
-
|
|
14374
|
+
const mockSearchResults = [
|
|
14375
|
+
{ id: "CP-5678", name: "Global Tech Solutions Inc.", type: "Business", paymentInstrumentType: "wire" },
|
|
14376
|
+
{ id: "CP-1234", name: "Global Industries LLC", type: "Business", paymentInstrumentType: "ach" },
|
|
14377
|
+
{ id: "CP-9012", name: "GlobalCorp Partners", type: "Business", paymentInstrumentType: "both" },
|
|
14378
|
+
{ id: "CP-3456", name: "Acme Corporation", type: "Business", paymentInstrumentType: "wire" },
|
|
14379
|
+
{ id: "CP-7890", name: "Tech Innovations Ltd", type: "Business", paymentInstrumentType: "ach" }
|
|
14380
|
+
];
|
|
14381
|
+
const isCounterpartyCompatible = (instrumentType, transactionType) => {
|
|
14382
|
+
if (instrumentType === "both") return true;
|
|
14383
|
+
if (transactionType === "ach" && instrumentType === "ach") return true;
|
|
14384
|
+
if (transactionType === "wire" && instrumentType === "wire") return true;
|
|
14385
|
+
return false;
|
|
14386
|
+
};
|
|
14387
|
+
const debouncedSearch = useMemo(
|
|
14388
|
+
() => debounce(async (query, txType) => {
|
|
14389
|
+
if (query.length < 2) {
|
|
14390
|
+
setCounterpartySearchResults([]);
|
|
14391
|
+
setShowCounterpartyDropdown(false);
|
|
14392
|
+
return;
|
|
14393
|
+
}
|
|
14394
|
+
setIsCounterpartySearching(true);
|
|
14395
|
+
try {
|
|
14396
|
+
await new Promise((resolve) => setTimeout(resolve, 350));
|
|
14397
|
+
let results = mockSearchResults.filter(
|
|
14398
|
+
(cp) => cp.name.toLowerCase().includes(query.toLowerCase())
|
|
14399
|
+
);
|
|
14400
|
+
if (txType === "ach") {
|
|
14401
|
+
results = results.filter(
|
|
14402
|
+
(cp) => cp.paymentInstrumentType === "ach" || cp.paymentInstrumentType === "both"
|
|
14403
|
+
);
|
|
14404
|
+
} else if (txType === "wire") {
|
|
14405
|
+
results = results.filter(
|
|
14406
|
+
(cp) => cp.paymentInstrumentType === "wire" || cp.paymentInstrumentType === "both"
|
|
14407
|
+
);
|
|
14408
|
+
}
|
|
14409
|
+
setCounterpartySearchResults(results);
|
|
14410
|
+
setShowCounterpartyDropdown(true);
|
|
14411
|
+
} finally {
|
|
14412
|
+
setIsCounterpartySearching(false);
|
|
14413
|
+
}
|
|
14414
|
+
}, 350),
|
|
14415
|
+
[]
|
|
14416
|
+
);
|
|
14417
|
+
useEffect(() => {
|
|
14418
|
+
return () => {
|
|
14419
|
+
debouncedSearch.cancel();
|
|
14420
|
+
};
|
|
14421
|
+
}, [debouncedSearch]);
|
|
14422
|
+
const handleCounterpartySearchChange = (value) => {
|
|
14423
|
+
form.setValue("counterpartyName", value);
|
|
14424
|
+
if (counterpartyLookedUp) {
|
|
14425
|
+
setCounterpartyLookedUp(false);
|
|
14426
|
+
setCounterpartyData(null);
|
|
14223
14427
|
}
|
|
14224
|
-
|
|
14225
|
-
|
|
14226
|
-
|
|
14428
|
+
debouncedSearch(value, form.getValues("transactionType"));
|
|
14429
|
+
};
|
|
14430
|
+
const handleTransactionTypeChange = (newType) => {
|
|
14431
|
+
form.setValue("transactionType", newType);
|
|
14432
|
+
if (counterpartyData && counterpartyLookedUp) {
|
|
14433
|
+
const requiresCounterparty = ["ach", "wire"].includes(newType);
|
|
14434
|
+
if (requiresCounterparty) {
|
|
14435
|
+
const isCompatible = isCounterpartyCompatible(
|
|
14436
|
+
counterpartyData.paymentInstrumentType,
|
|
14437
|
+
newType
|
|
14438
|
+
);
|
|
14439
|
+
if (!isCompatible) {
|
|
14440
|
+
setCounterpartyLookedUp(false);
|
|
14441
|
+
setCounterpartyData(null);
|
|
14442
|
+
setCounterpartySearchResults([]);
|
|
14443
|
+
form.setValue("counterpartyName", "");
|
|
14444
|
+
const typeLabel = newType === "ach" ? "ACH" : "Wire";
|
|
14445
|
+
toast$1.warning(
|
|
14446
|
+
`${counterpartyData.counterpartyName} doesn't support ${typeLabel} transactions. Please select a different counterparty.`
|
|
14447
|
+
);
|
|
14448
|
+
}
|
|
14449
|
+
}
|
|
14450
|
+
}
|
|
14451
|
+
};
|
|
14452
|
+
const handleCounterpartySelect = (result) => {
|
|
14453
|
+
form.setValue("counterpartyName", result.name);
|
|
14454
|
+
setShowCounterpartyDropdown(false);
|
|
14455
|
+
setCounterpartySearchResults([]);
|
|
14456
|
+
setIsCounterpartyLoading(true);
|
|
14457
|
+
setTimeout(() => {
|
|
14458
|
+
setCounterpartyData({
|
|
14459
|
+
counterpartyName: result.name,
|
|
14460
|
+
counterpartyId: result.id,
|
|
14461
|
+
counterpartyType: result.type,
|
|
14462
|
+
status: "Active",
|
|
14463
|
+
taxId: "XX-XXXXXXX",
|
|
14464
|
+
primaryContact: "Contact Name",
|
|
14465
|
+
contactEmail: "contact@example.com",
|
|
14466
|
+
contactPhone: "+1 (555) 123-4567",
|
|
14467
|
+
address: "123 Business Ave, City, ST 12345",
|
|
14468
|
+
paymentInstrumentType: result.paymentInstrumentType
|
|
14469
|
+
});
|
|
14470
|
+
setCounterpartyLookedUp(true);
|
|
14471
|
+
setIsCounterpartyLoading(false);
|
|
14472
|
+
toast$1.success("Counterparty selected");
|
|
14473
|
+
}, 500);
|
|
14227
14474
|
};
|
|
14228
14475
|
const handleEditAccount = () => {
|
|
14229
14476
|
setAccountLookedUp(false);
|
|
@@ -14234,39 +14481,100 @@ function NewTransaction() {
|
|
|
14234
14481
|
form.setValue("counterpartyName", "");
|
|
14235
14482
|
form.setValue("amount", "");
|
|
14236
14483
|
form.setValue("description", "");
|
|
14484
|
+
form.setValue("adjustmentDirection", "");
|
|
14485
|
+
form.setValue("adjustmentType", "");
|
|
14486
|
+
setReceiverAccountLookedUp(false);
|
|
14487
|
+
setReceiverAccountData(null);
|
|
14488
|
+
form.setValue("receiverAccountNumber", "");
|
|
14489
|
+
};
|
|
14490
|
+
const handleReceiverAccountLookup = async () => {
|
|
14491
|
+
const receiverNum = form.getValues("receiverAccountNumber");
|
|
14492
|
+
if (!receiverNum) {
|
|
14493
|
+
toast$1.error("Please enter a receiver account number");
|
|
14494
|
+
return;
|
|
14495
|
+
}
|
|
14496
|
+
setIsReceiverAccountLoading(true);
|
|
14497
|
+
try {
|
|
14498
|
+
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
14499
|
+
setReceiverAccountData({
|
|
14500
|
+
accountNumber: "****" + receiverNum.slice(-4),
|
|
14501
|
+
accountName: "Receiver Account",
|
|
14502
|
+
accountType: "Checking",
|
|
14503
|
+
balance: "$45,230.00",
|
|
14504
|
+
customerName: "Receiver Corp",
|
|
14505
|
+
customerId: "CUST-RCV-001",
|
|
14506
|
+
customerType: "Business"
|
|
14507
|
+
});
|
|
14508
|
+
setReceiverAccountLookedUp(true);
|
|
14509
|
+
toast$1.success("Receiver account found");
|
|
14510
|
+
} catch (error) {
|
|
14511
|
+
toast$1.error("Failed to lookup receiver account");
|
|
14512
|
+
} finally {
|
|
14513
|
+
setIsReceiverAccountLoading(false);
|
|
14514
|
+
}
|
|
14515
|
+
};
|
|
14516
|
+
const handleEditReceiverAccount = () => {
|
|
14517
|
+
setReceiverAccountLookedUp(false);
|
|
14518
|
+
setReceiverAccountData(null);
|
|
14519
|
+
form.setValue("receiverAccountNumber", "");
|
|
14237
14520
|
};
|
|
14238
14521
|
const handleEditCounterparty = () => {
|
|
14239
14522
|
setCounterpartyLookedUp(false);
|
|
14240
14523
|
setCounterpartyData(null);
|
|
14524
|
+
setCounterpartySearchResults([]);
|
|
14525
|
+
setShowCounterpartyDropdown(false);
|
|
14526
|
+
form.setValue("counterpartyName", "");
|
|
14241
14527
|
form.setValue("amount", "");
|
|
14242
14528
|
form.setValue("description", "");
|
|
14243
14529
|
};
|
|
14244
|
-
const handleSubmit = () => {
|
|
14530
|
+
const handleSubmit = async () => {
|
|
14245
14531
|
const data = form.getValues();
|
|
14246
|
-
|
|
14532
|
+
const requiresCounterparty = ["ach", "wire"].includes(data.transactionType);
|
|
14533
|
+
if (!data.transactionType || !data.accountNumber || !data.amount) {
|
|
14247
14534
|
toast$1.error("Please complete all required fields");
|
|
14248
14535
|
return;
|
|
14249
14536
|
}
|
|
14250
|
-
if (!
|
|
14251
|
-
toast$1.error("Please lookup
|
|
14537
|
+
if (requiresCounterparty && (!data.counterpartyName || !counterpartyLookedUp)) {
|
|
14538
|
+
toast$1.error("Please lookup counterparty for this transaction type");
|
|
14252
14539
|
return;
|
|
14253
14540
|
}
|
|
14254
|
-
|
|
14255
|
-
|
|
14256
|
-
|
|
14257
|
-
|
|
14258
|
-
|
|
14259
|
-
|
|
14260
|
-
"
|
|
14261
|
-
|
|
14262
|
-
|
|
14263
|
-
|
|
14264
|
-
|
|
14265
|
-
|
|
14266
|
-
|
|
14267
|
-
|
|
14268
|
-
|
|
14541
|
+
if (!accountLookedUp) {
|
|
14542
|
+
toast$1.error("Please lookup account");
|
|
14543
|
+
return;
|
|
14544
|
+
}
|
|
14545
|
+
if (data.transactionType === "adjustment") {
|
|
14546
|
+
if (!data.adjustmentDirection || !data.adjustmentType) {
|
|
14547
|
+
toast$1.error("Please select direction and type for adjustment");
|
|
14548
|
+
return;
|
|
14549
|
+
}
|
|
14550
|
+
}
|
|
14551
|
+
if (data.transactionType === "transfer") {
|
|
14552
|
+
if (!data.receiverAccountNumber || !receiverAccountLookedUp) {
|
|
14553
|
+
toast$1.error("Please lookup receiver account for transfer");
|
|
14554
|
+
return;
|
|
14555
|
+
}
|
|
14556
|
+
}
|
|
14557
|
+
setIsSubmitting(true);
|
|
14558
|
+
try {
|
|
14559
|
+
await new Promise((resolve) => setTimeout(resolve, 1500));
|
|
14560
|
+
const hasError = Math.random() > 0.7;
|
|
14561
|
+
if (hasError) {
|
|
14562
|
+
const errorScenarios = [
|
|
14563
|
+
"Insufficient funds. Current balance: $125,450.00, Required: $" + parseFloat(data.amount).toFixed(2),
|
|
14564
|
+
"Transaction limit exceeded. Daily limit: $50,000.00",
|
|
14565
|
+
"Counterparty account is temporarily unavailable. Please try again later.",
|
|
14566
|
+
"Invalid routing number for the selected transaction type."
|
|
14567
|
+
];
|
|
14568
|
+
setSubmissionStatus("error");
|
|
14569
|
+
setErrorMessage(errorScenarios[Math.floor(Math.random() * errorScenarios.length)]);
|
|
14570
|
+
} else {
|
|
14571
|
+
const txId = "TXN-" + Math.random().toString(36).substr(2, 9).toUpperCase();
|
|
14572
|
+
setTransactionId(txId);
|
|
14573
|
+
setSubmissionStatus("success");
|
|
14574
|
+
}
|
|
14269
14575
|
setConfirmationOpen(true);
|
|
14576
|
+
} finally {
|
|
14577
|
+
setIsSubmitting(false);
|
|
14270
14578
|
}
|
|
14271
14579
|
};
|
|
14272
14580
|
const handleConfirmationClose = () => {
|
|
@@ -14290,14 +14598,28 @@ function NewTransaction() {
|
|
|
14290
14598
|
submissionStatus,
|
|
14291
14599
|
errorMessage,
|
|
14292
14600
|
transactionId,
|
|
14601
|
+
isAccountLoading,
|
|
14602
|
+
isCounterpartyLoading,
|
|
14603
|
+
isSubmitting,
|
|
14293
14604
|
onAccountLookup: handleAccountLookup,
|
|
14294
|
-
onCounterpartyLookup: handleCounterpartyLookup,
|
|
14295
14605
|
onEditAccount: handleEditAccount,
|
|
14606
|
+
counterpartySearchResults,
|
|
14607
|
+
isCounterpartySearching,
|
|
14608
|
+
showCounterpartyDropdown,
|
|
14609
|
+
onCounterpartySearchChange: handleCounterpartySearchChange,
|
|
14610
|
+
onCounterpartySelect: handleCounterpartySelect,
|
|
14611
|
+
onCounterpartyDropdownClose: () => setShowCounterpartyDropdown(false),
|
|
14296
14612
|
onEditCounterparty: handleEditCounterparty,
|
|
14613
|
+
onTransactionTypeChange: handleTransactionTypeChange,
|
|
14297
14614
|
onSubmit: handleSubmit,
|
|
14298
14615
|
onCancel: handleCancel,
|
|
14299
14616
|
onConfirmationClose: handleConfirmationClose,
|
|
14300
|
-
onConfirmationOpenChange: setConfirmationOpen
|
|
14617
|
+
onConfirmationOpenChange: setConfirmationOpen,
|
|
14618
|
+
receiverAccountLookedUp,
|
|
14619
|
+
receiverAccountData,
|
|
14620
|
+
isReceiverAccountLoading,
|
|
14621
|
+
onReceiverAccountLookup: handleReceiverAccountLookup,
|
|
14622
|
+
onEditReceiverAccount: handleEditReceiverAccount
|
|
14301
14623
|
}
|
|
14302
14624
|
);
|
|
14303
14625
|
}
|
|
@@ -16330,6 +16652,6 @@ function ReconExceptions() {
|
|
|
16330
16652
|
] }) });
|
|
16331
16653
|
}
|
|
16332
16654
|
|
|
16333
|
-
export { ACHBankCard, ACHBasicInfoCard, ACHDetailsSection, ACHTransferSection, AccountCard, AccountDetail_default as AccountDetail, Accounts_default as Accounts, AddressForm, AlertDetail_default as AlertDetail, AlertDetailRouter, AlertDocuments, AlertHeaderControls, AlertNotes, AlertTimeline, Alerts_default as Alerts, AppSidebar, Badge, BankAddressCard, BankingDetailsCard, BasicInfoCard, BasicInfoSection, BeneficiaryAddress, BeneficiaryCard, BeneficiaryDomesticWire, Breadcrumb, BusinessDetail_default as BusinessDetail, BusinessDetailView, BusinessFiltersSheet, BusinessProfileCard, BusinessStatusCard, BusinessTypeBadge, Businesses_default as Businesses, Button, CIPStatusBadge,
|
|
16655
|
+
export { ACHBankCard, ACHBasicInfoCard, ACHDetailsSection, ACHTransferSection, ADJUSTMENT_DIRECTION_OPTIONS, ADJUSTMENT_TYPE_OPTIONS, AccountCard, AccountDetail_default as AccountDetail, Accounts_default as Accounts, AddressForm, AlertDetail_default as AlertDetail, AlertDetailRouter, AlertDocuments, AlertHeaderControls, AlertNotes, AlertTimeline, Alerts_default as Alerts, AppSidebar, Badge, BankAddressCard, BankingDetailsCard, BasicInfoCard, BasicInfoSection, BeneficiaryAddress, BeneficiaryCard, BeneficiaryDomesticWire, Breadcrumb, BusinessDetail_default as BusinessDetail, BusinessDetailView, BusinessFiltersSheet, BusinessProfileCard, BusinessStatusCard, BusinessTypeBadge, Businesses_default as Businesses, Button, CIPStatusBadge, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Cases_default as Cases, Checkbox, ContactInfoCard, Container, ContextSection, Counterparties_default as Counterparties, CounterpartiesView, CounterpartyBasicInfo, CounterpartyDetail_default as CounterpartyDetail, CounterpartyDetailView, CounterpartyProfileCard, CounterpartyRecordsCard, CounterpartyTypeBadge, Create_default as CreateBusiness, CreateBusinessView, Create_default2 as CreateCounterparty, CreateCounterpartyView, Create_default3 as CreateIndividual, CreateVelocityLimit, Dashboard_default as Dashboard, DashboardDemo, DataGrid, DataTable, DetailPageLayout, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, EditableFormCard, EditableInfoField, EnhancedInput, EnhancedSelect, EnhancedTextarea, EntityCard, FormCard, FormField, FormInput, FormProvider, FormSection, FormSelect, IndividualDetail_default as IndividualDetail, Individuals_default as Individuals, InfoField, IntermediaryCard, IntermediaryFI, IntermediaryFIAddress, JsonViewer, Label, ListPage, MainLayout, MetricCard, NewTransaction, NewTransactionView, NotFound_default as NotFound, OFACAlertView, OriginatorCard, OriginatorFI, OriginatorFIAddress, PageLayout, PatternLibrary, PaymentInformationSection, Popover, PopoverContent, PopoverTrigger, ReceiverCard, ReconExceptions, ReconUpload, ResolveAlertDialog, ResponsiveGrid, ScrollArea, ScrollBar, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Stack, Statement, StatementHeader, StatementView, StatusBadge, TRANSACTION_TYPES, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TransactionDetail_default as TransactionDetail, TransactionHistory_default as TransactionHistory, TransactionTypeBadge, UIKit, UIKitShowcase, VelocityLimitDetail, VelocityLimits, WireDetailsSection, WireTransferSection, badgeVariants, buttonVariants, cardVariants, downloadCSV, generateStatementCSV, inputVariants, newTransactionSchema, reducer, textareaVariants, toast, useAlertDetail, useCounterpartyEntity, useEditState, useFormWithEditState, useIsMobile, useSidebar, useToast };
|
|
16334
16656
|
//# sourceMappingURL=index.js.map
|
|
16335
16657
|
//# sourceMappingURL=index.js.map
|