braid-ui 1.0.3 → 1.0.5
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/README.md +28 -1
- package/dist/index.cjs +980 -977
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +55 -20
- package/dist/index.d.ts +55 -20
- package/dist/index.js +979 -979
- package/dist/index.js.map +1 -1
- package/package.json +12 -8
- package/src/styles.css +124 -0
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as React13 from 'react';
|
|
2
2
|
import { useState, useEffect, useCallback, useMemo } from 'react';
|
|
3
|
-
import { createPortal } from 'react-dom';
|
|
4
|
-
import { Slot } from '@radix-ui/react-slot';
|
|
5
3
|
import { cva } from 'class-variance-authority';
|
|
6
4
|
import { clsx } from 'clsx';
|
|
7
5
|
import { twMerge } from 'tailwind-merge';
|
|
8
6
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
9
|
-
import {
|
|
7
|
+
import { Slot } from '@radix-ui/react-slot';
|
|
8
|
+
import { ChevronDown, ChevronUp, Check, X, PanelLeft, Edit, Home, Globe, CreditCard, Building, MoreVertical, Minus, TrendingDown, TrendingUp, ChevronRight, Eye, Trash2, Plus, MessageSquare, Upload, FileText, Download, Copy, LayoutDashboard, Bell, Briefcase, FileCheck, Receipt, ArrowLeftRight, Users, Building2, Zap, Shield, AlertCircle, RefreshCw, Landmark, Search, Repeat, Box, Settings, BarChart3, Key, Heart, User, AlertTriangle, XCircle, CheckCircle, Clock, Filter, ChevronLeft, Calendar as Calendar$1, CalendarIcon, CheckCircle2, Circle, UserPlus, ChevronsUpDown } from 'lucide-react';
|
|
9
|
+
import { createPortal } from 'react-dom';
|
|
10
10
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
11
11
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
12
12
|
import { NavLink, useLocation, useParams, useNavigate } from 'react-router-dom';
|
|
@@ -26,10 +26,218 @@ import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
|
26
26
|
import * as ToastPrimitives from '@radix-ui/react-toast';
|
|
27
27
|
import { format } from 'date-fns';
|
|
28
28
|
|
|
29
|
-
// src/components/
|
|
29
|
+
// src/components/ui/form-card.tsx
|
|
30
30
|
function cn(...inputs) {
|
|
31
31
|
return twMerge(clsx(inputs));
|
|
32
32
|
}
|
|
33
|
+
var cardVariants = cva(
|
|
34
|
+
"rounded-lg border bg-card text-card-foreground transition-all duration-200",
|
|
35
|
+
{
|
|
36
|
+
variants: {
|
|
37
|
+
variant: {
|
|
38
|
+
default: "shadow-sm",
|
|
39
|
+
elevated: "shadow-md hover:shadow-lg",
|
|
40
|
+
outlined: "border-2 shadow-none",
|
|
41
|
+
ghost: "border-transparent shadow-none bg-transparent",
|
|
42
|
+
subtle: "border-border/75 shadow-none"
|
|
43
|
+
},
|
|
44
|
+
size: {
|
|
45
|
+
sm: "p-3",
|
|
46
|
+
md: "p-4",
|
|
47
|
+
lg: "p-6",
|
|
48
|
+
none: "p-0"
|
|
49
|
+
},
|
|
50
|
+
fullHeight: {
|
|
51
|
+
true: "h-full flex flex-col",
|
|
52
|
+
false: ""
|
|
53
|
+
},
|
|
54
|
+
interactive: {
|
|
55
|
+
true: "cursor-pointer hover:shadow-md hover:scale-[1.02]",
|
|
56
|
+
false: ""
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
defaultVariants: {
|
|
60
|
+
variant: "default",
|
|
61
|
+
size: "none",
|
|
62
|
+
fullHeight: false,
|
|
63
|
+
interactive: false
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
var Card = React13.forwardRef(
|
|
68
|
+
({ className, variant, size, fullHeight, interactive, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
69
|
+
"div",
|
|
70
|
+
{
|
|
71
|
+
ref,
|
|
72
|
+
className: cn(cardVariants({ variant, size, fullHeight, interactive }), className),
|
|
73
|
+
...props
|
|
74
|
+
}
|
|
75
|
+
)
|
|
76
|
+
);
|
|
77
|
+
Card.displayName = "Card";
|
|
78
|
+
var cardHeaderVariants = cva(
|
|
79
|
+
"flex flex-col space-y-1.5",
|
|
80
|
+
{
|
|
81
|
+
variants: {
|
|
82
|
+
size: {
|
|
83
|
+
sm: "px-3 pt-3 pb-2",
|
|
84
|
+
md: "px-4 pt-4 pb-3",
|
|
85
|
+
lg: "px-6 pt-6 pb-4"
|
|
86
|
+
},
|
|
87
|
+
align: {
|
|
88
|
+
start: "items-start",
|
|
89
|
+
center: "items-center",
|
|
90
|
+
end: "items-end"
|
|
91
|
+
},
|
|
92
|
+
direction: {
|
|
93
|
+
row: "flex-row justify-between items-center space-y-0 space-x-4",
|
|
94
|
+
column: "flex-col space-y-1.5"
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
defaultVariants: {
|
|
98
|
+
size: "lg",
|
|
99
|
+
align: "start",
|
|
100
|
+
direction: "column"
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
);
|
|
104
|
+
var CardHeader = React13.forwardRef(
|
|
105
|
+
({ className, size, align, direction, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
106
|
+
"div",
|
|
107
|
+
{
|
|
108
|
+
ref,
|
|
109
|
+
className: cn(cardHeaderVariants({ size, align, direction }), className),
|
|
110
|
+
...props
|
|
111
|
+
}
|
|
112
|
+
)
|
|
113
|
+
);
|
|
114
|
+
CardHeader.displayName = "CardHeader";
|
|
115
|
+
var cardTitleVariants = cva(
|
|
116
|
+
"font-semibold leading-none tracking-tight",
|
|
117
|
+
{
|
|
118
|
+
variants: {
|
|
119
|
+
size: {
|
|
120
|
+
sm: "text-base",
|
|
121
|
+
md: "text-lg",
|
|
122
|
+
lg: "text-xl"
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
defaultVariants: {
|
|
126
|
+
size: "md"
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
var CardTitle = React13.forwardRef(
|
|
131
|
+
({ className, size, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
132
|
+
"h3",
|
|
133
|
+
{
|
|
134
|
+
ref,
|
|
135
|
+
className: cn(cardTitleVariants({ size }), className),
|
|
136
|
+
...props
|
|
137
|
+
}
|
|
138
|
+
)
|
|
139
|
+
);
|
|
140
|
+
CardTitle.displayName = "CardTitle";
|
|
141
|
+
var CardDescription = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
142
|
+
"p",
|
|
143
|
+
{
|
|
144
|
+
ref,
|
|
145
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
146
|
+
...props
|
|
147
|
+
}
|
|
148
|
+
));
|
|
149
|
+
CardDescription.displayName = "CardDescription";
|
|
150
|
+
var cardContentVariants = cva(
|
|
151
|
+
"",
|
|
152
|
+
{
|
|
153
|
+
variants: {
|
|
154
|
+
size: {
|
|
155
|
+
sm: "px-3 pb-2",
|
|
156
|
+
md: "px-4 pb-3",
|
|
157
|
+
lg: "px-6 pb-4"
|
|
158
|
+
},
|
|
159
|
+
fullHeight: {
|
|
160
|
+
true: "flex-1",
|
|
161
|
+
false: ""
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
defaultVariants: {
|
|
165
|
+
size: "lg",
|
|
166
|
+
fullHeight: false
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
);
|
|
170
|
+
var CardContent = React13.forwardRef(
|
|
171
|
+
({ className, size, fullHeight, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
172
|
+
"div",
|
|
173
|
+
{
|
|
174
|
+
ref,
|
|
175
|
+
className: cn(cardContentVariants({ size, fullHeight }), className),
|
|
176
|
+
...props
|
|
177
|
+
}
|
|
178
|
+
)
|
|
179
|
+
);
|
|
180
|
+
CardContent.displayName = "CardContent";
|
|
181
|
+
var cardFooterVariants = cva(
|
|
182
|
+
"flex items-center pt-0",
|
|
183
|
+
{
|
|
184
|
+
variants: {
|
|
185
|
+
size: {
|
|
186
|
+
sm: "p-3 pt-0",
|
|
187
|
+
md: "p-4 pt-0",
|
|
188
|
+
lg: "p-6 pt-0"
|
|
189
|
+
},
|
|
190
|
+
justify: {
|
|
191
|
+
start: "justify-start",
|
|
192
|
+
center: "justify-center",
|
|
193
|
+
end: "justify-end",
|
|
194
|
+
between: "justify-between"
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
defaultVariants: {
|
|
198
|
+
size: "lg",
|
|
199
|
+
justify: "start"
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
);
|
|
203
|
+
var CardFooter = React13.forwardRef(
|
|
204
|
+
({ className, size, justify, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
205
|
+
"div",
|
|
206
|
+
{
|
|
207
|
+
ref,
|
|
208
|
+
className: cn(cardFooterVariants({ size, justify }), className),
|
|
209
|
+
...props
|
|
210
|
+
}
|
|
211
|
+
)
|
|
212
|
+
);
|
|
213
|
+
CardFooter.displayName = "CardFooter";
|
|
214
|
+
var FormCard = React13.forwardRef(
|
|
215
|
+
({ title, description, children, headerActions, className, variant = "default", ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
216
|
+
Card,
|
|
217
|
+
{
|
|
218
|
+
ref,
|
|
219
|
+
variant,
|
|
220
|
+
fullHeight: true,
|
|
221
|
+
className: cn("", className),
|
|
222
|
+
...props,
|
|
223
|
+
children: [
|
|
224
|
+
/* @__PURE__ */ jsxs(
|
|
225
|
+
CardHeader,
|
|
226
|
+
{
|
|
227
|
+
direction: headerActions ? "row" : "column",
|
|
228
|
+
size: "md",
|
|
229
|
+
children: [
|
|
230
|
+
/* @__PURE__ */ jsx("div", { className: "space-y-1", children: /* @__PURE__ */ jsx(CardTitle, { size: "md", children: title }) }),
|
|
231
|
+
headerActions && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: headerActions })
|
|
232
|
+
]
|
|
233
|
+
}
|
|
234
|
+
),
|
|
235
|
+
/* @__PURE__ */ jsx(CardContent, { size: "md", fullHeight: true, children })
|
|
236
|
+
]
|
|
237
|
+
}
|
|
238
|
+
)
|
|
239
|
+
);
|
|
240
|
+
FormCard.displayName = "FormCard";
|
|
33
241
|
var buttonVariants = cva(
|
|
34
242
|
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
35
243
|
{
|
|
@@ -69,171 +277,92 @@ var Button = React13.forwardRef(
|
|
|
69
277
|
}
|
|
70
278
|
);
|
|
71
279
|
Button.displayName = "Button";
|
|
72
|
-
var
|
|
73
|
-
|
|
74
|
-
var count = 0;
|
|
75
|
-
function genId() {
|
|
76
|
-
count = (count + 1) % Number.MAX_SAFE_INTEGER;
|
|
77
|
-
return count.toString();
|
|
78
|
-
}
|
|
79
|
-
var toastTimeouts = /* @__PURE__ */ new Map();
|
|
80
|
-
var addToRemoveQueue = (toastId) => {
|
|
81
|
-
if (toastTimeouts.has(toastId)) {
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
const timeout = setTimeout(() => {
|
|
85
|
-
toastTimeouts.delete(toastId);
|
|
86
|
-
dispatch({
|
|
87
|
-
type: "REMOVE_TOAST",
|
|
88
|
-
toastId
|
|
89
|
-
});
|
|
90
|
-
}, TOAST_REMOVE_DELAY);
|
|
91
|
-
toastTimeouts.set(toastId, timeout);
|
|
92
|
-
};
|
|
93
|
-
var reducer = (state, action) => {
|
|
94
|
-
switch (action.type) {
|
|
95
|
-
case "ADD_TOAST":
|
|
96
|
-
return {
|
|
97
|
-
...state,
|
|
98
|
-
toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT)
|
|
99
|
-
};
|
|
100
|
-
case "UPDATE_TOAST":
|
|
101
|
-
return {
|
|
102
|
-
...state,
|
|
103
|
-
toasts: state.toasts.map(
|
|
104
|
-
(t) => t.id === action.toast.id ? { ...t, ...action.toast } : t
|
|
105
|
-
)
|
|
106
|
-
};
|
|
107
|
-
case "DISMISS_TOAST": {
|
|
108
|
-
const { toastId } = action;
|
|
109
|
-
if (toastId) {
|
|
110
|
-
addToRemoveQueue(toastId);
|
|
111
|
-
} else {
|
|
112
|
-
state.toasts.forEach((toast4) => {
|
|
113
|
-
addToRemoveQueue(toast4.id);
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
return {
|
|
117
|
-
...state,
|
|
118
|
-
toasts: state.toasts.map(
|
|
119
|
-
(t) => t.id === toastId || toastId === void 0 ? {
|
|
120
|
-
...t,
|
|
121
|
-
open: false
|
|
122
|
-
} : t
|
|
123
|
-
)
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
case "REMOVE_TOAST":
|
|
127
|
-
if (action.toastId === void 0) {
|
|
128
|
-
return {
|
|
129
|
-
...state,
|
|
130
|
-
toasts: []
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
return {
|
|
134
|
-
...state,
|
|
135
|
-
toasts: state.toasts.filter((t) => t.id !== action.toastId)
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
};
|
|
139
|
-
var listeners = [];
|
|
140
|
-
var memoryState = { toasts: [] };
|
|
141
|
-
function dispatch(action) {
|
|
142
|
-
memoryState = reducer(memoryState, action);
|
|
143
|
-
listeners.forEach((listener) => {
|
|
144
|
-
listener(memoryState);
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
function toast({ ...props }) {
|
|
148
|
-
const id = genId();
|
|
149
|
-
const update = (props2) => dispatch({
|
|
150
|
-
type: "UPDATE_TOAST",
|
|
151
|
-
toast: { ...props2, id }
|
|
152
|
-
});
|
|
153
|
-
const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id });
|
|
154
|
-
dispatch({
|
|
155
|
-
type: "ADD_TOAST",
|
|
156
|
-
toast: {
|
|
157
|
-
...props,
|
|
158
|
-
id,
|
|
159
|
-
open: true,
|
|
160
|
-
onOpenChange: (open) => {
|
|
161
|
-
if (!open) dismiss();
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
return {
|
|
166
|
-
id,
|
|
167
|
-
dismiss,
|
|
168
|
-
update
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
function useToast() {
|
|
172
|
-
const [state, setState] = React13.useState(memoryState);
|
|
173
|
-
React13.useEffect(() => {
|
|
174
|
-
listeners.push(setState);
|
|
175
|
-
return () => {
|
|
176
|
-
const index = listeners.indexOf(setState);
|
|
177
|
-
if (index > -1) {
|
|
178
|
-
listeners.splice(index, 1);
|
|
179
|
-
}
|
|
180
|
-
};
|
|
181
|
-
}, [state]);
|
|
182
|
-
return {
|
|
183
|
-
...state,
|
|
184
|
-
toast,
|
|
185
|
-
dismiss: (toastId) => dispatch({ type: "DISMISS_TOAST", toastId })
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
var inputVariants = cva(
|
|
189
|
-
"flex w-full rounded-md bg-form-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground transition-form",
|
|
280
|
+
var badgeVariants = cva(
|
|
281
|
+
"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
|
190
282
|
{
|
|
191
283
|
variants: {
|
|
192
284
|
variant: {
|
|
193
|
-
default: "border
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
285
|
+
default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
|
|
286
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
287
|
+
destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
|
|
288
|
+
outline: "text-foreground",
|
|
289
|
+
success: "border-transparent bg-success text-success-foreground hover:bg-success/80",
|
|
290
|
+
warning: "border-transparent bg-warning text-warning-foreground hover:bg-warning/80",
|
|
291
|
+
// Business type specific variants
|
|
292
|
+
business: "border-blue-200 bg-blue-50 text-blue-700 hover:bg-blue-100 dark:border-blue-800 dark:bg-blue-950 dark:text-blue-300",
|
|
293
|
+
individual: "border-green-200 bg-green-50 text-green-700 hover:bg-green-100 dark:border-green-800 dark:bg-green-950 dark:text-green-300",
|
|
294
|
+
government: "border-purple-200 bg-purple-50 text-purple-700 hover:bg-purple-100 dark:border-purple-800 dark:bg-purple-950 dark:text-purple-300",
|
|
295
|
+
nonprofit: "border-orange-200 bg-orange-50 text-orange-700 hover:bg-orange-100 dark:border-orange-800 dark:bg-orange-950 dark:text-orange-300",
|
|
296
|
+
// Business entity type variants
|
|
297
|
+
corporation: "border-slate-200 bg-slate-50 text-slate-700 hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-900 dark:text-slate-300",
|
|
298
|
+
llc: "border-teal-200 bg-teal-50 text-teal-700 hover:bg-teal-100 dark:border-teal-800 dark:bg-teal-950 dark:text-teal-300",
|
|
299
|
+
partnership: "border-indigo-200 bg-indigo-50 text-indigo-700 hover:bg-indigo-100 dark:border-indigo-800 dark:bg-indigo-950 dark:text-indigo-300",
|
|
300
|
+
sole_proprietorship: "border-amber-200 bg-amber-50 text-amber-700 hover:bg-amber-100 dark:border-amber-800 dark:bg-amber-950 dark:text-amber-300",
|
|
301
|
+
// Status variants
|
|
302
|
+
active: "border-green-200 bg-green-50 text-green-700 hover:bg-green-100 dark:border-green-800 dark:bg-green-950 dark:text-green-300",
|
|
303
|
+
inactive: "border-red-200 bg-red-50 text-red-700 hover:bg-red-100 dark:border-red-800 dark:bg-red-950 dark:text-red-300",
|
|
304
|
+
pending: "border-yellow-200 bg-yellow-50 text-yellow-700 hover:bg-yellow-100 dark:border-yellow-800 dark:bg-yellow-950 dark:text-yellow-300",
|
|
305
|
+
suspended: "border-gray-200 bg-gray-50 text-gray-700 hover:bg-gray-100 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300",
|
|
306
|
+
// Alert type subtle variants
|
|
307
|
+
"alert-ofac": "border-red-200 bg-red-50 text-red-700 hover:bg-red-100 dark:border-red-800 dark:bg-red-950 dark:text-red-300 font-medium",
|
|
308
|
+
"alert-dual": "border-emerald-200 bg-emerald-50 text-emerald-700 hover:bg-emerald-100 dark:border-emerald-800 dark:bg-emerald-950 dark:text-emerald-300 font-medium",
|
|
309
|
+
"alert-monitoring": "border-amber-200 bg-amber-50 text-amber-700 hover:bg-amber-100 dark:border-amber-800 dark:bg-amber-950 dark:text-amber-300 font-medium",
|
|
310
|
+
"alert-error": "border-rose-200 bg-rose-50 text-rose-700 hover:bg-rose-100 dark:border-rose-800 dark:bg-rose-950 dark:text-rose-300 font-medium"
|
|
203
311
|
}
|
|
204
312
|
},
|
|
205
313
|
defaultVariants: {
|
|
206
|
-
variant: "default"
|
|
207
|
-
size: "default"
|
|
314
|
+
variant: "default"
|
|
208
315
|
}
|
|
209
316
|
}
|
|
210
317
|
);
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
318
|
+
function Badge({ className, variant, ...props }) {
|
|
319
|
+
return /* @__PURE__ */ jsx("div", { className: cn(badgeVariants({ variant }), className), ...props });
|
|
320
|
+
}
|
|
321
|
+
var AlertTimeline = ({ events }) => {
|
|
322
|
+
const getIcon = (action) => {
|
|
323
|
+
if (action.includes("Created")) return /* @__PURE__ */ jsx(Circle, { className: "h-4 w-4" });
|
|
324
|
+
if (action.includes("Assigned")) return /* @__PURE__ */ jsx(UserPlus, { className: "h-4 w-4" });
|
|
325
|
+
if (action.includes("Updated") || action.includes("Modified")) return /* @__PURE__ */ jsx(Edit, { className: "h-4 w-4" });
|
|
326
|
+
if (action.includes("Closed") || action.includes("Resolved")) return /* @__PURE__ */ jsx(CheckCircle, { className: "h-4 w-4" });
|
|
327
|
+
if (action.includes("Rejected")) return /* @__PURE__ */ jsx(XCircle, { className: "h-4 w-4" });
|
|
328
|
+
return /* @__PURE__ */ jsx(Circle, { className: "h-4 w-4" });
|
|
329
|
+
};
|
|
330
|
+
const getStatusColor2 = (status) => {
|
|
331
|
+
switch (status) {
|
|
332
|
+
case "Unassigned":
|
|
333
|
+
return "text-destructive";
|
|
334
|
+
case "Closed":
|
|
335
|
+
return "text-success";
|
|
336
|
+
case "In Progress":
|
|
337
|
+
return "text-warning";
|
|
338
|
+
default:
|
|
339
|
+
return "text-muted-foreground";
|
|
340
|
+
}
|
|
341
|
+
};
|
|
342
|
+
if (events.length === 0) {
|
|
343
|
+
return /* @__PURE__ */ jsx("div", { className: "text-center py-8 text-muted-foreground", children: "No timeline events yet" });
|
|
344
|
+
}
|
|
345
|
+
return /* @__PURE__ */ jsx("div", { className: "space-y-3", children: events.map((event, index) => /* @__PURE__ */ jsxs("div", { className: "relative pl-6 pb-3", children: [
|
|
346
|
+
index !== events.length - 1 && /* @__PURE__ */ jsx("div", { className: "absolute left-[7px] top-5 bottom-0 w-[2px] bg-border" }),
|
|
347
|
+
/* @__PURE__ */ jsx("div", { className: cn(
|
|
348
|
+
"absolute left-0 top-0 flex-none",
|
|
349
|
+
getStatusColor2(event.status)
|
|
350
|
+
), children: /* @__PURE__ */ jsx("div", { className: "h-4 w-4", children: getIcon(event.action) }) }),
|
|
351
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-0.5", children: [
|
|
352
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs font-medium text-foreground", children: event.action }),
|
|
353
|
+
/* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
|
|
354
|
+
"by ",
|
|
355
|
+
event.user
|
|
218
356
|
] }),
|
|
219
|
-
/* @__PURE__ */
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
className: cn(inputVariants({ variant: inputVariant, size, className })),
|
|
224
|
-
ref,
|
|
225
|
-
...props
|
|
226
|
-
}
|
|
227
|
-
),
|
|
228
|
-
isLoading && /* @__PURE__ */ jsx("div", { className: "absolute right-3 top-1/2 transform -translate-y-1/2", children: /* @__PURE__ */ jsx("div", { className: "animate-spin rounded-full h-4 w-4 border-2 border-primary border-t-transparent" }) })
|
|
357
|
+
event.details && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: event.details }),
|
|
358
|
+
event.status && /* @__PURE__ */ jsxs("p", { className: cn("text-xs font-medium", getStatusColor2(event.status)), children: [
|
|
359
|
+
"Status: ",
|
|
360
|
+
event.status
|
|
229
361
|
] }),
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
}
|
|
235
|
-
);
|
|
236
|
-
EnhancedInput.displayName = "EnhancedInput";
|
|
362
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground/70 pt-0.5", children: event.timestamp })
|
|
363
|
+
] })
|
|
364
|
+
] }, event.id)) });
|
|
365
|
+
};
|
|
237
366
|
var textareaVariants = cva(
|
|
238
367
|
"flex min-h-[80px] w-full rounded-md bg-form-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground transition-form resize-y",
|
|
239
368
|
{
|
|
@@ -330,179 +459,208 @@ var EnhancedSelect = React13.forwardRef(({ variant, label, hint, error, success,
|
|
|
330
459
|
] });
|
|
331
460
|
});
|
|
332
461
|
EnhancedSelect.displayName = "EnhancedSelect";
|
|
333
|
-
var
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
462
|
+
var TOAST_LIMIT = 1;
|
|
463
|
+
var TOAST_REMOVE_DELAY = 1e6;
|
|
464
|
+
var count = 0;
|
|
465
|
+
function genId() {
|
|
466
|
+
count = (count + 1) % Number.MAX_SAFE_INTEGER;
|
|
467
|
+
return count.toString();
|
|
468
|
+
}
|
|
469
|
+
var toastTimeouts = /* @__PURE__ */ new Map();
|
|
470
|
+
var addToRemoveQueue = (toastId) => {
|
|
471
|
+
if (toastTimeouts.has(toastId)) {
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
474
|
+
const timeout = setTimeout(() => {
|
|
475
|
+
toastTimeouts.delete(toastId);
|
|
476
|
+
dispatch({
|
|
477
|
+
type: "REMOVE_TOAST",
|
|
478
|
+
toastId
|
|
479
|
+
});
|
|
480
|
+
}, TOAST_REMOVE_DELAY);
|
|
481
|
+
toastTimeouts.set(toastId, timeout);
|
|
482
|
+
};
|
|
483
|
+
var reducer = (state, action) => {
|
|
484
|
+
switch (action.type) {
|
|
485
|
+
case "ADD_TOAST":
|
|
486
|
+
return {
|
|
487
|
+
...state,
|
|
488
|
+
toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT)
|
|
489
|
+
};
|
|
490
|
+
case "UPDATE_TOAST":
|
|
491
|
+
return {
|
|
492
|
+
...state,
|
|
493
|
+
toasts: state.toasts.map(
|
|
494
|
+
(t) => t.id === action.toast.id ? { ...t, ...action.toast } : t
|
|
495
|
+
)
|
|
496
|
+
};
|
|
497
|
+
case "DISMISS_TOAST": {
|
|
498
|
+
const { toastId } = action;
|
|
499
|
+
if (toastId) {
|
|
500
|
+
addToRemoveQueue(toastId);
|
|
501
|
+
} else {
|
|
502
|
+
state.toasts.forEach((toast4) => {
|
|
503
|
+
addToRemoveQueue(toast4.id);
|
|
504
|
+
});
|
|
505
|
+
}
|
|
506
|
+
return {
|
|
507
|
+
...state,
|
|
508
|
+
toasts: state.toasts.map(
|
|
509
|
+
(t) => t.id === toastId || toastId === void 0 ? {
|
|
510
|
+
...t,
|
|
511
|
+
open: false
|
|
512
|
+
} : t
|
|
513
|
+
)
|
|
514
|
+
};
|
|
515
|
+
}
|
|
516
|
+
case "REMOVE_TOAST":
|
|
517
|
+
if (action.toastId === void 0) {
|
|
518
|
+
return {
|
|
519
|
+
...state,
|
|
520
|
+
toasts: []
|
|
521
|
+
};
|
|
522
|
+
}
|
|
523
|
+
return {
|
|
524
|
+
...state,
|
|
525
|
+
toasts: state.toasts.filter((t) => t.id !== action.toastId)
|
|
526
|
+
};
|
|
527
|
+
}
|
|
528
|
+
};
|
|
529
|
+
var listeners = [];
|
|
530
|
+
var memoryState = { toasts: [] };
|
|
531
|
+
function dispatch(action) {
|
|
532
|
+
memoryState = reducer(memoryState, action);
|
|
533
|
+
listeners.forEach((listener) => {
|
|
534
|
+
listener(memoryState);
|
|
535
|
+
});
|
|
536
|
+
}
|
|
537
|
+
function toast({ ...props }) {
|
|
538
|
+
const id = genId();
|
|
539
|
+
const update = (props2) => dispatch({
|
|
540
|
+
type: "UPDATE_TOAST",
|
|
541
|
+
toast: { ...props2, id }
|
|
542
|
+
});
|
|
543
|
+
const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id });
|
|
544
|
+
dispatch({
|
|
545
|
+
type: "ADD_TOAST",
|
|
546
|
+
toast: {
|
|
547
|
+
...props,
|
|
548
|
+
id,
|
|
549
|
+
open: true,
|
|
550
|
+
onOpenChange: (open) => {
|
|
551
|
+
if (!open) dismiss();
|
|
552
|
+
}
|
|
405
553
|
}
|
|
554
|
+
});
|
|
555
|
+
return {
|
|
556
|
+
id,
|
|
557
|
+
dismiss,
|
|
558
|
+
update
|
|
559
|
+
};
|
|
560
|
+
}
|
|
561
|
+
function useToast() {
|
|
562
|
+
const [state, setState] = React13.useState(memoryState);
|
|
563
|
+
React13.useEffect(() => {
|
|
564
|
+
listeners.push(setState);
|
|
565
|
+
return () => {
|
|
566
|
+
const index = listeners.indexOf(setState);
|
|
567
|
+
if (index > -1) {
|
|
568
|
+
listeners.splice(index, 1);
|
|
569
|
+
}
|
|
570
|
+
};
|
|
571
|
+
}, [state]);
|
|
572
|
+
return {
|
|
573
|
+
...state,
|
|
574
|
+
toast,
|
|
575
|
+
dismiss: (toastId) => dispatch({ type: "DISMISS_TOAST", toastId })
|
|
576
|
+
};
|
|
577
|
+
}
|
|
578
|
+
var NOTE_TYPE_OPTIONS = [
|
|
579
|
+
{ value: "RFI Note", label: "RFI Note" },
|
|
580
|
+
{ value: "Internal Note", label: "Internal Note" }
|
|
581
|
+
];
|
|
582
|
+
var AlertNotes = ({ alertId, notes }) => {
|
|
583
|
+
const [showNoteDialog, setShowNoteDialog] = useState(false);
|
|
584
|
+
const [newNote, setNewNote] = useState("");
|
|
585
|
+
const [noteType, setNoteType] = useState("RFI Note");
|
|
586
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
587
|
+
const resetForm = () => {
|
|
588
|
+
setNewNote("");
|
|
589
|
+
setNoteType("RFI Note");
|
|
590
|
+
};
|
|
591
|
+
const handleCancelNote = () => {
|
|
592
|
+
setShowNoteDialog(false);
|
|
593
|
+
resetForm();
|
|
594
|
+
};
|
|
595
|
+
const handleAddNote = async () => {
|
|
596
|
+
if (!newNote.trim()) {
|
|
597
|
+
toast({
|
|
598
|
+
title: "Error",
|
|
599
|
+
description: "Please enter a note before submitting",
|
|
600
|
+
variant: "destructive"
|
|
601
|
+
});
|
|
602
|
+
return;
|
|
603
|
+
}
|
|
604
|
+
setIsSubmitting(true);
|
|
605
|
+
setTimeout(() => {
|
|
606
|
+
toast({
|
|
607
|
+
title: "Note Added",
|
|
608
|
+
description: "Your note has been added successfully"
|
|
609
|
+
});
|
|
610
|
+
setShowNoteDialog(false);
|
|
611
|
+
resetForm();
|
|
612
|
+
setIsSubmitting(false);
|
|
613
|
+
}, 500);
|
|
614
|
+
};
|
|
615
|
+
const handleDeleteNote = (noteId, noteContent) => {
|
|
616
|
+
toast({
|
|
617
|
+
title: "Note Deleted",
|
|
618
|
+
description: `Note deleted successfully`
|
|
619
|
+
});
|
|
620
|
+
console.log("Deleting note:", noteId);
|
|
406
621
|
};
|
|
407
|
-
const documentTypeOptions = [
|
|
408
|
-
{ value: "ID_DOCUMENT_FRONT", label: "ID Document (Front)" },
|
|
409
|
-
{ value: "ID_DOCUMENT_BACK", label: "ID Document (Back)" },
|
|
410
|
-
{ value: "PASSPORT", label: "Passport" },
|
|
411
|
-
{ value: "PROOF_OF_ADDRESS", label: "Proof of Address" },
|
|
412
|
-
{ value: "BANK_STATEMENT", label: "Bank Statement" },
|
|
413
|
-
{ value: "BUSINESS_LICENSE", label: "Business License" },
|
|
414
|
-
{ value: "TAX_DOCUMENT", label: "Tax Document" },
|
|
415
|
-
{ value: "OTHER", label: "Other" }
|
|
416
|
-
];
|
|
417
622
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
|
|
418
|
-
|
|
623
|
+
showNoteDialog && createPortal(
|
|
419
624
|
/* @__PURE__ */ jsxs("div", { className: "fixed inset-0 z-[100] flex items-center justify-center p-4", children: [
|
|
420
625
|
/* @__PURE__ */ jsx(
|
|
421
626
|
"div",
|
|
422
627
|
{
|
|
423
628
|
className: "fixed inset-0 bg-background/80 backdrop-blur-sm",
|
|
424
|
-
onClick:
|
|
629
|
+
onClick: handleCancelNote
|
|
425
630
|
}
|
|
426
631
|
),
|
|
427
632
|
/* @__PURE__ */ jsxs("div", { className: "relative bg-card border rounded-lg shadow-lg max-w-lg w-full p-6 z-[101]", children: [
|
|
428
633
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-6", children: [
|
|
429
|
-
/* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold", children: "
|
|
634
|
+
/* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold", children: "Add Note" }),
|
|
430
635
|
/* @__PURE__ */ jsx(
|
|
431
636
|
Button,
|
|
432
637
|
{
|
|
433
638
|
variant: "ghost",
|
|
434
639
|
size: "sm",
|
|
435
640
|
className: "h-8 w-8 p-0",
|
|
436
|
-
onClick:
|
|
641
|
+
onClick: handleCancelNote,
|
|
437
642
|
children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4" })
|
|
438
643
|
}
|
|
439
644
|
)
|
|
440
645
|
] }),
|
|
441
646
|
/* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
442
|
-
/* @__PURE__ */ jsxs("div", { className: "border-2 border-dashed rounded-lg p-6 text-center hover:border-primary/50 transition-colors", children: [
|
|
443
|
-
/* @__PURE__ */ jsx(
|
|
444
|
-
"input",
|
|
445
|
-
{
|
|
446
|
-
type: "file",
|
|
447
|
-
id: "file-upload-dialog",
|
|
448
|
-
className: "hidden",
|
|
449
|
-
onChange: handleFileSelect,
|
|
450
|
-
disabled: isUploading
|
|
451
|
-
}
|
|
452
|
-
),
|
|
453
|
-
/* @__PURE__ */ jsxs(
|
|
454
|
-
"label",
|
|
455
|
-
{
|
|
456
|
-
htmlFor: "file-upload-dialog",
|
|
457
|
-
className: cn(
|
|
458
|
-
"cursor-pointer flex flex-col items-center gap-2",
|
|
459
|
-
isUploading && "opacity-50 cursor-not-allowed"
|
|
460
|
-
),
|
|
461
|
-
children: [
|
|
462
|
-
/* @__PURE__ */ jsx(Upload, { className: "h-8 w-8 text-muted-foreground" }),
|
|
463
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
464
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-foreground", children: selectedFile ? "Change file" : "Click to upload or drag and drop" }),
|
|
465
|
-
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground mt-1", children: "PDF, DOC, DOCX, JPG, PNG up to 10MB" })
|
|
466
|
-
] })
|
|
467
|
-
]
|
|
468
|
-
}
|
|
469
|
-
)
|
|
470
|
-
] }),
|
|
471
|
-
selectedFile && /* @__PURE__ */ jsxs("div", { className: "p-3 bg-muted/50 rounded-lg", children: [
|
|
472
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Selected file:" }),
|
|
473
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: selectedFile.name }),
|
|
474
|
-
/* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
|
|
475
|
-
(selectedFile.size / 1024 / 1024).toFixed(2),
|
|
476
|
-
" MB"
|
|
477
|
-
] })
|
|
478
|
-
] }),
|
|
479
647
|
/* @__PURE__ */ jsx(
|
|
480
|
-
|
|
648
|
+
EnhancedSelect,
|
|
481
649
|
{
|
|
482
|
-
label: "
|
|
483
|
-
value:
|
|
484
|
-
|
|
485
|
-
|
|
650
|
+
label: "Note Type",
|
|
651
|
+
value: noteType,
|
|
652
|
+
onValueChange: (value) => setNoteType(value),
|
|
653
|
+
options: NOTE_TYPE_OPTIONS
|
|
486
654
|
}
|
|
487
655
|
),
|
|
488
656
|
/* @__PURE__ */ jsx(
|
|
489
657
|
EnhancedTextarea,
|
|
490
658
|
{
|
|
491
|
-
label: "
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
rows:
|
|
496
|
-
}
|
|
497
|
-
),
|
|
498
|
-
/* @__PURE__ */ jsx(
|
|
499
|
-
EnhancedSelect,
|
|
500
|
-
{
|
|
501
|
-
label: "Document type",
|
|
502
|
-
value: documentType,
|
|
503
|
-
onValueChange: setDocumentType,
|
|
504
|
-
placeholder: "Select document type",
|
|
505
|
-
options: documentTypeOptions
|
|
659
|
+
label: "Note",
|
|
660
|
+
placeholder: "Enter your note here...",
|
|
661
|
+
value: newNote,
|
|
662
|
+
onChange: (e) => setNewNote(e.target.value),
|
|
663
|
+
rows: 6
|
|
506
664
|
}
|
|
507
665
|
)
|
|
508
666
|
] }),
|
|
@@ -511,8 +669,8 @@ var AlertDocuments = ({ alertId, documents }) => {
|
|
|
511
669
|
Button,
|
|
512
670
|
{
|
|
513
671
|
variant: "outline",
|
|
514
|
-
onClick:
|
|
515
|
-
disabled:
|
|
672
|
+
onClick: handleCancelNote,
|
|
673
|
+
disabled: isSubmitting,
|
|
516
674
|
className: "flex-1",
|
|
517
675
|
children: "Cancel"
|
|
518
676
|
}
|
|
@@ -520,10 +678,10 @@ var AlertDocuments = ({ alertId, documents }) => {
|
|
|
520
678
|
/* @__PURE__ */ jsx(
|
|
521
679
|
Button,
|
|
522
680
|
{
|
|
523
|
-
onClick:
|
|
524
|
-
disabled:
|
|
681
|
+
onClick: handleAddNote,
|
|
682
|
+
disabled: isSubmitting || !newNote.trim(),
|
|
525
683
|
className: "flex-1",
|
|
526
|
-
children:
|
|
684
|
+
children: isSubmitting ? "Adding..." : "Add Note"
|
|
527
685
|
}
|
|
528
686
|
)
|
|
529
687
|
] })
|
|
@@ -531,224 +689,280 @@ var AlertDocuments = ({ alertId, documents }) => {
|
|
|
531
689
|
] }),
|
|
532
690
|
document.body
|
|
533
691
|
),
|
|
534
|
-
/* @__PURE__ */ jsxs("div", { className: "space-y-
|
|
692
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
535
693
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
536
|
-
/* @__PURE__ */ jsx("h3", { className: "text-sm font-medium text-foreground", children: "
|
|
694
|
+
/* @__PURE__ */ jsx("h3", { className: "text-sm font-medium text-foreground", children: "Note History" }),
|
|
537
695
|
/* @__PURE__ */ jsxs(
|
|
538
696
|
Button,
|
|
539
697
|
{
|
|
540
|
-
onClick: () =>
|
|
698
|
+
onClick: () => setShowNoteDialog(true),
|
|
541
699
|
variant: "ghost",
|
|
542
700
|
size: "sm",
|
|
543
701
|
className: "gap-2 text-primary hover:text-primary",
|
|
544
702
|
children: [
|
|
545
|
-
/* @__PURE__ */ jsx(
|
|
546
|
-
"
|
|
703
|
+
/* @__PURE__ */ jsx(Plus, { className: "h-4 w-4" }),
|
|
704
|
+
"Add Note"
|
|
547
705
|
]
|
|
548
706
|
}
|
|
549
707
|
)
|
|
550
708
|
] }),
|
|
551
|
-
|
|
552
|
-
/* @__PURE__ */ jsx(
|
|
553
|
-
/* @__PURE__ */ jsx("p", { children: "No
|
|
554
|
-
] }) : /* @__PURE__ */ jsx("div", { className: "space-y-
|
|
709
|
+
notes.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "text-center py-8 text-muted-foreground", children: [
|
|
710
|
+
/* @__PURE__ */ jsx(MessageSquare, { className: "h-8 w-8 mx-auto mb-2 opacity-50" }),
|
|
711
|
+
/* @__PURE__ */ jsx("p", { children: "No notes yet" })
|
|
712
|
+
] }) : /* @__PURE__ */ jsx("div", { className: "space-y-3", children: notes.map((note) => /* @__PURE__ */ jsxs(
|
|
555
713
|
"div",
|
|
556
714
|
{
|
|
557
|
-
className: "border rounded-lg
|
|
715
|
+
className: "border rounded-lg p-4 bg-muted/30",
|
|
558
716
|
children: [
|
|
559
|
-
|
|
560
|
-
"
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
alt: doc.name,
|
|
564
|
-
className: "w-full h-48 object-cover"
|
|
565
|
-
}
|
|
566
|
-
) }),
|
|
567
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between p-3", children: [
|
|
568
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 flex-1 min-w-0", children: [
|
|
569
|
-
!isImageType(doc.name) && /* @__PURE__ */ jsx("div", { className: cn(getFileTypeColor(doc.type)), children: getFileIcon(doc.type) }),
|
|
570
|
-
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
571
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
572
|
-
/* @__PURE__ */ jsx("h4", { className: "font-medium text-sm truncate", children: doc.name }),
|
|
573
|
-
/* @__PURE__ */ jsx("span", { className: cn("text-xs px-2 py-0.5 rounded-full bg-muted", getFileTypeColor(doc.type)), children: doc.type })
|
|
574
|
-
] }),
|
|
575
|
-
doc.description && /* @__PURE__ */ jsx("p", { className: "text-sm text-foreground mt-1", children: doc.description }),
|
|
576
|
-
/* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground mt-1", children: [
|
|
577
|
-
doc.size,
|
|
578
|
-
" \u2022 Uploaded by ",
|
|
579
|
-
doc.uploadedBy,
|
|
580
|
-
" \u2022 ",
|
|
581
|
-
new Date(doc.uploadedAt).toLocaleDateString()
|
|
582
|
-
] })
|
|
583
|
-
] })
|
|
717
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-4 mb-2", children: [
|
|
718
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
719
|
+
/* @__PURE__ */ jsx("p", { className: "font-medium text-sm text-foreground", children: note.user }),
|
|
720
|
+
/* @__PURE__ */ jsx(Badge, { variant: note.type === "RFI Note" ? "default" : "outline", children: note.type })
|
|
584
721
|
] }),
|
|
585
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-
|
|
586
|
-
/* @__PURE__ */ jsx(
|
|
587
|
-
Button,
|
|
588
|
-
{
|
|
589
|
-
variant: "ghost",
|
|
590
|
-
size: "sm",
|
|
591
|
-
className: "h-8 w-8 p-0",
|
|
592
|
-
onClick: () => toast({ title: "Preview", description: `Viewing ${doc.name}` }),
|
|
593
|
-
children: /* @__PURE__ */ jsx(Eye, { className: "h-4 w-4" })
|
|
594
|
-
}
|
|
595
|
-
),
|
|
596
|
-
/* @__PURE__ */ jsx(
|
|
597
|
-
Button,
|
|
598
|
-
{
|
|
599
|
-
variant: "ghost",
|
|
600
|
-
size: "sm",
|
|
601
|
-
className: "h-8 w-8 p-0",
|
|
602
|
-
onClick: () => toast({ title: "Download", description: `Downloading ${doc.name}` }),
|
|
603
|
-
children: /* @__PURE__ */ jsx(Download, { className: "h-4 w-4" })
|
|
604
|
-
}
|
|
605
|
-
),
|
|
722
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
723
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground whitespace-nowrap", children: note.timestamp }),
|
|
606
724
|
/* @__PURE__ */ jsx(
|
|
607
725
|
Button,
|
|
608
726
|
{
|
|
609
727
|
variant: "ghost",
|
|
610
728
|
size: "sm",
|
|
611
729
|
className: "h-8 w-8 p-0 text-muted-foreground hover:text-foreground",
|
|
612
|
-
onClick: () =>
|
|
730
|
+
onClick: () => handleDeleteNote(note.id, note.content),
|
|
613
731
|
children: /* @__PURE__ */ jsx(Trash2, { className: "h-4 w-4" })
|
|
614
732
|
}
|
|
615
733
|
)
|
|
616
734
|
] })
|
|
617
|
-
] })
|
|
735
|
+
] }),
|
|
736
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-foreground", children: note.content })
|
|
618
737
|
]
|
|
619
738
|
},
|
|
620
|
-
|
|
739
|
+
note.id
|
|
621
740
|
)) })
|
|
622
741
|
] })
|
|
623
742
|
] });
|
|
624
743
|
};
|
|
625
|
-
var
|
|
626
|
-
"
|
|
744
|
+
var inputVariants = cva(
|
|
745
|
+
"flex w-full rounded-md bg-form-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground transition-form",
|
|
627
746
|
{
|
|
628
747
|
variants: {
|
|
629
748
|
variant: {
|
|
630
|
-
default: "border-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
nonprofit: "border-orange-200 bg-orange-50 text-orange-700 hover:bg-orange-100 dark:border-orange-800 dark:bg-orange-950 dark:text-orange-300",
|
|
641
|
-
// Business entity type variants
|
|
642
|
-
corporation: "border-slate-200 bg-slate-50 text-slate-700 hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-900 dark:text-slate-300",
|
|
643
|
-
llc: "border-teal-200 bg-teal-50 text-teal-700 hover:bg-teal-100 dark:border-teal-800 dark:bg-teal-950 dark:text-teal-300",
|
|
644
|
-
partnership: "border-indigo-200 bg-indigo-50 text-indigo-700 hover:bg-indigo-100 dark:border-indigo-800 dark:bg-indigo-950 dark:text-indigo-300",
|
|
645
|
-
sole_proprietorship: "border-amber-200 bg-amber-50 text-amber-700 hover:bg-amber-100 dark:border-amber-800 dark:bg-amber-950 dark:text-amber-300",
|
|
646
|
-
// Status variants
|
|
647
|
-
active: "border-green-200 bg-green-50 text-green-700 hover:bg-green-100 dark:border-green-800 dark:bg-green-950 dark:text-green-300",
|
|
648
|
-
inactive: "border-red-200 bg-red-50 text-red-700 hover:bg-red-100 dark:border-red-800 dark:bg-red-950 dark:text-red-300",
|
|
649
|
-
pending: "border-yellow-200 bg-yellow-50 text-yellow-700 hover:bg-yellow-100 dark:border-yellow-800 dark:bg-yellow-950 dark:text-yellow-300",
|
|
650
|
-
suspended: "border-gray-200 bg-gray-50 text-gray-700 hover:bg-gray-100 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300",
|
|
651
|
-
// Alert type subtle variants
|
|
652
|
-
"alert-ofac": "border-red-200 bg-red-50 text-red-700 hover:bg-red-100 dark:border-red-800 dark:bg-red-950 dark:text-red-300 font-medium",
|
|
653
|
-
"alert-dual": "border-emerald-200 bg-emerald-50 text-emerald-700 hover:bg-emerald-100 dark:border-emerald-800 dark:bg-emerald-950 dark:text-emerald-300 font-medium",
|
|
654
|
-
"alert-monitoring": "border-amber-200 bg-amber-50 text-amber-700 hover:bg-amber-100 dark:border-amber-800 dark:bg-amber-950 dark:text-amber-300 font-medium",
|
|
655
|
-
"alert-error": "border-rose-200 bg-rose-50 text-rose-700 hover:bg-rose-100 dark:border-rose-800 dark:bg-rose-950 dark:text-rose-300 font-medium"
|
|
749
|
+
default: "border border-form-border focus-visible:border-form-border-focus focus-visible:outline-none focus-visible:shadow-form-focus",
|
|
750
|
+
error: "border border-form-border-error focus-visible:border-form-border-error focus-visible:outline-none focus-visible:shadow-form-error",
|
|
751
|
+
success: "border border-form-border-success focus-visible:border-form-border-success focus-visible:outline-none",
|
|
752
|
+
disabled: "border border-form-border bg-muted cursor-not-allowed opacity-50",
|
|
753
|
+
readonly: "border border-form-border bg-muted/50 cursor-default"
|
|
754
|
+
},
|
|
755
|
+
size: {
|
|
756
|
+
default: "h-10",
|
|
757
|
+
sm: "h-9",
|
|
758
|
+
lg: "h-11"
|
|
656
759
|
}
|
|
657
760
|
},
|
|
658
761
|
defaultVariants: {
|
|
659
|
-
variant: "default"
|
|
762
|
+
variant: "default",
|
|
763
|
+
size: "default"
|
|
660
764
|
}
|
|
661
765
|
}
|
|
662
766
|
);
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
767
|
+
var EnhancedInput = React13.forwardRef(
|
|
768
|
+
({ className, variant, size, label, hint, error, success, isLoading, ...props }, ref) => {
|
|
769
|
+
const inputVariant = error ? "error" : success ? "success" : props.disabled ? "disabled" : props.readOnly ? "readonly" : variant;
|
|
770
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
771
|
+
label && /* @__PURE__ */ jsxs("label", { className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", children: [
|
|
772
|
+
label,
|
|
773
|
+
props.required && /* @__PURE__ */ jsx("span", { className: "text-destructive ml-1", children: "*" })
|
|
774
|
+
] }),
|
|
775
|
+
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
776
|
+
/* @__PURE__ */ jsx(
|
|
777
|
+
"input",
|
|
778
|
+
{
|
|
779
|
+
className: cn(inputVariants({ variant: inputVariant, size, className })),
|
|
780
|
+
ref,
|
|
781
|
+
...props
|
|
782
|
+
}
|
|
783
|
+
),
|
|
784
|
+
isLoading && /* @__PURE__ */ jsx("div", { className: "absolute right-3 top-1/2 transform -translate-y-1/2", children: /* @__PURE__ */ jsx("div", { className: "animate-spin rounded-full h-4 w-4 border-2 border-primary border-t-transparent" }) })
|
|
785
|
+
] }),
|
|
786
|
+
hint && !error && !success && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: hint }),
|
|
787
|
+
error && /* @__PURE__ */ jsx("p", { className: "text-xs text-destructive", children: error }),
|
|
788
|
+
success && /* @__PURE__ */ jsx("p", { className: "text-xs text-success", children: success })
|
|
789
|
+
] });
|
|
790
|
+
}
|
|
791
|
+
);
|
|
792
|
+
EnhancedInput.displayName = "EnhancedInput";
|
|
793
|
+
var AlertDocuments = ({ alertId, documents }) => {
|
|
794
|
+
const [isUploading, setIsUploading] = useState(false);
|
|
795
|
+
const [showUploadDialog, setShowUploadDialog] = useState(false);
|
|
796
|
+
const [selectedFile, setSelectedFile] = useState(null);
|
|
797
|
+
const [documentName, setDocumentName] = useState("");
|
|
798
|
+
const [description, setDescription] = useState("");
|
|
799
|
+
const [documentType, setDocumentType] = useState("");
|
|
800
|
+
const handleFileSelect = (e) => {
|
|
801
|
+
const file = e.target.files?.[0];
|
|
802
|
+
if (!file) return;
|
|
803
|
+
setSelectedFile(file);
|
|
804
|
+
setDocumentName(file.name);
|
|
682
805
|
};
|
|
683
|
-
const
|
|
684
|
-
if (!
|
|
806
|
+
const handleUploadSubmit = () => {
|
|
807
|
+
if (!selectedFile || !documentName || !documentType) {
|
|
685
808
|
toast({
|
|
686
|
-
title: "
|
|
687
|
-
description: "Please
|
|
809
|
+
title: "Missing Information",
|
|
810
|
+
description: "Please fill in all required fields",
|
|
688
811
|
variant: "destructive"
|
|
689
812
|
});
|
|
690
813
|
return;
|
|
691
814
|
}
|
|
692
|
-
|
|
815
|
+
setIsUploading(true);
|
|
693
816
|
setTimeout(() => {
|
|
817
|
+
({
|
|
818
|
+
size: `${(selectedFile.size / 1024 / 1024).toFixed(1)} MB`,
|
|
819
|
+
uploadedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
820
|
+
});
|
|
694
821
|
toast({
|
|
695
|
-
title: "
|
|
696
|
-
description:
|
|
822
|
+
title: "Upload Successful",
|
|
823
|
+
description: `${documentName} uploaded successfully`
|
|
697
824
|
});
|
|
698
|
-
|
|
825
|
+
setIsUploading(false);
|
|
826
|
+
setShowUploadDialog(false);
|
|
699
827
|
resetForm();
|
|
700
|
-
|
|
701
|
-
}, 500);
|
|
828
|
+
}, 1e3);
|
|
702
829
|
};
|
|
703
|
-
const
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
830
|
+
const resetForm = () => {
|
|
831
|
+
setSelectedFile(null);
|
|
832
|
+
setDocumentName("");
|
|
833
|
+
setDescription("");
|
|
834
|
+
setDocumentType("");
|
|
835
|
+
const fileInput = document.getElementById("file-upload");
|
|
836
|
+
if (fileInput) fileInput.value = "";
|
|
837
|
+
};
|
|
838
|
+
const handleCancelUpload = () => {
|
|
839
|
+
setShowUploadDialog(false);
|
|
840
|
+
resetForm();
|
|
841
|
+
};
|
|
842
|
+
const isImageType = (name) => {
|
|
843
|
+
const imageExtensions = [".jpg", ".jpeg", ".png", ".gif", ".webp", ".bmp"];
|
|
844
|
+
return imageExtensions.some((ext) => name.toLowerCase().endsWith(ext));
|
|
845
|
+
};
|
|
846
|
+
const getFileIcon = (type) => {
|
|
847
|
+
return /* @__PURE__ */ jsx(FileText, { className: "h-5 w-5" });
|
|
848
|
+
};
|
|
849
|
+
const getFileTypeColor = (type) => {
|
|
850
|
+
switch (type.toUpperCase()) {
|
|
851
|
+
case "PDF":
|
|
852
|
+
return "text-red-500";
|
|
853
|
+
case "DOCX":
|
|
854
|
+
case "DOC":
|
|
855
|
+
return "text-blue-500";
|
|
856
|
+
case "XLSX":
|
|
857
|
+
case "XLS":
|
|
858
|
+
return "text-green-500";
|
|
859
|
+
case "JPG":
|
|
860
|
+
case "JPEG":
|
|
861
|
+
case "PNG":
|
|
862
|
+
return "text-purple-500";
|
|
863
|
+
default:
|
|
864
|
+
return "text-muted-foreground";
|
|
865
|
+
}
|
|
709
866
|
};
|
|
867
|
+
const documentTypeOptions = [
|
|
868
|
+
{ value: "ID_DOCUMENT_FRONT", label: "ID Document (Front)" },
|
|
869
|
+
{ value: "ID_DOCUMENT_BACK", label: "ID Document (Back)" },
|
|
870
|
+
{ value: "PASSPORT", label: "Passport" },
|
|
871
|
+
{ value: "PROOF_OF_ADDRESS", label: "Proof of Address" },
|
|
872
|
+
{ value: "BANK_STATEMENT", label: "Bank Statement" },
|
|
873
|
+
{ value: "BUSINESS_LICENSE", label: "Business License" },
|
|
874
|
+
{ value: "TAX_DOCUMENT", label: "Tax Document" },
|
|
875
|
+
{ value: "OTHER", label: "Other" }
|
|
876
|
+
];
|
|
710
877
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
|
|
711
|
-
|
|
878
|
+
showUploadDialog && createPortal(
|
|
712
879
|
/* @__PURE__ */ jsxs("div", { className: "fixed inset-0 z-[100] flex items-center justify-center p-4", children: [
|
|
713
880
|
/* @__PURE__ */ jsx(
|
|
714
881
|
"div",
|
|
715
882
|
{
|
|
716
883
|
className: "fixed inset-0 bg-background/80 backdrop-blur-sm",
|
|
717
|
-
onClick:
|
|
884
|
+
onClick: handleCancelUpload
|
|
718
885
|
}
|
|
719
886
|
),
|
|
720
887
|
/* @__PURE__ */ jsxs("div", { className: "relative bg-card border rounded-lg shadow-lg max-w-lg w-full p-6 z-[101]", children: [
|
|
721
888
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-6", children: [
|
|
722
|
-
/* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold", children: "
|
|
889
|
+
/* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold", children: "Upload Document" }),
|
|
723
890
|
/* @__PURE__ */ jsx(
|
|
724
891
|
Button,
|
|
725
892
|
{
|
|
726
893
|
variant: "ghost",
|
|
727
894
|
size: "sm",
|
|
728
895
|
className: "h-8 w-8 p-0",
|
|
729
|
-
onClick:
|
|
896
|
+
onClick: handleCancelUpload,
|
|
730
897
|
children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4" })
|
|
731
898
|
}
|
|
732
899
|
)
|
|
733
900
|
] }),
|
|
734
901
|
/* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
902
|
+
/* @__PURE__ */ jsxs("div", { className: "border-2 border-dashed rounded-lg p-6 text-center hover:border-primary/50 transition-colors", children: [
|
|
903
|
+
/* @__PURE__ */ jsx(
|
|
904
|
+
"input",
|
|
905
|
+
{
|
|
906
|
+
type: "file",
|
|
907
|
+
id: "file-upload-dialog",
|
|
908
|
+
className: "hidden",
|
|
909
|
+
onChange: handleFileSelect,
|
|
910
|
+
disabled: isUploading
|
|
911
|
+
}
|
|
912
|
+
),
|
|
913
|
+
/* @__PURE__ */ jsxs(
|
|
914
|
+
"label",
|
|
915
|
+
{
|
|
916
|
+
htmlFor: "file-upload-dialog",
|
|
917
|
+
className: cn(
|
|
918
|
+
"cursor-pointer flex flex-col items-center gap-2",
|
|
919
|
+
isUploading && "opacity-50 cursor-not-allowed"
|
|
920
|
+
),
|
|
921
|
+
children: [
|
|
922
|
+
/* @__PURE__ */ jsx(Upload, { className: "h-8 w-8 text-muted-foreground" }),
|
|
923
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
924
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-foreground", children: selectedFile ? "Change file" : "Click to upload or drag and drop" }),
|
|
925
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground mt-1", children: "PDF, DOC, DOCX, JPG, PNG up to 10MB" })
|
|
926
|
+
] })
|
|
927
|
+
]
|
|
928
|
+
}
|
|
929
|
+
)
|
|
930
|
+
] }),
|
|
931
|
+
selectedFile && /* @__PURE__ */ jsxs("div", { className: "p-3 bg-muted/50 rounded-lg", children: [
|
|
932
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Selected file:" }),
|
|
933
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: selectedFile.name }),
|
|
934
|
+
/* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
|
|
935
|
+
(selectedFile.size / 1024 / 1024).toFixed(2),
|
|
936
|
+
" MB"
|
|
937
|
+
] })
|
|
938
|
+
] }),
|
|
735
939
|
/* @__PURE__ */ jsx(
|
|
736
|
-
|
|
940
|
+
EnhancedInput,
|
|
737
941
|
{
|
|
738
|
-
label: "
|
|
739
|
-
value:
|
|
740
|
-
|
|
741
|
-
|
|
942
|
+
label: "Document name",
|
|
943
|
+
value: documentName,
|
|
944
|
+
onChange: (e) => setDocumentName(e.target.value),
|
|
945
|
+
placeholder: "Enter document name"
|
|
742
946
|
}
|
|
743
947
|
),
|
|
744
948
|
/* @__PURE__ */ jsx(
|
|
745
949
|
EnhancedTextarea,
|
|
746
950
|
{
|
|
747
|
-
label: "
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
rows:
|
|
951
|
+
label: "Description",
|
|
952
|
+
value: description,
|
|
953
|
+
onChange: (e) => setDescription(e.target.value),
|
|
954
|
+
placeholder: "Enter document description (optional)",
|
|
955
|
+
rows: 3
|
|
956
|
+
}
|
|
957
|
+
),
|
|
958
|
+
/* @__PURE__ */ jsx(
|
|
959
|
+
EnhancedSelect,
|
|
960
|
+
{
|
|
961
|
+
label: "Document type",
|
|
962
|
+
value: documentType,
|
|
963
|
+
onValueChange: setDocumentType,
|
|
964
|
+
placeholder: "Select document type",
|
|
965
|
+
options: documentTypeOptions
|
|
752
966
|
}
|
|
753
967
|
)
|
|
754
968
|
] }),
|
|
@@ -757,8 +971,8 @@ var AlertNotes = ({ alertId, notes }) => {
|
|
|
757
971
|
Button,
|
|
758
972
|
{
|
|
759
973
|
variant: "outline",
|
|
760
|
-
onClick:
|
|
761
|
-
disabled:
|
|
974
|
+
onClick: handleCancelUpload,
|
|
975
|
+
disabled: isUploading,
|
|
762
976
|
className: "flex-1",
|
|
763
977
|
children: "Cancel"
|
|
764
978
|
}
|
|
@@ -766,10 +980,10 @@ var AlertNotes = ({ alertId, notes }) => {
|
|
|
766
980
|
/* @__PURE__ */ jsx(
|
|
767
981
|
Button,
|
|
768
982
|
{
|
|
769
|
-
onClick:
|
|
770
|
-
disabled:
|
|
983
|
+
onClick: handleUploadSubmit,
|
|
984
|
+
disabled: isUploading,
|
|
771
985
|
className: "flex-1",
|
|
772
|
-
children:
|
|
986
|
+
children: isUploading ? "Uploading..." : "Upload"
|
|
773
987
|
}
|
|
774
988
|
)
|
|
775
989
|
] })
|
|
@@ -777,311 +991,97 @@ var AlertNotes = ({ alertId, notes }) => {
|
|
|
777
991
|
] }),
|
|
778
992
|
document.body
|
|
779
993
|
),
|
|
780
|
-
/* @__PURE__ */ jsxs("div", { className: "space-y-
|
|
994
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
781
995
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
782
|
-
/* @__PURE__ */ jsx("h3", { className: "text-sm font-medium text-foreground", children: "
|
|
996
|
+
/* @__PURE__ */ jsx("h3", { className: "text-sm font-medium text-foreground", children: "Uploaded Documents" }),
|
|
783
997
|
/* @__PURE__ */ jsxs(
|
|
784
998
|
Button,
|
|
785
999
|
{
|
|
786
|
-
onClick: () =>
|
|
1000
|
+
onClick: () => setShowUploadDialog(true),
|
|
787
1001
|
variant: "ghost",
|
|
788
1002
|
size: "sm",
|
|
789
1003
|
className: "gap-2 text-primary hover:text-primary",
|
|
790
1004
|
children: [
|
|
791
|
-
/* @__PURE__ */ jsx(
|
|
792
|
-
"
|
|
1005
|
+
/* @__PURE__ */ jsx(Upload, { className: "h-4 w-4" }),
|
|
1006
|
+
"Upload"
|
|
793
1007
|
]
|
|
794
1008
|
}
|
|
795
1009
|
)
|
|
796
1010
|
] }),
|
|
797
|
-
|
|
798
|
-
/* @__PURE__ */ jsx(
|
|
799
|
-
/* @__PURE__ */ jsx("p", { children: "No
|
|
800
|
-
] }) : /* @__PURE__ */ jsx("div", { className: "space-y-
|
|
1011
|
+
documents.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "text-center py-8 text-muted-foreground", children: [
|
|
1012
|
+
/* @__PURE__ */ jsx(FileText, { className: "h-8 w-8 mx-auto mb-2 opacity-50" }),
|
|
1013
|
+
/* @__PURE__ */ jsx("p", { children: "No documents uploaded yet" })
|
|
1014
|
+
] }) : /* @__PURE__ */ jsx("div", { className: "space-y-2", children: documents.map((doc) => /* @__PURE__ */ jsxs(
|
|
801
1015
|
"div",
|
|
802
1016
|
{
|
|
803
|
-
className: "border rounded-lg
|
|
1017
|
+
className: "border rounded-lg hover:bg-muted/30 transition-colors overflow-hidden",
|
|
804
1018
|
children: [
|
|
805
|
-
/* @__PURE__ */
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
1019
|
+
isImageType(doc.name) && doc.url && /* @__PURE__ */ jsx("div", { className: "w-full bg-muted/50", children: /* @__PURE__ */ jsx(
|
|
1020
|
+
"img",
|
|
1021
|
+
{
|
|
1022
|
+
src: doc.url,
|
|
1023
|
+
alt: doc.name,
|
|
1024
|
+
className: "w-full h-48 object-cover"
|
|
1025
|
+
}
|
|
1026
|
+
) }),
|
|
1027
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between p-3", children: [
|
|
1028
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 flex-1 min-w-0", children: [
|
|
1029
|
+
!isImageType(doc.name) && /* @__PURE__ */ jsx("div", { className: cn(getFileTypeColor(doc.type)), children: getFileIcon(doc.type) }),
|
|
1030
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
1031
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1032
|
+
/* @__PURE__ */ jsx("h4", { className: "font-medium text-sm truncate", children: doc.name }),
|
|
1033
|
+
/* @__PURE__ */ jsx("span", { className: cn("text-xs px-2 py-0.5 rounded-full bg-muted", getFileTypeColor(doc.type)), children: doc.type })
|
|
1034
|
+
] }),
|
|
1035
|
+
doc.description && /* @__PURE__ */ jsx("p", { className: "text-sm text-foreground mt-1", children: doc.description }),
|
|
1036
|
+
/* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground mt-1", children: [
|
|
1037
|
+
doc.size,
|
|
1038
|
+
" \u2022 Uploaded by ",
|
|
1039
|
+
doc.uploadedBy,
|
|
1040
|
+
" \u2022 ",
|
|
1041
|
+
new Date(doc.uploadedAt).toLocaleDateString()
|
|
1042
|
+
] })
|
|
1043
|
+
] })
|
|
809
1044
|
] }),
|
|
810
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-
|
|
811
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground whitespace-nowrap", children: note.timestamp }),
|
|
1045
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
812
1046
|
/* @__PURE__ */ jsx(
|
|
813
1047
|
Button,
|
|
814
1048
|
{
|
|
815
1049
|
variant: "ghost",
|
|
816
1050
|
size: "sm",
|
|
817
|
-
className: "h-8 w-8 p-0
|
|
818
|
-
onClick: () =>
|
|
819
|
-
children: /* @__PURE__ */ jsx(
|
|
1051
|
+
className: "h-8 w-8 p-0",
|
|
1052
|
+
onClick: () => toast({ title: "Preview", description: `Viewing ${doc.name}` }),
|
|
1053
|
+
children: /* @__PURE__ */ jsx(Eye, { className: "h-4 w-4" })
|
|
820
1054
|
}
|
|
821
|
-
)
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
}
|
|
852
|
-
};
|
|
853
|
-
if (events.length === 0) {
|
|
854
|
-
return /* @__PURE__ */ jsx("div", { className: "text-center py-8 text-muted-foreground", children: "No timeline events yet" });
|
|
855
|
-
}
|
|
856
|
-
return /* @__PURE__ */ jsx("div", { className: "space-y-3", children: events.map((event, index) => /* @__PURE__ */ jsxs("div", { className: "relative pl-6 pb-3", children: [
|
|
857
|
-
index !== events.length - 1 && /* @__PURE__ */ jsx("div", { className: "absolute left-[7px] top-5 bottom-0 w-[2px] bg-border" }),
|
|
858
|
-
/* @__PURE__ */ jsx("div", { className: cn(
|
|
859
|
-
"absolute left-0 top-0 flex-none",
|
|
860
|
-
getStatusColor2(event.status)
|
|
861
|
-
), children: /* @__PURE__ */ jsx("div", { className: "h-4 w-4", children: getIcon(event.action) }) }),
|
|
862
|
-
/* @__PURE__ */ jsxs("div", { className: "space-y-0.5", children: [
|
|
863
|
-
/* @__PURE__ */ jsx("p", { className: "text-xs font-medium text-foreground", children: event.action }),
|
|
864
|
-
/* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
|
|
865
|
-
"by ",
|
|
866
|
-
event.user
|
|
867
|
-
] }),
|
|
868
|
-
event.details && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: event.details }),
|
|
869
|
-
event.status && /* @__PURE__ */ jsxs("p", { className: cn("text-xs font-medium", getStatusColor2(event.status)), children: [
|
|
870
|
-
"Status: ",
|
|
871
|
-
event.status
|
|
872
|
-
] }),
|
|
873
|
-
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground/70 pt-0.5", children: event.timestamp })
|
|
874
|
-
] })
|
|
875
|
-
] }, event.id)) });
|
|
876
|
-
};
|
|
877
|
-
var cardVariants = cva(
|
|
878
|
-
"rounded-lg border bg-card text-card-foreground transition-all duration-200",
|
|
879
|
-
{
|
|
880
|
-
variants: {
|
|
881
|
-
variant: {
|
|
882
|
-
default: "shadow-sm",
|
|
883
|
-
elevated: "shadow-md hover:shadow-lg",
|
|
884
|
-
outlined: "border-2 shadow-none",
|
|
885
|
-
ghost: "border-transparent shadow-none bg-transparent",
|
|
886
|
-
subtle: "border-border/75 shadow-none"
|
|
887
|
-
},
|
|
888
|
-
size: {
|
|
889
|
-
sm: "p-3",
|
|
890
|
-
md: "p-4",
|
|
891
|
-
lg: "p-6",
|
|
892
|
-
none: "p-0"
|
|
893
|
-
},
|
|
894
|
-
fullHeight: {
|
|
895
|
-
true: "h-full flex flex-col",
|
|
896
|
-
false: ""
|
|
897
|
-
},
|
|
898
|
-
interactive: {
|
|
899
|
-
true: "cursor-pointer hover:shadow-md hover:scale-[1.02]",
|
|
900
|
-
false: ""
|
|
901
|
-
}
|
|
902
|
-
},
|
|
903
|
-
defaultVariants: {
|
|
904
|
-
variant: "default",
|
|
905
|
-
size: "none",
|
|
906
|
-
fullHeight: false,
|
|
907
|
-
interactive: false
|
|
908
|
-
}
|
|
909
|
-
}
|
|
910
|
-
);
|
|
911
|
-
var Card = React13.forwardRef(
|
|
912
|
-
({ className, variant, size, fullHeight, interactive, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
913
|
-
"div",
|
|
914
|
-
{
|
|
915
|
-
ref,
|
|
916
|
-
className: cn(cardVariants({ variant, size, fullHeight, interactive }), className),
|
|
917
|
-
...props
|
|
918
|
-
}
|
|
919
|
-
)
|
|
920
|
-
);
|
|
921
|
-
Card.displayName = "Card";
|
|
922
|
-
var cardHeaderVariants = cva(
|
|
923
|
-
"flex flex-col space-y-1.5",
|
|
924
|
-
{
|
|
925
|
-
variants: {
|
|
926
|
-
size: {
|
|
927
|
-
sm: "px-3 pt-3 pb-2",
|
|
928
|
-
md: "px-4 pt-4 pb-3",
|
|
929
|
-
lg: "px-6 pt-6 pb-4"
|
|
930
|
-
},
|
|
931
|
-
align: {
|
|
932
|
-
start: "items-start",
|
|
933
|
-
center: "items-center",
|
|
934
|
-
end: "items-end"
|
|
935
|
-
},
|
|
936
|
-
direction: {
|
|
937
|
-
row: "flex-row justify-between items-center space-y-0 space-x-4",
|
|
938
|
-
column: "flex-col space-y-1.5"
|
|
939
|
-
}
|
|
940
|
-
},
|
|
941
|
-
defaultVariants: {
|
|
942
|
-
size: "lg",
|
|
943
|
-
align: "start",
|
|
944
|
-
direction: "column"
|
|
945
|
-
}
|
|
946
|
-
}
|
|
947
|
-
);
|
|
948
|
-
var CardHeader = React13.forwardRef(
|
|
949
|
-
({ className, size, align, direction, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
950
|
-
"div",
|
|
951
|
-
{
|
|
952
|
-
ref,
|
|
953
|
-
className: cn(cardHeaderVariants({ size, align, direction }), className),
|
|
954
|
-
...props
|
|
955
|
-
}
|
|
956
|
-
)
|
|
957
|
-
);
|
|
958
|
-
CardHeader.displayName = "CardHeader";
|
|
959
|
-
var cardTitleVariants = cva(
|
|
960
|
-
"font-semibold leading-none tracking-tight",
|
|
961
|
-
{
|
|
962
|
-
variants: {
|
|
963
|
-
size: {
|
|
964
|
-
sm: "text-base",
|
|
965
|
-
md: "text-lg",
|
|
966
|
-
lg: "text-xl"
|
|
967
|
-
}
|
|
968
|
-
},
|
|
969
|
-
defaultVariants: {
|
|
970
|
-
size: "md"
|
|
971
|
-
}
|
|
972
|
-
}
|
|
973
|
-
);
|
|
974
|
-
var CardTitle = React13.forwardRef(
|
|
975
|
-
({ className, size, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
976
|
-
"h3",
|
|
977
|
-
{
|
|
978
|
-
ref,
|
|
979
|
-
className: cn(cardTitleVariants({ size }), className),
|
|
980
|
-
...props
|
|
981
|
-
}
|
|
982
|
-
)
|
|
983
|
-
);
|
|
984
|
-
CardTitle.displayName = "CardTitle";
|
|
985
|
-
var CardDescription = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
986
|
-
"p",
|
|
987
|
-
{
|
|
988
|
-
ref,
|
|
989
|
-
className: cn("text-sm text-muted-foreground", className),
|
|
990
|
-
...props
|
|
991
|
-
}
|
|
992
|
-
));
|
|
993
|
-
CardDescription.displayName = "CardDescription";
|
|
994
|
-
var cardContentVariants = cva(
|
|
995
|
-
"",
|
|
996
|
-
{
|
|
997
|
-
variants: {
|
|
998
|
-
size: {
|
|
999
|
-
sm: "px-3 pb-2",
|
|
1000
|
-
md: "px-4 pb-3",
|
|
1001
|
-
lg: "px-6 pb-4"
|
|
1002
|
-
},
|
|
1003
|
-
fullHeight: {
|
|
1004
|
-
true: "flex-1",
|
|
1005
|
-
false: ""
|
|
1006
|
-
}
|
|
1007
|
-
},
|
|
1008
|
-
defaultVariants: {
|
|
1009
|
-
size: "lg",
|
|
1010
|
-
fullHeight: false
|
|
1011
|
-
}
|
|
1012
|
-
}
|
|
1013
|
-
);
|
|
1014
|
-
var CardContent = React13.forwardRef(
|
|
1015
|
-
({ className, size, fullHeight, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1016
|
-
"div",
|
|
1017
|
-
{
|
|
1018
|
-
ref,
|
|
1019
|
-
className: cn(cardContentVariants({ size, fullHeight }), className),
|
|
1020
|
-
...props
|
|
1021
|
-
}
|
|
1022
|
-
)
|
|
1023
|
-
);
|
|
1024
|
-
CardContent.displayName = "CardContent";
|
|
1025
|
-
var cardFooterVariants = cva(
|
|
1026
|
-
"flex items-center pt-0",
|
|
1027
|
-
{
|
|
1028
|
-
variants: {
|
|
1029
|
-
size: {
|
|
1030
|
-
sm: "p-3 pt-0",
|
|
1031
|
-
md: "p-4 pt-0",
|
|
1032
|
-
lg: "p-6 pt-0"
|
|
1033
|
-
},
|
|
1034
|
-
justify: {
|
|
1035
|
-
start: "justify-start",
|
|
1036
|
-
center: "justify-center",
|
|
1037
|
-
end: "justify-end",
|
|
1038
|
-
between: "justify-between"
|
|
1039
|
-
}
|
|
1040
|
-
},
|
|
1041
|
-
defaultVariants: {
|
|
1042
|
-
size: "lg",
|
|
1043
|
-
justify: "start"
|
|
1044
|
-
}
|
|
1045
|
-
}
|
|
1046
|
-
);
|
|
1047
|
-
var CardFooter = React13.forwardRef(
|
|
1048
|
-
({ className, size, justify, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1049
|
-
"div",
|
|
1050
|
-
{
|
|
1051
|
-
ref,
|
|
1052
|
-
className: cn(cardFooterVariants({ size, justify }), className),
|
|
1053
|
-
...props
|
|
1054
|
-
}
|
|
1055
|
-
)
|
|
1056
|
-
);
|
|
1057
|
-
CardFooter.displayName = "CardFooter";
|
|
1058
|
-
var FormCard = React13.forwardRef(
|
|
1059
|
-
({ title, description, children, headerActions, className, variant = "default", ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
1060
|
-
Card,
|
|
1061
|
-
{
|
|
1062
|
-
ref,
|
|
1063
|
-
variant,
|
|
1064
|
-
fullHeight: true,
|
|
1065
|
-
className: cn("", className),
|
|
1066
|
-
...props,
|
|
1067
|
-
children: [
|
|
1068
|
-
/* @__PURE__ */ jsxs(
|
|
1069
|
-
CardHeader,
|
|
1070
|
-
{
|
|
1071
|
-
direction: headerActions ? "row" : "column",
|
|
1072
|
-
size: "md",
|
|
1073
|
-
children: [
|
|
1074
|
-
/* @__PURE__ */ jsx("div", { className: "space-y-1", children: /* @__PURE__ */ jsx(CardTitle, { size: "md", children: title }) }),
|
|
1075
|
-
headerActions && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: headerActions })
|
|
1076
|
-
]
|
|
1077
|
-
}
|
|
1078
|
-
),
|
|
1079
|
-
/* @__PURE__ */ jsx(CardContent, { size: "md", fullHeight: true, children })
|
|
1080
|
-
]
|
|
1081
|
-
}
|
|
1082
|
-
)
|
|
1083
|
-
);
|
|
1084
|
-
FormCard.displayName = "FormCard";
|
|
1055
|
+
),
|
|
1056
|
+
/* @__PURE__ */ jsx(
|
|
1057
|
+
Button,
|
|
1058
|
+
{
|
|
1059
|
+
variant: "ghost",
|
|
1060
|
+
size: "sm",
|
|
1061
|
+
className: "h-8 w-8 p-0",
|
|
1062
|
+
onClick: () => toast({ title: "Download", description: `Downloading ${doc.name}` }),
|
|
1063
|
+
children: /* @__PURE__ */ jsx(Download, { className: "h-4 w-4" })
|
|
1064
|
+
}
|
|
1065
|
+
),
|
|
1066
|
+
/* @__PURE__ */ jsx(
|
|
1067
|
+
Button,
|
|
1068
|
+
{
|
|
1069
|
+
variant: "ghost",
|
|
1070
|
+
size: "sm",
|
|
1071
|
+
className: "h-8 w-8 p-0 text-muted-foreground hover:text-foreground",
|
|
1072
|
+
onClick: () => toast({ title: "Delete", description: `Deleted ${doc.name}` }),
|
|
1073
|
+
children: /* @__PURE__ */ jsx(Trash2, { className: "h-4 w-4" })
|
|
1074
|
+
}
|
|
1075
|
+
)
|
|
1076
|
+
] })
|
|
1077
|
+
] })
|
|
1078
|
+
]
|
|
1079
|
+
},
|
|
1080
|
+
doc.id
|
|
1081
|
+
)) })
|
|
1082
|
+
] })
|
|
1083
|
+
] });
|
|
1084
|
+
};
|
|
1085
1085
|
var InfoField = ({ label, value, layout = "vertical", className }) => {
|
|
1086
1086
|
if (layout === "horizontal") {
|
|
1087
1087
|
return /* @__PURE__ */ jsxs("div", { className: `flex items-start gap-3 ${className || ""}`, children: [
|
|
@@ -1394,6 +1394,184 @@ var ContextSection = ({ alert }) => {
|
|
|
1394
1394
|
] }) })
|
|
1395
1395
|
] });
|
|
1396
1396
|
};
|
|
1397
|
+
var EditableInfoField = ({
|
|
1398
|
+
label,
|
|
1399
|
+
value,
|
|
1400
|
+
options,
|
|
1401
|
+
onChange,
|
|
1402
|
+
placeholder = "Select...",
|
|
1403
|
+
renderValue,
|
|
1404
|
+
className
|
|
1405
|
+
}) => {
|
|
1406
|
+
const [isEditing, setIsEditing] = useState(false);
|
|
1407
|
+
const handleChange = (newValue) => {
|
|
1408
|
+
onChange(newValue);
|
|
1409
|
+
setIsEditing(false);
|
|
1410
|
+
};
|
|
1411
|
+
if (isEditing) {
|
|
1412
|
+
return /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsx(
|
|
1413
|
+
EnhancedSelect,
|
|
1414
|
+
{
|
|
1415
|
+
label,
|
|
1416
|
+
value: value || "",
|
|
1417
|
+
onValueChange: handleChange,
|
|
1418
|
+
options,
|
|
1419
|
+
placeholder
|
|
1420
|
+
}
|
|
1421
|
+
) });
|
|
1422
|
+
}
|
|
1423
|
+
const displayValue = value ? renderValue ? renderValue(value) : value : placeholder;
|
|
1424
|
+
return /* @__PURE__ */ jsx(
|
|
1425
|
+
"div",
|
|
1426
|
+
{
|
|
1427
|
+
className: cn("cursor-pointer transition-colors hover:bg-muted/50 rounded-md -mx-2 px-2 -my-1 py-1", className),
|
|
1428
|
+
onClick: () => setIsEditing(true),
|
|
1429
|
+
role: "button",
|
|
1430
|
+
tabIndex: 0,
|
|
1431
|
+
onKeyDown: (e) => {
|
|
1432
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
1433
|
+
e.preventDefault();
|
|
1434
|
+
setIsEditing(true);
|
|
1435
|
+
}
|
|
1436
|
+
},
|
|
1437
|
+
children: /* @__PURE__ */ jsx(InfoField, { label, value: displayValue })
|
|
1438
|
+
}
|
|
1439
|
+
);
|
|
1440
|
+
};
|
|
1441
|
+
|
|
1442
|
+
// src/lib/utils/alert-utils.ts
|
|
1443
|
+
var getTypeBadgeVariant = (type) => {
|
|
1444
|
+
switch (type) {
|
|
1445
|
+
case "Ofac":
|
|
1446
|
+
return "alert-ofac";
|
|
1447
|
+
case "Dual Approval":
|
|
1448
|
+
return "alert-dual";
|
|
1449
|
+
case "Transaction Monitoring":
|
|
1450
|
+
return "alert-monitoring";
|
|
1451
|
+
case "Transaction Processing Error":
|
|
1452
|
+
return "alert-error";
|
|
1453
|
+
default:
|
|
1454
|
+
return "outline";
|
|
1455
|
+
}
|
|
1456
|
+
};
|
|
1457
|
+
var getStatusColor = (status) => {
|
|
1458
|
+
switch (status) {
|
|
1459
|
+
case "Unassigned":
|
|
1460
|
+
return "text-destructive";
|
|
1461
|
+
case "Closed":
|
|
1462
|
+
return "text-success";
|
|
1463
|
+
case "In Progress":
|
|
1464
|
+
return "text-warning";
|
|
1465
|
+
default:
|
|
1466
|
+
return "";
|
|
1467
|
+
}
|
|
1468
|
+
};
|
|
1469
|
+
|
|
1470
|
+
// src/lib/constants.ts
|
|
1471
|
+
var COUNTRY_OPTIONS = [
|
|
1472
|
+
{ value: "US", label: "United States" },
|
|
1473
|
+
{ value: "CA", label: "Canada" },
|
|
1474
|
+
{ value: "GB", label: "United Kingdom" },
|
|
1475
|
+
{ value: "DE", label: "Germany" },
|
|
1476
|
+
{ value: "FR", label: "France" }
|
|
1477
|
+
];
|
|
1478
|
+
var FI_ID_TYPE_OPTIONS = [
|
|
1479
|
+
{ value: "bic", label: "BIC" },
|
|
1480
|
+
{ value: "swift", label: "SWIFT" },
|
|
1481
|
+
{ value: "aba", label: "ABA" },
|
|
1482
|
+
{ value: "iban", label: "IBAN" },
|
|
1483
|
+
{ value: "routing", label: "Routing Number" }
|
|
1484
|
+
];
|
|
1485
|
+
var ADDRESS_TYPE_OPTIONS = {
|
|
1486
|
+
FI: [
|
|
1487
|
+
{ value: "headquarters", label: "Headquarters" },
|
|
1488
|
+
{ value: "branch", label: "Branch Office" },
|
|
1489
|
+
{ value: "correspondent", label: "Correspondent Bank" }
|
|
1490
|
+
]
|
|
1491
|
+
};
|
|
1492
|
+
var RFI_STATUS_OPTIONS = [
|
|
1493
|
+
{ value: "Completed", label: "Completed" },
|
|
1494
|
+
{ value: "Provided", label: "Provided" },
|
|
1495
|
+
{ value: "Pending", label: "Pending" }
|
|
1496
|
+
];
|
|
1497
|
+
var ASSIGNEE_OPTIONS = [
|
|
1498
|
+
{ value: "John Smith", label: "John Smith" },
|
|
1499
|
+
{ value: "Sarah Johnson", label: "Sarah Johnson" },
|
|
1500
|
+
{ value: "Michael Chen", label: "Michael Chen" },
|
|
1501
|
+
{ value: "approverdev", label: "approverdev" },
|
|
1502
|
+
{ value: "Unassigned", label: "Unassigned" }
|
|
1503
|
+
];
|
|
1504
|
+
var AlertDetailView = ({
|
|
1505
|
+
alert,
|
|
1506
|
+
rfiStatus,
|
|
1507
|
+
assignee,
|
|
1508
|
+
onRfiStatusChange,
|
|
1509
|
+
onAssigneeChange
|
|
1510
|
+
}) => {
|
|
1511
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col lg:flex-row gap-6", children: [
|
|
1512
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 grid grid-cols-1 lg:grid-cols-2 gap-6", children: [
|
|
1513
|
+
/* @__PURE__ */ jsx(
|
|
1514
|
+
FormCard,
|
|
1515
|
+
{
|
|
1516
|
+
title: "Alert Information",
|
|
1517
|
+
headerActions: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", children: /* @__PURE__ */ jsx(Edit, { className: "h-4 w-4" }) }),
|
|
1518
|
+
children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
1519
|
+
/* @__PURE__ */ jsx(InfoField, { label: "Alert ID", value: alert.id }),
|
|
1520
|
+
/* @__PURE__ */ jsx(
|
|
1521
|
+
InfoField,
|
|
1522
|
+
{
|
|
1523
|
+
label: "Type",
|
|
1524
|
+
value: /* @__PURE__ */ jsx(Badge, { variant: getTypeBadgeVariant(alert.type), children: alert.type })
|
|
1525
|
+
}
|
|
1526
|
+
),
|
|
1527
|
+
/* @__PURE__ */ jsx(
|
|
1528
|
+
InfoField,
|
|
1529
|
+
{
|
|
1530
|
+
label: "Status",
|
|
1531
|
+
value: /* @__PURE__ */ jsx("span", { className: cn("font-medium", getStatusColor(alert.status)), children: alert.status })
|
|
1532
|
+
}
|
|
1533
|
+
),
|
|
1534
|
+
/* @__PURE__ */ jsx(InfoField, { label: "Created At", value: alert.createdAt }),
|
|
1535
|
+
/* @__PURE__ */ jsx(
|
|
1536
|
+
InfoField,
|
|
1537
|
+
{
|
|
1538
|
+
label: "Context Type",
|
|
1539
|
+
value: /* @__PURE__ */ jsx(Badge, { variant: "outline", children: alert.contextType })
|
|
1540
|
+
}
|
|
1541
|
+
),
|
|
1542
|
+
/* @__PURE__ */ jsx(InfoField, { label: "Context ID", value: alert.contextId || "N/A" }),
|
|
1543
|
+
/* @__PURE__ */ jsx(
|
|
1544
|
+
EditableInfoField,
|
|
1545
|
+
{
|
|
1546
|
+
label: "Assignee",
|
|
1547
|
+
value: assignee,
|
|
1548
|
+
options: ASSIGNEE_OPTIONS,
|
|
1549
|
+
onChange: onAssigneeChange,
|
|
1550
|
+
placeholder: "Unassigned"
|
|
1551
|
+
}
|
|
1552
|
+
),
|
|
1553
|
+
/* @__PURE__ */ jsx(
|
|
1554
|
+
EditableInfoField,
|
|
1555
|
+
{
|
|
1556
|
+
label: "RFI Status",
|
|
1557
|
+
value: rfiStatus,
|
|
1558
|
+
options: RFI_STATUS_OPTIONS,
|
|
1559
|
+
onChange: onRfiStatusChange,
|
|
1560
|
+
placeholder: "Select status",
|
|
1561
|
+
renderValue: (value) => /* @__PURE__ */ jsx(Badge, { variant: "success", children: value })
|
|
1562
|
+
}
|
|
1563
|
+
),
|
|
1564
|
+
/* @__PURE__ */ jsx("div", { className: "col-span-2", children: /* @__PURE__ */ jsx(InfoField, { label: "Description", value: alert.description }) })
|
|
1565
|
+
] })
|
|
1566
|
+
}
|
|
1567
|
+
),
|
|
1568
|
+
/* @__PURE__ */ jsx(ContextSection, { alert }),
|
|
1569
|
+
/* @__PURE__ */ jsx(FormCard, { title: "Notes", children: /* @__PURE__ */ jsx(AlertNotes, { alertId: alert.id, notes: alert.notes || [] }) }),
|
|
1570
|
+
/* @__PURE__ */ jsx(FormCard, { title: "Documents", children: /* @__PURE__ */ jsx(AlertDocuments, { alertId: alert.id, documents: alert.documents || [] }) })
|
|
1571
|
+
] }),
|
|
1572
|
+
/* @__PURE__ */ jsx("div", { className: "lg:w-64", children: /* @__PURE__ */ jsx(FormCard, { title: "Status Timeline", className: "h-full", children: /* @__PURE__ */ jsx(AlertTimeline, { events: alert.timeline || [] }) }) })
|
|
1573
|
+
] });
|
|
1574
|
+
};
|
|
1397
1575
|
|
|
1398
1576
|
// src/assets/braid-logo.png
|
|
1399
1577
|
var braid_logo_default = "./braid-logo-343BOQZ2.png";
|
|
@@ -3062,41 +3240,6 @@ var ACHTransferSection = ({ isEditing, onToggleEdit, className, hideActions }) =
|
|
|
3062
3240
|
}
|
|
3063
3241
|
);
|
|
3064
3242
|
};
|
|
3065
|
-
|
|
3066
|
-
// src/lib/constants.ts
|
|
3067
|
-
var COUNTRY_OPTIONS = [
|
|
3068
|
-
{ value: "US", label: "United States" },
|
|
3069
|
-
{ value: "CA", label: "Canada" },
|
|
3070
|
-
{ value: "GB", label: "United Kingdom" },
|
|
3071
|
-
{ value: "DE", label: "Germany" },
|
|
3072
|
-
{ value: "FR", label: "France" }
|
|
3073
|
-
];
|
|
3074
|
-
var FI_ID_TYPE_OPTIONS = [
|
|
3075
|
-
{ value: "bic", label: "BIC" },
|
|
3076
|
-
{ value: "swift", label: "SWIFT" },
|
|
3077
|
-
{ value: "aba", label: "ABA" },
|
|
3078
|
-
{ value: "iban", label: "IBAN" },
|
|
3079
|
-
{ value: "routing", label: "Routing Number" }
|
|
3080
|
-
];
|
|
3081
|
-
var ADDRESS_TYPE_OPTIONS = {
|
|
3082
|
-
FI: [
|
|
3083
|
-
{ value: "headquarters", label: "Headquarters" },
|
|
3084
|
-
{ value: "branch", label: "Branch Office" },
|
|
3085
|
-
{ value: "correspondent", label: "Correspondent Bank" }
|
|
3086
|
-
]
|
|
3087
|
-
};
|
|
3088
|
-
var RFI_STATUS_OPTIONS = [
|
|
3089
|
-
{ value: "Completed", label: "Completed" },
|
|
3090
|
-
{ value: "Provided", label: "Provided" },
|
|
3091
|
-
{ value: "Pending", label: "Pending" }
|
|
3092
|
-
];
|
|
3093
|
-
var ASSIGNEE_OPTIONS = [
|
|
3094
|
-
{ value: "John Smith", label: "John Smith" },
|
|
3095
|
-
{ value: "Sarah Johnson", label: "Sarah Johnson" },
|
|
3096
|
-
{ value: "Michael Chen", label: "Michael Chen" },
|
|
3097
|
-
{ value: "approverdev", label: "approverdev" },
|
|
3098
|
-
{ value: "Unassigned", label: "Unassigned" }
|
|
3099
|
-
];
|
|
3100
3243
|
var AddressForm = ({
|
|
3101
3244
|
title,
|
|
3102
3245
|
description,
|
|
@@ -4794,6 +4937,75 @@ var ListPage = React13.forwardRef(
|
|
|
4794
4937
|
}
|
|
4795
4938
|
);
|
|
4796
4939
|
ListPage.displayName = "ListPage";
|
|
4940
|
+
var StatementHeader = ({ data, onEdit }) => {
|
|
4941
|
+
return /* @__PURE__ */ jsxs(Card, { children: [
|
|
4942
|
+
/* @__PURE__ */ jsxs(CardHeader, { direction: "row", children: [
|
|
4943
|
+
/* @__PURE__ */ jsx(CardTitle, { size: "md", children: "Statement Summary" }),
|
|
4944
|
+
/* @__PURE__ */ jsxs(Button, { variant: "outline", size: "sm", onClick: onEdit, children: [
|
|
4945
|
+
/* @__PURE__ */ jsx(Edit, { className: "h-4 w-4 mr-2" }),
|
|
4946
|
+
"Edit"
|
|
4947
|
+
] })
|
|
4948
|
+
] }),
|
|
4949
|
+
/* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6", children: [
|
|
4950
|
+
/* @__PURE__ */ jsx(
|
|
4951
|
+
InfoField,
|
|
4952
|
+
{
|
|
4953
|
+
label: "Account",
|
|
4954
|
+
value: data.account,
|
|
4955
|
+
layout: "horizontal"
|
|
4956
|
+
}
|
|
4957
|
+
),
|
|
4958
|
+
/* @__PURE__ */ jsx(
|
|
4959
|
+
InfoField,
|
|
4960
|
+
{
|
|
4961
|
+
label: "Product ID",
|
|
4962
|
+
value: data.productId,
|
|
4963
|
+
layout: "horizontal"
|
|
4964
|
+
}
|
|
4965
|
+
),
|
|
4966
|
+
/* @__PURE__ */ jsx(
|
|
4967
|
+
InfoField,
|
|
4968
|
+
{
|
|
4969
|
+
label: "Program ID",
|
|
4970
|
+
value: data.programId,
|
|
4971
|
+
layout: "horizontal"
|
|
4972
|
+
}
|
|
4973
|
+
),
|
|
4974
|
+
/* @__PURE__ */ jsx(
|
|
4975
|
+
InfoField,
|
|
4976
|
+
{
|
|
4977
|
+
label: "Start Date",
|
|
4978
|
+
value: data.startDate,
|
|
4979
|
+
layout: "horizontal"
|
|
4980
|
+
}
|
|
4981
|
+
),
|
|
4982
|
+
/* @__PURE__ */ jsx(
|
|
4983
|
+
InfoField,
|
|
4984
|
+
{
|
|
4985
|
+
label: "End Date",
|
|
4986
|
+
value: data.endDate,
|
|
4987
|
+
layout: "horizontal"
|
|
4988
|
+
}
|
|
4989
|
+
),
|
|
4990
|
+
/* @__PURE__ */ jsx(
|
|
4991
|
+
InfoField,
|
|
4992
|
+
{
|
|
4993
|
+
label: "Starting Balance",
|
|
4994
|
+
value: data.startingBalance,
|
|
4995
|
+
layout: "horizontal"
|
|
4996
|
+
}
|
|
4997
|
+
),
|
|
4998
|
+
/* @__PURE__ */ jsx(
|
|
4999
|
+
InfoField,
|
|
5000
|
+
{
|
|
5001
|
+
label: "Ending Balance",
|
|
5002
|
+
value: data.endingBalance,
|
|
5003
|
+
layout: "horizontal"
|
|
5004
|
+
}
|
|
5005
|
+
)
|
|
5006
|
+
] }) })
|
|
5007
|
+
] });
|
|
5008
|
+
};
|
|
4797
5009
|
var ACHDetailsSection = ({ data }) => {
|
|
4798
5010
|
const formatCurrency = (value) => {
|
|
4799
5011
|
return new Intl.NumberFormat("en-US", {
|
|
@@ -5338,50 +5550,6 @@ var DropdownMenuSeparator = React13.forwardRef(({ className, ...props }, ref) =>
|
|
|
5338
5550
|
}
|
|
5339
5551
|
));
|
|
5340
5552
|
DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
|
|
5341
|
-
var EditableInfoField = ({
|
|
5342
|
-
label,
|
|
5343
|
-
value,
|
|
5344
|
-
options,
|
|
5345
|
-
onChange,
|
|
5346
|
-
placeholder = "Select...",
|
|
5347
|
-
renderValue,
|
|
5348
|
-
className
|
|
5349
|
-
}) => {
|
|
5350
|
-
const [isEditing, setIsEditing] = useState(false);
|
|
5351
|
-
const handleChange = (newValue) => {
|
|
5352
|
-
onChange(newValue);
|
|
5353
|
-
setIsEditing(false);
|
|
5354
|
-
};
|
|
5355
|
-
if (isEditing) {
|
|
5356
|
-
return /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsx(
|
|
5357
|
-
EnhancedSelect,
|
|
5358
|
-
{
|
|
5359
|
-
label,
|
|
5360
|
-
value: value || "",
|
|
5361
|
-
onValueChange: handleChange,
|
|
5362
|
-
options,
|
|
5363
|
-
placeholder
|
|
5364
|
-
}
|
|
5365
|
-
) });
|
|
5366
|
-
}
|
|
5367
|
-
const displayValue = value ? renderValue ? renderValue(value) : value : placeholder;
|
|
5368
|
-
return /* @__PURE__ */ jsx(
|
|
5369
|
-
"div",
|
|
5370
|
-
{
|
|
5371
|
-
className: cn("cursor-pointer transition-colors hover:bg-muted/50 rounded-md -mx-2 px-2 -my-1 py-1", className),
|
|
5372
|
-
onClick: () => setIsEditing(true),
|
|
5373
|
-
role: "button",
|
|
5374
|
-
tabIndex: 0,
|
|
5375
|
-
onKeyDown: (e) => {
|
|
5376
|
-
if (e.key === "Enter" || e.key === " ") {
|
|
5377
|
-
e.preventDefault();
|
|
5378
|
-
setIsEditing(true);
|
|
5379
|
-
}
|
|
5380
|
-
},
|
|
5381
|
-
children: /* @__PURE__ */ jsx(InfoField, { label, value: displayValue })
|
|
5382
|
-
}
|
|
5383
|
-
);
|
|
5384
|
-
};
|
|
5385
5553
|
var EntityCard = React13.forwardRef(
|
|
5386
5554
|
({
|
|
5387
5555
|
entity,
|
|
@@ -6527,105 +6695,6 @@ var useAlertDetail = (id) => {
|
|
|
6527
6695
|
handleAssigneeChange
|
|
6528
6696
|
};
|
|
6529
6697
|
};
|
|
6530
|
-
|
|
6531
|
-
// src/lib/utils/alert-utils.ts
|
|
6532
|
-
var getTypeBadgeVariant = (type) => {
|
|
6533
|
-
switch (type) {
|
|
6534
|
-
case "Ofac":
|
|
6535
|
-
return "alert-ofac";
|
|
6536
|
-
case "Dual Approval":
|
|
6537
|
-
return "alert-dual";
|
|
6538
|
-
case "Transaction Monitoring":
|
|
6539
|
-
return "alert-monitoring";
|
|
6540
|
-
case "Transaction Processing Error":
|
|
6541
|
-
return "alert-error";
|
|
6542
|
-
default:
|
|
6543
|
-
return "outline";
|
|
6544
|
-
}
|
|
6545
|
-
};
|
|
6546
|
-
var getStatusColor = (status) => {
|
|
6547
|
-
switch (status) {
|
|
6548
|
-
case "Unassigned":
|
|
6549
|
-
return "text-destructive";
|
|
6550
|
-
case "Closed":
|
|
6551
|
-
return "text-success";
|
|
6552
|
-
case "In Progress":
|
|
6553
|
-
return "text-warning";
|
|
6554
|
-
default:
|
|
6555
|
-
return "";
|
|
6556
|
-
}
|
|
6557
|
-
};
|
|
6558
|
-
var AlertDetailView = ({
|
|
6559
|
-
alert,
|
|
6560
|
-
rfiStatus,
|
|
6561
|
-
assignee,
|
|
6562
|
-
onRfiStatusChange,
|
|
6563
|
-
onAssigneeChange
|
|
6564
|
-
}) => {
|
|
6565
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col lg:flex-row gap-6", children: [
|
|
6566
|
-
/* @__PURE__ */ jsxs("div", { className: "flex-1 grid grid-cols-1 lg:grid-cols-2 gap-6", children: [
|
|
6567
|
-
/* @__PURE__ */ jsx(
|
|
6568
|
-
FormCard,
|
|
6569
|
-
{
|
|
6570
|
-
title: "Alert Information",
|
|
6571
|
-
headerActions: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", children: /* @__PURE__ */ jsx(Edit, { className: "h-4 w-4" }) }),
|
|
6572
|
-
children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
6573
|
-
/* @__PURE__ */ jsx(InfoField, { label: "Alert ID", value: alert.id }),
|
|
6574
|
-
/* @__PURE__ */ jsx(
|
|
6575
|
-
InfoField,
|
|
6576
|
-
{
|
|
6577
|
-
label: "Type",
|
|
6578
|
-
value: /* @__PURE__ */ jsx(Badge, { variant: getTypeBadgeVariant(alert.type), children: alert.type })
|
|
6579
|
-
}
|
|
6580
|
-
),
|
|
6581
|
-
/* @__PURE__ */ jsx(
|
|
6582
|
-
InfoField,
|
|
6583
|
-
{
|
|
6584
|
-
label: "Status",
|
|
6585
|
-
value: /* @__PURE__ */ jsx("span", { className: cn("font-medium", getStatusColor(alert.status)), children: alert.status })
|
|
6586
|
-
}
|
|
6587
|
-
),
|
|
6588
|
-
/* @__PURE__ */ jsx(InfoField, { label: "Created At", value: alert.createdAt }),
|
|
6589
|
-
/* @__PURE__ */ jsx(
|
|
6590
|
-
InfoField,
|
|
6591
|
-
{
|
|
6592
|
-
label: "Context Type",
|
|
6593
|
-
value: /* @__PURE__ */ jsx(Badge, { variant: "outline", children: alert.contextType })
|
|
6594
|
-
}
|
|
6595
|
-
),
|
|
6596
|
-
/* @__PURE__ */ jsx(InfoField, { label: "Context ID", value: alert.contextId || "N/A" }),
|
|
6597
|
-
/* @__PURE__ */ jsx(
|
|
6598
|
-
EditableInfoField,
|
|
6599
|
-
{
|
|
6600
|
-
label: "Assignee",
|
|
6601
|
-
value: assignee,
|
|
6602
|
-
options: ASSIGNEE_OPTIONS,
|
|
6603
|
-
onChange: onAssigneeChange,
|
|
6604
|
-
placeholder: "Unassigned"
|
|
6605
|
-
}
|
|
6606
|
-
),
|
|
6607
|
-
/* @__PURE__ */ jsx(
|
|
6608
|
-
EditableInfoField,
|
|
6609
|
-
{
|
|
6610
|
-
label: "RFI Status",
|
|
6611
|
-
value: rfiStatus,
|
|
6612
|
-
options: RFI_STATUS_OPTIONS,
|
|
6613
|
-
onChange: onRfiStatusChange,
|
|
6614
|
-
placeholder: "Select status",
|
|
6615
|
-
renderValue: (value) => /* @__PURE__ */ jsx(Badge, { variant: "success", children: value })
|
|
6616
|
-
}
|
|
6617
|
-
),
|
|
6618
|
-
/* @__PURE__ */ jsx("div", { className: "col-span-2", children: /* @__PURE__ */ jsx(InfoField, { label: "Description", value: alert.description }) })
|
|
6619
|
-
] })
|
|
6620
|
-
}
|
|
6621
|
-
),
|
|
6622
|
-
/* @__PURE__ */ jsx(ContextSection, { alert }),
|
|
6623
|
-
/* @__PURE__ */ jsx(FormCard, { title: "Notes", children: /* @__PURE__ */ jsx(AlertNotes, { alertId: alert.id, notes: alert.notes || [] }) }),
|
|
6624
|
-
/* @__PURE__ */ jsx(FormCard, { title: "Documents", children: /* @__PURE__ */ jsx(AlertDocuments, { alertId: alert.id, documents: alert.documents || [] }) })
|
|
6625
|
-
] }),
|
|
6626
|
-
/* @__PURE__ */ jsx("div", { className: "lg:w-64", children: /* @__PURE__ */ jsx(FormCard, { title: "Status Timeline", className: "h-full", children: /* @__PURE__ */ jsx(AlertTimeline, { events: alert.timeline || [] }) }) })
|
|
6627
|
-
] });
|
|
6628
|
-
};
|
|
6629
6698
|
var AlertDetail = () => {
|
|
6630
6699
|
const { id } = useParams();
|
|
6631
6700
|
const navigate = useNavigate();
|
|
@@ -7830,75 +7899,6 @@ var NotFound = () => {
|
|
|
7830
7899
|
] }) });
|
|
7831
7900
|
};
|
|
7832
7901
|
var NotFound_default = NotFound;
|
|
7833
|
-
var StatementHeader = ({ data, onEdit }) => {
|
|
7834
|
-
return /* @__PURE__ */ jsxs(Card, { children: [
|
|
7835
|
-
/* @__PURE__ */ jsxs(CardHeader, { direction: "row", children: [
|
|
7836
|
-
/* @__PURE__ */ jsx(CardTitle, { size: "md", children: "Statement Summary" }),
|
|
7837
|
-
/* @__PURE__ */ jsxs(Button, { variant: "outline", size: "sm", onClick: onEdit, children: [
|
|
7838
|
-
/* @__PURE__ */ jsx(Edit, { className: "h-4 w-4 mr-2" }),
|
|
7839
|
-
"Edit"
|
|
7840
|
-
] })
|
|
7841
|
-
] }),
|
|
7842
|
-
/* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6", children: [
|
|
7843
|
-
/* @__PURE__ */ jsx(
|
|
7844
|
-
InfoField,
|
|
7845
|
-
{
|
|
7846
|
-
label: "Account",
|
|
7847
|
-
value: data.account,
|
|
7848
|
-
layout: "horizontal"
|
|
7849
|
-
}
|
|
7850
|
-
),
|
|
7851
|
-
/* @__PURE__ */ jsx(
|
|
7852
|
-
InfoField,
|
|
7853
|
-
{
|
|
7854
|
-
label: "Product ID",
|
|
7855
|
-
value: data.productId,
|
|
7856
|
-
layout: "horizontal"
|
|
7857
|
-
}
|
|
7858
|
-
),
|
|
7859
|
-
/* @__PURE__ */ jsx(
|
|
7860
|
-
InfoField,
|
|
7861
|
-
{
|
|
7862
|
-
label: "Program ID",
|
|
7863
|
-
value: data.programId,
|
|
7864
|
-
layout: "horizontal"
|
|
7865
|
-
}
|
|
7866
|
-
),
|
|
7867
|
-
/* @__PURE__ */ jsx(
|
|
7868
|
-
InfoField,
|
|
7869
|
-
{
|
|
7870
|
-
label: "Start Date",
|
|
7871
|
-
value: data.startDate,
|
|
7872
|
-
layout: "horizontal"
|
|
7873
|
-
}
|
|
7874
|
-
),
|
|
7875
|
-
/* @__PURE__ */ jsx(
|
|
7876
|
-
InfoField,
|
|
7877
|
-
{
|
|
7878
|
-
label: "End Date",
|
|
7879
|
-
value: data.endDate,
|
|
7880
|
-
layout: "horizontal"
|
|
7881
|
-
}
|
|
7882
|
-
),
|
|
7883
|
-
/* @__PURE__ */ jsx(
|
|
7884
|
-
InfoField,
|
|
7885
|
-
{
|
|
7886
|
-
label: "Starting Balance",
|
|
7887
|
-
value: data.startingBalance,
|
|
7888
|
-
layout: "horizontal"
|
|
7889
|
-
}
|
|
7890
|
-
),
|
|
7891
|
-
/* @__PURE__ */ jsx(
|
|
7892
|
-
InfoField,
|
|
7893
|
-
{
|
|
7894
|
-
label: "Ending Balance",
|
|
7895
|
-
value: data.endingBalance,
|
|
7896
|
-
layout: "horizontal"
|
|
7897
|
-
}
|
|
7898
|
-
)
|
|
7899
|
-
] }) })
|
|
7900
|
-
] });
|
|
7901
|
-
};
|
|
7902
7902
|
|
|
7903
7903
|
// src/lib/mock-data/statement-data.ts
|
|
7904
7904
|
var mockStatementHeader = {
|
|
@@ -9561,6 +9561,6 @@ function UIKit() {
|
|
|
9561
9561
|
] }) }) });
|
|
9562
9562
|
}
|
|
9563
9563
|
|
|
9564
|
-
export { ACHBankCard, ACHBasicInfoCard, ACHDetailsSection, ACHTransferSection, AccountCard, AddressForm, AlertDetail_default as AlertDetail, AlertDocuments, AlertNotes, AlertTimeline, Alerts_default as Alerts, AppSidebar, Badge, BankAddressCard, BankingDetailsCard, BasicInfoCard, BasicInfoSection, BeneficiaryAddress, BeneficiaryCard, BeneficiaryDomesticWire, Breadcrumb, BusinessDetail_default as BusinessDetail, BusinessProfileCard, BusinessStatusCard, BusinessTypeBadge, Businesses_default as Businesses, Button, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Cases_default as Cases, ContactInfoCard, Container, ContextSection, CounterpartyBasicInfo, DomesticWire_default as CounterpartyDomesticWire, Manage_default as CounterpartyManage, CounterpartyProfileCard, CounterpartyRecordsCard, CounterpartyTypeBadge, Create_default as CreateBusiness, Create_default2 as CreateCounterparty, Dashboard_default as Dashboard, DashboardDemo, DataGrid, DataTable, DetailPageLayout, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, EditableFormCard, EditableInfoField, EnhancedInput, EnhancedSelect, EnhancedTextarea, EntityCard, FormCard, FormField, FormInput, FormProvider, FormSection, FormSelect, InfoField, IntermediaryCard, IntermediaryFI, IntermediaryFIAddress, JsonViewer, Label, ListPage, MainLayout, MetricCard, NewTransaction, NotFound_default as NotFound, OriginatorCard, OriginatorFI, OriginatorFIAddress, PageLayout, PatternLibrary, PaymentInformationSection, Popover, PopoverContent, PopoverTrigger, ReceiverCard, ResponsiveGrid, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Stack, Statement, StatusBadge, Tabs, TabsContent, TabsList, TabsTrigger, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TransactionDetail_default as TransactionDetail, TransactionHistory_default as TransactionHistory, UIKit, UIKitShowcase, WireDetailsSection, WireTransferSection, badgeVariants, buttonVariants, cardVariants, inputVariants, reducer, textareaVariants, toast, useEditState, useFormWithEditState, useIsMobile, useSidebar, useToast };
|
|
9564
|
+
export { ACHBankCard, ACHBasicInfoCard, ACHDetailsSection, ACHTransferSection, AccountCard, AddressForm, AlertDetail_default as AlertDetail, AlertDetailView, AlertDocuments, AlertNotes, AlertTimeline, Alerts_default as Alerts, AppSidebar, Badge, BankAddressCard, BankingDetailsCard, BasicInfoCard, BasicInfoSection, BeneficiaryAddress, BeneficiaryCard, BeneficiaryDomesticWire, Breadcrumb, BusinessDetail_default as BusinessDetail, BusinessProfileCard, BusinessStatusCard, BusinessTypeBadge, Businesses_default as Businesses, Button, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Cases_default as Cases, ContactInfoCard, Container, ContextSection, CounterpartyBasicInfo, DomesticWire_default as CounterpartyDomesticWire, Manage_default as CounterpartyManage, CounterpartyProfileCard, CounterpartyRecordsCard, CounterpartyTypeBadge, Create_default as CreateBusiness, Create_default2 as CreateCounterparty, Dashboard_default as Dashboard, DashboardDemo, DataGrid, DataTable, DetailPageLayout, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, EditableFormCard, EditableInfoField, EnhancedInput, EnhancedSelect, EnhancedTextarea, EntityCard, FormCard, FormField, FormInput, FormProvider, FormSection, FormSelect, InfoField, IntermediaryCard, IntermediaryFI, IntermediaryFIAddress, JsonViewer, Label, ListPage, MainLayout, MetricCard, NewTransaction, NotFound_default as NotFound, OriginatorCard, OriginatorFI, OriginatorFIAddress, PageLayout, PatternLibrary, PaymentInformationSection, Popover, PopoverContent, PopoverTrigger, ReceiverCard, ResponsiveGrid, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Stack, Statement, StatementHeader, StatusBadge, Tabs, TabsContent, TabsList, TabsTrigger, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TransactionDetail_default as TransactionDetail, TransactionHistory_default as TransactionHistory, UIKit, UIKitShowcase, WireDetailsSection, WireTransferSection, badgeVariants, buttonVariants, cardVariants, inputVariants, reducer, textareaVariants, toast, useAlertDetail, useEditState, useFormWithEditState, useIsMobile, useSidebar, useToast };
|
|
9565
9565
|
//# sourceMappingURL=index.js.map
|
|
9566
9566
|
//# sourceMappingURL=index.js.map
|