@elqnt/react 1.0.10 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/index.d.mts +3 -26
- package/dist/components/index.d.ts +3 -26
- package/dist/components/index.js +928 -1397
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +972 -1440
- package/dist/components/index.mjs.map +1 -1
- package/dist/index.d.mts +2 -8
- package/dist/index.d.ts +2 -8
- package/dist/index.js +928 -1484
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +967 -1521
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -7
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
+
// components/form-controls/button.tsx
|
|
4
|
+
import * as React2 from "react";
|
|
5
|
+
|
|
3
6
|
// components/ui/button.tsx
|
|
4
7
|
import * as React from "react";
|
|
5
8
|
import { Slot } from "@radix-ui/react-slot";
|
|
@@ -54,524 +57,12 @@ var Button = React.forwardRef(
|
|
|
54
57
|
);
|
|
55
58
|
Button.displayName = "Button";
|
|
56
59
|
|
|
57
|
-
// components/ui/dialog.tsx
|
|
58
|
-
import * as React2 from "react";
|
|
59
|
-
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
60
|
-
import { Cross2Icon } from "@radix-ui/react-icons";
|
|
61
|
-
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
62
|
-
var Dialog = DialogPrimitive.Root;
|
|
63
|
-
var DialogTrigger = DialogPrimitive.Trigger;
|
|
64
|
-
var DialogPortal = DialogPrimitive.Portal;
|
|
65
|
-
var DialogOverlay = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx2(
|
|
66
|
-
DialogPrimitive.Overlay,
|
|
67
|
-
{
|
|
68
|
-
ref,
|
|
69
|
-
className: cn(
|
|
70
|
-
"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
71
|
-
className
|
|
72
|
-
),
|
|
73
|
-
...props
|
|
74
|
-
}
|
|
75
|
-
));
|
|
76
|
-
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
77
|
-
var DialogContent = React2.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
78
|
-
/* @__PURE__ */ jsx2(DialogOverlay, {}),
|
|
79
|
-
/* @__PURE__ */ jsxs(
|
|
80
|
-
DialogPrimitive.Content,
|
|
81
|
-
{
|
|
82
|
-
ref,
|
|
83
|
-
className: cn(
|
|
84
|
-
"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
|
|
85
|
-
className
|
|
86
|
-
),
|
|
87
|
-
...props,
|
|
88
|
-
children: [
|
|
89
|
-
children,
|
|
90
|
-
/* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
|
|
91
|
-
/* @__PURE__ */ jsx2(Cross2Icon, { className: "h-4 w-4" }),
|
|
92
|
-
/* @__PURE__ */ jsx2("span", { className: "sr-only", children: "Close" })
|
|
93
|
-
] })
|
|
94
|
-
]
|
|
95
|
-
}
|
|
96
|
-
)
|
|
97
|
-
] }));
|
|
98
|
-
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
99
|
-
var DialogHeader = ({
|
|
100
|
-
className,
|
|
101
|
-
...props
|
|
102
|
-
}) => /* @__PURE__ */ jsx2(
|
|
103
|
-
"div",
|
|
104
|
-
{
|
|
105
|
-
className: cn(
|
|
106
|
-
"flex flex-col space-y-1.5 text-center sm:text-left",
|
|
107
|
-
className
|
|
108
|
-
),
|
|
109
|
-
...props
|
|
110
|
-
}
|
|
111
|
-
);
|
|
112
|
-
DialogHeader.displayName = "DialogHeader";
|
|
113
|
-
var DialogFooter = ({
|
|
114
|
-
className,
|
|
115
|
-
...props
|
|
116
|
-
}) => /* @__PURE__ */ jsx2(
|
|
117
|
-
"div",
|
|
118
|
-
{
|
|
119
|
-
className: cn(
|
|
120
|
-
"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
|
|
121
|
-
className
|
|
122
|
-
),
|
|
123
|
-
...props
|
|
124
|
-
}
|
|
125
|
-
);
|
|
126
|
-
DialogFooter.displayName = "DialogFooter";
|
|
127
|
-
var DialogTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx2(
|
|
128
|
-
DialogPrimitive.Title,
|
|
129
|
-
{
|
|
130
|
-
ref,
|
|
131
|
-
className: cn(
|
|
132
|
-
"text-lg font-semibold leading-none tracking-tight",
|
|
133
|
-
className
|
|
134
|
-
),
|
|
135
|
-
...props
|
|
136
|
-
}
|
|
137
|
-
));
|
|
138
|
-
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
139
|
-
var DialogDescription = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx2(
|
|
140
|
-
DialogPrimitive.Description,
|
|
141
|
-
{
|
|
142
|
-
ref,
|
|
143
|
-
className: cn("text-sm text-muted-foreground", className),
|
|
144
|
-
...props
|
|
145
|
-
}
|
|
146
|
-
));
|
|
147
|
-
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
148
|
-
|
|
149
|
-
// components/ui/input.tsx
|
|
150
|
-
import * as React3 from "react";
|
|
151
|
-
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
152
|
-
var Input = React3.forwardRef(
|
|
153
|
-
({ className, type, ...props }, ref) => {
|
|
154
|
-
return /* @__PURE__ */ jsx3(
|
|
155
|
-
"input",
|
|
156
|
-
{
|
|
157
|
-
type,
|
|
158
|
-
className: cn(
|
|
159
|
-
"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
|
|
160
|
-
className
|
|
161
|
-
),
|
|
162
|
-
ref,
|
|
163
|
-
...props
|
|
164
|
-
}
|
|
165
|
-
);
|
|
166
|
-
}
|
|
167
|
-
);
|
|
168
|
-
Input.displayName = "Input";
|
|
169
|
-
|
|
170
|
-
// components/ui/select.tsx
|
|
171
|
-
import * as React4 from "react";
|
|
172
|
-
import {
|
|
173
|
-
CaretSortIcon,
|
|
174
|
-
CheckIcon,
|
|
175
|
-
ChevronDownIcon,
|
|
176
|
-
ChevronUpIcon
|
|
177
|
-
} from "@radix-ui/react-icons";
|
|
178
|
-
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
179
|
-
import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
180
|
-
var Select = SelectPrimitive.Root;
|
|
181
|
-
var SelectValue = SelectPrimitive.Value;
|
|
182
|
-
var SelectTrigger = React4.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs2(
|
|
183
|
-
SelectPrimitive.Trigger,
|
|
184
|
-
{
|
|
185
|
-
ref,
|
|
186
|
-
className: cn(
|
|
187
|
-
"flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
|
|
188
|
-
className
|
|
189
|
-
),
|
|
190
|
-
...props,
|
|
191
|
-
children: [
|
|
192
|
-
children,
|
|
193
|
-
/* @__PURE__ */ jsx4(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx4(CaretSortIcon, { className: "h-4 w-4 opacity-50" }) })
|
|
194
|
-
]
|
|
195
|
-
}
|
|
196
|
-
));
|
|
197
|
-
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
198
|
-
var SelectScrollUpButton = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
|
|
199
|
-
SelectPrimitive.ScrollUpButton,
|
|
200
|
-
{
|
|
201
|
-
ref,
|
|
202
|
-
className: cn(
|
|
203
|
-
"flex cursor-default items-center justify-center py-1",
|
|
204
|
-
className
|
|
205
|
-
),
|
|
206
|
-
...props,
|
|
207
|
-
children: /* @__PURE__ */ jsx4(ChevronUpIcon, {})
|
|
208
|
-
}
|
|
209
|
-
));
|
|
210
|
-
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
211
|
-
var SelectScrollDownButton = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
|
|
212
|
-
SelectPrimitive.ScrollDownButton,
|
|
213
|
-
{
|
|
214
|
-
ref,
|
|
215
|
-
className: cn(
|
|
216
|
-
"flex cursor-default items-center justify-center py-1",
|
|
217
|
-
className
|
|
218
|
-
),
|
|
219
|
-
...props,
|
|
220
|
-
children: /* @__PURE__ */ jsx4(ChevronDownIcon, {})
|
|
221
|
-
}
|
|
222
|
-
));
|
|
223
|
-
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
224
|
-
var SelectContent = React4.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx4(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs2(
|
|
225
|
-
SelectPrimitive.Content,
|
|
226
|
-
{
|
|
227
|
-
ref,
|
|
228
|
-
className: cn(
|
|
229
|
-
"relative z-50 max-h-96 min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
230
|
-
position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
231
|
-
className
|
|
232
|
-
),
|
|
233
|
-
position,
|
|
234
|
-
...props,
|
|
235
|
-
children: [
|
|
236
|
-
/* @__PURE__ */ jsx4(SelectScrollUpButton, {}),
|
|
237
|
-
/* @__PURE__ */ jsx4(
|
|
238
|
-
SelectPrimitive.Viewport,
|
|
239
|
-
{
|
|
240
|
-
className: cn(
|
|
241
|
-
"p-1",
|
|
242
|
-
position === "popper" && "h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width)"
|
|
243
|
-
),
|
|
244
|
-
children
|
|
245
|
-
}
|
|
246
|
-
),
|
|
247
|
-
/* @__PURE__ */ jsx4(SelectScrollDownButton, {})
|
|
248
|
-
]
|
|
249
|
-
}
|
|
250
|
-
) }));
|
|
251
|
-
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
252
|
-
var SelectLabel = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
|
|
253
|
-
SelectPrimitive.Label,
|
|
254
|
-
{
|
|
255
|
-
ref,
|
|
256
|
-
className: cn("px-2 py-1.5 text-sm font-semibold", className),
|
|
257
|
-
...props
|
|
258
|
-
}
|
|
259
|
-
));
|
|
260
|
-
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
261
|
-
var SelectItem = React4.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs2(
|
|
262
|
-
SelectPrimitive.Item,
|
|
263
|
-
{
|
|
264
|
-
ref,
|
|
265
|
-
className: cn(
|
|
266
|
-
"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
|
|
267
|
-
className
|
|
268
|
-
),
|
|
269
|
-
...props,
|
|
270
|
-
children: [
|
|
271
|
-
/* @__PURE__ */ jsx4("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx4(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx4(CheckIcon, { className: "h-4 w-4" }) }) }),
|
|
272
|
-
/* @__PURE__ */ jsx4(SelectPrimitive.ItemText, { children })
|
|
273
|
-
]
|
|
274
|
-
}
|
|
275
|
-
));
|
|
276
|
-
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
277
|
-
var SelectSeparator = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
|
|
278
|
-
SelectPrimitive.Separator,
|
|
279
|
-
{
|
|
280
|
-
ref,
|
|
281
|
-
className: cn("-mx-1 my-1 h-px bg-muted", className),
|
|
282
|
-
...props
|
|
283
|
-
}
|
|
284
|
-
));
|
|
285
|
-
SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
286
|
-
|
|
287
|
-
// components/entities/filter-dialog.tsx
|
|
288
|
-
import {
|
|
289
|
-
useEntityDefinitionContext,
|
|
290
|
-
useEntityRecordContext
|
|
291
|
-
} from "@elqnt/entity";
|
|
292
|
-
|
|
293
|
-
// components/ui/badge.tsx
|
|
294
|
-
import { cva as cva2 } from "class-variance-authority";
|
|
295
|
-
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
296
|
-
var badgeVariants = cva2(
|
|
297
|
-
"inline-flex items-center rounded-md 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",
|
|
298
|
-
{
|
|
299
|
-
variants: {
|
|
300
|
-
variant: {
|
|
301
|
-
default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
|
|
302
|
-
secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
303
|
-
destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
|
|
304
|
-
outline: "text-foreground"
|
|
305
|
-
}
|
|
306
|
-
},
|
|
307
|
-
defaultVariants: {
|
|
308
|
-
variant: "default"
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
);
|
|
312
|
-
function Badge({ className, variant, ...props }) {
|
|
313
|
-
return /* @__PURE__ */ jsx5("div", { className: cn(badgeVariants({ variant }), className), ...props });
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
// components/entities/filter-dialog.tsx
|
|
317
|
-
import { Filter, Paintbrush, Plus, X, XCircle } from "lucide-react";
|
|
318
|
-
import { useEffect, useState } from "react";
|
|
319
|
-
import { Fragment, jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
320
|
-
var OPERATORS = {
|
|
321
|
-
string: ["eq", "ne", "contains", "startsWith", "endsWith"],
|
|
322
|
-
text: ["contains", "startsWith", "endsWith"],
|
|
323
|
-
int: ["eq", "ne", "gt", "gte", "lt", "lte", "between"],
|
|
324
|
-
float: ["eq", "ne", "gt", "gte", "lt", "lte", "between"],
|
|
325
|
-
date: ["eq", "ne", "gt", "gte", "lt", "lte", "between"],
|
|
326
|
-
datetime: ["eq", "ne", "gt", "gte", "lt", "lte", "between"],
|
|
327
|
-
dropdown: ["eq", "ne", "in", "nin"],
|
|
328
|
-
multiselect: ["in", "nin", "contains"],
|
|
329
|
-
boolean: ["eq", "ne"]
|
|
330
|
-
};
|
|
331
|
-
var OPERATOR_LABELS = {
|
|
332
|
-
eq: "Equals",
|
|
333
|
-
ne: "Not equals",
|
|
334
|
-
gt: "Greater than",
|
|
335
|
-
gte: "Greater than or equal",
|
|
336
|
-
lt: "Less than",
|
|
337
|
-
lte: "Less than or equal",
|
|
338
|
-
in: "In",
|
|
339
|
-
nin: "Not in",
|
|
340
|
-
contains: "Contains",
|
|
341
|
-
startsWith: "Starts with",
|
|
342
|
-
endsWith: "Ends with",
|
|
343
|
-
between: "Between"
|
|
344
|
-
};
|
|
345
|
-
var DEFAULT_CONDITION = {
|
|
346
|
-
field: "",
|
|
347
|
-
operator: "",
|
|
348
|
-
value: ""
|
|
349
|
-
};
|
|
350
|
-
function FilterDialog({ open, onOpenChange }) {
|
|
351
|
-
const { selectedDefinition } = useEntityDefinitionContext();
|
|
352
|
-
const { updateParams, params } = useEntityRecordContext();
|
|
353
|
-
const [conditions, setConditions] = useState([
|
|
354
|
-
DEFAULT_CONDITION
|
|
355
|
-
]);
|
|
356
|
-
const [hasActiveFilters, setHasActiveFilters] = useState(false);
|
|
357
|
-
useEffect(() => {
|
|
358
|
-
const hasFilters = params.filters && Object.keys(params.filters).length > 0;
|
|
359
|
-
setHasActiveFilters(hasFilters);
|
|
360
|
-
}, [params.filters]);
|
|
361
|
-
const fields = [];
|
|
362
|
-
const getOperatorsForField = (fieldType) => {
|
|
363
|
-
return OPERATORS[fieldType] || OPERATORS.string;
|
|
364
|
-
};
|
|
365
|
-
const handleAddCondition = () => {
|
|
366
|
-
setConditions([...conditions, { ...DEFAULT_CONDITION }]);
|
|
367
|
-
};
|
|
368
|
-
const handleRemoveCondition = (index) => {
|
|
369
|
-
setConditions(conditions.filter((_, i) => i !== index));
|
|
370
|
-
};
|
|
371
|
-
const handleFieldChange = (index, fieldName) => {
|
|
372
|
-
const newConditions = [...conditions];
|
|
373
|
-
newConditions[index] = {
|
|
374
|
-
...newConditions[index],
|
|
375
|
-
field: fieldName,
|
|
376
|
-
operator: "",
|
|
377
|
-
value: ""
|
|
378
|
-
};
|
|
379
|
-
setConditions(newConditions);
|
|
380
|
-
};
|
|
381
|
-
const handleOperatorChange = (index, operator) => {
|
|
382
|
-
const newConditions = [...conditions];
|
|
383
|
-
newConditions[index] = {
|
|
384
|
-
...newConditions[index],
|
|
385
|
-
operator
|
|
386
|
-
};
|
|
387
|
-
setConditions(newConditions);
|
|
388
|
-
};
|
|
389
|
-
const handleValueChange = (index, value) => {
|
|
390
|
-
const newConditions = [...conditions];
|
|
391
|
-
newConditions[index] = {
|
|
392
|
-
...newConditions[index],
|
|
393
|
-
value
|
|
394
|
-
};
|
|
395
|
-
setConditions(newConditions);
|
|
396
|
-
};
|
|
397
|
-
const handleClearFilters = () => {
|
|
398
|
-
setConditions([{ ...DEFAULT_CONDITION }]);
|
|
399
|
-
updateParams({ filters: {} });
|
|
400
|
-
setHasActiveFilters(false);
|
|
401
|
-
};
|
|
402
|
-
const handleApplyFilters = () => {
|
|
403
|
-
const validConditions = conditions.filter(
|
|
404
|
-
(c) => c.field && c.operator && c.value
|
|
405
|
-
);
|
|
406
|
-
if (validConditions.length === 0) {
|
|
407
|
-
updateParams({ filters: {} });
|
|
408
|
-
setHasActiveFilters(false);
|
|
409
|
-
onOpenChange(false);
|
|
410
|
-
return;
|
|
411
|
-
}
|
|
412
|
-
const filters = {};
|
|
413
|
-
validConditions.forEach(({ field, operator, value }) => {
|
|
414
|
-
const fieldPath = `fields.${field}.valueString`;
|
|
415
|
-
switch (operator) {
|
|
416
|
-
case "contains":
|
|
417
|
-
filters[fieldPath] = { $regex: value, $options: "i" };
|
|
418
|
-
break;
|
|
419
|
-
case "startsWith":
|
|
420
|
-
filters[fieldPath] = { $regex: `^${value}`, $options: "i" };
|
|
421
|
-
break;
|
|
422
|
-
case "endsWith":
|
|
423
|
-
filters[fieldPath] = { $regex: `${value}$`, $options: "i" };
|
|
424
|
-
break;
|
|
425
|
-
default:
|
|
426
|
-
filters[fieldPath] = { [`$${operator}`]: value };
|
|
427
|
-
}
|
|
428
|
-
});
|
|
429
|
-
const query = {
|
|
430
|
-
filters: validConditions.length > 1 ? { $and: Object.entries(filters).map(([k, v]) => ({ [k]: v })) } : filters
|
|
431
|
-
};
|
|
432
|
-
updateParams(query);
|
|
433
|
-
setHasActiveFilters(true);
|
|
434
|
-
onOpenChange(false);
|
|
435
|
-
};
|
|
436
|
-
const getFieldByName = (fieldName) => {
|
|
437
|
-
return fields.find((f) => f.name === fieldName);
|
|
438
|
-
};
|
|
439
|
-
const activeFilterCount = conditions.filter(
|
|
440
|
-
(c) => c.field && c.operator && c.value
|
|
441
|
-
).length;
|
|
442
|
-
return /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
443
|
-
/* @__PURE__ */ jsxs3("div", { className: "flex items-center", children: [
|
|
444
|
-
/* @__PURE__ */ jsxs3(
|
|
445
|
-
Button,
|
|
446
|
-
{
|
|
447
|
-
onClick: () => onOpenChange(true),
|
|
448
|
-
variant: hasActiveFilters ? "secondary" : "outline",
|
|
449
|
-
className: cn("relative group", hasActiveFilters && "rounded-r-none"),
|
|
450
|
-
children: [
|
|
451
|
-
/* @__PURE__ */ jsx6(Filter, { className: "w-4 h-4 mr-2" }),
|
|
452
|
-
"Filter",
|
|
453
|
-
activeFilterCount > 0 && /* @__PURE__ */ jsx6(
|
|
454
|
-
Badge,
|
|
455
|
-
{
|
|
456
|
-
variant: "secondary",
|
|
457
|
-
className: "ml-2 bg-primary text-primary-foreground",
|
|
458
|
-
children: activeFilterCount
|
|
459
|
-
}
|
|
460
|
-
)
|
|
461
|
-
]
|
|
462
|
-
}
|
|
463
|
-
),
|
|
464
|
-
hasActiveFilters && /* @__PURE__ */ jsx6(
|
|
465
|
-
Button,
|
|
466
|
-
{
|
|
467
|
-
variant: "secondary",
|
|
468
|
-
size: "icon",
|
|
469
|
-
onClick: handleClearFilters,
|
|
470
|
-
className: "text-muted-foreground -ml-2 rounded-l-none",
|
|
471
|
-
title: "Clear filters",
|
|
472
|
-
children: /* @__PURE__ */ jsx6(Paintbrush, { className: "h-4 w-4" })
|
|
473
|
-
}
|
|
474
|
-
)
|
|
475
|
-
] }),
|
|
476
|
-
/* @__PURE__ */ jsx6(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs3(DialogContent, { className: "max-w-3xl", children: [
|
|
477
|
-
/* @__PURE__ */ jsx6(DialogHeader, { children: /* @__PURE__ */ jsxs3("div", { className: "flex items-center justify-between", children: [
|
|
478
|
-
/* @__PURE__ */ jsxs3(DialogTitle, { children: [
|
|
479
|
-
"Filter ",
|
|
480
|
-
selectedDefinition?.displayName
|
|
481
|
-
] }),
|
|
482
|
-
hasActiveFilters && /* @__PURE__ */ jsxs3(
|
|
483
|
-
Button,
|
|
484
|
-
{
|
|
485
|
-
variant: "ghost",
|
|
486
|
-
size: "sm",
|
|
487
|
-
onClick: handleClearFilters,
|
|
488
|
-
className: "text-muted-foreground hover:text-primary",
|
|
489
|
-
children: [
|
|
490
|
-
/* @__PURE__ */ jsx6(XCircle, { className: "w-4 h-4 mr-2" }),
|
|
491
|
-
"Clear Filters"
|
|
492
|
-
]
|
|
493
|
-
}
|
|
494
|
-
)
|
|
495
|
-
] }) }),
|
|
496
|
-
/* @__PURE__ */ jsxs3("div", { className: "space-y-4", children: [
|
|
497
|
-
conditions.map((condition, index) => {
|
|
498
|
-
const selectedField = getFieldByName(condition.field);
|
|
499
|
-
const operators = selectedField ? getOperatorsForField(selectedField.type) : [];
|
|
500
|
-
return /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2", children: [
|
|
501
|
-
/* @__PURE__ */ jsxs3(
|
|
502
|
-
Select,
|
|
503
|
-
{
|
|
504
|
-
value: condition.field,
|
|
505
|
-
onValueChange: (value) => handleFieldChange(index, value),
|
|
506
|
-
children: [
|
|
507
|
-
/* @__PURE__ */ jsx6(SelectTrigger, { className: "w-[200px]", children: /* @__PURE__ */ jsx6(SelectValue, { placeholder: "Select field" }) }),
|
|
508
|
-
/* @__PURE__ */ jsx6(SelectContent, { children: fields.map((field) => /* @__PURE__ */ jsx6(SelectItem, { value: field.name, children: field.displayName }, field.name)) })
|
|
509
|
-
]
|
|
510
|
-
}
|
|
511
|
-
),
|
|
512
|
-
/* @__PURE__ */ jsxs3(
|
|
513
|
-
Select,
|
|
514
|
-
{
|
|
515
|
-
value: condition.operator,
|
|
516
|
-
onValueChange: (value) => handleOperatorChange(index, value),
|
|
517
|
-
disabled: !condition.field,
|
|
518
|
-
children: [
|
|
519
|
-
/* @__PURE__ */ jsx6(SelectTrigger, { className: "w-[200px]", children: /* @__PURE__ */ jsx6(SelectValue, { placeholder: "Select operator" }) }),
|
|
520
|
-
/* @__PURE__ */ jsx6(SelectContent, { children: operators.map((op) => /* @__PURE__ */ jsx6(SelectItem, { value: op, children: OPERATOR_LABELS[op] }, op)) })
|
|
521
|
-
]
|
|
522
|
-
}
|
|
523
|
-
),
|
|
524
|
-
/* @__PURE__ */ jsx6(
|
|
525
|
-
Input,
|
|
526
|
-
{
|
|
527
|
-
placeholder: "Value",
|
|
528
|
-
value: condition.value,
|
|
529
|
-
onChange: (e) => handleValueChange(index, e.target.value),
|
|
530
|
-
disabled: !condition.operator,
|
|
531
|
-
className: "flex-1"
|
|
532
|
-
}
|
|
533
|
-
),
|
|
534
|
-
conditions.length > 1 && /* @__PURE__ */ jsx6(
|
|
535
|
-
Button,
|
|
536
|
-
{
|
|
537
|
-
variant: "ghost",
|
|
538
|
-
size: "icon",
|
|
539
|
-
onClick: () => handleRemoveCondition(index),
|
|
540
|
-
className: "text-muted-foreground hover:text-destructive",
|
|
541
|
-
children: /* @__PURE__ */ jsx6(X, { className: "h-4 w-4" })
|
|
542
|
-
}
|
|
543
|
-
)
|
|
544
|
-
] }, index);
|
|
545
|
-
}),
|
|
546
|
-
/* @__PURE__ */ jsxs3(
|
|
547
|
-
Button,
|
|
548
|
-
{
|
|
549
|
-
variant: "outline",
|
|
550
|
-
size: "sm",
|
|
551
|
-
className: "w-full",
|
|
552
|
-
onClick: handleAddCondition,
|
|
553
|
-
children: [
|
|
554
|
-
/* @__PURE__ */ jsx6(Plus, { className: "h-4 w-4 mr-2" }),
|
|
555
|
-
"Add Condition"
|
|
556
|
-
]
|
|
557
|
-
}
|
|
558
|
-
)
|
|
559
|
-
] }),
|
|
560
|
-
/* @__PURE__ */ jsxs3(DialogFooter, { children: [
|
|
561
|
-
/* @__PURE__ */ jsx6(Button, { variant: "outline", onClick: () => onOpenChange(false), children: "Cancel" }),
|
|
562
|
-
/* @__PURE__ */ jsx6(Button, { onClick: handleApplyFilters, children: "Apply Filters" })
|
|
563
|
-
] })
|
|
564
|
-
] }) })
|
|
565
|
-
] });
|
|
566
|
-
}
|
|
567
|
-
|
|
568
60
|
// components/form-controls/button.tsx
|
|
569
|
-
import
|
|
570
|
-
|
|
571
|
-
var Button2 = React5.forwardRef(
|
|
61
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
62
|
+
var Button2 = React2.forwardRef(
|
|
572
63
|
({ children, variant = "default", className = "", type, ...props }, ref) => {
|
|
573
64
|
const buttonClass = `${variant === "secondary" ? "button-secondary" : ""} ${className}`;
|
|
574
|
-
return /* @__PURE__ */
|
|
65
|
+
return /* @__PURE__ */ jsx2(
|
|
575
66
|
Button,
|
|
576
67
|
{
|
|
577
68
|
className: buttonClass,
|
|
@@ -587,22 +78,22 @@ var Button2 = React5.forwardRef(
|
|
|
587
78
|
Button2.displayName = "Button";
|
|
588
79
|
|
|
589
80
|
// components/form-controls/action-bar/back-button.tsx
|
|
590
|
-
import { jsx as
|
|
81
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
591
82
|
function BackButton() {
|
|
592
|
-
return /* @__PURE__ */
|
|
83
|
+
return /* @__PURE__ */ jsx3(Button2, { onClick: () => {
|
|
593
84
|
}, children: "Back" });
|
|
594
85
|
}
|
|
595
86
|
|
|
596
87
|
// components/form-controls/icon.tsx
|
|
597
88
|
import { icons } from "lucide-react";
|
|
598
89
|
import { memo } from "react";
|
|
599
|
-
import { jsx as
|
|
600
|
-
var
|
|
90
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
91
|
+
var Icon = memo(({ name, className, strokeWidth, size }) => {
|
|
601
92
|
const IconComponent = icons[name];
|
|
602
93
|
if (!IconComponent) {
|
|
603
94
|
return null;
|
|
604
95
|
}
|
|
605
|
-
return /* @__PURE__ */
|
|
96
|
+
return /* @__PURE__ */ jsx4(
|
|
606
97
|
IconComponent,
|
|
607
98
|
{
|
|
608
99
|
className: cn(className),
|
|
@@ -611,37 +102,37 @@ var Icon2 = memo(({ name, className, strokeWidth, size }) => {
|
|
|
611
102
|
}
|
|
612
103
|
);
|
|
613
104
|
});
|
|
614
|
-
|
|
105
|
+
Icon.displayName = "Icon";
|
|
615
106
|
|
|
616
107
|
// components/form-controls/action-bar/action-bar-button.tsx
|
|
617
|
-
import { jsx as
|
|
108
|
+
import { jsx as jsx5, jsxs } from "react/jsx-runtime";
|
|
618
109
|
function ActionBarButton({
|
|
619
110
|
label,
|
|
620
111
|
onClick,
|
|
621
112
|
icon
|
|
622
113
|
}) {
|
|
623
|
-
return /* @__PURE__ */
|
|
624
|
-
/* @__PURE__ */
|
|
114
|
+
return /* @__PURE__ */ jsxs(Button2, { onClick, className: "flex items-center gap-2", children: [
|
|
115
|
+
/* @__PURE__ */ jsx5(Icon, { name: icon, size: 20, strokeWidth: 1 }),
|
|
625
116
|
label
|
|
626
117
|
] });
|
|
627
118
|
}
|
|
628
119
|
|
|
629
120
|
// components/form-controls/action-bar/action-bar.tsx
|
|
630
|
-
import { jsx as
|
|
121
|
+
import { jsx as jsx6, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
631
122
|
var ActionBar = ({ actions }) => {
|
|
632
123
|
function backHandler() {
|
|
633
124
|
window.history.back();
|
|
634
125
|
}
|
|
635
|
-
return /* @__PURE__ */
|
|
636
|
-
/* @__PURE__ */
|
|
637
|
-
actions.map((item) => /* @__PURE__ */
|
|
126
|
+
return /* @__PURE__ */ jsxs2("div", { className: "flex items-center justify-center gap-4 bg-primary text-primary-foreground shadow rounded-md text-sm font-medium w-fit divide-solid divide-x", children: [
|
|
127
|
+
/* @__PURE__ */ jsx6("div", { className: "cursor-pointer pl-4 py-2", onClick: backHandler, children: /* @__PURE__ */ jsx6(Icon, { name: "ArrowBigLeft" }) }),
|
|
128
|
+
actions.map((item) => /* @__PURE__ */ jsxs2(
|
|
638
129
|
"div",
|
|
639
130
|
{
|
|
640
131
|
className: "flex items-center justify-center gap-2 cursor-pointer py-2 px-4",
|
|
641
132
|
onClick: item.onClick,
|
|
642
133
|
children: [
|
|
643
|
-
/* @__PURE__ */
|
|
644
|
-
/* @__PURE__ */
|
|
134
|
+
/* @__PURE__ */ jsx6(Icon, { name: item.icon }),
|
|
135
|
+
/* @__PURE__ */ jsx6("p", { children: item.label })
|
|
645
136
|
]
|
|
646
137
|
},
|
|
647
138
|
item.label
|
|
@@ -650,10 +141,10 @@ var ActionBar = ({ actions }) => {
|
|
|
650
141
|
};
|
|
651
142
|
|
|
652
143
|
// components/ui/alert.tsx
|
|
653
|
-
import * as
|
|
654
|
-
import { cva as
|
|
655
|
-
import { jsx as
|
|
656
|
-
var alertVariants =
|
|
144
|
+
import * as React3 from "react";
|
|
145
|
+
import { cva as cva2 } from "class-variance-authority";
|
|
146
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
147
|
+
var alertVariants = cva2(
|
|
657
148
|
"relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",
|
|
658
149
|
{
|
|
659
150
|
variants: {
|
|
@@ -667,7 +158,7 @@ var alertVariants = cva3(
|
|
|
667
158
|
}
|
|
668
159
|
}
|
|
669
160
|
);
|
|
670
|
-
var Alert =
|
|
161
|
+
var Alert = React3.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx7(
|
|
671
162
|
"div",
|
|
672
163
|
{
|
|
673
164
|
ref,
|
|
@@ -677,7 +168,7 @@ var Alert = React6.forwardRef(({ className, variant, ...props }, ref) => /* @__P
|
|
|
677
168
|
}
|
|
678
169
|
));
|
|
679
170
|
Alert.displayName = "Alert";
|
|
680
|
-
var AlertTitle =
|
|
171
|
+
var AlertTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx7(
|
|
681
172
|
"h5",
|
|
682
173
|
{
|
|
683
174
|
ref,
|
|
@@ -686,7 +177,7 @@ var AlertTitle = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
686
177
|
}
|
|
687
178
|
));
|
|
688
179
|
AlertTitle.displayName = "AlertTitle";
|
|
689
|
-
var AlertDescription =
|
|
180
|
+
var AlertDescription = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx7(
|
|
690
181
|
"div",
|
|
691
182
|
{
|
|
692
183
|
ref,
|
|
@@ -698,20 +189,20 @@ AlertDescription.displayName = "AlertDescription";
|
|
|
698
189
|
|
|
699
190
|
// components/form-controls/alert.tsx
|
|
700
191
|
import { RocketIcon } from "@radix-ui/react-icons";
|
|
701
|
-
import { jsx as
|
|
192
|
+
import { jsx as jsx8, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
702
193
|
var Alert2 = ({ title, description }) => {
|
|
703
|
-
return /* @__PURE__ */
|
|
704
|
-
/* @__PURE__ */
|
|
705
|
-
/* @__PURE__ */
|
|
706
|
-
/* @__PURE__ */
|
|
194
|
+
return /* @__PURE__ */ jsxs3(Alert, { children: [
|
|
195
|
+
/* @__PURE__ */ jsx8(RocketIcon, { className: "h-4 w-4" }),
|
|
196
|
+
/* @__PURE__ */ jsx8(AlertTitle, { children: title }),
|
|
197
|
+
/* @__PURE__ */ jsx8(AlertDescription, { children: description })
|
|
707
198
|
] });
|
|
708
199
|
};
|
|
709
200
|
|
|
710
201
|
// components/ui/avatar.tsx
|
|
711
|
-
import * as
|
|
202
|
+
import * as React4 from "react";
|
|
712
203
|
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
713
|
-
import { jsx as
|
|
714
|
-
var Avatar =
|
|
204
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
205
|
+
var Avatar = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
|
|
715
206
|
AvatarPrimitive.Root,
|
|
716
207
|
{
|
|
717
208
|
ref,
|
|
@@ -723,7 +214,7 @@ var Avatar = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
|
723
214
|
}
|
|
724
215
|
));
|
|
725
216
|
Avatar.displayName = AvatarPrimitive.Root.displayName;
|
|
726
|
-
var AvatarImage =
|
|
217
|
+
var AvatarImage = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
|
|
727
218
|
AvatarPrimitive.Image,
|
|
728
219
|
{
|
|
729
220
|
ref,
|
|
@@ -732,7 +223,7 @@ var AvatarImage = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
732
223
|
}
|
|
733
224
|
));
|
|
734
225
|
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
735
|
-
var AvatarFallback =
|
|
226
|
+
var AvatarFallback = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
|
|
736
227
|
AvatarPrimitive.Fallback,
|
|
737
228
|
{
|
|
738
229
|
ref,
|
|
@@ -746,25 +237,25 @@ var AvatarFallback = React7.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
746
237
|
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
747
238
|
|
|
748
239
|
// components/form-controls/avatar.tsx
|
|
749
|
-
import { jsx as
|
|
240
|
+
import { jsx as jsx10, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
750
241
|
var Avatar2 = ({ image, fallback }) => {
|
|
751
|
-
return /* @__PURE__ */
|
|
752
|
-
/* @__PURE__ */
|
|
753
|
-
/* @__PURE__ */
|
|
242
|
+
return /* @__PURE__ */ jsxs4(Avatar, { className: "w-fit", children: [
|
|
243
|
+
/* @__PURE__ */ jsx10(AvatarImage, { src: image }),
|
|
244
|
+
/* @__PURE__ */ jsx10(AvatarFallback, { children: fallback })
|
|
754
245
|
] });
|
|
755
246
|
};
|
|
756
247
|
|
|
757
248
|
// components/form-controls/breadcrumb.tsx
|
|
758
|
-
import { Fragment
|
|
249
|
+
import { Fragment } from "react";
|
|
759
250
|
|
|
760
251
|
// components/ui/breadcrumb.tsx
|
|
761
|
-
import * as
|
|
252
|
+
import * as React5 from "react";
|
|
762
253
|
import { ChevronRightIcon, DotsHorizontalIcon } from "@radix-ui/react-icons";
|
|
763
254
|
import { Slot as Slot2 } from "@radix-ui/react-slot";
|
|
764
|
-
import { jsx as
|
|
765
|
-
var Breadcrumb =
|
|
255
|
+
import { jsx as jsx11, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
256
|
+
var Breadcrumb = React5.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx11("nav", { ref, "aria-label": "breadcrumb", ...props }));
|
|
766
257
|
Breadcrumb.displayName = "Breadcrumb";
|
|
767
|
-
var BreadcrumbList =
|
|
258
|
+
var BreadcrumbList = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
|
|
768
259
|
"ol",
|
|
769
260
|
{
|
|
770
261
|
ref,
|
|
@@ -776,7 +267,7 @@ var BreadcrumbList = React8.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
776
267
|
}
|
|
777
268
|
));
|
|
778
269
|
BreadcrumbList.displayName = "BreadcrumbList";
|
|
779
|
-
var BreadcrumbItem =
|
|
270
|
+
var BreadcrumbItem = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
|
|
780
271
|
"li",
|
|
781
272
|
{
|
|
782
273
|
ref,
|
|
@@ -785,9 +276,9 @@ var BreadcrumbItem = React8.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
785
276
|
}
|
|
786
277
|
));
|
|
787
278
|
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
788
|
-
var BreadcrumbLink =
|
|
279
|
+
var BreadcrumbLink = React5.forwardRef(({ asChild, className, ...props }, ref) => {
|
|
789
280
|
const Comp = asChild ? Slot2 : "a";
|
|
790
|
-
return /* @__PURE__ */
|
|
281
|
+
return /* @__PURE__ */ jsx11(
|
|
791
282
|
Comp,
|
|
792
283
|
{
|
|
793
284
|
ref,
|
|
@@ -797,7 +288,7 @@ var BreadcrumbLink = React8.forwardRef(({ asChild, className, ...props }, ref) =
|
|
|
797
288
|
);
|
|
798
289
|
});
|
|
799
290
|
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
800
|
-
var BreadcrumbPage =
|
|
291
|
+
var BreadcrumbPage = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
|
|
801
292
|
"span",
|
|
802
293
|
{
|
|
803
294
|
ref,
|
|
@@ -813,21 +304,21 @@ var BreadcrumbSeparator = ({
|
|
|
813
304
|
children,
|
|
814
305
|
className,
|
|
815
306
|
...props
|
|
816
|
-
}) => /* @__PURE__ */
|
|
307
|
+
}) => /* @__PURE__ */ jsx11(
|
|
817
308
|
"li",
|
|
818
309
|
{
|
|
819
310
|
role: "presentation",
|
|
820
311
|
"aria-hidden": "true",
|
|
821
312
|
className: cn("[&>svg]:size-3.5", className),
|
|
822
313
|
...props,
|
|
823
|
-
children: children ?? /* @__PURE__ */
|
|
314
|
+
children: children ?? /* @__PURE__ */ jsx11(ChevronRightIcon, {})
|
|
824
315
|
}
|
|
825
316
|
);
|
|
826
317
|
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
|
827
318
|
var BreadcrumbEllipsis = ({
|
|
828
319
|
className,
|
|
829
320
|
...props
|
|
830
|
-
}) => /* @__PURE__ */
|
|
321
|
+
}) => /* @__PURE__ */ jsxs5(
|
|
831
322
|
"span",
|
|
832
323
|
{
|
|
833
324
|
role: "presentation",
|
|
@@ -835,26 +326,26 @@ var BreadcrumbEllipsis = ({
|
|
|
835
326
|
className: cn("flex h-9 w-9 items-center justify-center", className),
|
|
836
327
|
...props,
|
|
837
328
|
children: [
|
|
838
|
-
/* @__PURE__ */
|
|
839
|
-
/* @__PURE__ */
|
|
329
|
+
/* @__PURE__ */ jsx11(DotsHorizontalIcon, { className: "h-4 w-4" }),
|
|
330
|
+
/* @__PURE__ */ jsx11("span", { className: "sr-only", children: "More" })
|
|
840
331
|
]
|
|
841
332
|
}
|
|
842
333
|
);
|
|
843
334
|
BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
|
|
844
335
|
|
|
845
336
|
// components/form-controls/breadcrumb.tsx
|
|
846
|
-
import { jsx as
|
|
337
|
+
import { jsx as jsx12, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
847
338
|
var Breadcrumb2 = ({ breadcrumb }) => {
|
|
848
|
-
return /* @__PURE__ */
|
|
849
|
-
/* @__PURE__ */
|
|
850
|
-
index < breadcrumb.length - 1 && /* @__PURE__ */
|
|
339
|
+
return /* @__PURE__ */ jsx12(Breadcrumb, { className: "p-4", children: /* @__PURE__ */ jsx12(BreadcrumbList, { children: breadcrumb.map(({ href, label }, index) => /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
340
|
+
/* @__PURE__ */ jsx12(BreadcrumbItem, { children: index !== breadcrumb.length - 1 ? /* @__PURE__ */ jsx12(BreadcrumbLink, { className: "cursor-pointer", href, children: label.replace(/-/g, " ") }) : /* @__PURE__ */ jsx12(BreadcrumbPage, { children: label.replace(/-/g, " ") }) }),
|
|
341
|
+
index < breadcrumb.length - 1 && /* @__PURE__ */ jsx12(BreadcrumbSeparator, {})
|
|
851
342
|
] }, index)) }) });
|
|
852
343
|
};
|
|
853
344
|
|
|
854
345
|
// components/ui/card.tsx
|
|
855
|
-
import * as
|
|
856
|
-
import { jsx as
|
|
857
|
-
var Card =
|
|
346
|
+
import * as React6 from "react";
|
|
347
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
348
|
+
var Card = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
|
|
858
349
|
"div",
|
|
859
350
|
{
|
|
860
351
|
ref,
|
|
@@ -866,7 +357,7 @@ var Card = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ j
|
|
|
866
357
|
}
|
|
867
358
|
));
|
|
868
359
|
Card.displayName = "Card";
|
|
869
|
-
var CardHeader =
|
|
360
|
+
var CardHeader = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
|
|
870
361
|
"div",
|
|
871
362
|
{
|
|
872
363
|
ref,
|
|
@@ -875,7 +366,7 @@ var CardHeader = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
875
366
|
}
|
|
876
367
|
));
|
|
877
368
|
CardHeader.displayName = "CardHeader";
|
|
878
|
-
var CardTitle =
|
|
369
|
+
var CardTitle = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
|
|
879
370
|
"h3",
|
|
880
371
|
{
|
|
881
372
|
ref,
|
|
@@ -884,7 +375,7 @@ var CardTitle = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
884
375
|
}
|
|
885
376
|
));
|
|
886
377
|
CardTitle.displayName = "CardTitle";
|
|
887
|
-
var CardDescription =
|
|
378
|
+
var CardDescription = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
|
|
888
379
|
"p",
|
|
889
380
|
{
|
|
890
381
|
ref,
|
|
@@ -893,9 +384,9 @@ var CardDescription = React9.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
893
384
|
}
|
|
894
385
|
));
|
|
895
386
|
CardDescription.displayName = "CardDescription";
|
|
896
|
-
var CardContent =
|
|
387
|
+
var CardContent = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13("div", { ref, className: cn("p-6 pt-0", className), ...props }));
|
|
897
388
|
CardContent.displayName = "CardContent";
|
|
898
|
-
var CardFooter =
|
|
389
|
+
var CardFooter = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
|
|
899
390
|
"div",
|
|
900
391
|
{
|
|
901
392
|
ref,
|
|
@@ -906,27 +397,27 @@ var CardFooter = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
906
397
|
CardFooter.displayName = "CardFooter";
|
|
907
398
|
|
|
908
399
|
// components/form-controls/card.tsx
|
|
909
|
-
import { jsx as
|
|
400
|
+
import { jsx as jsx14, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
910
401
|
var Card2 = ({ title, description, content, footer }) => {
|
|
911
|
-
return /* @__PURE__ */
|
|
912
|
-
/* @__PURE__ */
|
|
913
|
-
/* @__PURE__ */
|
|
914
|
-
description && /* @__PURE__ */
|
|
402
|
+
return /* @__PURE__ */ jsxs7(Card, { children: [
|
|
403
|
+
/* @__PURE__ */ jsxs7(CardHeader, { children: [
|
|
404
|
+
/* @__PURE__ */ jsx14(CardTitle, { children: title }),
|
|
405
|
+
description && /* @__PURE__ */ jsx14(CardDescription, { children: description })
|
|
915
406
|
] }),
|
|
916
|
-
/* @__PURE__ */
|
|
917
|
-
footer && /* @__PURE__ */
|
|
407
|
+
/* @__PURE__ */ jsx14(CardContent, { children: /* @__PURE__ */ jsx14("p", { children: content }) }),
|
|
408
|
+
footer && /* @__PURE__ */ jsx14(CardFooter, { children: /* @__PURE__ */ jsx14("p", { children: footer }) })
|
|
918
409
|
] });
|
|
919
410
|
};
|
|
920
411
|
|
|
921
412
|
// components/form-controls/checkbox.tsx
|
|
922
|
-
import * as
|
|
413
|
+
import * as React10 from "react";
|
|
923
414
|
|
|
924
415
|
// components/ui/checkbox.tsx
|
|
925
|
-
import * as
|
|
416
|
+
import * as React7 from "react";
|
|
926
417
|
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
927
|
-
import { CheckIcon
|
|
928
|
-
import { jsx as
|
|
929
|
-
var Checkbox =
|
|
418
|
+
import { CheckIcon } from "@radix-ui/react-icons";
|
|
419
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
420
|
+
var Checkbox = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
|
|
930
421
|
CheckboxPrimitive.Root,
|
|
931
422
|
{
|
|
932
423
|
ref,
|
|
@@ -935,11 +426,11 @@ var Checkbox = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
935
426
|
className
|
|
936
427
|
),
|
|
937
428
|
...props,
|
|
938
|
-
children: /* @__PURE__ */
|
|
429
|
+
children: /* @__PURE__ */ jsx15(
|
|
939
430
|
CheckboxPrimitive.Indicator,
|
|
940
431
|
{
|
|
941
432
|
className: cn("flex items-center justify-center text-current"),
|
|
942
|
-
children: /* @__PURE__ */
|
|
433
|
+
children: /* @__PURE__ */ jsx15(CheckIcon, { className: "h-4 w-4" })
|
|
943
434
|
}
|
|
944
435
|
)
|
|
945
436
|
}
|
|
@@ -947,7 +438,7 @@ var Checkbox = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
947
438
|
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
948
439
|
|
|
949
440
|
// components/ui/form.tsx
|
|
950
|
-
import * as
|
|
441
|
+
import * as React9 from "react";
|
|
951
442
|
import { Slot as Slot3 } from "@radix-ui/react-slot";
|
|
952
443
|
import {
|
|
953
444
|
Controller,
|
|
@@ -956,14 +447,14 @@ import {
|
|
|
956
447
|
} from "react-hook-form";
|
|
957
448
|
|
|
958
449
|
// components/ui/label.tsx
|
|
959
|
-
import * as
|
|
450
|
+
import * as React8 from "react";
|
|
960
451
|
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
961
|
-
import { cva as
|
|
962
|
-
import { jsx as
|
|
963
|
-
var labelVariants =
|
|
452
|
+
import { cva as cva3 } from "class-variance-authority";
|
|
453
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
454
|
+
var labelVariants = cva3(
|
|
964
455
|
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
965
456
|
);
|
|
966
|
-
var
|
|
457
|
+
var Label = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx16(
|
|
967
458
|
LabelPrimitive.Root,
|
|
968
459
|
{
|
|
969
460
|
ref,
|
|
@@ -971,22 +462,22 @@ var Label2 = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
|
|
|
971
462
|
...props
|
|
972
463
|
}
|
|
973
464
|
));
|
|
974
|
-
|
|
465
|
+
Label.displayName = LabelPrimitive.Root.displayName;
|
|
975
466
|
|
|
976
467
|
// components/ui/form.tsx
|
|
977
|
-
import { jsx as
|
|
468
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
978
469
|
var Form = FormProvider;
|
|
979
|
-
var FormFieldContext =
|
|
470
|
+
var FormFieldContext = React9.createContext(
|
|
980
471
|
{}
|
|
981
472
|
);
|
|
982
473
|
var FormField = ({
|
|
983
474
|
...props
|
|
984
475
|
}) => {
|
|
985
|
-
return /* @__PURE__ */
|
|
476
|
+
return /* @__PURE__ */ jsx17(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx17(Controller, { ...props }) });
|
|
986
477
|
};
|
|
987
478
|
var useFormField = () => {
|
|
988
|
-
const fieldContext =
|
|
989
|
-
const itemContext =
|
|
479
|
+
const fieldContext = React9.useContext(FormFieldContext);
|
|
480
|
+
const itemContext = React9.useContext(FormItemContext);
|
|
990
481
|
const { getFieldState, formState } = useFormContext();
|
|
991
482
|
const fieldState = getFieldState(fieldContext.name, formState);
|
|
992
483
|
if (!fieldContext) {
|
|
@@ -1002,18 +493,18 @@ var useFormField = () => {
|
|
|
1002
493
|
...fieldState
|
|
1003
494
|
};
|
|
1004
495
|
};
|
|
1005
|
-
var FormItemContext =
|
|
496
|
+
var FormItemContext = React9.createContext(
|
|
1006
497
|
{}
|
|
1007
498
|
);
|
|
1008
|
-
var FormItem =
|
|
1009
|
-
const id =
|
|
1010
|
-
return /* @__PURE__ */
|
|
499
|
+
var FormItem = React9.forwardRef(({ className, ...props }, ref) => {
|
|
500
|
+
const id = React9.useId();
|
|
501
|
+
return /* @__PURE__ */ jsx17(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx17("div", { ref, className: cn("space-y-2", className), ...props }) });
|
|
1011
502
|
});
|
|
1012
503
|
FormItem.displayName = "FormItem";
|
|
1013
|
-
var FormLabel =
|
|
504
|
+
var FormLabel = React9.forwardRef(({ className, ...props }, ref) => {
|
|
1014
505
|
const { error, formItemId } = useFormField();
|
|
1015
|
-
return /* @__PURE__ */
|
|
1016
|
-
|
|
506
|
+
return /* @__PURE__ */ jsx17(
|
|
507
|
+
Label,
|
|
1017
508
|
{
|
|
1018
509
|
ref,
|
|
1019
510
|
className: cn(error && "text-destructive", className),
|
|
@@ -1023,9 +514,9 @@ var FormLabel = React12.forwardRef(({ className, ...props }, ref) => {
|
|
|
1023
514
|
);
|
|
1024
515
|
});
|
|
1025
516
|
FormLabel.displayName = "FormLabel";
|
|
1026
|
-
var FormControl =
|
|
517
|
+
var FormControl = React9.forwardRef(({ ...props }, ref) => {
|
|
1027
518
|
const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
|
|
1028
|
-
return /* @__PURE__ */
|
|
519
|
+
return /* @__PURE__ */ jsx17(
|
|
1029
520
|
Slot3,
|
|
1030
521
|
{
|
|
1031
522
|
ref,
|
|
@@ -1037,9 +528,9 @@ var FormControl = React12.forwardRef(({ ...props }, ref) => {
|
|
|
1037
528
|
);
|
|
1038
529
|
});
|
|
1039
530
|
FormControl.displayName = "FormControl";
|
|
1040
|
-
var FormDescription =
|
|
531
|
+
var FormDescription = React9.forwardRef(({ className, ...props }, ref) => {
|
|
1041
532
|
const { formDescriptionId } = useFormField();
|
|
1042
|
-
return /* @__PURE__ */
|
|
533
|
+
return /* @__PURE__ */ jsx17(
|
|
1043
534
|
"p",
|
|
1044
535
|
{
|
|
1045
536
|
ref,
|
|
@@ -1050,13 +541,13 @@ var FormDescription = React12.forwardRef(({ className, ...props }, ref) => {
|
|
|
1050
541
|
);
|
|
1051
542
|
});
|
|
1052
543
|
FormDescription.displayName = "FormDescription";
|
|
1053
|
-
var FormMessage =
|
|
544
|
+
var FormMessage = React9.forwardRef(({ className, children, ...props }, ref) => {
|
|
1054
545
|
const { error, formMessageId } = useFormField();
|
|
1055
546
|
const body = error ? String(error?.message) : children;
|
|
1056
547
|
if (!body) {
|
|
1057
548
|
return null;
|
|
1058
549
|
}
|
|
1059
|
-
return /* @__PURE__ */
|
|
550
|
+
return /* @__PURE__ */ jsx17(
|
|
1060
551
|
"p",
|
|
1061
552
|
{
|
|
1062
553
|
ref,
|
|
@@ -1070,16 +561,16 @@ var FormMessage = React12.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
1070
561
|
FormMessage.displayName = "FormMessage";
|
|
1071
562
|
|
|
1072
563
|
// components/form-controls/checkbox.tsx
|
|
1073
|
-
import { jsx as
|
|
1074
|
-
var Checkbox2 =
|
|
1075
|
-
({ className, title, name, control, isFormField, ...props }, ref) => isFormField ? /* @__PURE__ */
|
|
564
|
+
import { jsx as jsx18, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
565
|
+
var Checkbox2 = React10.forwardRef(
|
|
566
|
+
({ className, title, name, control, isFormField, ...props }, ref) => isFormField ? /* @__PURE__ */ jsx18(
|
|
1076
567
|
FormField,
|
|
1077
568
|
{
|
|
1078
569
|
control,
|
|
1079
570
|
name,
|
|
1080
|
-
render: ({ field }) => /* @__PURE__ */
|
|
1081
|
-
/* @__PURE__ */
|
|
1082
|
-
/* @__PURE__ */
|
|
571
|
+
render: ({ field }) => /* @__PURE__ */ jsxs8(FormItem, { children: [
|
|
572
|
+
/* @__PURE__ */ jsx18(FormLabel, { children: title }),
|
|
573
|
+
/* @__PURE__ */ jsx18(FormControl, { children: /* @__PURE__ */ jsx18(
|
|
1083
574
|
Checkbox,
|
|
1084
575
|
{
|
|
1085
576
|
className,
|
|
@@ -1087,23 +578,117 @@ var Checkbox2 = React13.forwardRef(
|
|
|
1087
578
|
onCheckedChange: field.onChange
|
|
1088
579
|
}
|
|
1089
580
|
) }),
|
|
1090
|
-
/* @__PURE__ */
|
|
581
|
+
/* @__PURE__ */ jsx18(FormMessage, {})
|
|
1091
582
|
] })
|
|
1092
583
|
}
|
|
1093
|
-
) : /* @__PURE__ */
|
|
584
|
+
) : /* @__PURE__ */ jsx18(Checkbox, { ref, className, ...props })
|
|
1094
585
|
);
|
|
1095
586
|
Checkbox2.displayName = "Checkbox";
|
|
1096
587
|
|
|
1097
588
|
// components/form-controls/combobox.tsx
|
|
1098
589
|
import { Check, ChevronsUpDown } from "lucide-react";
|
|
1099
|
-
import { useEffect
|
|
590
|
+
import { useEffect, useState } from "react";
|
|
1100
591
|
|
|
1101
592
|
// components/ui/command.tsx
|
|
1102
|
-
import * as
|
|
593
|
+
import * as React12 from "react";
|
|
1103
594
|
import { MagnifyingGlassIcon } from "@radix-ui/react-icons";
|
|
1104
595
|
import { Command as CommandPrimitive } from "cmdk";
|
|
1105
|
-
|
|
1106
|
-
|
|
596
|
+
|
|
597
|
+
// components/ui/dialog.tsx
|
|
598
|
+
import * as React11 from "react";
|
|
599
|
+
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
600
|
+
import { Cross2Icon } from "@radix-ui/react-icons";
|
|
601
|
+
import { jsx as jsx19, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
602
|
+
var Dialog = DialogPrimitive.Root;
|
|
603
|
+
var DialogTrigger = DialogPrimitive.Trigger;
|
|
604
|
+
var DialogPortal = DialogPrimitive.Portal;
|
|
605
|
+
var DialogOverlay = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
|
|
606
|
+
DialogPrimitive.Overlay,
|
|
607
|
+
{
|
|
608
|
+
ref,
|
|
609
|
+
className: cn(
|
|
610
|
+
"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
611
|
+
className
|
|
612
|
+
),
|
|
613
|
+
...props
|
|
614
|
+
}
|
|
615
|
+
));
|
|
616
|
+
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
617
|
+
var DialogContent = React11.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs9(DialogPortal, { children: [
|
|
618
|
+
/* @__PURE__ */ jsx19(DialogOverlay, {}),
|
|
619
|
+
/* @__PURE__ */ jsxs9(
|
|
620
|
+
DialogPrimitive.Content,
|
|
621
|
+
{
|
|
622
|
+
ref,
|
|
623
|
+
className: cn(
|
|
624
|
+
"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
|
|
625
|
+
className
|
|
626
|
+
),
|
|
627
|
+
...props,
|
|
628
|
+
children: [
|
|
629
|
+
children,
|
|
630
|
+
/* @__PURE__ */ jsxs9(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
|
|
631
|
+
/* @__PURE__ */ jsx19(Cross2Icon, { className: "h-4 w-4" }),
|
|
632
|
+
/* @__PURE__ */ jsx19("span", { className: "sr-only", children: "Close" })
|
|
633
|
+
] })
|
|
634
|
+
]
|
|
635
|
+
}
|
|
636
|
+
)
|
|
637
|
+
] }));
|
|
638
|
+
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
639
|
+
var DialogHeader = ({
|
|
640
|
+
className,
|
|
641
|
+
...props
|
|
642
|
+
}) => /* @__PURE__ */ jsx19(
|
|
643
|
+
"div",
|
|
644
|
+
{
|
|
645
|
+
className: cn(
|
|
646
|
+
"flex flex-col space-y-1.5 text-center sm:text-left",
|
|
647
|
+
className
|
|
648
|
+
),
|
|
649
|
+
...props
|
|
650
|
+
}
|
|
651
|
+
);
|
|
652
|
+
DialogHeader.displayName = "DialogHeader";
|
|
653
|
+
var DialogFooter = ({
|
|
654
|
+
className,
|
|
655
|
+
...props
|
|
656
|
+
}) => /* @__PURE__ */ jsx19(
|
|
657
|
+
"div",
|
|
658
|
+
{
|
|
659
|
+
className: cn(
|
|
660
|
+
"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
|
|
661
|
+
className
|
|
662
|
+
),
|
|
663
|
+
...props
|
|
664
|
+
}
|
|
665
|
+
);
|
|
666
|
+
DialogFooter.displayName = "DialogFooter";
|
|
667
|
+
var DialogTitle = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
|
|
668
|
+
DialogPrimitive.Title,
|
|
669
|
+
{
|
|
670
|
+
ref,
|
|
671
|
+
className: cn(
|
|
672
|
+
"text-lg font-semibold leading-none tracking-tight",
|
|
673
|
+
className
|
|
674
|
+
),
|
|
675
|
+
...props
|
|
676
|
+
}
|
|
677
|
+
));
|
|
678
|
+
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
679
|
+
var DialogDescription = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
|
|
680
|
+
DialogPrimitive.Description,
|
|
681
|
+
{
|
|
682
|
+
ref,
|
|
683
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
684
|
+
...props
|
|
685
|
+
}
|
|
686
|
+
));
|
|
687
|
+
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
688
|
+
|
|
689
|
+
// components/ui/command.tsx
|
|
690
|
+
import { jsx as jsx20, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
691
|
+
var Command = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
|
|
1107
692
|
CommandPrimitive,
|
|
1108
693
|
{
|
|
1109
694
|
ref,
|
|
@@ -1115,9 +700,9 @@ var Command = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
1115
700
|
}
|
|
1116
701
|
));
|
|
1117
702
|
Command.displayName = CommandPrimitive.displayName;
|
|
1118
|
-
var CommandInput =
|
|
1119
|
-
/* @__PURE__ */
|
|
1120
|
-
/* @__PURE__ */
|
|
703
|
+
var CommandInput = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs10("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
|
|
704
|
+
/* @__PURE__ */ jsx20(MagnifyingGlassIcon, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
|
|
705
|
+
/* @__PURE__ */ jsx20(
|
|
1121
706
|
CommandPrimitive.Input,
|
|
1122
707
|
{
|
|
1123
708
|
ref,
|
|
@@ -1130,7 +715,7 @@ var CommandInput = React14.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
1130
715
|
)
|
|
1131
716
|
] }));
|
|
1132
717
|
CommandInput.displayName = CommandPrimitive.Input.displayName;
|
|
1133
|
-
var CommandList =
|
|
718
|
+
var CommandList = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
|
|
1134
719
|
CommandPrimitive.List,
|
|
1135
720
|
{
|
|
1136
721
|
ref,
|
|
@@ -1139,7 +724,7 @@ var CommandList = React14.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
1139
724
|
}
|
|
1140
725
|
));
|
|
1141
726
|
CommandList.displayName = CommandPrimitive.List.displayName;
|
|
1142
|
-
var CommandEmpty =
|
|
727
|
+
var CommandEmpty = React12.forwardRef((props, ref) => /* @__PURE__ */ jsx20(
|
|
1143
728
|
CommandPrimitive.Empty,
|
|
1144
729
|
{
|
|
1145
730
|
ref,
|
|
@@ -1148,7 +733,7 @@ var CommandEmpty = React14.forwardRef((props, ref) => /* @__PURE__ */ jsx24(
|
|
|
1148
733
|
}
|
|
1149
734
|
));
|
|
1150
735
|
CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
|
|
1151
|
-
var CommandGroup =
|
|
736
|
+
var CommandGroup = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
|
|
1152
737
|
CommandPrimitive.Group,
|
|
1153
738
|
{
|
|
1154
739
|
ref,
|
|
@@ -1160,7 +745,7 @@ var CommandGroup = React14.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
1160
745
|
}
|
|
1161
746
|
));
|
|
1162
747
|
CommandGroup.displayName = CommandPrimitive.Group.displayName;
|
|
1163
|
-
var CommandSeparator =
|
|
748
|
+
var CommandSeparator = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
|
|
1164
749
|
CommandPrimitive.Separator,
|
|
1165
750
|
{
|
|
1166
751
|
ref,
|
|
@@ -1169,7 +754,7 @@ var CommandSeparator = React14.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
1169
754
|
}
|
|
1170
755
|
));
|
|
1171
756
|
CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
|
|
1172
|
-
var CommandItem =
|
|
757
|
+
var CommandItem = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
|
|
1173
758
|
CommandPrimitive.Item,
|
|
1174
759
|
{
|
|
1175
760
|
ref,
|
|
@@ -1185,7 +770,7 @@ var CommandShortcut = ({
|
|
|
1185
770
|
className,
|
|
1186
771
|
...props
|
|
1187
772
|
}) => {
|
|
1188
|
-
return /* @__PURE__ */
|
|
773
|
+
return /* @__PURE__ */ jsx20(
|
|
1189
774
|
"span",
|
|
1190
775
|
{
|
|
1191
776
|
className: cn(
|
|
@@ -1199,12 +784,12 @@ var CommandShortcut = ({
|
|
|
1199
784
|
CommandShortcut.displayName = "CommandShortcut";
|
|
1200
785
|
|
|
1201
786
|
// components/ui/popover.tsx
|
|
1202
|
-
import * as
|
|
787
|
+
import * as React13 from "react";
|
|
1203
788
|
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
1204
|
-
import { jsx as
|
|
789
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
1205
790
|
var Popover = PopoverPrimitive.Root;
|
|
1206
791
|
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
1207
|
-
var PopoverContent =
|
|
792
|
+
var PopoverContent = React13.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx21(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx21(
|
|
1208
793
|
PopoverPrimitive.Content,
|
|
1209
794
|
{
|
|
1210
795
|
ref,
|
|
@@ -1220,7 +805,7 @@ var PopoverContent = React15.forwardRef(({ className, align = "center", sideOffs
|
|
|
1220
805
|
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
1221
806
|
|
|
1222
807
|
// components/form-controls/combobox.tsx
|
|
1223
|
-
import { jsx as
|
|
808
|
+
import { jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1224
809
|
function Combobox({
|
|
1225
810
|
label,
|
|
1226
811
|
options,
|
|
@@ -1230,14 +815,14 @@ function Combobox({
|
|
|
1230
815
|
control,
|
|
1231
816
|
name
|
|
1232
817
|
}) {
|
|
1233
|
-
const [open, setOpen] =
|
|
1234
|
-
const [value, setValue] =
|
|
1235
|
-
|
|
818
|
+
const [open, setOpen] = useState(false);
|
|
819
|
+
const [value, setValue] = useState(defaultValue);
|
|
820
|
+
useEffect(() => {
|
|
1236
821
|
setValue(defaultValue);
|
|
1237
822
|
}, [defaultValue]);
|
|
1238
823
|
if (!isFormField) {
|
|
1239
|
-
return /* @__PURE__ */
|
|
1240
|
-
/* @__PURE__ */
|
|
824
|
+
return /* @__PURE__ */ jsxs11(Popover, { open, onOpenChange: setOpen, children: [
|
|
825
|
+
/* @__PURE__ */ jsx22(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs11(
|
|
1241
826
|
Button,
|
|
1242
827
|
{
|
|
1243
828
|
variant: "outline",
|
|
@@ -1246,14 +831,14 @@ function Combobox({
|
|
|
1246
831
|
className: "w-full justify-between capitalize",
|
|
1247
832
|
children: [
|
|
1248
833
|
value ? options.find((option) => option.value === value)?.label || label : label,
|
|
1249
|
-
/* @__PURE__ */
|
|
834
|
+
/* @__PURE__ */ jsx22(ChevronsUpDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })
|
|
1250
835
|
]
|
|
1251
836
|
}
|
|
1252
837
|
) }),
|
|
1253
|
-
/* @__PURE__ */
|
|
1254
|
-
/* @__PURE__ */
|
|
1255
|
-
/* @__PURE__ */
|
|
1256
|
-
/* @__PURE__ */
|
|
838
|
+
/* @__PURE__ */ jsx22(PopoverContent, { className: "w-full p-0", children: /* @__PURE__ */ jsxs11(Command, { children: [
|
|
839
|
+
/* @__PURE__ */ jsx22(CommandInput, { placeholder: "Search..." }),
|
|
840
|
+
/* @__PURE__ */ jsx22(CommandEmpty, { children: "No item found." }),
|
|
841
|
+
/* @__PURE__ */ jsx22(CommandList, { children: /* @__PURE__ */ jsx22(CommandGroup, { children: options.map((option) => /* @__PURE__ */ jsxs11(
|
|
1257
842
|
CommandItem,
|
|
1258
843
|
{
|
|
1259
844
|
value: option.value,
|
|
@@ -1263,7 +848,7 @@ function Combobox({
|
|
|
1263
848
|
setOpen(false);
|
|
1264
849
|
},
|
|
1265
850
|
children: [
|
|
1266
|
-
/* @__PURE__ */
|
|
851
|
+
/* @__PURE__ */ jsx22(
|
|
1267
852
|
Check,
|
|
1268
853
|
{
|
|
1269
854
|
className: cn(
|
|
@@ -1280,15 +865,15 @@ function Combobox({
|
|
|
1280
865
|
] }) })
|
|
1281
866
|
] });
|
|
1282
867
|
}
|
|
1283
|
-
return /* @__PURE__ */
|
|
868
|
+
return /* @__PURE__ */ jsx22(
|
|
1284
869
|
FormField,
|
|
1285
870
|
{
|
|
1286
871
|
control,
|
|
1287
872
|
name,
|
|
1288
|
-
render: ({ field }) => /* @__PURE__ */
|
|
1289
|
-
/* @__PURE__ */
|
|
1290
|
-
/* @__PURE__ */
|
|
1291
|
-
/* @__PURE__ */
|
|
873
|
+
render: ({ field }) => /* @__PURE__ */ jsxs11(FormItem, { children: [
|
|
874
|
+
/* @__PURE__ */ jsx22(FormLabel, { children: label }),
|
|
875
|
+
/* @__PURE__ */ jsx22(FormControl, { children: /* @__PURE__ */ jsxs11(Popover, { open, onOpenChange: setOpen, children: [
|
|
876
|
+
/* @__PURE__ */ jsx22(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs11(
|
|
1292
877
|
Button,
|
|
1293
878
|
{
|
|
1294
879
|
variant: "outline",
|
|
@@ -1297,14 +882,14 @@ function Combobox({
|
|
|
1297
882
|
className: "w-full justify-between capitalize",
|
|
1298
883
|
children: [
|
|
1299
884
|
field.value ? options.find((option) => option.value === field.value)?.label || label : label,
|
|
1300
|
-
/* @__PURE__ */
|
|
885
|
+
/* @__PURE__ */ jsx22(ChevronsUpDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })
|
|
1301
886
|
]
|
|
1302
887
|
}
|
|
1303
888
|
) }),
|
|
1304
|
-
/* @__PURE__ */
|
|
1305
|
-
/* @__PURE__ */
|
|
1306
|
-
/* @__PURE__ */
|
|
1307
|
-
/* @__PURE__ */
|
|
889
|
+
/* @__PURE__ */ jsx22(PopoverContent, { className: "w-full p-0", children: /* @__PURE__ */ jsxs11(Command, { children: [
|
|
890
|
+
/* @__PURE__ */ jsx22(CommandInput, { placeholder: "Search..." }),
|
|
891
|
+
/* @__PURE__ */ jsx22(CommandEmpty, { children: "No item found." }),
|
|
892
|
+
/* @__PURE__ */ jsx22(CommandList, { children: /* @__PURE__ */ jsx22(CommandGroup, { children: options.map((option) => /* @__PURE__ */ jsxs11(
|
|
1308
893
|
CommandItem,
|
|
1309
894
|
{
|
|
1310
895
|
value: option.value,
|
|
@@ -1315,7 +900,7 @@ function Combobox({
|
|
|
1315
900
|
setOpen(false);
|
|
1316
901
|
},
|
|
1317
902
|
children: [
|
|
1318
|
-
/* @__PURE__ */
|
|
903
|
+
/* @__PURE__ */ jsx22(
|
|
1319
904
|
Check,
|
|
1320
905
|
{
|
|
1321
906
|
className: cn(
|
|
@@ -1331,22 +916,22 @@ function Combobox({
|
|
|
1331
916
|
)) }) })
|
|
1332
917
|
] }) })
|
|
1333
918
|
] }) }),
|
|
1334
|
-
/* @__PURE__ */
|
|
919
|
+
/* @__PURE__ */ jsx22(FormMessage, {})
|
|
1335
920
|
] })
|
|
1336
921
|
}
|
|
1337
922
|
);
|
|
1338
923
|
}
|
|
1339
924
|
|
|
1340
925
|
// components/form-controls/command.tsx
|
|
1341
|
-
import * as
|
|
1342
|
-
import { jsx as
|
|
1343
|
-
var Command2 =
|
|
1344
|
-
/* @__PURE__ */
|
|
1345
|
-
/* @__PURE__ */
|
|
1346
|
-
/* @__PURE__ */
|
|
1347
|
-
commandGroup.map((group, index) => /* @__PURE__ */
|
|
1348
|
-
/* @__PURE__ */
|
|
1349
|
-
commandGroup.length - 1 !== index && /* @__PURE__ */
|
|
926
|
+
import * as React14 from "react";
|
|
927
|
+
import { jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
928
|
+
var Command2 = React14.forwardRef(({ className, placeholder, commandGroup, ...props }, ref) => /* @__PURE__ */ jsxs12(Command, { ...props, ref, className, children: [
|
|
929
|
+
/* @__PURE__ */ jsx23(CommandInput, { placeholder }),
|
|
930
|
+
/* @__PURE__ */ jsxs12(CommandList, { children: [
|
|
931
|
+
/* @__PURE__ */ jsx23(CommandEmpty, { children: "No results found." }),
|
|
932
|
+
commandGroup.map((group, index) => /* @__PURE__ */ jsxs12(React14.Fragment, { children: [
|
|
933
|
+
/* @__PURE__ */ jsx23(CommandGroup, { heading: group.header, children: group.items.map((item, itemIndex) => /* @__PURE__ */ jsx23(CommandItem, { children: item }, itemIndex)) }, index),
|
|
934
|
+
commandGroup.length - 1 !== index && /* @__PURE__ */ jsx23(CommandSeparator, {})
|
|
1350
935
|
] }, index))
|
|
1351
936
|
] })
|
|
1352
937
|
] }));
|
|
@@ -1372,145 +957,283 @@ import { Loader2 } from "lucide-react";
|
|
|
1372
957
|
import * as React19 from "react";
|
|
1373
958
|
|
|
1374
959
|
// components/ui/dropdown-menu.tsx
|
|
1375
|
-
import * as
|
|
960
|
+
import * as React15 from "react";
|
|
1376
961
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
1377
962
|
import {
|
|
1378
|
-
CheckIcon as
|
|
963
|
+
CheckIcon as CheckIcon2,
|
|
1379
964
|
ChevronRightIcon as ChevronRightIcon2,
|
|
1380
965
|
DotFilledIcon
|
|
1381
966
|
} from "@radix-ui/react-icons";
|
|
1382
|
-
import { jsx as
|
|
1383
|
-
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
1384
|
-
var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
|
1385
|
-
var DropdownMenuSubTrigger =
|
|
1386
|
-
DropdownMenuPrimitive.SubTrigger,
|
|
967
|
+
import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
968
|
+
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
969
|
+
var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
|
970
|
+
var DropdownMenuSubTrigger = React15.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs13(
|
|
971
|
+
DropdownMenuPrimitive.SubTrigger,
|
|
972
|
+
{
|
|
973
|
+
ref,
|
|
974
|
+
className: cn(
|
|
975
|
+
"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",
|
|
976
|
+
inset && "pl-8",
|
|
977
|
+
className
|
|
978
|
+
),
|
|
979
|
+
...props,
|
|
980
|
+
children: [
|
|
981
|
+
children,
|
|
982
|
+
/* @__PURE__ */ jsx24(ChevronRightIcon2, { className: "ml-auto h-4 w-4" })
|
|
983
|
+
]
|
|
984
|
+
}
|
|
985
|
+
));
|
|
986
|
+
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
987
|
+
var DropdownMenuSubContent = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
|
|
988
|
+
DropdownMenuPrimitive.SubContent,
|
|
989
|
+
{
|
|
990
|
+
ref,
|
|
991
|
+
className: cn(
|
|
992
|
+
"z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
993
|
+
className
|
|
994
|
+
),
|
|
995
|
+
...props
|
|
996
|
+
}
|
|
997
|
+
));
|
|
998
|
+
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
999
|
+
var DropdownMenuContent = React15.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx24(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx24(
|
|
1000
|
+
DropdownMenuPrimitive.Content,
|
|
1001
|
+
{
|
|
1002
|
+
ref,
|
|
1003
|
+
sideOffset,
|
|
1004
|
+
className: cn(
|
|
1005
|
+
"z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
|
|
1006
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
1007
|
+
className
|
|
1008
|
+
),
|
|
1009
|
+
...props
|
|
1010
|
+
}
|
|
1011
|
+
) }));
|
|
1012
|
+
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
1013
|
+
var DropdownMenuItem = React15.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx24(
|
|
1014
|
+
DropdownMenuPrimitive.Item,
|
|
1015
|
+
{
|
|
1016
|
+
ref,
|
|
1017
|
+
className: cn(
|
|
1018
|
+
"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
|
|
1019
|
+
inset && "pl-8",
|
|
1020
|
+
className
|
|
1021
|
+
),
|
|
1022
|
+
...props
|
|
1023
|
+
}
|
|
1024
|
+
));
|
|
1025
|
+
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
1026
|
+
var DropdownMenuCheckboxItem = React15.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs13(
|
|
1027
|
+
DropdownMenuPrimitive.CheckboxItem,
|
|
1028
|
+
{
|
|
1029
|
+
ref,
|
|
1030
|
+
className: cn(
|
|
1031
|
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
|
|
1032
|
+
className
|
|
1033
|
+
),
|
|
1034
|
+
checked,
|
|
1035
|
+
...props,
|
|
1036
|
+
children: [
|
|
1037
|
+
/* @__PURE__ */ jsx24("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx24(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx24(CheckIcon2, { className: "h-4 w-4" }) }) }),
|
|
1038
|
+
children
|
|
1039
|
+
]
|
|
1040
|
+
}
|
|
1041
|
+
));
|
|
1042
|
+
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
1043
|
+
var DropdownMenuRadioItem = React15.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs13(
|
|
1044
|
+
DropdownMenuPrimitive.RadioItem,
|
|
1045
|
+
{
|
|
1046
|
+
ref,
|
|
1047
|
+
className: cn(
|
|
1048
|
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
|
|
1049
|
+
className
|
|
1050
|
+
),
|
|
1051
|
+
...props,
|
|
1052
|
+
children: [
|
|
1053
|
+
/* @__PURE__ */ jsx24("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx24(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx24(DotFilledIcon, { className: "h-4 w-4 fill-current" }) }) }),
|
|
1054
|
+
children
|
|
1055
|
+
]
|
|
1056
|
+
}
|
|
1057
|
+
));
|
|
1058
|
+
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
1059
|
+
var DropdownMenuLabel = React15.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx24(
|
|
1060
|
+
DropdownMenuPrimitive.Label,
|
|
1061
|
+
{
|
|
1062
|
+
ref,
|
|
1063
|
+
className: cn(
|
|
1064
|
+
"px-2 py-1.5 text-sm font-semibold",
|
|
1065
|
+
inset && "pl-8",
|
|
1066
|
+
className
|
|
1067
|
+
),
|
|
1068
|
+
...props
|
|
1069
|
+
}
|
|
1070
|
+
));
|
|
1071
|
+
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
1072
|
+
var DropdownMenuSeparator = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
|
|
1073
|
+
DropdownMenuPrimitive.Separator,
|
|
1074
|
+
{
|
|
1075
|
+
ref,
|
|
1076
|
+
className: cn("-mx-1 my-1 h-px bg-muted", className),
|
|
1077
|
+
...props
|
|
1078
|
+
}
|
|
1079
|
+
));
|
|
1080
|
+
DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
|
|
1081
|
+
var DropdownMenuShortcut = ({
|
|
1082
|
+
className,
|
|
1083
|
+
...props
|
|
1084
|
+
}) => {
|
|
1085
|
+
return /* @__PURE__ */ jsx24(
|
|
1086
|
+
"span",
|
|
1087
|
+
{
|
|
1088
|
+
className: cn("ml-auto text-xs tracking-widest opacity-60", className),
|
|
1089
|
+
...props
|
|
1090
|
+
}
|
|
1091
|
+
);
|
|
1092
|
+
};
|
|
1093
|
+
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
1094
|
+
|
|
1095
|
+
// components/ui/input.tsx
|
|
1096
|
+
import * as React16 from "react";
|
|
1097
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
1098
|
+
var Input = React16.forwardRef(
|
|
1099
|
+
({ className, type, ...props }, ref) => {
|
|
1100
|
+
return /* @__PURE__ */ jsx25(
|
|
1101
|
+
"input",
|
|
1102
|
+
{
|
|
1103
|
+
type,
|
|
1104
|
+
className: cn(
|
|
1105
|
+
"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
|
|
1106
|
+
className
|
|
1107
|
+
),
|
|
1108
|
+
ref,
|
|
1109
|
+
...props
|
|
1110
|
+
}
|
|
1111
|
+
);
|
|
1112
|
+
}
|
|
1113
|
+
);
|
|
1114
|
+
Input.displayName = "Input";
|
|
1115
|
+
|
|
1116
|
+
// components/ui/select.tsx
|
|
1117
|
+
import * as React17 from "react";
|
|
1118
|
+
import {
|
|
1119
|
+
CaretSortIcon,
|
|
1120
|
+
CheckIcon as CheckIcon3,
|
|
1121
|
+
ChevronDownIcon,
|
|
1122
|
+
ChevronUpIcon
|
|
1123
|
+
} from "@radix-ui/react-icons";
|
|
1124
|
+
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
1125
|
+
import { jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1126
|
+
var Select = SelectPrimitive.Root;
|
|
1127
|
+
var SelectValue = SelectPrimitive.Value;
|
|
1128
|
+
var SelectTrigger = React17.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs14(
|
|
1129
|
+
SelectPrimitive.Trigger,
|
|
1387
1130
|
{
|
|
1388
1131
|
ref,
|
|
1389
1132
|
className: cn(
|
|
1390
|
-
"flex
|
|
1391
|
-
inset && "pl-8",
|
|
1133
|
+
"flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
|
|
1392
1134
|
className
|
|
1393
1135
|
),
|
|
1394
1136
|
...props,
|
|
1395
1137
|
children: [
|
|
1396
1138
|
children,
|
|
1397
|
-
/* @__PURE__ */
|
|
1139
|
+
/* @__PURE__ */ jsx26(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx26(CaretSortIcon, { className: "h-4 w-4 opacity-50" }) })
|
|
1398
1140
|
]
|
|
1399
1141
|
}
|
|
1400
1142
|
));
|
|
1401
|
-
|
|
1402
|
-
var
|
|
1403
|
-
|
|
1143
|
+
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
1144
|
+
var SelectScrollUpButton = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx26(
|
|
1145
|
+
SelectPrimitive.ScrollUpButton,
|
|
1404
1146
|
{
|
|
1405
1147
|
ref,
|
|
1406
1148
|
className: cn(
|
|
1407
|
-
"
|
|
1149
|
+
"flex cursor-default items-center justify-center py-1",
|
|
1408
1150
|
className
|
|
1409
1151
|
),
|
|
1410
|
-
...props
|
|
1152
|
+
...props,
|
|
1153
|
+
children: /* @__PURE__ */ jsx26(ChevronUpIcon, {})
|
|
1411
1154
|
}
|
|
1412
1155
|
));
|
|
1413
|
-
|
|
1414
|
-
var
|
|
1415
|
-
|
|
1416
|
-
{
|
|
1417
|
-
ref,
|
|
1418
|
-
sideOffset,
|
|
1419
|
-
className: cn(
|
|
1420
|
-
"z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
|
|
1421
|
-
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
1422
|
-
className
|
|
1423
|
-
),
|
|
1424
|
-
...props
|
|
1425
|
-
}
|
|
1426
|
-
) }));
|
|
1427
|
-
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
1428
|
-
var DropdownMenuItem = React17.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx28(
|
|
1429
|
-
DropdownMenuPrimitive.Item,
|
|
1156
|
+
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
1157
|
+
var SelectScrollDownButton = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx26(
|
|
1158
|
+
SelectPrimitive.ScrollDownButton,
|
|
1430
1159
|
{
|
|
1431
1160
|
ref,
|
|
1432
1161
|
className: cn(
|
|
1433
|
-
"
|
|
1434
|
-
inset && "pl-8",
|
|
1162
|
+
"flex cursor-default items-center justify-center py-1",
|
|
1435
1163
|
className
|
|
1436
1164
|
),
|
|
1437
|
-
...props
|
|
1165
|
+
...props,
|
|
1166
|
+
children: /* @__PURE__ */ jsx26(ChevronDownIcon, {})
|
|
1438
1167
|
}
|
|
1439
1168
|
));
|
|
1440
|
-
|
|
1441
|
-
var
|
|
1442
|
-
|
|
1169
|
+
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
1170
|
+
var SelectContent = React17.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx26(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs14(
|
|
1171
|
+
SelectPrimitive.Content,
|
|
1443
1172
|
{
|
|
1444
1173
|
ref,
|
|
1445
1174
|
className: cn(
|
|
1446
|
-
"relative
|
|
1175
|
+
"relative z-50 max-h-96 min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
1176
|
+
position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
1447
1177
|
className
|
|
1448
1178
|
),
|
|
1449
|
-
|
|
1179
|
+
position,
|
|
1450
1180
|
...props,
|
|
1451
1181
|
children: [
|
|
1452
|
-
/* @__PURE__ */
|
|
1453
|
-
|
|
1182
|
+
/* @__PURE__ */ jsx26(SelectScrollUpButton, {}),
|
|
1183
|
+
/* @__PURE__ */ jsx26(
|
|
1184
|
+
SelectPrimitive.Viewport,
|
|
1185
|
+
{
|
|
1186
|
+
className: cn(
|
|
1187
|
+
"p-1",
|
|
1188
|
+
position === "popper" && "h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width)"
|
|
1189
|
+
),
|
|
1190
|
+
children
|
|
1191
|
+
}
|
|
1192
|
+
),
|
|
1193
|
+
/* @__PURE__ */ jsx26(SelectScrollDownButton, {})
|
|
1454
1194
|
]
|
|
1455
1195
|
}
|
|
1456
|
-
));
|
|
1457
|
-
|
|
1458
|
-
var
|
|
1459
|
-
|
|
1196
|
+
) }));
|
|
1197
|
+
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
1198
|
+
var SelectLabel = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx26(
|
|
1199
|
+
SelectPrimitive.Label,
|
|
1460
1200
|
{
|
|
1461
1201
|
ref,
|
|
1462
|
-
className: cn(
|
|
1463
|
-
|
|
1464
|
-
className
|
|
1465
|
-
),
|
|
1466
|
-
...props,
|
|
1467
|
-
children: [
|
|
1468
|
-
/* @__PURE__ */ jsx28("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx28(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx28(DotFilledIcon, { className: "h-4 w-4 fill-current" }) }) }),
|
|
1469
|
-
children
|
|
1470
|
-
]
|
|
1202
|
+
className: cn("px-2 py-1.5 text-sm font-semibold", className),
|
|
1203
|
+
...props
|
|
1471
1204
|
}
|
|
1472
1205
|
));
|
|
1473
|
-
|
|
1474
|
-
var
|
|
1475
|
-
|
|
1206
|
+
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
1207
|
+
var SelectItem = React17.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs14(
|
|
1208
|
+
SelectPrimitive.Item,
|
|
1476
1209
|
{
|
|
1477
1210
|
ref,
|
|
1478
1211
|
className: cn(
|
|
1479
|
-
"
|
|
1480
|
-
inset && "pl-8",
|
|
1212
|
+
"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
|
|
1481
1213
|
className
|
|
1482
1214
|
),
|
|
1483
|
-
...props
|
|
1215
|
+
...props,
|
|
1216
|
+
children: [
|
|
1217
|
+
/* @__PURE__ */ jsx26("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx26(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx26(CheckIcon3, { className: "h-4 w-4" }) }) }),
|
|
1218
|
+
/* @__PURE__ */ jsx26(SelectPrimitive.ItemText, { children })
|
|
1219
|
+
]
|
|
1484
1220
|
}
|
|
1485
1221
|
));
|
|
1486
|
-
|
|
1487
|
-
var
|
|
1488
|
-
|
|
1222
|
+
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
1223
|
+
var SelectSeparator = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx26(
|
|
1224
|
+
SelectPrimitive.Separator,
|
|
1489
1225
|
{
|
|
1490
1226
|
ref,
|
|
1491
1227
|
className: cn("-mx-1 my-1 h-px bg-muted", className),
|
|
1492
1228
|
...props
|
|
1493
1229
|
}
|
|
1494
1230
|
));
|
|
1495
|
-
|
|
1496
|
-
var DropdownMenuShortcut = ({
|
|
1497
|
-
className,
|
|
1498
|
-
...props
|
|
1499
|
-
}) => {
|
|
1500
|
-
return /* @__PURE__ */ jsx28(
|
|
1501
|
-
"span",
|
|
1502
|
-
{
|
|
1503
|
-
className: cn("ml-auto text-xs tracking-widest opacity-60", className),
|
|
1504
|
-
...props
|
|
1505
|
-
}
|
|
1506
|
-
);
|
|
1507
|
-
};
|
|
1508
|
-
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
1231
|
+
SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
1509
1232
|
|
|
1510
1233
|
// components/ui/table.tsx
|
|
1511
1234
|
import * as React18 from "react";
|
|
1512
|
-
import { jsx as
|
|
1513
|
-
var Table = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
1235
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
1236
|
+
var Table = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx27(
|
|
1514
1237
|
"table",
|
|
1515
1238
|
{
|
|
1516
1239
|
ref,
|
|
@@ -1519,9 +1242,9 @@ var Table = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
|
1519
1242
|
}
|
|
1520
1243
|
) }));
|
|
1521
1244
|
Table.displayName = "Table";
|
|
1522
|
-
var TableHeader = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
1245
|
+
var TableHeader = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
|
|
1523
1246
|
TableHeader.displayName = "TableHeader";
|
|
1524
|
-
var TableBody = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
1247
|
+
var TableBody = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
|
|
1525
1248
|
"tbody",
|
|
1526
1249
|
{
|
|
1527
1250
|
ref,
|
|
@@ -1530,7 +1253,7 @@ var TableBody = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
1530
1253
|
}
|
|
1531
1254
|
));
|
|
1532
1255
|
TableBody.displayName = "TableBody";
|
|
1533
|
-
var TableFooter = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
1256
|
+
var TableFooter = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
|
|
1534
1257
|
"tfoot",
|
|
1535
1258
|
{
|
|
1536
1259
|
ref,
|
|
@@ -1542,7 +1265,7 @@ var TableFooter = React18.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
1542
1265
|
}
|
|
1543
1266
|
));
|
|
1544
1267
|
TableFooter.displayName = "TableFooter";
|
|
1545
|
-
var TableRow = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
1268
|
+
var TableRow = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
|
|
1546
1269
|
"tr",
|
|
1547
1270
|
{
|
|
1548
1271
|
ref,
|
|
@@ -1554,7 +1277,7 @@ var TableRow = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
1554
1277
|
}
|
|
1555
1278
|
));
|
|
1556
1279
|
TableRow.displayName = "TableRow";
|
|
1557
|
-
var TableHead = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
1280
|
+
var TableHead = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
|
|
1558
1281
|
"th",
|
|
1559
1282
|
{
|
|
1560
1283
|
ref,
|
|
@@ -1566,7 +1289,7 @@ var TableHead = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
1566
1289
|
}
|
|
1567
1290
|
));
|
|
1568
1291
|
TableHead.displayName = "TableHead";
|
|
1569
|
-
var TableCell = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
1292
|
+
var TableCell = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
|
|
1570
1293
|
"td",
|
|
1571
1294
|
{
|
|
1572
1295
|
ref,
|
|
@@ -1578,7 +1301,7 @@ var TableCell = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
1578
1301
|
}
|
|
1579
1302
|
));
|
|
1580
1303
|
TableCell.displayName = "TableCell";
|
|
1581
|
-
var TableCaption = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
1304
|
+
var TableCaption = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
|
|
1582
1305
|
"caption",
|
|
1583
1306
|
{
|
|
1584
1307
|
ref,
|
|
@@ -1589,7 +1312,7 @@ var TableCaption = React18.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
1589
1312
|
TableCaption.displayName = "TableCaption";
|
|
1590
1313
|
|
|
1591
1314
|
// components/form-controls/data-table.tsx
|
|
1592
|
-
import { jsx as
|
|
1315
|
+
import { jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1593
1316
|
function DataTable({
|
|
1594
1317
|
data,
|
|
1595
1318
|
columns,
|
|
@@ -1621,10 +1344,10 @@ function DataTable({
|
|
|
1621
1344
|
rowSelection
|
|
1622
1345
|
}
|
|
1623
1346
|
});
|
|
1624
|
-
return /* @__PURE__ */
|
|
1625
|
-
isLoading && /* @__PURE__ */
|
|
1626
|
-
filterField && /* @__PURE__ */
|
|
1627
|
-
/* @__PURE__ */
|
|
1347
|
+
return /* @__PURE__ */ jsxs15("div", { className: "w-full mt-4 relative", children: [
|
|
1348
|
+
isLoading && /* @__PURE__ */ jsx28(Loader2, { className: "h-4 w-4 animate-spin absolute top-2 right-32" }),
|
|
1349
|
+
filterField && /* @__PURE__ */ jsxs15("div", { className: "flex items-center justify-between", children: [
|
|
1350
|
+
/* @__PURE__ */ jsx28(
|
|
1628
1351
|
Input,
|
|
1629
1352
|
{
|
|
1630
1353
|
placeholder: `Filter by ${filterField}...`,
|
|
@@ -1633,15 +1356,15 @@ function DataTable({
|
|
|
1633
1356
|
className: "max-w-sm"
|
|
1634
1357
|
}
|
|
1635
1358
|
),
|
|
1636
|
-
/* @__PURE__ */
|
|
1637
|
-
refresh && /* @__PURE__ */
|
|
1638
|
-
/* @__PURE__ */
|
|
1639
|
-
/* @__PURE__ */
|
|
1359
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex items-center space-x-4", children: [
|
|
1360
|
+
refresh && /* @__PURE__ */ jsx28(Button, { variant: "outline", onClick: refresh, children: /* @__PURE__ */ jsx28(Icon, { name: "RotateCcw", strokeWidth: 2, size: 20 }) }),
|
|
1361
|
+
/* @__PURE__ */ jsxs15(DropdownMenu, { children: [
|
|
1362
|
+
/* @__PURE__ */ jsx28(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs15(Button, { variant: "outline", children: [
|
|
1640
1363
|
"Columns ",
|
|
1641
|
-
/* @__PURE__ */
|
|
1364
|
+
/* @__PURE__ */ jsx28(ChevronDownIcon2, { className: "ml-2 h-4 w-4" })
|
|
1642
1365
|
] }) }),
|
|
1643
|
-
/* @__PURE__ */
|
|
1644
|
-
return /* @__PURE__ */
|
|
1366
|
+
/* @__PURE__ */ jsx28(DropdownMenuContent, { align: "end", children: table.getAllColumns().filter((column) => column.getCanHide()).map((column) => {
|
|
1367
|
+
return /* @__PURE__ */ jsx28(
|
|
1645
1368
|
DropdownMenuCheckboxItem,
|
|
1646
1369
|
{
|
|
1647
1370
|
className: "capitalize",
|
|
@@ -1655,24 +1378,24 @@ function DataTable({
|
|
|
1655
1378
|
] })
|
|
1656
1379
|
] })
|
|
1657
1380
|
] }),
|
|
1658
|
-
/* @__PURE__ */
|
|
1659
|
-
/* @__PURE__ */
|
|
1660
|
-
return /* @__PURE__ */
|
|
1381
|
+
/* @__PURE__ */ jsx28("div", { className: "rounded-md border mt-4", children: /* @__PURE__ */ jsxs15(Table, { children: [
|
|
1382
|
+
/* @__PURE__ */ jsx28(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx28(TableRow, { children: headerGroup.headers.map((header) => {
|
|
1383
|
+
return /* @__PURE__ */ jsx28(TableHead, { children: header.isPlaceholder ? null : flexRender(
|
|
1661
1384
|
header.column.columnDef.header,
|
|
1662
1385
|
header.getContext()
|
|
1663
1386
|
) }, header.id);
|
|
1664
1387
|
}) }, headerGroup.id)) }),
|
|
1665
|
-
/* @__PURE__ */
|
|
1388
|
+
/* @__PURE__ */ jsx28(TableBody, { children: table.getRowModel().rows?.length > 0 ? table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx28(
|
|
1666
1389
|
TableRow,
|
|
1667
1390
|
{
|
|
1668
1391
|
"data-state": row.getIsSelected() && "selected",
|
|
1669
|
-
children: row.getVisibleCells().map((cell) => /* @__PURE__ */
|
|
1392
|
+
children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx28(TableCell, { children: flexRender(
|
|
1670
1393
|
cell.column.columnDef.cell,
|
|
1671
1394
|
cell.getContext()
|
|
1672
1395
|
) }, cell.id))
|
|
1673
1396
|
},
|
|
1674
1397
|
row.id
|
|
1675
|
-
)) : /* @__PURE__ */
|
|
1398
|
+
)) : /* @__PURE__ */ jsx28(TableRow, { children: /* @__PURE__ */ jsx28(
|
|
1676
1399
|
TableCell,
|
|
1677
1400
|
{
|
|
1678
1401
|
colSpan: columns.length,
|
|
@@ -1680,18 +1403,18 @@ function DataTable({
|
|
|
1680
1403
|
}
|
|
1681
1404
|
) }) })
|
|
1682
1405
|
] }) }),
|
|
1683
|
-
/* @__PURE__ */
|
|
1684
|
-
table.getAllColumns().some((col) => col.id === "select") && /* @__PURE__ */
|
|
1406
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex items-center justify-end space-x-2 py-4", children: [
|
|
1407
|
+
table.getAllColumns().some((col) => col.id === "select") && /* @__PURE__ */ jsxs15("div", { className: "flex-1 text-sm text-muted-foreground", children: [
|
|
1685
1408
|
table.getFilteredSelectedRowModel().rows.length,
|
|
1686
1409
|
" of",
|
|
1687
1410
|
" ",
|
|
1688
1411
|
table.getFilteredRowModel().rows.length,
|
|
1689
1412
|
" row(s) selected."
|
|
1690
1413
|
] }),
|
|
1691
|
-
/* @__PURE__ */
|
|
1692
|
-
/* @__PURE__ */
|
|
1693
|
-
/* @__PURE__ */
|
|
1694
|
-
/* @__PURE__ */
|
|
1414
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex items-center space-x-6 lg:space-x-8", children: [
|
|
1415
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex items-center space-x-2", children: [
|
|
1416
|
+
/* @__PURE__ */ jsx28("p", { className: "text-sm font-medium", children: "Rows per page" }),
|
|
1417
|
+
/* @__PURE__ */ jsxs15(
|
|
1695
1418
|
Select,
|
|
1696
1419
|
{
|
|
1697
1420
|
value: `${table.getState().pagination.pageSize}`,
|
|
@@ -1699,26 +1422,26 @@ function DataTable({
|
|
|
1699
1422
|
table.setPageSize(Number(value));
|
|
1700
1423
|
},
|
|
1701
1424
|
children: [
|
|
1702
|
-
/* @__PURE__ */
|
|
1425
|
+
/* @__PURE__ */ jsx28(SelectTrigger, { className: "h-8 w-[70px]", children: /* @__PURE__ */ jsx28(
|
|
1703
1426
|
SelectValue,
|
|
1704
1427
|
{
|
|
1705
1428
|
placeholder: table.getState().pagination.pageSize
|
|
1706
1429
|
}
|
|
1707
1430
|
) }),
|
|
1708
|
-
/* @__PURE__ */
|
|
1431
|
+
/* @__PURE__ */ jsx28(SelectContent, { side: "top", children: [10, 20, 30, 40, 50].map((pageSize) => /* @__PURE__ */ jsx28(SelectItem, { value: `${pageSize}`, children: pageSize }, pageSize)) })
|
|
1709
1432
|
]
|
|
1710
1433
|
}
|
|
1711
1434
|
)
|
|
1712
1435
|
] }),
|
|
1713
|
-
/* @__PURE__ */
|
|
1436
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex w-[100px] items-center justify-center text-sm font-medium", children: [
|
|
1714
1437
|
"Page ",
|
|
1715
1438
|
table.getState().pagination.pageIndex + 1,
|
|
1716
1439
|
" of",
|
|
1717
1440
|
" ",
|
|
1718
1441
|
table.getPageCount()
|
|
1719
1442
|
] }),
|
|
1720
|
-
/* @__PURE__ */
|
|
1721
|
-
/* @__PURE__ */
|
|
1443
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex items-center space-x-2", children: [
|
|
1444
|
+
/* @__PURE__ */ jsxs15(
|
|
1722
1445
|
Button,
|
|
1723
1446
|
{
|
|
1724
1447
|
variant: "outline",
|
|
@@ -1726,12 +1449,12 @@ function DataTable({
|
|
|
1726
1449
|
onClick: () => table.setPageIndex(0),
|
|
1727
1450
|
disabled: !table.getCanPreviousPage(),
|
|
1728
1451
|
children: [
|
|
1729
|
-
/* @__PURE__ */
|
|
1730
|
-
/* @__PURE__ */
|
|
1452
|
+
/* @__PURE__ */ jsx28("span", { className: "sr-only", children: "Go to first page" }),
|
|
1453
|
+
/* @__PURE__ */ jsx28(DoubleArrowLeftIcon, { className: "h-4 w-4" })
|
|
1731
1454
|
]
|
|
1732
1455
|
}
|
|
1733
1456
|
),
|
|
1734
|
-
/* @__PURE__ */
|
|
1457
|
+
/* @__PURE__ */ jsxs15(
|
|
1735
1458
|
Button,
|
|
1736
1459
|
{
|
|
1737
1460
|
variant: "outline",
|
|
@@ -1739,12 +1462,12 @@ function DataTable({
|
|
|
1739
1462
|
onClick: () => table.previousPage(),
|
|
1740
1463
|
disabled: !table.getCanPreviousPage(),
|
|
1741
1464
|
children: [
|
|
1742
|
-
/* @__PURE__ */
|
|
1743
|
-
/* @__PURE__ */
|
|
1465
|
+
/* @__PURE__ */ jsx28("span", { className: "sr-only", children: "Go to previous page" }),
|
|
1466
|
+
/* @__PURE__ */ jsx28(ChevronLeftIcon, { className: "h-4 w-4" })
|
|
1744
1467
|
]
|
|
1745
1468
|
}
|
|
1746
1469
|
),
|
|
1747
|
-
/* @__PURE__ */
|
|
1470
|
+
/* @__PURE__ */ jsxs15(
|
|
1748
1471
|
Button,
|
|
1749
1472
|
{
|
|
1750
1473
|
variant: "outline",
|
|
@@ -1752,12 +1475,12 @@ function DataTable({
|
|
|
1752
1475
|
onClick: () => table.nextPage(),
|
|
1753
1476
|
disabled: !table.getCanNextPage(),
|
|
1754
1477
|
children: [
|
|
1755
|
-
/* @__PURE__ */
|
|
1756
|
-
/* @__PURE__ */
|
|
1478
|
+
/* @__PURE__ */ jsx28("span", { className: "sr-only", children: "Go to next page" }),
|
|
1479
|
+
/* @__PURE__ */ jsx28(ChevronRightIcon3, { className: "h-4 w-4" })
|
|
1757
1480
|
]
|
|
1758
1481
|
}
|
|
1759
1482
|
),
|
|
1760
|
-
/* @__PURE__ */
|
|
1483
|
+
/* @__PURE__ */ jsxs15(
|
|
1761
1484
|
Button,
|
|
1762
1485
|
{
|
|
1763
1486
|
variant: "outline",
|
|
@@ -1765,8 +1488,8 @@ function DataTable({
|
|
|
1765
1488
|
onClick: () => table.setPageIndex(table.getPageCount() - 1),
|
|
1766
1489
|
disabled: !table.getCanNextPage(),
|
|
1767
1490
|
children: [
|
|
1768
|
-
/* @__PURE__ */
|
|
1769
|
-
/* @__PURE__ */
|
|
1491
|
+
/* @__PURE__ */ jsx28("span", { className: "sr-only", children: "Go to last page" }),
|
|
1492
|
+
/* @__PURE__ */ jsx28(DoubleArrowRightIcon, { className: "h-4 w-4" })
|
|
1770
1493
|
]
|
|
1771
1494
|
}
|
|
1772
1495
|
)
|
|
@@ -3350,14 +3073,14 @@ function cleanEscapedString(input) {
|
|
|
3350
3073
|
|
|
3351
3074
|
// components/ui/calendar.tsx
|
|
3352
3075
|
import { DayPicker } from "react-day-picker";
|
|
3353
|
-
import { jsx as
|
|
3076
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
3354
3077
|
function Calendar({
|
|
3355
3078
|
className,
|
|
3356
3079
|
classNames,
|
|
3357
3080
|
showOutsideDays = true,
|
|
3358
3081
|
...props
|
|
3359
3082
|
}) {
|
|
3360
|
-
return /* @__PURE__ */
|
|
3083
|
+
return /* @__PURE__ */ jsx29(
|
|
3361
3084
|
DayPicker,
|
|
3362
3085
|
{
|
|
3363
3086
|
showOutsideDays,
|
|
@@ -3407,10 +3130,10 @@ function Calendar({
|
|
|
3407
3130
|
Calendar.displayName = "Calendar";
|
|
3408
3131
|
|
|
3409
3132
|
// components/form-controls/date-filter.tsx
|
|
3410
|
-
import { Fragment as
|
|
3133
|
+
import { Fragment as Fragment3, jsx as jsx30, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
3411
3134
|
function DateFilter({ className, date, setDate }) {
|
|
3412
|
-
return /* @__PURE__ */
|
|
3413
|
-
/* @__PURE__ */
|
|
3135
|
+
return /* @__PURE__ */ jsx30("div", { className: cn("grid gap-2", className), children: /* @__PURE__ */ jsxs16(Popover, { children: [
|
|
3136
|
+
/* @__PURE__ */ jsx30(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs16(
|
|
3414
3137
|
Button,
|
|
3415
3138
|
{
|
|
3416
3139
|
id: "date",
|
|
@@ -3420,17 +3143,17 @@ function DateFilter({ className, date, setDate }) {
|
|
|
3420
3143
|
!date && "text-muted-foreground"
|
|
3421
3144
|
),
|
|
3422
3145
|
children: [
|
|
3423
|
-
/* @__PURE__ */
|
|
3424
|
-
date?.from ? date.to ? /* @__PURE__ */
|
|
3146
|
+
/* @__PURE__ */ jsx30(CalendarIcon, { className: "mr-2 h-4 w-4" }),
|
|
3147
|
+
date?.from ? date.to ? /* @__PURE__ */ jsxs16(Fragment3, { children: [
|
|
3425
3148
|
format(date.from, "LLL dd, y"),
|
|
3426
3149
|
" -",
|
|
3427
3150
|
" ",
|
|
3428
3151
|
format(date.to, "LLL dd, y")
|
|
3429
|
-
] }) : format(date.from, "LLL dd, y") : /* @__PURE__ */
|
|
3152
|
+
] }) : format(date.from, "LLL dd, y") : /* @__PURE__ */ jsx30("span", { children: "Pick a date" })
|
|
3430
3153
|
]
|
|
3431
3154
|
}
|
|
3432
3155
|
) }),
|
|
3433
|
-
/* @__PURE__ */
|
|
3156
|
+
/* @__PURE__ */ jsx30(PopoverContent, { className: "w-auto p-0", align: "start", children: /* @__PURE__ */ jsx30(
|
|
3434
3157
|
Calendar,
|
|
3435
3158
|
{
|
|
3436
3159
|
initialFocus: true,
|
|
@@ -3446,7 +3169,7 @@ function DateFilter({ className, date, setDate }) {
|
|
|
3446
3169
|
|
|
3447
3170
|
// components/form-controls/dialog.tsx
|
|
3448
3171
|
import { icons as icons2 } from "lucide-react";
|
|
3449
|
-
import { jsx as
|
|
3172
|
+
import { jsx as jsx31, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
3450
3173
|
var Dialog2 = ({
|
|
3451
3174
|
title,
|
|
3452
3175
|
description,
|
|
@@ -3460,13 +3183,13 @@ var Dialog2 = ({
|
|
|
3460
3183
|
actions
|
|
3461
3184
|
}) => {
|
|
3462
3185
|
const IconComponent = icon ? icons2[icon] : null;
|
|
3463
|
-
return /* @__PURE__ */
|
|
3464
|
-
/* @__PURE__ */
|
|
3465
|
-
/* @__PURE__ */
|
|
3466
|
-
/* @__PURE__ */
|
|
3467
|
-
/* @__PURE__ */
|
|
3468
|
-
/* @__PURE__ */
|
|
3469
|
-
IconComponent && /* @__PURE__ */
|
|
3186
|
+
return /* @__PURE__ */ jsxs17(Dialog, { open, onOpenChange, children: [
|
|
3187
|
+
/* @__PURE__ */ jsx31(DialogTrigger, { children: trigger }),
|
|
3188
|
+
/* @__PURE__ */ jsxs17(DialogContent, { className, children: [
|
|
3189
|
+
/* @__PURE__ */ jsxs17(DialogHeader, { children: [
|
|
3190
|
+
/* @__PURE__ */ jsxs17(DialogTitle, { className: "capitalize flex items-center gap-2 justify-between pr-8", children: [
|
|
3191
|
+
/* @__PURE__ */ jsxs17("div", { className: "flex items-center gap-2", children: [
|
|
3192
|
+
IconComponent && /* @__PURE__ */ jsx31(
|
|
3470
3193
|
IconComponent,
|
|
3471
3194
|
{
|
|
3472
3195
|
size: 20,
|
|
@@ -3476,7 +3199,7 @@ var Dialog2 = ({
|
|
|
3476
3199
|
),
|
|
3477
3200
|
title
|
|
3478
3201
|
] }),
|
|
3479
|
-
actions && /* @__PURE__ */
|
|
3202
|
+
actions && /* @__PURE__ */ jsx31("div", { className: "flex items-center gap-2", children: actions.map((action) => /* @__PURE__ */ jsxs17(
|
|
3480
3203
|
Button2,
|
|
3481
3204
|
{
|
|
3482
3205
|
variant: action.type,
|
|
@@ -3485,8 +3208,8 @@ var Dialog2 = ({
|
|
|
3485
3208
|
disabled: action.disabled,
|
|
3486
3209
|
children: [
|
|
3487
3210
|
action.label,
|
|
3488
|
-
action.icon && /* @__PURE__ */
|
|
3489
|
-
|
|
3211
|
+
action.icon && /* @__PURE__ */ jsx31(
|
|
3212
|
+
Icon,
|
|
3490
3213
|
{
|
|
3491
3214
|
name: action.icon,
|
|
3492
3215
|
className: cn(action.iconClassName),
|
|
@@ -3499,7 +3222,7 @@ var Dialog2 = ({
|
|
|
3499
3222
|
action.label
|
|
3500
3223
|
)) })
|
|
3501
3224
|
] }),
|
|
3502
|
-
/* @__PURE__ */
|
|
3225
|
+
/* @__PURE__ */ jsx31(DialogDescription, { children: description })
|
|
3503
3226
|
] }),
|
|
3504
3227
|
children
|
|
3505
3228
|
] })
|
|
@@ -3509,11 +3232,11 @@ var Dialog2 = ({
|
|
|
3509
3232
|
// components/ui/drawer.tsx
|
|
3510
3233
|
import * as React20 from "react";
|
|
3511
3234
|
import { Drawer as DrawerPrimitive } from "vaul";
|
|
3512
|
-
import { jsx as
|
|
3235
|
+
import { jsx as jsx32, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
3513
3236
|
var Drawer = ({
|
|
3514
3237
|
shouldScaleBackground = true,
|
|
3515
3238
|
...props
|
|
3516
|
-
}) => /* @__PURE__ */
|
|
3239
|
+
}) => /* @__PURE__ */ jsx32(
|
|
3517
3240
|
DrawerPrimitive.Root,
|
|
3518
3241
|
{
|
|
3519
3242
|
shouldScaleBackground,
|
|
@@ -3524,7 +3247,7 @@ Drawer.displayName = "Drawer";
|
|
|
3524
3247
|
var DrawerTrigger = DrawerPrimitive.Trigger;
|
|
3525
3248
|
var DrawerPortal = DrawerPrimitive.Portal;
|
|
3526
3249
|
var DrawerClose = DrawerPrimitive.Close;
|
|
3527
|
-
var DrawerOverlay = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
3250
|
+
var DrawerOverlay = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32(
|
|
3528
3251
|
DrawerPrimitive.Overlay,
|
|
3529
3252
|
{
|
|
3530
3253
|
ref,
|
|
@@ -3533,9 +3256,9 @@ var DrawerOverlay = React20.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
3533
3256
|
}
|
|
3534
3257
|
));
|
|
3535
3258
|
DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;
|
|
3536
|
-
var DrawerContent = React20.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */
|
|
3537
|
-
/* @__PURE__ */
|
|
3538
|
-
/* @__PURE__ */
|
|
3259
|
+
var DrawerContent = React20.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs18(DrawerPortal, { children: [
|
|
3260
|
+
/* @__PURE__ */ jsx32(DrawerOverlay, {}),
|
|
3261
|
+
/* @__PURE__ */ jsxs18(
|
|
3539
3262
|
DrawerPrimitive.Content,
|
|
3540
3263
|
{
|
|
3541
3264
|
ref,
|
|
@@ -3545,7 +3268,7 @@ var DrawerContent = React20.forwardRef(({ className, children, ...props }, ref)
|
|
|
3545
3268
|
),
|
|
3546
3269
|
...props,
|
|
3547
3270
|
children: [
|
|
3548
|
-
/* @__PURE__ */
|
|
3271
|
+
/* @__PURE__ */ jsx32("div", { className: "mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted" }),
|
|
3549
3272
|
children
|
|
3550
3273
|
]
|
|
3551
3274
|
}
|
|
@@ -3555,7 +3278,7 @@ DrawerContent.displayName = "DrawerContent";
|
|
|
3555
3278
|
var DrawerHeader = ({
|
|
3556
3279
|
className,
|
|
3557
3280
|
...props
|
|
3558
|
-
}) => /* @__PURE__ */
|
|
3281
|
+
}) => /* @__PURE__ */ jsx32(
|
|
3559
3282
|
"div",
|
|
3560
3283
|
{
|
|
3561
3284
|
className: cn("grid gap-1.5 p-4 text-center sm:text-left", className),
|
|
@@ -3566,7 +3289,7 @@ DrawerHeader.displayName = "DrawerHeader";
|
|
|
3566
3289
|
var DrawerFooter = ({
|
|
3567
3290
|
className,
|
|
3568
3291
|
...props
|
|
3569
|
-
}) => /* @__PURE__ */
|
|
3292
|
+
}) => /* @__PURE__ */ jsx32(
|
|
3570
3293
|
"div",
|
|
3571
3294
|
{
|
|
3572
3295
|
className: cn("mt-auto flex flex-col gap-2 p-4", className),
|
|
@@ -3574,7 +3297,7 @@ var DrawerFooter = ({
|
|
|
3574
3297
|
}
|
|
3575
3298
|
);
|
|
3576
3299
|
DrawerFooter.displayName = "DrawerFooter";
|
|
3577
|
-
var DrawerTitle = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
3300
|
+
var DrawerTitle = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32(
|
|
3578
3301
|
DrawerPrimitive.Title,
|
|
3579
3302
|
{
|
|
3580
3303
|
ref,
|
|
@@ -3586,7 +3309,7 @@ var DrawerTitle = React20.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
3586
3309
|
}
|
|
3587
3310
|
));
|
|
3588
3311
|
DrawerTitle.displayName = DrawerPrimitive.Title.displayName;
|
|
3589
|
-
var DrawerDescription = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
3312
|
+
var DrawerDescription = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32(
|
|
3590
3313
|
DrawerPrimitive.Description,
|
|
3591
3314
|
{
|
|
3592
3315
|
ref,
|
|
@@ -3599,22 +3322,22 @@ DrawerDescription.displayName = DrawerPrimitive.Description.displayName;
|
|
|
3599
3322
|
// components/ui/scroll-area.tsx
|
|
3600
3323
|
import * as React21 from "react";
|
|
3601
3324
|
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
3602
|
-
import { jsx as
|
|
3603
|
-
var ScrollArea = React21.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */
|
|
3325
|
+
import { jsx as jsx33, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
3326
|
+
var ScrollArea = React21.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs19(
|
|
3604
3327
|
ScrollAreaPrimitive.Root,
|
|
3605
3328
|
{
|
|
3606
3329
|
ref,
|
|
3607
3330
|
className: cn("relative overflow-hidden", className),
|
|
3608
3331
|
...props,
|
|
3609
3332
|
children: [
|
|
3610
|
-
/* @__PURE__ */
|
|
3611
|
-
/* @__PURE__ */
|
|
3612
|
-
/* @__PURE__ */
|
|
3333
|
+
/* @__PURE__ */ jsx33(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
|
|
3334
|
+
/* @__PURE__ */ jsx33(ScrollBar, {}),
|
|
3335
|
+
/* @__PURE__ */ jsx33(ScrollAreaPrimitive.Corner, {})
|
|
3613
3336
|
]
|
|
3614
3337
|
}
|
|
3615
3338
|
));
|
|
3616
3339
|
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
|
|
3617
|
-
var ScrollBar = React21.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */
|
|
3340
|
+
var ScrollBar = React21.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx33(
|
|
3618
3341
|
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
3619
3342
|
{
|
|
3620
3343
|
ref,
|
|
@@ -3626,13 +3349,13 @@ var ScrollBar = React21.forwardRef(({ className, orientation = "vertical", ...pr
|
|
|
3626
3349
|
className
|
|
3627
3350
|
),
|
|
3628
3351
|
...props,
|
|
3629
|
-
children: /* @__PURE__ */
|
|
3352
|
+
children: /* @__PURE__ */ jsx33(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
|
|
3630
3353
|
}
|
|
3631
3354
|
));
|
|
3632
3355
|
ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
|
|
3633
3356
|
|
|
3634
3357
|
// components/form-controls/drawer.tsx
|
|
3635
|
-
import { jsx as
|
|
3358
|
+
import { jsx as jsx34, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
3636
3359
|
var Drawer2 = ({
|
|
3637
3360
|
title,
|
|
3638
3361
|
trigger,
|
|
@@ -3642,7 +3365,7 @@ var Drawer2 = ({
|
|
|
3642
3365
|
setOpenDrawer,
|
|
3643
3366
|
...props
|
|
3644
3367
|
}) => {
|
|
3645
|
-
return /* @__PURE__ */
|
|
3368
|
+
return /* @__PURE__ */ jsxs20(
|
|
3646
3369
|
Drawer,
|
|
3647
3370
|
{
|
|
3648
3371
|
direction: "right",
|
|
@@ -3650,11 +3373,11 @@ var Drawer2 = ({
|
|
|
3650
3373
|
onOpenChange: setOpenDrawer,
|
|
3651
3374
|
...props,
|
|
3652
3375
|
children: [
|
|
3653
|
-
trigger && /* @__PURE__ */
|
|
3654
|
-
/* @__PURE__ */
|
|
3655
|
-
/* @__PURE__ */
|
|
3656
|
-
/* @__PURE__ */
|
|
3657
|
-
/* @__PURE__ */
|
|
3376
|
+
trigger && /* @__PURE__ */ jsx34(DrawerTrigger, { children: trigger }),
|
|
3377
|
+
/* @__PURE__ */ jsx34(DrawerContent, { className: "h-screen top-0 right-0 left-auto mt-0 w-[500px] rounded-none", children: /* @__PURE__ */ jsx34(ScrollArea, { className: "h-screen", children: /* @__PURE__ */ jsxs20("div", { className: "mx-auto w-full p-5", children: [
|
|
3378
|
+
/* @__PURE__ */ jsxs20(DrawerHeader, { children: [
|
|
3379
|
+
/* @__PURE__ */ jsx34(DrawerTitle, { children: title }),
|
|
3380
|
+
/* @__PURE__ */ jsx34(DrawerDescription, { children: description })
|
|
3658
3381
|
] }),
|
|
3659
3382
|
children
|
|
3660
3383
|
] }) }) })
|
|
@@ -3664,16 +3387,16 @@ var Drawer2 = ({
|
|
|
3664
3387
|
};
|
|
3665
3388
|
|
|
3666
3389
|
// components/form-controls/dropdown-menu.tsx
|
|
3667
|
-
import { jsx as
|
|
3390
|
+
import { jsx as jsx35, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
3668
3391
|
var DropdownMenu2 = ({
|
|
3669
3392
|
trigger,
|
|
3670
3393
|
items,
|
|
3671
3394
|
className = "",
|
|
3672
3395
|
onClick
|
|
3673
3396
|
}) => {
|
|
3674
|
-
return /* @__PURE__ */
|
|
3675
|
-
/* @__PURE__ */
|
|
3676
|
-
/* @__PURE__ */
|
|
3397
|
+
return /* @__PURE__ */ jsxs21(DropdownMenu, { children: [
|
|
3398
|
+
/* @__PURE__ */ jsx35(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx35("div", { className, children: trigger }) }),
|
|
3399
|
+
/* @__PURE__ */ jsx35(DropdownMenuContent, { className: "cursor-pointer", children: items.map((item, index) => /* @__PURE__ */ jsx35(
|
|
3677
3400
|
DropdownMenuItem,
|
|
3678
3401
|
{
|
|
3679
3402
|
className: "cursor-pointer!",
|
|
@@ -3686,8 +3409,8 @@ var DropdownMenu2 = ({
|
|
|
3686
3409
|
};
|
|
3687
3410
|
|
|
3688
3411
|
// components/form-controls/duration-input.tsx
|
|
3689
|
-
import { useEffect as
|
|
3690
|
-
import { jsx as
|
|
3412
|
+
import { useEffect as useEffect2, useState as useState3 } from "react";
|
|
3413
|
+
import { jsx as jsx36, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
3691
3414
|
var unitOptions = [
|
|
3692
3415
|
{ label: "Seconds", value: "s", ns: 1e9 },
|
|
3693
3416
|
{ label: "Minutes", value: "m", ns: 6e10 },
|
|
@@ -3718,10 +3441,10 @@ function toGoCompatibleDuration(amount, unit) {
|
|
|
3718
3441
|
}
|
|
3719
3442
|
}
|
|
3720
3443
|
function DurationInput({ value, onChange }) {
|
|
3721
|
-
const [amount, setAmount] =
|
|
3722
|
-
const [unit, setUnit] =
|
|
3723
|
-
const [userInteracted, setUserInteracted] =
|
|
3724
|
-
|
|
3444
|
+
const [amount, setAmount] = useState3("");
|
|
3445
|
+
const [unit, setUnit] = useState3("h");
|
|
3446
|
+
const [userInteracted, setUserInteracted] = useState3(false);
|
|
3447
|
+
useEffect2(() => {
|
|
3725
3448
|
if (userInteracted) return;
|
|
3726
3449
|
if (value === void 0 || value === null || value === "") {
|
|
3727
3450
|
setAmount("");
|
|
@@ -3770,8 +3493,8 @@ function DurationInput({ value, onChange }) {
|
|
|
3770
3493
|
onChange("");
|
|
3771
3494
|
}
|
|
3772
3495
|
};
|
|
3773
|
-
return /* @__PURE__ */
|
|
3774
|
-
/* @__PURE__ */
|
|
3496
|
+
return /* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-2", children: [
|
|
3497
|
+
/* @__PURE__ */ jsx36(
|
|
3775
3498
|
Input,
|
|
3776
3499
|
{
|
|
3777
3500
|
type: "number",
|
|
@@ -3781,23 +3504,46 @@ function DurationInput({ value, onChange }) {
|
|
|
3781
3504
|
className: "w-20"
|
|
3782
3505
|
}
|
|
3783
3506
|
),
|
|
3784
|
-
/* @__PURE__ */
|
|
3785
|
-
/* @__PURE__ */
|
|
3786
|
-
/* @__PURE__ */
|
|
3507
|
+
/* @__PURE__ */ jsxs22(Select, { value: unit, onValueChange: handleUnitChange, children: [
|
|
3508
|
+
/* @__PURE__ */ jsx36(SelectTrigger, { className: "w-24", children: /* @__PURE__ */ jsx36(SelectValue, {}) }),
|
|
3509
|
+
/* @__PURE__ */ jsx36(SelectContent, { children: unitOptions.map((opt) => /* @__PURE__ */ jsx36(SelectItem, { value: opt.value, children: opt.label }, opt.value)) })
|
|
3787
3510
|
] })
|
|
3788
3511
|
] });
|
|
3789
3512
|
}
|
|
3790
3513
|
|
|
3791
3514
|
// components/form-controls/filter-combobox.tsx
|
|
3792
|
-
import { useState as
|
|
3515
|
+
import { useState as useState4 } from "react";
|
|
3793
3516
|
import { CheckIcon as CheckIcon4 } from "@radix-ui/react-icons";
|
|
3794
3517
|
|
|
3518
|
+
// components/ui/badge.tsx
|
|
3519
|
+
import { cva as cva4 } from "class-variance-authority";
|
|
3520
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
3521
|
+
var badgeVariants = cva4(
|
|
3522
|
+
"inline-flex items-center rounded-md 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",
|
|
3523
|
+
{
|
|
3524
|
+
variants: {
|
|
3525
|
+
variant: {
|
|
3526
|
+
default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
|
|
3527
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
3528
|
+
destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
|
|
3529
|
+
outline: "text-foreground"
|
|
3530
|
+
}
|
|
3531
|
+
},
|
|
3532
|
+
defaultVariants: {
|
|
3533
|
+
variant: "default"
|
|
3534
|
+
}
|
|
3535
|
+
}
|
|
3536
|
+
);
|
|
3537
|
+
function Badge({ className, variant, ...props }) {
|
|
3538
|
+
return /* @__PURE__ */ jsx37("div", { className: cn(badgeVariants({ variant }), className), ...props });
|
|
3539
|
+
}
|
|
3540
|
+
|
|
3795
3541
|
// components/ui/separator.tsx
|
|
3796
3542
|
import * as React22 from "react";
|
|
3797
3543
|
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
3798
|
-
import { jsx as
|
|
3544
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
3799
3545
|
var Separator3 = React22.forwardRef(
|
|
3800
|
-
({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */
|
|
3546
|
+
({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx38(
|
|
3801
3547
|
SeparatorPrimitive.Root,
|
|
3802
3548
|
{
|
|
3803
3549
|
ref,
|
|
@@ -3815,9 +3561,9 @@ var Separator3 = React22.forwardRef(
|
|
|
3815
3561
|
Separator3.displayName = SeparatorPrimitive.Root.displayName;
|
|
3816
3562
|
|
|
3817
3563
|
// components/form-controls/filter-combobox.tsx
|
|
3818
|
-
import { Fragment as
|
|
3564
|
+
import { Fragment as Fragment4, jsx as jsx39, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
3819
3565
|
function FilterCombobox({ title, options, clearLabel }) {
|
|
3820
|
-
const [selectedValues, setSelectedValues] =
|
|
3566
|
+
const [selectedValues, setSelectedValues] = useState4([]);
|
|
3821
3567
|
const handleValueSelect = (value) => {
|
|
3822
3568
|
if (selectedValues.some((v) => v.value === value.value)) {
|
|
3823
3569
|
setSelectedValues(selectedValues.filter((v) => v.value !== value.value));
|
|
@@ -3825,13 +3571,13 @@ function FilterCombobox({ title, options, clearLabel }) {
|
|
|
3825
3571
|
setSelectedValues([...selectedValues, value]);
|
|
3826
3572
|
}
|
|
3827
3573
|
};
|
|
3828
|
-
return /* @__PURE__ */
|
|
3829
|
-
/* @__PURE__ */
|
|
3830
|
-
/* @__PURE__ */
|
|
3574
|
+
return /* @__PURE__ */ jsxs23(Popover, { children: [
|
|
3575
|
+
/* @__PURE__ */ jsx39(PopoverTrigger, { asChild: true, className: "w-fit", children: /* @__PURE__ */ jsxs23(Button, { variant: "outline", size: "sm", className: "h-8 border-dashed", children: [
|
|
3576
|
+
/* @__PURE__ */ jsx39(Icon, { name: "CirclePlus", className: "h-4 w-4 mr-2" }),
|
|
3831
3577
|
title,
|
|
3832
|
-
selectedValues?.length > 0 && /* @__PURE__ */
|
|
3833
|
-
/* @__PURE__ */
|
|
3834
|
-
/* @__PURE__ */
|
|
3578
|
+
selectedValues?.length > 0 && /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-2 ml-2", children: [
|
|
3579
|
+
/* @__PURE__ */ jsx39(Separator3, { orientation: "vertical", className: "h-4" }),
|
|
3580
|
+
/* @__PURE__ */ jsx39(Fragment4, { children: selectedValues.length > 2 ? /* @__PURE__ */ jsxs23(
|
|
3835
3581
|
Badge,
|
|
3836
3582
|
{
|
|
3837
3583
|
variant: "secondary",
|
|
@@ -3843,7 +3589,7 @@ function FilterCombobox({ title, options, clearLabel }) {
|
|
|
3843
3589
|
}
|
|
3844
3590
|
) : options.filter(
|
|
3845
3591
|
(option) => selectedValues.some((item) => item.value === option.value)
|
|
3846
|
-
).map((option) => /* @__PURE__ */
|
|
3592
|
+
).map((option) => /* @__PURE__ */ jsx39(
|
|
3847
3593
|
Badge,
|
|
3848
3594
|
{
|
|
3849
3595
|
variant: "secondary",
|
|
@@ -3854,40 +3600,40 @@ function FilterCombobox({ title, options, clearLabel }) {
|
|
|
3854
3600
|
)) })
|
|
3855
3601
|
] })
|
|
3856
3602
|
] }) }),
|
|
3857
|
-
/* @__PURE__ */
|
|
3858
|
-
/* @__PURE__ */
|
|
3859
|
-
/* @__PURE__ */
|
|
3860
|
-
/* @__PURE__ */
|
|
3861
|
-
/* @__PURE__ */
|
|
3603
|
+
/* @__PURE__ */ jsx39(PopoverContent, { className: "w-[200px] p-0", align: "start", children: /* @__PURE__ */ jsxs23(Command, { children: [
|
|
3604
|
+
/* @__PURE__ */ jsx39(CommandInput, { placeholder: title }),
|
|
3605
|
+
/* @__PURE__ */ jsxs23(CommandList, { children: [
|
|
3606
|
+
/* @__PURE__ */ jsx39(CommandEmpty, { children: "No results found." }),
|
|
3607
|
+
/* @__PURE__ */ jsx39(CommandGroup, { children: options.map((option) => {
|
|
3862
3608
|
const isSelected = selectedValues.some(
|
|
3863
3609
|
(item) => item.value === option.value
|
|
3864
3610
|
);
|
|
3865
|
-
return /* @__PURE__ */
|
|
3611
|
+
return /* @__PURE__ */ jsxs23(
|
|
3866
3612
|
CommandItem,
|
|
3867
3613
|
{
|
|
3868
3614
|
onSelect: () => handleValueSelect(option),
|
|
3869
3615
|
className: "cursor-pointer",
|
|
3870
3616
|
children: [
|
|
3871
|
-
/* @__PURE__ */
|
|
3617
|
+
/* @__PURE__ */ jsx39(
|
|
3872
3618
|
"div",
|
|
3873
3619
|
{
|
|
3874
3620
|
className: cn(
|
|
3875
3621
|
"mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",
|
|
3876
3622
|
isSelected ? "bg-primary text-primary-foreground" : "opacity-50 [&_svg]:invisible"
|
|
3877
3623
|
),
|
|
3878
|
-
children: /* @__PURE__ */
|
|
3624
|
+
children: /* @__PURE__ */ jsx39(CheckIcon4, { className: cn("h-4 w-4") })
|
|
3879
3625
|
}
|
|
3880
3626
|
),
|
|
3881
|
-
option?.icon && /* @__PURE__ */
|
|
3882
|
-
/* @__PURE__ */
|
|
3627
|
+
option?.icon && /* @__PURE__ */ jsx39(Icon, { name: option?.icon, className: "mr-2 h-4 w-4 text-muted-foreground" }),
|
|
3628
|
+
/* @__PURE__ */ jsx39("span", { children: option.label })
|
|
3883
3629
|
]
|
|
3884
3630
|
},
|
|
3885
3631
|
option.value
|
|
3886
3632
|
);
|
|
3887
3633
|
}) }),
|
|
3888
|
-
selectedValues.length > 0 && /* @__PURE__ */
|
|
3889
|
-
/* @__PURE__ */
|
|
3890
|
-
/* @__PURE__ */
|
|
3634
|
+
selectedValues.length > 0 && /* @__PURE__ */ jsxs23(Fragment4, { children: [
|
|
3635
|
+
/* @__PURE__ */ jsx39(CommandSeparator, {}),
|
|
3636
|
+
/* @__PURE__ */ jsx39(CommandGroup, { children: /* @__PURE__ */ jsx39(
|
|
3891
3637
|
CommandItem,
|
|
3892
3638
|
{
|
|
3893
3639
|
onSelect: () => setSelectedValues([]),
|
|
@@ -3902,7 +3648,7 @@ function FilterCombobox({ title, options, clearLabel }) {
|
|
|
3902
3648
|
}
|
|
3903
3649
|
|
|
3904
3650
|
// components/form-controls/form-combobox.tsx
|
|
3905
|
-
import { jsx as
|
|
3651
|
+
import { jsx as jsx40, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
3906
3652
|
function FormCombobox({
|
|
3907
3653
|
title,
|
|
3908
3654
|
name,
|
|
@@ -3911,15 +3657,15 @@ function FormCombobox({
|
|
|
3911
3657
|
data,
|
|
3912
3658
|
label
|
|
3913
3659
|
}) {
|
|
3914
|
-
return /* @__PURE__ */
|
|
3660
|
+
return /* @__PURE__ */ jsx40(
|
|
3915
3661
|
FormField,
|
|
3916
3662
|
{
|
|
3917
3663
|
control,
|
|
3918
3664
|
name,
|
|
3919
3665
|
rules,
|
|
3920
|
-
render: ({ field }) => /* @__PURE__ */
|
|
3921
|
-
title && /* @__PURE__ */
|
|
3922
|
-
/* @__PURE__ */
|
|
3666
|
+
render: ({ field }) => /* @__PURE__ */ jsxs24(FormItem, { children: [
|
|
3667
|
+
title && /* @__PURE__ */ jsx40(FormLabel, { children: title }),
|
|
3668
|
+
/* @__PURE__ */ jsx40(FormControl, { children: /* @__PURE__ */ jsx40(
|
|
3923
3669
|
Combobox,
|
|
3924
3670
|
{
|
|
3925
3671
|
label,
|
|
@@ -3928,7 +3674,7 @@ function FormCombobox({
|
|
|
3928
3674
|
onChange: (value) => field.onChange(value)
|
|
3929
3675
|
}
|
|
3930
3676
|
) }),
|
|
3931
|
-
/* @__PURE__ */
|
|
3677
|
+
/* @__PURE__ */ jsx40(FormMessage, {})
|
|
3932
3678
|
] })
|
|
3933
3679
|
}
|
|
3934
3680
|
);
|
|
@@ -3936,7 +3682,7 @@ function FormCombobox({
|
|
|
3936
3682
|
|
|
3937
3683
|
// components/form-controls/form-layout.tsx
|
|
3938
3684
|
import { FormProvider as FormProvider2 } from "react-hook-form";
|
|
3939
|
-
import { jsx as
|
|
3685
|
+
import { jsx as jsx41, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
3940
3686
|
function FormLayout({
|
|
3941
3687
|
children,
|
|
3942
3688
|
formTitle,
|
|
@@ -3948,34 +3694,34 @@ function FormLayout({
|
|
|
3948
3694
|
PrimaryActionText,
|
|
3949
3695
|
CancelText
|
|
3950
3696
|
}) {
|
|
3951
|
-
return /* @__PURE__ */
|
|
3952
|
-
/* @__PURE__ */
|
|
3953
|
-
/* @__PURE__ */
|
|
3954
|
-
/* @__PURE__ */
|
|
3955
|
-
/* @__PURE__ */
|
|
3697
|
+
return /* @__PURE__ */ jsx41(FormProvider2, { ...form, children: /* @__PURE__ */ jsxs25("form", { onSubmit: onSave, className: `flex flex-col gap-6 ${className}`, children: [
|
|
3698
|
+
/* @__PURE__ */ jsxs25("div", { className: "flex items-center justify-between w-full border-b pb-6 border-border", children: [
|
|
3699
|
+
/* @__PURE__ */ jsxs25("div", { className: "flex flex-col", children: [
|
|
3700
|
+
/* @__PURE__ */ jsx41("p", { className: "font-semibold text-lg", children: formTitle }),
|
|
3701
|
+
/* @__PURE__ */ jsx41("p", { className: "text-gray-500", children: formDescription })
|
|
3956
3702
|
] }),
|
|
3957
|
-
/* @__PURE__ */
|
|
3958
|
-
/* @__PURE__ */
|
|
3959
|
-
/* @__PURE__ */
|
|
3703
|
+
/* @__PURE__ */ jsxs25("div", { className: "flex items-center gap-2", children: [
|
|
3704
|
+
/* @__PURE__ */ jsx41(Button2, { type: "button", onClick: onCanel, variant: "secondary", children: CancelText }),
|
|
3705
|
+
/* @__PURE__ */ jsx41(Button2, { type: "submit", children: PrimaryActionText })
|
|
3960
3706
|
] })
|
|
3961
3707
|
] }),
|
|
3962
3708
|
children,
|
|
3963
|
-
/* @__PURE__ */
|
|
3964
|
-
/* @__PURE__ */
|
|
3965
|
-
/* @__PURE__ */
|
|
3709
|
+
/* @__PURE__ */ jsxs25("div", { className: "flex items-center gap-2 justify-end", children: [
|
|
3710
|
+
/* @__PURE__ */ jsx41(Button2, { type: "button", onClick: onCanel, variant: "secondary", children: CancelText }),
|
|
3711
|
+
/* @__PURE__ */ jsx41(Button2, { type: "submit", children: PrimaryActionText })
|
|
3966
3712
|
] })
|
|
3967
3713
|
] }) });
|
|
3968
3714
|
}
|
|
3969
3715
|
|
|
3970
3716
|
// components/form-controls/form-row.tsx
|
|
3971
|
-
import { jsx as
|
|
3717
|
+
import { jsx as jsx42, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
3972
3718
|
function FormRow({ children, title, description }) {
|
|
3973
|
-
return /* @__PURE__ */
|
|
3974
|
-
/* @__PURE__ */
|
|
3975
|
-
/* @__PURE__ */
|
|
3976
|
-
/* @__PURE__ */
|
|
3719
|
+
return /* @__PURE__ */ jsxs26("div", { className: "grid grid-cols-3 w-full border-b pb-6 border-border", children: [
|
|
3720
|
+
/* @__PURE__ */ jsxs26("div", { className: "flex flex-col", children: [
|
|
3721
|
+
/* @__PURE__ */ jsx42("p", { className: "font-medium", children: title }),
|
|
3722
|
+
/* @__PURE__ */ jsx42("p", { className: "text-gray-500 text-sm", children: description })
|
|
3977
3723
|
] }),
|
|
3978
|
-
/* @__PURE__ */
|
|
3724
|
+
/* @__PURE__ */ jsx42("div", { className: "col-span-2 w-[80%]", children })
|
|
3979
3725
|
] });
|
|
3980
3726
|
}
|
|
3981
3727
|
|
|
@@ -3983,9 +3729,9 @@ function FormRow({ children, title, description }) {
|
|
|
3983
3729
|
import * as React23 from "react";
|
|
3984
3730
|
import { CheckIcon as CheckIcon5 } from "@radix-ui/react-icons";
|
|
3985
3731
|
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
3986
|
-
import { jsx as
|
|
3732
|
+
import { jsx as jsx43 } from "react/jsx-runtime";
|
|
3987
3733
|
var RadioGroup2 = React23.forwardRef(({ className, ...props }, ref) => {
|
|
3988
|
-
return /* @__PURE__ */
|
|
3734
|
+
return /* @__PURE__ */ jsx43(
|
|
3989
3735
|
RadioGroupPrimitive.Root,
|
|
3990
3736
|
{
|
|
3991
3737
|
className: cn("grid gap-2", className),
|
|
@@ -3996,7 +3742,7 @@ var RadioGroup2 = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
3996
3742
|
});
|
|
3997
3743
|
RadioGroup2.displayName = RadioGroupPrimitive.Root.displayName;
|
|
3998
3744
|
var RadioGroupItem = React23.forwardRef(({ className, ...props }, ref) => {
|
|
3999
|
-
return /* @__PURE__ */
|
|
3745
|
+
return /* @__PURE__ */ jsx43(
|
|
4000
3746
|
RadioGroupPrimitive.Item,
|
|
4001
3747
|
{
|
|
4002
3748
|
ref,
|
|
@@ -4005,7 +3751,7 @@ var RadioGroupItem = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
4005
3751
|
className
|
|
4006
3752
|
),
|
|
4007
3753
|
...props,
|
|
4008
|
-
children: /* @__PURE__ */
|
|
3754
|
+
children: /* @__PURE__ */ jsx43(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx43(CheckIcon5, { className: "h-3.5 w-3.5 fill-primary" }) })
|
|
4009
3755
|
}
|
|
4010
3756
|
);
|
|
4011
3757
|
});
|
|
@@ -4016,11 +3762,11 @@ import * as React24 from "react";
|
|
|
4016
3762
|
import * as SheetPrimitive from "@radix-ui/react-dialog";
|
|
4017
3763
|
import { Cross2Icon as Cross2Icon2 } from "@radix-ui/react-icons";
|
|
4018
3764
|
import { cva as cva5 } from "class-variance-authority";
|
|
4019
|
-
import { jsx as
|
|
3765
|
+
import { jsx as jsx44, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
4020
3766
|
var Sheet = SheetPrimitive.Root;
|
|
4021
3767
|
var SheetTrigger = SheetPrimitive.Trigger;
|
|
4022
3768
|
var SheetPortal = SheetPrimitive.Portal;
|
|
4023
|
-
var SheetOverlay = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
3769
|
+
var SheetOverlay = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx44(
|
|
4024
3770
|
SheetPrimitive.Overlay,
|
|
4025
3771
|
{
|
|
4026
3772
|
className: cn(
|
|
@@ -4048,18 +3794,18 @@ var sheetVariants = cva5(
|
|
|
4048
3794
|
}
|
|
4049
3795
|
}
|
|
4050
3796
|
);
|
|
4051
|
-
var SheetContent = React24.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */
|
|
4052
|
-
/* @__PURE__ */
|
|
4053
|
-
/* @__PURE__ */
|
|
3797
|
+
var SheetContent = React24.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs27(SheetPortal, { children: [
|
|
3798
|
+
/* @__PURE__ */ jsx44(SheetOverlay, {}),
|
|
3799
|
+
/* @__PURE__ */ jsxs27(
|
|
4054
3800
|
SheetPrimitive.Content,
|
|
4055
3801
|
{
|
|
4056
3802
|
ref,
|
|
4057
3803
|
className: cn(sheetVariants({ side }), className),
|
|
4058
3804
|
...props,
|
|
4059
3805
|
children: [
|
|
4060
|
-
/* @__PURE__ */
|
|
4061
|
-
/* @__PURE__ */
|
|
4062
|
-
/* @__PURE__ */
|
|
3806
|
+
/* @__PURE__ */ jsxs27(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
|
|
3807
|
+
/* @__PURE__ */ jsx44(Cross2Icon2, { className: "h-4 w-4" }),
|
|
3808
|
+
/* @__PURE__ */ jsx44("span", { className: "sr-only", children: "Close" })
|
|
4063
3809
|
] }),
|
|
4064
3810
|
children
|
|
4065
3811
|
]
|
|
@@ -4070,7 +3816,7 @@ SheetContent.displayName = SheetPrimitive.Content.displayName;
|
|
|
4070
3816
|
var SheetHeader = ({
|
|
4071
3817
|
className,
|
|
4072
3818
|
...props
|
|
4073
|
-
}) => /* @__PURE__ */
|
|
3819
|
+
}) => /* @__PURE__ */ jsx44(
|
|
4074
3820
|
"div",
|
|
4075
3821
|
{
|
|
4076
3822
|
className: cn(
|
|
@@ -4084,7 +3830,7 @@ SheetHeader.displayName = "SheetHeader";
|
|
|
4084
3830
|
var SheetFooter = ({
|
|
4085
3831
|
className,
|
|
4086
3832
|
...props
|
|
4087
|
-
}) => /* @__PURE__ */
|
|
3833
|
+
}) => /* @__PURE__ */ jsx44(
|
|
4088
3834
|
"div",
|
|
4089
3835
|
{
|
|
4090
3836
|
className: cn(
|
|
@@ -4095,7 +3841,7 @@ var SheetFooter = ({
|
|
|
4095
3841
|
}
|
|
4096
3842
|
);
|
|
4097
3843
|
SheetFooter.displayName = "SheetFooter";
|
|
4098
|
-
var SheetTitle = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
3844
|
+
var SheetTitle = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx44(
|
|
4099
3845
|
SheetPrimitive.Title,
|
|
4100
3846
|
{
|
|
4101
3847
|
ref,
|
|
@@ -4104,7 +3850,7 @@ var SheetTitle = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
4104
3850
|
}
|
|
4105
3851
|
));
|
|
4106
3852
|
SheetTitle.displayName = SheetPrimitive.Title.displayName;
|
|
4107
|
-
var SheetDescription = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
3853
|
+
var SheetDescription = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx44(
|
|
4108
3854
|
SheetPrimitive.Description,
|
|
4109
3855
|
{
|
|
4110
3856
|
ref,
|
|
@@ -4116,10 +3862,10 @@ SheetDescription.displayName = SheetPrimitive.Description.displayName;
|
|
|
4116
3862
|
|
|
4117
3863
|
// components/ui/textarea.tsx
|
|
4118
3864
|
import * as React25 from "react";
|
|
4119
|
-
import { jsx as
|
|
3865
|
+
import { jsx as jsx45 } from "react/jsx-runtime";
|
|
4120
3866
|
var Textarea = React25.forwardRef(
|
|
4121
3867
|
({ className, ...props }, ref) => {
|
|
4122
|
-
return /* @__PURE__ */
|
|
3868
|
+
return /* @__PURE__ */ jsx45(
|
|
4123
3869
|
"textarea",
|
|
4124
3870
|
{
|
|
4125
3871
|
className: cn(
|
|
@@ -4137,11 +3883,11 @@ Textarea.displayName = "Textarea";
|
|
|
4137
3883
|
// components/ui/tooltip.tsx
|
|
4138
3884
|
import * as React26 from "react";
|
|
4139
3885
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
4140
|
-
import { jsx as
|
|
3886
|
+
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
4141
3887
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
4142
3888
|
var Tooltip = TooltipPrimitive.Root;
|
|
4143
3889
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
4144
|
-
var TooltipContent = React26.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */
|
|
3890
|
+
var TooltipContent = React26.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx46(
|
|
4145
3891
|
TooltipPrimitive.Content,
|
|
4146
3892
|
{
|
|
4147
3893
|
ref,
|
|
@@ -4158,7 +3904,7 @@ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
|
4158
3904
|
// components/ui/chart.tsx
|
|
4159
3905
|
import * as React27 from "react";
|
|
4160
3906
|
import * as RechartsPrimitive from "recharts";
|
|
4161
|
-
import { Fragment as
|
|
3907
|
+
import { Fragment as Fragment5, jsx as jsx47, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
4162
3908
|
var THEMES = { light: "", dark: ".dark" };
|
|
4163
3909
|
var ChartContext = React27.createContext(null);
|
|
4164
3910
|
function useChart() {
|
|
@@ -4171,7 +3917,7 @@ function useChart() {
|
|
|
4171
3917
|
var ChartContainer = React27.forwardRef(({ id, className, children, config, ...props }, ref) => {
|
|
4172
3918
|
const uniqueId = React27.useId();
|
|
4173
3919
|
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
|
|
4174
|
-
return /* @__PURE__ */
|
|
3920
|
+
return /* @__PURE__ */ jsx47(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs28(
|
|
4175
3921
|
"div",
|
|
4176
3922
|
{
|
|
4177
3923
|
"data-chart": chartId,
|
|
@@ -4182,8 +3928,8 @@ var ChartContainer = React27.forwardRef(({ id, className, children, config, ...p
|
|
|
4182
3928
|
),
|
|
4183
3929
|
...props,
|
|
4184
3930
|
children: [
|
|
4185
|
-
/* @__PURE__ */
|
|
4186
|
-
/* @__PURE__ */
|
|
3931
|
+
/* @__PURE__ */ jsx47(ChartStyle, { id: chartId, config }),
|
|
3932
|
+
/* @__PURE__ */ jsx47(RechartsPrimitive.ResponsiveContainer, { children })
|
|
4187
3933
|
]
|
|
4188
3934
|
}
|
|
4189
3935
|
) });
|
|
@@ -4196,7 +3942,7 @@ var ChartStyle = ({ id, config }) => {
|
|
|
4196
3942
|
if (!colorConfig.length) {
|
|
4197
3943
|
return null;
|
|
4198
3944
|
}
|
|
4199
|
-
return /* @__PURE__ */
|
|
3945
|
+
return /* @__PURE__ */ jsx47(
|
|
4200
3946
|
"style",
|
|
4201
3947
|
{
|
|
4202
3948
|
dangerouslySetInnerHTML: {
|
|
@@ -4240,12 +3986,12 @@ var ChartTooltipContent = React27.forwardRef(
|
|
|
4240
3986
|
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
4241
3987
|
const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
|
|
4242
3988
|
if (labelFormatter) {
|
|
4243
|
-
return /* @__PURE__ */
|
|
3989
|
+
return /* @__PURE__ */ jsx47("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
|
|
4244
3990
|
}
|
|
4245
3991
|
if (!value) {
|
|
4246
3992
|
return null;
|
|
4247
3993
|
}
|
|
4248
|
-
return /* @__PURE__ */
|
|
3994
|
+
return /* @__PURE__ */ jsx47("div", { className: cn("font-medium", labelClassName), children: value });
|
|
4249
3995
|
}, [
|
|
4250
3996
|
label,
|
|
4251
3997
|
labelFormatter,
|
|
@@ -4259,7 +4005,7 @@ var ChartTooltipContent = React27.forwardRef(
|
|
|
4259
4005
|
return null;
|
|
4260
4006
|
}
|
|
4261
4007
|
const nestLabel = payload.length === 1 && indicator !== "dot";
|
|
4262
|
-
return /* @__PURE__ */
|
|
4008
|
+
return /* @__PURE__ */ jsxs28(
|
|
4263
4009
|
"div",
|
|
4264
4010
|
{
|
|
4265
4011
|
ref,
|
|
@@ -4269,19 +4015,19 @@ var ChartTooltipContent = React27.forwardRef(
|
|
|
4269
4015
|
),
|
|
4270
4016
|
children: [
|
|
4271
4017
|
!nestLabel ? tooltipLabel : null,
|
|
4272
|
-
/* @__PURE__ */
|
|
4018
|
+
/* @__PURE__ */ jsx47("div", { className: "grid gap-1.5", children: payload.map((item, index) => {
|
|
4273
4019
|
const key = `${nameKey || item.name || item.dataKey || "value"}`;
|
|
4274
4020
|
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
4275
4021
|
const indicatorColor = color || item.payload.fill || item.color;
|
|
4276
|
-
return /* @__PURE__ */
|
|
4022
|
+
return /* @__PURE__ */ jsx47(
|
|
4277
4023
|
"div",
|
|
4278
4024
|
{
|
|
4279
4025
|
className: cn(
|
|
4280
4026
|
"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",
|
|
4281
4027
|
indicator === "dot" && "items-center"
|
|
4282
4028
|
),
|
|
4283
|
-
children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */
|
|
4284
|
-
itemConfig?.icon ? /* @__PURE__ */
|
|
4029
|
+
children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs28(Fragment5, { children: [
|
|
4030
|
+
itemConfig?.icon ? /* @__PURE__ */ jsx47(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx47(
|
|
4285
4031
|
"div",
|
|
4286
4032
|
{
|
|
4287
4033
|
className: cn(
|
|
@@ -4299,7 +4045,7 @@ var ChartTooltipContent = React27.forwardRef(
|
|
|
4299
4045
|
}
|
|
4300
4046
|
}
|
|
4301
4047
|
),
|
|
4302
|
-
/* @__PURE__ */
|
|
4048
|
+
/* @__PURE__ */ jsxs28(
|
|
4303
4049
|
"div",
|
|
4304
4050
|
{
|
|
4305
4051
|
className: cn(
|
|
@@ -4307,11 +4053,11 @@ var ChartTooltipContent = React27.forwardRef(
|
|
|
4307
4053
|
nestLabel ? "items-end" : "items-center"
|
|
4308
4054
|
),
|
|
4309
4055
|
children: [
|
|
4310
|
-
/* @__PURE__ */
|
|
4056
|
+
/* @__PURE__ */ jsxs28("div", { className: "grid gap-1.5", children: [
|
|
4311
4057
|
nestLabel ? tooltipLabel : null,
|
|
4312
|
-
/* @__PURE__ */
|
|
4058
|
+
/* @__PURE__ */ jsx47("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })
|
|
4313
4059
|
] }),
|
|
4314
|
-
item.value && /* @__PURE__ */
|
|
4060
|
+
item.value && /* @__PURE__ */ jsx47("span", { className: "font-mono font-medium tabular-nums text-foreground", children: item.value.toLocaleString() })
|
|
4315
4061
|
]
|
|
4316
4062
|
}
|
|
4317
4063
|
)
|
|
@@ -4332,7 +4078,7 @@ var ChartLegendContent = React27.forwardRef(
|
|
|
4332
4078
|
if (!payload?.length) {
|
|
4333
4079
|
return null;
|
|
4334
4080
|
}
|
|
4335
|
-
return /* @__PURE__ */
|
|
4081
|
+
return /* @__PURE__ */ jsx47(
|
|
4336
4082
|
"div",
|
|
4337
4083
|
{
|
|
4338
4084
|
ref,
|
|
@@ -4344,14 +4090,14 @@ var ChartLegendContent = React27.forwardRef(
|
|
|
4344
4090
|
children: payload.map((item) => {
|
|
4345
4091
|
const key = `${nameKey || item.dataKey || "value"}`;
|
|
4346
4092
|
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
4347
|
-
return /* @__PURE__ */
|
|
4093
|
+
return /* @__PURE__ */ jsxs28(
|
|
4348
4094
|
"div",
|
|
4349
4095
|
{
|
|
4350
4096
|
className: cn(
|
|
4351
4097
|
"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"
|
|
4352
4098
|
),
|
|
4353
4099
|
children: [
|
|
4354
|
-
itemConfig?.icon && !hideIcon ? /* @__PURE__ */
|
|
4100
|
+
itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx47(itemConfig.icon, {}) : /* @__PURE__ */ jsx47(
|
|
4355
4101
|
"div",
|
|
4356
4102
|
{
|
|
4357
4103
|
className: "h-2 w-2 shrink-0 rounded-[2px]",
|
|
@@ -4388,8 +4134,8 @@ function getPayloadConfigFromPayload(config, payload, key) {
|
|
|
4388
4134
|
// components/ui/slider.tsx
|
|
4389
4135
|
import * as React28 from "react";
|
|
4390
4136
|
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
4391
|
-
import { jsx as
|
|
4392
|
-
var Slider = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
4137
|
+
import { jsx as jsx48, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
4138
|
+
var Slider = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs29(
|
|
4393
4139
|
SliderPrimitive.Root,
|
|
4394
4140
|
{
|
|
4395
4141
|
ref,
|
|
@@ -4399,15 +4145,15 @@ var Slider = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
|
|
|
4399
4145
|
),
|
|
4400
4146
|
...props,
|
|
4401
4147
|
children: [
|
|
4402
|
-
/* @__PURE__ */
|
|
4403
|
-
/* @__PURE__ */
|
|
4148
|
+
/* @__PURE__ */ jsx48(SliderPrimitive.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20", children: /* @__PURE__ */ jsx48(SliderPrimitive.Range, { className: "absolute h-full bg-primary" }) }),
|
|
4149
|
+
/* @__PURE__ */ jsx48(SliderPrimitive.Thumb, { className: "block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50" })
|
|
4404
4150
|
]
|
|
4405
4151
|
}
|
|
4406
4152
|
));
|
|
4407
4153
|
Slider.displayName = SliderPrimitive.Root.displayName;
|
|
4408
4154
|
|
|
4409
4155
|
// components/form-controls/form-with-action-buttons.tsx
|
|
4410
|
-
import { jsx as
|
|
4156
|
+
import { jsx as jsx49, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
4411
4157
|
var FormWithActionButtons = ({
|
|
4412
4158
|
children,
|
|
4413
4159
|
form,
|
|
@@ -4418,10 +4164,10 @@ var FormWithActionButtons = ({
|
|
|
4418
4164
|
secondaryButtonAction,
|
|
4419
4165
|
showSecondaryButton = false
|
|
4420
4166
|
}) => {
|
|
4421
|
-
return /* @__PURE__ */
|
|
4167
|
+
return /* @__PURE__ */ jsx49(Form, { ...form, children: /* @__PURE__ */ jsxs30("form", { onSubmit: form.handleSubmit(onSubmit), className: "space-y-4", children: [
|
|
4422
4168
|
children,
|
|
4423
|
-
/* @__PURE__ */
|
|
4424
|
-
showSecondaryButton && /* @__PURE__ */
|
|
4169
|
+
/* @__PURE__ */ jsxs30("div", { className: "flex justify-end gap-2", children: [
|
|
4170
|
+
showSecondaryButton && /* @__PURE__ */ jsx49(
|
|
4425
4171
|
Button,
|
|
4426
4172
|
{
|
|
4427
4173
|
variant: "link",
|
|
@@ -4430,29 +4176,29 @@ var FormWithActionButtons = ({
|
|
|
4430
4176
|
children: secondaryButtonText
|
|
4431
4177
|
}
|
|
4432
4178
|
),
|
|
4433
|
-
/* @__PURE__ */
|
|
4179
|
+
/* @__PURE__ */ jsx49(Button, { variant: "default", type: "submit", children: primaryButtonText })
|
|
4434
4180
|
] })
|
|
4435
4181
|
] }) });
|
|
4436
4182
|
};
|
|
4437
4183
|
|
|
4438
4184
|
// components/form-controls/helpers.tsx
|
|
4439
4185
|
import { File, FileSpreadsheet, FileText } from "lucide-react";
|
|
4440
|
-
import { jsx as
|
|
4186
|
+
import { jsx as jsx50 } from "react/jsx-runtime";
|
|
4441
4187
|
var getFileIcon = (fileName) => {
|
|
4442
4188
|
const extensionMatch = fileName.match(/\.([^.]+)$/);
|
|
4443
4189
|
const extension = extensionMatch ? extensionMatch[1].toLowerCase() : null;
|
|
4444
|
-
if (!extension) return /* @__PURE__ */
|
|
4190
|
+
if (!extension) return /* @__PURE__ */ jsx50(File, { className: "w-8 h-8 text-gray-500" });
|
|
4445
4191
|
switch (extension) {
|
|
4446
4192
|
case "pdf":
|
|
4447
|
-
return /* @__PURE__ */
|
|
4193
|
+
return /* @__PURE__ */ jsx50(File, { className: "w-8 h-8 text-red-500" });
|
|
4448
4194
|
case "doc":
|
|
4449
4195
|
case "docx":
|
|
4450
|
-
return /* @__PURE__ */
|
|
4196
|
+
return /* @__PURE__ */ jsx50(FileText, { className: "w-8 h-8 text-blue-500" });
|
|
4451
4197
|
case "xls":
|
|
4452
4198
|
case "xlsx":
|
|
4453
|
-
return /* @__PURE__ */
|
|
4199
|
+
return /* @__PURE__ */ jsx50(FileSpreadsheet, { className: "w-8 h-8 text-green-500" });
|
|
4454
4200
|
default:
|
|
4455
|
-
return /* @__PURE__ */
|
|
4201
|
+
return /* @__PURE__ */ jsx50(File, { className: "w-8 h-8 text-gray-500" });
|
|
4456
4202
|
}
|
|
4457
4203
|
};
|
|
4458
4204
|
var getFileName = (url) => {
|
|
@@ -4462,14 +4208,14 @@ var getFileName = (url) => {
|
|
|
4462
4208
|
};
|
|
4463
4209
|
|
|
4464
4210
|
// components/form-controls/icon-button.tsx
|
|
4465
|
-
import { jsx as
|
|
4211
|
+
import { jsx as jsx51, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
4466
4212
|
var IconButton = ({
|
|
4467
4213
|
item,
|
|
4468
4214
|
variant,
|
|
4469
4215
|
onClick,
|
|
4470
4216
|
...props
|
|
4471
4217
|
}) => {
|
|
4472
|
-
return /* @__PURE__ */
|
|
4218
|
+
return /* @__PURE__ */ jsxs31(
|
|
4473
4219
|
Button,
|
|
4474
4220
|
{
|
|
4475
4221
|
type: "button",
|
|
@@ -4478,8 +4224,8 @@ var IconButton = ({
|
|
|
4478
4224
|
onClick,
|
|
4479
4225
|
...props,
|
|
4480
4226
|
children: [
|
|
4481
|
-
/* @__PURE__ */
|
|
4482
|
-
/* @__PURE__ */
|
|
4227
|
+
/* @__PURE__ */ jsx51("span", { className: "w-4 flex items-center justify-center", children: /* @__PURE__ */ jsx51(Icon, { name: item.icon, size: 20, strokeWidth: 1 }) }),
|
|
4228
|
+
/* @__PURE__ */ jsx51("span", { className: "text-sm", children: item.title })
|
|
4483
4229
|
]
|
|
4484
4230
|
}
|
|
4485
4231
|
);
|
|
@@ -4487,7 +4233,7 @@ var IconButton = ({
|
|
|
4487
4233
|
|
|
4488
4234
|
// components/form-controls/input.tsx
|
|
4489
4235
|
import * as React29 from "react";
|
|
4490
|
-
import { jsx as
|
|
4236
|
+
import { jsx as jsx52, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
4491
4237
|
var Input2 = React29.forwardRef(
|
|
4492
4238
|
({
|
|
4493
4239
|
variant = "default",
|
|
@@ -4499,79 +4245,28 @@ var Input2 = React29.forwardRef(
|
|
|
4499
4245
|
rules,
|
|
4500
4246
|
...props
|
|
4501
4247
|
}, ref) => {
|
|
4502
|
-
return isFormField ? /* @__PURE__ */
|
|
4248
|
+
return isFormField ? /* @__PURE__ */ jsx52(
|
|
4503
4249
|
FormField,
|
|
4504
4250
|
{
|
|
4505
4251
|
control,
|
|
4506
4252
|
name,
|
|
4507
4253
|
rules,
|
|
4508
|
-
render: ({ field }) => /* @__PURE__ */
|
|
4509
|
-
title && /* @__PURE__ */
|
|
4510
|
-
/* @__PURE__ */
|
|
4511
|
-
/* @__PURE__ */
|
|
4254
|
+
render: ({ field }) => /* @__PURE__ */ jsxs32(FormItem, { children: [
|
|
4255
|
+
title && /* @__PURE__ */ jsx52(FormLabel, { children: title }),
|
|
4256
|
+
/* @__PURE__ */ jsx52(FormControl, { children: /* @__PURE__ */ jsx52(Input, { className, ...props, ...field }) }),
|
|
4257
|
+
/* @__PURE__ */ jsx52(FormMessage, {})
|
|
4512
4258
|
] })
|
|
4513
4259
|
}
|
|
4514
|
-
) : /* @__PURE__ */
|
|
4260
|
+
) : /* @__PURE__ */ jsx52(Input, { className, ref, ...props });
|
|
4515
4261
|
}
|
|
4516
4262
|
);
|
|
4517
4263
|
Input2.displayName = "Input";
|
|
4518
4264
|
|
|
4519
|
-
// components/form-controls/knowledge-graph-word-cloud.tsx
|
|
4520
|
-
import { useKnowledgeGraphContext } from "@elqnt/kg";
|
|
4521
|
-
import { Loader2 as Loader22 } from "lucide-react";
|
|
4522
|
-
import { Fragment as Fragment7, jsx as jsx54, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
4523
|
-
function KnowledgeGraphWordCloud() {
|
|
4524
|
-
const { labels } = useKnowledgeGraphContext();
|
|
4525
|
-
if (!labels || !(labels instanceof Array)) {
|
|
4526
|
-
return null;
|
|
4527
|
-
}
|
|
4528
|
-
const data = labels?.map((item) => {
|
|
4529
|
-
return { text: item?.label, value: item?.count };
|
|
4530
|
-
});
|
|
4531
|
-
return /* @__PURE__ */ jsxs34("div", { className: "rounded-xl border bg-card h-full shadow relative p-5", children: [
|
|
4532
|
-
/* @__PURE__ */ jsx54("p", { className: "capitalize mb-10 font-semibold text-xl", children: "Graph Distribution" }),
|
|
4533
|
-
!data ? /* @__PURE__ */ jsx54("div", { className: "absolute w-full flex justify-end", children: /* @__PURE__ */ jsx54(Loader22, { className: "animate-spin" }) }) : /* @__PURE__ */ jsx54(Fragment7, {})
|
|
4534
|
-
] });
|
|
4535
|
-
}
|
|
4536
|
-
|
|
4537
|
-
// components/form-controls/layout/org-selector.tsx
|
|
4538
|
-
import { useUserContext } from "@elqnt/auth";
|
|
4539
|
-
import { useEffect as useEffect4, useState as useState6 } from "react";
|
|
4540
|
-
import { jsx as jsx55 } from "react/jsx-runtime";
|
|
4541
|
-
function OrgSelector() {
|
|
4542
|
-
const { user, selectedOrgId, setSelectedOrgId } = useUserContext();
|
|
4543
|
-
const [orgAccess, setOrgAccess] = useState6([]);
|
|
4544
|
-
useEffect4(() => {
|
|
4545
|
-
if (user?.orgAccess) {
|
|
4546
|
-
const formattedOrgAccess = user.orgAccess.map((org) => ({
|
|
4547
|
-
value: org.orgId,
|
|
4548
|
-
label: org.orgTitle
|
|
4549
|
-
}));
|
|
4550
|
-
setOrgAccess(formattedOrgAccess);
|
|
4551
|
-
}
|
|
4552
|
-
}, [user]);
|
|
4553
|
-
const handleOrgIdChange = (value) => {
|
|
4554
|
-
setSelectedOrgId?.(value);
|
|
4555
|
-
};
|
|
4556
|
-
if (!user) {
|
|
4557
|
-
return null;
|
|
4558
|
-
}
|
|
4559
|
-
return /* @__PURE__ */ jsx55(
|
|
4560
|
-
Combobox,
|
|
4561
|
-
{
|
|
4562
|
-
defaultValue: selectedOrgId,
|
|
4563
|
-
options: orgAccess,
|
|
4564
|
-
onChange: handleOrgIdChange,
|
|
4565
|
-
label: "Select an Organization"
|
|
4566
|
-
}
|
|
4567
|
-
);
|
|
4568
|
-
}
|
|
4569
|
-
|
|
4570
4265
|
// components/form-controls/layout/page-header.tsx
|
|
4571
4266
|
import { ChevronLeft } from "lucide-react";
|
|
4572
4267
|
import Link from "next/link";
|
|
4573
4268
|
import { useRouter } from "next/navigation";
|
|
4574
|
-
import { jsx as
|
|
4269
|
+
import { jsx as jsx53, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
4575
4270
|
function PageHeader({
|
|
4576
4271
|
title,
|
|
4577
4272
|
description,
|
|
@@ -4609,7 +4304,7 @@ function PageHeader({
|
|
|
4609
4304
|
return "justify-between";
|
|
4610
4305
|
}
|
|
4611
4306
|
}
|
|
4612
|
-
return /* @__PURE__ */
|
|
4307
|
+
return /* @__PURE__ */ jsxs33(
|
|
4613
4308
|
"div",
|
|
4614
4309
|
{
|
|
4615
4310
|
className: cn(
|
|
@@ -4617,25 +4312,25 @@ function PageHeader({
|
|
|
4617
4312
|
getJustifyClass()
|
|
4618
4313
|
),
|
|
4619
4314
|
children: [
|
|
4620
|
-
/* @__PURE__ */
|
|
4621
|
-
/* @__PURE__ */
|
|
4622
|
-
goBackLink && /* @__PURE__ */
|
|
4623
|
-
showBack && !goBackLink && /* @__PURE__ */
|
|
4315
|
+
/* @__PURE__ */ jsxs33("div", { children: [
|
|
4316
|
+
/* @__PURE__ */ jsx53("div", { children: /* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-2", children: [
|
|
4317
|
+
goBackLink && /* @__PURE__ */ jsx53(Link, { href: goBackLink, children: /* @__PURE__ */ jsx53(ChevronLeft, { className: "h-4 w-4" }) }),
|
|
4318
|
+
showBack && !goBackLink && /* @__PURE__ */ jsx53(
|
|
4624
4319
|
"button",
|
|
4625
4320
|
{
|
|
4626
4321
|
onClick: handleBack,
|
|
4627
4322
|
className: "h-8 w-8 p-0 flex items-center justify-center rounded-md border border-gray-200 hover:bg-gray-50 transition-colors",
|
|
4628
|
-
children: /* @__PURE__ */
|
|
4323
|
+
children: /* @__PURE__ */ jsx53(ChevronLeft, { className: "h-4 w-4" })
|
|
4629
4324
|
}
|
|
4630
4325
|
),
|
|
4631
|
-
titleComponent ?? (title && /* @__PURE__ */
|
|
4326
|
+
titleComponent ?? (title && /* @__PURE__ */ jsx53("h2", { className: "font-semibold text-lg text-primary p-0 m-0", children: title }))
|
|
4632
4327
|
] }) }),
|
|
4633
|
-
description && /* @__PURE__ */
|
|
4328
|
+
description && /* @__PURE__ */ jsx53("p", { className: "text-sm text-gray-500", children: description })
|
|
4634
4329
|
] }),
|
|
4635
|
-
/* @__PURE__ */
|
|
4330
|
+
/* @__PURE__ */ jsxs33("div", { className: "flex gap-2 items-center", children: [
|
|
4636
4331
|
rightSideComponent,
|
|
4637
4332
|
actions?.map(
|
|
4638
|
-
(action, index) => action.href ? /* @__PURE__ */
|
|
4333
|
+
(action, index) => action.href ? /* @__PURE__ */ jsx53(Link, { href: action.href, children: /* @__PURE__ */ jsx53(Button2, { variant: action.type, children: action.label }) }, index) : /* @__PURE__ */ jsx53(Button2, { variant: action.type, onClick: action.onAction, children: action.label }, index)
|
|
4639
4334
|
)
|
|
4640
4335
|
] })
|
|
4641
4336
|
]
|
|
@@ -4643,17 +4338,11 @@ function PageHeader({
|
|
|
4643
4338
|
);
|
|
4644
4339
|
}
|
|
4645
4340
|
|
|
4646
|
-
// components/form-controls/layout/left-nav.tsx
|
|
4647
|
-
import { useUserContext as useUserContext2 } from "@elqnt/auth";
|
|
4648
|
-
import Link3 from "next/link";
|
|
4649
|
-
import { usePathname, useRouter as useRouter3 } from "next/navigation";
|
|
4650
|
-
import { useEffect as useEffect5, useState as useState7 } from "react";
|
|
4651
|
-
|
|
4652
4341
|
// components/form-controls/layout/profile-menu.tsx
|
|
4653
4342
|
import { signOut } from "next-auth/react";
|
|
4654
4343
|
import Link2 from "next/link";
|
|
4655
4344
|
import { useRouter as useRouter2 } from "next/navigation";
|
|
4656
|
-
import { jsx as
|
|
4345
|
+
import { jsx as jsx54, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
4657
4346
|
function ProfileMenu({ children, pathName }) {
|
|
4658
4347
|
const router = useRouter2();
|
|
4659
4348
|
const handleSignOut = async () => {
|
|
@@ -4675,9 +4364,9 @@ function ProfileMenu({ children, pathName }) {
|
|
|
4675
4364
|
onClick: handleSignOut
|
|
4676
4365
|
}
|
|
4677
4366
|
];
|
|
4678
|
-
return /* @__PURE__ */
|
|
4679
|
-
/* @__PURE__ */
|
|
4680
|
-
/* @__PURE__ */
|
|
4367
|
+
return /* @__PURE__ */ jsxs34(Popover, { children: [
|
|
4368
|
+
/* @__PURE__ */ jsx54(PopoverTrigger, { asChild: true, children }),
|
|
4369
|
+
/* @__PURE__ */ jsx54(PopoverContent, { className: "p-0! flex flex-col", children: links.map((link) => /* @__PURE__ */ jsxs34(
|
|
4681
4370
|
Link2,
|
|
4682
4371
|
{
|
|
4683
4372
|
href: link?.href,
|
|
@@ -4685,7 +4374,7 @@ function ProfileMenu({ children, pathName }) {
|
|
|
4685
4374
|
className: `cursor-pointer w-full hover:bg-primary/10 hover:text-primary p-4 flex items-center gap-4 text-gray-500
|
|
4686
4375
|
${pathName.includes(link?.href) && "bg-primary/10 text-primary"}`,
|
|
4687
4376
|
children: [
|
|
4688
|
-
/* @__PURE__ */
|
|
4377
|
+
/* @__PURE__ */ jsx54(Icon, { name: link?.icon, size: 20 }),
|
|
4689
4378
|
link?.title
|
|
4690
4379
|
]
|
|
4691
4380
|
},
|
|
@@ -4694,188 +4383,10 @@ function ProfileMenu({ children, pathName }) {
|
|
|
4694
4383
|
] });
|
|
4695
4384
|
}
|
|
4696
4385
|
|
|
4697
|
-
// components/form-controls/layout/left-nav.tsx
|
|
4698
|
-
import { Fragment as Fragment8, jsx as jsx58, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
4699
|
-
var articles = [
|
|
4700
|
-
{ key: "getting-started", title: "Getting Started", href: "#" },
|
|
4701
|
-
{ key: "helpdesk", title: "Helpdesk", href: "#" }
|
|
4702
|
-
];
|
|
4703
|
-
function LeftNav({
|
|
4704
|
-
fullMenuItems,
|
|
4705
|
-
menuItems,
|
|
4706
|
-
pageTitle,
|
|
4707
|
-
ExpandedLogo,
|
|
4708
|
-
Logo
|
|
4709
|
-
}) {
|
|
4710
|
-
const router = useRouter3();
|
|
4711
|
-
const pathName = usePathname();
|
|
4712
|
-
const { user, selectedOrgId, selectedOrg } = useUserContext2();
|
|
4713
|
-
const [isExpanded, setIsExpanded] = useState7(() => {
|
|
4714
|
-
const stored = localStorage.getItem("isExpanded");
|
|
4715
|
-
return stored === null ? true : stored === "true";
|
|
4716
|
-
});
|
|
4717
|
-
const [apps, setApps] = useState7([]);
|
|
4718
|
-
const [items, setItems] = useState7(menuItems);
|
|
4719
|
-
useEffect5(() => {
|
|
4720
|
-
setItems(menuItems);
|
|
4721
|
-
}, [menuItems]);
|
|
4722
|
-
useEffect5(() => {
|
|
4723
|
-
if (!user || !selectedOrgId || !selectedOrg) return;
|
|
4724
|
-
const orgAccess = user.orgAccess?.find(
|
|
4725
|
-
(org) => org.orgId === selectedOrgId
|
|
4726
|
-
);
|
|
4727
|
-
if (!orgAccess) return;
|
|
4728
|
-
const apps2 = fullMenuItems?.filter(
|
|
4729
|
-
(item) => selectedOrg.apps?.includes(item.key)
|
|
4730
|
-
);
|
|
4731
|
-
setApps(apps2);
|
|
4732
|
-
}, [user, selectedOrgId, selectedOrg]);
|
|
4733
|
-
useEffect5(() => {
|
|
4734
|
-
localStorage.setItem("isExpanded", isExpanded.toString());
|
|
4735
|
-
}, [isExpanded]);
|
|
4736
|
-
return /* @__PURE__ */ jsx58(
|
|
4737
|
-
"div",
|
|
4738
|
-
{
|
|
4739
|
-
style: { height: "calc(100vh - 32px)" },
|
|
4740
|
-
className: `relative pt-4 ${isExpanded ? "min-w-72" : "min-w-16"} transition-width duration-300 rounded-lg text-gray-500 sticky top-4 bg-white`,
|
|
4741
|
-
children: /* @__PURE__ */ jsx58(TooltipProvider, { children: /* @__PURE__ */ jsxs37("div", { className: "absolute top-0 flex flex-col gap-8 justify-between h-full w-full duration-300 ease-in-out sc-card bg-white! p-3 overflow-y-scroll hide-scrollbar", children: [
|
|
4742
|
-
/* @__PURE__ */ jsxs37(
|
|
4743
|
-
"div",
|
|
4744
|
-
{
|
|
4745
|
-
className: `flex flex-col gap-1 ${!isExpanded && "items-center"}`,
|
|
4746
|
-
children: [
|
|
4747
|
-
/* @__PURE__ */ jsxs37("div", { className: "cursor-pointer flex items-center justify-between mb-4 w-full", children: [
|
|
4748
|
-
/* @__PURE__ */ jsx58(
|
|
4749
|
-
"div",
|
|
4750
|
-
{
|
|
4751
|
-
onClick: () => isExpanded ? router.push("/") : setIsExpanded(true),
|
|
4752
|
-
children: isExpanded ? /* @__PURE__ */ jsx58(ExpandedLogo, {}) : /* @__PURE__ */ jsx58(Logo, {})
|
|
4753
|
-
}
|
|
4754
|
-
),
|
|
4755
|
-
isExpanded && /* @__PURE__ */ jsx58("span", { onClick: () => setIsExpanded(false), children: /* @__PURE__ */ jsx58(Icon2, { name: "ChevronsLeftRight" }) })
|
|
4756
|
-
] }),
|
|
4757
|
-
items ? /* @__PURE__ */ jsxs37(Fragment8, { children: [
|
|
4758
|
-
/* @__PURE__ */ jsxs37(
|
|
4759
|
-
"div",
|
|
4760
|
-
{
|
|
4761
|
-
onClick: () => setItems(void 0),
|
|
4762
|
-
className: "flex items-center px-1 gap-2 cursor-pointer mb-4 text-lg",
|
|
4763
|
-
children: [
|
|
4764
|
-
/* @__PURE__ */ jsx58(Icon2, { name: "ArrowLeft", size: 19 }),
|
|
4765
|
-
isExpanded && /* @__PURE__ */ jsx58("span", { children: pageTitle })
|
|
4766
|
-
]
|
|
4767
|
-
}
|
|
4768
|
-
),
|
|
4769
|
-
menuItems?.map((item) => /* @__PURE__ */ jsx58(
|
|
4770
|
-
Link3,
|
|
4771
|
-
{
|
|
4772
|
-
href: item.href,
|
|
4773
|
-
className: `flex items-center gap-2 cursor-pointer w-full text-sm rounded-lg py-3 ${isExpanded ? "pl-2 hover:bg-primary/10 hover:text-primary" : "pl-0 justify-center"}
|
|
4774
|
-
${item.href && (item.href?.split("/").length > 2 ? pathName?.includes(item.href) ?? "" : pathName === item.href) && isExpanded ? "bg-primary/10 text-primary" : ""}
|
|
4775
|
-
`,
|
|
4776
|
-
children: isExpanded ? /* @__PURE__ */ jsxs37(Fragment8, { children: [
|
|
4777
|
-
/* @__PURE__ */ jsx58(Icon2, { name: item.icon, size: 19 }),
|
|
4778
|
-
/* @__PURE__ */ jsx58("span", { children: item.title })
|
|
4779
|
-
] }) : /* @__PURE__ */ jsxs37(Tooltip, { delayDuration: 0, children: [
|
|
4780
|
-
/* @__PURE__ */ jsx58(TooltipTrigger, { children: /* @__PURE__ */ jsx58(Icon2, { name: item.icon }) }),
|
|
4781
|
-
/* @__PURE__ */ jsx58(TooltipContent, { side: "right", children: /* @__PURE__ */ jsx58("p", { children: item.title }) })
|
|
4782
|
-
] })
|
|
4783
|
-
},
|
|
4784
|
-
item.title
|
|
4785
|
-
))
|
|
4786
|
-
] }) : isExpanded ? /* @__PURE__ */ jsxs37(Fragment8, { children: [
|
|
4787
|
-
/* @__PURE__ */ jsxs37("div", { id: "menu-row", children: [
|
|
4788
|
-
/* @__PURE__ */ jsx58("h2", { className: "text-xl font-semibold", children: "Apps" }),
|
|
4789
|
-
/* @__PURE__ */ jsx58("div", { className: "grid grid-cols-2 gap-2 mt-6", children: apps.filter((item) => item.key !== "home").map((item) => /* @__PURE__ */ jsx58(
|
|
4790
|
-
IconButton,
|
|
4791
|
-
{
|
|
4792
|
-
item,
|
|
4793
|
-
variant: "ghost",
|
|
4794
|
-
onClick: () => {
|
|
4795
|
-
router.push(item.href);
|
|
4796
|
-
setItems(menuItems);
|
|
4797
|
-
}
|
|
4798
|
-
},
|
|
4799
|
-
item.key
|
|
4800
|
-
)) })
|
|
4801
|
-
] }),
|
|
4802
|
-
/* @__PURE__ */ jsxs37("div", { id: "help-row", className: "mt-12 ml-2", children: [
|
|
4803
|
-
/* @__PURE__ */ jsx58("h2", { className: "text-xl font-semibold", children: "Help" }),
|
|
4804
|
-
/* @__PURE__ */ jsx58("div", { className: "mt-6", children: /* @__PURE__ */ jsx58(Input, { placeholder: "Search help content" }) }),
|
|
4805
|
-
/* @__PURE__ */ jsx58("ul", { className: "mt-6 ml-4 list-disc", children: articles.map((item) => /* @__PURE__ */ jsx58("li", { children: /* @__PURE__ */ jsx58(
|
|
4806
|
-
Link3,
|
|
4807
|
-
{
|
|
4808
|
-
href: item.href,
|
|
4809
|
-
className: "block mb-2 underline",
|
|
4810
|
-
onClick: () => setIsExpanded(false),
|
|
4811
|
-
children: item.title
|
|
4812
|
-
}
|
|
4813
|
-
) }, item.key)) })
|
|
4814
|
-
] })
|
|
4815
|
-
] }) : /* @__PURE__ */ jsx58("div", { className: "flex flex-col gap-6 mt-2", children: apps?.map((item) => /* @__PURE__ */ jsxs37(Tooltip, { delayDuration: 0, children: [
|
|
4816
|
-
/* @__PURE__ */ jsx58(TooltipTrigger, { children: /* @__PURE__ */ jsx58(
|
|
4817
|
-
"div",
|
|
4818
|
-
{
|
|
4819
|
-
onClick: () => {
|
|
4820
|
-
router.push(item.href);
|
|
4821
|
-
setItems(menuItems);
|
|
4822
|
-
},
|
|
4823
|
-
children: /* @__PURE__ */ jsx58(Icon2, { name: item.icon })
|
|
4824
|
-
}
|
|
4825
|
-
) }),
|
|
4826
|
-
/* @__PURE__ */ jsx58(TooltipContent, { side: "right", children: /* @__PURE__ */ jsx58("p", { children: item.title }) })
|
|
4827
|
-
] }, item.key)) })
|
|
4828
|
-
]
|
|
4829
|
-
}
|
|
4830
|
-
),
|
|
4831
|
-
/* @__PURE__ */ jsxs37("div", { children: [
|
|
4832
|
-
isExpanded && /* @__PURE__ */ jsx58("div", { className: "mb-2", children: /* @__PURE__ */ jsx58(OrgSelector, {}) }),
|
|
4833
|
-
/* @__PURE__ */ jsxs37(
|
|
4834
|
-
Link3,
|
|
4835
|
-
{
|
|
4836
|
-
href: "/admin/settings",
|
|
4837
|
-
className: `flex items-center gap-4 cursor-pointer w-full rounded-lg py-2 mb-1 ${isExpanded ? "pl-2 hover:bg-primary/10 hover:text-primary" : "pl-0"}
|
|
4838
|
-
${pathName?.includes("/settings") && isExpanded ? "bg-primary/10 text-primary" : ""}
|
|
4839
|
-
`,
|
|
4840
|
-
children: [
|
|
4841
|
-
/* @__PURE__ */ jsx58(Icon2, { name: "Settings" }),
|
|
4842
|
-
isExpanded && /* @__PURE__ */ jsx58("span", { children: "Settings" })
|
|
4843
|
-
]
|
|
4844
|
-
}
|
|
4845
|
-
),
|
|
4846
|
-
/* @__PURE__ */ jsxs37(
|
|
4847
|
-
Link3,
|
|
4848
|
-
{
|
|
4849
|
-
href: "/admin/help",
|
|
4850
|
-
className: `flex items-center gap-4 cursor-pointer w-full rounded-lg py-2 mb-1 ${isExpanded ? "pl-2 hover:bg-primary/10 hover:text-primary" : "pl-0"}
|
|
4851
|
-
${pathName?.includes("/help") && isExpanded ? "bg-primary/10 text-primary" : ""}
|
|
4852
|
-
`,
|
|
4853
|
-
children: [
|
|
4854
|
-
/* @__PURE__ */ jsx58(Icon2, { name: "HeartHandshake" }),
|
|
4855
|
-
isExpanded && /* @__PURE__ */ jsx58("span", { children: "Help" })
|
|
4856
|
-
]
|
|
4857
|
-
}
|
|
4858
|
-
),
|
|
4859
|
-
/* @__PURE__ */ jsx58(ProfileMenu, { pathName: pathName ?? "", children: /* @__PURE__ */ jsxs37(
|
|
4860
|
-
"div",
|
|
4861
|
-
{
|
|
4862
|
-
className: `flex items-center gap-4 cursor-pointer w-full rounded-lg py-2 ${isExpanded ? "pl-2 hover:bg-primary/10 hover:text-primary" : "pl-0"}`,
|
|
4863
|
-
children: [
|
|
4864
|
-
/* @__PURE__ */ jsx58(Icon2, { name: "User" }),
|
|
4865
|
-
isExpanded && /* @__PURE__ */ jsx58("span", { children: user?.firstName })
|
|
4866
|
-
]
|
|
4867
|
-
}
|
|
4868
|
-
) })
|
|
4869
|
-
] })
|
|
4870
|
-
] }) })
|
|
4871
|
-
}
|
|
4872
|
-
);
|
|
4873
|
-
}
|
|
4874
|
-
|
|
4875
4386
|
// components/form-controls/multi-select.tsx
|
|
4876
|
-
import { Check as Check2, X
|
|
4877
|
-
import { useState as
|
|
4878
|
-
import { jsx as
|
|
4387
|
+
import { Check as Check2, X } from "lucide-react";
|
|
4388
|
+
import { useState as useState5 } from "react";
|
|
4389
|
+
import { jsx as jsx55, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
4879
4390
|
var MultiSelect = ({
|
|
4880
4391
|
defaultValue = [],
|
|
4881
4392
|
placeholder,
|
|
@@ -4883,8 +4394,8 @@ var MultiSelect = ({
|
|
|
4883
4394
|
className = "",
|
|
4884
4395
|
onValueChange
|
|
4885
4396
|
}) => {
|
|
4886
|
-
const [open, setOpen] =
|
|
4887
|
-
const [selectedValues, setSelectedValues] =
|
|
4397
|
+
const [open, setOpen] = useState5(false);
|
|
4398
|
+
const [selectedValues, setSelectedValues] = useState5(defaultValue);
|
|
4888
4399
|
const handleSelect = (value) => {
|
|
4889
4400
|
let updatedValues;
|
|
4890
4401
|
if (selectedValues.includes(value)) {
|
|
@@ -4901,17 +4412,17 @@ var MultiSelect = ({
|
|
|
4901
4412
|
setSelectedValues(updatedValues);
|
|
4902
4413
|
onValueChange(updatedValues);
|
|
4903
4414
|
};
|
|
4904
|
-
return /* @__PURE__ */
|
|
4905
|
-
/* @__PURE__ */
|
|
4415
|
+
return /* @__PURE__ */ jsxs35(Popover, { open, onOpenChange: setOpen, children: [
|
|
4416
|
+
/* @__PURE__ */ jsx55(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx55(
|
|
4906
4417
|
Button,
|
|
4907
4418
|
{
|
|
4908
4419
|
variant: "outline",
|
|
4909
4420
|
role: "combobox",
|
|
4910
4421
|
"aria-expanded": open,
|
|
4911
4422
|
className: cn("min-h-10 h-auto w-full justify-between", className),
|
|
4912
|
-
children: /* @__PURE__ */
|
|
4423
|
+
children: /* @__PURE__ */ jsxs35("div", { className: "flex flex-wrap gap-1", children: [
|
|
4913
4424
|
selectedValues.length === 0 && placeholder,
|
|
4914
|
-
selectedValues.map((value) => /* @__PURE__ */
|
|
4425
|
+
selectedValues.map((value) => /* @__PURE__ */ jsxs35(
|
|
4915
4426
|
Badge,
|
|
4916
4427
|
{
|
|
4917
4428
|
variant: "secondary",
|
|
@@ -4919,7 +4430,7 @@ var MultiSelect = ({
|
|
|
4919
4430
|
onClick: (e) => handleClear(value, e),
|
|
4920
4431
|
children: [
|
|
4921
4432
|
options.find((opt) => opt.value === value)?.label,
|
|
4922
|
-
/* @__PURE__ */
|
|
4433
|
+
/* @__PURE__ */ jsx55(X, { className: "ml-1 h-3 w-3" })
|
|
4923
4434
|
]
|
|
4924
4435
|
},
|
|
4925
4436
|
value
|
|
@@ -4927,12 +4438,12 @@ var MultiSelect = ({
|
|
|
4927
4438
|
] })
|
|
4928
4439
|
}
|
|
4929
4440
|
) }),
|
|
4930
|
-
/* @__PURE__ */
|
|
4441
|
+
/* @__PURE__ */ jsx55(PopoverContent, { className: "p-0", children: /* @__PURE__ */ jsx55(Command, { children: /* @__PURE__ */ jsx55(CommandGroup, { children: options.map((option) => /* @__PURE__ */ jsxs35(
|
|
4931
4442
|
CommandItem,
|
|
4932
4443
|
{
|
|
4933
4444
|
onSelect: () => handleSelect(option.value),
|
|
4934
4445
|
children: [
|
|
4935
|
-
/* @__PURE__ */
|
|
4446
|
+
/* @__PURE__ */ jsx55(
|
|
4936
4447
|
Check2,
|
|
4937
4448
|
{
|
|
4938
4449
|
className: cn(
|
|
@@ -4950,18 +4461,18 @@ var MultiSelect = ({
|
|
|
4950
4461
|
};
|
|
4951
4462
|
|
|
4952
4463
|
// components/form-controls/multi-step-process.tsx
|
|
4953
|
-
import { Check as Check3, Loader2 as
|
|
4954
|
-
import { useEffect as
|
|
4955
|
-
import { jsx as
|
|
4464
|
+
import { Check as Check3, Loader2 as Loader22 } from "lucide-react";
|
|
4465
|
+
import { useEffect as useEffect3, useState as useState6 } from "react";
|
|
4466
|
+
import { jsx as jsx56, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
4956
4467
|
var MultiStepProcess = ({
|
|
4957
4468
|
initialSteps,
|
|
4958
4469
|
onFinish,
|
|
4959
4470
|
finishButtonText
|
|
4960
4471
|
}) => {
|
|
4961
|
-
const [steps, setSteps] =
|
|
4472
|
+
const [steps, setSteps] = useState6(
|
|
4962
4473
|
initialSteps.map((step) => ({ ...step, isValid: false, isComplete: false }))
|
|
4963
4474
|
);
|
|
4964
|
-
const [currentStepIndex, setCurrentStepIndex] =
|
|
4475
|
+
const [currentStepIndex, setCurrentStepIndex] = useState6(0);
|
|
4965
4476
|
const updateStep = (stepIndex, updates) => {
|
|
4966
4477
|
setSteps(
|
|
4967
4478
|
(prevSteps) => prevSteps.map(
|
|
@@ -4988,7 +4499,7 @@ var MultiStepProcess = ({
|
|
|
4988
4499
|
}
|
|
4989
4500
|
updateStep(currentStepIndex, { isLoading: false });
|
|
4990
4501
|
};
|
|
4991
|
-
|
|
4502
|
+
useEffect3(() => {
|
|
4992
4503
|
const currentStep = steps[currentStepIndex];
|
|
4993
4504
|
if (currentStep.isComplete) {
|
|
4994
4505
|
goToNextStep();
|
|
@@ -5001,7 +4512,7 @@ var MultiStepProcess = ({
|
|
|
5001
4512
|
};
|
|
5002
4513
|
const renderStepComponent = (step, index) => {
|
|
5003
4514
|
const StepComponent = step.component;
|
|
5004
|
-
return /* @__PURE__ */
|
|
4515
|
+
return /* @__PURE__ */ jsx56(
|
|
5005
4516
|
StepComponent,
|
|
5006
4517
|
{
|
|
5007
4518
|
step,
|
|
@@ -5011,23 +4522,23 @@ var MultiStepProcess = ({
|
|
|
5011
4522
|
};
|
|
5012
4523
|
const isLastStep = currentStepIndex === steps.length - 1;
|
|
5013
4524
|
const currentStepData = steps[currentStepIndex];
|
|
5014
|
-
return /* @__PURE__ */
|
|
5015
|
-
/* @__PURE__ */
|
|
5016
|
-
/* @__PURE__ */
|
|
4525
|
+
return /* @__PURE__ */ jsxs36(Card, { className: "p-6", children: [
|
|
4526
|
+
/* @__PURE__ */ jsx56("div", { className: "mb-8", children: /* @__PURE__ */ jsx56("div", { className: "flex justify-between items-start", children: steps.map((step, i) => /* @__PURE__ */ jsxs36("div", { className: "flex flex-col items-center", children: [
|
|
4527
|
+
/* @__PURE__ */ jsx56(
|
|
5017
4528
|
"div",
|
|
5018
4529
|
{
|
|
5019
4530
|
className: `
|
|
5020
4531
|
w-10 h-10 rounded-full flex items-center justify-center mb-2
|
|
5021
4532
|
${i < currentStepIndex ? "bg-green-500 text-white" : i === currentStepIndex ? "bg-blue-500 text-white" : "bg-gray-200 text-gray-500"}
|
|
5022
4533
|
`,
|
|
5023
|
-
children: i < currentStepIndex ? /* @__PURE__ */
|
|
4534
|
+
children: i < currentStepIndex ? /* @__PURE__ */ jsx56(Check3, { className: "w-6 h-6" }) : /* @__PURE__ */ jsx56("span", { children: step.id })
|
|
5024
4535
|
}
|
|
5025
4536
|
),
|
|
5026
|
-
/* @__PURE__ */
|
|
4537
|
+
/* @__PURE__ */ jsx56("span", { className: "text-sm text-center max-w-[100px]", children: step.title })
|
|
5027
4538
|
] }, i)) }) }),
|
|
5028
|
-
/* @__PURE__ */
|
|
5029
|
-
/* @__PURE__ */
|
|
5030
|
-
/* @__PURE__ */
|
|
4539
|
+
/* @__PURE__ */ jsx56("div", { className: "mb-3", children: renderStepComponent(currentStepData, currentStepIndex) }),
|
|
4540
|
+
/* @__PURE__ */ jsxs36("div", { className: "flex justify-between", children: [
|
|
4541
|
+
/* @__PURE__ */ jsx56(
|
|
5031
4542
|
Button,
|
|
5032
4543
|
{
|
|
5033
4544
|
onClick: goToPreviousStep,
|
|
@@ -5036,12 +4547,12 @@ var MultiStepProcess = ({
|
|
|
5036
4547
|
children: "Previous"
|
|
5037
4548
|
}
|
|
5038
4549
|
),
|
|
5039
|
-
/* @__PURE__ */
|
|
4550
|
+
/* @__PURE__ */ jsx56(
|
|
5040
4551
|
Button,
|
|
5041
4552
|
{
|
|
5042
4553
|
onClick: goToNextStep,
|
|
5043
4554
|
disabled: !currentStepData.isValid || currentStepData.isLoading,
|
|
5044
|
-
children: currentStepData.isLoading ? /* @__PURE__ */
|
|
4555
|
+
children: currentStepData.isLoading ? /* @__PURE__ */ jsx56(Loader22, { className: "h-6 w-6 animate-spin" }) : isLastStep ? finishButtonText ?? "Finish" : "Next"
|
|
5045
4556
|
}
|
|
5046
4557
|
)
|
|
5047
4558
|
] })
|
|
@@ -5049,7 +4560,7 @@ var MultiStepProcess = ({
|
|
|
5049
4560
|
};
|
|
5050
4561
|
|
|
5051
4562
|
// components/form-controls/popover.tsx
|
|
5052
|
-
import { jsx as
|
|
4563
|
+
import { jsx as jsx57, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
5053
4564
|
var Popover2 = ({
|
|
5054
4565
|
trigger,
|
|
5055
4566
|
children,
|
|
@@ -5057,9 +4568,9 @@ var Popover2 = ({
|
|
|
5057
4568
|
align = "center",
|
|
5058
4569
|
sideOffset = 4
|
|
5059
4570
|
}) => {
|
|
5060
|
-
return /* @__PURE__ */
|
|
5061
|
-
/* @__PURE__ */
|
|
5062
|
-
/* @__PURE__ */
|
|
4571
|
+
return /* @__PURE__ */ jsxs37(Popover, { children: [
|
|
4572
|
+
/* @__PURE__ */ jsx57(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx57("div", { className, children: trigger }) }),
|
|
4573
|
+
/* @__PURE__ */ jsx57(
|
|
5063
4574
|
PopoverContent,
|
|
5064
4575
|
{
|
|
5065
4576
|
align,
|
|
@@ -5073,34 +4584,34 @@ var Popover2 = ({
|
|
|
5073
4584
|
|
|
5074
4585
|
// components/form-controls/radio-group.tsx
|
|
5075
4586
|
import * as React31 from "react";
|
|
5076
|
-
import { jsx as
|
|
4587
|
+
import { jsx as jsx58, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
5077
4588
|
var RadioGroup3 = React31.forwardRef(({ className, options, defaultValue, title, name, control, isFormField, ...props }, ref) => {
|
|
5078
4589
|
if (!isFormField) {
|
|
5079
|
-
return /* @__PURE__ */
|
|
5080
|
-
/* @__PURE__ */
|
|
5081
|
-
/* @__PURE__ */
|
|
4590
|
+
return /* @__PURE__ */ jsx58(RadioGroup2, { defaultValue, ...props, ref, children: options?.map((option) => /* @__PURE__ */ jsxs38("div", { className: "flex items-center space-x-2 cursor-pointer", children: [
|
|
4591
|
+
/* @__PURE__ */ jsx58(RadioGroupItem, { value: option.value, id: option.value }),
|
|
4592
|
+
/* @__PURE__ */ jsx58("label", { htmlFor: option.value, children: option.label })
|
|
5082
4593
|
] }, option.value)) });
|
|
5083
4594
|
}
|
|
5084
|
-
return /* @__PURE__ */
|
|
4595
|
+
return /* @__PURE__ */ jsx58(
|
|
5085
4596
|
FormField,
|
|
5086
4597
|
{
|
|
5087
4598
|
control,
|
|
5088
4599
|
name,
|
|
5089
|
-
render: ({ field }) => /* @__PURE__ */
|
|
5090
|
-
title && /* @__PURE__ */
|
|
5091
|
-
/* @__PURE__ */
|
|
4600
|
+
render: ({ field }) => /* @__PURE__ */ jsxs38(FormItem, { children: [
|
|
4601
|
+
title && /* @__PURE__ */ jsx58(FormLabel, { children: title }),
|
|
4602
|
+
/* @__PURE__ */ jsx58(FormControl, { children: /* @__PURE__ */ jsx58(
|
|
5092
4603
|
RadioGroup2,
|
|
5093
4604
|
{
|
|
5094
4605
|
onValueChange: field.onChange,
|
|
5095
4606
|
defaultValue: field.value,
|
|
5096
4607
|
...props,
|
|
5097
|
-
children: options?.map((option) => /* @__PURE__ */
|
|
5098
|
-
/* @__PURE__ */
|
|
5099
|
-
/* @__PURE__ */
|
|
4608
|
+
children: options?.map((option) => /* @__PURE__ */ jsxs38("div", { className: "flex items-center space-x-2 cursor-pointer", children: [
|
|
4609
|
+
/* @__PURE__ */ jsx58(RadioGroupItem, { value: option.value, id: option.value }),
|
|
4610
|
+
/* @__PURE__ */ jsx58("label", { htmlFor: option.value, children: option.label })
|
|
5100
4611
|
] }, option.value))
|
|
5101
4612
|
}
|
|
5102
4613
|
) }),
|
|
5103
|
-
/* @__PURE__ */
|
|
4614
|
+
/* @__PURE__ */ jsx58(FormMessage, {})
|
|
5104
4615
|
] })
|
|
5105
4616
|
}
|
|
5106
4617
|
);
|
|
@@ -5116,22 +4627,22 @@ import {
|
|
|
5116
4627
|
ScrollAreaThumb as ShadcnScrollAreaThumb,
|
|
5117
4628
|
ScrollAreaCorner as ShadcnScrollAreaCorner
|
|
5118
4629
|
} from "@radix-ui/react-scroll-area";
|
|
5119
|
-
import { jsx as
|
|
5120
|
-
var ScrollArea2 = React32.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */
|
|
4630
|
+
import { jsx as jsx59, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
4631
|
+
var ScrollArea2 = React32.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs39(
|
|
5121
4632
|
ShadcnScrollArea,
|
|
5122
4633
|
{
|
|
5123
4634
|
ref,
|
|
5124
4635
|
className: cn("relative overflow-hidden", className),
|
|
5125
4636
|
...props,
|
|
5126
4637
|
children: [
|
|
5127
|
-
/* @__PURE__ */
|
|
5128
|
-
/* @__PURE__ */
|
|
5129
|
-
/* @__PURE__ */
|
|
4638
|
+
/* @__PURE__ */ jsx59(ShadcnScrollAreaViewport, { className: "h-full w-full rounded-[inherit]", children }),
|
|
4639
|
+
/* @__PURE__ */ jsx59(ScrollBar2, {}),
|
|
4640
|
+
/* @__PURE__ */ jsx59(ShadcnScrollAreaCorner, {})
|
|
5130
4641
|
]
|
|
5131
4642
|
}
|
|
5132
4643
|
));
|
|
5133
4644
|
ScrollArea2.displayName = ShadcnScrollArea.displayName;
|
|
5134
|
-
var ScrollBar2 = React32.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */
|
|
4645
|
+
var ScrollBar2 = React32.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx59(
|
|
5135
4646
|
ShadcnScrollAreaScrollbar,
|
|
5136
4647
|
{
|
|
5137
4648
|
ref,
|
|
@@ -5143,13 +4654,13 @@ var ScrollBar2 = React32.forwardRef(({ className, orientation = "vertical", ...p
|
|
|
5143
4654
|
className
|
|
5144
4655
|
),
|
|
5145
4656
|
...props,
|
|
5146
|
-
children: /* @__PURE__ */
|
|
4657
|
+
children: /* @__PURE__ */ jsx59(ShadcnScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
|
|
5147
4658
|
}
|
|
5148
4659
|
));
|
|
5149
4660
|
ScrollBar2.displayName = ShadcnScrollAreaScrollbar.displayName;
|
|
5150
4661
|
|
|
5151
4662
|
// components/form-controls/select.tsx
|
|
5152
|
-
import { jsx as
|
|
4663
|
+
import { jsx as jsx60, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
5153
4664
|
var Select2 = ({
|
|
5154
4665
|
defaultValue,
|
|
5155
4666
|
placeholder,
|
|
@@ -5157,9 +4668,9 @@ var Select2 = ({
|
|
|
5157
4668
|
className = "",
|
|
5158
4669
|
onValueChange
|
|
5159
4670
|
}) => {
|
|
5160
|
-
return /* @__PURE__ */
|
|
5161
|
-
/* @__PURE__ */
|
|
5162
|
-
/* @__PURE__ */
|
|
4671
|
+
return /* @__PURE__ */ jsxs40(Select, { value: defaultValue, onValueChange, children: [
|
|
4672
|
+
/* @__PURE__ */ jsx60(SelectTrigger, { className, children: /* @__PURE__ */ jsx60(SelectValue, { placeholder }) }),
|
|
4673
|
+
/* @__PURE__ */ jsx60(SelectContent, { children: options?.map((option, i) => /* @__PURE__ */ jsx60(SelectItem, { value: option.value, children: option.label }, i)) })
|
|
5163
4674
|
] });
|
|
5164
4675
|
};
|
|
5165
4676
|
|
|
@@ -5171,8 +4682,8 @@ var CollapsibleContent2 = CollapsiblePrimitive.CollapsibleContent;
|
|
|
5171
4682
|
// components/ui/progress.tsx
|
|
5172
4683
|
import * as React33 from "react";
|
|
5173
4684
|
import * as ProgressPrimitive from "@radix-ui/react-progress";
|
|
5174
|
-
import { jsx as
|
|
5175
|
-
var Progress = React33.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */
|
|
4685
|
+
import { jsx as jsx61 } from "react/jsx-runtime";
|
|
4686
|
+
var Progress = React33.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx61(
|
|
5176
4687
|
ProgressPrimitive.Root,
|
|
5177
4688
|
{
|
|
5178
4689
|
ref,
|
|
@@ -5181,7 +4692,7 @@ var Progress = React33.forwardRef(({ className, value, ...props }, ref) => /* @_
|
|
|
5181
4692
|
className
|
|
5182
4693
|
),
|
|
5183
4694
|
...props,
|
|
5184
|
-
children: /* @__PURE__ */
|
|
4695
|
+
children: /* @__PURE__ */ jsx61(
|
|
5185
4696
|
ProgressPrimitive.Indicator,
|
|
5186
4697
|
{
|
|
5187
4698
|
className: "h-full w-full flex-1 bg-primary transition-all",
|
|
@@ -5194,26 +4705,26 @@ Progress.displayName = ProgressPrimitive.Root.displayName;
|
|
|
5194
4705
|
|
|
5195
4706
|
// components/form-controls/setup-guide.tsx
|
|
5196
4707
|
import { Check as Check4 } from "lucide-react";
|
|
5197
|
-
import { useId as useId3, useState as
|
|
5198
|
-
import { jsx as
|
|
4708
|
+
import { useId as useId3, useState as useState7 } from "react";
|
|
4709
|
+
import { jsx as jsx62, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
5199
4710
|
var SetupGuide = ({
|
|
5200
4711
|
onDismiss,
|
|
5201
4712
|
onStepComplete,
|
|
5202
4713
|
items
|
|
5203
4714
|
}) => {
|
|
5204
|
-
const [expanded, setExpanded] =
|
|
4715
|
+
const [expanded, setExpanded] = useState7(
|
|
5205
4716
|
items.findIndex((item) => !item.complete)
|
|
5206
4717
|
);
|
|
5207
|
-
const [isGuideOpen, setIsGuideOpen] =
|
|
4718
|
+
const [isGuideOpen, setIsGuideOpen] = useState7(true);
|
|
5208
4719
|
const accessId = useId3();
|
|
5209
4720
|
const completedItemsLength = items.filter((item) => item.complete).length;
|
|
5210
|
-
return /* @__PURE__ */
|
|
5211
|
-
/* @__PURE__ */
|
|
5212
|
-
completedItemsLength === items.length ? /* @__PURE__ */
|
|
5213
|
-
/* @__PURE__ */
|
|
5214
|
-
/* @__PURE__ */
|
|
5215
|
-
] }) : /* @__PURE__ */
|
|
5216
|
-
completedItemsLength !== items.length && /* @__PURE__ */
|
|
4721
|
+
return /* @__PURE__ */ jsxs41("div", { className: "p-0", children: [
|
|
4722
|
+
/* @__PURE__ */ jsx62("div", { className: "px-4 pb-4", children: /* @__PURE__ */ jsx62("div", { className: "space-y-4", children: /* @__PURE__ */ jsx62("div", { className: "mt-2", children: /* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-2", children: [
|
|
4723
|
+
completedItemsLength === items.length ? /* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-1", children: [
|
|
4724
|
+
/* @__PURE__ */ jsx62(Check4, { className: "h-4 w-4 text-gray-400" }),
|
|
4725
|
+
/* @__PURE__ */ jsx62("span", { className: "text-sm text-gray-400", children: "Done" })
|
|
4726
|
+
] }) : /* @__PURE__ */ jsx62("span", { className: "text-sm", children: `${completedItemsLength} / ${items.length} completed` }),
|
|
4727
|
+
completedItemsLength !== items.length && /* @__PURE__ */ jsx62("div", { className: "w-24", children: /* @__PURE__ */ jsx62(
|
|
5217
4728
|
Progress,
|
|
5218
4729
|
{
|
|
5219
4730
|
value: completedItemsLength / items.length * 100,
|
|
@@ -5221,7 +4732,7 @@ var SetupGuide = ({
|
|
|
5221
4732
|
}
|
|
5222
4733
|
) })
|
|
5223
4734
|
] }) }) }) }),
|
|
5224
|
-
/* @__PURE__ */
|
|
4735
|
+
/* @__PURE__ */ jsx62(Collapsible, { open: isGuideOpen, id: accessId, children: /* @__PURE__ */ jsx62(CollapsibleContent2, { className: "p-2", children: /* @__PURE__ */ jsx62("div", { className: "space-y-1", children: items.map((item) => /* @__PURE__ */ jsx62(
|
|
5225
4736
|
SetupItem,
|
|
5226
4737
|
{
|
|
5227
4738
|
expanded: expanded === item.id,
|
|
@@ -5231,7 +4742,7 @@ var SetupGuide = ({
|
|
|
5231
4742
|
},
|
|
5232
4743
|
item.id
|
|
5233
4744
|
)) }) }) }),
|
|
5234
|
-
completedItemsLength === items.length && /* @__PURE__ */
|
|
4745
|
+
completedItemsLength === items.length && /* @__PURE__ */ jsx62("div", { className: "border-t border-gray-200 bg-gray-50 p-3", children: /* @__PURE__ */ jsx62("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx62(Button, { onClick: onDismiss, children: "Dismiss Guide" }) }) })
|
|
5235
4746
|
] });
|
|
5236
4747
|
};
|
|
5237
4748
|
var SetupItem = ({
|
|
@@ -5246,44 +4757,44 @@ var SetupItem = ({
|
|
|
5246
4757
|
secondaryButton,
|
|
5247
4758
|
id
|
|
5248
4759
|
}) => {
|
|
5249
|
-
const [loading, setLoading] =
|
|
4760
|
+
const [loading, setLoading] = useState7(false);
|
|
5250
4761
|
const completeItem = async () => {
|
|
5251
4762
|
setLoading(true);
|
|
5252
4763
|
await onComplete(id);
|
|
5253
4764
|
setLoading(false);
|
|
5254
4765
|
};
|
|
5255
|
-
return /* @__PURE__ */
|
|
5256
|
-
/* @__PURE__ */
|
|
5257
|
-
/* @__PURE__ */
|
|
4766
|
+
return /* @__PURE__ */ jsx62("div", { className: `rounded ${expanded ? "bg-gray-100" : ""}`, children: /* @__PURE__ */ jsx62("div", { className: `p-2 ${expanded ? "" : "hover:bg-gray-50"}`, children: /* @__PURE__ */ jsxs41("div", { className: "flex gap-2 items-start", children: [
|
|
4767
|
+
/* @__PURE__ */ jsx62(TooltipProvider, { children: /* @__PURE__ */ jsxs41(Tooltip, { children: [
|
|
4768
|
+
/* @__PURE__ */ jsx62(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx62(
|
|
5258
4769
|
Button,
|
|
5259
4770
|
{
|
|
5260
4771
|
variant: "ghost",
|
|
5261
4772
|
size: "icon",
|
|
5262
4773
|
className: "mt-0.5",
|
|
5263
4774
|
onClick: completeItem,
|
|
5264
|
-
children: loading ? /* @__PURE__ */
|
|
4775
|
+
children: loading ? /* @__PURE__ */ jsx62("div", { className: "h-5 w-5 animate-spin rounded-full border-2 border-gray-300 border-t-gray-600" }) : complete ? /* @__PURE__ */ jsx62("div", { className: "h-5 w-5 rounded-full bg-gray-900 flex items-center justify-center", children: /* @__PURE__ */ jsx62(Check4, { className: "h-3 w-3 text-white" }) }) : /* @__PURE__ */ jsx62("div", { className: "h-5 w-5 rounded-full border-2 border-gray-300" })
|
|
5265
4776
|
}
|
|
5266
4777
|
) }),
|
|
5267
|
-
/* @__PURE__ */
|
|
4778
|
+
/* @__PURE__ */ jsx62(TooltipContent, { children: complete ? "Mark as not done" : "Mark as done" })
|
|
5268
4779
|
] }) }),
|
|
5269
|
-
/* @__PURE__ */
|
|
4780
|
+
/* @__PURE__ */ jsx62(
|
|
5270
4781
|
"div",
|
|
5271
4782
|
{
|
|
5272
4783
|
className: `grow ${expanded ? "" : "cursor-pointer"}`,
|
|
5273
4784
|
onClick: expanded ? void 0 : setExpanded,
|
|
5274
|
-
children: /* @__PURE__ */
|
|
5275
|
-
/* @__PURE__ */
|
|
5276
|
-
/* @__PURE__ */
|
|
5277
|
-
/* @__PURE__ */
|
|
5278
|
-
(primaryButton || secondaryButton) && /* @__PURE__ */
|
|
5279
|
-
primaryButton && /* @__PURE__ */
|
|
5280
|
-
secondaryButton && /* @__PURE__ */
|
|
4785
|
+
children: /* @__PURE__ */ jsxs41("div", { className: "space-y-3", id: id.toString(), children: [
|
|
4786
|
+
/* @__PURE__ */ jsx62("h4", { className: expanded ? "text-sm font-semibold" : "text-sm", children: title }),
|
|
4787
|
+
/* @__PURE__ */ jsx62(Collapsible, { open: expanded, children: /* @__PURE__ */ jsx62(CollapsibleContent2, { className: "pb-2 pr-2", children: /* @__PURE__ */ jsxs41("div", { className: "space-y-4", children: [
|
|
4788
|
+
/* @__PURE__ */ jsx62("p", { className: "text-sm text-gray-600", children: description }),
|
|
4789
|
+
(primaryButton || secondaryButton) && /* @__PURE__ */ jsxs41("div", { className: "space-x-3", children: [
|
|
4790
|
+
primaryButton && /* @__PURE__ */ jsx62(Button, { ...primaryButton.props, children: primaryButton.content }),
|
|
4791
|
+
secondaryButton && /* @__PURE__ */ jsx62(Button, { variant: "outline", ...secondaryButton.props, children: secondaryButton.content })
|
|
5281
4792
|
] })
|
|
5282
4793
|
] }) }) })
|
|
5283
4794
|
] })
|
|
5284
4795
|
}
|
|
5285
4796
|
),
|
|
5286
|
-
image && expanded && /* @__PURE__ */
|
|
4797
|
+
image && expanded && /* @__PURE__ */ jsx62(
|
|
5287
4798
|
"img",
|
|
5288
4799
|
{
|
|
5289
4800
|
src: image.url,
|
|
@@ -5295,7 +4806,7 @@ var SetupItem = ({
|
|
|
5295
4806
|
};
|
|
5296
4807
|
|
|
5297
4808
|
// components/form-controls/sheet.tsx
|
|
5298
|
-
import { jsx as
|
|
4809
|
+
import { jsx as jsx63, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
5299
4810
|
var Sheet2 = ({
|
|
5300
4811
|
title,
|
|
5301
4812
|
trigger,
|
|
@@ -5303,20 +4814,20 @@ var Sheet2 = ({
|
|
|
5303
4814
|
children,
|
|
5304
4815
|
...props
|
|
5305
4816
|
}) => {
|
|
5306
|
-
return /* @__PURE__ */
|
|
5307
|
-
trigger && /* @__PURE__ */
|
|
5308
|
-
/* @__PURE__ */
|
|
5309
|
-
/* @__PURE__ */
|
|
5310
|
-
/* @__PURE__ */
|
|
4817
|
+
return /* @__PURE__ */ jsxs42(Sheet, { ...props, children: [
|
|
4818
|
+
trigger && /* @__PURE__ */ jsx63(SheetTrigger, { children: trigger }),
|
|
4819
|
+
/* @__PURE__ */ jsx63(SheetContent, { children: /* @__PURE__ */ jsxs42(SheetHeader, { children: [
|
|
4820
|
+
/* @__PURE__ */ jsx63(SheetTitle, { children: title }),
|
|
4821
|
+
/* @__PURE__ */ jsx63(SheetDescription, { children: description }),
|
|
5311
4822
|
children
|
|
5312
4823
|
] }) })
|
|
5313
4824
|
] });
|
|
5314
4825
|
};
|
|
5315
4826
|
|
|
5316
4827
|
// components/form-controls/tags-input.tsx
|
|
5317
|
-
import { X as
|
|
4828
|
+
import { X as X2 } from "lucide-react";
|
|
5318
4829
|
import * as React35 from "react";
|
|
5319
|
-
import { jsx as
|
|
4830
|
+
import { jsx as jsx64, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
5320
4831
|
var TagsInput = React35.forwardRef(
|
|
5321
4832
|
({ variant = "default", className, value, onChange, ...props }, ref) => {
|
|
5322
4833
|
const [inputValue, setInputValue] = React35.useState("");
|
|
@@ -5335,15 +4846,15 @@ var TagsInput = React35.forwardRef(
|
|
|
5335
4846
|
const removeTag = (index) => {
|
|
5336
4847
|
onChange(value.filter((_, i) => i !== index));
|
|
5337
4848
|
};
|
|
5338
|
-
return /* @__PURE__ */
|
|
5339
|
-
value.map((tag, index) => /* @__PURE__ */
|
|
4849
|
+
return /* @__PURE__ */ jsxs43("div", { className: "flex flex-wrap gap-2 p-2 border rounded", children: [
|
|
4850
|
+
value.map((tag, index) => /* @__PURE__ */ jsxs43(
|
|
5340
4851
|
"span",
|
|
5341
4852
|
{
|
|
5342
4853
|
className: "bg-gray-200 px-2 py-1 rounded flex items-center",
|
|
5343
4854
|
children: [
|
|
5344
4855
|
tag,
|
|
5345
|
-
/* @__PURE__ */
|
|
5346
|
-
|
|
4856
|
+
/* @__PURE__ */ jsx64(
|
|
4857
|
+
X2,
|
|
5347
4858
|
{
|
|
5348
4859
|
className: "ml-1 w-4 h-4 cursor-pointer",
|
|
5349
4860
|
onClick: () => removeTag(index)
|
|
@@ -5353,7 +4864,7 @@ var TagsInput = React35.forwardRef(
|
|
|
5353
4864
|
},
|
|
5354
4865
|
index
|
|
5355
4866
|
)),
|
|
5356
|
-
/* @__PURE__ */
|
|
4867
|
+
/* @__PURE__ */ jsx64(
|
|
5357
4868
|
"input",
|
|
5358
4869
|
{
|
|
5359
4870
|
className: "grow border-none focus:ring-0",
|
|
@@ -5371,7 +4882,7 @@ TagsInput.displayName = "TagsInput";
|
|
|
5371
4882
|
|
|
5372
4883
|
// components/form-controls/textarea.tsx
|
|
5373
4884
|
import * as React36 from "react";
|
|
5374
|
-
import { jsx as
|
|
4885
|
+
import { jsx as jsx65, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
5375
4886
|
var Textarea2 = React36.forwardRef(
|
|
5376
4887
|
({
|
|
5377
4888
|
variant = "default",
|
|
@@ -5383,15 +4894,15 @@ var Textarea2 = React36.forwardRef(
|
|
|
5383
4894
|
rules,
|
|
5384
4895
|
...props
|
|
5385
4896
|
}, ref) => {
|
|
5386
|
-
return isFormField ? /* @__PURE__ */
|
|
4897
|
+
return isFormField ? /* @__PURE__ */ jsx65(
|
|
5387
4898
|
FormField,
|
|
5388
4899
|
{
|
|
5389
4900
|
control,
|
|
5390
4901
|
name,
|
|
5391
4902
|
rules,
|
|
5392
|
-
render: ({ field }) => /* @__PURE__ */
|
|
5393
|
-
title && /* @__PURE__ */
|
|
5394
|
-
/* @__PURE__ */
|
|
4903
|
+
render: ({ field }) => /* @__PURE__ */ jsxs44(FormItem, { children: [
|
|
4904
|
+
title && /* @__PURE__ */ jsx65(FormLabel, { children: title }),
|
|
4905
|
+
/* @__PURE__ */ jsx65(FormControl, { children: /* @__PURE__ */ jsx65(
|
|
5395
4906
|
Textarea,
|
|
5396
4907
|
{
|
|
5397
4908
|
className: `${className} resize-none`,
|
|
@@ -5399,10 +4910,10 @@ var Textarea2 = React36.forwardRef(
|
|
|
5399
4910
|
...props
|
|
5400
4911
|
}
|
|
5401
4912
|
) }),
|
|
5402
|
-
/* @__PURE__ */
|
|
4913
|
+
/* @__PURE__ */ jsx65(FormMessage, {})
|
|
5403
4914
|
] })
|
|
5404
4915
|
}
|
|
5405
|
-
) : /* @__PURE__ */
|
|
4916
|
+
) : /* @__PURE__ */ jsx65(
|
|
5406
4917
|
Textarea,
|
|
5407
4918
|
{
|
|
5408
4919
|
className: `${className} resize-none`,
|
|
@@ -5416,8 +4927,8 @@ Textarea2.displayName = "Textarea";
|
|
|
5416
4927
|
|
|
5417
4928
|
// components/form-controls/time-picker.tsx
|
|
5418
4929
|
import { Clock } from "lucide-react";
|
|
5419
|
-
import { useState as
|
|
5420
|
-
import { jsx as
|
|
4930
|
+
import { useState as useState9 } from "react";
|
|
4931
|
+
import { jsx as jsx66, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
5421
4932
|
var TimePicker = ({
|
|
5422
4933
|
value,
|
|
5423
4934
|
onValueChange,
|
|
@@ -5425,7 +4936,7 @@ var TimePicker = ({
|
|
|
5425
4936
|
className = "",
|
|
5426
4937
|
disabled = false
|
|
5427
4938
|
}) => {
|
|
5428
|
-
const [open, setOpen] =
|
|
4939
|
+
const [open, setOpen] = useState9(false);
|
|
5429
4940
|
const hours = Array.from({ length: 24 }, (_, i) => ({
|
|
5430
4941
|
value: i.toString().padStart(2, "0"),
|
|
5431
4942
|
label: i.toString().padStart(2, "0")
|
|
@@ -5441,21 +4952,21 @@ var TimePicker = ({
|
|
|
5441
4952
|
const handleMinuteChange = (newMinute) => {
|
|
5442
4953
|
onValueChange(`${hour}:${newMinute}`);
|
|
5443
4954
|
};
|
|
5444
|
-
return /* @__PURE__ */
|
|
5445
|
-
/* @__PURE__ */
|
|
4955
|
+
return /* @__PURE__ */ jsxs45(Popover, { open, onOpenChange: setOpen, children: [
|
|
4956
|
+
/* @__PURE__ */ jsx66(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs45(
|
|
5446
4957
|
Button,
|
|
5447
4958
|
{
|
|
5448
4959
|
variant: "outline",
|
|
5449
4960
|
className: `w-full justify-start text-left font-normal ${className}`,
|
|
5450
4961
|
disabled,
|
|
5451
4962
|
children: [
|
|
5452
|
-
/* @__PURE__ */
|
|
4963
|
+
/* @__PURE__ */ jsx66(Clock, { className: "mr-2 h-4 w-4" }),
|
|
5453
4964
|
value || placeholder
|
|
5454
4965
|
]
|
|
5455
4966
|
}
|
|
5456
4967
|
) }),
|
|
5457
|
-
/* @__PURE__ */
|
|
5458
|
-
/* @__PURE__ */
|
|
4968
|
+
/* @__PURE__ */ jsx66(PopoverContent, { className: "w-auto p-4", align: "start", children: /* @__PURE__ */ jsxs45("div", { className: "flex items-center gap-2", children: [
|
|
4969
|
+
/* @__PURE__ */ jsx66(
|
|
5459
4970
|
Select2,
|
|
5460
4971
|
{
|
|
5461
4972
|
defaultValue: hour,
|
|
@@ -5465,8 +4976,8 @@ var TimePicker = ({
|
|
|
5465
4976
|
className: "w-[80px]"
|
|
5466
4977
|
}
|
|
5467
4978
|
),
|
|
5468
|
-
/* @__PURE__ */
|
|
5469
|
-
/* @__PURE__ */
|
|
4979
|
+
/* @__PURE__ */ jsx66("span", { className: "text-lg", children: ":" }),
|
|
4980
|
+
/* @__PURE__ */ jsx66(
|
|
5470
4981
|
Select2,
|
|
5471
4982
|
{
|
|
5472
4983
|
defaultValue: minute,
|
|
@@ -5481,19 +4992,19 @@ var TimePicker = ({
|
|
|
5481
4992
|
};
|
|
5482
4993
|
|
|
5483
4994
|
// components/form-controls/tooltip.tsx
|
|
5484
|
-
import { jsx as
|
|
4995
|
+
import { jsx as jsx67, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
5485
4996
|
var Tooltip3 = ({ children, tipContent }) => {
|
|
5486
|
-
return /* @__PURE__ */
|
|
5487
|
-
/* @__PURE__ */
|
|
5488
|
-
/* @__PURE__ */
|
|
4997
|
+
return /* @__PURE__ */ jsx67(TooltipProvider, { children: /* @__PURE__ */ jsxs46(Tooltip, { delayDuration: 0, children: [
|
|
4998
|
+
/* @__PURE__ */ jsx67(TooltipTrigger, { children }),
|
|
4999
|
+
/* @__PURE__ */ jsx67(TooltipContent, { children: /* @__PURE__ */ jsx67("p", { children: tipContent }) })
|
|
5489
5000
|
] }) });
|
|
5490
5001
|
};
|
|
5491
5002
|
|
|
5492
5003
|
// components/form-controls/upload-widget.tsx
|
|
5493
|
-
import { Loader2 as
|
|
5004
|
+
import { Loader2 as Loader23, Upload } from "lucide-react";
|
|
5494
5005
|
import { useDropzone } from "react-dropzone";
|
|
5495
5006
|
import { toast } from "sonner";
|
|
5496
|
-
import { jsx as
|
|
5007
|
+
import { jsx as jsx68, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
5497
5008
|
function UploadWidget({
|
|
5498
5009
|
accept,
|
|
5499
5010
|
maxSize,
|
|
@@ -5525,18 +5036,18 @@ function UploadWidget({
|
|
|
5525
5036
|
maxFiles
|
|
5526
5037
|
};
|
|
5527
5038
|
const { getRootProps, getInputProps, isDragActive } = useDropzone(dropzoneOptions);
|
|
5528
|
-
return /* @__PURE__ */
|
|
5039
|
+
return /* @__PURE__ */ jsxs47(
|
|
5529
5040
|
"div",
|
|
5530
5041
|
{
|
|
5531
5042
|
...getRootProps(),
|
|
5532
5043
|
className: "relative border-2 border-dashed border-gray-300 rounded-lg p-6 text-center cursor-pointer min-h-[160px]",
|
|
5533
5044
|
children: [
|
|
5534
|
-
isUploading && /* @__PURE__ */
|
|
5535
|
-
/* @__PURE__ */
|
|
5536
|
-
isDragActive ? /* @__PURE__ */
|
|
5537
|
-
/* @__PURE__ */
|
|
5538
|
-
/* @__PURE__ */
|
|
5539
|
-
/* @__PURE__ */
|
|
5045
|
+
isUploading && /* @__PURE__ */ jsx68("div", { className: "absolute top-3 right-3", children: /* @__PURE__ */ jsx68(Loader23, { className: "animate-spin h-6 w-6 text-primary" }) }),
|
|
5046
|
+
/* @__PURE__ */ jsx68("input", { ...getInputProps() }),
|
|
5047
|
+
isDragActive ? /* @__PURE__ */ jsx68("p", { children: "Drop the files here ..." }) : /* @__PURE__ */ jsxs47("div", { children: [
|
|
5048
|
+
/* @__PURE__ */ jsx68(Upload, { className: "mx-auto h-12 w-12 text-gray-400" }),
|
|
5049
|
+
/* @__PURE__ */ jsx68("p", { children: "Drag n drop some files here, or click to select files" }),
|
|
5050
|
+
/* @__PURE__ */ jsxs47("p", { className: "text-sm text-gray-500", children: [
|
|
5540
5051
|
"Only ",
|
|
5541
5052
|
acceptedTypes,
|
|
5542
5053
|
" files up to ",
|
|
@@ -5544,11 +5055,11 @@ function UploadWidget({
|
|
|
5544
5055
|
"MB are accepted"
|
|
5545
5056
|
] })
|
|
5546
5057
|
] }),
|
|
5547
|
-
fileUrls.length > 0 && /* @__PURE__ */
|
|
5058
|
+
fileUrls.length > 0 && /* @__PURE__ */ jsx68("div", { className: "mt-4 border-t border-gray-300 pt-4", children: /* @__PURE__ */ jsx68("ul", { className: "flex flex-wrap gap-2", children: fileUrls.map((url, i) => {
|
|
5548
5059
|
const fileName = getFileName(url);
|
|
5549
|
-
return /* @__PURE__ */
|
|
5550
|
-
/* @__PURE__ */
|
|
5551
|
-
/* @__PURE__ */
|
|
5060
|
+
return /* @__PURE__ */ jsxs47("li", { className: "flex items-center space-x-2 text-sm", children: [
|
|
5061
|
+
/* @__PURE__ */ jsx68("div", { children: getFileIcon(fileName) }),
|
|
5062
|
+
/* @__PURE__ */ jsx68("span", { children: fileName })
|
|
5552
5063
|
] }, i);
|
|
5553
5064
|
}) }) })
|
|
5554
5065
|
]
|
|
@@ -5559,15 +5070,15 @@ function UploadWidget({
|
|
|
5559
5070
|
// components/general/markdown-renderer.tsx
|
|
5560
5071
|
import ReactMarkdown from "react-markdown";
|
|
5561
5072
|
import remarkGfm from "remark-gfm";
|
|
5562
|
-
import { jsx as
|
|
5073
|
+
import { jsx as jsx69 } from "react/jsx-runtime";
|
|
5563
5074
|
function MarkdownRenderer({ content }) {
|
|
5564
|
-
return /* @__PURE__ */
|
|
5075
|
+
return /* @__PURE__ */ jsx69(
|
|
5565
5076
|
ReactMarkdown,
|
|
5566
5077
|
{
|
|
5567
5078
|
remarkPlugins: [remarkGfm],
|
|
5568
5079
|
className: "text-primary-900",
|
|
5569
5080
|
components: {
|
|
5570
|
-
a: ({ node, ...props }) => /* @__PURE__ */
|
|
5081
|
+
a: ({ node, ...props }) => /* @__PURE__ */ jsx69(
|
|
5571
5082
|
"a",
|
|
5572
5083
|
{
|
|
5573
5084
|
target: "_blank",
|
|
@@ -5576,20 +5087,20 @@ function MarkdownRenderer({ content }) {
|
|
|
5576
5087
|
...props
|
|
5577
5088
|
}
|
|
5578
5089
|
),
|
|
5579
|
-
h1: ({ node, ...props }) => /* @__PURE__ */
|
|
5580
|
-
h2: ({ node, ...props }) => /* @__PURE__ */
|
|
5581
|
-
h3: ({ node, ...props }) => /* @__PURE__ */
|
|
5582
|
-
code: ({ node, ...props }) => /* @__PURE__ */
|
|
5090
|
+
h1: ({ node, ...props }) => /* @__PURE__ */ jsx69("h1", { className: "text-2xl font-bold mt-6 mb-4", ...props }),
|
|
5091
|
+
h2: ({ node, ...props }) => /* @__PURE__ */ jsx69("h2", { className: "text-xl font-semibold mt-5 mb-3", ...props }),
|
|
5092
|
+
h3: ({ node, ...props }) => /* @__PURE__ */ jsx69("h3", { className: "text-lg font-semibold mt-4 mb-2", ...props }),
|
|
5093
|
+
code: ({ node, ...props }) => /* @__PURE__ */ jsx69(
|
|
5583
5094
|
"code",
|
|
5584
5095
|
{
|
|
5585
5096
|
className: "block bg-stone-100 p-3 rounded font-mono",
|
|
5586
5097
|
...props
|
|
5587
5098
|
}
|
|
5588
5099
|
),
|
|
5589
|
-
ul: ({ node, ...props }) => /* @__PURE__ */
|
|
5590
|
-
ol: ({ node, ...props }) => /* @__PURE__ */
|
|
5591
|
-
p: ({ node, ...props }) => /* @__PURE__ */
|
|
5592
|
-
blockquote: ({ node, ...props }) => /* @__PURE__ */
|
|
5100
|
+
ul: ({ node, ...props }) => /* @__PURE__ */ jsx69("ul", { className: "list-disc pl-6 my-4", ...props }),
|
|
5101
|
+
ol: ({ node, ...props }) => /* @__PURE__ */ jsx69("ol", { className: "list-decimal pl-6 my-4", ...props }),
|
|
5102
|
+
p: ({ node, ...props }) => /* @__PURE__ */ jsx69("p", { className: "my-4", ...props }),
|
|
5103
|
+
blockquote: ({ node, ...props }) => /* @__PURE__ */ jsx69(
|
|
5593
5104
|
"blockquote",
|
|
5594
5105
|
{
|
|
5595
5106
|
className: "border-l-4 border-stone-200 pl-4 my-4 italic",
|
|
@@ -5603,9 +5114,9 @@ function MarkdownRenderer({ content }) {
|
|
|
5603
5114
|
}
|
|
5604
5115
|
|
|
5605
5116
|
// components/general/chat-loading.tsx
|
|
5606
|
-
import { jsx as
|
|
5117
|
+
import { jsx as jsx70, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
5607
5118
|
function ChatLoading() {
|
|
5608
|
-
return /* @__PURE__ */
|
|
5119
|
+
return /* @__PURE__ */ jsxs48(
|
|
5609
5120
|
"svg",
|
|
5610
5121
|
{
|
|
5611
5122
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -5613,7 +5124,7 @@ function ChatLoading() {
|
|
|
5613
5124
|
width: "60",
|
|
5614
5125
|
height: "15",
|
|
5615
5126
|
children: [
|
|
5616
|
-
/* @__PURE__ */
|
|
5127
|
+
/* @__PURE__ */ jsx70("circle", { cx: "7.5", cy: "7.5", r: "3.5", fill: "#444444", children: /* @__PURE__ */ jsx70(
|
|
5617
5128
|
"animate",
|
|
5618
5129
|
{
|
|
5619
5130
|
attributeName: "cy",
|
|
@@ -5626,7 +5137,7 @@ function ChatLoading() {
|
|
|
5626
5137
|
values: "7.5;3.5;7.5"
|
|
5627
5138
|
}
|
|
5628
5139
|
) }),
|
|
5629
|
-
/* @__PURE__ */
|
|
5140
|
+
/* @__PURE__ */ jsx70("circle", { cx: "30", cy: "7.5", r: "3.5", fill: "#444444", children: /* @__PURE__ */ jsx70(
|
|
5630
5141
|
"animate",
|
|
5631
5142
|
{
|
|
5632
5143
|
attributeName: "cy",
|
|
@@ -5639,7 +5150,7 @@ function ChatLoading() {
|
|
|
5639
5150
|
values: "7.5;3.5;7.5"
|
|
5640
5151
|
}
|
|
5641
5152
|
) }),
|
|
5642
|
-
/* @__PURE__ */
|
|
5153
|
+
/* @__PURE__ */ jsx70("circle", { cx: "52.5", cy: "7.5", r: "3.5", fill: "#444444", children: /* @__PURE__ */ jsx70(
|
|
5643
5154
|
"animate",
|
|
5644
5155
|
{
|
|
5645
5156
|
attributeName: "cy",
|
|
@@ -5658,10 +5169,10 @@ function ChatLoading() {
|
|
|
5658
5169
|
}
|
|
5659
5170
|
|
|
5660
5171
|
// components/layout/action-bar.tsx
|
|
5661
|
-
import { ArrowLeft, icons as icons3, Loader2 as
|
|
5662
|
-
import { useRouter as
|
|
5172
|
+
import { ArrowLeft, icons as icons3, Loader2 as Loader24 } from "lucide-react";
|
|
5173
|
+
import { useRouter as useRouter3 } from "next/navigation";
|
|
5663
5174
|
import React37 from "react";
|
|
5664
|
-
import { Fragment as
|
|
5175
|
+
import { Fragment as Fragment6, jsx as jsx71, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
5665
5176
|
var colorStyles = {
|
|
5666
5177
|
red: "bg-red-50 hover:bg-red-100 text-red-600",
|
|
5667
5178
|
blue: "bg-blue-50 hover:bg-blue-100 text-blue-600",
|
|
@@ -5675,50 +5186,50 @@ function EloquentActionBar({
|
|
|
5675
5186
|
buttons,
|
|
5676
5187
|
title
|
|
5677
5188
|
}) {
|
|
5678
|
-
const router =
|
|
5189
|
+
const router = useRouter3();
|
|
5679
5190
|
const LucideIcons = icons3;
|
|
5680
|
-
return /* @__PURE__ */
|
|
5681
|
-
showBack && /* @__PURE__ */
|
|
5682
|
-
/* @__PURE__ */
|
|
5191
|
+
return /* @__PURE__ */ jsxs49("div", { className: "flex bg-white border-gray-200 border-b border-x rounded-t-lg items-center", children: [
|
|
5192
|
+
showBack && /* @__PURE__ */ jsxs49(Fragment6, { children: [
|
|
5193
|
+
/* @__PURE__ */ jsxs49(
|
|
5683
5194
|
"button",
|
|
5684
5195
|
{
|
|
5685
5196
|
onClick: () => router.back(),
|
|
5686
5197
|
className: "flex items-center px-3 py-2 hover:bg-gray-100 transition-colors",
|
|
5687
5198
|
children: [
|
|
5688
|
-
/* @__PURE__ */
|
|
5689
|
-
/* @__PURE__ */
|
|
5199
|
+
/* @__PURE__ */ jsx71(ArrowLeft, { className: "w-5 h-5 mr-2 text-gray-600" }),
|
|
5200
|
+
/* @__PURE__ */ jsx71("span", { className: "text-gray-600 font-medium", children: "Back" })
|
|
5690
5201
|
]
|
|
5691
5202
|
}
|
|
5692
5203
|
),
|
|
5693
|
-
/* @__PURE__ */
|
|
5204
|
+
/* @__PURE__ */ jsx71(Separator3, { orientation: "vertical", className: "h-full" })
|
|
5694
5205
|
] }),
|
|
5695
|
-
/* @__PURE__ */
|
|
5206
|
+
/* @__PURE__ */ jsx71("div", { className: "flex items-center", children: buttons.map((button, index) => {
|
|
5696
5207
|
const Icon3 = LucideIcons[button.icon];
|
|
5697
|
-
return /* @__PURE__ */
|
|
5698
|
-
/* @__PURE__ */
|
|
5208
|
+
return /* @__PURE__ */ jsxs49(React37.Fragment, { children: [
|
|
5209
|
+
/* @__PURE__ */ jsxs49(
|
|
5699
5210
|
"button",
|
|
5700
5211
|
{
|
|
5701
5212
|
onClick: button.action,
|
|
5702
5213
|
disabled: button.isLoading,
|
|
5703
5214
|
className: `flex items-center px-4 py-2 transition-colors ${colorStyles[button.color]} ${button.isLoading ? "opacity-70 cursor-not-allowed" : ""}`,
|
|
5704
5215
|
children: [
|
|
5705
|
-
button.isLoading ? /* @__PURE__ */
|
|
5706
|
-
/* @__PURE__ */
|
|
5216
|
+
button.isLoading ? /* @__PURE__ */ jsx71(Loader24, { className: "w-5 h-5 mr-2 animate-spin" }) : /* @__PURE__ */ jsx71(Icon3, { className: "w-5 h-5 mr-2" }),
|
|
5217
|
+
/* @__PURE__ */ jsx71("span", { className: "font-medium", children: button.label })
|
|
5707
5218
|
]
|
|
5708
5219
|
}
|
|
5709
5220
|
),
|
|
5710
|
-
index < buttons.length - 1 && /* @__PURE__ */
|
|
5221
|
+
index < buttons.length - 1 && /* @__PURE__ */ jsx71(Separator3, { orientation: "vertical", className: "h-full" })
|
|
5711
5222
|
] }, button.label);
|
|
5712
5223
|
}) }),
|
|
5713
|
-
title && /* @__PURE__ */
|
|
5224
|
+
title && /* @__PURE__ */ jsx71("span", { className: "text-lg", children: title })
|
|
5714
5225
|
] });
|
|
5715
5226
|
}
|
|
5716
5227
|
|
|
5717
5228
|
// components/schema-fields/dropdown-field.tsx
|
|
5718
|
-
import { jsx as
|
|
5229
|
+
import { jsx as jsx72, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
5719
5230
|
function ColorDot({ color }) {
|
|
5720
5231
|
if (!color) return null;
|
|
5721
|
-
return /* @__PURE__ */
|
|
5232
|
+
return /* @__PURE__ */ jsx72(
|
|
5722
5233
|
"div",
|
|
5723
5234
|
{
|
|
5724
5235
|
className: "w-3 h-3 rounded-full mr-2 inline-block",
|
|
@@ -5735,25 +5246,25 @@ function DropdownField({ schema, value, onChange }) {
|
|
|
5735
5246
|
const renderSelectedValue = () => {
|
|
5736
5247
|
const selectedOption = options?.find((opt) => opt.value === value);
|
|
5737
5248
|
if (!selectedOption) return null;
|
|
5738
|
-
return /* @__PURE__ */
|
|
5739
|
-
/* @__PURE__ */
|
|
5249
|
+
return /* @__PURE__ */ jsxs50("div", { className: "flex items-center", children: [
|
|
5250
|
+
/* @__PURE__ */ jsx72(ColorDot, { color: selectedOption.color }),
|
|
5740
5251
|
selectedOption.label
|
|
5741
5252
|
] });
|
|
5742
5253
|
};
|
|
5743
|
-
return /* @__PURE__ */
|
|
5254
|
+
return /* @__PURE__ */ jsxs50(
|
|
5744
5255
|
Select,
|
|
5745
5256
|
{
|
|
5746
5257
|
value: value ?? "",
|
|
5747
5258
|
onValueChange: onChange,
|
|
5748
5259
|
children: [
|
|
5749
|
-
/* @__PURE__ */
|
|
5750
|
-
/* @__PURE__ */
|
|
5260
|
+
/* @__PURE__ */ jsx72(SelectTrigger, { children: /* @__PURE__ */ jsx72(SelectValue, { children: renderSelectedValue() }) }),
|
|
5261
|
+
/* @__PURE__ */ jsx72(SelectContent, { children: options?.map((option) => /* @__PURE__ */ jsxs50(
|
|
5751
5262
|
SelectItem,
|
|
5752
5263
|
{
|
|
5753
5264
|
value: option.value,
|
|
5754
5265
|
className: "flex items-center",
|
|
5755
5266
|
children: [
|
|
5756
|
-
/* @__PURE__ */
|
|
5267
|
+
/* @__PURE__ */ jsx72(ColorDot, { color: option.color }),
|
|
5757
5268
|
option.label
|
|
5758
5269
|
]
|
|
5759
5270
|
},
|
|
@@ -5765,7 +5276,7 @@ function DropdownField({ schema, value, onChange }) {
|
|
|
5765
5276
|
}
|
|
5766
5277
|
|
|
5767
5278
|
// components/schema-fields/string-field.tsx
|
|
5768
|
-
import { jsx as
|
|
5279
|
+
import { jsx as jsx73 } from "react/jsx-runtime";
|
|
5769
5280
|
function StringField({
|
|
5770
5281
|
name,
|
|
5771
5282
|
schema,
|
|
@@ -5797,7 +5308,7 @@ function StringField({
|
|
|
5797
5308
|
return "text";
|
|
5798
5309
|
}
|
|
5799
5310
|
};
|
|
5800
|
-
return /* @__PURE__ */
|
|
5311
|
+
return /* @__PURE__ */ jsx73(
|
|
5801
5312
|
Input,
|
|
5802
5313
|
{
|
|
5803
5314
|
value: value || "",
|
|
@@ -5816,14 +5327,14 @@ function StringField({
|
|
|
5816
5327
|
}
|
|
5817
5328
|
|
|
5818
5329
|
// components/schema-fields/string-multi-line-field.tsx
|
|
5819
|
-
import { jsx as
|
|
5330
|
+
import { jsx as jsx74 } from "react/jsx-runtime";
|
|
5820
5331
|
function StringMultiLineField({
|
|
5821
5332
|
name,
|
|
5822
5333
|
schema,
|
|
5823
5334
|
value,
|
|
5824
5335
|
onChange
|
|
5825
5336
|
}) {
|
|
5826
|
-
return /* @__PURE__ */
|
|
5337
|
+
return /* @__PURE__ */ jsx74(
|
|
5827
5338
|
Textarea,
|
|
5828
5339
|
{
|
|
5829
5340
|
value: value || "",
|
|
@@ -5837,10 +5348,10 @@ function StringMultiLineField({
|
|
|
5837
5348
|
|
|
5838
5349
|
// components/schema-fields/text-field.tsx
|
|
5839
5350
|
import { RiCheckLine } from "@remixicon/react";
|
|
5840
|
-
import { useState as
|
|
5841
|
-
import { jsx as
|
|
5351
|
+
import { useState as useState10 } from "react";
|
|
5352
|
+
import { jsx as jsx75, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
5842
5353
|
function TextField({ schema, value, onChange }) {
|
|
5843
|
-
return /* @__PURE__ */
|
|
5354
|
+
return /* @__PURE__ */ jsx75(TooltipProvider, { children: /* @__PURE__ */ jsx75("div", { className: "rounded-lg border bg-background flex flex-col", children: /* @__PURE__ */ jsx75(
|
|
5844
5355
|
Input,
|
|
5845
5356
|
{
|
|
5846
5357
|
value,
|
|
@@ -5851,7 +5362,7 @@ function TextField({ schema, value, onChange }) {
|
|
|
5851
5362
|
}
|
|
5852
5363
|
|
|
5853
5364
|
// components/schema-fields/schema-field.tsx
|
|
5854
|
-
import { jsx as
|
|
5365
|
+
import { jsx as jsx76, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
5855
5366
|
function getFieldType(schema) {
|
|
5856
5367
|
if (schema.enum) return "dropdown";
|
|
5857
5368
|
if (schema.format === "richtext") return "text";
|
|
@@ -5873,38 +5384,63 @@ function SchemaField(props) {
|
|
|
5873
5384
|
case "email":
|
|
5874
5385
|
case "phone":
|
|
5875
5386
|
case "url":
|
|
5876
|
-
return /* @__PURE__ */
|
|
5387
|
+
return /* @__PURE__ */ jsx76(StringField, { ...props });
|
|
5877
5388
|
case "stringMultiline":
|
|
5878
|
-
return /* @__PURE__ */
|
|
5389
|
+
return /* @__PURE__ */ jsx76(StringMultiLineField, { ...props });
|
|
5879
5390
|
case "text":
|
|
5880
|
-
return /* @__PURE__ */
|
|
5391
|
+
return /* @__PURE__ */ jsx76(TextField, { ...props });
|
|
5881
5392
|
case "dropdown":
|
|
5882
|
-
return /* @__PURE__ */
|
|
5393
|
+
return /* @__PURE__ */ jsx76(DropdownField, { ...props });
|
|
5883
5394
|
default:
|
|
5884
|
-
return /* @__PURE__ */
|
|
5395
|
+
return /* @__PURE__ */ jsxs52("div", { className: "text-red-500", children: [
|
|
5885
5396
|
"Unsupported field type: ",
|
|
5886
5397
|
fieldType
|
|
5887
5398
|
] });
|
|
5888
5399
|
}
|
|
5889
5400
|
};
|
|
5890
|
-
return /* @__PURE__ */
|
|
5891
|
-
/* @__PURE__ */
|
|
5401
|
+
return /* @__PURE__ */ jsxs52("div", { className: cn("space-y-2", getColspanBySchema(schema)), children: [
|
|
5402
|
+
/* @__PURE__ */ jsxs52(Label, { children: [
|
|
5892
5403
|
label ?? schema.title ?? name,
|
|
5893
|
-
schema.required && /* @__PURE__ */
|
|
5404
|
+
schema.required && /* @__PURE__ */ jsx76("span", { className: "text-red-500", children: "*" })
|
|
5894
5405
|
] }),
|
|
5895
5406
|
renderField(),
|
|
5896
|
-
schema.description && /* @__PURE__ */
|
|
5407
|
+
schema.description && /* @__PURE__ */ jsx76("p", { className: "text-sm text-gray-500", children: schema.description })
|
|
5897
5408
|
] });
|
|
5898
5409
|
}
|
|
5899
5410
|
|
|
5411
|
+
// ../docs/dist/index.mjs
|
|
5412
|
+
import { File as File2, FileSpreadsheet as FileSpreadsheet2, FileText as FileText2 } from "lucide-react";
|
|
5413
|
+
import { jsx as jsx77 } from "react/jsx-runtime";
|
|
5414
|
+
var getFileIcon2 = (fileName) => {
|
|
5415
|
+
const extensionMatch = fileName.match(/\.([^.]+)$/);
|
|
5416
|
+
const extension = extensionMatch ? extensionMatch[1].toLowerCase() : null;
|
|
5417
|
+
if (!extension) return /* @__PURE__ */ jsx77(File2, { className: "w-8 h-8 text-gray-500" });
|
|
5418
|
+
switch (extension) {
|
|
5419
|
+
case "pdf":
|
|
5420
|
+
return /* @__PURE__ */ jsx77(File2, { className: "w-8 h-8 text-red-500" });
|
|
5421
|
+
case "doc":
|
|
5422
|
+
case "docx":
|
|
5423
|
+
return /* @__PURE__ */ jsx77(FileText2, { className: "w-8 h-8 text-blue-500" });
|
|
5424
|
+
case "xls":
|
|
5425
|
+
case "xlsx":
|
|
5426
|
+
return /* @__PURE__ */ jsx77(FileSpreadsheet2, { className: "w-8 h-8 text-green-500" });
|
|
5427
|
+
default:
|
|
5428
|
+
return /* @__PURE__ */ jsx77(File2, { className: "w-8 h-8 text-gray-500" });
|
|
5429
|
+
}
|
|
5430
|
+
};
|
|
5431
|
+
var getFileName2 = (url) => {
|
|
5432
|
+
const fileName = decodeURIComponent(url.split("/").pop() ?? "");
|
|
5433
|
+
const cleanFileName = fileName.replace(/%28(\d+)%29/g, "($1)").replace(/[^\w\s().-]/g, "").replace(/\s+/g, "_").replace(/-\d+(?=\.pdf)/g, "");
|
|
5434
|
+
return cleanFileName;
|
|
5435
|
+
};
|
|
5436
|
+
|
|
5900
5437
|
// components/upload/upload-widget-v2.tsx
|
|
5901
|
-
import {
|
|
5902
|
-
import {
|
|
5903
|
-
import { useState as useState14 } from "react";
|
|
5438
|
+
import { Loader2 as Loader25, UploadCloud } from "lucide-react";
|
|
5439
|
+
import { useState as useState11 } from "react";
|
|
5904
5440
|
import { useDropzone as useDropzone2 } from "react-dropzone";
|
|
5905
5441
|
import { toast as toast2 } from "sonner";
|
|
5906
5442
|
import { uploadFile, uploadToS3 } from "./upload/upload-actions";
|
|
5907
|
-
import { jsx as
|
|
5443
|
+
import { jsx as jsx78, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
5908
5444
|
function UploadWidgetV2({
|
|
5909
5445
|
accept,
|
|
5910
5446
|
maxSize,
|
|
@@ -5914,8 +5450,8 @@ function UploadWidgetV2({
|
|
|
5914
5450
|
uploadDestination = "azure",
|
|
5915
5451
|
hideUploadedFiles = false
|
|
5916
5452
|
}) {
|
|
5917
|
-
const [isUploading, setIsUploading] =
|
|
5918
|
-
const [fileUrls, setFileUrls] =
|
|
5453
|
+
const [isUploading, setIsUploading] = useState11(false);
|
|
5454
|
+
const [fileUrls, setFileUrls] = useState11([]);
|
|
5919
5455
|
const fileMaxSizeMB = maxSize / 1024 / 1024;
|
|
5920
5456
|
const acceptedTypes = accept ? Object.values(accept).flat().join(", ") : "";
|
|
5921
5457
|
const handleUpload = async (files) => {
|
|
@@ -5962,7 +5498,7 @@ function UploadWidgetV2({
|
|
|
5962
5498
|
maxSize,
|
|
5963
5499
|
maxFiles
|
|
5964
5500
|
});
|
|
5965
|
-
return /* @__PURE__ */
|
|
5501
|
+
return /* @__PURE__ */ jsxs53(
|
|
5966
5502
|
"div",
|
|
5967
5503
|
{
|
|
5968
5504
|
...getRootProps(),
|
|
@@ -5971,12 +5507,12 @@ function UploadWidgetV2({
|
|
|
5971
5507
|
className
|
|
5972
5508
|
),
|
|
5973
5509
|
children: [
|
|
5974
|
-
isUploading && /* @__PURE__ */
|
|
5975
|
-
/* @__PURE__ */
|
|
5976
|
-
isDragActive ? /* @__PURE__ */
|
|
5977
|
-
/* @__PURE__ */
|
|
5978
|
-
/* @__PURE__ */
|
|
5979
|
-
/* @__PURE__ */
|
|
5510
|
+
isUploading && /* @__PURE__ */ jsx78("div", { className: "absolute top-3 right-3", children: /* @__PURE__ */ jsx78(Loader25, { className: "animate-spin h-6 w-6 text-primary" }) }),
|
|
5511
|
+
/* @__PURE__ */ jsx78("input", { ...getInputProps() }),
|
|
5512
|
+
isDragActive ? /* @__PURE__ */ jsx78("p", { children: "Drop the files here ..." }) : /* @__PURE__ */ jsxs53("div", { children: [
|
|
5513
|
+
/* @__PURE__ */ jsx78(UploadCloud, { className: "mx-auto h-12 w-12 text-gray-400" }),
|
|
5514
|
+
/* @__PURE__ */ jsx78("p", { children: "Drag n drop some files here, or click to select files" }),
|
|
5515
|
+
/* @__PURE__ */ jsxs53("p", { className: "text-sm text-gray-500", children: [
|
|
5980
5516
|
"Only ",
|
|
5981
5517
|
acceptedTypes,
|
|
5982
5518
|
" files up to ",
|
|
@@ -5984,11 +5520,11 @@ function UploadWidgetV2({
|
|
|
5984
5520
|
"MB are accepted"
|
|
5985
5521
|
] })
|
|
5986
5522
|
] }),
|
|
5987
|
-
!hideUploadedFiles && fileUrls.length > 0 && /* @__PURE__ */
|
|
5523
|
+
!hideUploadedFiles && fileUrls.length > 0 && /* @__PURE__ */ jsx78("div", { className: "mt-4 border-t border-gray-300 pt-4", children: /* @__PURE__ */ jsx78("ul", { className: "flex flex-wrap gap-2", children: fileUrls.map((url, i) => {
|
|
5988
5524
|
const fileName = getFileName2(url);
|
|
5989
|
-
return /* @__PURE__ */
|
|
5990
|
-
/* @__PURE__ */
|
|
5991
|
-
/* @__PURE__ */
|
|
5525
|
+
return /* @__PURE__ */ jsxs53("li", { className: "flex items-center space-x-2 text-sm", children: [
|
|
5526
|
+
/* @__PURE__ */ jsx78("div", { children: getFileIcon2(fileName) }),
|
|
5527
|
+
/* @__PURE__ */ jsx78("span", { children: fileName })
|
|
5992
5528
|
] }, i);
|
|
5993
5529
|
}) }) })
|
|
5994
5530
|
]
|
|
@@ -6018,7 +5554,6 @@ export {
|
|
|
6018
5554
|
DurationInput,
|
|
6019
5555
|
EloquentActionBar,
|
|
6020
5556
|
FilterCombobox,
|
|
6021
|
-
FilterDialog,
|
|
6022
5557
|
Form,
|
|
6023
5558
|
FormCombobox,
|
|
6024
5559
|
FormControl,
|
|
@@ -6030,15 +5565,12 @@ export {
|
|
|
6030
5565
|
FormMessage,
|
|
6031
5566
|
FormRow,
|
|
6032
5567
|
FormWithActionButtons,
|
|
6033
|
-
|
|
5568
|
+
Icon,
|
|
6034
5569
|
IconButton,
|
|
6035
5570
|
Input2 as Input,
|
|
6036
|
-
KnowledgeGraphWordCloud,
|
|
6037
|
-
LeftNav,
|
|
6038
5571
|
MarkdownRenderer,
|
|
6039
5572
|
MultiSelect,
|
|
6040
5573
|
MultiStepProcess,
|
|
6041
|
-
OrgSelector,
|
|
6042
5574
|
PageHeader,
|
|
6043
5575
|
Popover2 as Popover,
|
|
6044
5576
|
ProfileMenu,
|