braid-ui 1.0.66 → 1.0.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/braid-ui.css +4 -0
- package/dist/css/braid-ui.min.css +1 -1
- package/dist/index.cjs +333 -202
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -7
- package/dist/index.d.ts +4 -7
- package/dist/index.js +333 -202
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -385,10 +385,6 @@ var AlertTimeline = ({ events }) => {
|
|
|
385
385
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("absolute left-0 top-0 flex-none", getStatusColor2(event.status, event.action)), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-4", children: getIcon(event.action) }) }),
|
|
386
386
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-0.5", children: [
|
|
387
387
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-medium text-foreground", children: event.action }),
|
|
388
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground", children: [
|
|
389
|
-
"by ",
|
|
390
|
-
event.user
|
|
391
|
-
] }),
|
|
392
388
|
event.details && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: event.details }),
|
|
393
389
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground/70 pt-0.5", children: event.timestamp })
|
|
394
390
|
] })
|
|
@@ -1363,7 +1359,7 @@ var DialogDescription = React15__namespace.forwardRef(({ className, ...props },
|
|
|
1363
1359
|
}
|
|
1364
1360
|
));
|
|
1365
1361
|
DialogDescription.displayName = DialogPrimitive__namespace.Description.displayName;
|
|
1366
|
-
var JsonViewer = ({ data, className, compact = false, maxHeight = "60vh" }) => {
|
|
1362
|
+
var JsonViewer = ({ data, className, compact = false, maxHeight = "60vh", expandFully = false }) => {
|
|
1367
1363
|
const [copied, setCopied] = React15.useState(false);
|
|
1368
1364
|
const handleCopy = () => {
|
|
1369
1365
|
navigator.clipboard.writeText(JSON.stringify(data, null, 2));
|
|
@@ -1391,18 +1387,18 @@ var JsonViewer = ({ data, className, compact = false, maxHeight = "60vh" }) => {
|
|
|
1391
1387
|
"div",
|
|
1392
1388
|
{
|
|
1393
1389
|
className: cn(
|
|
1394
|
-
"
|
|
1395
|
-
compact ? "max-h-[300px] p-2 text-xs" :
|
|
1390
|
+
"bg-muted/30 rounded-lg border font-mono",
|
|
1391
|
+
expandFully ? "p-4 text-xs" : compact ? "max-h-[300px] overflow-auto p-2 text-xs" : "overflow-auto p-4 text-xs"
|
|
1396
1392
|
),
|
|
1397
|
-
style: { maxHeight: compact ? "300px" : maxHeight },
|
|
1393
|
+
style: expandFully ? void 0 : { maxHeight: compact ? "300px" : maxHeight },
|
|
1398
1394
|
children: /* @__PURE__ */ jsxRuntime.jsx(JsonNode, { data, name: "root", depth: 0, compact })
|
|
1399
1395
|
}
|
|
1400
1396
|
)
|
|
1401
1397
|
] });
|
|
1402
1398
|
};
|
|
1403
1399
|
var JsonNode = ({ data, name, depth, compact = false }) => {
|
|
1404
|
-
const [isExpanded, setIsExpanded] = React15.useState(
|
|
1405
|
-
const indent =
|
|
1400
|
+
const [isExpanded, setIsExpanded] = React15.useState(true);
|
|
1401
|
+
const indent = depth * 8;
|
|
1406
1402
|
if (data === null) {
|
|
1407
1403
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { paddingLeft: indent }, className: "text-muted-foreground", children: [
|
|
1408
1404
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary", children: name }),
|
|
@@ -8281,31 +8277,10 @@ var ACHDetailsSection = ({ data }) => {
|
|
|
8281
8277
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-x-8 gap-y-4", children: [
|
|
8282
8278
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Type", value: data.type, layout: "horizontal" }),
|
|
8283
8279
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Originator Name", value: data.originatorName, layout: "horizontal" }),
|
|
8284
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8285
|
-
InfoField,
|
|
8286
|
-
{
|
|
8287
|
-
label: "Originator Account Number",
|
|
8288
|
-
value: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "link", className: "h-auto p-0 text-sm", children: data.originatorAccountNumber }),
|
|
8289
|
-
layout: "horizontal"
|
|
8290
|
-
}
|
|
8291
|
-
),
|
|
8280
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Originator Account Number", value: data.originatorAccountNumber, layout: "horizontal" }),
|
|
8292
8281
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Receiver Name", value: data.receiverName, layout: "horizontal" }),
|
|
8293
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8294
|
-
|
|
8295
|
-
{
|
|
8296
|
-
label: "Receiver Account Number",
|
|
8297
|
-
value: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "link", className: "h-auto p-0 text-sm", children: data.receiverAccountNumber }),
|
|
8298
|
-
layout: "horizontal"
|
|
8299
|
-
}
|
|
8300
|
-
),
|
|
8301
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8302
|
-
InfoField,
|
|
8303
|
-
{
|
|
8304
|
-
label: "Receiver Routing Number",
|
|
8305
|
-
value: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "link", className: "h-auto p-0 text-sm", children: data.receiverRoutingNumber }),
|
|
8306
|
-
layout: "horizontal"
|
|
8307
|
-
}
|
|
8308
|
-
),
|
|
8282
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Receiver Account Number", value: data.receiverAccountNumber, layout: "horizontal" }),
|
|
8283
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Receiver Routing Number", value: data.receiverRoutingNumber, layout: "horizontal" }),
|
|
8309
8284
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Amount", value: formatCurrency5(data.amount), layout: "horizontal" }),
|
|
8310
8285
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "SEC Code", value: data.secCode, layout: "horizontal" }),
|
|
8311
8286
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Company Entry Description", value: data.companyEntryDescription, layout: "horizontal" }),
|
|
@@ -8314,13 +8289,25 @@ var ACHDetailsSection = ({ data }) => {
|
|
|
8314
8289
|
data.individualName && /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Individual Name", value: data.individualName, layout: "horizontal" }),
|
|
8315
8290
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Trace Number", value: data.traceNumber, layout: "horizontal" })
|
|
8316
8291
|
] }),
|
|
8317
|
-
data.raw && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8318
|
-
|
|
8292
|
+
data.raw && /* @__PURE__ */ jsxRuntime.jsx(CollapsibleRawSection, { data: data.raw })
|
|
8293
|
+
] });
|
|
8294
|
+
};
|
|
8295
|
+
var CollapsibleRawSection = ({ data }) => {
|
|
8296
|
+
const [isExpanded, setIsExpanded] = React15.useState(false);
|
|
8297
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-6 pt-6 border-t border-border", children: [
|
|
8298
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8299
|
+
"button",
|
|
8319
8300
|
{
|
|
8320
|
-
|
|
8321
|
-
|
|
8301
|
+
type: "button",
|
|
8302
|
+
onClick: () => setIsExpanded(!isExpanded),
|
|
8303
|
+
className: "flex items-center gap-2 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors",
|
|
8304
|
+
children: [
|
|
8305
|
+
isExpanded ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4" }),
|
|
8306
|
+
"Raw message"
|
|
8307
|
+
]
|
|
8322
8308
|
}
|
|
8323
|
-
)
|
|
8309
|
+
),
|
|
8310
|
+
isExpanded && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsx(JsonViewer, { data, expandFully: true }) })
|
|
8324
8311
|
] });
|
|
8325
8312
|
};
|
|
8326
8313
|
var WireDetailsSection = ({ data, onIMADChange }) => {
|
|
@@ -8412,67 +8399,39 @@ var WireDetailsSection = ({ data, onIMADChange }) => {
|
|
|
8412
8399
|
}
|
|
8413
8400
|
),
|
|
8414
8401
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Originator Name", value: data.originatorName, layout: "horizontal" }),
|
|
8415
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8416
|
-
InfoField,
|
|
8417
|
-
{
|
|
8418
|
-
label: "Originator Account Number",
|
|
8419
|
-
value: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "link", className: "h-auto p-0 text-sm", children: data.originatorAccountNumber }),
|
|
8420
|
-
layout: "horizontal"
|
|
8421
|
-
}
|
|
8422
|
-
),
|
|
8423
|
-
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Originator Address", value: data.originatorAddress, layout: "horizontal" }),
|
|
8402
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Originator Account Number", value: data.originatorAccountNumber, layout: "horizontal" }),
|
|
8424
8403
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Beneficiary Name", value: data.beneficiaryName, layout: "horizontal" }),
|
|
8425
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8426
|
-
InfoField,
|
|
8427
|
-
{
|
|
8428
|
-
label: "Beneficiary Account Number",
|
|
8429
|
-
value: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "link", className: "h-auto p-0 text-sm", children: data.beneficiaryAccountNumber }),
|
|
8430
|
-
layout: "horizontal"
|
|
8431
|
-
}
|
|
8432
|
-
),
|
|
8433
|
-
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Beneficiary Address", value: data.beneficiaryAddress, layout: "horizontal" }),
|
|
8404
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Beneficiary Account Number", value: data.beneficiaryAccountNumber, layout: "horizontal" }),
|
|
8434
8405
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Beneficiary FI Name", value: data.beneficiaryFIName, layout: "horizontal" }),
|
|
8435
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8436
|
-
InfoField,
|
|
8437
|
-
{
|
|
8438
|
-
label: "Beneficiary FI Routing Number",
|
|
8439
|
-
value: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "link", className: "h-auto p-0 text-sm", children: data.beneficiaryFIRoutingNumber }),
|
|
8440
|
-
layout: "horizontal"
|
|
8441
|
-
}
|
|
8442
|
-
),
|
|
8443
|
-
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Beneficiary FI Address", value: data.beneficiaryFIAddress, layout: "horizontal" }),
|
|
8406
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Beneficiary FI Routing Number", value: data.beneficiaryFIRoutingNumber, layout: "horizontal" }),
|
|
8444
8407
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Originator FI Name", value: data.originatorFIName, layout: "horizontal" }),
|
|
8445
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8446
|
-
InfoField,
|
|
8447
|
-
{
|
|
8448
|
-
label: "Originator FI Routing Number",
|
|
8449
|
-
value: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "link", className: "h-auto p-0 text-sm", children: data.originatorFIRoutingNumber }),
|
|
8450
|
-
layout: "horizontal"
|
|
8451
|
-
}
|
|
8452
|
-
),
|
|
8453
|
-
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Originator FI Address", value: data.originatorFIAddress || "-", layout: "horizontal" }),
|
|
8408
|
+
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Originator FI Routing Number", value: data.originatorFIRoutingNumber, layout: "horizontal" }),
|
|
8454
8409
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Originator to Beneficiary Info", value: data.originatorToBeneficiaryInfo || "-", layout: "horizontal" }),
|
|
8455
8410
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "File Handle", value: data.fileHandle || "-", layout: "horizontal" }),
|
|
8456
8411
|
data.intermediaryFIName && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
8457
8412
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Intermediary FI Name", value: data.intermediaryFIName, layout: "horizontal" }),
|
|
8458
|
-
data.intermediaryFIRoutingNumber && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8459
|
-
InfoField,
|
|
8460
|
-
{
|
|
8461
|
-
label: "Intermediary FI Routing Number",
|
|
8462
|
-
value: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "link", className: "h-auto p-0 text-sm", children: data.intermediaryFIRoutingNumber }),
|
|
8463
|
-
layout: "horizontal"
|
|
8464
|
-
}
|
|
8465
|
-
),
|
|
8466
|
-
data.intermediaryFIAddress && /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Intermediary FI Address", value: data.intermediaryFIAddress, layout: "horizontal" })
|
|
8413
|
+
data.intermediaryFIRoutingNumber && /* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Intermediary FI Routing Number", value: data.intermediaryFIRoutingNumber, layout: "horizontal" })
|
|
8467
8414
|
] })
|
|
8468
8415
|
] }),
|
|
8469
|
-
data.raw && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8470
|
-
|
|
8416
|
+
data.raw && /* @__PURE__ */ jsxRuntime.jsx(CollapsibleRawSection2, { data: data.raw })
|
|
8417
|
+
] });
|
|
8418
|
+
};
|
|
8419
|
+
var CollapsibleRawSection2 = ({ data }) => {
|
|
8420
|
+
const [isExpanded, setIsExpanded] = React15.useState(false);
|
|
8421
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-6 pt-6 border-t border-border", children: [
|
|
8422
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8423
|
+
"button",
|
|
8471
8424
|
{
|
|
8472
|
-
|
|
8473
|
-
|
|
8425
|
+
type: "button",
|
|
8426
|
+
onClick: () => setIsExpanded(!isExpanded),
|
|
8427
|
+
className: "flex items-center gap-2 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors",
|
|
8428
|
+
children: [
|
|
8429
|
+
isExpanded ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4" }),
|
|
8430
|
+
"Raw message"
|
|
8431
|
+
]
|
|
8474
8432
|
}
|
|
8475
|
-
)
|
|
8433
|
+
),
|
|
8434
|
+
isExpanded && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsx(JsonViewer, { data, expandFully: true }) })
|
|
8476
8435
|
] });
|
|
8477
8436
|
};
|
|
8478
8437
|
var formatCurrency2 = (value) => {
|
|
@@ -9044,6 +9003,7 @@ var EnhancedMultiSelect = ({
|
|
|
9044
9003
|
disabled = false
|
|
9045
9004
|
}) => {
|
|
9046
9005
|
const [open, setOpen] = React15__namespace.useState(false);
|
|
9006
|
+
const [searchQuery, setSearchQuery] = React15__namespace.useState("");
|
|
9047
9007
|
const [popoverContainer, setPopoverContainer] = React15__namespace.useState(null);
|
|
9048
9008
|
const triggerRef = React15__namespace.useRef(null);
|
|
9049
9009
|
React15__namespace.useEffect(() => {
|
|
@@ -9065,9 +9025,19 @@ var EnhancedMultiSelect = ({
|
|
|
9065
9025
|
onValueChange(value.filter((v) => v !== optionValue));
|
|
9066
9026
|
};
|
|
9067
9027
|
const selectedLabels = value.map((v) => options.find((opt) => opt.value === v)?.label).filter(Boolean);
|
|
9028
|
+
const filteredOptions = React15__namespace.useMemo(() => {
|
|
9029
|
+
if (!searchQuery.trim()) return options;
|
|
9030
|
+
const query = searchQuery.toLowerCase();
|
|
9031
|
+
return options.filter(
|
|
9032
|
+
(option) => option.label.toLowerCase().includes(query)
|
|
9033
|
+
);
|
|
9034
|
+
}, [options, searchQuery]);
|
|
9068
9035
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-2", className), children: [
|
|
9069
9036
|
label && /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", children: label }),
|
|
9070
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Popover, { open, onOpenChange:
|
|
9037
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Popover, { open, onOpenChange: (isOpen) => {
|
|
9038
|
+
setOpen(isOpen);
|
|
9039
|
+
if (!isOpen) setSearchQuery("");
|
|
9040
|
+
}, modal: false, children: [
|
|
9071
9041
|
/* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9072
9042
|
Button,
|
|
9073
9043
|
{
|
|
@@ -9106,7 +9076,7 @@ var EnhancedMultiSelect = ({
|
|
|
9106
9076
|
]
|
|
9107
9077
|
}
|
|
9108
9078
|
) }),
|
|
9109
|
-
/* @__PURE__ */ jsxRuntime.
|
|
9079
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
9110
9080
|
PopoverContent,
|
|
9111
9081
|
{
|
|
9112
9082
|
container: popoverContainer,
|
|
@@ -9119,44 +9089,63 @@ var EnhancedMultiSelect = ({
|
|
|
9119
9089
|
e.preventDefault();
|
|
9120
9090
|
}
|
|
9121
9091
|
},
|
|
9122
|
-
children:
|
|
9123
|
-
"div",
|
|
9124
|
-
|
|
9125
|
-
|
|
9126
|
-
|
|
9127
|
-
|
|
9128
|
-
|
|
9129
|
-
|
|
9130
|
-
|
|
9131
|
-
|
|
9132
|
-
|
|
9133
|
-
|
|
9134
|
-
|
|
9135
|
-
|
|
9136
|
-
|
|
9137
|
-
|
|
9138
|
-
|
|
9139
|
-
|
|
9140
|
-
|
|
9141
|
-
|
|
9142
|
-
|
|
9143
|
-
|
|
9144
|
-
|
|
9145
|
-
|
|
9146
|
-
|
|
9147
|
-
|
|
9092
|
+
children: [
|
|
9093
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-2 border-b", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
9094
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "absolute left-2 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }),
|
|
9095
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9096
|
+
"input",
|
|
9097
|
+
{
|
|
9098
|
+
type: "text",
|
|
9099
|
+
placeholder: "Search...",
|
|
9100
|
+
value: searchQuery,
|
|
9101
|
+
onChange: (e) => setSearchQuery(e.target.value),
|
|
9102
|
+
className: "w-full pl-8 pr-2 py-1.5 text-sm border rounded-md bg-background focus:outline-none focus:ring-1 focus:ring-ring",
|
|
9103
|
+
onKeyDown: (e) => e.stopPropagation()
|
|
9104
|
+
}
|
|
9105
|
+
)
|
|
9106
|
+
] }) }),
|
|
9107
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
9108
|
+
"div",
|
|
9109
|
+
{
|
|
9110
|
+
className: "max-h-[240px] overflow-y-auto overscroll-contain p-1",
|
|
9111
|
+
onWheel: (e) => e.stopPropagation(),
|
|
9112
|
+
onTouchMove: (e) => e.stopPropagation(),
|
|
9113
|
+
children: [
|
|
9114
|
+
filteredOptions.map((option) => {
|
|
9115
|
+
const isSelected = value.includes(option.value);
|
|
9116
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9117
|
+
"div",
|
|
9118
|
+
{
|
|
9119
|
+
role: "option",
|
|
9120
|
+
"aria-selected": isSelected,
|
|
9121
|
+
className: cn(
|
|
9122
|
+
"flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm cursor-pointer hover:bg-accent hover:text-accent-foreground select-none",
|
|
9123
|
+
isSelected && "bg-accent"
|
|
9124
|
+
),
|
|
9125
|
+
onMouseDown: (e) => e.preventDefault(),
|
|
9126
|
+
onClick: () => handleSelect(option.value),
|
|
9127
|
+
children: [
|
|
9128
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9129
|
+
"div",
|
|
9130
|
+
{
|
|
9131
|
+
className: cn(
|
|
9132
|
+
"flex h-4 w-4 items-center justify-center rounded-sm border border-primary",
|
|
9133
|
+
isSelected ? "bg-primary text-primary-foreground" : "opacity-50"
|
|
9134
|
+
),
|
|
9135
|
+
children: isSelected && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-3 w-3" })
|
|
9136
|
+
}
|
|
9148
9137
|
),
|
|
9149
|
-
|
|
9150
|
-
|
|
9151
|
-
|
|
9152
|
-
|
|
9153
|
-
|
|
9154
|
-
},
|
|
9155
|
-
|
|
9156
|
-
|
|
9157
|
-
}
|
|
9158
|
-
|
|
9159
|
-
|
|
9138
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: option.label })
|
|
9139
|
+
]
|
|
9140
|
+
},
|
|
9141
|
+
option.value
|
|
9142
|
+
);
|
|
9143
|
+
}),
|
|
9144
|
+
filteredOptions.length === 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-4 text-sm text-center text-muted-foreground", children: "No options found" })
|
|
9145
|
+
]
|
|
9146
|
+
}
|
|
9147
|
+
)
|
|
9148
|
+
]
|
|
9160
9149
|
}
|
|
9161
9150
|
)
|
|
9162
9151
|
] })
|
|
@@ -9621,6 +9610,7 @@ var TransactionDetailView = ({
|
|
|
9621
9610
|
onCounterpartyClick,
|
|
9622
9611
|
onOFACClick,
|
|
9623
9612
|
onProductClick,
|
|
9613
|
+
onAlertClick,
|
|
9624
9614
|
onIMADChange,
|
|
9625
9615
|
isLoading,
|
|
9626
9616
|
error,
|
|
@@ -9647,6 +9637,12 @@ var TransactionDetailView = ({
|
|
|
9647
9637
|
] })
|
|
9648
9638
|
] }) });
|
|
9649
9639
|
}
|
|
9640
|
+
const [copiedField, setCopiedField] = React15.useState(null);
|
|
9641
|
+
const handleCopy = (value, fieldName) => {
|
|
9642
|
+
navigator.clipboard.writeText(value);
|
|
9643
|
+
setCopiedField(fieldName);
|
|
9644
|
+
setTimeout(() => setCopiedField(null), 2e3);
|
|
9645
|
+
};
|
|
9650
9646
|
if (!transaction) {
|
|
9651
9647
|
return null;
|
|
9652
9648
|
}
|
|
@@ -9688,15 +9684,26 @@ var TransactionDetailView = ({
|
|
|
9688
9684
|
InfoField,
|
|
9689
9685
|
{
|
|
9690
9686
|
label: "Account Number",
|
|
9691
|
-
value: /* @__PURE__ */ jsxRuntime.
|
|
9692
|
-
|
|
9693
|
-
|
|
9694
|
-
|
|
9695
|
-
|
|
9696
|
-
|
|
9697
|
-
|
|
9698
|
-
|
|
9699
|
-
|
|
9687
|
+
value: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
9688
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9689
|
+
Button,
|
|
9690
|
+
{
|
|
9691
|
+
variant: "link",
|
|
9692
|
+
className: "h-auto p-0 text-sm",
|
|
9693
|
+
onClick: () => onAccountClick(transaction.accountNumber),
|
|
9694
|
+
children: transaction.accountNumber
|
|
9695
|
+
}
|
|
9696
|
+
),
|
|
9697
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9698
|
+
"button",
|
|
9699
|
+
{
|
|
9700
|
+
type: "button",
|
|
9701
|
+
onClick: () => handleCopy(transaction.accountNumber, "accountNumber"),
|
|
9702
|
+
className: "text-muted-foreground hover:text-foreground transition-colors",
|
|
9703
|
+
children: copiedField === "accountNumber" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-3.5 w-3.5 text-success" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Copy, { className: "h-3.5 w-3.5" })
|
|
9704
|
+
}
|
|
9705
|
+
)
|
|
9706
|
+
] }),
|
|
9700
9707
|
layout: "horizontal"
|
|
9701
9708
|
}
|
|
9702
9709
|
),
|
|
@@ -9752,7 +9759,25 @@ var TransactionDetailView = ({
|
|
|
9752
9759
|
),
|
|
9753
9760
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Original Filename", value: transaction.originalFilename || "-", layout: "horizontal" }),
|
|
9754
9761
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Loaded From File", value: transaction.loadedFromFile || "-", layout: "horizontal" }),
|
|
9755
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9762
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9763
|
+
InfoField,
|
|
9764
|
+
{
|
|
9765
|
+
label: "Payment ID",
|
|
9766
|
+
value: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
9767
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: transaction.id }),
|
|
9768
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9769
|
+
"button",
|
|
9770
|
+
{
|
|
9771
|
+
type: "button",
|
|
9772
|
+
onClick: () => handleCopy(transaction.id, "paymentId"),
|
|
9773
|
+
className: "text-muted-foreground hover:text-foreground transition-colors",
|
|
9774
|
+
children: copiedField === "paymentId" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-3.5 w-3.5 text-success" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Copy, { className: "h-3.5 w-3.5" })
|
|
9775
|
+
}
|
|
9776
|
+
)
|
|
9777
|
+
] }),
|
|
9778
|
+
layout: "horizontal"
|
|
9779
|
+
}
|
|
9780
|
+
),
|
|
9756
9781
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Linked Payment ID", value: transaction.linkedPaymentId || "-", layout: "horizontal" }),
|
|
9757
9782
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Pending until Date", value: transaction.pendingUntilDate || "-", layout: "horizontal" }),
|
|
9758
9783
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Further Credit To", value: transaction.furtherCreditTo || "-", layout: "horizontal" }),
|
|
@@ -9778,7 +9803,25 @@ var TransactionDetailView = ({
|
|
|
9778
9803
|
}
|
|
9779
9804
|
),
|
|
9780
9805
|
/* @__PURE__ */ jsxRuntime.jsx(InfoField, { label: "Returned In File", value: transaction.returnedInFile || "-", layout: "horizontal" }),
|
|
9781
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9806
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9807
|
+
InfoField,
|
|
9808
|
+
{
|
|
9809
|
+
label: "Alerts",
|
|
9810
|
+
value: transaction.alerts && transaction.alerts.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: transaction.alerts.map((alertId, index) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center", children: [
|
|
9811
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9812
|
+
Button,
|
|
9813
|
+
{
|
|
9814
|
+
variant: "link",
|
|
9815
|
+
className: "h-auto p-0 text-sm",
|
|
9816
|
+
onClick: () => onAlertClick?.(alertId),
|
|
9817
|
+
children: alertId
|
|
9818
|
+
}
|
|
9819
|
+
),
|
|
9820
|
+
index < transaction.alerts.length - 1 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mr-1", children: "," })
|
|
9821
|
+
] }, alertId)) }) : "-",
|
|
9822
|
+
layout: "horizontal"
|
|
9823
|
+
}
|
|
9824
|
+
)
|
|
9782
9825
|
] }) }),
|
|
9783
9826
|
isACHTransfer && transaction.achDetails && /* @__PURE__ */ jsxRuntime.jsx(ACHDetailsSection, { data: transaction.achDetails }),
|
|
9784
9827
|
isWireTransfer && transaction.wireDetails && /* @__PURE__ */ jsxRuntime.jsx(WireDetailsSection, { data: transaction.wireDetails, onIMADChange })
|
|
@@ -14900,72 +14943,156 @@ var mockTransactions = [
|
|
|
14900
14943
|
intermediaryFIAddress: "100 Federal Street, Boston, MA 02110",
|
|
14901
14944
|
imad: "20250930MMQFMP030000123",
|
|
14902
14945
|
raw: {
|
|
14903
|
-
|
|
14904
|
-
|
|
14905
|
-
|
|
14906
|
-
|
|
14907
|
-
|
|
14908
|
-
|
|
14909
|
-
|
|
14910
|
-
|
|
14911
|
-
|
|
14912
|
-
|
|
14913
|
-
|
|
14914
|
-
|
|
14915
|
-
|
|
14916
|
-
|
|
14917
|
-
|
|
14918
|
-
|
|
14919
|
-
|
|
14920
|
-
|
|
14921
|
-
|
|
14922
|
-
|
|
14923
|
-
|
|
14924
|
-
|
|
14925
|
-
|
|
14926
|
-
|
|
14927
|
-
|
|
14928
|
-
|
|
14929
|
-
|
|
14930
|
-
|
|
14931
|
-
|
|
14932
|
-
|
|
14933
|
-
|
|
14934
|
-
|
|
14935
|
-
|
|
14936
|
-
|
|
14937
|
-
|
|
14938
|
-
|
|
14939
|
-
|
|
14940
|
-
|
|
14941
|
-
|
|
14942
|
-
|
|
14943
|
-
|
|
14944
|
-
|
|
14945
|
-
|
|
14946
|
-
|
|
14947
|
-
|
|
14948
|
-
|
|
14949
|
-
|
|
14950
|
-
|
|
14951
|
-
|
|
14952
|
-
|
|
14953
|
-
|
|
14954
|
-
|
|
14946
|
+
fiToFICstmrCdtTrf: {
|
|
14947
|
+
grpHdr: {
|
|
14948
|
+
msgId: "20250703QMGFT004000033",
|
|
14949
|
+
creDtTm: {
|
|
14950
|
+
dateTime: {
|
|
14951
|
+
date: { year: 2025, month: 7, day: 3 },
|
|
14952
|
+
time: { hour: 12, minute: 26, second: 1, nano: 99e7 }
|
|
14953
|
+
},
|
|
14954
|
+
offset: { totalSeconds: -14400 }
|
|
14955
|
+
},
|
|
14956
|
+
nbOfTxs: "1",
|
|
14957
|
+
sttlmInf: {
|
|
14958
|
+
sttlmMtd: "CLRG",
|
|
14959
|
+
clrSys: { cd: "FDW" }
|
|
14960
|
+
}
|
|
14961
|
+
},
|
|
14962
|
+
cdtTrfTxInf: [
|
|
14963
|
+
{
|
|
14964
|
+
pmtId: {
|
|
14965
|
+
endToEndId: "Test wire #1",
|
|
14966
|
+
uetr: "2638c715-d0a2-4fc9-a79b-a4e78dc9cd49"
|
|
14967
|
+
},
|
|
14968
|
+
pmtTpInf: {
|
|
14969
|
+
lclInstrm: { prtry: "CTRC" }
|
|
14970
|
+
},
|
|
14971
|
+
intrBkSttlmAmt: { value: 38, ccy: "USD" },
|
|
14972
|
+
intrBkSttlmDt: { year: 2025, month: 7, day: 3 },
|
|
14973
|
+
instdAmt: { value: 11, ccy: "USD" },
|
|
14974
|
+
chrgBr: "SHAR",
|
|
14975
|
+
instgAgt: {
|
|
14976
|
+
finInstnId: {
|
|
14977
|
+
clrSysMmbId: {
|
|
14978
|
+
clrSysId: { cd: "USABA" },
|
|
14979
|
+
mmbId: "321177573"
|
|
14980
|
+
}
|
|
14981
|
+
}
|
|
14982
|
+
},
|
|
14983
|
+
instdAgt: {
|
|
14984
|
+
finInstnId: {
|
|
14985
|
+
clrSysMmbId: {
|
|
14986
|
+
clrSysId: { cd: "USABA" },
|
|
14987
|
+
mmbId: "121182881"
|
|
14988
|
+
}
|
|
14989
|
+
}
|
|
14990
|
+
},
|
|
14991
|
+
dbtr: {
|
|
14992
|
+
nm: "Sarah Escobar",
|
|
14993
|
+
pstlAdr: {
|
|
14994
|
+
strtNm: "12345 Kaiser lane",
|
|
14995
|
+
bldgNb: "E425",
|
|
14996
|
+
pstCd: "12345",
|
|
14997
|
+
twnNm: "COSTA MESA",
|
|
14998
|
+
ctrySubDvsn: "CA",
|
|
14999
|
+
ctry: "US"
|
|
15000
|
+
}
|
|
15001
|
+
},
|
|
15002
|
+
dbtrAcct: {
|
|
15003
|
+
id: { othr: { id: "12345678910" } }
|
|
15004
|
+
},
|
|
15005
|
+
dbtrAgt: {
|
|
15006
|
+
finInstnId: {
|
|
15007
|
+
clrSysMmbId: {
|
|
15008
|
+
clrSysId: { cd: "USABA" },
|
|
15009
|
+
mmbId: "321177573"
|
|
15010
|
+
},
|
|
15011
|
+
nm: "NORTH BAY CREDIT UNION",
|
|
15012
|
+
pstlAdr: {
|
|
15013
|
+
strtNm: "397 Aviation Blvd",
|
|
15014
|
+
pstCd: "95403",
|
|
15015
|
+
twnNm: "Santa Rosa",
|
|
15016
|
+
ctrySubDvsn: "CA",
|
|
15017
|
+
ctry: "US"
|
|
15018
|
+
}
|
|
15019
|
+
}
|
|
15020
|
+
},
|
|
15021
|
+
cdtrAgt: {
|
|
15022
|
+
finInstnId: {
|
|
15023
|
+
clrSysMmbId: {
|
|
15024
|
+
clrSysId: { cd: "USABA" },
|
|
15025
|
+
mmbId: "121182881"
|
|
15026
|
+
},
|
|
15027
|
+
nm: "NORTH BAY CREDIT UNION",
|
|
15028
|
+
pstlAdr: {
|
|
15029
|
+
strtNm: "397 Aviation Blvd",
|
|
15030
|
+
pstCd: "12345",
|
|
15031
|
+
twnNm: "Santa Rosa",
|
|
15032
|
+
ctrySubDvsn: "CA",
|
|
15033
|
+
ctry: "US"
|
|
15034
|
+
}
|
|
15035
|
+
}
|
|
15036
|
+
},
|
|
15037
|
+
cdtr: {
|
|
15038
|
+
nm: "Jake from Braid LLC",
|
|
15039
|
+
pstlAdr: {
|
|
15040
|
+
strtNm: "12345 Test Lane",
|
|
15041
|
+
pstCd: "12345",
|
|
15042
|
+
twnNm: "Newport Beach",
|
|
15043
|
+
ctrySubDvsn: "TX",
|
|
15044
|
+
ctry: "US"
|
|
15045
|
+
}
|
|
15046
|
+
},
|
|
15047
|
+
cdtrAcct: {
|
|
15048
|
+
id: { othr: { id: "9988957447" } }
|
|
15049
|
+
},
|
|
15050
|
+
purp: { prtry: "Test wire #1" },
|
|
15051
|
+
rmtInf: { ustrd: ["Test wire #1"] }
|
|
15052
|
+
}
|
|
14955
15053
|
]
|
|
14956
15054
|
},
|
|
14957
|
-
|
|
14958
|
-
|
|
14959
|
-
|
|
14960
|
-
|
|
14961
|
-
|
|
15055
|
+
appHdr: {
|
|
15056
|
+
fr: {
|
|
15057
|
+
fiId: {
|
|
15058
|
+
finInstnId: {
|
|
15059
|
+
clrSysMmbId: { mmbId: "021151080" }
|
|
15060
|
+
}
|
|
15061
|
+
}
|
|
15062
|
+
},
|
|
15063
|
+
to: {
|
|
15064
|
+
fiId: {
|
|
15065
|
+
finInstnId: {
|
|
15066
|
+
clrSysMmbId: { mmbId: "321177573" }
|
|
15067
|
+
}
|
|
15068
|
+
}
|
|
15069
|
+
},
|
|
15070
|
+
bizMsgIdr: "20250703QMGFNP6700018807031250FT01",
|
|
15071
|
+
msgDefIdr: "pacs.008.001.08",
|
|
15072
|
+
bizSvc: "TEST",
|
|
15073
|
+
mktPrctc: {
|
|
15074
|
+
regy: "www2.swift.com/mystandards/#/group/Federal_Reserve_Financial_Services/Fedwire_Funds_Service",
|
|
15075
|
+
id: "frb.fedwire.01"
|
|
15076
|
+
},
|
|
15077
|
+
creDt: {
|
|
15078
|
+
dateTime: {
|
|
15079
|
+
date: { year: 2025, month: 7, day: 3 },
|
|
15080
|
+
time: { hour: 12, minute: 50, second: 30, nano: 22e7 }
|
|
15081
|
+
},
|
|
15082
|
+
offset: { totalSeconds: -14400 }
|
|
15083
|
+
},
|
|
15084
|
+
bizPrcgDt: {
|
|
15085
|
+
dateTime: {
|
|
15086
|
+
date: { year: 2025, month: 7, day: 3 },
|
|
15087
|
+
time: { hour: 12, minute: 50, second: 30, nano: 114e6 }
|
|
15088
|
+
},
|
|
15089
|
+
offset: { totalSeconds: -14400 }
|
|
15090
|
+
},
|
|
15091
|
+
namespace: "urn:iso:std:iso:20022:tech:xsd:head.001.001.03"
|
|
14962
15092
|
},
|
|
14963
|
-
|
|
14964
|
-
|
|
14965
|
-
|
|
14966
|
-
"Net 30 terms - On time payment"
|
|
14967
|
-
],
|
|
14968
|
-
chargeDetails: "OUR"
|
|
15093
|
+
type: "MX",
|
|
15094
|
+
"@xmlns": "urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08",
|
|
15095
|
+
identifier: "pacs.008.001.08"
|
|
14969
15096
|
}
|
|
14970
15097
|
}
|
|
14971
15098
|
},
|
|
@@ -16153,6 +16280,9 @@ var TransactionDetail = () => {
|
|
|
16153
16280
|
const handleProductClick = React15.useCallback((productId) => {
|
|
16154
16281
|
console.log("Navigate to product:", productId);
|
|
16155
16282
|
}, []);
|
|
16283
|
+
const handleAlertClick = React15.useCallback((alertId) => {
|
|
16284
|
+
navigate(`/alerts/${alertId}`);
|
|
16285
|
+
}, [navigate]);
|
|
16156
16286
|
const handleIMADChange = React15.useCallback((newImad) => {
|
|
16157
16287
|
console.log("IMAD changed to:", newImad);
|
|
16158
16288
|
}, []);
|
|
@@ -16184,6 +16314,7 @@ var TransactionDetail = () => {
|
|
|
16184
16314
|
onCounterpartyClick: handleCounterpartyClick,
|
|
16185
16315
|
onOFACClick: handleOFACClick,
|
|
16186
16316
|
onProductClick: handleProductClick,
|
|
16317
|
+
onAlertClick: handleAlertClick,
|
|
16187
16318
|
onIMADChange: handleIMADChange,
|
|
16188
16319
|
isLoading,
|
|
16189
16320
|
error,
|