braid-ui 1.0.0 → 1.0.1
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 +2522 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +29 -1
- package/dist/index.d.ts +29 -1
- package/dist/index.js +2512 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -25,7 +25,7 @@ var nextThemes = require('next-themes');
|
|
|
25
25
|
var sonner = require('sonner');
|
|
26
26
|
var TabsPrimitive = require('@radix-ui/react-tabs');
|
|
27
27
|
var ToastPrimitives = require('@radix-ui/react-toast');
|
|
28
|
-
require('date-fns');
|
|
28
|
+
var dateFns = require('date-fns');
|
|
29
29
|
|
|
30
30
|
function _interopNamespace(e) {
|
|
31
31
|
if (e && e.__esModule) return e;
|
|
@@ -6102,7 +6102,1871 @@ function UIKitShowcase() {
|
|
|
6102
6102
|
] })
|
|
6103
6103
|
] }) }) });
|
|
6104
6104
|
}
|
|
6105
|
-
|
|
6105
|
+
|
|
6106
|
+
// src/lib/mock-data/alert-data.ts
|
|
6107
|
+
var mockAlerts = [
|
|
6108
|
+
{
|
|
6109
|
+
id: "4402",
|
|
6110
|
+
createdAt: "2025-09-30 03:00:21",
|
|
6111
|
+
type: "Ofac",
|
|
6112
|
+
status: "Unassigned",
|
|
6113
|
+
contextType: "Ofac",
|
|
6114
|
+
description: "INDIVIDUAL: ali hassan is flagged for OFAC",
|
|
6115
|
+
timeline: [
|
|
6116
|
+
{ id: "1", timestamp: "2025-09-30 03:00:21", user: "System", action: "Alert Created", status: "Unassigned" },
|
|
6117
|
+
{ id: "2", timestamp: "2025-09-30 09:15:32", user: "John Smith", action: "Alert Assigned", details: "Assigned to compliance team", status: "In Progress" }
|
|
6118
|
+
],
|
|
6119
|
+
notes: [
|
|
6120
|
+
{ id: "1", timestamp: "2025-09-30 10:22:15", user: "John Smith", content: "Reviewing OFAC match. Need to verify identity documents.", type: "RFI Note" },
|
|
6121
|
+
{ id: "2", timestamp: "2025-09-30 11:45:30", user: "Sarah Johnson", content: "Requested additional documentation from customer. Passport and proof of address needed.", type: "RFI Note" },
|
|
6122
|
+
{ id: "3", timestamp: "2025-09-30 14:20:45", user: "John Smith", content: "Customer responded with requested documents. Passport appears valid, reviewing address verification now.", type: "Internal Note" },
|
|
6123
|
+
{ id: "4", timestamp: "2025-10-01 09:10:00", user: "Michael Chen", content: "Cross-referenced with internal records. Customer has been with us for 5 years with no prior issues. Match appears to be false positive due to common name.", type: "Internal Note" }
|
|
6124
|
+
],
|
|
6125
|
+
documents: [
|
|
6126
|
+
{
|
|
6127
|
+
id: "1",
|
|
6128
|
+
name: "passport_scan.pdf",
|
|
6129
|
+
type: "ID Verification",
|
|
6130
|
+
description: "Customer passport for identity verification",
|
|
6131
|
+
size: "2.4 MB",
|
|
6132
|
+
uploadedBy: "John Smith",
|
|
6133
|
+
uploadedAt: "2025-09-30 10:25:00",
|
|
6134
|
+
url: "/placeholder.svg"
|
|
6135
|
+
},
|
|
6136
|
+
{
|
|
6137
|
+
id: "2",
|
|
6138
|
+
name: "proof_of_address.jpg",
|
|
6139
|
+
type: "Proof of Address",
|
|
6140
|
+
description: "Utility bill showing current residential address",
|
|
6141
|
+
size: "1.8 MB",
|
|
6142
|
+
uploadedBy: "Sarah Johnson",
|
|
6143
|
+
uploadedAt: "2025-09-30 11:50:00",
|
|
6144
|
+
url: "/placeholder.svg"
|
|
6145
|
+
}
|
|
6146
|
+
],
|
|
6147
|
+
contextData: {
|
|
6148
|
+
entityName: "Ali Hassan",
|
|
6149
|
+
entityType: "Individual",
|
|
6150
|
+
matchScore: "95%",
|
|
6151
|
+
listName: "OFAC SDN List",
|
|
6152
|
+
flaggedItems: [
|
|
6153
|
+
{ field: "Name", value: "Ali Hassan", matchScore: "95%" },
|
|
6154
|
+
{ field: "DOB", value: "1985-03-12", matchScore: "100%" }
|
|
6155
|
+
],
|
|
6156
|
+
sdns: [
|
|
6157
|
+
{
|
|
6158
|
+
uid: 12345,
|
|
6159
|
+
firstName: "Ali",
|
|
6160
|
+
lastName: "Hassan",
|
|
6161
|
+
sdnType: "Individual",
|
|
6162
|
+
programs: ["SYRIA", "SDGT"],
|
|
6163
|
+
title: "Military Commander",
|
|
6164
|
+
remarks: "DOB 12 Mar 1985; POB Damascus, Syria; Passport D1234567 (Syria); alt. Passport E7654321 (Lebanon); Linked to Entity XYZ",
|
|
6165
|
+
nationalities: ["Syria", "Lebanon"],
|
|
6166
|
+
citizenships: ["Syria"],
|
|
6167
|
+
dateOfBirthList: [
|
|
6168
|
+
{ dateOfBirth: "1985-03-12", mainEntry: true },
|
|
6169
|
+
{ dateOfBirth: "1985-03-15", mainEntry: false }
|
|
6170
|
+
],
|
|
6171
|
+
placeOfBirthList: [
|
|
6172
|
+
{ placeOfBirth: "Damascus, Syria", mainEntry: true },
|
|
6173
|
+
{ placeOfBirth: "Aleppo, Syria", mainEntry: false }
|
|
6174
|
+
],
|
|
6175
|
+
akaList: [
|
|
6176
|
+
{ category: "strong", firstName: "Ali", lastName: "Al-Hassan" },
|
|
6177
|
+
{ category: "weak", firstName: "Ali", lastName: "Hasan" },
|
|
6178
|
+
{ category: "strong", firstName: "Ali Hassan", lastName: "Mohamed" }
|
|
6179
|
+
],
|
|
6180
|
+
idList: [
|
|
6181
|
+
{ idType: "Passport", idNumber: "D1234567", idCountry: "Syria", issueDate: "2010-01-15", expirationDate: "2020-01-15" },
|
|
6182
|
+
{ idType: "Passport", idNumber: "E7654321", idCountry: "Lebanon", issueDate: "2015-06-20", expirationDate: "2025-06-20" },
|
|
6183
|
+
{ idType: "National ID", idNumber: "SY123456789", idCountry: "Syria" }
|
|
6184
|
+
]
|
|
6185
|
+
}
|
|
6186
|
+
],
|
|
6187
|
+
addresses: [
|
|
6188
|
+
{
|
|
6189
|
+
uid: 67890,
|
|
6190
|
+
address1: "Building 42, Al-Mazzeh",
|
|
6191
|
+
city: "Damascus",
|
|
6192
|
+
stateOrProvince: "Damascus Governorate",
|
|
6193
|
+
postalCode: "12345",
|
|
6194
|
+
country: "Syria",
|
|
6195
|
+
addressRemarks: "Primary Residence"
|
|
6196
|
+
},
|
|
6197
|
+
{
|
|
6198
|
+
uid: 67891,
|
|
6199
|
+
address1: "Apartment 15, Hamra Street",
|
|
6200
|
+
city: "Beirut",
|
|
6201
|
+
country: "Lebanon",
|
|
6202
|
+
addressRemarks: "Secondary Address"
|
|
6203
|
+
},
|
|
6204
|
+
{
|
|
6205
|
+
uid: 67892,
|
|
6206
|
+
address1: "Office 203, Business District",
|
|
6207
|
+
city: "Aleppo",
|
|
6208
|
+
stateOrProvince: "Aleppo Governorate",
|
|
6209
|
+
country: "Syria",
|
|
6210
|
+
addressRemarks: "Business Address - Suspected Front Company"
|
|
6211
|
+
}
|
|
6212
|
+
],
|
|
6213
|
+
alt_names: [
|
|
6214
|
+
{ uid: 54321, type: "aka", category: "strong", firstName: "Ali", lastName: "Al-Hassan" },
|
|
6215
|
+
{ uid: 54322, type: "aka", category: "weak", firstName: "Ali", lastName: "Hasan" },
|
|
6216
|
+
{ uid: 54323, type: "aka", category: "strong", firstName: "Ali Hassan", lastName: "Mohamed" },
|
|
6217
|
+
{ uid: 54324, type: "fka", category: "weak", firstName: "Ali", lastName: "Hassani" }
|
|
6218
|
+
],
|
|
6219
|
+
sanctions_entries: [
|
|
6220
|
+
{
|
|
6221
|
+
program: "SYRIA",
|
|
6222
|
+
effectiveDate: "2015-03-15",
|
|
6223
|
+
authority: "Executive Order 13572",
|
|
6224
|
+
legalBasis: "Involvement in human rights abuses in Syria"
|
|
6225
|
+
},
|
|
6226
|
+
{
|
|
6227
|
+
program: "SDGT",
|
|
6228
|
+
effectiveDate: "2016-08-22",
|
|
6229
|
+
authority: "Executive Order 13224",
|
|
6230
|
+
legalBasis: "Specially Designated Global Terrorist"
|
|
6231
|
+
}
|
|
6232
|
+
],
|
|
6233
|
+
associated_entities: [
|
|
6234
|
+
{
|
|
6235
|
+
entityName: "XYZ Trading Company",
|
|
6236
|
+
relationship: "Director",
|
|
6237
|
+
entityType: "Business"
|
|
6238
|
+
},
|
|
6239
|
+
{
|
|
6240
|
+
entityName: "Hassan Family Trust",
|
|
6241
|
+
relationship: "Beneficiary",
|
|
6242
|
+
entityType: "Trust"
|
|
6243
|
+
}
|
|
6244
|
+
],
|
|
6245
|
+
screening_metadata: {
|
|
6246
|
+
screenedAt: "2025-09-30T03:00:21Z",
|
|
6247
|
+
screeningEngine: "OFAC Advanced Matcher v3.2",
|
|
6248
|
+
datasetVersion: "2025-09-25",
|
|
6249
|
+
totalRecordsScreened: 1,
|
|
6250
|
+
matchAlgorithm: "Fuzzy + Phonetic",
|
|
6251
|
+
confidenceThreshold: 0.85
|
|
6252
|
+
}
|
|
6253
|
+
}
|
|
6254
|
+
},
|
|
6255
|
+
{
|
|
6256
|
+
id: "4401",
|
|
6257
|
+
createdAt: "2025-09-29 15:00:45",
|
|
6258
|
+
type: "Ofac",
|
|
6259
|
+
status: "Closed",
|
|
6260
|
+
contextType: "Ofac",
|
|
6261
|
+
description: "INDIVIDUAL: ali hassan is flagged for OFAC"
|
|
6262
|
+
},
|
|
6263
|
+
{
|
|
6264
|
+
id: "4400",
|
|
6265
|
+
createdAt: "2025-09-27 03:02:34",
|
|
6266
|
+
type: "Ofac",
|
|
6267
|
+
status: "Unassigned",
|
|
6268
|
+
contextType: "Ofac",
|
|
6269
|
+
description: "BUSINESS: Randy is flagged for OFAC"
|
|
6270
|
+
},
|
|
6271
|
+
{
|
|
6272
|
+
id: "4399",
|
|
6273
|
+
createdAt: "2025-09-27 03:02:31",
|
|
6274
|
+
type: "Ofac",
|
|
6275
|
+
status: "Unassigned",
|
|
6276
|
+
contextType: "Ofac",
|
|
6277
|
+
description: "BUSINESS: test is flagged for OFAC"
|
|
6278
|
+
},
|
|
6279
|
+
{
|
|
6280
|
+
id: "4398",
|
|
6281
|
+
createdAt: "2025-09-24 10:01:58",
|
|
6282
|
+
type: "Transaction Processing Error",
|
|
6283
|
+
status: "Unassigned",
|
|
6284
|
+
contextType: "File Record",
|
|
6285
|
+
description: "Inbound WIRE for $100,000.00 can not be processed. Exception: incorrect account..."
|
|
6286
|
+
},
|
|
6287
|
+
{
|
|
6288
|
+
id: "4397",
|
|
6289
|
+
createdAt: "2025-09-22 20:33:59",
|
|
6290
|
+
type: "Dual Approval",
|
|
6291
|
+
status: "Unassigned",
|
|
6292
|
+
contextType: "Transaction",
|
|
6293
|
+
description: "Debit adjustment for $20.00 for account number 84804949"
|
|
6294
|
+
},
|
|
6295
|
+
{
|
|
6296
|
+
id: "4396",
|
|
6297
|
+
createdAt: "2025-09-22 20:33:12",
|
|
6298
|
+
type: "Transaction Monitoring",
|
|
6299
|
+
status: "Unassigned",
|
|
6300
|
+
contextType: "Transaction",
|
|
6301
|
+
description: "Transaction WIRE_INTERNATIONAL_DEBIT of $3,000.00 is flagged for velocity li..."
|
|
6302
|
+
},
|
|
6303
|
+
{
|
|
6304
|
+
id: "4395",
|
|
6305
|
+
createdAt: "2025-09-13 03:02:29",
|
|
6306
|
+
type: "Ofac",
|
|
6307
|
+
status: "Closed",
|
|
6308
|
+
contextType: "Ofac",
|
|
6309
|
+
rfiStatus: "Completed",
|
|
6310
|
+
description: "BUSINESS: test is flagged for OFAC"
|
|
6311
|
+
},
|
|
6312
|
+
{
|
|
6313
|
+
id: "4394",
|
|
6314
|
+
createdAt: "2025-09-11 07:46:28",
|
|
6315
|
+
type: "Dual Approval",
|
|
6316
|
+
status: "Closed",
|
|
6317
|
+
contextType: "Product",
|
|
6318
|
+
description: "Product 2787 is set for deactivation"
|
|
6319
|
+
},
|
|
6320
|
+
{
|
|
6321
|
+
id: "4393",
|
|
6322
|
+
createdAt: "2025-09-11 07:46:17",
|
|
6323
|
+
type: "Dual Approval",
|
|
6324
|
+
status: "Unassigned",
|
|
6325
|
+
contextType: "Product",
|
|
6326
|
+
description: "Product 2787 is set for deactivation"
|
|
6327
|
+
},
|
|
6328
|
+
{
|
|
6329
|
+
id: "4392",
|
|
6330
|
+
createdAt: "2025-09-10 14:44:46",
|
|
6331
|
+
type: "Transaction Monitoring",
|
|
6332
|
+
status: "Closed",
|
|
6333
|
+
contextType: "Transaction",
|
|
6334
|
+
rfiStatus: "Provided",
|
|
6335
|
+
description: "Transaction WIRE_DOMESTIC_CREDIT of $30,000.00 is flagged for velocity limit ..."
|
|
6336
|
+
}
|
|
6337
|
+
];
|
|
6338
|
+
var RFI_STATUS_OPTIONS = [
|
|
6339
|
+
{ value: "Completed", label: "Completed" },
|
|
6340
|
+
{ value: "Provided", label: "Provided" },
|
|
6341
|
+
{ value: "Pending", label: "Pending" }
|
|
6342
|
+
];
|
|
6343
|
+
var ASSIGNEE_OPTIONS = [
|
|
6344
|
+
{ value: "John Smith", label: "John Smith" },
|
|
6345
|
+
{ value: "Sarah Johnson", label: "Sarah Johnson" },
|
|
6346
|
+
{ value: "Michael Chen", label: "Michael Chen" },
|
|
6347
|
+
{ value: "approverdev", label: "approverdev" },
|
|
6348
|
+
{ value: "Unassigned", label: "Unassigned" }
|
|
6349
|
+
];
|
|
6350
|
+
var AlertDetail = () => {
|
|
6351
|
+
const { id } = reactRouterDom.useParams();
|
|
6352
|
+
const navigate = reactRouterDom.useNavigate();
|
|
6353
|
+
const alert = mockAlerts.find((a) => a.id === id);
|
|
6354
|
+
const [rfiStatus, setRfiStatus] = React13.useState(alert?.rfiStatus || "");
|
|
6355
|
+
const [assignee, setAssignee] = React13.useState(alert?.assignee || "Unassigned");
|
|
6356
|
+
const handleRfiStatusChange = (newStatus) => {
|
|
6357
|
+
setRfiStatus(newStatus);
|
|
6358
|
+
console.log("RFI Status updated to:", newStatus);
|
|
6359
|
+
};
|
|
6360
|
+
const handleAssigneeChange = (newAssignee) => {
|
|
6361
|
+
setAssignee(newAssignee);
|
|
6362
|
+
console.log("Assignee updated to:", newAssignee);
|
|
6363
|
+
};
|
|
6364
|
+
if (!alert) {
|
|
6365
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container mx-auto px-4 py-8", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
|
|
6366
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-2xl font-bold mb-2", children: "Alert Not Found" }),
|
|
6367
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-muted-foreground mb-4", children: [
|
|
6368
|
+
"The alert #",
|
|
6369
|
+
id,
|
|
6370
|
+
" could not be found."
|
|
6371
|
+
] }),
|
|
6372
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: () => navigate("/alerts"), children: "Back to Alerts" })
|
|
6373
|
+
] }) });
|
|
6374
|
+
}
|
|
6375
|
+
const getTypeBadgeVariant = (type) => {
|
|
6376
|
+
switch (type) {
|
|
6377
|
+
case "Ofac":
|
|
6378
|
+
return "alert-ofac";
|
|
6379
|
+
case "Dual Approval":
|
|
6380
|
+
return "alert-dual";
|
|
6381
|
+
case "Transaction Monitoring":
|
|
6382
|
+
return "alert-monitoring";
|
|
6383
|
+
case "Transaction Processing Error":
|
|
6384
|
+
return "alert-error";
|
|
6385
|
+
default:
|
|
6386
|
+
return "outline";
|
|
6387
|
+
}
|
|
6388
|
+
};
|
|
6389
|
+
const getStatusColor = (status) => {
|
|
6390
|
+
switch (status) {
|
|
6391
|
+
case "Unassigned":
|
|
6392
|
+
return "text-destructive";
|
|
6393
|
+
case "Closed":
|
|
6394
|
+
return "text-success";
|
|
6395
|
+
case "In Progress":
|
|
6396
|
+
return "text-warning";
|
|
6397
|
+
default:
|
|
6398
|
+
return "";
|
|
6399
|
+
}
|
|
6400
|
+
};
|
|
6401
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6402
|
+
PageLayout,
|
|
6403
|
+
{
|
|
6404
|
+
title: `Alert #${alert.id}`,
|
|
6405
|
+
description: alert.description,
|
|
6406
|
+
maxWidth: "full",
|
|
6407
|
+
actions: [
|
|
6408
|
+
{
|
|
6409
|
+
label: "Back to Alerts",
|
|
6410
|
+
variant: "outline",
|
|
6411
|
+
onClick: () => navigate("/alerts")
|
|
6412
|
+
},
|
|
6413
|
+
{
|
|
6414
|
+
label: "Assign",
|
|
6415
|
+
variant: "outline",
|
|
6416
|
+
onClick: () => console.log("Assign alert")
|
|
6417
|
+
},
|
|
6418
|
+
{
|
|
6419
|
+
label: "Close Alert",
|
|
6420
|
+
variant: "default",
|
|
6421
|
+
onClick: () => console.log("Close alert")
|
|
6422
|
+
}
|
|
6423
|
+
],
|
|
6424
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col lg:flex-row gap-6", children: [
|
|
6425
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 grid grid-cols-1 lg:grid-cols-2 gap-6", children: [
|
|
6426
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6427
|
+
FormCard,
|
|
6428
|
+
{
|
|
6429
|
+
title: "Alert Information",
|
|
6430
|
+
headerActions: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Edit, { className: "h-4 w-4" }) }),
|
|
6431
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
6432
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Alert ID", value: alert.id }),
|
|
6433
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6434
|
+
InfoField,
|
|
6435
|
+
{
|
|
6436
|
+
label: "Type",
|
|
6437
|
+
value: /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: getTypeBadgeVariant(alert.type), children: alert.type })
|
|
6438
|
+
}
|
|
6439
|
+
),
|
|
6440
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6441
|
+
InfoField,
|
|
6442
|
+
{
|
|
6443
|
+
label: "Status",
|
|
6444
|
+
value: /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-medium", getStatusColor(alert.status)), children: alert.status })
|
|
6445
|
+
}
|
|
6446
|
+
),
|
|
6447
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Created At", value: alert.createdAt }),
|
|
6448
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6449
|
+
InfoField,
|
|
6450
|
+
{
|
|
6451
|
+
label: "Context Type",
|
|
6452
|
+
value: /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", children: alert.contextType })
|
|
6453
|
+
}
|
|
6454
|
+
),
|
|
6455
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Context ID", value: alert.contextId || "N/A" }),
|
|
6456
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6457
|
+
EditableInfoField,
|
|
6458
|
+
{
|
|
6459
|
+
label: "Assignee",
|
|
6460
|
+
value: assignee,
|
|
6461
|
+
options: ASSIGNEE_OPTIONS,
|
|
6462
|
+
onChange: handleAssigneeChange,
|
|
6463
|
+
placeholder: "Unassigned"
|
|
6464
|
+
}
|
|
6465
|
+
),
|
|
6466
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6467
|
+
EditableInfoField,
|
|
6468
|
+
{
|
|
6469
|
+
label: "RFI Status",
|
|
6470
|
+
value: rfiStatus,
|
|
6471
|
+
options: RFI_STATUS_OPTIONS,
|
|
6472
|
+
onChange: handleRfiStatusChange,
|
|
6473
|
+
placeholder: "Select status",
|
|
6474
|
+
renderValue: (value) => /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", children: value })
|
|
6475
|
+
}
|
|
6476
|
+
),
|
|
6477
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-2", children: /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Description", value: alert.description }) })
|
|
6478
|
+
] })
|
|
6479
|
+
}
|
|
6480
|
+
),
|
|
6481
|
+
/* @__PURE__ */ jsxRuntime.jsx(ContextSection, { alert }),
|
|
6482
|
+
/* @__PURE__ */ jsxRuntime.jsx(FormCard, { title: "Notes", children: /* @__PURE__ */ jsxRuntime.jsx(AlertNotes, { alertId: alert.id, notes: alert.notes || [] }) }),
|
|
6483
|
+
/* @__PURE__ */ jsxRuntime.jsx(FormCard, { title: "Documents", children: /* @__PURE__ */ jsxRuntime.jsx(AlertDocuments, { alertId: alert.id, documents: alert.documents || [] }) })
|
|
6484
|
+
] }),
|
|
6485
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:w-64", children: /* @__PURE__ */ jsxRuntime.jsx(FormCard, { title: "Status Timeline", className: "h-full", children: /* @__PURE__ */ jsxRuntime.jsx(AlertTimeline, { events: alert.timeline || [] }) }) })
|
|
6486
|
+
] })
|
|
6487
|
+
}
|
|
6488
|
+
);
|
|
6489
|
+
};
|
|
6490
|
+
var AlertDetail_default = AlertDetail;
|
|
6491
|
+
var Alerts = () => {
|
|
6492
|
+
const navigate = reactRouterDom.useNavigate();
|
|
6493
|
+
const [filters, setFilters] = React13.useState({
|
|
6494
|
+
alertId: "",
|
|
6495
|
+
contextId: "",
|
|
6496
|
+
contextType: "",
|
|
6497
|
+
alertType: "",
|
|
6498
|
+
alertStatus: "",
|
|
6499
|
+
assignee: "",
|
|
6500
|
+
rfiStatus: "",
|
|
6501
|
+
startDate: "",
|
|
6502
|
+
endDate: ""
|
|
6503
|
+
});
|
|
6504
|
+
const [filteredAlerts, setFilteredAlerts] = React13.useState(mockAlerts);
|
|
6505
|
+
const [currentPage, setCurrentPage] = React13.useState(1);
|
|
6506
|
+
const [rowsPerPage, setRowsPerPage] = React13.useState(100);
|
|
6507
|
+
const handleFilterChange = (field, value) => {
|
|
6508
|
+
setFilters((prev) => ({ ...prev, [field]: value }));
|
|
6509
|
+
};
|
|
6510
|
+
const applyFilters = () => {
|
|
6511
|
+
let filtered = mockAlerts;
|
|
6512
|
+
if (filters.alertId) {
|
|
6513
|
+
filtered = filtered.filter((alert) => alert.id.includes(filters.alertId));
|
|
6514
|
+
}
|
|
6515
|
+
if (filters.alertStatus) {
|
|
6516
|
+
filtered = filtered.filter((alert) => alert.status === filters.alertStatus);
|
|
6517
|
+
}
|
|
6518
|
+
if (filters.alertType) {
|
|
6519
|
+
filtered = filtered.filter((alert) => alert.type === filters.alertType);
|
|
6520
|
+
}
|
|
6521
|
+
if (filters.contextType) {
|
|
6522
|
+
filtered = filtered.filter((alert) => alert.contextType === filters.contextType);
|
|
6523
|
+
}
|
|
6524
|
+
if (filters.rfiStatus) {
|
|
6525
|
+
filtered = filtered.filter((alert) => alert.rfiStatus === filters.rfiStatus);
|
|
6526
|
+
}
|
|
6527
|
+
setFilteredAlerts(filtered);
|
|
6528
|
+
setCurrentPage(1);
|
|
6529
|
+
};
|
|
6530
|
+
const resetFilters = () => {
|
|
6531
|
+
setFilters({
|
|
6532
|
+
alertId: "",
|
|
6533
|
+
contextId: "",
|
|
6534
|
+
contextType: "",
|
|
6535
|
+
alertType: "",
|
|
6536
|
+
alertStatus: "",
|
|
6537
|
+
assignee: "",
|
|
6538
|
+
rfiStatus: "",
|
|
6539
|
+
startDate: "",
|
|
6540
|
+
endDate: ""
|
|
6541
|
+
});
|
|
6542
|
+
setFilteredAlerts(mockAlerts);
|
|
6543
|
+
setCurrentPage(1);
|
|
6544
|
+
};
|
|
6545
|
+
const getTypeBadgeVariant = (type) => {
|
|
6546
|
+
switch (type) {
|
|
6547
|
+
case "Ofac":
|
|
6548
|
+
return "alert-ofac";
|
|
6549
|
+
case "Dual Approval":
|
|
6550
|
+
return "alert-dual";
|
|
6551
|
+
case "Transaction Monitoring":
|
|
6552
|
+
return "alert-monitoring";
|
|
6553
|
+
case "Transaction Processing Error":
|
|
6554
|
+
return "alert-error";
|
|
6555
|
+
default:
|
|
6556
|
+
return "outline";
|
|
6557
|
+
}
|
|
6558
|
+
};
|
|
6559
|
+
const getStatusColor = (status) => {
|
|
6560
|
+
switch (status) {
|
|
6561
|
+
case "Unassigned":
|
|
6562
|
+
return "text-destructive";
|
|
6563
|
+
case "Closed":
|
|
6564
|
+
return "text-success";
|
|
6565
|
+
case "In Progress":
|
|
6566
|
+
return "text-warning";
|
|
6567
|
+
default:
|
|
6568
|
+
return "";
|
|
6569
|
+
}
|
|
6570
|
+
};
|
|
6571
|
+
const totalPages = Math.ceil(filteredAlerts.length / rowsPerPage);
|
|
6572
|
+
const startIndex = (currentPage - 1) * rowsPerPage;
|
|
6573
|
+
const endIndex = startIndex + rowsPerPage;
|
|
6574
|
+
const paginatedAlerts = filteredAlerts.slice(startIndex, endIndex);
|
|
6575
|
+
const handlePageChange = (newPage) => {
|
|
6576
|
+
if (newPage >= 1 && newPage <= totalPages) {
|
|
6577
|
+
setCurrentPage(newPage);
|
|
6578
|
+
}
|
|
6579
|
+
};
|
|
6580
|
+
const handleRowsPerPageChange = (value) => {
|
|
6581
|
+
setRowsPerPage(value);
|
|
6582
|
+
setCurrentPage(1);
|
|
6583
|
+
};
|
|
6584
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-screen bg-gradient-subtle", children: [
|
|
6585
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container mx-auto px-4 py-4 max-w-none", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
6586
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-3xl font-bold text-foreground", children: "Alerts" }),
|
|
6587
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Sheet, { children: [
|
|
6588
|
+
/* @__PURE__ */ jsxRuntime.jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "outline", className: "gap-2", children: [
|
|
6589
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Filter, { className: "h-4 w-4" }),
|
|
6590
|
+
"Filters"
|
|
6591
|
+
] }) }),
|
|
6592
|
+
/* @__PURE__ */ jsxRuntime.jsxs(SheetContent, { side: "right", className: "w-full sm:max-w-xl overflow-y-auto", children: [
|
|
6593
|
+
/* @__PURE__ */ jsxRuntime.jsx(SheetHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { children: "Alert Filters" }) }),
|
|
6594
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6 py-6", children: [
|
|
6595
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6596
|
+
EnhancedInput,
|
|
6597
|
+
{
|
|
6598
|
+
label: "Alert ID",
|
|
6599
|
+
value: filters.alertId,
|
|
6600
|
+
onChange: (e) => handleFilterChange("alertId", e.target.value),
|
|
6601
|
+
placeholder: "Enter alert ID"
|
|
6602
|
+
}
|
|
6603
|
+
),
|
|
6604
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6605
|
+
EnhancedInput,
|
|
6606
|
+
{
|
|
6607
|
+
label: "Context ID",
|
|
6608
|
+
value: filters.contextId,
|
|
6609
|
+
onChange: (e) => handleFilterChange("contextId", e.target.value),
|
|
6610
|
+
placeholder: "Enter context ID"
|
|
6611
|
+
}
|
|
6612
|
+
),
|
|
6613
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6614
|
+
EnhancedSelect,
|
|
6615
|
+
{
|
|
6616
|
+
label: "Context Type",
|
|
6617
|
+
value: filters.contextType,
|
|
6618
|
+
onValueChange: (value) => handleFilterChange("contextType", value),
|
|
6619
|
+
placeholder: "Select context type",
|
|
6620
|
+
options: [
|
|
6621
|
+
{ value: "Ofac", label: "Ofac" },
|
|
6622
|
+
{ value: "Transaction", label: "Transaction" },
|
|
6623
|
+
{ value: "Product", label: "Product" },
|
|
6624
|
+
{ value: "File Record", label: "File Record" }
|
|
6625
|
+
]
|
|
6626
|
+
}
|
|
6627
|
+
),
|
|
6628
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6629
|
+
EnhancedSelect,
|
|
6630
|
+
{
|
|
6631
|
+
label: "Alert Type",
|
|
6632
|
+
value: filters.alertType,
|
|
6633
|
+
onValueChange: (value) => handleFilterChange("alertType", value),
|
|
6634
|
+
placeholder: "Select alert type",
|
|
6635
|
+
options: [
|
|
6636
|
+
{ value: "Ofac", label: "Ofac" },
|
|
6637
|
+
{ value: "Dual Approval", label: "Dual Approval" },
|
|
6638
|
+
{ value: "Transaction Monitoring", label: "Transaction Monitoring" },
|
|
6639
|
+
{ value: "Transaction Processing Error", label: "Transaction Processing Error" }
|
|
6640
|
+
]
|
|
6641
|
+
}
|
|
6642
|
+
),
|
|
6643
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6644
|
+
EnhancedSelect,
|
|
6645
|
+
{
|
|
6646
|
+
label: "Alert Status",
|
|
6647
|
+
value: filters.alertStatus,
|
|
6648
|
+
onValueChange: (value) => handleFilterChange("alertStatus", value),
|
|
6649
|
+
placeholder: "Select status",
|
|
6650
|
+
options: [
|
|
6651
|
+
{ value: "Unassigned", label: "Unassigned" },
|
|
6652
|
+
{ value: "Closed", label: "Closed" },
|
|
6653
|
+
{ value: "In Progress", label: "In Progress" }
|
|
6654
|
+
]
|
|
6655
|
+
}
|
|
6656
|
+
),
|
|
6657
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6658
|
+
EnhancedInput,
|
|
6659
|
+
{
|
|
6660
|
+
label: "Assignee",
|
|
6661
|
+
value: filters.assignee,
|
|
6662
|
+
onChange: (e) => handleFilterChange("assignee", e.target.value),
|
|
6663
|
+
placeholder: "Enter assignee name"
|
|
6664
|
+
}
|
|
6665
|
+
),
|
|
6666
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6667
|
+
EnhancedSelect,
|
|
6668
|
+
{
|
|
6669
|
+
label: "RFI Status",
|
|
6670
|
+
value: filters.rfiStatus,
|
|
6671
|
+
onValueChange: (value) => handleFilterChange("rfiStatus", value),
|
|
6672
|
+
placeholder: "Select RFI status",
|
|
6673
|
+
options: [
|
|
6674
|
+
{ value: "Completed", label: "Completed" },
|
|
6675
|
+
{ value: "Provided", label: "Provided" },
|
|
6676
|
+
{ value: "Pending", label: "Pending" }
|
|
6677
|
+
]
|
|
6678
|
+
}
|
|
6679
|
+
),
|
|
6680
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
6681
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6682
|
+
EnhancedInput,
|
|
6683
|
+
{
|
|
6684
|
+
label: "Start Date",
|
|
6685
|
+
type: "date",
|
|
6686
|
+
value: filters.startDate,
|
|
6687
|
+
onChange: (e) => handleFilterChange("startDate", e.target.value)
|
|
6688
|
+
}
|
|
6689
|
+
),
|
|
6690
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6691
|
+
EnhancedInput,
|
|
6692
|
+
{
|
|
6693
|
+
label: "End Date",
|
|
6694
|
+
type: "date",
|
|
6695
|
+
value: filters.endDate,
|
|
6696
|
+
onChange: (e) => handleFilterChange("endDate", e.target.value)
|
|
6697
|
+
}
|
|
6698
|
+
)
|
|
6699
|
+
] })
|
|
6700
|
+
] }),
|
|
6701
|
+
/* @__PURE__ */ jsxRuntime.jsxs(SheetFooter, { className: "gap-2", children: [
|
|
6702
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "outline", onClick: resetFilters, children: "Reset Filters" }),
|
|
6703
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: applyFilters, children: "Apply Filters" })
|
|
6704
|
+
] })
|
|
6705
|
+
] })
|
|
6706
|
+
] })
|
|
6707
|
+
] }) }) }),
|
|
6708
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container mx-auto px-4 h-full max-w-none flex flex-col", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 mt-4 rounded-lg border bg-card overflow-hidden flex flex-col", children: [
|
|
6709
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 overflow-auto", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "w-full table-fixed", children: [
|
|
6710
|
+
/* @__PURE__ */ jsxRuntime.jsxs("colgroup", { children: [
|
|
6711
|
+
/* @__PURE__ */ jsxRuntime.jsx("col", { className: "w-28" }),
|
|
6712
|
+
/* @__PURE__ */ jsxRuntime.jsx("col", { className: "w-36" }),
|
|
6713
|
+
/* @__PURE__ */ jsxRuntime.jsx("col", { className: "w-52" }),
|
|
6714
|
+
/* @__PURE__ */ jsxRuntime.jsx("col", { className: "w-32" }),
|
|
6715
|
+
/* @__PURE__ */ jsxRuntime.jsx("col", { className: "w-36" }),
|
|
6716
|
+
/* @__PURE__ */ jsxRuntime.jsx("col", { className: "w-32" }),
|
|
6717
|
+
/* @__PURE__ */ jsxRuntime.jsx("col", { className: "w-auto" })
|
|
6718
|
+
] }),
|
|
6719
|
+
/* @__PURE__ */ jsxRuntime.jsx("thead", { className: "sticky top-0 bg-card z-10 shadow-sm", children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-b", children: [
|
|
6720
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-left text-xs font-medium bg-muted/50", children: "Alert ID" }),
|
|
6721
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-left text-xs font-medium bg-muted/50", children: "Created At" }),
|
|
6722
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-left text-xs font-medium bg-muted/50", children: "Type" }),
|
|
6723
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-left text-xs font-medium bg-muted/50", children: "Status" }),
|
|
6724
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-left text-xs font-medium bg-muted/50", children: "Context Type" }),
|
|
6725
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-left text-xs font-medium bg-muted/50", children: "RFI Status" }),
|
|
6726
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-left text-xs font-medium bg-muted/50", children: "Description" })
|
|
6727
|
+
] }) }),
|
|
6728
|
+
/* @__PURE__ */ jsxRuntime.jsx("tbody", { children: paginatedAlerts.map((alert) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6729
|
+
"tr",
|
|
6730
|
+
{
|
|
6731
|
+
className: "border-b hover:bg-muted/50 transition-colors cursor-pointer",
|
|
6732
|
+
onClick: () => navigate(`/alerts/${alert.id}`),
|
|
6733
|
+
children: [
|
|
6734
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2 text-xs", children: alert.id }),
|
|
6735
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2 text-xs", children: alert.createdAt }),
|
|
6736
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2", children: /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: getTypeBadgeVariant(alert.type), className: "whitespace-nowrap", children: alert.type }) }),
|
|
6737
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-xs font-medium", getStatusColor(alert.status)), children: alert.status }) }),
|
|
6738
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2", children: /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: "whitespace-nowrap", children: alert.contextType }) }),
|
|
6739
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2", children: alert.rfiStatus && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", className: "whitespace-nowrap", children: alert.rfiStatus }) }),
|
|
6740
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2 text-xs truncate", children: alert.description })
|
|
6741
|
+
]
|
|
6742
|
+
},
|
|
6743
|
+
alert.id
|
|
6744
|
+
)) })
|
|
6745
|
+
] }) }),
|
|
6746
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-none border-t bg-background py-3 px-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
6747
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
6748
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: "Rows per page:" }),
|
|
6749
|
+
/* @__PURE__ */ jsxRuntime.jsxs(DropdownMenu, { children: [
|
|
6750
|
+
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "outline", size: "sm", className: "h-8 gap-1", children: [
|
|
6751
|
+
rowsPerPage,
|
|
6752
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4 rotate-90" })
|
|
6753
|
+
] }) }),
|
|
6754
|
+
/* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuContent, { align: "start", className: "bg-background z-50", children: [
|
|
6755
|
+
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { onClick: () => handleRowsPerPageChange(100), children: "100" }),
|
|
6756
|
+
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { onClick: () => handleRowsPerPageChange(200), children: "200" }),
|
|
6757
|
+
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { onClick: () => handleRowsPerPageChange(500), children: "500" })
|
|
6758
|
+
] })
|
|
6759
|
+
] })
|
|
6760
|
+
] }),
|
|
6761
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-4", children: [
|
|
6762
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm text-muted-foreground", children: [
|
|
6763
|
+
"Page ",
|
|
6764
|
+
currentPage,
|
|
6765
|
+
" of ",
|
|
6766
|
+
totalPages
|
|
6767
|
+
] }),
|
|
6768
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
6769
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6770
|
+
Button,
|
|
6771
|
+
{
|
|
6772
|
+
variant: "outline",
|
|
6773
|
+
size: "sm",
|
|
6774
|
+
className: "h-8 w-8 p-0",
|
|
6775
|
+
onClick: () => handlePageChange(currentPage - 1),
|
|
6776
|
+
disabled: currentPage === 1,
|
|
6777
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "h-4 w-4" })
|
|
6778
|
+
}
|
|
6779
|
+
),
|
|
6780
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6781
|
+
Button,
|
|
6782
|
+
{
|
|
6783
|
+
variant: "outline",
|
|
6784
|
+
size: "sm",
|
|
6785
|
+
className: "h-8 w-8 p-0",
|
|
6786
|
+
onClick: () => handlePageChange(currentPage + 1),
|
|
6787
|
+
disabled: currentPage === totalPages,
|
|
6788
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4" })
|
|
6789
|
+
}
|
|
6790
|
+
)
|
|
6791
|
+
] })
|
|
6792
|
+
] })
|
|
6793
|
+
] }) })
|
|
6794
|
+
] }) }) })
|
|
6795
|
+
] });
|
|
6796
|
+
};
|
|
6797
|
+
var Alerts_default = Alerts;
|
|
6798
|
+
var Business = () => {
|
|
6799
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6800
|
+
DetailPageLayout,
|
|
6801
|
+
{
|
|
6802
|
+
title: "Business Management",
|
|
6803
|
+
description: "Manage business entities and their configurations",
|
|
6804
|
+
cards: [
|
|
6805
|
+
{
|
|
6806
|
+
key: "profile",
|
|
6807
|
+
component: BusinessProfileCard,
|
|
6808
|
+
expandOnEdit: true
|
|
6809
|
+
},
|
|
6810
|
+
{
|
|
6811
|
+
key: "status",
|
|
6812
|
+
component: BusinessStatusCard,
|
|
6813
|
+
expandOnEdit: true
|
|
6814
|
+
},
|
|
6815
|
+
{
|
|
6816
|
+
key: "contact",
|
|
6817
|
+
component: ContactInfoCard,
|
|
6818
|
+
expandOnEdit: true
|
|
6819
|
+
},
|
|
6820
|
+
{
|
|
6821
|
+
key: "banking",
|
|
6822
|
+
component: BankingDetailsCard,
|
|
6823
|
+
expandOnEdit: true
|
|
6824
|
+
}
|
|
6825
|
+
],
|
|
6826
|
+
actions: [
|
|
6827
|
+
{
|
|
6828
|
+
label: "Export Data",
|
|
6829
|
+
variant: "outline"
|
|
6830
|
+
},
|
|
6831
|
+
{
|
|
6832
|
+
label: "Edit Business",
|
|
6833
|
+
className: "bg-gradient-primary hover:opacity-90"
|
|
6834
|
+
}
|
|
6835
|
+
]
|
|
6836
|
+
}
|
|
6837
|
+
);
|
|
6838
|
+
};
|
|
6839
|
+
var Business_default = Business;
|
|
6840
|
+
var CreateBusiness = () => {
|
|
6841
|
+
const [businessType, setBusinessType] = React13.useState("");
|
|
6842
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6843
|
+
PageLayout,
|
|
6844
|
+
{
|
|
6845
|
+
title: "Create Business",
|
|
6846
|
+
description: "Create a new business entity with all required information",
|
|
6847
|
+
actions: [
|
|
6848
|
+
{ label: "Cancel", variant: "outline", onClick: () => {
|
|
6849
|
+
} },
|
|
6850
|
+
{ label: "Create Business", variant: "default", onClick: () => {
|
|
6851
|
+
} }
|
|
6852
|
+
],
|
|
6853
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
6854
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-6", children: [
|
|
6855
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border pb-4 mb-6", children: [
|
|
6856
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-foreground", children: "Business Information" }),
|
|
6857
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Basic business details and identification" })
|
|
6858
|
+
] }),
|
|
6859
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6", children: [
|
|
6860
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6861
|
+
EnhancedInput,
|
|
6862
|
+
{
|
|
6863
|
+
label: "Business Name",
|
|
6864
|
+
placeholder: "Enter business name",
|
|
6865
|
+
required: true
|
|
6866
|
+
}
|
|
6867
|
+
),
|
|
6868
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6869
|
+
EnhancedInput,
|
|
6870
|
+
{
|
|
6871
|
+
label: "Legal Name",
|
|
6872
|
+
placeholder: "Enter legal business name",
|
|
6873
|
+
hint: "Official registered business name"
|
|
6874
|
+
}
|
|
6875
|
+
),
|
|
6876
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
6877
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6878
|
+
EnhancedSelect,
|
|
6879
|
+
{
|
|
6880
|
+
label: "Business Type",
|
|
6881
|
+
placeholder: "Select business type",
|
|
6882
|
+
value: businessType,
|
|
6883
|
+
onValueChange: setBusinessType,
|
|
6884
|
+
options: [
|
|
6885
|
+
{ value: "corporation", label: "Corporation" },
|
|
6886
|
+
{ value: "llc", label: "LLC" },
|
|
6887
|
+
{ value: "partnership", label: "Partnership" },
|
|
6888
|
+
{ value: "sole_proprietorship", label: "Sole Proprietorship" }
|
|
6889
|
+
]
|
|
6890
|
+
}
|
|
6891
|
+
),
|
|
6892
|
+
businessType && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
6893
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", children: "Preview:" }),
|
|
6894
|
+
/* @__PURE__ */ jsxRuntime.jsx(BusinessTypeBadge, { type: businessType })
|
|
6895
|
+
] })
|
|
6896
|
+
] }),
|
|
6897
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6898
|
+
EnhancedInput,
|
|
6899
|
+
{
|
|
6900
|
+
label: "Tax ID (EIN)",
|
|
6901
|
+
placeholder: "12-3456789",
|
|
6902
|
+
hint: "Employer Identification Number",
|
|
6903
|
+
required: true
|
|
6904
|
+
}
|
|
6905
|
+
),
|
|
6906
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6907
|
+
EnhancedInput,
|
|
6908
|
+
{
|
|
6909
|
+
label: "Registration Number",
|
|
6910
|
+
placeholder: "Enter registration number",
|
|
6911
|
+
hint: "State business registration number"
|
|
6912
|
+
}
|
|
6913
|
+
),
|
|
6914
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6915
|
+
EnhancedSelect,
|
|
6916
|
+
{
|
|
6917
|
+
label: "Industry",
|
|
6918
|
+
placeholder: "Select industry",
|
|
6919
|
+
options: [
|
|
6920
|
+
{ value: "technology", label: "Technology" },
|
|
6921
|
+
{ value: "finance", label: "Finance" },
|
|
6922
|
+
{ value: "healthcare", label: "Healthcare" },
|
|
6923
|
+
{ value: "manufacturing", label: "Manufacturing" },
|
|
6924
|
+
{ value: "retail", label: "Retail" },
|
|
6925
|
+
{ value: "other", label: "Other" }
|
|
6926
|
+
]
|
|
6927
|
+
}
|
|
6928
|
+
)
|
|
6929
|
+
] })
|
|
6930
|
+
] }),
|
|
6931
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-6", children: [
|
|
6932
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border pb-4 mb-6", children: [
|
|
6933
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-foreground", children: "Contact Information" }),
|
|
6934
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Business address and contact details" })
|
|
6935
|
+
] }),
|
|
6936
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6", children: [
|
|
6937
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6938
|
+
EnhancedInput,
|
|
6939
|
+
{
|
|
6940
|
+
label: "Street Address",
|
|
6941
|
+
placeholder: "Enter street address",
|
|
6942
|
+
required: true
|
|
6943
|
+
}
|
|
6944
|
+
),
|
|
6945
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6946
|
+
EnhancedInput,
|
|
6947
|
+
{
|
|
6948
|
+
label: "City",
|
|
6949
|
+
placeholder: "Enter city",
|
|
6950
|
+
required: true
|
|
6951
|
+
}
|
|
6952
|
+
),
|
|
6953
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6954
|
+
EnhancedInput,
|
|
6955
|
+
{
|
|
6956
|
+
label: "State",
|
|
6957
|
+
placeholder: "Enter state",
|
|
6958
|
+
required: true
|
|
6959
|
+
}
|
|
6960
|
+
),
|
|
6961
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6962
|
+
EnhancedInput,
|
|
6963
|
+
{
|
|
6964
|
+
label: "Postal Code",
|
|
6965
|
+
placeholder: "12345",
|
|
6966
|
+
required: true
|
|
6967
|
+
}
|
|
6968
|
+
),
|
|
6969
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6970
|
+
EnhancedSelect,
|
|
6971
|
+
{
|
|
6972
|
+
label: "Country",
|
|
6973
|
+
placeholder: "Select country",
|
|
6974
|
+
options: [
|
|
6975
|
+
{ value: "US", label: "United States" },
|
|
6976
|
+
{ value: "CA", label: "Canada" },
|
|
6977
|
+
{ value: "GB", label: "United Kingdom" },
|
|
6978
|
+
{ value: "DE", label: "Germany" }
|
|
6979
|
+
]
|
|
6980
|
+
}
|
|
6981
|
+
),
|
|
6982
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6983
|
+
EnhancedInput,
|
|
6984
|
+
{
|
|
6985
|
+
label: "Phone Number",
|
|
6986
|
+
placeholder: "+1 (555) 123-4567",
|
|
6987
|
+
required: true
|
|
6988
|
+
}
|
|
6989
|
+
),
|
|
6990
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6991
|
+
EnhancedInput,
|
|
6992
|
+
{
|
|
6993
|
+
label: "Email Address",
|
|
6994
|
+
placeholder: "contact@business.com",
|
|
6995
|
+
type: "email",
|
|
6996
|
+
required: true
|
|
6997
|
+
}
|
|
6998
|
+
),
|
|
6999
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7000
|
+
EnhancedInput,
|
|
7001
|
+
{
|
|
7002
|
+
label: "Website",
|
|
7003
|
+
placeholder: "https://www.business.com",
|
|
7004
|
+
type: "url"
|
|
7005
|
+
}
|
|
7006
|
+
)
|
|
7007
|
+
] })
|
|
7008
|
+
] }),
|
|
7009
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-6", children: [
|
|
7010
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border pb-4 mb-6", children: [
|
|
7011
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-foreground", children: "Additional Information" }),
|
|
7012
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Optional business description and notes" })
|
|
7013
|
+
] }),
|
|
7014
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-6", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7015
|
+
EnhancedTextarea,
|
|
7016
|
+
{
|
|
7017
|
+
label: "Business Description",
|
|
7018
|
+
placeholder: "Describe your business activities and services",
|
|
7019
|
+
hint: "Brief description of what your business does"
|
|
7020
|
+
}
|
|
7021
|
+
) })
|
|
7022
|
+
] })
|
|
7023
|
+
] })
|
|
7024
|
+
}
|
|
7025
|
+
);
|
|
7026
|
+
};
|
|
7027
|
+
var Create_default = CreateBusiness;
|
|
7028
|
+
var Cases = () => {
|
|
7029
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7030
|
+
PageLayout,
|
|
7031
|
+
{
|
|
7032
|
+
title: "Cases",
|
|
7033
|
+
description: "Manage and track investigation cases",
|
|
7034
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-12 text-muted-foreground", children: "Cases content coming soon" })
|
|
7035
|
+
}
|
|
7036
|
+
);
|
|
7037
|
+
};
|
|
7038
|
+
var Cases_default = Cases;
|
|
7039
|
+
var CreateCounterparty = () => {
|
|
7040
|
+
const [counterpartyData, setCounterpartyData] = React13.useState(null);
|
|
7041
|
+
const handleBasicInfoChange = (data) => {
|
|
7042
|
+
setCounterpartyData(data);
|
|
7043
|
+
};
|
|
7044
|
+
const handleSubmit = () => {
|
|
7045
|
+
console.log("Creating counterparty with data:", counterpartyData);
|
|
7046
|
+
};
|
|
7047
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7048
|
+
PageLayout,
|
|
7049
|
+
{
|
|
7050
|
+
title: "Create Counterparty",
|
|
7051
|
+
description: "Create a new counterparty with all required information",
|
|
7052
|
+
actions: [
|
|
7053
|
+
{ label: "Cancel", variant: "outline", onClick: () => {
|
|
7054
|
+
} },
|
|
7055
|
+
{ label: "Create Counterparty", variant: "default", onClick: handleSubmit }
|
|
7056
|
+
],
|
|
7057
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
7058
|
+
/* @__PURE__ */ jsxRuntime.jsx(Card, { children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "p-6", children: /* @__PURE__ */ jsxRuntime.jsx(CounterpartyBasicInfo, { onDataChange: handleBasicInfoChange }) }) }),
|
|
7059
|
+
/* @__PURE__ */ jsxRuntime.jsx(Card, { children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "p-6", children: /* @__PURE__ */ jsxRuntime.jsx(PaymentInformationSection, {}) }) })
|
|
7060
|
+
] })
|
|
7061
|
+
}
|
|
7062
|
+
);
|
|
7063
|
+
};
|
|
7064
|
+
var Create_default2 = CreateCounterparty;
|
|
7065
|
+
var CounterpartyDomesticWire = () => {
|
|
7066
|
+
const { isEditing, handleToggleEdit, handleSave, handleCancel } = useEditState({});
|
|
7067
|
+
const [transferType, setTransferType] = React13.useState("DOMESTIC");
|
|
7068
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7069
|
+
PageLayout,
|
|
7070
|
+
{
|
|
7071
|
+
title: "Counterparty Domestic Wire",
|
|
7072
|
+
description: "Manage domestic wire transfer configurations and beneficiary information",
|
|
7073
|
+
actions: !isEditing ? [
|
|
7074
|
+
{ label: "Cancel", variant: "outline", onClick: () => {
|
|
7075
|
+
} },
|
|
7076
|
+
{ label: "Save Domestic Wire Configuration", variant: "default", onClick: () => {
|
|
7077
|
+
} }
|
|
7078
|
+
] : void 0,
|
|
7079
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-8", children: [
|
|
7080
|
+
/* @__PURE__ */ jsxRuntime.jsx(BasicInfoCard, {}),
|
|
7081
|
+
/* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "my-8" }),
|
|
7082
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7083
|
+
FormCard,
|
|
7084
|
+
{
|
|
7085
|
+
title: "Domestic Wire Transfer Configuration",
|
|
7086
|
+
description: "Configure domestic wire transfer settings and beneficiary information",
|
|
7087
|
+
headerActions: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: isEditing ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7088
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7089
|
+
EnhancedSelect,
|
|
7090
|
+
{
|
|
7091
|
+
value: transferType,
|
|
7092
|
+
onValueChange: setTransferType,
|
|
7093
|
+
options: [
|
|
7094
|
+
{ value: "DOMESTIC", label: "DOMESTIC" },
|
|
7095
|
+
{ value: "INTERNATIONAL", label: "INTERNATIONAL" }
|
|
7096
|
+
],
|
|
7097
|
+
placeholder: "Select transfer type"
|
|
7098
|
+
}
|
|
7099
|
+
),
|
|
7100
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "outline", size: "sm", onClick: handleCancel, children: "Cancel" }),
|
|
7101
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", onClick: handleSave, children: "Save" })
|
|
7102
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7103
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-secondary text-secondary-foreground", children: transferType }),
|
|
7104
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "icon", onClick: handleToggleEdit, className: "text-primary hover:text-primary/80 hover:bg-primary/10", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Edit, { className: "h-4 w-4" }) })
|
|
7105
|
+
] }) }),
|
|
7106
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-6", children: [
|
|
7107
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReceiverCard, { isEditing, hideActions: true }),
|
|
7108
|
+
/* @__PURE__ */ jsxRuntime.jsx(BeneficiaryCard, { isEditing, hideActions: true })
|
|
7109
|
+
] })
|
|
7110
|
+
}
|
|
7111
|
+
)
|
|
7112
|
+
] })
|
|
7113
|
+
}
|
|
7114
|
+
);
|
|
7115
|
+
};
|
|
7116
|
+
var DomesticWire_default = CounterpartyDomesticWire;
|
|
7117
|
+
var CounterpartyManage = () => {
|
|
7118
|
+
const {
|
|
7119
|
+
isEditing: isBasicEditing,
|
|
7120
|
+
handleToggleEdit: handleBasicToggleEdit
|
|
7121
|
+
} = useEditState({});
|
|
7122
|
+
const {
|
|
7123
|
+
isEditing: isWireEditing,
|
|
7124
|
+
handleToggleEdit: handleWireToggleEdit
|
|
7125
|
+
} = useEditState({});
|
|
7126
|
+
const {
|
|
7127
|
+
isEditing: isACHEditing,
|
|
7128
|
+
handleToggleEdit: handleACHToggleEdit
|
|
7129
|
+
} = useEditState({});
|
|
7130
|
+
const pageCards = [
|
|
7131
|
+
{
|
|
7132
|
+
key: "basic-info",
|
|
7133
|
+
component: BasicInfoSection,
|
|
7134
|
+
props: {
|
|
7135
|
+
isEditing: isBasicEditing,
|
|
7136
|
+
onToggleEdit: handleBasicToggleEdit
|
|
7137
|
+
}
|
|
7138
|
+
},
|
|
7139
|
+
{
|
|
7140
|
+
key: "wire-transfer",
|
|
7141
|
+
component: WireTransferSection,
|
|
7142
|
+
props: {
|
|
7143
|
+
isEditing: isWireEditing,
|
|
7144
|
+
onToggleEdit: handleWireToggleEdit
|
|
7145
|
+
}
|
|
7146
|
+
},
|
|
7147
|
+
{
|
|
7148
|
+
key: "ach-transfer",
|
|
7149
|
+
component: ACHTransferSection,
|
|
7150
|
+
props: {
|
|
7151
|
+
isEditing: isACHEditing,
|
|
7152
|
+
onToggleEdit: handleACHToggleEdit
|
|
7153
|
+
}
|
|
7154
|
+
}
|
|
7155
|
+
];
|
|
7156
|
+
const pageActions = !isBasicEditing && !isWireEditing && !isACHEditing ? [
|
|
7157
|
+
{
|
|
7158
|
+
label: "Cancel",
|
|
7159
|
+
variant: "outline",
|
|
7160
|
+
onClick: () => {
|
|
7161
|
+
}
|
|
7162
|
+
},
|
|
7163
|
+
{
|
|
7164
|
+
label: "Save Configuration",
|
|
7165
|
+
variant: "default",
|
|
7166
|
+
onClick: () => {
|
|
7167
|
+
}
|
|
7168
|
+
}
|
|
7169
|
+
] : [];
|
|
7170
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7171
|
+
PageLayout,
|
|
7172
|
+
{
|
|
7173
|
+
title: "Counterparty Management",
|
|
7174
|
+
description: "Manage counterparty details and payment configurations",
|
|
7175
|
+
mode: "cards",
|
|
7176
|
+
cards: pageCards,
|
|
7177
|
+
actions: pageActions,
|
|
7178
|
+
maxWidth: "lg",
|
|
7179
|
+
gridCols: 1
|
|
7180
|
+
}
|
|
7181
|
+
);
|
|
7182
|
+
};
|
|
7183
|
+
var Manage_default = CounterpartyManage;
|
|
7184
|
+
var Dashboard = () => {
|
|
7185
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7186
|
+
PageLayout,
|
|
7187
|
+
{
|
|
7188
|
+
title: "Dashboard",
|
|
7189
|
+
description: "Overview of your system metrics and activity",
|
|
7190
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-12 text-muted-foreground", children: "Dashboard content coming soon" })
|
|
7191
|
+
}
|
|
7192
|
+
);
|
|
7193
|
+
};
|
|
7194
|
+
var Dashboard_default = Dashboard;
|
|
7195
|
+
var NotFound = () => {
|
|
7196
|
+
const location = reactRouterDom.useLocation();
|
|
7197
|
+
React13.useEffect(() => {
|
|
7198
|
+
console.error(
|
|
7199
|
+
"404 Error: User attempted to access non-existent route:",
|
|
7200
|
+
location.pathname
|
|
7201
|
+
);
|
|
7202
|
+
}, [location.pathname]);
|
|
7203
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-screen flex items-center justify-center bg-gray-100", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
|
|
7204
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-4xl font-bold mb-4", children: "404" }),
|
|
7205
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xl text-gray-600 mb-4", children: "Oops! Page not found" }),
|
|
7206
|
+
/* @__PURE__ */ jsxRuntime.jsx("a", { href: "/", className: "text-blue-500 hover:text-blue-700 underline", children: "Return to Home" })
|
|
7207
|
+
] }) });
|
|
7208
|
+
};
|
|
7209
|
+
var NotFound_default = NotFound;
|
|
7210
|
+
|
|
7211
|
+
// src/lib/mock-data/transaction-data.ts
|
|
7212
|
+
var mockTransactions = [
|
|
7213
|
+
{
|
|
7214
|
+
id: "1",
|
|
7215
|
+
created: "2025-10-01 00:16",
|
|
7216
|
+
accountNumber: "126713605718",
|
|
7217
|
+
amount: -7293.32,
|
|
7218
|
+
customer: "Rise Works Inc",
|
|
7219
|
+
counterparty: "VEDANT JAYESHKUMAR PATI",
|
|
7220
|
+
description: "4NnuJKyD9a8LUmkm",
|
|
7221
|
+
transactionType: "Ach Originator Credit",
|
|
7222
|
+
status: "PENDING",
|
|
7223
|
+
updated: "2025-10-01 00:16",
|
|
7224
|
+
achDetails: {
|
|
7225
|
+
type: "ACH Credit",
|
|
7226
|
+
originatorName: "Rise Works Inc",
|
|
7227
|
+
originatorAccountNumber: "126713605718",
|
|
7228
|
+
receiverName: "VEDANT JAYESHKUMAR PATI",
|
|
7229
|
+
receiverAccountNumber: "9876543210",
|
|
7230
|
+
receiverRoutingNumber: "021000021",
|
|
7231
|
+
amount: 7293.32,
|
|
7232
|
+
secCode: "CCD",
|
|
7233
|
+
companyEntryDescription: "PAYROLL",
|
|
7234
|
+
companyDiscretionaryData: "4NnuJKyD9a8LUmkm",
|
|
7235
|
+
individualIdNumber: "1234567890",
|
|
7236
|
+
individualName: "VEDANT JAYESHKUMAR PATI",
|
|
7237
|
+
traceNumber: "021000021234567",
|
|
7238
|
+
raw: {
|
|
7239
|
+
recordType: "6",
|
|
7240
|
+
transactionCode: "22",
|
|
7241
|
+
receivingDFIIdentification: "02100002",
|
|
7242
|
+
checkDigit: "1",
|
|
7243
|
+
DFIAccountNumber: "9876543210",
|
|
7244
|
+
amount: "0000729332",
|
|
7245
|
+
individualIdentificationNumber: "1234567890",
|
|
7246
|
+
individualName: "VEDANT JAYESHKUMAR PA",
|
|
7247
|
+
discretionaryData: " ",
|
|
7248
|
+
addendaRecordIndicator: "0",
|
|
7249
|
+
traceNumber: "021000021234567",
|
|
7250
|
+
batchHeader: {
|
|
7251
|
+
recordType: "5",
|
|
7252
|
+
serviceClassCode: "200",
|
|
7253
|
+
companyName: "RISE WORKS INC",
|
|
7254
|
+
companyDiscretionaryData: "4NnuJKyD9a8LU",
|
|
7255
|
+
companyIdentification: "1234567890",
|
|
7256
|
+
standardEntryClassCode: "CCD",
|
|
7257
|
+
companyEntryDescription: "PAYROLL",
|
|
7258
|
+
companyDescriptiveDate: "251001",
|
|
7259
|
+
effectiveEntryDate: "251001",
|
|
7260
|
+
settlementDate: " ",
|
|
7261
|
+
originatorStatusCode: "1",
|
|
7262
|
+
originatingDFIIdentification: "02100002",
|
|
7263
|
+
batchNumber: "0000001"
|
|
7264
|
+
}
|
|
7265
|
+
}
|
|
7266
|
+
}
|
|
7267
|
+
},
|
|
7268
|
+
{
|
|
7269
|
+
id: "2",
|
|
7270
|
+
created: "2025-10-01 00:09",
|
|
7271
|
+
accountNumber: "899606565333",
|
|
7272
|
+
amount: 0.5,
|
|
7273
|
+
customer: "SSB Bank",
|
|
7274
|
+
counterparty: "Maung Lwin",
|
|
7275
|
+
description: "ACH Fee",
|
|
7276
|
+
transactionType: "Fee Ach Transaction",
|
|
7277
|
+
status: "POSTED",
|
|
7278
|
+
updated: "2025-10-01 00:09"
|
|
7279
|
+
},
|
|
7280
|
+
{
|
|
7281
|
+
id: "3",
|
|
7282
|
+
created: "2025-09-30 23:45",
|
|
7283
|
+
accountNumber: "445821903456",
|
|
7284
|
+
amount: 15e3,
|
|
7285
|
+
customer: "Tech Solutions LLC",
|
|
7286
|
+
counterparty: "Global Suppliers Inc",
|
|
7287
|
+
description: "Invoice Payment #INV-2024-089",
|
|
7288
|
+
transactionType: "Wire Domestic Credit",
|
|
7289
|
+
status: "POSTED",
|
|
7290
|
+
updated: "2025-10-01 00:12",
|
|
7291
|
+
wireDetails: {
|
|
7292
|
+
type: "Domestic Wire",
|
|
7293
|
+
originatorName: "Tech Solutions LLC",
|
|
7294
|
+
originatorAccountNumber: "445821903456",
|
|
7295
|
+
originatorAddress: "123 Tech Street, San Francisco, CA 94105",
|
|
7296
|
+
beneficiaryName: "Global Suppliers Inc",
|
|
7297
|
+
beneficiaryAccountNumber: "998877665544",
|
|
7298
|
+
beneficiaryAddress: "456 Supply Avenue, New York, NY 10001",
|
|
7299
|
+
beneficiaryFIName: "Chase Bank",
|
|
7300
|
+
beneficiaryFIRoutingNumber: "021000021",
|
|
7301
|
+
beneficiaryFIAddress: "270 Park Avenue, New York, NY 10017",
|
|
7302
|
+
originatorFIName: "Wells Fargo Bank",
|
|
7303
|
+
originatorFIRoutingNumber: "121000248",
|
|
7304
|
+
originatorFIAddress: "420 Montgomery Street, San Francisco, CA 94104",
|
|
7305
|
+
intermediaryFIName: "Bank of America",
|
|
7306
|
+
intermediaryFIRoutingNumber: "026009593",
|
|
7307
|
+
intermediaryFIAddress: "100 Federal Street, Boston, MA 02110",
|
|
7308
|
+
raw: {
|
|
7309
|
+
messageType: "MT103",
|
|
7310
|
+
sender: "WFBIUS6SXXX",
|
|
7311
|
+
receiver: "CHASUS33XXX",
|
|
7312
|
+
transactionReference: "INV-2024-089-TXN-001",
|
|
7313
|
+
relatedReference: "INV-2024-089",
|
|
7314
|
+
bankOperationCode: "CRED",
|
|
7315
|
+
instructionCode: "CHQB",
|
|
7316
|
+
valueDate: "2025-09-30",
|
|
7317
|
+
currency: "USD",
|
|
7318
|
+
amount: "15000.00",
|
|
7319
|
+
orderingCustomer: {
|
|
7320
|
+
account: "445821903456",
|
|
7321
|
+
name: "Tech Solutions LLC",
|
|
7322
|
+
address: [
|
|
7323
|
+
"123 Tech Street",
|
|
7324
|
+
"San Francisco, CA 94105",
|
|
7325
|
+
"United States"
|
|
7326
|
+
]
|
|
7327
|
+
},
|
|
7328
|
+
orderingInstitution: {
|
|
7329
|
+
bic: "WFBIUS6SXXX",
|
|
7330
|
+
name: "Wells Fargo Bank N.A.",
|
|
7331
|
+
address: [
|
|
7332
|
+
"420 Montgomery Street",
|
|
7333
|
+
"San Francisco, CA 94104"
|
|
7334
|
+
]
|
|
7335
|
+
},
|
|
7336
|
+
intermediaryInstitution: {
|
|
7337
|
+
bic: "BOFAUS3NXXX",
|
|
7338
|
+
name: "Bank of America N.A.",
|
|
7339
|
+
clearingCode: "026009593",
|
|
7340
|
+
address: [
|
|
7341
|
+
"100 Federal Street",
|
|
7342
|
+
"Boston, MA 02110"
|
|
7343
|
+
]
|
|
7344
|
+
},
|
|
7345
|
+
beneficiaryInstitution: {
|
|
7346
|
+
bic: "CHASUS33XXX",
|
|
7347
|
+
name: "JPMorgan Chase Bank N.A.",
|
|
7348
|
+
clearingCode: "021000021",
|
|
7349
|
+
address: [
|
|
7350
|
+
"270 Park Avenue",
|
|
7351
|
+
"New York, NY 10017"
|
|
7352
|
+
]
|
|
7353
|
+
},
|
|
7354
|
+
beneficiaryCustomer: {
|
|
7355
|
+
account: "998877665544",
|
|
7356
|
+
name: "Global Suppliers Inc",
|
|
7357
|
+
address: [
|
|
7358
|
+
"456 Supply Avenue",
|
|
7359
|
+
"New York, NY 10001",
|
|
7360
|
+
"United States"
|
|
7361
|
+
]
|
|
7362
|
+
},
|
|
7363
|
+
remittanceInformation: "Invoice Payment for INV-2024-089 - Equipment Purchase",
|
|
7364
|
+
regulatoryReporting: {
|
|
7365
|
+
code: "BENEFRES",
|
|
7366
|
+
country: "US",
|
|
7367
|
+
narrative: "Payment for goods"
|
|
7368
|
+
},
|
|
7369
|
+
senderToReceiverInformation: [
|
|
7370
|
+
"Payment for invoice INV-2024-089",
|
|
7371
|
+
"Equipment and supplies purchase",
|
|
7372
|
+
"Net 30 terms - On time payment"
|
|
7373
|
+
],
|
|
7374
|
+
chargeDetails: "OUR"
|
|
7375
|
+
}
|
|
7376
|
+
}
|
|
7377
|
+
},
|
|
7378
|
+
{
|
|
7379
|
+
id: "4",
|
|
7380
|
+
created: "2025-09-30 22:18",
|
|
7381
|
+
accountNumber: "778901234567",
|
|
7382
|
+
amount: -2500.75,
|
|
7383
|
+
customer: "Metro Business Group",
|
|
7384
|
+
counterparty: "Pacific Trading Co",
|
|
7385
|
+
description: "Vendor Payment",
|
|
7386
|
+
transactionType: "Ach Originator Debit",
|
|
7387
|
+
status: "POSTED",
|
|
7388
|
+
updated: "2025-09-30 23:01"
|
|
7389
|
+
},
|
|
7390
|
+
{
|
|
7391
|
+
id: "5",
|
|
7392
|
+
created: "2025-09-30 21:05",
|
|
7393
|
+
accountNumber: "334455667788",
|
|
7394
|
+
amount: 500,
|
|
7395
|
+
customer: "Sunrise Enterprises",
|
|
7396
|
+
counterparty: "John Mitchell",
|
|
7397
|
+
description: "Contractor Payment",
|
|
7398
|
+
transactionType: "Ach Originator Credit",
|
|
7399
|
+
status: "PENDING",
|
|
7400
|
+
updated: "2025-09-30 21:05"
|
|
7401
|
+
},
|
|
7402
|
+
{
|
|
7403
|
+
id: "6",
|
|
7404
|
+
created: "2025-09-30 19:30",
|
|
7405
|
+
accountNumber: "998877665544",
|
|
7406
|
+
amount: -125e3,
|
|
7407
|
+
customer: "Real Estate Holdings",
|
|
7408
|
+
counterparty: "Property Management LLC",
|
|
7409
|
+
description: "Monthly Rent Payment",
|
|
7410
|
+
transactionType: "Wire Domestic Debit",
|
|
7411
|
+
status: "POSTED",
|
|
7412
|
+
updated: "2025-09-30 20:15"
|
|
7413
|
+
},
|
|
7414
|
+
{
|
|
7415
|
+
id: "7",
|
|
7416
|
+
created: "2025-09-30 17:22",
|
|
7417
|
+
accountNumber: "556677889900",
|
|
7418
|
+
amount: 3,
|
|
7419
|
+
customer: "First National Bank",
|
|
7420
|
+
counterparty: "Sarah Johnson",
|
|
7421
|
+
description: "Wire Transfer Fee",
|
|
7422
|
+
transactionType: "Fee Wire Transaction",
|
|
7423
|
+
status: "POSTED",
|
|
7424
|
+
updated: "2025-09-30 17:22"
|
|
7425
|
+
},
|
|
7426
|
+
{
|
|
7427
|
+
id: "8",
|
|
7428
|
+
created: "2025-09-30 15:40",
|
|
7429
|
+
accountNumber: "223344556677",
|
|
7430
|
+
amount: 8750.5,
|
|
7431
|
+
customer: "Innovation Labs Inc",
|
|
7432
|
+
counterparty: "Research Partners",
|
|
7433
|
+
description: "R&D Funding Transfer",
|
|
7434
|
+
transactionType: "Ach Originator Credit",
|
|
7435
|
+
status: "FAILED",
|
|
7436
|
+
updated: "2025-09-30 16:10"
|
|
7437
|
+
}
|
|
7438
|
+
];
|
|
7439
|
+
var mockTransactionTimeline = [
|
|
7440
|
+
{
|
|
7441
|
+
id: "1",
|
|
7442
|
+
action: "Transaction Created",
|
|
7443
|
+
user: "System",
|
|
7444
|
+
details: "Transaction initiated via API",
|
|
7445
|
+
status: "Pending",
|
|
7446
|
+
timestamp: "2025-10-01 00:16:23"
|
|
7447
|
+
},
|
|
7448
|
+
{
|
|
7449
|
+
id: "2",
|
|
7450
|
+
action: "Validation Completed",
|
|
7451
|
+
user: "System",
|
|
7452
|
+
details: "All validation checks passed",
|
|
7453
|
+
timestamp: "2025-10-01 00:16:45"
|
|
7454
|
+
},
|
|
7455
|
+
{
|
|
7456
|
+
id: "3",
|
|
7457
|
+
action: "Assigned for Review",
|
|
7458
|
+
user: "approverdev",
|
|
7459
|
+
details: "Transaction assigned to compliance team",
|
|
7460
|
+
status: "In Progress",
|
|
7461
|
+
timestamp: "2025-10-01 00:17:12"
|
|
7462
|
+
},
|
|
7463
|
+
{
|
|
7464
|
+
id: "4",
|
|
7465
|
+
action: "Compliance Review",
|
|
7466
|
+
user: "Sarah Johnson",
|
|
7467
|
+
details: "AML and sanctions screening completed",
|
|
7468
|
+
timestamp: "2025-10-01 00:18:30"
|
|
7469
|
+
},
|
|
7470
|
+
{
|
|
7471
|
+
id: "5",
|
|
7472
|
+
action: "Approved",
|
|
7473
|
+
user: "Michael Chen",
|
|
7474
|
+
details: "Transaction approved for processing",
|
|
7475
|
+
status: "Closed",
|
|
7476
|
+
timestamp: "2025-10-01 00:19:45"
|
|
7477
|
+
}
|
|
7478
|
+
];
|
|
7479
|
+
var TransactionHistory = () => {
|
|
7480
|
+
const navigate = reactRouterDom.useNavigate();
|
|
7481
|
+
const [currentPage, setCurrentPage] = React13.useState(1);
|
|
7482
|
+
const [rowsPerPage, setRowsPerPage] = React13.useState(100);
|
|
7483
|
+
const [filters, setFilters] = React13.useState({
|
|
7484
|
+
accountNumber: "",
|
|
7485
|
+
product: "",
|
|
7486
|
+
customerId: "",
|
|
7487
|
+
counterpartyId: "",
|
|
7488
|
+
settlementFileName: "",
|
|
7489
|
+
originalFileName: "",
|
|
7490
|
+
requesterIpAddress: "",
|
|
7491
|
+
requesterUsername: "",
|
|
7492
|
+
wireFileHandle: "",
|
|
7493
|
+
paymentId: "",
|
|
7494
|
+
transactionType: "",
|
|
7495
|
+
transactionStatus: "",
|
|
7496
|
+
processingStatus: "",
|
|
7497
|
+
direction: "",
|
|
7498
|
+
minAmount: "",
|
|
7499
|
+
maxAmount: "",
|
|
7500
|
+
creationDateStart: void 0,
|
|
7501
|
+
creationDateEnd: void 0,
|
|
7502
|
+
postDateStart: void 0,
|
|
7503
|
+
postDateEnd: void 0
|
|
7504
|
+
});
|
|
7505
|
+
const handleFilterChange = (field, value) => {
|
|
7506
|
+
setFilters((prev) => ({ ...prev, [field]: value }));
|
|
7507
|
+
};
|
|
7508
|
+
const applyFilters = () => {
|
|
7509
|
+
console.log("Applying filters:", filters);
|
|
7510
|
+
};
|
|
7511
|
+
const resetFilters = () => {
|
|
7512
|
+
setFilters({
|
|
7513
|
+
accountNumber: "",
|
|
7514
|
+
product: "",
|
|
7515
|
+
customerId: "",
|
|
7516
|
+
counterpartyId: "",
|
|
7517
|
+
settlementFileName: "",
|
|
7518
|
+
originalFileName: "",
|
|
7519
|
+
requesterIpAddress: "",
|
|
7520
|
+
requesterUsername: "",
|
|
7521
|
+
wireFileHandle: "",
|
|
7522
|
+
paymentId: "",
|
|
7523
|
+
transactionType: "",
|
|
7524
|
+
transactionStatus: "",
|
|
7525
|
+
processingStatus: "",
|
|
7526
|
+
direction: "",
|
|
7527
|
+
minAmount: "",
|
|
7528
|
+
maxAmount: "",
|
|
7529
|
+
creationDateStart: void 0,
|
|
7530
|
+
creationDateEnd: void 0,
|
|
7531
|
+
postDateStart: void 0,
|
|
7532
|
+
postDateEnd: void 0
|
|
7533
|
+
});
|
|
7534
|
+
};
|
|
7535
|
+
const totalPages = Math.ceil(mockTransactions.length / rowsPerPage);
|
|
7536
|
+
const startIndex = (currentPage - 1) * rowsPerPage;
|
|
7537
|
+
const endIndex = startIndex + rowsPerPage;
|
|
7538
|
+
const paginatedTransactions = mockTransactions.slice(startIndex, endIndex);
|
|
7539
|
+
const handlePageChange = (newPage) => {
|
|
7540
|
+
if (newPage >= 1 && newPage <= totalPages) {
|
|
7541
|
+
setCurrentPage(newPage);
|
|
7542
|
+
}
|
|
7543
|
+
};
|
|
7544
|
+
const handleRowsPerPageChange = (value) => {
|
|
7545
|
+
setRowsPerPage(value);
|
|
7546
|
+
setCurrentPage(1);
|
|
7547
|
+
};
|
|
7548
|
+
const formatCurrency = (value) => {
|
|
7549
|
+
const formatted = new Intl.NumberFormat("en-US", {
|
|
7550
|
+
style: "currency",
|
|
7551
|
+
currency: "USD",
|
|
7552
|
+
minimumFractionDigits: 2
|
|
7553
|
+
}).format(value);
|
|
7554
|
+
return formatted;
|
|
7555
|
+
};
|
|
7556
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-screen bg-gradient-subtle", children: [
|
|
7557
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container mx-auto px-4 py-4 max-w-none", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
7558
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-3xl font-bold text-foreground", children: "Transaction History" }),
|
|
7559
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Sheet, { children: [
|
|
7560
|
+
/* @__PURE__ */ jsxRuntime.jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "outline", className: "gap-2", children: [
|
|
7561
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Filter, { className: "h-4 w-4" }),
|
|
7562
|
+
"Filters"
|
|
7563
|
+
] }) }),
|
|
7564
|
+
/* @__PURE__ */ jsxRuntime.jsxs(SheetContent, { side: "right", className: "w-full sm:max-w-xl overflow-y-auto", children: [
|
|
7565
|
+
/* @__PURE__ */ jsxRuntime.jsx(SheetHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { children: "Transaction Filters" }) }),
|
|
7566
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6 py-6", children: [
|
|
7567
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
7568
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7569
|
+
EnhancedInput,
|
|
7570
|
+
{
|
|
7571
|
+
label: "Account Number",
|
|
7572
|
+
value: filters.accountNumber,
|
|
7573
|
+
onChange: (e) => handleFilterChange("accountNumber", e.target.value),
|
|
7574
|
+
placeholder: "Enter account number"
|
|
7575
|
+
}
|
|
7576
|
+
),
|
|
7577
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7578
|
+
EnhancedSelect,
|
|
7579
|
+
{
|
|
7580
|
+
label: "Product",
|
|
7581
|
+
value: filters.product,
|
|
7582
|
+
onValueChange: (value) => handleFilterChange("product", value),
|
|
7583
|
+
placeholder: "Select product",
|
|
7584
|
+
options: [
|
|
7585
|
+
{ value: "wire", label: "Wire" },
|
|
7586
|
+
{ value: "ach", label: "ACH" },
|
|
7587
|
+
{ value: "check", label: "Check" }
|
|
7588
|
+
]
|
|
7589
|
+
}
|
|
7590
|
+
)
|
|
7591
|
+
] }),
|
|
7592
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
7593
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7594
|
+
EnhancedInput,
|
|
7595
|
+
{
|
|
7596
|
+
label: "Customer ID",
|
|
7597
|
+
value: filters.customerId,
|
|
7598
|
+
onChange: (e) => handleFilterChange("customerId", e.target.value),
|
|
7599
|
+
placeholder: "Enter customer ID"
|
|
7600
|
+
}
|
|
7601
|
+
),
|
|
7602
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7603
|
+
EnhancedInput,
|
|
7604
|
+
{
|
|
7605
|
+
label: "Counterparty ID",
|
|
7606
|
+
value: filters.counterpartyId,
|
|
7607
|
+
onChange: (e) => handleFilterChange("counterpartyId", e.target.value),
|
|
7608
|
+
placeholder: "Enter counterparty ID"
|
|
7609
|
+
}
|
|
7610
|
+
)
|
|
7611
|
+
] }),
|
|
7612
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7613
|
+
EnhancedInput,
|
|
7614
|
+
{
|
|
7615
|
+
label: "Settlement File Name",
|
|
7616
|
+
value: filters.settlementFileName,
|
|
7617
|
+
onChange: (e) => handleFilterChange("settlementFileName", e.target.value),
|
|
7618
|
+
placeholder: "Enter settlement file name"
|
|
7619
|
+
}
|
|
7620
|
+
),
|
|
7621
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7622
|
+
EnhancedInput,
|
|
7623
|
+
{
|
|
7624
|
+
label: "Original File Name",
|
|
7625
|
+
value: filters.originalFileName,
|
|
7626
|
+
onChange: (e) => handleFilterChange("originalFileName", e.target.value),
|
|
7627
|
+
placeholder: "Enter original file name"
|
|
7628
|
+
}
|
|
7629
|
+
),
|
|
7630
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7631
|
+
EnhancedInput,
|
|
7632
|
+
{
|
|
7633
|
+
label: "Requester IP Address",
|
|
7634
|
+
value: filters.requesterIpAddress,
|
|
7635
|
+
onChange: (e) => handleFilterChange("requesterIpAddress", e.target.value),
|
|
7636
|
+
placeholder: "Enter IP address"
|
|
7637
|
+
}
|
|
7638
|
+
),
|
|
7639
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7640
|
+
EnhancedInput,
|
|
7641
|
+
{
|
|
7642
|
+
label: "Requester Username",
|
|
7643
|
+
value: filters.requesterUsername,
|
|
7644
|
+
onChange: (e) => handleFilterChange("requesterUsername", e.target.value),
|
|
7645
|
+
placeholder: "Enter username"
|
|
7646
|
+
}
|
|
7647
|
+
),
|
|
7648
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7649
|
+
EnhancedInput,
|
|
7650
|
+
{
|
|
7651
|
+
label: "Wire File Handle",
|
|
7652
|
+
value: filters.wireFileHandle,
|
|
7653
|
+
onChange: (e) => handleFilterChange("wireFileHandle", e.target.value),
|
|
7654
|
+
placeholder: "Enter wire file handle"
|
|
7655
|
+
}
|
|
7656
|
+
),
|
|
7657
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7658
|
+
EnhancedInput,
|
|
7659
|
+
{
|
|
7660
|
+
label: "Payment ID",
|
|
7661
|
+
value: filters.paymentId,
|
|
7662
|
+
onChange: (e) => handleFilterChange("paymentId", e.target.value),
|
|
7663
|
+
placeholder: "Enter payment ID"
|
|
7664
|
+
}
|
|
7665
|
+
),
|
|
7666
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7667
|
+
EnhancedSelect,
|
|
7668
|
+
{
|
|
7669
|
+
label: "Transaction Type",
|
|
7670
|
+
value: filters.transactionType,
|
|
7671
|
+
onValueChange: (value) => handleFilterChange("transactionType", value),
|
|
7672
|
+
placeholder: "Select transaction type",
|
|
7673
|
+
options: [
|
|
7674
|
+
{ value: "ach_credit", label: "ACH Credit" },
|
|
7675
|
+
{ value: "ach_debit", label: "ACH Debit" },
|
|
7676
|
+
{ value: "wire_domestic", label: "Wire Domestic" },
|
|
7677
|
+
{ value: "wire_international", label: "Wire International" }
|
|
7678
|
+
]
|
|
7679
|
+
}
|
|
7680
|
+
),
|
|
7681
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7682
|
+
EnhancedSelect,
|
|
7683
|
+
{
|
|
7684
|
+
label: "Transaction Status",
|
|
7685
|
+
value: filters.transactionStatus,
|
|
7686
|
+
onValueChange: (value) => handleFilterChange("transactionStatus", value),
|
|
7687
|
+
placeholder: "Select transaction status",
|
|
7688
|
+
options: [
|
|
7689
|
+
{ value: "PENDING", label: "Pending" },
|
|
7690
|
+
{ value: "POSTED", label: "Posted" },
|
|
7691
|
+
{ value: "FAILED", label: "Failed" },
|
|
7692
|
+
{ value: "CANCELLED", label: "Cancelled" }
|
|
7693
|
+
]
|
|
7694
|
+
}
|
|
7695
|
+
),
|
|
7696
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7697
|
+
EnhancedSelect,
|
|
7698
|
+
{
|
|
7699
|
+
label: "Processing Status",
|
|
7700
|
+
value: filters.processingStatus,
|
|
7701
|
+
onValueChange: (value) => handleFilterChange("processingStatus", value),
|
|
7702
|
+
placeholder: "Select processing status",
|
|
7703
|
+
options: [
|
|
7704
|
+
{ value: "processing", label: "Processing" },
|
|
7705
|
+
{ value: "completed", label: "Completed" },
|
|
7706
|
+
{ value: "error", label: "Error" }
|
|
7707
|
+
]
|
|
7708
|
+
}
|
|
7709
|
+
),
|
|
7710
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7711
|
+
EnhancedSelect,
|
|
7712
|
+
{
|
|
7713
|
+
label: "Direction",
|
|
7714
|
+
value: filters.direction,
|
|
7715
|
+
onValueChange: (value) => handleFilterChange("direction", value),
|
|
7716
|
+
placeholder: "Select direction",
|
|
7717
|
+
options: [
|
|
7718
|
+
{ value: "credit", label: "Credit" },
|
|
7719
|
+
{ value: "debit", label: "Debit" }
|
|
7720
|
+
]
|
|
7721
|
+
}
|
|
7722
|
+
),
|
|
7723
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
7724
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7725
|
+
EnhancedInput,
|
|
7726
|
+
{
|
|
7727
|
+
label: "Min Amount",
|
|
7728
|
+
type: "number",
|
|
7729
|
+
value: filters.minAmount,
|
|
7730
|
+
onChange: (e) => handleFilterChange("minAmount", e.target.value),
|
|
7731
|
+
placeholder: "0.00"
|
|
7732
|
+
}
|
|
7733
|
+
),
|
|
7734
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7735
|
+
EnhancedInput,
|
|
7736
|
+
{
|
|
7737
|
+
label: "Max Amount",
|
|
7738
|
+
type: "number",
|
|
7739
|
+
value: filters.maxAmount,
|
|
7740
|
+
onChange: (e) => handleFilterChange("maxAmount", e.target.value),
|
|
7741
|
+
placeholder: "0.00"
|
|
7742
|
+
}
|
|
7743
|
+
)
|
|
7744
|
+
] }),
|
|
7745
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
7746
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
7747
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: "Creation Date Start" }),
|
|
7748
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Popover, { children: [
|
|
7749
|
+
/* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7750
|
+
Button,
|
|
7751
|
+
{
|
|
7752
|
+
variant: "outline",
|
|
7753
|
+
className: cn(
|
|
7754
|
+
"w-full justify-start text-left font-normal",
|
|
7755
|
+
!filters.creationDateStart && "text-muted-foreground"
|
|
7756
|
+
),
|
|
7757
|
+
children: [
|
|
7758
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Calendar, { className: "mr-2 h-4 w-4" }),
|
|
7759
|
+
filters.creationDateStart ? dateFns.format(filters.creationDateStart, "MM/dd/yyyy") : /* @__PURE__ */ jsxRuntime.jsx("span", { children: "MM/DD/YYYY" })
|
|
7760
|
+
]
|
|
7761
|
+
}
|
|
7762
|
+
) }),
|
|
7763
|
+
/* @__PURE__ */ jsxRuntime.jsx(PopoverContent, { className: "w-auto p-0 bg-background z-50", align: "start", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7764
|
+
Calendar,
|
|
7765
|
+
{
|
|
7766
|
+
mode: "single",
|
|
7767
|
+
selected: filters.creationDateStart,
|
|
7768
|
+
onSelect: (date) => handleFilterChange("creationDateStart", date),
|
|
7769
|
+
initialFocus: true,
|
|
7770
|
+
className: "pointer-events-auto"
|
|
7771
|
+
}
|
|
7772
|
+
) })
|
|
7773
|
+
] })
|
|
7774
|
+
] }),
|
|
7775
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
7776
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: "Creation Date End" }),
|
|
7777
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Popover, { children: [
|
|
7778
|
+
/* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7779
|
+
Button,
|
|
7780
|
+
{
|
|
7781
|
+
variant: "outline",
|
|
7782
|
+
className: cn(
|
|
7783
|
+
"w-full justify-start text-left font-normal",
|
|
7784
|
+
!filters.creationDateEnd && "text-muted-foreground"
|
|
7785
|
+
),
|
|
7786
|
+
children: [
|
|
7787
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Calendar, { className: "mr-2 h-4 w-4" }),
|
|
7788
|
+
filters.creationDateEnd ? dateFns.format(filters.creationDateEnd, "MM/dd/yyyy") : /* @__PURE__ */ jsxRuntime.jsx("span", { children: "MM/DD/YYYY" })
|
|
7789
|
+
]
|
|
7790
|
+
}
|
|
7791
|
+
) }),
|
|
7792
|
+
/* @__PURE__ */ jsxRuntime.jsx(PopoverContent, { className: "w-auto p-0 bg-background z-50", align: "start", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7793
|
+
Calendar,
|
|
7794
|
+
{
|
|
7795
|
+
mode: "single",
|
|
7796
|
+
selected: filters.creationDateEnd,
|
|
7797
|
+
onSelect: (date) => handleFilterChange("creationDateEnd", date),
|
|
7798
|
+
initialFocus: true,
|
|
7799
|
+
className: "pointer-events-auto"
|
|
7800
|
+
}
|
|
7801
|
+
) })
|
|
7802
|
+
] })
|
|
7803
|
+
] })
|
|
7804
|
+
] }),
|
|
7805
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
7806
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
7807
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: "Post Date Start" }),
|
|
7808
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Popover, { children: [
|
|
7809
|
+
/* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7810
|
+
Button,
|
|
7811
|
+
{
|
|
7812
|
+
variant: "outline",
|
|
7813
|
+
className: cn(
|
|
7814
|
+
"w-full justify-start text-left font-normal",
|
|
7815
|
+
!filters.postDateStart && "text-muted-foreground"
|
|
7816
|
+
),
|
|
7817
|
+
children: [
|
|
7818
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Calendar, { className: "mr-2 h-4 w-4" }),
|
|
7819
|
+
filters.postDateStart ? dateFns.format(filters.postDateStart, "MM/dd/yyyy") : /* @__PURE__ */ jsxRuntime.jsx("span", { children: "MM/DD/YYYY" })
|
|
7820
|
+
]
|
|
7821
|
+
}
|
|
7822
|
+
) }),
|
|
7823
|
+
/* @__PURE__ */ jsxRuntime.jsx(PopoverContent, { className: "w-auto p-0 bg-background z-50", align: "start", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7824
|
+
Calendar,
|
|
7825
|
+
{
|
|
7826
|
+
mode: "single",
|
|
7827
|
+
selected: filters.postDateStart,
|
|
7828
|
+
onSelect: (date) => handleFilterChange("postDateStart", date),
|
|
7829
|
+
initialFocus: true,
|
|
7830
|
+
className: "pointer-events-auto"
|
|
7831
|
+
}
|
|
7832
|
+
) })
|
|
7833
|
+
] })
|
|
7834
|
+
] }),
|
|
7835
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
7836
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: "Post Date End" }),
|
|
7837
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Popover, { children: [
|
|
7838
|
+
/* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7839
|
+
Button,
|
|
7840
|
+
{
|
|
7841
|
+
variant: "outline",
|
|
7842
|
+
className: cn(
|
|
7843
|
+
"w-full justify-start text-left font-normal",
|
|
7844
|
+
!filters.postDateEnd && "text-muted-foreground"
|
|
7845
|
+
),
|
|
7846
|
+
children: [
|
|
7847
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Calendar, { className: "mr-2 h-4 w-4" }),
|
|
7848
|
+
filters.postDateEnd ? dateFns.format(filters.postDateEnd, "MM/dd/yyyy") : /* @__PURE__ */ jsxRuntime.jsx("span", { children: "MM/DD/YYYY" })
|
|
7849
|
+
]
|
|
7850
|
+
}
|
|
7851
|
+
) }),
|
|
7852
|
+
/* @__PURE__ */ jsxRuntime.jsx(PopoverContent, { className: "w-auto p-0 bg-background z-50", align: "start", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7853
|
+
Calendar,
|
|
7854
|
+
{
|
|
7855
|
+
mode: "single",
|
|
7856
|
+
selected: filters.postDateEnd,
|
|
7857
|
+
onSelect: (date) => handleFilterChange("postDateEnd", date),
|
|
7858
|
+
initialFocus: true,
|
|
7859
|
+
className: "pointer-events-auto"
|
|
7860
|
+
}
|
|
7861
|
+
) })
|
|
7862
|
+
] })
|
|
7863
|
+
] })
|
|
7864
|
+
] })
|
|
7865
|
+
] }),
|
|
7866
|
+
/* @__PURE__ */ jsxRuntime.jsxs(SheetFooter, { className: "gap-2", children: [
|
|
7867
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "outline", onClick: resetFilters, children: "Reset Filters" }),
|
|
7868
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: applyFilters, children: "Apply Filters" })
|
|
7869
|
+
] })
|
|
7870
|
+
] })
|
|
7871
|
+
] })
|
|
7872
|
+
] }) }) }),
|
|
7873
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container mx-auto px-4 h-full max-w-none flex flex-col", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 mt-4 rounded-lg border bg-card overflow-hidden flex flex-col", children: [
|
|
7874
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 overflow-auto", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "w-full table-fixed", children: [
|
|
7875
|
+
/* @__PURE__ */ jsxRuntime.jsxs("colgroup", { children: [
|
|
7876
|
+
/* @__PURE__ */ jsxRuntime.jsx("col", { className: "w-28" }),
|
|
7877
|
+
/* @__PURE__ */ jsxRuntime.jsx("col", { className: "w-28" }),
|
|
7878
|
+
/* @__PURE__ */ jsxRuntime.jsx("col", { className: "w-24" }),
|
|
7879
|
+
/* @__PURE__ */ jsxRuntime.jsx("col", { className: "w-36" }),
|
|
7880
|
+
/* @__PURE__ */ jsxRuntime.jsx("col", { className: "w-36" }),
|
|
7881
|
+
/* @__PURE__ */ jsxRuntime.jsx("col", { className: "w-auto" }),
|
|
7882
|
+
/* @__PURE__ */ jsxRuntime.jsx("col", { className: "w-36" }),
|
|
7883
|
+
/* @__PURE__ */ jsxRuntime.jsx("col", { className: "w-24" }),
|
|
7884
|
+
/* @__PURE__ */ jsxRuntime.jsx("col", { className: "w-28" })
|
|
7885
|
+
] }),
|
|
7886
|
+
/* @__PURE__ */ jsxRuntime.jsx("thead", { className: "sticky top-0 bg-card z-10 shadow-sm", children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-b", children: [
|
|
7887
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-left text-xs font-medium bg-muted/50", children: "Created" }),
|
|
7888
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-left text-xs font-medium bg-muted/50", children: "Account Number" }),
|
|
7889
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-right text-xs font-medium bg-muted/50", children: "Amount" }),
|
|
7890
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-left text-xs font-medium bg-muted/50", children: "Customer" }),
|
|
7891
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-left text-xs font-medium bg-muted/50", children: "Counterparty" }),
|
|
7892
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-left text-xs font-medium bg-muted/50", children: "Description" }),
|
|
7893
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-left text-xs font-medium bg-muted/50", children: "Transaction Type" }),
|
|
7894
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-left text-xs font-medium bg-muted/50", children: "Status" }),
|
|
7895
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-left text-xs font-medium bg-muted/50", children: "Updated" })
|
|
7896
|
+
] }) }),
|
|
7897
|
+
/* @__PURE__ */ jsxRuntime.jsx("tbody", { children: paginatedTransactions.map((transaction) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7898
|
+
"tr",
|
|
7899
|
+
{
|
|
7900
|
+
onClick: () => navigate(`/transactions/${transaction.id}`),
|
|
7901
|
+
className: "border-b hover:bg-muted/50 transition-colors cursor-pointer",
|
|
7902
|
+
children: [
|
|
7903
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2 text-xs", children: transaction.created }),
|
|
7904
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2 text-xs", children: transaction.accountNumber }),
|
|
7905
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2 text-xs text-right", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: transaction.amount < 0 ? "text-destructive" : "", children: formatCurrency(transaction.amount) }) }),
|
|
7906
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2", children: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "link", className: "h-auto p-0 font-normal text-xs", children: transaction.customer }) }),
|
|
7907
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2", children: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "link", className: "h-auto p-0 font-normal text-xs", children: transaction.counterparty }) }),
|
|
7908
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2 text-xs truncate", children: transaction.description }),
|
|
7909
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2", children: /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: "font-normal whitespace-nowrap text-xs", children: transaction.transactionType }) }),
|
|
7910
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2", children: /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status: transaction.status }) }),
|
|
7911
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2 text-xs", children: transaction.updated })
|
|
7912
|
+
]
|
|
7913
|
+
},
|
|
7914
|
+
transaction.id
|
|
7915
|
+
)) })
|
|
7916
|
+
] }) }),
|
|
7917
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-none border-t bg-background py-3 px-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
7918
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
7919
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: "Rows per page:" }),
|
|
7920
|
+
/* @__PURE__ */ jsxRuntime.jsxs(DropdownMenu, { children: [
|
|
7921
|
+
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "outline", size: "sm", className: "h-8 gap-1", children: [
|
|
7922
|
+
rowsPerPage,
|
|
7923
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4 rotate-90" })
|
|
7924
|
+
] }) }),
|
|
7925
|
+
/* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuContent, { align: "start", className: "bg-background z-50", children: [
|
|
7926
|
+
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { onClick: () => handleRowsPerPageChange(100), children: "100" }),
|
|
7927
|
+
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { onClick: () => handleRowsPerPageChange(200), children: "200" }),
|
|
7928
|
+
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { onClick: () => handleRowsPerPageChange(500), children: "500" })
|
|
7929
|
+
] })
|
|
7930
|
+
] })
|
|
7931
|
+
] }),
|
|
7932
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-4", children: [
|
|
7933
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm text-muted-foreground", children: [
|
|
7934
|
+
"Page ",
|
|
7935
|
+
currentPage,
|
|
7936
|
+
" of ",
|
|
7937
|
+
totalPages
|
|
7938
|
+
] }),
|
|
7939
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
7940
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7941
|
+
Button,
|
|
7942
|
+
{
|
|
7943
|
+
variant: "outline",
|
|
7944
|
+
size: "sm",
|
|
7945
|
+
className: "h-8 w-8 p-0",
|
|
7946
|
+
onClick: () => handlePageChange(currentPage - 1),
|
|
7947
|
+
disabled: currentPage === 1,
|
|
7948
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "h-4 w-4" })
|
|
7949
|
+
}
|
|
7950
|
+
),
|
|
7951
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7952
|
+
Button,
|
|
7953
|
+
{
|
|
7954
|
+
variant: "outline",
|
|
7955
|
+
size: "sm",
|
|
7956
|
+
className: "h-8 w-8 p-0",
|
|
7957
|
+
onClick: () => handlePageChange(currentPage + 1),
|
|
7958
|
+
disabled: currentPage === totalPages,
|
|
7959
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4" })
|
|
7960
|
+
}
|
|
7961
|
+
)
|
|
7962
|
+
] })
|
|
7963
|
+
] })
|
|
7964
|
+
] }) })
|
|
7965
|
+
] }) }) })
|
|
7966
|
+
] });
|
|
7967
|
+
};
|
|
7968
|
+
var TransactionHistory_default = TransactionHistory;
|
|
7969
|
+
var newTransactionSchema = zod.z.object({
|
|
6106
7970
|
transactionType: zod.z.string().min(1, "Transaction type is required"),
|
|
6107
7971
|
accountNumber: zod.z.string().min(1, "Account number is required"),
|
|
6108
7972
|
counterpartyName: zod.z.string().min(1, "Counterparty name is required"),
|
|
@@ -6110,6 +7974,648 @@ zod.z.object({
|
|
|
6110
7974
|
currency: zod.z.string().min(1, "Currency is required"),
|
|
6111
7975
|
description: zod.z.string().optional()
|
|
6112
7976
|
});
|
|
7977
|
+
var TRANSACTION_TYPES = [
|
|
7978
|
+
{ value: "transfer", label: "Transfer", icon: lucideReact.ArrowLeftRight },
|
|
7979
|
+
{ value: "adjustment", label: "Adjustment", icon: lucideReact.Settings },
|
|
7980
|
+
{ value: "ach", label: "ACH", icon: lucideReact.Building2 },
|
|
7981
|
+
{ value: "wire", label: "Wire", icon: lucideReact.Zap }
|
|
7982
|
+
];
|
|
7983
|
+
var CURRENCY_OPTIONS = [
|
|
7984
|
+
{ value: "USD", label: "USD - US Dollar" },
|
|
7985
|
+
{ value: "EUR", label: "EUR - Euro" },
|
|
7986
|
+
{ value: "GBP", label: "GBP - British Pound" },
|
|
7987
|
+
{ value: "JPY", label: "JPY - Japanese Yen" },
|
|
7988
|
+
{ value: "CAD", label: "CAD - Canadian Dollar" },
|
|
7989
|
+
{ value: "AUD", label: "AUD - Australian Dollar" },
|
|
7990
|
+
{ value: "CHF", label: "CHF - Swiss Franc" },
|
|
7991
|
+
{ value: "CNY", label: "CNY - Chinese Yuan" }
|
|
7992
|
+
];
|
|
7993
|
+
var mockAccountData = {
|
|
7994
|
+
accountNumber: "****1234",
|
|
7995
|
+
accountName: "Business Checking",
|
|
7996
|
+
accountType: "Checking",
|
|
7997
|
+
balance: "$125,450.00",
|
|
7998
|
+
customerName: "Acme Corporation",
|
|
7999
|
+
customerId: "CUST-001",
|
|
8000
|
+
customerType: "Business"
|
|
8001
|
+
};
|
|
8002
|
+
var mockCounterpartyData = {
|
|
8003
|
+
counterpartyName: "Global Tech Solutions Inc.",
|
|
8004
|
+
counterpartyId: "CP-5678",
|
|
8005
|
+
counterpartyType: "Business",
|
|
8006
|
+
status: "Active",
|
|
8007
|
+
taxId: "98-7654321",
|
|
8008
|
+
primaryContact: "Sarah Johnson",
|
|
8009
|
+
contactEmail: "sarah.johnson@globaltech.com",
|
|
8010
|
+
contactPhone: "+1 (555) 987-6543",
|
|
8011
|
+
address: "456 Innovation Drive, San Francisco, CA 94105"
|
|
8012
|
+
};
|
|
8013
|
+
function NewTransaction() {
|
|
8014
|
+
const navigate = reactRouterDom.useNavigate();
|
|
8015
|
+
const [accountLookedUp, setAccountLookedUp] = React13.useState(false);
|
|
8016
|
+
const [accountData, setAccountData] = React13.useState(null);
|
|
8017
|
+
const [counterpartyLookedUp, setCounterpartyLookedUp] = React13.useState(false);
|
|
8018
|
+
const [counterpartyData, setCounterpartyData] = React13.useState(null);
|
|
8019
|
+
const [confirmationOpen, setConfirmationOpen] = React13.useState(false);
|
|
8020
|
+
const [submissionStatus, setSubmissionStatus] = React13.useState(null);
|
|
8021
|
+
const [errorMessage, setErrorMessage] = React13.useState("");
|
|
8022
|
+
const [transactionId, setTransactionId] = React13.useState("");
|
|
8023
|
+
const form = reactHookForm.useForm({
|
|
8024
|
+
resolver: zod$1.zodResolver(newTransactionSchema),
|
|
8025
|
+
defaultValues: {
|
|
8026
|
+
transactionType: "",
|
|
8027
|
+
accountNumber: "",
|
|
8028
|
+
counterpartyName: "",
|
|
8029
|
+
amount: "",
|
|
8030
|
+
currency: "USD",
|
|
8031
|
+
description: ""
|
|
8032
|
+
}
|
|
8033
|
+
});
|
|
8034
|
+
const transactionType = form.watch("transactionType");
|
|
8035
|
+
const accountNumber = form.watch("accountNumber");
|
|
8036
|
+
const counterpartyName = form.watch("counterpartyName");
|
|
8037
|
+
const amount = form.watch("amount");
|
|
8038
|
+
const handleAccountLookup = () => {
|
|
8039
|
+
const accNum = form.getValues("accountNumber");
|
|
8040
|
+
if (!accNum) {
|
|
8041
|
+
sonner.toast.error("Please enter an account number");
|
|
8042
|
+
return;
|
|
8043
|
+
}
|
|
8044
|
+
setAccountData(mockAccountData);
|
|
8045
|
+
setAccountLookedUp(true);
|
|
8046
|
+
sonner.toast.success("Account found");
|
|
8047
|
+
};
|
|
8048
|
+
const handleCounterpartyLookup = () => {
|
|
8049
|
+
const cpName = form.getValues("counterpartyName");
|
|
8050
|
+
if (!cpName) {
|
|
8051
|
+
sonner.toast.error("Please enter a counterparty name");
|
|
8052
|
+
return;
|
|
8053
|
+
}
|
|
8054
|
+
setCounterpartyData(mockCounterpartyData);
|
|
8055
|
+
setCounterpartyLookedUp(true);
|
|
8056
|
+
sonner.toast.success("Counterparty found");
|
|
8057
|
+
};
|
|
8058
|
+
const handleEditAccount = () => {
|
|
8059
|
+
setAccountLookedUp(false);
|
|
8060
|
+
setAccountData(null);
|
|
8061
|
+
form.setValue("transactionType", "");
|
|
8062
|
+
setCounterpartyLookedUp(false);
|
|
8063
|
+
setCounterpartyData(null);
|
|
8064
|
+
form.setValue("counterpartyName", "");
|
|
8065
|
+
form.setValue("amount", "");
|
|
8066
|
+
form.setValue("description", "");
|
|
8067
|
+
};
|
|
8068
|
+
const handleEditCounterparty = () => {
|
|
8069
|
+
setCounterpartyLookedUp(false);
|
|
8070
|
+
setCounterpartyData(null);
|
|
8071
|
+
form.setValue("amount", "");
|
|
8072
|
+
form.setValue("description", "");
|
|
8073
|
+
};
|
|
8074
|
+
const handleSubmit = () => {
|
|
8075
|
+
const data = form.getValues();
|
|
8076
|
+
if (!data.transactionType || !data.accountNumber || !data.counterpartyName || !data.amount) {
|
|
8077
|
+
sonner.toast.error("Please complete all required fields");
|
|
8078
|
+
return;
|
|
8079
|
+
}
|
|
8080
|
+
if (!accountLookedUp || !counterpartyLookedUp) {
|
|
8081
|
+
sonner.toast.error("Please lookup both account and counterparty");
|
|
8082
|
+
return;
|
|
8083
|
+
}
|
|
8084
|
+
const amount2 = parseFloat(data.amount);
|
|
8085
|
+
const hasError = Math.random() > 0.7;
|
|
8086
|
+
if (hasError) {
|
|
8087
|
+
const errorScenarios = [
|
|
8088
|
+
"Insufficient funds. Current balance: $125,450.00, Required: $" + amount2.toFixed(2),
|
|
8089
|
+
"Transaction limit exceeded. Daily limit: $50,000.00",
|
|
8090
|
+
"Counterparty account is temporarily unavailable. Please try again later.",
|
|
8091
|
+
"Invalid routing number for the selected transaction type."
|
|
8092
|
+
];
|
|
8093
|
+
setSubmissionStatus("error");
|
|
8094
|
+
setErrorMessage(errorScenarios[Math.floor(Math.random() * errorScenarios.length)]);
|
|
8095
|
+
setConfirmationOpen(true);
|
|
8096
|
+
} else {
|
|
8097
|
+
const txId = "TXN-" + Math.random().toString(36).substr(2, 9).toUpperCase();
|
|
8098
|
+
setTransactionId(txId);
|
|
8099
|
+
setSubmissionStatus("success");
|
|
8100
|
+
setConfirmationOpen(true);
|
|
8101
|
+
}
|
|
8102
|
+
};
|
|
8103
|
+
const handleConfirmationClose = () => {
|
|
8104
|
+
setConfirmationOpen(false);
|
|
8105
|
+
if (submissionStatus === "success") {
|
|
8106
|
+
navigate("/transactions/history");
|
|
8107
|
+
}
|
|
8108
|
+
};
|
|
8109
|
+
const handleCancel = () => {
|
|
8110
|
+
navigate("/dashboard");
|
|
8111
|
+
};
|
|
8112
|
+
const accountDataGrid = accountData ? [
|
|
8113
|
+
{
|
|
8114
|
+
title: "Account Information",
|
|
8115
|
+
items: [
|
|
8116
|
+
{ label: "Account Number", value: accountData.accountNumber },
|
|
8117
|
+
{ label: "Account Name", value: accountData.accountName },
|
|
8118
|
+
{ label: "Account Type", value: accountData.accountType },
|
|
8119
|
+
{ label: "Balance", value: accountData.balance },
|
|
8120
|
+
{ label: "Customer Name", value: accountData.customerName },
|
|
8121
|
+
{ label: "Customer ID", value: accountData.customerId }
|
|
8122
|
+
]
|
|
8123
|
+
}
|
|
8124
|
+
] : [];
|
|
8125
|
+
const counterpartyDataGrid = counterpartyData ? [
|
|
8126
|
+
{
|
|
8127
|
+
title: "Counterparty Information",
|
|
8128
|
+
items: [
|
|
8129
|
+
{ label: "Counterparty Name", value: counterpartyData.counterpartyName },
|
|
8130
|
+
{ label: "Counterparty ID", value: counterpartyData.counterpartyId },
|
|
8131
|
+
{ label: "Type", value: counterpartyData.counterpartyType },
|
|
8132
|
+
{ label: "Status", value: counterpartyData.status },
|
|
8133
|
+
{ label: "Tax ID", value: counterpartyData.taxId },
|
|
8134
|
+
{ label: "Primary Contact", value: counterpartyData.primaryContact },
|
|
8135
|
+
{ label: "Contact Email", value: counterpartyData.contactEmail },
|
|
8136
|
+
{ label: "Contact Phone", value: counterpartyData.contactPhone },
|
|
8137
|
+
{ label: "Address", value: counterpartyData.address }
|
|
8138
|
+
]
|
|
8139
|
+
}
|
|
8140
|
+
] : [];
|
|
8141
|
+
const reviewData = [
|
|
8142
|
+
{
|
|
8143
|
+
title: "Transaction Summary",
|
|
8144
|
+
items: [
|
|
8145
|
+
{ label: "Transaction Type", value: TRANSACTION_TYPES.find((t) => t.value === transactionType)?.label || "-" },
|
|
8146
|
+
{ label: "Account Number", value: accountNumber || "-" },
|
|
8147
|
+
{ label: "Counterparty", value: counterpartyName || "-" },
|
|
8148
|
+
{ label: "Amount", value: amount ? `$${amount}` : "-" },
|
|
8149
|
+
{ label: "Description", value: form.watch("description") || "N/A" }
|
|
8150
|
+
]
|
|
8151
|
+
}
|
|
8152
|
+
];
|
|
8153
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8154
|
+
PageLayout,
|
|
8155
|
+
{
|
|
8156
|
+
title: "New Transaction",
|
|
8157
|
+
description: "Complete the form below to initiate a new transaction",
|
|
8158
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-4xl mx-auto space-y-6", children: [
|
|
8159
|
+
/* @__PURE__ */ jsxRuntime.jsx(FormProvider, { form, children: /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: (e) => e.preventDefault(), children: [
|
|
8160
|
+
!accountLookedUp ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
8161
|
+
FormCard,
|
|
8162
|
+
{
|
|
8163
|
+
title: "Account Lookup",
|
|
8164
|
+
variant: "default",
|
|
8165
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
8166
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8167
|
+
FormInput,
|
|
8168
|
+
{
|
|
8169
|
+
name: "accountNumber",
|
|
8170
|
+
label: "Account Number",
|
|
8171
|
+
placeholder: "Enter account number"
|
|
8172
|
+
}
|
|
8173
|
+
),
|
|
8174
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8175
|
+
Button,
|
|
8176
|
+
{
|
|
8177
|
+
onClick: handleAccountLookup,
|
|
8178
|
+
className: "w-full sm:w-auto",
|
|
8179
|
+
disabled: !accountNumber,
|
|
8180
|
+
children: [
|
|
8181
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "h-4 w-4 mr-2" }),
|
|
8182
|
+
"Lookup Account"
|
|
8183
|
+
]
|
|
8184
|
+
}
|
|
8185
|
+
)
|
|
8186
|
+
] })
|
|
8187
|
+
}
|
|
8188
|
+
) : (
|
|
8189
|
+
/* Account Information (Read-only) */
|
|
8190
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8191
|
+
FormCard,
|
|
8192
|
+
{
|
|
8193
|
+
title: "Account Information",
|
|
8194
|
+
variant: "subtle",
|
|
8195
|
+
headerActions: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
8196
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "h-5 w-5 text-success" }),
|
|
8197
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8198
|
+
Button,
|
|
8199
|
+
{
|
|
8200
|
+
variant: "ghost",
|
|
8201
|
+
size: "sm",
|
|
8202
|
+
onClick: handleEditAccount,
|
|
8203
|
+
children: [
|
|
8204
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Edit, { className: "h-4 w-4 mr-1" }),
|
|
8205
|
+
"Edit"
|
|
8206
|
+
]
|
|
8207
|
+
}
|
|
8208
|
+
)
|
|
8209
|
+
] }),
|
|
8210
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DataGrid, { data: accountDataGrid, columns: 2 })
|
|
8211
|
+
}
|
|
8212
|
+
)
|
|
8213
|
+
),
|
|
8214
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8215
|
+
FormCard,
|
|
8216
|
+
{
|
|
8217
|
+
title: "Transaction Type",
|
|
8218
|
+
variant: "default",
|
|
8219
|
+
className: cn(!accountLookedUp && "opacity-50 pointer-events-none"),
|
|
8220
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 lg:grid-cols-4 gap-3 lg:gap-4", children: TRANSACTION_TYPES.map((type) => {
|
|
8221
|
+
const Icon2 = type.icon;
|
|
8222
|
+
const isSelected = transactionType === type.value;
|
|
8223
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8224
|
+
"button",
|
|
8225
|
+
{
|
|
8226
|
+
type: "button",
|
|
8227
|
+
onClick: () => form.setValue("transactionType", type.value),
|
|
8228
|
+
disabled: !accountLookedUp,
|
|
8229
|
+
className: cn(
|
|
8230
|
+
"flex flex-col items-center justify-center p-4 lg:p-3 rounded-lg border-2 transition-all",
|
|
8231
|
+
"hover:border-primary/50 hover:shadow-md",
|
|
8232
|
+
isSelected ? "border-primary bg-primary/5 shadow-sm" : "border-border bg-card"
|
|
8233
|
+
),
|
|
8234
|
+
children: [
|
|
8235
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon2, { className: cn(
|
|
8236
|
+
"h-6 w-6 lg:h-5 lg:w-5 mb-2",
|
|
8237
|
+
isSelected ? "text-primary" : "text-muted-foreground"
|
|
8238
|
+
) }),
|
|
8239
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(
|
|
8240
|
+
"text-sm font-medium",
|
|
8241
|
+
isSelected ? "text-primary" : "text-foreground"
|
|
8242
|
+
), children: type.label })
|
|
8243
|
+
]
|
|
8244
|
+
},
|
|
8245
|
+
type.value
|
|
8246
|
+
);
|
|
8247
|
+
}) })
|
|
8248
|
+
}
|
|
8249
|
+
),
|
|
8250
|
+
!counterpartyLookedUp ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
8251
|
+
FormCard,
|
|
8252
|
+
{
|
|
8253
|
+
title: "Counterparty Lookup",
|
|
8254
|
+
variant: "default",
|
|
8255
|
+
className: cn(!transactionType && "opacity-50 pointer-events-none"),
|
|
8256
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
8257
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8258
|
+
FormInput,
|
|
8259
|
+
{
|
|
8260
|
+
name: "counterpartyName",
|
|
8261
|
+
label: "Counterparty Name",
|
|
8262
|
+
placeholder: "Enter counterparty name",
|
|
8263
|
+
disabled: !transactionType
|
|
8264
|
+
}
|
|
8265
|
+
),
|
|
8266
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8267
|
+
Button,
|
|
8268
|
+
{
|
|
8269
|
+
onClick: handleCounterpartyLookup,
|
|
8270
|
+
className: "w-full sm:w-auto",
|
|
8271
|
+
disabled: !transactionType || !counterpartyName,
|
|
8272
|
+
children: [
|
|
8273
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "h-4 w-4 mr-2" }),
|
|
8274
|
+
"Lookup Counterparty"
|
|
8275
|
+
]
|
|
8276
|
+
}
|
|
8277
|
+
)
|
|
8278
|
+
] })
|
|
8279
|
+
}
|
|
8280
|
+
) : (
|
|
8281
|
+
/* Counterparty Information (Read-only) */
|
|
8282
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8283
|
+
FormCard,
|
|
8284
|
+
{
|
|
8285
|
+
title: "Counterparty Information",
|
|
8286
|
+
variant: "subtle",
|
|
8287
|
+
headerActions: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
8288
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "h-5 w-5 text-success" }),
|
|
8289
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8290
|
+
Button,
|
|
8291
|
+
{
|
|
8292
|
+
variant: "ghost",
|
|
8293
|
+
size: "sm",
|
|
8294
|
+
onClick: handleEditCounterparty,
|
|
8295
|
+
children: [
|
|
8296
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Edit, { className: "h-4 w-4 mr-1" }),
|
|
8297
|
+
"Edit"
|
|
8298
|
+
]
|
|
8299
|
+
}
|
|
8300
|
+
)
|
|
8301
|
+
] }),
|
|
8302
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DataGrid, { data: counterpartyDataGrid, columns: 2 })
|
|
8303
|
+
}
|
|
8304
|
+
)
|
|
8305
|
+
),
|
|
8306
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8307
|
+
FormCard,
|
|
8308
|
+
{
|
|
8309
|
+
title: "Transaction Details",
|
|
8310
|
+
variant: "default",
|
|
8311
|
+
className: cn(!counterpartyLookedUp && "opacity-50 pointer-events-none"),
|
|
8312
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
8313
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-[1fr_auto] gap-4", children: [
|
|
8314
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8315
|
+
FormInput,
|
|
8316
|
+
{
|
|
8317
|
+
name: "amount",
|
|
8318
|
+
label: "Amount",
|
|
8319
|
+
placeholder: "0.00",
|
|
8320
|
+
type: "number",
|
|
8321
|
+
disabled: !counterpartyLookedUp
|
|
8322
|
+
}
|
|
8323
|
+
),
|
|
8324
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8325
|
+
FormSelect,
|
|
8326
|
+
{
|
|
8327
|
+
name: "currency",
|
|
8328
|
+
label: "Currency",
|
|
8329
|
+
options: CURRENCY_OPTIONS,
|
|
8330
|
+
disabled: !counterpartyLookedUp
|
|
8331
|
+
}
|
|
8332
|
+
)
|
|
8333
|
+
] }),
|
|
8334
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8335
|
+
FormInput,
|
|
8336
|
+
{
|
|
8337
|
+
name: "description",
|
|
8338
|
+
label: "Description (Optional)",
|
|
8339
|
+
placeholder: "Enter transaction description",
|
|
8340
|
+
disabled: !counterpartyLookedUp
|
|
8341
|
+
}
|
|
8342
|
+
)
|
|
8343
|
+
] })
|
|
8344
|
+
}
|
|
8345
|
+
),
|
|
8346
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8347
|
+
FormCard,
|
|
8348
|
+
{
|
|
8349
|
+
title: "Review & Submit",
|
|
8350
|
+
variant: "default",
|
|
8351
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
8352
|
+
/* @__PURE__ */ jsxRuntime.jsx(DataGrid, { data: reviewData, columns: 2 }),
|
|
8353
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3 justify-end pt-4 border-t border-border", children: [
|
|
8354
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8355
|
+
Button,
|
|
8356
|
+
{
|
|
8357
|
+
type: "button",
|
|
8358
|
+
variant: "outline",
|
|
8359
|
+
onClick: handleCancel,
|
|
8360
|
+
className: "w-32",
|
|
8361
|
+
children: "Cancel"
|
|
8362
|
+
}
|
|
8363
|
+
),
|
|
8364
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8365
|
+
Button,
|
|
8366
|
+
{
|
|
8367
|
+
type: "button",
|
|
8368
|
+
onClick: handleSubmit,
|
|
8369
|
+
className: "w-48",
|
|
8370
|
+
disabled: !transactionType || !accountNumber || !counterpartyName || !amount,
|
|
8371
|
+
children: [
|
|
8372
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "h-4 w-4 mr-2" }),
|
|
8373
|
+
"Submit Transaction"
|
|
8374
|
+
]
|
|
8375
|
+
}
|
|
8376
|
+
)
|
|
8377
|
+
] })
|
|
8378
|
+
] })
|
|
8379
|
+
}
|
|
8380
|
+
)
|
|
8381
|
+
] }) }),
|
|
8382
|
+
/* @__PURE__ */ jsxRuntime.jsx(Dialog, { open: confirmationOpen, onOpenChange: setConfirmationOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(DialogContent, { className: "sm:max-w-md", children: [
|
|
8383
|
+
/* @__PURE__ */ jsxRuntime.jsxs(DialogHeader, { children: [
|
|
8384
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-2", children: [
|
|
8385
|
+
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" }) }),
|
|
8386
|
+
/* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { className: "text-xl", children: submissionStatus === "success" ? "Transaction Successful" : "Transaction Failed" })
|
|
8387
|
+
] }),
|
|
8388
|
+
/* @__PURE__ */ jsxRuntime.jsx(DialogDescription, { className: "text-left", children: submissionStatus === "success" ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 pt-2", children: [
|
|
8389
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-foreground", children: "Your transaction has been successfully submitted and is being processed." }),
|
|
8390
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-muted/50 rounded-lg p-4 space-y-2", children: [
|
|
8391
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between text-sm", children: [
|
|
8392
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Transaction ID:" }),
|
|
8393
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono font-medium", children: transactionId })
|
|
8394
|
+
] }),
|
|
8395
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between text-sm", children: [
|
|
8396
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Amount:" }),
|
|
8397
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-medium", children: [
|
|
8398
|
+
"$",
|
|
8399
|
+
amount
|
|
8400
|
+
] })
|
|
8401
|
+
] }),
|
|
8402
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between text-sm", children: [
|
|
8403
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Type:" }),
|
|
8404
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: TRANSACTION_TYPES.find((t) => t.value === transactionType)?.label })
|
|
8405
|
+
] }),
|
|
8406
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between text-sm", children: [
|
|
8407
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Counterparty:" }),
|
|
8408
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: counterpartyName })
|
|
8409
|
+
] })
|
|
8410
|
+
] }),
|
|
8411
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 p-3 bg-blue-500/10 border border-blue-500/20 rounded-lg", children: [
|
|
8412
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircle, { className: "h-5 w-5 text-blue-500 mt-0.5 flex-shrink-0" }),
|
|
8413
|
+
/* @__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." })
|
|
8414
|
+
] })
|
|
8415
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 pt-2", children: [
|
|
8416
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 p-4 bg-destructive/10 border border-destructive/20 rounded-lg", children: [
|
|
8417
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { className: "h-5 w-5 text-destructive mt-0.5 flex-shrink-0" }),
|
|
8418
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
8419
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium text-destructive", children: "Error Processing Transaction" }),
|
|
8420
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: errorMessage })
|
|
8421
|
+
] })
|
|
8422
|
+
] }),
|
|
8423
|
+
/* @__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." })
|
|
8424
|
+
] }) })
|
|
8425
|
+
] }),
|
|
8426
|
+
/* @__PURE__ */ jsxRuntime.jsxs(DialogFooter, { className: "sm:justify-end gap-2", children: [
|
|
8427
|
+
submissionStatus === "error" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8428
|
+
Button,
|
|
8429
|
+
{
|
|
8430
|
+
type: "button",
|
|
8431
|
+
variant: "outline",
|
|
8432
|
+
onClick: () => setConfirmationOpen(false),
|
|
8433
|
+
children: "Try Again"
|
|
8434
|
+
}
|
|
8435
|
+
),
|
|
8436
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8437
|
+
Button,
|
|
8438
|
+
{
|
|
8439
|
+
type: "button",
|
|
8440
|
+
onClick: handleConfirmationClose,
|
|
8441
|
+
variant: submissionStatus === "success" ? "default" : "outline",
|
|
8442
|
+
children: submissionStatus === "success" ? "View Transactions" : "Close"
|
|
8443
|
+
}
|
|
8444
|
+
)
|
|
8445
|
+
] })
|
|
8446
|
+
] }) })
|
|
8447
|
+
] })
|
|
8448
|
+
}
|
|
8449
|
+
);
|
|
8450
|
+
}
|
|
8451
|
+
var TransactionDetail = () => {
|
|
8452
|
+
const { id } = reactRouterDom.useParams();
|
|
8453
|
+
const navigate = reactRouterDom.useNavigate();
|
|
8454
|
+
const transaction = mockTransactions.find((t) => t.id === id);
|
|
8455
|
+
if (!transaction) {
|
|
8456
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container mx-auto px-4 py-8", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
|
|
8457
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-2xl font-bold mb-2", children: "Transaction Not Found" }),
|
|
8458
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-muted-foreground mb-4", children: [
|
|
8459
|
+
"The transaction #",
|
|
8460
|
+
id,
|
|
8461
|
+
" could not be found."
|
|
8462
|
+
] }),
|
|
8463
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: () => navigate("/transactions/history"), children: "Back to Transaction History" })
|
|
8464
|
+
] }) });
|
|
8465
|
+
}
|
|
8466
|
+
const getStatusVariant = (status) => {
|
|
8467
|
+
switch (status) {
|
|
8468
|
+
case "POSTED":
|
|
8469
|
+
return "success";
|
|
8470
|
+
case "PENDING":
|
|
8471
|
+
return "warning";
|
|
8472
|
+
case "FAILED":
|
|
8473
|
+
return "destructive";
|
|
8474
|
+
case "CANCELLED":
|
|
8475
|
+
return "outline";
|
|
8476
|
+
default:
|
|
8477
|
+
return "outline";
|
|
8478
|
+
}
|
|
8479
|
+
};
|
|
8480
|
+
const formatCurrency = (value) => {
|
|
8481
|
+
return new Intl.NumberFormat("en-US", {
|
|
8482
|
+
style: "currency",
|
|
8483
|
+
currency: "USD",
|
|
8484
|
+
minimumFractionDigits: 2
|
|
8485
|
+
}).format(value);
|
|
8486
|
+
};
|
|
8487
|
+
const isWireTransfer = transaction.transactionType.toLowerCase().includes("wire");
|
|
8488
|
+
const isACHTransfer = transaction.transactionType.toLowerCase().includes("ach");
|
|
8489
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8490
|
+
PageLayout,
|
|
8491
|
+
{
|
|
8492
|
+
title: `Transaction #${transaction.id}`,
|
|
8493
|
+
maxWidth: "full",
|
|
8494
|
+
actions: [
|
|
8495
|
+
{
|
|
8496
|
+
label: "Return",
|
|
8497
|
+
variant: "outline",
|
|
8498
|
+
onClick: () => console.log("Return transaction")
|
|
8499
|
+
},
|
|
8500
|
+
{
|
|
8501
|
+
label: "Cancel",
|
|
8502
|
+
variant: "default",
|
|
8503
|
+
onClick: () => console.log("Cancel transaction")
|
|
8504
|
+
}
|
|
8505
|
+
],
|
|
8506
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col lg:flex-row items-start gap-6", children: [
|
|
8507
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-6", children: [
|
|
8508
|
+
/* @__PURE__ */ jsxRuntime.jsx(FormCard, { title: "Details", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-x-8 gap-y-4", children: [
|
|
8509
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8510
|
+
InfoField,
|
|
8511
|
+
{
|
|
8512
|
+
label: "Transaction Type",
|
|
8513
|
+
value: /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", children: transaction.transactionType }),
|
|
8514
|
+
layout: "horizontal"
|
|
8515
|
+
}
|
|
8516
|
+
),
|
|
8517
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8518
|
+
InfoField,
|
|
8519
|
+
{
|
|
8520
|
+
label: "Status",
|
|
8521
|
+
value: /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: getStatusVariant(transaction.status), children: transaction.status }),
|
|
8522
|
+
layout: "horizontal"
|
|
8523
|
+
}
|
|
8524
|
+
),
|
|
8525
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8526
|
+
InfoField,
|
|
8527
|
+
{
|
|
8528
|
+
label: "Amount",
|
|
8529
|
+
value: /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(
|
|
8530
|
+
"font-semibold",
|
|
8531
|
+
transaction.amount < 0 ? "text-destructive" : "text-success"
|
|
8532
|
+
), children: formatCurrency(transaction.amount) }),
|
|
8533
|
+
layout: "horizontal"
|
|
8534
|
+
}
|
|
8535
|
+
),
|
|
8536
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8537
|
+
InfoField,
|
|
8538
|
+
{
|
|
8539
|
+
label: "Account Number",
|
|
8540
|
+
value: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "link", className: "h-auto p-0 text-sm", children: transaction.accountNumber }),
|
|
8541
|
+
layout: "horizontal"
|
|
8542
|
+
}
|
|
8543
|
+
),
|
|
8544
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8545
|
+
InfoField,
|
|
8546
|
+
{
|
|
8547
|
+
label: "Customer Name",
|
|
8548
|
+
value: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "link", className: "h-auto p-0 text-sm", children: transaction.customer }),
|
|
8549
|
+
layout: "horizontal"
|
|
8550
|
+
}
|
|
8551
|
+
),
|
|
8552
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Description", value: transaction.description, layout: "horizontal" }),
|
|
8553
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8554
|
+
InfoField,
|
|
8555
|
+
{
|
|
8556
|
+
label: "Direction",
|
|
8557
|
+
value: transaction.amount < 0 ? "DEBIT" : "CREDIT",
|
|
8558
|
+
layout: "horizontal"
|
|
8559
|
+
}
|
|
8560
|
+
),
|
|
8561
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Counterparty Name", value: transaction.counterparty, layout: "horizontal" }),
|
|
8562
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Post Date", value: transaction.created.split(" ")[0], layout: "horizontal" }),
|
|
8563
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "OFAC ID", value: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "link", className: "h-auto p-0 text-sm", children: "18323208" }), layout: "horizontal" }),
|
|
8564
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Original Filename", value: "-", layout: "horizontal" }),
|
|
8565
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Loaded From File", value: "iso21130757012764355B7.xml.126534273Q299", layout: "horizontal" }),
|
|
8566
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Payment ID", value: transaction.id, layout: "horizontal" }),
|
|
8567
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Linked Payment ID", value: "-", layout: "horizontal" }),
|
|
8568
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Is Inbound", value: "True", layout: "horizontal" }),
|
|
8569
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Pending until Date", value: "-", layout: "horizontal" }),
|
|
8570
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Processing Status", value: "Sent", layout: "horizontal" }),
|
|
8571
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Further Credit To", value: "-", layout: "horizontal" }),
|
|
8572
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Balance Available Date", value: "-", layout: "horizontal" }),
|
|
8573
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Requester Username", value: "-", layout: "horizontal" }),
|
|
8574
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Requester IP Address", value: "-", layout: "horizontal" }),
|
|
8575
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Settlement Filename", value: "-", layout: "horizontal" }),
|
|
8576
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Duplicate of Payment ID", value: "-", layout: "horizontal" }),
|
|
8577
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8578
|
+
InfoField,
|
|
8579
|
+
{
|
|
8580
|
+
label: "Product ID",
|
|
8581
|
+
value: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "link", className: "h-auto p-0 text-sm", children: "130" }),
|
|
8582
|
+
layout: "horizontal"
|
|
8583
|
+
}
|
|
8584
|
+
),
|
|
8585
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Returned In File", value: "-", layout: "horizontal" }),
|
|
8586
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Alerts", value: "-", layout: "horizontal" })
|
|
8587
|
+
] }) }),
|
|
8588
|
+
isACHTransfer && transaction.achDetails && /* @__PURE__ */ jsxRuntime.jsx(ACHDetailsSection, { data: transaction.achDetails }),
|
|
8589
|
+
isWireTransfer && transaction.wireDetails && /* @__PURE__ */ jsxRuntime.jsx(WireDetailsSection, { data: transaction.wireDetails })
|
|
8590
|
+
] }),
|
|
8591
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:w-64", children: /* @__PURE__ */ jsxRuntime.jsx(FormCard, { title: "Transaction Timeline", children: /* @__PURE__ */ jsxRuntime.jsx(AlertTimeline, { events: mockTransactionTimeline }) }) })
|
|
8592
|
+
] })
|
|
8593
|
+
}
|
|
8594
|
+
);
|
|
8595
|
+
};
|
|
8596
|
+
var TransactionDetail_default = TransactionDetail;
|
|
8597
|
+
function UIKit() {
|
|
8598
|
+
const breadcrumbs = [
|
|
8599
|
+
{ label: "UI Kit" }
|
|
8600
|
+
];
|
|
8601
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-screen bg-gradient-subtle", children: /* @__PURE__ */ jsxRuntime.jsx(Container, { size: "xl", children: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { spacing: "lg", children: [
|
|
8602
|
+
/* @__PURE__ */ jsxRuntime.jsx(Breadcrumb, { items: breadcrumbs }),
|
|
8603
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
8604
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-3xl font-bold text-foreground", children: "UI Kit" }),
|
|
8605
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground mt-2", children: "Complete collection of reusable components, layouts, and patterns" })
|
|
8606
|
+
] }),
|
|
8607
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Tabs, { defaultValue: "showcase", className: "w-full", children: [
|
|
8608
|
+
/* @__PURE__ */ jsxRuntime.jsxs(TabsList, { className: "grid w-full grid-cols-3", children: [
|
|
8609
|
+
/* @__PURE__ */ jsxRuntime.jsx(TabsTrigger, { value: "showcase", children: "Component Showcase" }),
|
|
8610
|
+
/* @__PURE__ */ jsxRuntime.jsx(TabsTrigger, { value: "patterns", children: "Pattern Library" }),
|
|
8611
|
+
/* @__PURE__ */ jsxRuntime.jsx(TabsTrigger, { value: "demo", children: "Dashboard Demo" })
|
|
8612
|
+
] }),
|
|
8613
|
+
/* @__PURE__ */ jsxRuntime.jsx(TabsContent, { value: "showcase", className: "mt-6", children: /* @__PURE__ */ jsxRuntime.jsx(UIKitShowcase, {}) }),
|
|
8614
|
+
/* @__PURE__ */ jsxRuntime.jsx(TabsContent, { value: "patterns", className: "mt-6", children: /* @__PURE__ */ jsxRuntime.jsx(PatternLibrary, {}) }),
|
|
8615
|
+
/* @__PURE__ */ jsxRuntime.jsx(TabsContent, { value: "demo", className: "mt-6", children: /* @__PURE__ */ jsxRuntime.jsx(DashboardDemo, {}) })
|
|
8616
|
+
] })
|
|
8617
|
+
] }) }) });
|
|
8618
|
+
}
|
|
6113
8619
|
|
|
6114
8620
|
exports.ACHBankCard = ACHBankCard;
|
|
6115
8621
|
exports.ACHBasicInfoCard = ACHBasicInfoCard;
|
|
@@ -6117,9 +8623,11 @@ exports.ACHDetailsSection = ACHDetailsSection;
|
|
|
6117
8623
|
exports.ACHTransferSection = ACHTransferSection;
|
|
6118
8624
|
exports.AccountCard = AccountCard;
|
|
6119
8625
|
exports.AddressForm = AddressForm;
|
|
8626
|
+
exports.AlertDetail = AlertDetail_default;
|
|
6120
8627
|
exports.AlertDocuments = AlertDocuments;
|
|
6121
8628
|
exports.AlertNotes = AlertNotes;
|
|
6122
8629
|
exports.AlertTimeline = AlertTimeline;
|
|
8630
|
+
exports.Alerts = Alerts_default;
|
|
6123
8631
|
exports.AppSidebar = AppSidebar;
|
|
6124
8632
|
exports.Badge = Badge;
|
|
6125
8633
|
exports.BankAddressCard = BankAddressCard;
|
|
@@ -6130,6 +8638,7 @@ exports.BeneficiaryAddress = BeneficiaryAddress;
|
|
|
6130
8638
|
exports.BeneficiaryCard = BeneficiaryCard;
|
|
6131
8639
|
exports.BeneficiaryDomesticWire = BeneficiaryDomesticWire;
|
|
6132
8640
|
exports.Breadcrumb = Breadcrumb;
|
|
8641
|
+
exports.Business = Business_default;
|
|
6133
8642
|
exports.BusinessProfileCard = BusinessProfileCard;
|
|
6134
8643
|
exports.BusinessStatusCard = BusinessStatusCard;
|
|
6135
8644
|
exports.BusinessTypeBadge = BusinessTypeBadge;
|
|
@@ -6141,13 +8650,19 @@ exports.CardDescription = CardDescription;
|
|
|
6141
8650
|
exports.CardFooter = CardFooter;
|
|
6142
8651
|
exports.CardHeader = CardHeader;
|
|
6143
8652
|
exports.CardTitle = CardTitle;
|
|
8653
|
+
exports.Cases = Cases_default;
|
|
6144
8654
|
exports.ContactInfoCard = ContactInfoCard;
|
|
6145
8655
|
exports.Container = Container;
|
|
6146
8656
|
exports.ContextSection = ContextSection;
|
|
6147
8657
|
exports.CounterpartyBasicInfo = CounterpartyBasicInfo;
|
|
8658
|
+
exports.CounterpartyDomesticWire = DomesticWire_default;
|
|
8659
|
+
exports.CounterpartyManage = Manage_default;
|
|
6148
8660
|
exports.CounterpartyProfileCard = CounterpartyProfileCard;
|
|
6149
8661
|
exports.CounterpartyRecordsCard = CounterpartyRecordsCard;
|
|
6150
8662
|
exports.CounterpartyTypeBadge = CounterpartyTypeBadge;
|
|
8663
|
+
exports.CreateBusiness = Create_default;
|
|
8664
|
+
exports.CreateCounterparty = Create_default2;
|
|
8665
|
+
exports.Dashboard = Dashboard_default;
|
|
6151
8666
|
exports.DashboardDemo = DashboardDemo;
|
|
6152
8667
|
exports.DataGrid = DataGrid;
|
|
6153
8668
|
exports.DataTable = DataTable;
|
|
@@ -6189,6 +8704,8 @@ exports.Label = Label;
|
|
|
6189
8704
|
exports.ListPage = ListPage;
|
|
6190
8705
|
exports.MainLayout = MainLayout;
|
|
6191
8706
|
exports.MetricCard = MetricCard;
|
|
8707
|
+
exports.NewTransaction = NewTransaction;
|
|
8708
|
+
exports.NotFound = NotFound_default;
|
|
6192
8709
|
exports.OriginatorCard = OriginatorCard;
|
|
6193
8710
|
exports.OriginatorFI = OriginatorFI;
|
|
6194
8711
|
exports.OriginatorFIAddress = OriginatorFIAddress;
|
|
@@ -6252,6 +8769,9 @@ exports.Tooltip = Tooltip;
|
|
|
6252
8769
|
exports.TooltipContent = TooltipContent;
|
|
6253
8770
|
exports.TooltipProvider = TooltipProvider;
|
|
6254
8771
|
exports.TooltipTrigger = TooltipTrigger;
|
|
8772
|
+
exports.TransactionDetail = TransactionDetail_default;
|
|
8773
|
+
exports.TransactionHistory = TransactionHistory_default;
|
|
8774
|
+
exports.UIKit = UIKit;
|
|
6255
8775
|
exports.UIKitShowcase = UIKitShowcase;
|
|
6256
8776
|
exports.WireDetailsSection = WireDetailsSection;
|
|
6257
8777
|
exports.WireTransferSection = WireTransferSection;
|