braid-ui 1.0.48 → 1.0.49
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 +387 -401
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +86 -1
- package/dist/index.d.ts +86 -1
- package/dist/index.js +385 -403
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -8376,6 +8376,370 @@ var WireDetailsSection = ({ data }) => {
|
|
|
8376
8376
|
) })
|
|
8377
8377
|
] });
|
|
8378
8378
|
};
|
|
8379
|
+
var Checkbox = React15__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
8380
|
+
CheckboxPrimitive__namespace.Root,
|
|
8381
|
+
{
|
|
8382
|
+
ref,
|
|
8383
|
+
className: cn(
|
|
8384
|
+
"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
|
|
8385
|
+
className
|
|
8386
|
+
),
|
|
8387
|
+
...props,
|
|
8388
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8389
|
+
CheckboxPrimitive__namespace.Indicator,
|
|
8390
|
+
{
|
|
8391
|
+
className: cn("flex items-center justify-center text-current"),
|
|
8392
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" })
|
|
8393
|
+
}
|
|
8394
|
+
)
|
|
8395
|
+
}
|
|
8396
|
+
));
|
|
8397
|
+
Checkbox.displayName = CheckboxPrimitive__namespace.Root.displayName;
|
|
8398
|
+
var TRANSACTION_TYPES = [
|
|
8399
|
+
{ value: "transfer", label: "Transfer", icon: lucideReact.ArrowLeftRight },
|
|
8400
|
+
{ value: "adjustment", label: "Adjustment", icon: lucideReact.Settings },
|
|
8401
|
+
{ value: "ach", label: "ACH", icon: lucideReact.Building2 },
|
|
8402
|
+
{ value: "wire", label: "Wire", icon: lucideReact.Zap }
|
|
8403
|
+
];
|
|
8404
|
+
var CURRENCY_OPTIONS = [
|
|
8405
|
+
{ value: "USD", label: "USD - US Dollar" },
|
|
8406
|
+
{ value: "EUR", label: "EUR - Euro" },
|
|
8407
|
+
{ value: "GBP", label: "GBP - British Pound" },
|
|
8408
|
+
{ value: "JPY", label: "JPY - Japanese Yen" },
|
|
8409
|
+
{ value: "CAD", label: "CAD - Canadian Dollar" },
|
|
8410
|
+
{ value: "AUD", label: "AUD - Australian Dollar" },
|
|
8411
|
+
{ value: "CHF", label: "CHF - Swiss Franc" },
|
|
8412
|
+
{ value: "CNY", label: "CNY - Chinese Yuan" }
|
|
8413
|
+
];
|
|
8414
|
+
var NewTransactionView = ({
|
|
8415
|
+
form,
|
|
8416
|
+
accountLookedUp,
|
|
8417
|
+
accountData,
|
|
8418
|
+
counterpartyLookedUp,
|
|
8419
|
+
counterpartyData,
|
|
8420
|
+
confirmationOpen,
|
|
8421
|
+
submissionStatus,
|
|
8422
|
+
errorMessage,
|
|
8423
|
+
transactionId,
|
|
8424
|
+
onAccountLookup,
|
|
8425
|
+
onCounterpartyLookup,
|
|
8426
|
+
onEditAccount,
|
|
8427
|
+
onEditCounterparty,
|
|
8428
|
+
onSubmit,
|
|
8429
|
+
onCancel,
|
|
8430
|
+
onConfirmationClose,
|
|
8431
|
+
onConfirmationOpenChange
|
|
8432
|
+
}) => {
|
|
8433
|
+
const transactionType = form.watch("transactionType");
|
|
8434
|
+
const accountNumber = form.watch("accountNumber");
|
|
8435
|
+
const counterpartyName = form.watch("counterpartyName");
|
|
8436
|
+
const amount = form.watch("amount");
|
|
8437
|
+
const accountDataGrid = accountData ? [
|
|
8438
|
+
{
|
|
8439
|
+
title: "Account Information",
|
|
8440
|
+
items: [
|
|
8441
|
+
{ label: "Account Number", value: accountData.accountNumber },
|
|
8442
|
+
{ label: "Account Name", value: accountData.accountName },
|
|
8443
|
+
{ label: "Account Type", value: accountData.accountType },
|
|
8444
|
+
{ label: "Balance", value: accountData.balance },
|
|
8445
|
+
{ label: "Customer Name", value: accountData.customerName },
|
|
8446
|
+
{ label: "Customer ID", value: accountData.customerId }
|
|
8447
|
+
]
|
|
8448
|
+
}
|
|
8449
|
+
] : [];
|
|
8450
|
+
const counterpartyDataGrid = counterpartyData ? [
|
|
8451
|
+
{
|
|
8452
|
+
title: "Counterparty Information",
|
|
8453
|
+
items: [
|
|
8454
|
+
{ label: "Counterparty Name", value: counterpartyData.counterpartyName },
|
|
8455
|
+
{ label: "Counterparty ID", value: counterpartyData.counterpartyId },
|
|
8456
|
+
{ label: "Type", value: counterpartyData.counterpartyType },
|
|
8457
|
+
{ label: "Status", value: counterpartyData.status },
|
|
8458
|
+
{ label: "Tax ID", value: counterpartyData.taxId },
|
|
8459
|
+
{ label: "Primary Contact", value: counterpartyData.primaryContact },
|
|
8460
|
+
{ label: "Contact Email", value: counterpartyData.contactEmail },
|
|
8461
|
+
{ label: "Contact Phone", value: counterpartyData.contactPhone },
|
|
8462
|
+
{ label: "Address", value: counterpartyData.address }
|
|
8463
|
+
]
|
|
8464
|
+
}
|
|
8465
|
+
] : [];
|
|
8466
|
+
const reviewData = [
|
|
8467
|
+
{
|
|
8468
|
+
title: "Transaction Summary",
|
|
8469
|
+
items: [
|
|
8470
|
+
{ label: "Transaction Type", value: TRANSACTION_TYPES.find((t) => t.value === transactionType)?.label || "-" },
|
|
8471
|
+
{ label: "Account Number", value: accountNumber || "-" },
|
|
8472
|
+
{ label: "Counterparty", value: counterpartyName || "-" },
|
|
8473
|
+
{ label: "Amount", value: amount ? `$${amount}` : "-" },
|
|
8474
|
+
{ label: "Description", value: form.watch("description") || "N/A" }
|
|
8475
|
+
]
|
|
8476
|
+
}
|
|
8477
|
+
];
|
|
8478
|
+
return /* @__PURE__ */ jsxRuntime.jsx(PageLayout, { title: "New Transaction", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-4xl mx-auto space-y-6", children: [
|
|
8479
|
+
/* @__PURE__ */ jsxRuntime.jsx(FormProvider, { form, children: /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: (e) => e.preventDefault(), children: [
|
|
8480
|
+
!accountLookedUp ? /* @__PURE__ */ jsxRuntime.jsx(FormCard, { title: "Account Lookup", variant: "default", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3 items-start w-full", children: [
|
|
8481
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8482
|
+
FormInput,
|
|
8483
|
+
{
|
|
8484
|
+
name: "accountNumber",
|
|
8485
|
+
placeholder: "Enter account number"
|
|
8486
|
+
}
|
|
8487
|
+
) }),
|
|
8488
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8489
|
+
Button,
|
|
8490
|
+
{
|
|
8491
|
+
onClick: onAccountLookup,
|
|
8492
|
+
disabled: !accountNumber,
|
|
8493
|
+
className: "shrink-0 mt-0 w-48",
|
|
8494
|
+
children: [
|
|
8495
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "h-4 w-4 mr-2" }),
|
|
8496
|
+
"Lookup Account"
|
|
8497
|
+
]
|
|
8498
|
+
}
|
|
8499
|
+
)
|
|
8500
|
+
] }) }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
8501
|
+
FormCard,
|
|
8502
|
+
{
|
|
8503
|
+
title: "Account Information",
|
|
8504
|
+
variant: "subtle",
|
|
8505
|
+
headerActions: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
8506
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "h-5 w-5 text-success" }),
|
|
8507
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "ghost", size: "sm", onClick: onEditAccount, children: [
|
|
8508
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Edit, { className: "h-4 w-4 mr-1" }),
|
|
8509
|
+
"Edit"
|
|
8510
|
+
] })
|
|
8511
|
+
] }),
|
|
8512
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DataGrid, { data: accountDataGrid, columns: 2 })
|
|
8513
|
+
}
|
|
8514
|
+
),
|
|
8515
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8516
|
+
FormCard,
|
|
8517
|
+
{
|
|
8518
|
+
title: "Transaction Type",
|
|
8519
|
+
variant: "default",
|
|
8520
|
+
className: cn(!accountLookedUp && "opacity-50 pointer-events-none"),
|
|
8521
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 lg:grid-cols-4 gap-3 lg:gap-4", children: TRANSACTION_TYPES.map((type) => {
|
|
8522
|
+
const Icon2 = type.icon;
|
|
8523
|
+
const isSelected = transactionType === type.value;
|
|
8524
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8525
|
+
"button",
|
|
8526
|
+
{
|
|
8527
|
+
type: "button",
|
|
8528
|
+
onClick: () => form.setValue("transactionType", type.value),
|
|
8529
|
+
disabled: !accountLookedUp,
|
|
8530
|
+
className: cn(
|
|
8531
|
+
"flex flex-col items-center justify-center p-4 lg:p-3 rounded-lg border-2 transition-all",
|
|
8532
|
+
"hover:border-primary/50 hover:shadow-md",
|
|
8533
|
+
isSelected ? "border-primary bg-primary/5 shadow-sm" : "border-border bg-card"
|
|
8534
|
+
),
|
|
8535
|
+
children: [
|
|
8536
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon2, { className: cn(
|
|
8537
|
+
"h-6 w-6 lg:h-5 lg:w-5 mb-2",
|
|
8538
|
+
isSelected ? "text-primary" : "text-muted-foreground"
|
|
8539
|
+
) }),
|
|
8540
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(
|
|
8541
|
+
"text-sm font-medium",
|
|
8542
|
+
isSelected ? "text-primary" : "text-foreground"
|
|
8543
|
+
), children: type.label })
|
|
8544
|
+
]
|
|
8545
|
+
},
|
|
8546
|
+
type.value
|
|
8547
|
+
);
|
|
8548
|
+
}) })
|
|
8549
|
+
}
|
|
8550
|
+
),
|
|
8551
|
+
!counterpartyLookedUp ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
8552
|
+
FormCard,
|
|
8553
|
+
{
|
|
8554
|
+
title: "Counterparty Lookup",
|
|
8555
|
+
variant: "default",
|
|
8556
|
+
className: cn(!transactionType && "opacity-50 pointer-events-none"),
|
|
8557
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3 items-start w-full", children: [
|
|
8558
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8559
|
+
FormInput,
|
|
8560
|
+
{
|
|
8561
|
+
name: "counterpartyName",
|
|
8562
|
+
placeholder: "Enter counterparty name",
|
|
8563
|
+
disabled: !transactionType
|
|
8564
|
+
}
|
|
8565
|
+
) }),
|
|
8566
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8567
|
+
Button,
|
|
8568
|
+
{
|
|
8569
|
+
onClick: onCounterpartyLookup,
|
|
8570
|
+
disabled: !transactionType || !counterpartyName,
|
|
8571
|
+
className: "shrink-0 mt-0 w-48",
|
|
8572
|
+
children: [
|
|
8573
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "h-4 w-4 mr-2" }),
|
|
8574
|
+
"Lookup Counterparty"
|
|
8575
|
+
]
|
|
8576
|
+
}
|
|
8577
|
+
)
|
|
8578
|
+
] })
|
|
8579
|
+
}
|
|
8580
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
8581
|
+
FormCard,
|
|
8582
|
+
{
|
|
8583
|
+
title: "Counterparty Information",
|
|
8584
|
+
variant: "subtle",
|
|
8585
|
+
headerActions: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
8586
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "h-5 w-5 text-success" }),
|
|
8587
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "ghost", size: "sm", onClick: onEditCounterparty, children: [
|
|
8588
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Edit, { className: "h-4 w-4 mr-1" }),
|
|
8589
|
+
"Edit"
|
|
8590
|
+
] })
|
|
8591
|
+
] }),
|
|
8592
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DataGrid, { data: counterpartyDataGrid, columns: 2 })
|
|
8593
|
+
}
|
|
8594
|
+
),
|
|
8595
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8596
|
+
FormCard,
|
|
8597
|
+
{
|
|
8598
|
+
title: "Transaction Details",
|
|
8599
|
+
variant: "default",
|
|
8600
|
+
className: cn(!counterpartyLookedUp && "opacity-50 pointer-events-none"),
|
|
8601
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
8602
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-[1fr_auto] gap-4", children: [
|
|
8603
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8604
|
+
FormInput,
|
|
8605
|
+
{
|
|
8606
|
+
name: "amount",
|
|
8607
|
+
label: "Amount",
|
|
8608
|
+
placeholder: "0.00",
|
|
8609
|
+
type: "number",
|
|
8610
|
+
disabled: !counterpartyLookedUp
|
|
8611
|
+
}
|
|
8612
|
+
),
|
|
8613
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8614
|
+
FormSelect,
|
|
8615
|
+
{
|
|
8616
|
+
name: "currency",
|
|
8617
|
+
label: "Currency",
|
|
8618
|
+
options: CURRENCY_OPTIONS,
|
|
8619
|
+
disabled: !counterpartyLookedUp,
|
|
8620
|
+
className: "w-48"
|
|
8621
|
+
}
|
|
8622
|
+
)
|
|
8623
|
+
] }),
|
|
8624
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8625
|
+
FormInput,
|
|
8626
|
+
{
|
|
8627
|
+
name: "description",
|
|
8628
|
+
label: "Description (Optional)",
|
|
8629
|
+
placeholder: "Enter transaction description",
|
|
8630
|
+
disabled: !counterpartyLookedUp
|
|
8631
|
+
}
|
|
8632
|
+
)
|
|
8633
|
+
] })
|
|
8634
|
+
}
|
|
8635
|
+
),
|
|
8636
|
+
/* @__PURE__ */ jsxRuntime.jsx(FormCard, { title: "Review & Submit", variant: "default", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
8637
|
+
/* @__PURE__ */ jsxRuntime.jsx(DataGrid, { data: reviewData, columns: 2 }),
|
|
8638
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-muted/30 rounded-lg p-4 border border-border/50", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8639
|
+
reactHookForm.Controller,
|
|
8640
|
+
{
|
|
8641
|
+
name: "certifyInformation",
|
|
8642
|
+
control: form.control,
|
|
8643
|
+
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
8644
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
8645
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8646
|
+
Checkbox,
|
|
8647
|
+
{
|
|
8648
|
+
id: "certifyInformation",
|
|
8649
|
+
checked: field.value,
|
|
8650
|
+
onCheckedChange: field.onChange
|
|
8651
|
+
}
|
|
8652
|
+
),
|
|
8653
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8654
|
+
"label",
|
|
8655
|
+
{
|
|
8656
|
+
htmlFor: "certifyInformation",
|
|
8657
|
+
className: "text-sm font-medium leading-relaxed cursor-pointer select-none",
|
|
8658
|
+
children: "I certify that all information entered is correct and accurate to the best of my knowledge"
|
|
8659
|
+
}
|
|
8660
|
+
)
|
|
8661
|
+
] }),
|
|
8662
|
+
form.formState.errors.certifyInformation && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-destructive ml-7", children: form.formState.errors.certifyInformation.message })
|
|
8663
|
+
] })
|
|
8664
|
+
}
|
|
8665
|
+
) }),
|
|
8666
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3 justify-end pt-4 border-t border-border", children: [
|
|
8667
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { type: "button", variant: "outline", onClick: onCancel, className: "w-32", children: "Cancel" }),
|
|
8668
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8669
|
+
Button,
|
|
8670
|
+
{
|
|
8671
|
+
type: "button",
|
|
8672
|
+
onClick: onSubmit,
|
|
8673
|
+
className: "w-48",
|
|
8674
|
+
disabled: !transactionType || !accountNumber || !counterpartyName || !amount || !form.watch("certifyInformation"),
|
|
8675
|
+
children: [
|
|
8676
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "h-4 w-4 mr-2" }),
|
|
8677
|
+
"Submit Transaction"
|
|
8678
|
+
]
|
|
8679
|
+
}
|
|
8680
|
+
)
|
|
8681
|
+
] })
|
|
8682
|
+
] }) })
|
|
8683
|
+
] }) }),
|
|
8684
|
+
/* @__PURE__ */ jsxRuntime.jsx(Dialog, { open: confirmationOpen, onOpenChange: onConfirmationOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(DialogContent, { className: "sm:max-w-md", children: [
|
|
8685
|
+
/* @__PURE__ */ jsxRuntime.jsxs(DialogHeader, { children: [
|
|
8686
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-2", children: [
|
|
8687
|
+
submissionStatus === "success" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-12 w-12 rounded-full bg-success/10 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "h-6 w-6 text-success" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-12 w-12 rounded-full bg-destructive/10 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { className: "h-6 w-6 text-destructive" }) }),
|
|
8688
|
+
/* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { className: "text-xl", children: submissionStatus === "success" ? "Transaction Successful" : "Transaction Failed" })
|
|
8689
|
+
] }),
|
|
8690
|
+
/* @__PURE__ */ jsxRuntime.jsx(DialogDescription, { className: "text-left", children: submissionStatus === "success" ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 pt-2", children: [
|
|
8691
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-foreground", children: "Your transaction has been successfully submitted and is being processed." }),
|
|
8692
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-muted/50 rounded-lg p-4 space-y-2", children: [
|
|
8693
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between text-sm", children: [
|
|
8694
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Transaction ID:" }),
|
|
8695
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono font-medium", children: transactionId })
|
|
8696
|
+
] }),
|
|
8697
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between text-sm", children: [
|
|
8698
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Amount:" }),
|
|
8699
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-medium", children: [
|
|
8700
|
+
"$",
|
|
8701
|
+
amount
|
|
8702
|
+
] })
|
|
8703
|
+
] }),
|
|
8704
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between text-sm", children: [
|
|
8705
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Type:" }),
|
|
8706
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: TRANSACTION_TYPES.find((t) => t.value === transactionType)?.label })
|
|
8707
|
+
] }),
|
|
8708
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between text-sm", children: [
|
|
8709
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Counterparty:" }),
|
|
8710
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: counterpartyName })
|
|
8711
|
+
] })
|
|
8712
|
+
] }),
|
|
8713
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 p-3 bg-blue-500/10 border border-blue-500/20 rounded-lg", children: [
|
|
8714
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircle, { className: "h-5 w-5 text-blue-500 mt-0.5 flex-shrink-0" }),
|
|
8715
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-blue-700 dark:text-blue-300", children: "You will receive a confirmation email once the transaction is completed." })
|
|
8716
|
+
] })
|
|
8717
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 pt-2", children: [
|
|
8718
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 p-4 bg-destructive/10 border border-destructive/20 rounded-lg", children: [
|
|
8719
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { className: "h-5 w-5 text-destructive mt-0.5 flex-shrink-0" }),
|
|
8720
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
8721
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium text-destructive", children: "Error Processing Transaction" }),
|
|
8722
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: errorMessage })
|
|
8723
|
+
] })
|
|
8724
|
+
] }),
|
|
8725
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Please review the error message above and try again. If the problem persists, contact support." })
|
|
8726
|
+
] }) })
|
|
8727
|
+
] }),
|
|
8728
|
+
/* @__PURE__ */ jsxRuntime.jsxs(DialogFooter, { className: "sm:justify-end gap-2", children: [
|
|
8729
|
+
submissionStatus === "error" && /* @__PURE__ */ jsxRuntime.jsx(Button, { type: "button", variant: "outline", onClick: () => onConfirmationOpenChange(false), children: "Try Again" }),
|
|
8730
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8731
|
+
Button,
|
|
8732
|
+
{
|
|
8733
|
+
type: "button",
|
|
8734
|
+
onClick: onConfirmationClose,
|
|
8735
|
+
variant: submissionStatus === "success" ? "default" : "outline",
|
|
8736
|
+
children: submissionStatus === "success" ? "View Transactions" : "Close"
|
|
8737
|
+
}
|
|
8738
|
+
)
|
|
8739
|
+
] })
|
|
8740
|
+
] }) })
|
|
8741
|
+
] }) });
|
|
8742
|
+
};
|
|
8379
8743
|
var typeIcons = {
|
|
8380
8744
|
checking: lucideReact.CreditCard,
|
|
8381
8745
|
savings: lucideReact.Building,
|
|
@@ -8450,25 +8814,6 @@ var BusinessTypeBadge = ({ type, className }) => {
|
|
|
8450
8814
|
config.label
|
|
8451
8815
|
] });
|
|
8452
8816
|
};
|
|
8453
|
-
var Checkbox = React15__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
8454
|
-
CheckboxPrimitive__namespace.Root,
|
|
8455
|
-
{
|
|
8456
|
-
ref,
|
|
8457
|
-
className: cn(
|
|
8458
|
-
"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
|
|
8459
|
-
className
|
|
8460
|
-
),
|
|
8461
|
-
...props,
|
|
8462
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8463
|
-
CheckboxPrimitive__namespace.Indicator,
|
|
8464
|
-
{
|
|
8465
|
-
className: cn("flex items-center justify-center text-current"),
|
|
8466
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" })
|
|
8467
|
-
}
|
|
8468
|
-
)
|
|
8469
|
-
}
|
|
8470
|
-
));
|
|
8471
|
-
Checkbox.displayName = CheckboxPrimitive__namespace.Root.displayName;
|
|
8472
8817
|
var DetailPageLayout = ({
|
|
8473
8818
|
title,
|
|
8474
8819
|
description,
|
|
@@ -13850,22 +14195,6 @@ var newTransactionSchema = zod.z.object({
|
|
|
13850
14195
|
message: "You must certify the information is correct"
|
|
13851
14196
|
})
|
|
13852
14197
|
});
|
|
13853
|
-
var TRANSACTION_TYPES = [
|
|
13854
|
-
{ value: "transfer", label: "Transfer", icon: lucideReact.ArrowLeftRight },
|
|
13855
|
-
{ value: "adjustment", label: "Adjustment", icon: lucideReact.Settings },
|
|
13856
|
-
{ value: "ach", label: "ACH", icon: lucideReact.Building2 },
|
|
13857
|
-
{ value: "wire", label: "Wire", icon: lucideReact.Zap }
|
|
13858
|
-
];
|
|
13859
|
-
var CURRENCY_OPTIONS = [
|
|
13860
|
-
{ value: "USD", label: "USD - US Dollar" },
|
|
13861
|
-
{ value: "EUR", label: "EUR - Euro" },
|
|
13862
|
-
{ value: "GBP", label: "GBP - British Pound" },
|
|
13863
|
-
{ value: "JPY", label: "JPY - Japanese Yen" },
|
|
13864
|
-
{ value: "CAD", label: "CAD - Canadian Dollar" },
|
|
13865
|
-
{ value: "AUD", label: "AUD - Australian Dollar" },
|
|
13866
|
-
{ value: "CHF", label: "CHF - Swiss Franc" },
|
|
13867
|
-
{ value: "CNY", label: "CNY - Chinese Yuan" }
|
|
13868
|
-
];
|
|
13869
14198
|
var mockAccountData = {
|
|
13870
14199
|
accountNumber: "****1234",
|
|
13871
14200
|
accountName: "Business Checking",
|
|
@@ -13908,10 +14237,6 @@ function NewTransaction() {
|
|
|
13908
14237
|
certifyInformation: false
|
|
13909
14238
|
}
|
|
13910
14239
|
});
|
|
13911
|
-
const transactionType = form.watch("transactionType");
|
|
13912
|
-
const accountNumber = form.watch("accountNumber");
|
|
13913
|
-
const counterpartyName = form.watch("counterpartyName");
|
|
13914
|
-
const amount = form.watch("amount");
|
|
13915
14240
|
const handleAccountLookup = () => {
|
|
13916
14241
|
const accNum = form.getValues("accountNumber");
|
|
13917
14242
|
if (!accNum) {
|
|
@@ -13958,11 +14283,10 @@ function NewTransaction() {
|
|
|
13958
14283
|
sonner.toast.error("Please lookup both account and counterparty");
|
|
13959
14284
|
return;
|
|
13960
14285
|
}
|
|
13961
|
-
const amount2 = parseFloat(data.amount);
|
|
13962
14286
|
const hasError = Math.random() > 0.7;
|
|
13963
14287
|
if (hasError) {
|
|
13964
14288
|
const errorScenarios = [
|
|
13965
|
-
"Insufficient funds. Current balance: $125,450.00, Required: $" +
|
|
14289
|
+
"Insufficient funds. Current balance: $125,450.00, Required: $" + parseFloat(data.amount).toFixed(2),
|
|
13966
14290
|
"Transaction limit exceeded. Daily limit: $50,000.00",
|
|
13967
14291
|
"Counterparty account is temporarily unavailable. Please try again later.",
|
|
13968
14292
|
"Invalid routing number for the selected transaction type."
|
|
@@ -13986,368 +14310,26 @@ function NewTransaction() {
|
|
|
13986
14310
|
const handleCancel = () => {
|
|
13987
14311
|
navigate("/dashboard");
|
|
13988
14312
|
};
|
|
13989
|
-
const accountDataGrid = accountData ? [
|
|
13990
|
-
{
|
|
13991
|
-
title: "Account Information",
|
|
13992
|
-
items: [
|
|
13993
|
-
{ label: "Account Number", value: accountData.accountNumber },
|
|
13994
|
-
{ label: "Account Name", value: accountData.accountName },
|
|
13995
|
-
{ label: "Account Type", value: accountData.accountType },
|
|
13996
|
-
{ label: "Balance", value: accountData.balance },
|
|
13997
|
-
{ label: "Customer Name", value: accountData.customerName },
|
|
13998
|
-
{ label: "Customer ID", value: accountData.customerId }
|
|
13999
|
-
]
|
|
14000
|
-
}
|
|
14001
|
-
] : [];
|
|
14002
|
-
const counterpartyDataGrid = counterpartyData ? [
|
|
14003
|
-
{
|
|
14004
|
-
title: "Counterparty Information",
|
|
14005
|
-
items: [
|
|
14006
|
-
{ label: "Counterparty Name", value: counterpartyData.counterpartyName },
|
|
14007
|
-
{ label: "Counterparty ID", value: counterpartyData.counterpartyId },
|
|
14008
|
-
{ label: "Type", value: counterpartyData.counterpartyType },
|
|
14009
|
-
{ label: "Status", value: counterpartyData.status },
|
|
14010
|
-
{ label: "Tax ID", value: counterpartyData.taxId },
|
|
14011
|
-
{ label: "Primary Contact", value: counterpartyData.primaryContact },
|
|
14012
|
-
{ label: "Contact Email", value: counterpartyData.contactEmail },
|
|
14013
|
-
{ label: "Contact Phone", value: counterpartyData.contactPhone },
|
|
14014
|
-
{ label: "Address", value: counterpartyData.address }
|
|
14015
|
-
]
|
|
14016
|
-
}
|
|
14017
|
-
] : [];
|
|
14018
|
-
const reviewData = [
|
|
14019
|
-
{
|
|
14020
|
-
title: "Transaction Summary",
|
|
14021
|
-
items: [
|
|
14022
|
-
{ label: "Transaction Type", value: TRANSACTION_TYPES.find((t) => t.value === transactionType)?.label || "-" },
|
|
14023
|
-
{ label: "Account Number", value: accountNumber || "-" },
|
|
14024
|
-
{ label: "Counterparty", value: counterpartyName || "-" },
|
|
14025
|
-
{ label: "Amount", value: amount ? `$${amount}` : "-" },
|
|
14026
|
-
{ label: "Description", value: form.watch("description") || "N/A" }
|
|
14027
|
-
]
|
|
14028
|
-
}
|
|
14029
|
-
];
|
|
14030
14313
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14031
|
-
|
|
14314
|
+
NewTransactionView,
|
|
14032
14315
|
{
|
|
14033
|
-
|
|
14034
|
-
|
|
14035
|
-
|
|
14036
|
-
|
|
14037
|
-
|
|
14038
|
-
|
|
14039
|
-
|
|
14040
|
-
|
|
14041
|
-
|
|
14042
|
-
|
|
14043
|
-
|
|
14044
|
-
|
|
14045
|
-
|
|
14046
|
-
|
|
14047
|
-
|
|
14048
|
-
|
|
14049
|
-
|
|
14050
|
-
Button,
|
|
14051
|
-
{
|
|
14052
|
-
onClick: handleAccountLookup,
|
|
14053
|
-
disabled: !accountNumber,
|
|
14054
|
-
className: "shrink-0 mt-0 w-48",
|
|
14055
|
-
children: [
|
|
14056
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "h-4 w-4 mr-2" }),
|
|
14057
|
-
"Lookup Account"
|
|
14058
|
-
]
|
|
14059
|
-
}
|
|
14060
|
-
)
|
|
14061
|
-
] })
|
|
14062
|
-
}
|
|
14063
|
-
) : (
|
|
14064
|
-
/* Account Information (Read-only) */
|
|
14065
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14066
|
-
FormCard,
|
|
14067
|
-
{
|
|
14068
|
-
title: "Account Information",
|
|
14069
|
-
variant: "subtle",
|
|
14070
|
-
headerActions: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
14071
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "h-5 w-5 text-success" }),
|
|
14072
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
14073
|
-
Button,
|
|
14074
|
-
{
|
|
14075
|
-
variant: "ghost",
|
|
14076
|
-
size: "sm",
|
|
14077
|
-
onClick: handleEditAccount,
|
|
14078
|
-
children: [
|
|
14079
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Edit, { className: "h-4 w-4 mr-1" }),
|
|
14080
|
-
"Edit"
|
|
14081
|
-
]
|
|
14082
|
-
}
|
|
14083
|
-
)
|
|
14084
|
-
] }),
|
|
14085
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DataGrid, { data: accountDataGrid, columns: 2 })
|
|
14086
|
-
}
|
|
14087
|
-
)
|
|
14088
|
-
),
|
|
14089
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14090
|
-
FormCard,
|
|
14091
|
-
{
|
|
14092
|
-
title: "Transaction Type",
|
|
14093
|
-
variant: "default",
|
|
14094
|
-
className: cn(!accountLookedUp && "opacity-50 pointer-events-none"),
|
|
14095
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 lg:grid-cols-4 gap-3 lg:gap-4", children: TRANSACTION_TYPES.map((type) => {
|
|
14096
|
-
const Icon2 = type.icon;
|
|
14097
|
-
const isSelected = transactionType === type.value;
|
|
14098
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
14099
|
-
"button",
|
|
14100
|
-
{
|
|
14101
|
-
type: "button",
|
|
14102
|
-
onClick: () => form.setValue("transactionType", type.value),
|
|
14103
|
-
disabled: !accountLookedUp,
|
|
14104
|
-
className: cn(
|
|
14105
|
-
"flex flex-col items-center justify-center p-4 lg:p-3 rounded-lg border-2 transition-all",
|
|
14106
|
-
"hover:border-primary/50 hover:shadow-md",
|
|
14107
|
-
isSelected ? "border-primary bg-primary/5 shadow-sm" : "border-border bg-card"
|
|
14108
|
-
),
|
|
14109
|
-
children: [
|
|
14110
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon2, { className: cn(
|
|
14111
|
-
"h-6 w-6 lg:h-5 lg:w-5 mb-2",
|
|
14112
|
-
isSelected ? "text-primary" : "text-muted-foreground"
|
|
14113
|
-
) }),
|
|
14114
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(
|
|
14115
|
-
"text-sm font-medium",
|
|
14116
|
-
isSelected ? "text-primary" : "text-foreground"
|
|
14117
|
-
), children: type.label })
|
|
14118
|
-
]
|
|
14119
|
-
},
|
|
14120
|
-
type.value
|
|
14121
|
-
);
|
|
14122
|
-
}) })
|
|
14123
|
-
}
|
|
14124
|
-
),
|
|
14125
|
-
!counterpartyLookedUp ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
14126
|
-
FormCard,
|
|
14127
|
-
{
|
|
14128
|
-
title: "Counterparty Lookup",
|
|
14129
|
-
variant: "default",
|
|
14130
|
-
className: cn(!transactionType && "opacity-50 pointer-events-none"),
|
|
14131
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3 items-start w-full", children: [
|
|
14132
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14133
|
-
FormInput,
|
|
14134
|
-
{
|
|
14135
|
-
name: "counterpartyName",
|
|
14136
|
-
placeholder: "Enter counterparty name",
|
|
14137
|
-
disabled: !transactionType
|
|
14138
|
-
}
|
|
14139
|
-
) }),
|
|
14140
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
14141
|
-
Button,
|
|
14142
|
-
{
|
|
14143
|
-
onClick: handleCounterpartyLookup,
|
|
14144
|
-
disabled: !transactionType || !counterpartyName,
|
|
14145
|
-
className: "shrink-0 mt-0 w-48",
|
|
14146
|
-
children: [
|
|
14147
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "h-4 w-4 mr-2" }),
|
|
14148
|
-
"Lookup Counterparty"
|
|
14149
|
-
]
|
|
14150
|
-
}
|
|
14151
|
-
)
|
|
14152
|
-
] })
|
|
14153
|
-
}
|
|
14154
|
-
) : (
|
|
14155
|
-
/* Counterparty Information (Read-only) */
|
|
14156
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14157
|
-
FormCard,
|
|
14158
|
-
{
|
|
14159
|
-
title: "Counterparty Information",
|
|
14160
|
-
variant: "subtle",
|
|
14161
|
-
headerActions: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
14162
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "h-5 w-5 text-success" }),
|
|
14163
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
14164
|
-
Button,
|
|
14165
|
-
{
|
|
14166
|
-
variant: "ghost",
|
|
14167
|
-
size: "sm",
|
|
14168
|
-
onClick: handleEditCounterparty,
|
|
14169
|
-
children: [
|
|
14170
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Edit, { className: "h-4 w-4 mr-1" }),
|
|
14171
|
-
"Edit"
|
|
14172
|
-
]
|
|
14173
|
-
}
|
|
14174
|
-
)
|
|
14175
|
-
] }),
|
|
14176
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DataGrid, { data: counterpartyDataGrid, columns: 2 })
|
|
14177
|
-
}
|
|
14178
|
-
)
|
|
14179
|
-
),
|
|
14180
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14181
|
-
FormCard,
|
|
14182
|
-
{
|
|
14183
|
-
title: "Transaction Details",
|
|
14184
|
-
variant: "default",
|
|
14185
|
-
className: cn(!counterpartyLookedUp && "opacity-50 pointer-events-none"),
|
|
14186
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
14187
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-[1fr_auto] gap-4", children: [
|
|
14188
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14189
|
-
FormInput,
|
|
14190
|
-
{
|
|
14191
|
-
name: "amount",
|
|
14192
|
-
label: "Amount",
|
|
14193
|
-
placeholder: "0.00",
|
|
14194
|
-
type: "number",
|
|
14195
|
-
disabled: !counterpartyLookedUp
|
|
14196
|
-
}
|
|
14197
|
-
),
|
|
14198
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14199
|
-
FormSelect,
|
|
14200
|
-
{
|
|
14201
|
-
name: "currency",
|
|
14202
|
-
label: "Currency",
|
|
14203
|
-
options: CURRENCY_OPTIONS,
|
|
14204
|
-
disabled: !counterpartyLookedUp,
|
|
14205
|
-
className: "w-48"
|
|
14206
|
-
}
|
|
14207
|
-
)
|
|
14208
|
-
] }),
|
|
14209
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14210
|
-
FormInput,
|
|
14211
|
-
{
|
|
14212
|
-
name: "description",
|
|
14213
|
-
label: "Description (Optional)",
|
|
14214
|
-
placeholder: "Enter transaction description",
|
|
14215
|
-
disabled: !counterpartyLookedUp
|
|
14216
|
-
}
|
|
14217
|
-
)
|
|
14218
|
-
] })
|
|
14219
|
-
}
|
|
14220
|
-
),
|
|
14221
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14222
|
-
FormCard,
|
|
14223
|
-
{
|
|
14224
|
-
title: "Review & Submit",
|
|
14225
|
-
variant: "default",
|
|
14226
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
14227
|
-
/* @__PURE__ */ jsxRuntime.jsx(DataGrid, { data: reviewData, columns: 2 }),
|
|
14228
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-muted/30 rounded-lg p-4 border border-border/50", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14229
|
-
reactHookForm.Controller,
|
|
14230
|
-
{
|
|
14231
|
-
name: "certifyInformation",
|
|
14232
|
-
control: form.control,
|
|
14233
|
-
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
14234
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
14235
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14236
|
-
Checkbox,
|
|
14237
|
-
{
|
|
14238
|
-
id: "certifyInformation",
|
|
14239
|
-
checked: field.value,
|
|
14240
|
-
onCheckedChange: field.onChange
|
|
14241
|
-
}
|
|
14242
|
-
),
|
|
14243
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14244
|
-
"label",
|
|
14245
|
-
{
|
|
14246
|
-
htmlFor: "certifyInformation",
|
|
14247
|
-
className: "text-sm font-medium leading-relaxed cursor-pointer select-none",
|
|
14248
|
-
children: "I certify that all information entered is correct and accurate to the best of my knowledge"
|
|
14249
|
-
}
|
|
14250
|
-
)
|
|
14251
|
-
] }),
|
|
14252
|
-
form.formState.errors.certifyInformation && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-destructive ml-7", children: form.formState.errors.certifyInformation.message })
|
|
14253
|
-
] })
|
|
14254
|
-
}
|
|
14255
|
-
) }),
|
|
14256
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3 justify-end pt-4 border-t border-border", children: [
|
|
14257
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14258
|
-
Button,
|
|
14259
|
-
{
|
|
14260
|
-
type: "button",
|
|
14261
|
-
variant: "outline",
|
|
14262
|
-
onClick: handleCancel,
|
|
14263
|
-
className: "w-32",
|
|
14264
|
-
children: "Cancel"
|
|
14265
|
-
}
|
|
14266
|
-
),
|
|
14267
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
14268
|
-
Button,
|
|
14269
|
-
{
|
|
14270
|
-
type: "button",
|
|
14271
|
-
onClick: handleSubmit,
|
|
14272
|
-
className: "w-48",
|
|
14273
|
-
disabled: !transactionType || !accountNumber || !counterpartyName || !amount || !form.watch("certifyInformation"),
|
|
14274
|
-
children: [
|
|
14275
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "h-4 w-4 mr-2" }),
|
|
14276
|
-
"Submit Transaction"
|
|
14277
|
-
]
|
|
14278
|
-
}
|
|
14279
|
-
)
|
|
14280
|
-
] })
|
|
14281
|
-
] })
|
|
14282
|
-
}
|
|
14283
|
-
)
|
|
14284
|
-
] }) }),
|
|
14285
|
-
/* @__PURE__ */ jsxRuntime.jsx(Dialog, { open: confirmationOpen, onOpenChange: setConfirmationOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(DialogContent, { className: "sm:max-w-md", children: [
|
|
14286
|
-
/* @__PURE__ */ jsxRuntime.jsxs(DialogHeader, { children: [
|
|
14287
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-2", children: [
|
|
14288
|
-
submissionStatus === "success" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-12 w-12 rounded-full bg-success/10 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "h-6 w-6 text-success" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-12 w-12 rounded-full bg-destructive/10 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { className: "h-6 w-6 text-destructive" }) }),
|
|
14289
|
-
/* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { className: "text-xl", children: submissionStatus === "success" ? "Transaction Successful" : "Transaction Failed" })
|
|
14290
|
-
] }),
|
|
14291
|
-
/* @__PURE__ */ jsxRuntime.jsx(DialogDescription, { className: "text-left", children: submissionStatus === "success" ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 pt-2", children: [
|
|
14292
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-foreground", children: "Your transaction has been successfully submitted and is being processed." }),
|
|
14293
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-muted/50 rounded-lg p-4 space-y-2", children: [
|
|
14294
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between text-sm", children: [
|
|
14295
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Transaction ID:" }),
|
|
14296
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono font-medium", children: transactionId })
|
|
14297
|
-
] }),
|
|
14298
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between text-sm", children: [
|
|
14299
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Amount:" }),
|
|
14300
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-medium", children: [
|
|
14301
|
-
"$",
|
|
14302
|
-
amount
|
|
14303
|
-
] })
|
|
14304
|
-
] }),
|
|
14305
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between text-sm", children: [
|
|
14306
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Type:" }),
|
|
14307
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: TRANSACTION_TYPES.find((t) => t.value === transactionType)?.label })
|
|
14308
|
-
] }),
|
|
14309
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between text-sm", children: [
|
|
14310
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Counterparty:" }),
|
|
14311
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: counterpartyName })
|
|
14312
|
-
] })
|
|
14313
|
-
] }),
|
|
14314
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 p-3 bg-blue-500/10 border border-blue-500/20 rounded-lg", children: [
|
|
14315
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircle, { className: "h-5 w-5 text-blue-500 mt-0.5 flex-shrink-0" }),
|
|
14316
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-blue-700 dark:text-blue-300", children: "You will receive a confirmation email once the transaction is completed." })
|
|
14317
|
-
] })
|
|
14318
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 pt-2", children: [
|
|
14319
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 p-4 bg-destructive/10 border border-destructive/20 rounded-lg", children: [
|
|
14320
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { className: "h-5 w-5 text-destructive mt-0.5 flex-shrink-0" }),
|
|
14321
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
14322
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium text-destructive", children: "Error Processing Transaction" }),
|
|
14323
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: errorMessage })
|
|
14324
|
-
] })
|
|
14325
|
-
] }),
|
|
14326
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Please review the error message above and try again. If the problem persists, contact support." })
|
|
14327
|
-
] }) })
|
|
14328
|
-
] }),
|
|
14329
|
-
/* @__PURE__ */ jsxRuntime.jsxs(DialogFooter, { className: "sm:justify-end gap-2", children: [
|
|
14330
|
-
submissionStatus === "error" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
14331
|
-
Button,
|
|
14332
|
-
{
|
|
14333
|
-
type: "button",
|
|
14334
|
-
variant: "outline",
|
|
14335
|
-
onClick: () => setConfirmationOpen(false),
|
|
14336
|
-
children: "Try Again"
|
|
14337
|
-
}
|
|
14338
|
-
),
|
|
14339
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14340
|
-
Button,
|
|
14341
|
-
{
|
|
14342
|
-
type: "button",
|
|
14343
|
-
onClick: handleConfirmationClose,
|
|
14344
|
-
variant: submissionStatus === "success" ? "default" : "outline",
|
|
14345
|
-
children: submissionStatus === "success" ? "View Transactions" : "Close"
|
|
14346
|
-
}
|
|
14347
|
-
)
|
|
14348
|
-
] })
|
|
14349
|
-
] }) })
|
|
14350
|
-
] })
|
|
14316
|
+
form,
|
|
14317
|
+
accountLookedUp,
|
|
14318
|
+
accountData,
|
|
14319
|
+
counterpartyLookedUp,
|
|
14320
|
+
counterpartyData,
|
|
14321
|
+
confirmationOpen,
|
|
14322
|
+
submissionStatus,
|
|
14323
|
+
errorMessage,
|
|
14324
|
+
transactionId,
|
|
14325
|
+
onAccountLookup: handleAccountLookup,
|
|
14326
|
+
onCounterpartyLookup: handleCounterpartyLookup,
|
|
14327
|
+
onEditAccount: handleEditAccount,
|
|
14328
|
+
onEditCounterparty: handleEditCounterparty,
|
|
14329
|
+
onSubmit: handleSubmit,
|
|
14330
|
+
onCancel: handleCancel,
|
|
14331
|
+
onConfirmationClose: handleConfirmationClose,
|
|
14332
|
+
onConfirmationOpenChange: setConfirmationOpen
|
|
14351
14333
|
}
|
|
14352
14334
|
);
|
|
14353
14335
|
}
|
|
@@ -16414,6 +16396,7 @@ exports.BusinessTypeBadge = BusinessTypeBadge;
|
|
|
16414
16396
|
exports.Businesses = Businesses_default;
|
|
16415
16397
|
exports.Button = Button;
|
|
16416
16398
|
exports.CIPStatusBadge = CIPStatusBadge;
|
|
16399
|
+
exports.CURRENCY_OPTIONS = CURRENCY_OPTIONS;
|
|
16417
16400
|
exports.Calendar = Calendar;
|
|
16418
16401
|
exports.Card = Card;
|
|
16419
16402
|
exports.CardContent = CardContent;
|
|
@@ -16485,6 +16468,7 @@ exports.ListPage = ListPage;
|
|
|
16485
16468
|
exports.MainLayout = MainLayout;
|
|
16486
16469
|
exports.MetricCard = MetricCard;
|
|
16487
16470
|
exports.NewTransaction = NewTransaction;
|
|
16471
|
+
exports.NewTransactionView = NewTransactionView;
|
|
16488
16472
|
exports.NotFound = NotFound_default;
|
|
16489
16473
|
exports.OFACAlertView = OFACAlertView;
|
|
16490
16474
|
exports.OriginatorCard = OriginatorCard;
|
|
@@ -16542,6 +16526,7 @@ exports.Statement = Statement;
|
|
|
16542
16526
|
exports.StatementHeader = StatementHeader;
|
|
16543
16527
|
exports.StatementView = StatementView;
|
|
16544
16528
|
exports.StatusBadge = StatusBadge;
|
|
16529
|
+
exports.TRANSACTION_TYPES = TRANSACTION_TYPES;
|
|
16545
16530
|
exports.Table = Table;
|
|
16546
16531
|
exports.TableBody = TableBody;
|
|
16547
16532
|
exports.TableCaption = TableCaption;
|
|
@@ -16581,6 +16566,7 @@ exports.cardVariants = cardVariants;
|
|
|
16581
16566
|
exports.downloadCSV = downloadCSV;
|
|
16582
16567
|
exports.generateStatementCSV = generateStatementCSV;
|
|
16583
16568
|
exports.inputVariants = inputVariants;
|
|
16569
|
+
exports.newTransactionSchema = newTransactionSchema;
|
|
16584
16570
|
exports.reducer = reducer;
|
|
16585
16571
|
exports.textareaVariants = textareaVariants;
|
|
16586
16572
|
exports.toast = toast;
|